Error on submitting new topic

  Post new topicReply to topicPrintable Version
<< View previous topic View next topic >>
Share: Del.icio.us  Digg  Google  Spurl  Blink  Furl  Y! MyWeb  
#1   Error on submitting new topic
kidbravo
CZ Super Newbie
 Codezwiz Site Donator
kidbravo has been a member for over 20 year's 20 Year Member
usa.gif california.gif
Age: 47
Gender: Male
Status: Offline
Joined: Aug 29, 2004
0.01 posts per day
Posts: 62
Points: 3,988
   
I get this error after trying to post a new topic. or reply.

Warning: Missing argument 8 for user_notification() in /home/virtual/site57/fst/var/www/html/includes/functions_post.php on line 584


i see this error for only a couple of seconds then i get redirected to view my post. so i dont think it is harmful but it is very annoying. can any body help me? thanks.


Back to top Reply with quote
#2   re: Error on submitting new topic
Telli
Site Admin
Occupation: Self Employed
Age: 46
Gender: Male
Fav. Sports Team: Detroit Red Wings
Website:
Status: Offline
Joined: May 26, 2003
1.03 posts per day
Posts: 8089
Points: 494,475
   
Have you added any mods to the forums? You may have missed part of the instructions. Can you look in your modules/Forums/posting.php for the the use of the funstion and paste it here.




_________________
The path of the righteous man is beset on all sides by the inequities of the selfish and the tyranny of evil men. Blessed is he, who in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee. Ezekiel 25:17
Back to top Reply with quote
#3   re: Error on submitting new topic
kidbravo
CZ Super Newbie
 Codezwiz Site Donator
kidbravo has been a member for over 20 year's 20 Year Member
usa.gif california.gif
Age: 47
Gender: Male
Status: Offline
Joined: Aug 29, 2004
0.01 posts per day
Posts: 62
Points: 3,988
   
ok here is the code. on line 584 is the the error


submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
}
LINE 584 is this... break;

case 'delete':
case 'poll_delete':
if ($error_msg != '')
{



Back to top Reply with quote
#4   re: Error on submitting new topic
kidbravo
CZ Super Newbie
 Codezwiz Site Donator
kidbravo has been a member for over 20 year's 20 Year Member
usa.gif california.gif
Age: 47
Gender: Male
Status: Offline
Joined: Aug 29, 2004
0.01 posts per day
Posts: 62
Points: 3,988
   
Here is the whole code for my posting.php:

<?php
/***************************************************************************
*                                posting.php
*                            -------------------
*   begin                : Saturday, Feb 13, 2001
*   copyright            : (C) 2001 The phpBB Group
*   email                : [ Register or login to view links on this board. ]
*
*   $Id: posting.php,v 1.159.2.30 2006/12/16 13:11:24 acydburn Exp $
*
*
***************************************************************************/

/***************************************************************************
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
***************************************************************************/
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
    die ("You can't access this file directly...");
}
if (!isset($popup) OR ($popup != "1")) {
    $module_name = basename(dirname(__FILE__));
    require("modules/".$module_name."/nukebb.php");
    }
    else
    {
    $phpbb_root_path = 'modules/Forums/';
}

define('IN_PHPBB', true);
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include_once("includes/bbcode.php");
include("includes/functions_post.php");

//
// Check and set various parameters
//
$params = array('submit' => 'post', 'preview' => 'preview', 'delete' => 'delete', 'poll_delete' => 'poll_delete', 'poll_add' => 'add_poll_option', 'poll_edit' => 'edit_poll_option', 'mode' => 'mode');
while( list($var, $param) = @each($params) )
{
        if ( !empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]) )
        {
      $$var = ( !empty($HTTP_POST_VARS[$param]) ) ? htmlspecialchars($HTTP_POST_VARS[$param]) : htmlspecialchars($HTTP_GET_VARS[$param]);
        }
        else
        {
                $$var = '';
        }
}
$confirm = isset($HTTP_POST_VARS['confirm']) ? true : false;
$sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
$params = array('forum_id' => POST_FORUM_URL, 'topic_id' => POST_TOPIC_URL, 'post_id' => POST_POST_URL);
while( list($var, $param) = @each($params) )
{
        if ( !empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]) )
        {
                $$var = ( !empty($HTTP_POST_VARS[$param]) ) ? intval($HTTP_POST_VARS[$param]) : intval($HTTP_GET_VARS[$param]);
        }
        else
        {
                $$var = '';
        }
}

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
$orig_word = $replacement_word = array();

//
// Set topic type
//
$topic_type = ( !empty($HTTP_POST_VARS['topictype']) ) ? intval($HTTP_POST_VARS['topictype']) : POST_NORMAL;
$topic_type = ( in_array($topic_type, array(POST_NORMAL, POST_STICKY, POST_ANNOUNCE)) ) ? $topic_type : POST_NORMAL;

//
// If the mode is set to topic review then output
// that review ...
//
if ( $mode == 'topicreview' )
{
        require("includes/topic_review.php");

        topic_review($topic_id, false);
        exit;
}
else if ( $mode == 'smilies' )
{
        generate_smilies('window', PAGE_POSTING);
        exit;
}

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_POSTING, $nukeuser);
init_userprefs($userdata);
//
// End session management
//

//
// Was cancel pressed? If so then redirect to the appropriate
// page, no point in continuing with any further checks
//
if ( isset($HTTP_POST_VARS['cancel']) )
{
        if ( $post_id )
        {
                $redirect = "viewtopic.$phpEx?" . POST_POST_URL . "=$post_id";
                $post_append = "#$post_id";
        }
        else if ( $topic_id )
        {
                $redirect = "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id";
                $post_append = '';
        }
        else if ( $forum_id )
        {
                $redirect = "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id";
                $post_append = '';
        }
        else
        {
                $redirect = "index.$phpEx";
                $post_append = '';
        }

        $header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', $_SERVER['SERVER_SOFTWARE']) ) ? 'Refresh: 0; URL=' : 'Location: ';
        header($header_location . append_sid($redirect, true) . $post_append);
        exit;
}

//
// What auth type do we need to check?
//
$is_auth = array();
switch( $mode )
{
        case 'newtopic':
                if ( $topic_type == POST_ANNOUNCE )
                {
                        $is_auth_type = 'auth_announce';
                }
                else if ( $topic_type == POST_STICKY )
                {
                        $is_auth_type = 'auth_sticky';
                }
                else
                {
                        $is_auth_type = 'auth_post';
                }
                break;
        case 'reply':
        case 'quote':
                $is_auth_type = 'auth_reply';
                break;
        case 'editpost':
                $is_auth_type = 'auth_edit';
                break;
        case 'delete':
        case 'poll_delete':
                $is_auth_type = 'auth_delete';
                break;
        case 'vote':
                $is_auth_type = 'auth_vote';
                break;
        case 'topicreview':
                $is_auth_type = 'auth_read';
                break;
        default:
                message_die(GENERAL_MESSAGE, $lang['No_post_mode']);
                break;
}

//
// Here we do various lookups to find topic_id, forum_id, post_id etc.
// Doing it here prevents spoofing (eg. faking forum_id, topic_id or post_id
//
$error_msg = '';
$post_data = array();
switch ( $mode )
{
        case 'newtopic':
                if ( empty($forum_id) )
                {
                        message_die(GENERAL_MESSAGE, $lang['Forum_not_exist']);
                }

                $sql = "SELECT *
                        FROM " . FORUMS_TABLE . "
                        WHERE forum_id = '$forum_id'";
                break;

        case 'reply':
        case 'vote':
                if ( empty( $topic_id) )
                {
                        message_die(GENERAL_MESSAGE, $lang['No_topic_id']);
                }

      $sql = "SELECT f.*, t.topic_status, t.topic_title, t.topic_type
                        FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t
                        WHERE t.topic_id = '$topic_id'
                                AND f.forum_id = t.forum_id";
                break;

        case 'quote':
        case 'editpost':
        case 'delete':
        case 'poll_delete':
                if ( empty($post_id) )
                {
                        message_die(GENERAL_MESSAGE, $lang['No_post_id']);
                }

      $select_sql = (!$submit) ? ', t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid' : '';
                $from_sql = ( !$submit ) ? ", " . POSTS_TEXT_TABLE . " pt, " . USERS_TABLE . " u" : '';
                $where_sql = ( !$submit ) ? "AND pt.post_id = p.post_id AND u.user_id = p.poster_id" : '';

                $sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "
                        FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f" . $from_sql . "
                        WHERE p.post_id = '$post_id'
                                AND t.topic_id = p.topic_id
                                AND f.forum_id = p.forum_id
                                $where_sql";
                break;

        default:
                message_die(GENERAL_MESSAGE, $lang['No_valid_mode']);
}

if ( ($result = $db->sql_query($sql)) && ($post_info = $db->sql_fetchrow($result)) )
{
   $db->sql_freeresult($result);

        $forum_id = $post_info['forum_id'];
        $forum_name = $post_info['forum_name'];

        $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $post_info);

        if ( $post_info['forum_status'] == FORUM_LOCKED && !$is_auth['auth_mod'])
        {
           message_die(GENERAL_MESSAGE, $lang['Forum_locked']);
        }
        else if ( $mode != 'newtopic' && $post_info['topic_status'] == TOPIC_LOCKED && !$is_auth['auth_mod'])
        {
           message_die(GENERAL_MESSAGE, $lang['Topic_locked']);
        }

        if ( $mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete' )
        {
                $topic_id = $post_info['topic_id'];

                $post_data['poster_post'] = ( $post_info['poster_id'] == $userdata['user_id'] ) ? true : false;
                $post_data['first_post'] = ( $post_info['topic_first_post_id'] == $post_id ) ? true : false;
                $post_data['last_post'] = ( $post_info['topic_last_post_id'] == $post_id ) ? true : false;
                $post_data['last_topic'] = ( $post_info['forum_last_post_id'] == $post_id ) ? true : false;
                $post_data['has_poll'] = ( $post_info['topic_vote'] ) ? true : false;
                $post_data['topic_type'] = $post_info['topic_type'];
                $post_data['poster_id'] = $post_info['poster_id'];

                if ( $post_data['first_post'] && $post_data['has_poll'] )
                {
                        $sql = "SELECT *
                                FROM " . VOTE_DESC_TABLE . " vd, " . VOTE_RESULTS_TABLE . " vr
                                WHERE vd.topic_id = '$topic_id'
                                        AND vr.vote_id = vd.vote_id
                                ORDER BY vr.vote_option_id";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, 'Could not obtain vote data for this topic', '', __LINE__, __FILE__, $sql);
                        }

                        $poll_options = array();
                        $poll_results_sum = 0;
                        if ( $row = $db->sql_fetchrow($result) )
                        {
                                $poll_title = $row['vote_text'];
                                $poll_id = $row['vote_id'];
                                $poll_length = $row['vote_length'] / 86400;

                                do
                                {
                                        $poll_options[$row['vote_option_id']] = $row['vote_option_text'];
                                        $poll_results_sum += $row['vote_result'];
                                }
                                while ( $row = $db->sql_fetchrow($result) );
                        }
         $db->sql_freeresult($result);

                        $post_data['edit_poll'] = ( ( !$poll_results_sum || $is_auth['auth_mod'] ) && $post_data['first_post'] ) ? true : 0;
                }
                else
                {
                        $post_data['edit_poll'] = ($post_data['first_post'] && $is_auth['auth_pollcreate']) ? true : false;
                }

                //
                // Can this user edit/delete the post/poll?
                //
                if ( $post_info['poster_id'] != $userdata['user_id'] && !$is_auth['auth_mod'] )
                {
                        $message = ( $delete || $mode == 'delete' ) ? $lang['Delete_own_posts'] : $lang['Edit_own_posts'];
                        $message .= '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');

                        message_die(GENERAL_MESSAGE, $message);
                }
                else if ( !$post_data['last_post'] && !$is_auth['auth_mod'] && ( $mode == 'delete' || $delete ) )
                {
                        message_die(GENERAL_MESSAGE, $lang['Cannot_delete_replied']);
                }
                else if ( !$post_data['edit_poll'] && !$is_auth['auth_mod'] && ( $mode == 'poll_delete' || $poll_delete ) )
                {
                        message_die(GENERAL_MESSAGE, $lang['Cannot_delete_poll']);
                }
        }
        else
        {
                if ( $mode == 'quote' )
                {
                        $topic_id = $post_info['topic_id'];
                }
      if ( $mode == 'newtopic' )
      {
         $post_data['topic_type'] = POST_NORMAL;
      }

                $post_data['first_post'] = ( $mode == 'newtopic' ) ? true : 0;
                $post_data['last_post'] = false;
                $post_data['has_poll'] = false;
                $post_data['edit_poll'] = false;
        }
   if ( $mode == 'poll_delete' && !isset($poll_id) )
   {
      message_die(GENERAL_MESSAGE, $lang['No_such_post']);
   }
}
else
{
        message_die(GENERAL_MESSAGE, $lang['No_such_post']);
}

//
// The user is not authed, if they're not logged in then redirect
// them, else show them an error message
//
if ( !$is_auth[$is_auth_type] )
{
        if ( $userdata['session_logged_in'] )
        {
                message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_' . $is_auth_type], $is_auth[$is_auth_type . "_type"]));
        }

        switch( $mode )
        {
                case 'newtopic':
                        $redirect = "mode=newtopic&" . POST_FORUM_URL . "=" . $forum_id;
                        break;
                case 'reply':
                case 'topicreview':
                        $redirect = "mode=reply&" . POST_TOPIC_URL . "=" . $topic_id;
                        break;
                case 'quote':
                case 'editpost':
                        $redirect = "mode=quote&" . POST_POST_URL ."=" . $post_id;
                        break;
        }

        $header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', $_SERVER['SERVER_SOFTWARE']) ) ? 'Refresh: 0; URL=' : 'Location: ';
        header($header_location . append_sid("login.$phpEx?redirect=posting.$phpEx&" . $redirect, true));
        exit;
}

//
// Set toggles for various options
//
if ( !$board_config['allow_html'] )
{
        $html_on = 0;
}
else
{
        $html_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['disable_html']) ) ? 0 : TRUE ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? $board_config['allow_html'] : $userdata['user_allowhtml'] );
}

if ( !$board_config['allow_bbcode'] )
{
        $bbcode_on = 0;
}
else
{
        $bbcode_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['disable_bbcode']) ) ? 0 : TRUE ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? $board_config['allow_bbcode'] : $userdata['user_allowbbcode'] );
}

if ( !$board_config['allow_smilies'] )
{
        $smilies_on = 0;
}
else
{
        $smilies_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['disable_smilies']) ) ? 0 : TRUE ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? $board_config['allow_smilies'] : $userdata['user_allowsmile'] );
}

if ( ($submit || $refresh) && $is_auth['auth_read'])
{
        $notify_user = ( !empty($HTTP_POST_VARS['notify']) ) ? TRUE : 0;
}
else
{
        if ( $mode != 'newtopic' && $userdata['session_logged_in'] && $is_auth['auth_read'] )
        {
                $sql = "SELECT topic_id
                        FROM " . TOPICS_WATCH_TABLE . "
                        WHERE topic_id = '$topic_id'
                                AND user_id = " . $userdata['user_id'];
                if ( !($result = $db->sql_query($sql)) )
                {
                        message_die(GENERAL_ERROR, 'Could not obtain topic watch information', '', __LINE__, __FILE__, $sql);
                }

                $notify_user = ( $db->sql_fetchrow($result) ) ? TRUE : $userdata['user_notify'];
      $db->sql_freeresult($result);
        }
        else
        {
                $notify_user = ( $userdata['session_logged_in'] && $is_auth['auth_read'] ) ? $userdata['user_notify'] : 0;
        }
}

$attach_sig = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['attach_sig']) ) ? TRUE : 0 ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? 0 : $userdata['user_attachsig'] );

// --------------------
//  What shall we do?
//
if ( ( $delete || $poll_delete || $mode == 'delete' ) && !$confirm )
{
        //
        // Confirm deletion
        //
        $s_hidden_fields = '<input type="hidden" name="' . POST_POST_URL . '" value="' . $post_id . '" />';
        $s_hidden_fields .= ( $delete || $mode == "delete" ) ? '<input type="hidden" name="mode" value="delete" />' : '<input type="hidden" name="mode" value="poll_delete" />';
   $s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';

        $l_confirm = ( $delete || $mode == 'delete' ) ? $lang['Confirm_delete'] : $lang['Confirm_delete_poll'];

        //
        // Output confirmation page
        //
        include("includes/page_header.php");

        $template->set_filenames(array(
                'confirm_body' => 'confirm_body.tpl')
        );

        $template->assign_vars(array(
                'MESSAGE_TITLE' => $lang['Information'],
                'MESSAGE_TEXT' => $l_confirm,

                'L_YES' => $lang['Yes'],
                'L_NO' => $lang['No'],

                'S_CONFIRM_ACTION' => append_sid("posting.$phpEx"),
                'S_HIDDEN_FIELDS' => $s_hidden_fields)
        );

        $template->pparse('confirm_body');

        include("includes/page_tail.php");
}
else if ( $mode == 'vote' )
{
        //
        // Vote in a poll
        //
        if ( !empty($HTTP_POST_VARS['vote_id']) )
        {
                $vote_option_id = intval($HTTP_POST_VARS['vote_id']);

                $sql = "SELECT vd.vote_id
                        FROM " . VOTE_DESC_TABLE . " vd, " . VOTE_RESULTS_TABLE . " vr
                        WHERE vd.topic_id = '$topic_id'
                                AND vr.vote_id = vd.vote_id
                                AND vr.vote_option_id = '$vote_option_id'
                        GROUP BY vd.vote_id";
                if ( !($result = $db->sql_query($sql)) )
                {
                        message_die(GENERAL_ERROR, 'Could not obtain vote data for this topic', '', __LINE__, __FILE__, $sql);
                }

                if ( $vote_info = $db->sql_fetchrow($result) )
                {
                        $vote_id = $vote_info['vote_id'];

                        $sql = "SELECT *
                                FROM " . VOTE_USERS_TABLE . "
                                WHERE vote_id = '$vote_id'
                                        AND vote_user_id = " . $userdata['user_id'];
         if ( !($result2 = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, 'Could not obtain user vote data for this topic', '', __LINE__, __FILE__, $sql);
                        }

         if ( !($row = $db->sql_fetchrow($result2)) )
                        {
                                $sql = "UPDATE " . VOTE_RESULTS_TABLE . "
                                        SET vote_result = vote_result + 1
                                        WHERE vote_id = '$vote_id'
                                                AND vote_option_id = '$vote_option_id'";
                                if ( !$db->sql_query($sql, BEGIN_TRANSACTION) )
                                {
                                        message_die(GENERAL_ERROR, 'Could not update poll result', '', __LINE__, __FILE__, $sql);
                                }

                                $sql = "INSERT INTO " . VOTE_USERS_TABLE . " (vote_id, vote_user_id, vote_user_ip)
                                        VALUES ('$vote_id', " . $userdata['user_id'] . ", '$user_ip')";
                                if ( !$db->sql_query($sql, END_TRANSACTION) )
                                {
                                        message_die(GENERAL_ERROR, "Could not insert user_id for poll", "", __LINE__, __FILE__, $sql);
                                }

                                $message = $lang['Vote_cast'];
                        }
                        else
                        {
                                $message = $lang['Already_voted'];
                        }
         $db->sql_freeresult($result2);
                }
                else
                {
                        $message = $lang['No_vote_option'];
                }
      $db->sql_freeresult($result);

                $template->assign_vars(array(
                        'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">')
                );
                $message .=  '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
                message_die(GENERAL_MESSAGE, $message);
        }
        else
        {
                redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id", true));
        }
}
else if ( $submit || $confirm )
{
        //
        // Submit post/vote (newtopic, edit, reply, etc.)
        //
        $return_message = '';
        $return_meta = '';
   // session id check
   if ($sid == '' || $sid != $userdata['session_id'])
   {
      $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Session_invalid'] : $lang['Session_invalid'];
   }

        switch ( $mode )
        {
                case 'editpost':
                case 'newtopic':
                case 'reply':
                        $username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
                        $subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
                        $message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
                        $poll_title = ( isset($HTTP_POST_VARS['poll_title']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_title'] : '';
                        $poll_options = ( isset($HTTP_POST_VARS['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_option_text'] : '';
                        $poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
                        $bbcode_uid = '';

                        prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);

                        if ( $error_msg == '' )
                        {
                                $topic_type = ( $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce'] ) ? $post_data['topic_type'] : $topic_type;

                                submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
                        }
                        break;

                case 'delete':
                case 'poll_delete':
         if ($error_msg != '')
         {
            message_die(GENERAL_MESSAGE, $error_msg);
         }
                        delete_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id);
                        break;
        }

        if ( $error_msg == '' )
        {
                if ( $mode != 'editpost' )
                {
                        $user_id = ( $mode == 'reply' || $mode == 'newtopic' ) ? $userdata['user_id'] : $post_data['poster_id'];
                        update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id);
                }

                if ($error_msg == '' && $mode != 'poll_delete')
                {
                        user_notification($mode, $post_data, $post_info['topic_title'], $forum_id, $topic_id, $post_id, $notify_user);
                }

                if ( $mode == 'newtopic' || $mode == 'reply' )
                {
                        $tracking_topics = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
                        $tracking_forums = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();

                        if ( count($tracking_topics) + count($tracking_forums) == 100 && empty($tracking_topics[$topic_id]) )
                        {
                                asort($tracking_topics);
                                unset($tracking_topics[key($tracking_topics)]);
                        }

                        $tracking_topics[$topic_id] = time();

                        setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
                }

                $template->assign_vars(array(
                        'META' => $return_meta)
                );
                message_die(GENERAL_MESSAGE, $return_message);
        }
}

if( $refresh || isset($HTTP_POST_VARS['del_poll_option']) || $error_msg != '' )
{
        $username = ( !empty($HTTP_POST_VARS['username']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['username']))) : '';
        $subject = ( !empty($HTTP_POST_VARS['subject']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['subject']))) : '';
        $message = ( !empty($HTTP_POST_VARS['message']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['message']))) : '';

        $poll_title = ( !empty($HTTP_POST_VARS['poll_title']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['poll_title']))) : '';
        $poll_length = ( isset($HTTP_POST_VARS['poll_length']) ) ? max(0, intval($HTTP_POST_VARS['poll_length'])) : 0;

        $poll_options = array();
        if ( !empty($HTTP_POST_VARS['poll_option_text']) )
        {
                while( list($option_id, $option_text) = @each($HTTP_POST_VARS['poll_option_text']) )
                {
                        if( isset($HTTP_POST_VARS['del_poll_option'][$option_id]) )
                        {
                                unset($poll_options[$option_id]);
                        }
                        else if ( !empty($option_text) )
                        {
            $poll_options[intval($option_id)] = htmlspecialchars(trim(stripslashes($option_text)));
                        }
                }
        }

        if ( isset($poll_add) && !empty($HTTP_POST_VARS['add_poll_option_text']) )
        {
                $poll_options[] = htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['add_poll_option_text'])));
        }

        if ( $mode == 'newtopic' || $mode == 'reply')
        {
                $user_sig = ( $userdata['user_sig'] != '' && $board_config['allow_sig'] ) ? $userdata['user_sig'] : '';
        }
        else if ( $mode == 'editpost' )
        {
                $user_sig = ( $post_info['user_sig'] != '' && $board_config['allow_sig'] ) ? $post_info['user_sig'] : '';
      $userdata['user_sig_bbcode_uid'] = $post_info['user_sig_bbcode_uid'];
        }

        if( $preview )
        {
                $orig_word = array();
                $replacement_word = array();
                obtain_word_list($orig_word, $replacement_word);

                $bbcode_uid = ( $bbcode_on ) ? make_bbcode_uid() : '';
                $preview_message = stripslashes(prepare_message(addslashes(unprepare_message($message)), $html_on, $bbcode_on, $smilies_on, $bbcode_uid));
                $preview_subject = $subject;
                $preview_username = $username;

                //
                // Finalise processing as per viewtopic
                //
                if( !$html_on )
                {
                        if( $user_sig != '' || !$userdata['user_allowhtml'] )
                        {
                                $user_sig = preg_replace('#(<)([\/]?.*?)(>)#is', '&lt;\2&gt;', $user_sig);
                        }
                }

                if( $attach_sig && $user_sig != '' && $userdata['user_sig_bbcode_uid'] )
                {
                        $user_sig = bbencode_second_pass($user_sig, $userdata['user_sig_bbcode_uid']);
                }

                if( $bbcode_on )
                {
                        $preview_message = bbencode_second_pass($preview_message, $bbcode_uid);
                }

                if( !empty($orig_word) )
                {
                        $preview_username = ( !empty($username) ) ? preg_replace($orig_word, $replacement_word, $preview_username) : '';
                        $preview_subject = ( !empty($subject) ) ? preg_replace($orig_word, $replacement_word, $preview_subject) : '';
                        $preview_message = ( !empty($preview_message) ) ? preg_replace($orig_word, $replacement_word, $preview_message) : '';
                }

                if( $user_sig != '' )
                {
                        $user_sig = make_clickable($user_sig);
                }
                $preview_message = make_clickable($preview_message);

                if( $smilies_on )
                {
                        if( $userdata['user_allowsmile'] && $user_sig != '' )
                        {
                                $user_sig = smilies_pass($user_sig);
                        }

                        $preview_message = smilies_pass($preview_message);
                }

                if( $attach_sig && $user_sig != '' )
                {
                        $preview_message = $preview_message . '<br /><br />_________________<br />' . $user_sig;
                }

                $preview_message = str_replace("\n", '<br />', $preview_message);

                $template->set_filenames(array(
                        'preview' => 'posting_preview.tpl')
                );

                $template->assign_vars(array(
                        'TOPIC_TITLE' => $preview_subject,
                        'POST_SUBJECT' => $preview_subject,
                        'POSTER_NAME' => $preview_username,
                        'POST_DATE' => create_date($board_config['default_dateformat'], time(), $board_config['board_timezone']),
                        'MESSAGE' => $preview_message,

                        'L_POST_SUBJECT' => $lang['Post_subject'],
                        'L_PREVIEW' => $lang['Preview'],
                        'L_POSTED' => $lang['Posted'],
                        'L_POST' => $lang['Post'])
                );
                $template->assign_var_from_handle('POST_PREVIEW_BOX', 'preview');
        }
        else if( $error_msg != '' )
        {
                $template->set_filenames(array(
                        'reg_header' => 'error_body.tpl')
                );
                $template->assign_vars(array(
                        'ERROR_MESSAGE' => $error_msg)
                );
                $template->assign_var_from_handle('ERROR_BOX', 'reg_header');
        }
}
else
{
        //
        // User default entry point
        //
        if ( $mode == 'newtopic' )
        {
                $user_sig = ( $userdata['user_sig'] != '' ) ? $userdata['user_sig'] : '';

                $username = ($userdata['session_logged_in']) ? $userdata['username'] : '';
                $poll_title = '';
                $poll_length = '';
                $subject = '';
                $message = '';
        }
        else if ( $mode == 'reply' )
        {
                $user_sig = ( $userdata['user_sig'] != '' ) ? $userdata['user_sig'] : '';

                $username = ( $userdata['session_logged_in'] ) ? $userdata['username'] : '';
                $subject = '';
                $message = '';

        }
        else if ( $mode == 'quote' || $mode == 'editpost' )
        {
                $subject = ( $post_data['first_post'] ) ? $post_info['topic_title'] : $post_info['post_subject'];
                $message = $post_info['post_text'];

                if ( $mode == 'editpost' )
                {
                        $attach_sig = ( $post_info['enable_sig'] && $post_info['user_sig'] != '' ) ? TRUE : 0;
                        $user_sig = $post_info['user_sig'];

                        $html_on = ( $post_info['enable_html'] ) ? true : false;
                        $bbcode_on = ( $post_info['enable_bbcode'] ) ? true : false;
                        $smilies_on = ( $post_info['enable_smilies'] ) ? true : false;
                }
                else
                {
                        $attach_sig = ( $userdata['user_attachsig'] ) ? TRUE : 0;
                        $user_sig = $userdata['user_sig'];
                }

                if ( $post_info['bbcode_uid'] != '' )
                {
                        $message = preg_replace('/\:(([a-z0-9]:)?)' . $post_info['bbcode_uid'] . '/s', '', $message);
                }

                $message = str_replace('<', '&lt;', $message);
                $message = str_replace('>', '&gt;', $message);
                $message = str_replace('<br />', "\n", $message);

                if ( $mode == 'quote' )
                {
                        $orig_word = array();
                        $replacement_word = array();
                        obtain_word_list($orig_word, $replace_word);

                        $msg_date =  create_date($board_config['default_dateformat'], $postrow['post_time'], $board_config['board_timezone']);

                        // Use trim to get rid of spaces placed there by MS-SQL 2000
                        $quote_username = ( trim($post_info['post_username']) != '' ) ? $post_info['post_username'] : $post_info['username'];
                        $message = '[quote="' . $quote_username . '"]' . $message . '[/quote]';

                        if ( !empty($orig_word) )
                        {
                                $subject = ( !empty($subject) ) ? preg_replace($orig_word, $replace_word, $subject) : '';
                                $message = ( !empty($message) ) ? preg_replace($orig_word, $replace_word, $message) : '';
                        }

                        if ( !preg_match('/^Re:/', $subject) && strlen($subject) > 0 )
                        {
                                $subject = 'Re: ' . $subject;
                        }

                        $mode = 'reply';
                }
                else
                {
                        $username = ( $post_info['user_id'] == ANONYMOUS && !empty($post_info['post_username']) ) ? $post_info['post_username'] : '';
                }
        }
}

//
// Signature toggle selection
//
if( $user_sig != '' )
{
        $template->assign_block_vars('switch_signature_checkbox', array());
}

//
// HTML toggle selection
//
if ( $board_config['allow_html'] )
{
        $html_status = $lang['HTML_is_ON'];
        $template->assign_block_vars('switch_html_checkbox', array());
}
else
{
        $html_status = $lang['HTML_is_OFF'];
}

//
// BBCode toggle selection
//
if ( $board_config['allow_bbcode'] )
{
        $bbcode_status = $lang['BBCode_is_ON'];
        $template->assign_block_vars('switch_bbcode_checkbox', array());
}
else
{
        $bbcode_status = $lang['BBCode_is_OFF'];
}

//
// Smilies toggle selection
//
if ( $board_config['allow_smilies'] )
{
        $smilies_status = $lang['Smilies_are_ON'];
        $template->assign_block_vars('switch_smilies_checkbox', array());
}
else
{
        $smilies_status = $lang['Smilies_are_OFF'];
}

if( !$userdata['session_logged_in'] || ( $mode == 'editpost' && $post_info['poster_id'] == ANONYMOUS ) )
{
        $template->assign_block_vars('switch_username_select', array());
}

//
// Notify checkbox - only show if user is logged in
//
if ( $userdata['session_logged_in'] && $is_auth['auth_read'] )
{
        if ( $mode != 'editpost' || ( $mode == 'editpost' && $post_info['poster_id'] != ANONYMOUS ) )
        {
                $template->assign_block_vars('switch_notify_checkbox', array());
        }
}

//
// Delete selection
//
if ( $mode == 'editpost' && ( ( $is_auth['auth_delete'] && $post_data['last_post'] && ( !$post_data['has_poll'] || $post_data['edit_poll'] ) ) || $is_auth['auth_mod'] ) )
{
        $template->assign_block_vars('switch_delete_checkbox', array());
}

//
// Topic type selection
//
$topic_type_toggle = '';
if ( $mode == 'newtopic' || ( $mode == 'editpost' && $post_data['first_post'] ) )
{
        $template->assign_block_vars('switch_type_toggle', array());

        if( $is_auth['auth_sticky'] )
        {
                $topic_type_toggle .= '<input type="radio" name="topictype" value="' . POST_STICKY . '"';
                if ( $post_data['topic_type'] == POST_STICKY || $topic_type == POST_STICKY )
                {
                        $topic_type_toggle .= ' checked="checked"';
                }
                $topic_type_toggle .= ' /> ' . $lang['Post_Sticky'] . '&nbsp;&nbsp;';
        }

        if( $is_auth['auth_announce'] )
        {
                $topic_type_toggle .= '<input type="radio" name="topictype" value="' . POST_ANNOUNCE . '"';
                if ( $post_data['topic_type'] == POST_ANNOUNCE || $topic_type == POST_ANNOUNCE )
                {
                        $topic_type_toggle .= ' checked="checked"';
                }
                $topic_type_toggle .= ' /> ' . $lang['Post_Announcement'] . '&nbsp;&nbsp;';
        }

        if ( $topic_type_toggle != '' )
        {
                $topic_type_toggle = $lang['Post_topic_as'] . ': <input type="radio" name="topictype" value="' . POST_NORMAL .'"' . ( ( $post_data['topic_type'] == POST_NORMAL || $topic_type == POST_NORMAL ) ? ' checked="checked"' : '' ) . ' /> ' . $lang['Post_Normal'] . '&nbsp;&nbsp;' . $topic_type_toggle;
        }
}

$hidden_form_fields = '<input type="hidden" name="mode" value="' . $mode . '" />';
$hidden_form_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';

switch( $mode )
{
        case 'newtopic':
                $page_title = $lang['Post_a_new_topic'];
                $hidden_form_fields .= '<input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';
                break;

        case 'reply':
                $page_title = $lang['Post_a_reply'];
                $hidden_form_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />';
                break;

        case 'editpost':
                $page_title = $lang['Edit_Post'];
                $hidden_form_fields .= '<input type="hidden" name="' . POST_POST_URL . '" value="' . $post_id . '" />';
                break;
}

// Generate smilies listing for page output
generate_smilies('inline', PAGE_POSTING);

//
// Include page header
//
include("includes/page_header.php");

$template->set_filenames(array(
        'body' => 'posting_body.tpl',
        'pollbody' => 'posting_poll_body.tpl',
        'reviewbody' => 'posting_topic_review.tpl')
);
make_jumpbox('viewforum.'.$phpEx);

$template->assign_vars(array(
        'FORUM_NAME' => $forum_name,
        'L_POST_A' => $page_title,
        'L_POST_SUBJECT' => $lang['Post_subject'],

        'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"))
);

//
// This enables the forum/topic title to be output for posting
// but not for privmsg (where it makes no sense)
//
$template->assign_block_vars('switch_not_privmsg', array());

//
// Output the data to the template
//
$template->assign_vars(array(
        'USERNAME' => $username,
        'SUBJECT' => $subject,
        'MESSAGE' => $message,
        'HTML_STATUS' => $html_status,
        'BBCODE_STATUS' => sprintf($bbcode_status, '<a href="' . append_sid("faq.$phpEx?mode=bbcode") . '" target="_phpbbcode">', '</a>'),
        'SMILIES_STATUS' => $smilies_status,

        'L_SUBJECT' => $lang['Subject'],
        'L_MESSAGE_BODY' => $lang['Message_body'],
        'L_OPTIONS' => $lang['Options'],
        'L_PREVIEW' => $lang['Preview'],
        'L_SPELLCHECK' => $lang['Spellcheck'],
        'L_SUBMIT' => $lang['Submit'],
        'L_CANCEL' => $lang['Cancel'],
        'L_CONFIRM_DELETE' => $lang['Confirm_delete'],
        'L_DISABLE_HTML' => $lang['Disable_HTML_post'],
        'L_DISABLE_BBCODE' => $lang['Disable_BBCode_post'],
        'L_DISABLE_SMILIES' => $lang['Disable_Smilies_post'],
        'L_ATTACH_SIGNATURE' => $lang['Attach_signature'],
        'L_NOTIFY_ON_REPLY' => $lang['Notify'],
        'L_DELETE_POST' => $lang['Delete_post'],

        'L_BBCODE_B_HELP' => $lang['bbcode_b_help'],
        'L_BBCODE_I_HELP' => $lang['bbcode_i_help'],
        'L_BBCODE_U_HELP' => $lang['bbcode_u_help'],
        'L_BBCODE_Q_HELP' => $lang['bbcode_q_help'],
        'L_BBCODE_C_HELP' => $lang['bbcode_c_help'],
        'L_BBCODE_L_HELP' => $lang['bbcode_l_help'],
        'L_BBCODE_O_HELP' => $lang['bbcode_o_help'],
        'L_BBCODE_P_HELP' => $lang['bbcode_p_help'],
        'L_BBCODE_W_HELP' => $lang['bbcode_w_help'],
        'L_BBCODE_A_HELP' => $lang['bbcode_a_help'],
        'L_BBCODE_S_HELP' => $lang['bbcode_s_help'],
        'L_BBCODE_F_HELP' => $lang['bbcode_f_help'],
        'L_EMPTY_MESSAGE' => $lang['Empty_message'],

        'L_FONT_COLOR' => $lang['Font_color'],
        'L_COLOR_DEFAULT' => $lang['color_default'],
        'L_COLOR_DARK_RED' => $lang['color_dark_red'],
        'L_COLOR_RED' => $lang['color_red'],
        'L_COLOR_ORANGE' => $lang['color_orange'],
        'L_COLOR_BROWN' => $lang['color_brown'],
        'L_COLOR_YELLOW' => $lang['color_yellow'],
        'L_COLOR_GREEN' => $lang['color_green'],
        'L_COLOR_OLIVE' => $lang['color_olive'],
        'L_COLOR_CYAN' => $lang['color_cyan'],
        'L_COLOR_BLUE' => $lang['color_blue'],
        'L_COLOR_DARK_BLUE' => $lang['color_dark_blue'],
        'L_COLOR_INDIGO' => $lang['color_indigo'],
        'L_COLOR_VIOLET' => $lang['color_violet'],
        'L_COLOR_WHITE' => $lang['color_white'],
        'L_COLOR_BLACK' => $lang['color_black'],

        'L_FONT_SIZE' => $lang['Font_size'],
        'L_FONT_TINY' => $lang['font_tiny'],
        'L_FONT_SMALL' => $lang['font_small'],
        'L_FONT_NORMAL' => $lang['font_normal'],
        'L_FONT_LARGE' => $lang['font_large'],
        'L_FONT_HUGE' => $lang['font_huge'],

        'L_BBCODE_CLOSE_TAGS' => $lang['Close_Tags'],
        'L_STYLES_TIP' => $lang['Styles_tip'],

        'U_VIEWTOPIC' => ( $mode == 'reply' ) ? append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&amp;postorder=desc") : '',
        'U_REVIEW_TOPIC' => ( $mode == 'reply' ) ? append_sid("posting.$phpEx?mode=topicreview&amp;" . POST_TOPIC_URL . "=$topic_id&popup=1") : '',

        'S_HTML_CHECKED' => ( !$html_on ) ? 'checked="checked"' : '',
        'S_BBCODE_CHECKED' => ( !$bbcode_on ) ? 'checked="checked"' : '',
        'S_SMILIES_CHECKED' => ( !$smilies_on ) ? 'checked="checked"' : '',
        'S_SIGNATURE_CHECKED' => ( $attach_sig ) ? 'checked="checked"' : '',
        'S_NOTIFY_CHECKED' => ( $notify_user ) ? 'checked="checked"' : '',
        'S_TYPE_TOGGLE' => $topic_type_toggle,
        'S_TOPIC_ID' => $topic_id,
        'S_POST_ACTION' => append_sid("posting.$phpEx"),
        'S_HIDDEN_FORM_FIELDS' => $hidden_form_fields)
);

//
// Poll entry switch/output
//
if( ( $mode == 'newtopic' || ( $mode == 'editpost' && $post_data['edit_poll']) ) && $is_auth['auth_pollcreate'] )
{
        $template->assign_vars(array(
                'L_ADD_A_POLL' => $lang['Add_poll'],
                'L_ADD_POLL_EXPLAIN' => $lang['Add_poll_explain'],
                'L_POLL_QUESTION' => $lang['Poll_question'],
                'L_POLL_OPTION' => $lang['Poll_option'],
                'L_ADD_OPTION' => $lang['Add_option'],
                'L_UPDATE_OPTION' => $lang['Update'],
                'L_DELETE_OPTION' => $lang['Delete'],
                'L_POLL_LENGTH' => $lang['Poll_for'],
                'L_DAYS' => $lang['Days'],
                'L_POLL_LENGTH_EXPLAIN' => $lang['Poll_for_explain'],
                'L_POLL_DELETE' => $lang['Delete_poll'],

                'POLL_TITLE' => $poll_title,
                'POLL_LENGTH' => $poll_length)
        );

        if( $mode == 'editpost' && $post_data['edit_poll'] && $post_data['has_poll'])
        {
                $template->assign_block_vars('switch_poll_delete_toggle', array());
        }

        if( !empty($poll_options) )
        {
                while( list($option_id, $option_text) = each($poll_options) )
                {
                        $template->assign_block_vars('poll_option_rows', array(
                                'POLL_OPTION' => str_replace('"', '&quot;', $option_text),

                                'S_POLL_OPTION_NUM' => $option_id)
                        );
                }
        }

        $template->assign_var_from_handle('POLLBOX', 'pollbody');
}

//
// Topic review
//
if( $mode == 'reply' && $is_auth['auth_read'] )
{
        require("includes/topic_review.php");
        topic_review($topic_id, true);

        $template->assign_block_vars('switch_inline_mode', array());
        $template->assign_var_from_handle('TOPIC_REVIEW_BOX', 'reviewbody');
}

$template->pparse('body');

include("includes/page_tail.php");

?>



Back to top Reply with quote
#5   
Telli
Site Admin
Occupation: Self Employed
Age: 46
Gender: Male
Fav. Sports Team: Detroit Red Wings
Website:
Status: Offline
Joined: May 26, 2003
1.03 posts per day
Posts: 8089
Points: 494,475
   
Can you also attach your includes/functions_post.php please.




_________________
The path of the righteous man is beset on all sides by the inequities of the selfish and the tyranny of evil men. Blessed is he, who in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee. Ezekiel 25:17
Back to top Reply with quote
#6   re: Error on submitting new topic
kidbravo
CZ Super Newbie
 Codezwiz Site Donator
kidbravo has been a member for over 20 year's 20 Year Member
usa.gif california.gif
Age: 47
Gender: Male
Status: Offline
Joined: Aug 29, 2004
0.01 posts per day
Posts: 62
Points: 3,988
   
<?php
/***************************************************************************
*                            functions_post.php
*                            -------------------
*   begin                : Saturday, Feb 13, 2001
*   copyright            : (C) 2001 The phpBB Group
*   email                : [ Register or login to view links on this board. ]
*
*   Id: functions_post.php,v 1.9.2.37 2004/11/18 17:49:44 acydburn Exp
*
*
***************************************************************************/

/***************************************************************************
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
***************************************************************************/

if (!defined('IN_PHPBB'))
{
        die('Hacking attempt');
}

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#');
$html_entities_replace = array('&amp;', '&lt;', '&gt;');

$unhtml_specialchars_match = array('#&gt;#', '#&lt;#', '#&quot;#', '#&amp;#');
$unhtml_specialchars_replace = array('>', '<', '"', '&');

//
// This function will prepare a posted message for
// entry into the database.
//
function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid = 0)
{
        global $board_config, $html_entities_match, $html_entities_replace;

        //
        // Clean up the message
        //
        $message = trim($message);

        if ($html_on)
        {
                $allowed_html_tags = split(',', $board_config['allow_html_tags']);

                $end_html = 0;
                $start_html = 1;
                $tmp_message = '';
                $message = ' ' . $message . ' ';

                while ($start_html = strpos($message, '<', $start_html))
                {
                        $tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1, ($start_html - $end_html - 1)));

                        if ($end_html = strpos($message, '>', $start_html))
                        {
                                $length = $end_html - $start_html + 1;
                                $hold_string = substr($message, $start_html, $length);

                                if (($unclosed_open = strrpos(' ' . $hold_string, '<')) != 1)
                                {
                                        $tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($hold_string, 0, $unclosed_open - 1));
                                        $hold_string = substr($hold_string, $unclosed_open - 1);
                                }

                                $tagallowed = false;
                                for ($i = 0; $i < sizeof($allowed_html_tags); $i++)
                                {
                                        $match_tag = trim($allowed_html_tags[$i]);
                                        if (preg_match('#^<\/?' . $match_tag . '[> ]#i', $hold_string))
                                        {
                  $tagallowed = (preg_match('#^<\/?' . $match_tag . ' .*?(style[\t ]*?=|on[\w]+[\t ]*?=)#i', $hold_string)) ? false : true;
                                        }
                                }

                                $tmp_message .= ($length && !$tagallowed) ? preg_replace($html_entities_match, $html_entities_replace, $hold_string) : $hold_string;

                                $start_html += $length;
                        }
                        else
                        {
                                $tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $start_html, strlen($message)));

                                $start_html = strlen($message);
                                $end_html = $start_html;
                        }
                }

      if (!$end_html || ($end_html != strlen($message) && $tmp_message != ''))
                {
                        $tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1));
                }

                $message = ($tmp_message != '') ? trim($tmp_message) : trim($message);
        }
        else
        {
                $message = preg_replace($html_entities_match, $html_entities_replace, $message);
        }

        if($bbcode_on && $bbcode_uid != '')
        {
                $message = bbencode_first_pass($message, $bbcode_uid);
        }

        return $message;
}

function unprepare_message($message)
{
        global $unhtml_specialchars_match, $unhtml_specialchars_replace;

        return preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, $message);
}

//
// Prepare a message for posting
//
function prepare_post(&$mode, &$post_data, &$bbcode_on, &$html_on, &$smilies_on, &$error_msg, &$username, &$bbcode_uid, &$subject, &$message, &$poll_title, &$poll_options, &$poll_length)
{
        global $board_config, $userdata, $lang, $phpEx, $phpbb_root_path;

        // Check username
        if (!empty($username))
        {
      $username = phpbb_clean_username($username);

                if (!$userdata['session_logged_in'] || ($userdata['session_logged_in'] && $username != $userdata['username']))
                {
                        include("includes/functions_validate.php");

                        $result = validate_username($username);
                        if ($result['error'])
                        {
                                $error_msg .= (!empty($error_msg)) ? '<br />' . $result['error_msg'] : $result['error_msg'];
                        }
                }
                else
                {
                        $username = '';
                }
        }

        // Check subject
        if (!empty($subject))
        {
                $subject = htmlspecialchars(trim($subject));
        }
        else if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post']))
        {
                $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_subject'] : $lang['Empty_subject'];
        }

        // Check message
        if (!empty($message))
        {
                $bbcode_uid = ($bbcode_on) ? make_bbcode_uid() : '';
                $message = prepare_message(trim($message), $html_on, $bbcode_on, $smilies_on, $bbcode_uid);
        }
        else if ($mode != 'delete' && $mode != 'poll_delete')
        {
                $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_message'] : $lang['Empty_message'];
        }

        //
        // Handle poll stuff
        //
        if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post']))
        {
                $poll_length = (isset($poll_length)) ? max(0, intval($poll_length)) : 0;

                if (!empty($poll_title))
                {
                        $poll_title = htmlspecialchars(trim($poll_title));
                }

                if(!empty($poll_options))
                {
                        $temp_option_text = array();
                        while(list($option_id, $option_text) = @each($poll_options))
                        {
                                $option_text = trim($option_text);
                                if (!empty($option_text))
                                {
                                        $temp_option_text[$option_id] = htmlspecialchars($option_text);
                                }
                        }
                        $option_text = $temp_option_text;

                        if (count($poll_options) < 2)
                        {
                                $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['To_few_poll_options'] : $lang['To_few_poll_options'];
                        }
                        else if (count($poll_options) > $board_config['max_poll_options'])
                        {
                                $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['To_many_poll_options'] : $lang['To_many_poll_options'];
                        }
                        else if ($poll_title == '')
                        {
                                $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_poll_title'] : $lang['Empty_poll_title'];
                        }
                }
        }

        return;
}

//
// Post a new topic/reply/poll or edit existing post/poll
//
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length)
{
        global $board_config, $lang, $db, $phpbb_root_path, $phpEx, $userdata, $user_ip;

        include("includes/functions_search.php");

        $current_time = time();

        if ($mode == 'newtopic' || $mode == 'reply' || $mode == 'editpost')
        {
                //
                // Flood control
                //
                $where_sql = ($userdata['user_id'] == ANONYMOUS) ? "poster_ip = '$user_ip'" : 'poster_id = ' . $userdata['user_id'];
                $sql = "SELECT MAX(post_time) AS last_post_time
                        FROM " . POSTS_TABLE . "
                        WHERE $where_sql";
                if ($result = $db->sql_query($sql))
                {
                        if ($row = $db->sql_fetchrow($result))
                        {
                                if (intval($row['last_post_time']) > 0 && ($current_time - intval($row['last_post_time'])) < intval($board_config['flood_interval']))
                                {
                                        message_die(GENERAL_MESSAGE, $lang['Flood_Error']);
                                }
                        }
                }
        }

        if ($mode == 'editpost')
        {
                remove_search_post($post_id);
        }

        if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post']))
        {
                $topic_vote = (!empty($poll_title) && count($poll_options) >= 2) ? 1 : 0;

                $sql  = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$post_subject', " . $userdata['user_id'] . ", '$current_time', '$forum_id', " . TOPIC_UNLOCKED . ", '$topic_type', '$topic_vote')" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . " WHERE topic_id = '$topic_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
                }

                if ($mode == 'newtopic')
                {
                        $topic_id = $db->sql_nextid();
// Devil Modz for Nuke - New Topic Emailer 2.2 http://devil-modz.us/ Begin first Mod of functions_post.php

                     devil_notify_me($topic_id, $post_subject, $subject);

// Devil Modz for Nuke - New Topic Emailer 2.2 http://devil-modz.us/ End first Mod of functions_post.php

                        update_points(10);
                }
        }

        $edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";
        $sql = ($mode != "editpost") ? "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ('$topic_id', '$forum_id', " . $userdata['user_id'] . ", '$post_username', '$current_time', '$user_ip', '$bbcode_on', '$html_on', '$smilies_on', '$attach_sig')" : "UPDATE " . POSTS_TABLE . " SET post_username = '$post_username', enable_bbcode = '$bbcode_on', enable_html = '$html_on', enable_smilies = '$smilies_on', enable_sig = '$attach_sig'" . $edited_sql . " WHERE post_id = '$post_id'";
        if (!$db->sql_query($sql, BEGIN_TRANSACTION))
        {
                message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }

        if ($mode != 'editpost')
        {
                $post_id = $db->sql_nextid();
        }

        $sql = ($mode != 'editpost') ? "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES ('$post_id', '$post_subject', '$bbcode_uid', '$post_message')" : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message',  bbcode_uid = '$bbcode_uid', post_subject = '$post_subject' WHERE post_id = '$post_id'";
        if (!$db->sql_query($sql))
        {
                message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }

        add_search_words('single', $post_id, stripslashes($post_message), stripslashes($post_subject));

        //
        // Add poll
        //
        if (($mode == 'newtopic' || ($mode == 'editpost' && $post_data['edit_poll'])) && !empty($poll_title) && count($poll_options) >= 2)
        {
                $sql = (!$post_data['has_poll']) ? "INSERT INTO " . VOTE_DESC_TABLE . " (topic_id, vote_text, vote_start, vote_length) VALUES ('$topic_id', '$poll_title', '$current_time', " . ($poll_length * 86400) . ")" : "UPDATE " . VOTE_DESC_TABLE . " SET vote_text = '$poll_title', vote_length = " . ($poll_length * 86400) . " WHERE topic_id = '$topic_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
                }

                $delete_option_sql = '';
                $old_poll_result = array();
                if ($mode == 'editpost' && $post_data['has_poll'])
                {
                        $sql = "SELECT vote_option_id, vote_result
                                FROM " . VOTE_RESULTS_TABLE . "
                                WHERE vote_id = '$poll_id'
                                ORDER BY vote_option_id ASC";
                        if (!($result = $db->sql_query($sql)))
                        {
                                message_die(GENERAL_ERROR, 'Could not obtain vote data results for this topic', '', __LINE__, __FILE__, $sql);
                        }

                        while ($row = $db->sql_fetchrow($result))
                        {
                                $old_poll_result[$row['vote_option_id']] = $row['vote_result'];

                                if (!isset($poll_options[$row['vote_option_id']]))
                                {
                                        $delete_option_sql .= ($delete_option_sql != '') ? ', ' . $row['vote_option_id'] : $row['vote_option_id'];
                                }
                        }
                }
                else
                {
                        $poll_id = $db->sql_nextid();
                }

                @reset($poll_options);

                $poll_option_id = 1;
                while (list($option_id, $option_text) = each($poll_options))
                {
                        if (!empty($option_text))
                        {
                                $option_text = str_replace("\'", "''", htmlspecialchars($option_text));
                                $poll_result = ($mode == "editpost" && isset($old_poll_result[$option_id])) ? $old_poll_result[$option_id] : 0;

                                $sql = ($mode != "editpost" || !isset($old_poll_result[$option_id])) ? "INSERT INTO " . VOTE_RESULTS_TABLE . " (vote_id, vote_option_id, vote_option_text, vote_result) VALUES ('$poll_id', '$poll_option_id', '$option_text', '$poll_result')" : "UPDATE " . VOTE_RESULTS_TABLE . " SET vote_option_text = '$option_text', vote_result = '$poll_result' WHERE vote_option_id = '$option_id' AND vote_id = '$poll_id'";
                                if (!$db->sql_query($sql))
                                {
                                        message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
                                }
                                $poll_option_id++;
                        }
                }

                if ($delete_option_sql != '')
                {
                        $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "
                                WHERE vote_option_id IN ($delete_option_sql)
                                        AND vote_id = '$poll_id'";
                        if (!$db->sql_query($sql))
                        {
                                message_die(GENERAL_ERROR, 'Error deleting pruned poll options', '', __LINE__, __FILE__, $sql);
                        }
                }
        }

        $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">';
        $message = $lang['Stored'] . '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');

        return false;
}

//
// Update post stats and details
//
function update_post_stats(&$mode, &$post_data, &$forum_id, &$topic_id, &$post_id, &$user_id)
{
        global $db;

        $sign = ($mode == 'delete') ? '- 1' : '+ 1';
        $forum_update_sql = "forum_posts = forum_posts $sign";
        $topic_update_sql = '';

        if ($mode == 'delete')
        {
                if ($post_data['last_post'])
                {
                        if ($post_data['first_post'])
                        {
                                $forum_update_sql .= ', forum_topics = forum_topics - 1';
                        }
                        else
                        {

                                $topic_update_sql .= 'topic_replies = topic_replies - 1';

                                $sql = "SELECT MAX(post_id) AS last_post_id
                                        FROM " . POSTS_TABLE . "
                                        WHERE topic_id = '$topic_id'";
                                if (!($result = $db->sql_query($sql)))
                                {
                                        message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                                }

                                if ($row = $db->sql_fetchrow($result))
                                {
                                        $topic_update_sql .= ', topic_last_post_id = ' . $row['last_post_id'];
                                }
                        }

                        if ($post_data['last_topic'])
                        {
                                $sql = "SELECT MAX(post_id) AS last_post_id
                                        FROM " . POSTS_TABLE . "
                                        WHERE forum_id = '$forum_id'";
                                if (!($result = $db->sql_query($sql)))
                                {
                                        message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                                }

                                if ($row = $db->sql_fetchrow($result))
                                {
                                        $forum_update_sql .= ($row['last_post_id']) ? ', forum_last_post_id = ' . $row['last_post_id'] : ', forum_last_post_id = 0';
                                }
                        }
                }
                else if ($post_data['first_post'])
                {
                        $sql = "SELECT MIN(post_id) AS first_post_id
                                FROM " . POSTS_TABLE . "
                                WHERE topic_id = '$topic_id'";
                        if (!($result = $db->sql_query($sql)))
                        {
                                message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                        }

                        if ($row = $db->sql_fetchrow($result))
                        {
                                $topic_update_sql .= 'topic_replies = topic_replies - 1, topic_first_post_id = ' . $row['first_post_id'];
                        }
                }
                else
                {
                        $topic_update_sql .= 'topic_replies = topic_replies - 1';
                }
        }
        else if ($mode != 'poll_delete')
        {
                $forum_update_sql .= ", forum_last_post_id = $post_id" . (($mode == 'newtopic') ? ", forum_topics = forum_topics $sign" : "");
                $topic_update_sql = "topic_last_post_id = $post_id" . (($mode == 'reply') ? ", topic_replies = topic_replies $sign" : ", topic_first_post_id = $post_id");
        }
        else
        {
                $topic_update_sql .= 'topic_vote = 0';
        }

        $sql = "UPDATE " . FORUMS_TABLE . " SET
                $forum_update_sql
                WHERE forum_id = '$forum_id'";
        if (!$db->sql_query($sql))
        {
                message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }

        if ($topic_update_sql != '')
        {
                $sql = "UPDATE " . TOPICS_TABLE . " SET
                        $topic_update_sql
                        WHERE topic_id = '$topic_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
                }
        }

        if ($mode != 'poll_delete')
        {
                $sql = "UPDATE " . USERS_TABLE . "
                        SET user_posts = user_posts $sign
                        WHERE user_id = '$user_id'";
                if (!$db->sql_query($sql, END_TRANSACTION))
                {
                        message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
                }
        }

        return;
}

//
// Delete a post/poll
//
function delete_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id)
{
        global $board_config, $lang, $db, $phpbb_root_path, $phpEx, $userdata, $user_ip;

        if ($mode != 'poll_delete')
        {
        include("includes/functions_search.php");

                $sql = "DELETE FROM " . POSTS_TABLE . "
                        WHERE post_id = '$post_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                }

                $sql = "DELETE FROM " . POSTS_TEXT_TABLE . "
                        WHERE post_id = '$post_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                }

                if ($post_data['last_post'])
                {
                        if ($post_data['first_post'])
                        {
                                $forum_update_sql .= ', forum_topics = forum_topics - 1';
                                $sql = "DELETE FROM " . TOPICS_TABLE . "
                                        WHERE topic_id = '$topic_id'
                                                OR topic_moved_id = '$topic_id'";
                                if (!$db->sql_query($sql))
                                {
                                        message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                                }

                                $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
                                        WHERE topic_id = '$topic_id'";
                                if (!$db->sql_query($sql))
                                {
                                        message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
                                }
                        }
                }

                remove_search_post($post_id);
        }

        if ($mode == 'poll_delete' || ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post']) && $post_data['has_poll'] && $post_data['edit_poll'])
        {
                $sql = "DELETE FROM " . VOTE_DESC_TABLE . "
                        WHERE topic_id = '$topic_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql);
                }

                $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "
                        WHERE vote_id = '$poll_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql);
                }

                $sql = "DELETE FROM " . VOTE_USERS_TABLE . "
                        WHERE vote_id = '$poll_id'";
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql);
                }
        }

        if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post'])
        {
                $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $forum_id) . '">';
                $message = $lang['Deleted'];
        }
        else
        {
                $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $topic_id) . '">';
                $message = (($mode == 'poll_delete') ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
        }

        $message .=  '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');

        return;
}

//
// Handle user notification on new post
//
function user_notification($mode, &$post_data, &$topic_title, &$post_message, &$forum_id, &$topic_id, &$post_id, &$notify_user)
{
        global $board_config, $lang, $db, $phpbb_root_path, $phpEx, $userdata, $user_ip;

        $current_time = time();

        if ($mode == 'delete')
        {
                $delete_sql = (!$post_data['first_post'] && !$post_data['last_post']) ? " AND user_id = " . $userdata['user_id'] : '';
                $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id = '$topic_id'" . $delete_sql;
                if (!$db->sql_query($sql))
                {
                        message_die(GENERAL_ERROR, 'Could not change topic notify data', '', __LINE__, __FILE__, $sql);
                }
        }
        else
        {
                if ($mode == 'reply')
                {
                        update_points(11);
                        $sql = "SELECT ban_userid
                                FROM " . BANLIST_TABLE;
                        if (!($result = $db->sql_query($sql)))
                        {
                                message_die(GENERAL_ERROR, 'Could not obtain banlist', '', __LINE__, __FILE__, $sql);
                        }

                        $user_id_sql = '';
                        while ($row = $db->sql_fetchrow($result))
                        {
                                if (isset($row['ban_userid']) && !empty($row['ban_userid']))
                                {
                                        $user_id_sql .= ', ' . $row['ban_userid'];
                                }
                        }

                        $sql = "SELECT u.user_id, u.user_email, u.user_lang
                                FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u
                                WHERE tw.topic_id = '$topic_id'
                                        AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ")
                                        AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . "
                                        AND u.user_id = tw.user_id";
                        if (!($result = $db->sql_query($sql)))
                        {
                                message_die(GENERAL_ERROR, 'Could not obtain list of topic watchers', '', __LINE__, __FILE__, $sql);
                        }

                        $update_watched_sql = '';
                        $bcc_list_ary = array();

                        if ($row = $db->sql_fetchrow($result))
                        {
                                // Sixty second limit
                                @set_time_limit(60);

                                do
                                {
                                        if ($row['user_email'] != '')
                                        {
                                                $bcc_list_ary[$row['user_lang']][] = $row['user_email'];
                                        }
                                        $update_watched_sql .= ($update_watched_sql != '') ? ', ' . $row['user_id'] : $row['user_id'];
                                }
                                while ($row = $db->sql_fetchrow($result));

                                //
                                // Let's do some checking to make sure that mass mail functions
                                // are working in win32 versions of php.
                                //
                                if (preg_match('/[c-z]:\\\.*/i', getenv('PATH')) && !$board_config['smtp_delivery'])
                                {
                                        $ini_val = (@phpversion() >= '4.0.0') ? 'ini_get' : 'get_cfg_var';

                                        // We are running on windows, force delivery to use our smtp functions
                                        // since php's are broken by default
                                        $board_config['smtp_delivery'] = 1;
                                        $board_config['smtp_host'] = @$ini_val('SMTP');
                                }

                                if (sizeof($bcc_list_ary))
                                {
                                        include("includes/emailer.php");
                                        $emailer = new emailer($board_config['smtp_delivery']);

                                        $script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path']));
                                        $script_name = 'modules.php?name=Forums&file=viewtopic';
                                        $server_name = trim($board_config['server_name']);
                                        $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
                                        $server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) . '/' : '/';

                                        $orig_word = array();
                                        $replacement_word = array();
                                        obtain_word_list($orig_word, $replacement_word);

                                        $emailer->from($board_config['board_email']);
                                        $emailer->replyto($board_config['board_email']);

                                        $topic_title = (count($orig_word)) ? preg_replace($orig_word, $replacement_word, unprepare_message($topic_title)) : unprepare_message($topic_title);

                                        @reset($bcc_list_ary);
                                        while (list($user_lang, $bcc_list) = each($bcc_list_ary))
                                        {
                                                $emailer->use_template('topic_notify', $user_lang);

                                                for ($i = 0; $i < count($bcc_list); $i++)
                                                {
                                                        $emailer->bcc($bcc_list[$i]);
                                                }

                                                // The Topic_reply_notification lang string below will be used
                                                // if for some reason the mail template subject cannot be read
                                                // ... note it will not necessarily be in the posters own language!
                                                $emailer->set_subject($lang['Topic_reply_notification']);

                                                // This is a nasty kludge to remove the username var ... till (if?)
                                                // translators update their templates
                                                $emailer->msg = preg_replace('#[ ]?{USERNAME}#', '', $emailer->msg);

                                                $emailer->assign_vars(array(
                                                        'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
                                                        'SITENAME' => $board_config['sitename'],
                                                        'TOPIC_TITLE' => $topic_title,
'POSTER_USERNAME' => $userdata['username'],
      'MESSAGE' => $post_message,


                                                        'U_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '&' . POST_POST_URL . "=$post_id#$post_id",
                                                        'U_STOP_WATCHING_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '&' . POST_TOPIC_URL . "=$topic_id&unwatch=topic")
                                                );

                                                $emailer->send();
                                                $emailer->reset();
                                        }
                                }
                        }
                        $db->sql_freeresult($result);

                        if ($update_watched_sql != '')
                        {
                                $sql = "UPDATE " . TOPICS_WATCH_TABLE . "
                                        SET notify_status = " . TOPIC_WATCH_NOTIFIED . "
                                        WHERE topic_id = '$topic_id'
                                                AND user_id IN ($update_watched_sql)";
                                $db->sql_query($sql);
                        }
                }

                $sql = "SELECT topic_id
                        FROM " . TOPICS_WATCH_TABLE . "
                        WHERE topic_id = '$topic_id'
                                AND user_id = " . $userdata['user_id'];
                if (!($result = $db->sql_query($sql)))
                {
                        message_die(GENERAL_ERROR, 'Could not obtain topic watch information', '', __LINE__, __FILE__, $sql);
                }

                $row = $db->sql_fetchrow($result);

                if (!$notify_user && !empty($row['topic_id']))
                {
                        $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
                                WHERE topic_id = '$topic_id'
                                        AND user_id = " . $userdata['user_id'];
                        if (!$db->sql_query($sql))
                        {
                                message_die(GENERAL_ERROR, 'Could not delete topic watch information', '', __LINE__, __FILE__, $sql);
                        }
                }
                else if ($notify_user && empty($row['topic_id']))
                {
                        $sql = "INSERT INTO " . TOPICS_WATCH_TABLE . " (user_id, topic_id, notify_status)
                                VALUES (" . $userdata['user_id'] . ", '$topic_id', '0')";
                        if (!$db->sql_query($sql))
                        {
                                message_die(GENERAL_ERROR, 'Could not insert topic watch information', '', __LINE__, __FILE__, $sql);
                        }
                }
        }
}

//
// Fill smiley templates (or just the variables) with smileys
// Either in a window or inline
//
function generate_smilies($mode, $page_id)
{
        global $db, $board_config, $template, $lang, $images, $theme, $phpEx, $phpbb_root_path, $user_ip, $session_length, $starttime, $userdata;

        $inline_columns = 4;
        $inline_rows = 5;
        $window_columns = 8;

        if ($mode == 'window')
        {
                $userdata = session_pagestart($user_ip, $page_id, $nukeuser);
                init_userprefs($userdata);

                $gen_simple_header = TRUE;

                $page_title = $lang['Emoticons'] . " - $topic_title";
      if ( defined('IN_ADMIN') )
      {
         include("./page_header_admin.php");
      }
      else
      {
                include("includes/page_header_review.php");
      }

                $template->set_filenames(array(
                        'smiliesbody' => 'posting_smilies.tpl')
                );
        }

        $sql = "SELECT emoticon, code, smile_url
                FROM " . SMILIES_TABLE . "
                ORDER BY smilies_id";
        if ($result = $db->sql_query($sql))
        {
                $num_smilies = 0;
                $rowset = array();
                while ($row = $db->sql_fetchrow($result))
                {
                        if (empty($rowset[$row['smile_url']]))
                        {
                                $rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code']));
                                $rowset[$row['smile_url']]['emoticon'] = $row['emoticon'];
                                $num_smilies++;
                        }
                }

                if ($num_smilies)
                {
                        $smilies_count = ($mode == 'inline') ? min(19, $num_smilies) : $num_smilies;
                        $smilies_split_row = ($mode == 'inline') ? $inline_columns - 1 : $window_columns - 1;

                        $s_colspan = 0;
                        $row = 0;
                        $col = 0;

                        while (list($smile_url, $data) = @each($rowset))
                        {
                                if (!$col)
                                {
                                        $template->assign_block_vars('smilies_row', array());
                                }

                                $template->assign_block_vars('smilies_row.smilies_col', array(
                                        'SMILEY_CODE' => $data['code'],
                                        'SMILEY_IMG' => $board_config['smilies_path'] . '/' . $smile_url,
                                        'SMILEY_DESC' => $data['emoticon'])
                                );

                                $s_colspan = max($s_colspan, $col + 1);

                                if ($col == $smilies_split_row)
                                {
                                        if ($mode == 'inline' && $row == $inline_rows - 1)
                                        {
                                                break;
                                        }
                                        $col = 0;
                                        $row++;
                                }
                                else
                                {
                                        $col++;
                                }
                        }

                        if ($mode == 'inline' && $num_smilies > $inline_rows * $inline_columns)
                        {
                                $template->assign_block_vars('switch_smilies_extra', array());

                                $template->assign_vars(array(
                                        'L_MORE_SMILIES' => $lang['More_emoticons'],
                                        'U_MORE_SMILIES' => append_sid("posting.$phpEx?mode=smilies&popup=1"))
                                );
                        }

                        $template->assign_vars(array(
                                'L_EMOTICONS' => $lang['Emoticons'],
                                'L_CLOSE_WINDOW' => $lang['Close_window'],
                                'S_SMILIES_COLSPAN' => $s_colspan)
                        );
                }
        }

        if ($mode == 'window')
        {
                $template->pparse('smiliesbody');

                include("includes/page_tail_review.php");
        }
}
//---------------------------------------------------------------------------------------------------------------
// Devil Modz for Nuke - New Topic Emailer 2.2 http://devil-modz.us/ Begin second Mod of functions_post.php
//---------------------------------------------------------------------------------------------------------------

function devil_notify_me($topic_id, $post_subject, $subject) {
global $board_config, $lang, $db, $phpbb_root_path, $phpEx, $userdata, $user_ip, $user, $cookie, $prefix, $db, $user_prefix, $row, $module_name;
$script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path']));
$script_name = 'modules.php?name=Forums&file=viewtopic';
$server_name = trim($board_config['server_name']);
$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) . '/' : '/';
$site_name1 = trim($board_config['sitename']);

$da_email = trim($board_config['board_email']);
// multiple recipients
$to = "$da_email";
// subject
$subject123 = "New Forum Topic at $site_name1";
// message
$message123 = "
There is a new topic at $site_name1 \n
Subject of the post is \"$post_subject\" \n

";

//may have a problem with below.
$message123 .= ' The link to the post is: ' . $server_protocol . $server_name . $server_port . append_sid("viewtopic.$phpEx?" . "t" . "=" . $topic_id) . '#' . $topic_id . '';

$message123 .= "
\n
\n
\n
\n
\n

";

$headers123 = "From: $to \n";


$arleigh = "";
$sql = "";
$result = "";
$num = "";
$wd_appleuser = "";
$wd_appleemail = "";
$sql="SELECT * FROM wd_newemailtopic";
$result=mysql_query($sql);
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$wd_appleuser=mysql_result($result,$i,"wd_username");
$wd_appleemail=mysql_result($result,$i,"wd_email");

// Mail it
mail($wd_appleemail, $subject123, $message123, $headers123);

$i++;
}



}

//-----------------------------------------------------------------------------------------------------------
// Devil Modz for Nuke - New Topic Emailer 2.2 http://devil-modz.us/ End of second Mod of functions_post.php
//-----------------------------------------------------------------------------------------------------------

?>



Back to top Reply with quote
#7   
Telli
Site Admin
Occupation: Self Employed
Age: 46
Gender: Male
Fav. Sports Team: Detroit Red Wings
Website:
Status: Offline
Joined: May 26, 2003
1.03 posts per day
Posts: 8089
Points: 494,475
   
Locate this line in modules/Forums/posting.php


user_notification($mode, $post_data, $post_info['topic_title'], $forum_id, $topic_id, $post_id, $notify_user);


Replace with this:


user_notification($mode, $post_data, $post_info['topic_title'], $message, $forum_id, $topic_id, $post_id, $notify_user);


Let me know how it goes.



_________________
The path of the righteous man is beset on all sides by the inequities of the selfish and the tyranny of evil men. Blessed is he, who in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee. Ezekiel 25:17
Back to top Reply with quote
#8   
kidbravo
CZ Super Newbie
 Codezwiz Site Donator
kidbravo has been a member for over 20 year's 20 Year Member
usa.gif california.gif
Age: 47
Gender: Male
Status: Offline
Joined: Aug 29, 2004
0.01 posts per day
Posts: 62
Points: 3,988
   
worked perfectly thanks so much for your help telli. This site is great.



Back to top Reply with quote
#9   
kidbravo
CZ Super Newbie
 Codezwiz Site Donator
kidbravo has been a member for over 20 year's 20 Year Member
usa.gif california.gif
Age: 47
Gender: Male
Status: Offline
Joined: Aug 29, 2004
0.01 posts per day
Posts: 62
Points: 3,988
   
ok. another problem is that when i reply to a topic i do not get an email telling me of the reply. I have checked in my profile, Always notify me of replies:
this is crazy. i wish my site would work lol.
thanks for any help.



Back to top Reply with quote
#10   
Telli
Site Admin
Occupation: Self Employed
Age: 46
Gender: Male
Fav. Sports Team: Detroit Red Wings
Website:
Status: Offline
Joined: May 26, 2003
1.03 posts per day
Posts: 8089
Points: 494,475
   
I noticed in the file above you added a mod:

Devil Modz for Nuke - New Topic Emailer 2.2

I suspect this mod was not installed correctly or it doesn't work and it is causing problems with your notification process. If you dont have many mods added you might want to revert to the original files to save you some hassle.




_________________
The path of the righteous man is beset on all sides by the inequities of the selfish and the tyranny of evil men. Blessed is he, who in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee. Ezekiel 25:17
Back to top Reply with quote
Display posts from previous:      
Add To: Del.icio.us  Digg  Google  Spurl  Blink  Furl  Y! MyWeb  
<< View previous topic View next topic >>
Post new topicReply to topic

Jump to 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum