All pastes #337235 Raw Edit

N1GHTS

public php v1 · immutable
·published 2007-02-02 17:23 UTC
rendered paste body
//// 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;	global $userdata, $user_ip;	include($phpbb_root_path . 'includes/functions_search.'.$phpEx);	$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();		}	}	$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);			}		}	}	$cash_message = $GLOBALS['cm_posting']->update_post($mode, $post_data, $forum_id, $topic_id, $post_id, $topic_type, $bbcode_uid, $post_username, $post_message);	$meta = '<meta http-equiv="refresh" content="3;url=' . append_sid(" redirecting part ">';		$message = $lang['Stored'] . '<br />' . $cash_message . '<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;}