Seite 1 von 2

Nach upgrade auf 2.0.4 - Fehler beim Post editieren!

Verfasst: 08.02.2003 12:21
von Ashka
Hi,
ich habe mein Board nach der Anleitung von Acyd Burn von 2.0.3 auf 2.0.4 geupdatet aber jetzt bekomme ich nach dem Absenden der Posts beim editieren/erstellen diese fehlermeldung:

Code: Alles auswählen

Warning: Missing argument 7 for user_notification() in board/includes/functions_post.php on line 599

Warning: Cannot add header information - headers already sent by (output started at board/includes/functions_post.php:599) in board/includes/page_header.php on line 940

Warning: Cannot add header information - headers already sent by (output started at board/includes/functions_post.php:599) in board/includes/page_header.php on line 943

Warning: Cannot add header information - headers already sent by (output started at board/includes/functions_post.php:599) in board/includes/page_header.php on line 944
Ich weiss schon wodurch der fehler ausgelöst wird aber ich habe keine idee wie ich das problem lösen kann, wenn ich in der functions post das rot markierte entferne ist die fehlermeldung weg:
function user_notification($mode, &$post_data, &$topic_title, &$forum_id, &$topic_id, &$post_id, &$notify_user)
Woran kann das liegen,also wo könnte ich was falsch gemacht haben?

Grüße Ashka

Verfasst: 08.02.2003 12:24
von codemonkey
Poste mal die Zeilen um Zeile 599 in der function_post.php

Verfasst: 08.02.2003 12:35
von Ashka
Das ist wie oben schon gepostet die funktion user_notification

Hier mal der ganze abschnitt:

Code: Alles auswählen

//
// Handle user notification on new post
//
function user_notification($mode, &$post_data, &$topic_title, &$forum_id, &$topic_id, &$post_id, &$notify_user)
{
        global $HTTP_SERVER_VARS, $HTTP_ENV_VARS;
        global $board_config, $lang, $db, $phpbb_root_path, $phpEx;
        global $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, "Couldn't change topic notify data", "", __LINE__, __FILE__, $sql);
                }
        }
        else
        {
                if ($mode == 'reply')
                {
                        $sql = "SELECT ban_userid
                                FROM " . BANLIST_TABLE;
                        if (!($result = $db->sql_query($sql)))
                        {
                                message_die(GENERAL_ERROR, "", "", __LINE__, __FILE__, $sql);
                        }

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

                        $sql = "SELECT u.user_id, u.username, u.user_email, u.user_lang, t.topic_title, t.forum_id, f.forum_id, f.forum_name
                                FROM " . TOPICS_WATCH_TABLE . " tw, " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
                                WHERE tw.topic_id = $topic_id AND t.forum_id = f.forum_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, "", "", __LINE__, __FILE__, $sql);
                        }

                        $update_watched_sql = "";
                        $bcc_list_ary = array();
		       if ($row = $db->sql_fetchrow($result))
                        {
                                // Sixty second limit
			       @set_time_limit(60);
                                $post_text = preg_replace($orig_word, $replacement_word, unprepare_message($post_data['message']));

                                do
                                {
                                        if ($row['user_email'] != '')
                                        {


                                                $emailer->set_subject();//$lang['Topic_reply_notification']
						$bcc_list_ary[$row['user_lang']] .= (($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($phpbb_root_path . 'includes/emailer.'.$phpEx);
					$emailer = new emailer($board_config['smtp_delivery']);

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

					$script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path']));
					$script_name = ($script_name != '') ? $script_name . '/viewtopic.'.$phpEx : 'viewtopic.'.$phpEx;
					$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']) . '/' : '/';

					$email_headers = 'From: ' . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\n";

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

					while (list($user_lang, $bcc_list) = each($bcc_list_ary))
					{
						$emailer->use_template('topic_notify', $user_lang);
						$emailer->email_address(' ');
						// 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']);

						$emailer->extra_headers($email_headers . "Bcc: $bcc_list\n");

						// 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']) : '',
                                                        "USERNAME" => $row['username'],
                                                        "SITENAME" => $board_config['sitename'],
                                                        "TOPIC_TITLE" => $topic_title,
                                                        "POST_TEXT" => $post_text,
                                                        "POSTERNAME" => $post_data['username'],
                                                        "U_TOPIC" => $server_protocol . $server_name . $server_port . $script_name . "?" . POST_POST_URL . "=$post_id#$post_id",
                                                        "FORUM_NAME" => $row['forum_name'],
                                                        "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);

                        $already_mailed = ( trim($update_watched_sql) == '' ) ? "" : "$update_watched_sql, ";

                        $sql = "SELECT u.user_id, u.username, u.user_email, u.user_lang, t.topic_title, f.forum_name
                                FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . FORUMS_WATCH_TABLE . " fw, " . FORUMS_TABLE . " f
                                WHERE fw.forum_id = $forum_id
                                        AND fw.user_id NOT IN (" . $already_mailed . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . " )
                                        AND t.topic_id = $topic_id
                                        AND f.forum_id = $forum_id
                                        AND f.forum_notify = '1'
                                        AND u.user_id = fw.user_id";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "", "", __LINE__, __FILE__, $sql);
                        }

                        $script_name = preg_replace("/^\/?(.*?)\/?$/", "\\1", trim($board_config['script_path']));
                        $script_name_forum = ( $script_name != '' ) ? $script_name . '/viewforum.'.$phpEx : 'viewforum.'.$phpEx;
                        $script_name = ( $script_name != '' ) ? $script_name . '/viewtopic.'.$phpEx : 'viewtopic.'.$phpEx;

                        $temp_is_auth = array();

                        if ( $row = $db->sql_fetchrow($result) )
                        {
                                $topic_title = preg_replace($orig_word, $replacement_word, unprepare_message($row['topic_title']));
                                $post_text = preg_replace($orig_word, $replacement_word, unprepare_message($post_data['message']));

                                do
                                {
                                        $temp_userdata = get_userdata($row['user_id']);
                                        $temp_is_auth = auth(AUTH_ALL, $forum_id, $temp_userdata, -1);

                                        // another security check (i.e. the forum might have become private and
                                        // there are still users who have notification activated)
                                        if( $temp_is_auth['auth_read'] && $temp_is_auth['auth_view'] )
                                        {
                                                if ( $row['user_email'] != "" )
                                                {
                                                        $emailer->use_template("forum_notify", $row['user_lang']);
                                                        $emailer->email_address($row['user_email']);
                                                        $emailer->set_subject();//$lang['Topic_reply_notification']
                                                        $emailer->extra_headers($email_headers);

                                                        $emailer->assign_vars(array(
                                                                "EMAIL_SIG" => str_replace("<br />", "\n", "-- \n" . $board_config['board_email_sig']),
                                                                "USERNAME" => $row['username'],
                                                                "SITENAME" => $board_config['sitename'],
                                                                "TOPIC_TITLE" => $topic_title,
                                                                "POST_TEXT" => $post_text,
                                                                "POSTERNAME" => $post_data['username'],
                                                                "U_TOPIC" => $server_protocol . $server_name . $server_port . $script_name . "?" . POST_POST_URL . "=$post_id#$post_id",
                                                                "FORUM_NAME" => $row['forum_name'],
                                                                "U_STOP_WATCHING_FORUM" => $server_protocol . $server_name . $server_port . $script_name_forum . "?" . POST_FORUM_URL . "=$forum_id&unwatch=forum")
                                                        );

                                                        $emailer->send();
                                                        $emailer->reset();

                                                }
                                        }
                                }
                                while ( $row = $db->sql_fetchrow($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);
                        }

                }

                //
                // code for newtopic forum notification
                //
                if ( $mode == "newtopic" )
                {
                        $sql = "SELECT ban_userid
                                FROM " . BANLIST_TABLE;
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "", "", __LINE__, __FILE__, $sql);
                        }

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

                        $sql = "SELECT u.user_id, u.username, u.user_email, u.user_lang, f.forum_name
                                FROM " . USERS_TABLE . " u, " . FORUMS_WATCH_TABLE . " fw, " . FORUMS_TABLE . " f
                                WHERE fw.forum_id = $forum_id
                                        AND fw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . " )
                                        AND f.forum_id = $forum_id
                                        AND f.forum_notify = '1'
                                        AND u.user_id = fw.user_id";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "", "", __LINE__, __FILE__, $sql);
                        }

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

                        include($phpbb_root_path . 'includes/emailer.'.$phpEx);
                        $emailer = new emailer($board_config['smtp_delivery']);

                        $script_name = preg_replace("/^\/?(.*?)\/?$/", "\\1", trim($board_config['script_path']));
                        $script_name_forum = ( $script_name != '' ) ? $script_name . '/viewforum.'.$phpEx : 'viewforum.'.$phpEx;
                        $script_name = ( $script_name != '' ) ? $script_name . '/viewtopic.'.$phpEx : 'viewtopic.'.$phpEx;
                        $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']) . '/' : '/';

                        $email_headers = "From: " . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\r\n";

                        $temp_is_auth = array();
                        if ( $row = $db->sql_fetchrow($result) )
                        {
                                $topic_title = preg_replace($orig_word, $replacement_word, unprepare_message($post_data['subject']));
                                $post_text = preg_replace($orig_word, $replacement_word, unprepare_message($post_data['message']));

                                do
                                {
                                        $temp_userdata = get_userdata($row['user_id']);
                                        $temp_is_auth = auth(AUTH_ALL, $forum_id, $temp_userdata, -1);

                                        // another security check (i.e. the forum might have become private and
                                        // there are still users who have notification activated)
                                        if( $temp_is_auth['auth_read'] && $temp_is_auth['auth_view'] )
                                        {
                                                if ( $row['user_email'] != "" )
                                                {
                                                        $emailer->use_template("newtopic_notify", $row['user_lang']);
                                                        $emailer->email_address($row['user_email']);
                                                        $emailer->set_subject();//$lang['Topic_reply_notification']
                                                        $emailer->extra_headers($email_headers);

                                                        $emailer->assign_vars(array(
                                                                "EMAIL_SIG" => str_replace("<br />", "\n", "-- \n" . $board_config['board_email_sig']),
                                                                "USERNAME" => $row['username'],
                                                                "SITENAME" => $board_config['sitename'],
                                                                "TOPIC_TITLE" => $topic_title,
                                                                "POST_TEXT" => $post_text,
                                                                "POSTERNAME" => $post_data['username'],
                                                                "U_TOPIC" => $server_protocol . $server_name . $server_port . $script_name . "?" . POST_POST_URL . "=$post_id#$post_id",
                                                                "FORUM_NAME" => $row['forum_name'],
                                                                "U_STOP_WATCHING_FORUM" => $server_protocol . $server_name . $server_port . $script_name_forum . "?" . POST_FORUM_URL . "=$forum_id&unwatch=forum")
                                                        );

                                                        $emailer->send();
                                                        $emailer->reset();

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

                }

                $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, "Couldn't 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, "Couldn't 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, "Couldn't insert topic watch information", "", __LINE__, __FILE__, $sql);
                        }
                }
        }
}
Grüße Ashka

Verfasst: 08.02.2003 14:13
von Mister_X
überprüfe mal ob in der posting.php ein solche Zeile existiert:

Code: Alles auswählen

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

Verfasst: 08.02.2003 14:18
von Acid

Verfasst: 08.02.2003 21:23
von Ashka
@Acid das kann net das gleiche problem sein da sowohl posting.php als auch functions_post.php auf 2.0.4 geupdatet sind ;) Keine der beiden dateien ist auf dem stand vom 2.0.3..

Ashka

Verfasst: 08.02.2003 21:36
von Acid
..zeig ma functions_post.php/posting.php verlinkt als Textversion .

Verfasst: 09.02.2003 00:38
von Ashka
functions_post.php: functions_post.txt

posting.php: posting.txt

Grüße Ashka

Verfasst: 09.02.2003 13:33
von Acid
hmm.. Du hast die user_notification() Zeile in der posting.php zweimal drin.
Die zweite Zeile schaut so aus, wie sie aussehen soll... die erste stammt wohl vom Notification Hack und verursacht eventuell diesen Fehler. Schau ma im Mod-Forum nach, da gibs ein oder zwei Themen zum Notification Hack.

Verfasst: 10.02.2003 12:40
von Ashka
Hi,
ich habe alles abgesucht aber kein Thema zu einem ähnlichem oder diesem problem gefunden!Soll ich jetzt einen neuen Thread dazu im Mods Forum eröffnen oder hat jemand ne idee wie ich das beheben kann?

Grüße Ashka