diff options
Diffstat (limited to 'phpBB/includes/functions_posting.php')
| -rw-r--r-- | phpBB/includes/functions_posting.php | 310 | 
1 files changed, 105 insertions, 205 deletions
| diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 75d77285a0..4f14dc8683 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -24,12 +24,13 @@ if (!defined('IN_PHPBB'))  */  function generate_smilies($mode, $forum_id)  { -	global $db, $user, $config, $template, $phpbb_dispatcher; +	global $db, $user, $config, $template, $phpbb_dispatcher, $request;  	global $phpEx, $phpbb_root_path, $phpbb_container, $phpbb_path_helper; -	$base_url = append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id); +	/* @var $pagination \phpbb\pagination */  	$pagination = $phpbb_container->get('pagination'); -	$start = request_var('start', 0); +	$base_url = append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id); +	$start = $request->variable('start', 0);  	if ($mode == 'window')  	{ @@ -310,10 +311,10 @@ function posting_gen_topic_icons($mode, $icon_id)  			{  				$template->assign_block_vars('topic_icon', array(  					'ICON_ID'		=> $id, -					'ICON_NAME'		=> $data['img'],  					'ICON_IMG'		=> $root_path . $config['icons_path'] . '/' . $data['img'],  					'ICON_WIDTH'	=> $data['width'],  					'ICON_HEIGHT'	=> $data['height'], +					'ICON_ALT'		=> $data['alt'],  					'S_CHECKED'			=> ($id == $icon_id) ? true : false,  					'S_ICON_CHECKED'	=> ($id == $icon_id) ? ' checked="checked"' : '') @@ -337,18 +338,15 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL)  	$toggle = false;  	$topic_types = array( -		'sticky'	=> array('const' => POST_STICKY, 'lang' => 'POST_STICKY'), -		'announce'	=> array('const' => POST_ANNOUNCE, 'lang' => 'POST_ANNOUNCEMENT'), -		'global'	=> array('const' => POST_GLOBAL, 'lang' => 'POST_GLOBAL') +		'sticky'			=> array('const' => POST_STICKY, 'lang' => 'POST_STICKY'), +		'announce'			=> array('const' => POST_ANNOUNCE, 'lang' => 'POST_ANNOUNCEMENT'), +		'announce_global'	=> array('const' => POST_GLOBAL, 'lang' => 'POST_GLOBAL')  	);  	$topic_type_array = array();  	foreach ($topic_types as $auth_key => $topic_value)  	{ -		// We do not have a special post global announcement permission -		$auth_key = ($auth_key == 'global') ? 'announce' : $auth_key; -  		if ($auth->acl_get('f_' . $auth_key, $forum_id))  		{  			$toggle = true; @@ -378,8 +376,8 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL)  		$template->assign_vars(array(  			'S_TOPIC_TYPE_STICKY'	=> ($auth->acl_get('f_sticky', $forum_id)), -			'S_TOPIC_TYPE_ANNOUNCE'	=> ($auth->acl_get('f_announce', $forum_id))) -		); +			'S_TOPIC_TYPE_ANNOUNCE'	=> ($auth->acl_gets('f_announce', 'f_announce_global', $forum_id)), +		));  	}  	return $toggle; @@ -393,183 +391,27 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL)  * Upload Attachment - filedata is generated here  * Uses upload class  * +* @deprecated 3.2.0-a1 (To be removed: 3.4.0) +*  * @param string			$form_name		The form name of the file upload input  * @param int			$forum_id		The id of the forum  * @param bool			$local			Whether the file is local or not  * @param string			$local_storage	The path to the local file  * @param bool			$is_message		Whether it is a PM or not -* @param \filespec		$local_filedata	A filespec object created for the local file -* @param \phpbb\mimetype\guesser	$mimetype_guesser	The mimetype guesser object if used -* @param \phpbb\plupload\plupload	$plupload		The plupload object if one is being used +* @param array			$local_filedata	A filespec object created for the local file  * -* @return object filespec +* @return array File data array  */ -function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false, \phpbb\mimetype\guesser $mimetype_guesser = null, \phpbb\plupload\plupload $plupload = null) +function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false)  { -	global $auth, $user, $config, $db, $cache; -	global $phpbb_root_path, $phpEx, $phpbb_dispatcher; - -	$filedata = array( -		'error'	=> array() -	); - -	include_once($phpbb_root_path . 'includes/functions_upload.' . $phpEx); -	$upload = new fileupload(); - -	if ($config['check_attachment_content'] && isset($config['mime_triggers'])) -	{ -		$upload->set_disallowed_content(explode('|', $config['mime_triggers'])); -	} -	else if (!$config['check_attachment_content']) -	{ -		$upload->set_disallowed_content(array()); -	} - -	$filedata['post_attach'] = $local || $upload->is_valid($form_name); - -	if (!$filedata['post_attach']) -	{ -		$filedata['error'][] = $user->lang['NO_UPLOAD_FORM_FOUND']; -		return $filedata; -	} - -	$extensions = $cache->obtain_attach_extensions((($is_message) ? false : (int) $forum_id)); -	$upload->set_allowed_extensions(array_keys($extensions['_allowed_'])); - -	$file = ($local) ? $upload->local_upload($local_storage, $local_filedata, $mimetype_guesser) : $upload->form_upload($form_name, $mimetype_guesser, $plupload); - -	if ($file->init_error) -	{ -		$filedata['post_attach'] = false; -		return $filedata; -	} - -	// Whether the uploaded file is in the image category -	$is_image = (isset($extensions[$file->get('extension')]['display_cat'])) ? $extensions[$file->get('extension')]['display_cat'] == ATTACHMENT_CATEGORY_IMAGE : false; - -	if (!$auth->acl_get('a_') && !$auth->acl_get('m_', $forum_id)) -	{ -		// Check Image Size, if it is an image -		if ($is_image) -		{ -			$file->upload->set_allowed_dimensions(0, 0, $config['img_max_width'], $config['img_max_height']); -		} - -		// Admins and mods are allowed to exceed the allowed filesize -		if (!empty($extensions[$file->get('extension')]['max_filesize'])) -		{ -			$allowed_filesize = $extensions[$file->get('extension')]['max_filesize']; -		} -		else -		{ -			$allowed_filesize = ($is_message) ? $config['max_filesize_pm'] : $config['max_filesize']; -		} - -		$file->upload->set_max_filesize($allowed_filesize); -	} - -	$file->clean_filename('unique', $user->data['user_id'] . '_'); - -	// Are we uploading an image *and* this image being within the image category? -	// Only then perform additional image checks. -	$file->move_file($config['upload_path'], false, !$is_image); - -	// Do we have to create a thumbnail? -	$filedata['thumbnail'] = ($is_image && $config['img_create_thumbnail']) ? 1 : 0; - -	if (sizeof($file->error)) -	{ -		$file->remove(); -		$filedata['error'] = array_merge($filedata['error'], $file->error); -		$filedata['post_attach'] = false; - -		return $filedata; -	} - -	// Make sure the image category only holds valid images... -	if ($is_image && !$file->is_image()) -	{ -		$file->remove(); - -		if ($plupload && $plupload->is_active()) -		{ -			$plupload->emit_error(104, 'ATTACHED_IMAGE_NOT_IMAGE'); -		} - -		// If this error occurs a user tried to exploit an IE Bug by renaming extensions -		// Since the image category is displaying content inline we need to catch this. -		trigger_error($user->lang['ATTACHED_IMAGE_NOT_IMAGE']); -	} - -	$filedata['filesize'] = $file->get('filesize'); -	$filedata['mimetype'] = $file->get('mimetype'); -	$filedata['extension'] = $file->get('extension'); -	$filedata['physical_filename'] = $file->get('realname'); -	$filedata['real_filename'] = $file->get('uploadname'); -	$filedata['filetime'] = time(); - -	/** -	* Event to modify uploaded file before submit to the post -	* -	* @event core.modify_uploaded_file -	* @var	array	filedata	Array containing uploaded file data -	* @var	bool	is_image	Flag indicating if the file is an image -	* @since 3.1.0-RC3 -	*/ -	$vars = array( -		'filedata', -		'is_image', -	); -	extract($phpbb_dispatcher->trigger_event('core.modify_uploaded_file', compact($vars))); - -	// Check our complete quota -	if ($config['attachment_quota']) -	{ -		if ($config['upload_dir_size'] + $file->get('filesize') > $config['attachment_quota']) -		{ -			$filedata['error'][] = $user->lang['ATTACH_QUOTA_REACHED']; -			$filedata['post_attach'] = false; - -			$file->remove(); - -			return $filedata; -		} -	} - -	// Check free disk space -	if ($free_space = @disk_free_space($phpbb_root_path . $config['upload_path'])) -	{ -		if ($free_space <= $file->get('filesize')) -		{ -			if ($auth->acl_get('a_')) -			{ -				$filedata['error'][] = $user->lang['ATTACH_DISK_FULL']; -			} -			else -			{ -				$filedata['error'][] = $user->lang['ATTACH_QUOTA_REACHED']; -			} -			$filedata['post_attach'] = false; - -			$file->remove(); - -			return $filedata; -		} -	} +	global $phpbb_container; -	// Create Thumbnail -	if ($filedata['thumbnail']) -	{ -		$source = $file->get('destination_file'); -		$destination = $file->get('destination_path') . '/thumb_' . $file->get('realname'); - -		if (!create_thumbnail($source, $destination, $file->get('mimetype'))) -		{ -			$filedata['thumbnail'] = 0; -		} -	} +	/** @var \phpbb\attachment\manager $attachment_manager */ +	$attachment_manager = $phpbb_container->get('attachment.manager'); +	$file = $attachment_manager->upload($form_name, $forum_id, $local, $local_storage, $is_message, $local_filedata); +	unset($attachment_manager); -	return $filedata; +	return $file;  }  /** @@ -668,7 +510,7 @@ function get_supported_image_types($type = false)  */  function create_thumbnail($source, $destination, $mimetype)  { -	global $config; +	global $config, $phpbb_filesystem;  	$min_filesize = (int) $config['img_min_thumb_filesize'];  	$img_filesize = (file_exists($source)) ? @filesize($source) : false; @@ -820,7 +662,14 @@ function create_thumbnail($source, $destination, $mimetype)  		return false;  	} -	phpbb_chmod($destination, CHMOD_READ | CHMOD_WRITE); +	try +	{ +		$phpbb_filesystem->phpbb_chmod($destination, CHMOD_READ | CHMOD_WRITE); +	} +	catch (\phpbb\filesystem\exception\filesystem_exception $e) +	{ +		// Do nothing +	}  	return true;  } @@ -1040,6 +889,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id  	global $user, $auth, $db, $template, $cache;  	global $config, $phpbb_root_path, $phpEx, $phpbb_container, $phpbb_dispatcher; +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	$sql_sort = ($mode == 'post_review') ? 'ASC' : 'DESC'; @@ -1185,6 +1035,8 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id  			'MESSAGE'			=> $message,  			'DECODED_MESSAGE'	=> $decoded_message,  			'POST_ID'			=> $row['post_id'], +			'POST_TIME'			=> $row['post_time'], +			'USER_ID'			=> $row['user_id'],  			'U_MINI_POST'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'],  			'U_MCP_DETAILS'		=> ($auth->acl_get('m_info', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=post_details&f=' . $forum_id . '&p=' . $row['post_id'], true, $user->session_id) : '',  			'POSTER_QUOTE'		=> ($show_quote_button && $auth->acl_get('f_reply', $forum_id)) ? addslashes(get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username'])) : '', @@ -1296,6 +1148,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $  		$db->sql_freeresult($result);  	} +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	// (Soft) delete the post @@ -1509,8 +1362,10 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $  */  function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $update_message = true, $update_search_index = true)  { -	global $db, $auth, $user, $config, $phpEx, $template, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher; +	global $db, $auth, $user, $config, $phpEx, $template, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher, $phpbb_log, $request; +	$poll_ary = $poll; +	$data_ary = $data;  	/**  	* Modify the data for post submitting  	* @@ -1519,23 +1374,28 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	* @var	string	subject				Variable containing post subject value  	* @var	string	username			Variable containing post author name  	* @var	int		topic_type			Variable containing topic type value -	* @var	array	poll				Array with the poll data for the post -	* @var	array	data				Array with the data for the post +	* @var	array	poll_ary			Array with the poll data for the post +	* @var	array	data_ary			Array with the data for the post  	* @var	bool	update_message		Flag indicating if the post will be updated  	* @var	bool	update_search_index	Flag indicating if the search index will be updated  	* @since 3.1.0-a4 +	* @change 3.2.0-a1 Replaced poll and data with poll_ary and data_ary  	*/  	$vars = array(  		'mode',  		'subject',  		'username',  		'topic_type', -		'poll', -		'data', +		'poll_ary', +		'data_ary',  		'update_message',  		'update_search_index',  	);  	extract($phpbb_dispatcher->trigger_event('core.modify_submit_post_data', compact($vars))); +	$poll = $poll_ary; +	$data = $data_ary; +	unset($poll_ary); +	unset($data_ary);  	// We do not handle erasing posts here  	if ($mode == 'delete') @@ -1689,7 +1549,14 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  			if ($user->data['user_id'] != $poster_id)  			{  				$log_subject = ($subject) ? $subject : $data['topic_title']; -				add_log('mod', $data['forum_id'], $data['topic_id'], 'LOG_POST_EDITED', $log_subject, (!empty($username)) ? $username : $user->lang['GUEST'], $data['post_edit_reason']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_POST_EDITED', false, array( +					'forum_id' => $data['forum_id'], +					'topic_id' => $data['topic_id'], +					'post_id'  => $data['post_id'], +					$log_subject, +					(!empty($username)) ? $username : $user->lang['GUEST'], +					$data['post_edit_reason'] +				));  			}  			if (!isset($sql_data[POSTS_TABLE]['sql'])) @@ -1853,22 +1720,25 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		break;  	} +	$poll_ary = $poll; +	$data_ary = $data;  	/**  	* Modify sql query data for post submitting  	*  	* @event core.submit_post_modify_sql_data -	* @var	array	data				Array with the data for the post -	* @var	array	poll				Array with the poll data for the post +	* @var	array	data_ary			Array with the data for the post +	* @var	array	poll_ary			Array with the poll data for the post  	* @var	string	post_mode			Variable containing posting mode value  	* @var	bool	sql_data			Array with the data for the posting SQL query  	* @var	string	subject				Variable containing post subject value  	* @var	int		topic_type			Variable containing topic type value  	* @var	string	username			Variable containing post author name  	* @since 3.1.3-RC1 +	* @change 3.2.0-a1 Replace poll and data with poll_ary and data_ary  	*/  	$vars = array( -		'data', -		'poll', +		'data_ary', +		'poll_ary',  		'post_mode',  		'sql_data',  		'subject', @@ -1876,6 +1746,10 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		'username',  	);  	extract($phpbb_dispatcher->trigger_event('core.submit_post_modify_sql_data', compact($vars))); +	$poll = $poll_ary; +	$data = $data_ary; +	unset($poll_ary); +	unset($data_ary);  	// Submit new topic  	if ($post_mode == 'post') @@ -1928,9 +1802,9 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		{  			if ($post_mode == 'post')  			{ -				set_config_count('num_topics', 1, true); +				$config->increment('num_topics', 1, false);  			} -			set_config_count('num_posts', 1, true); +			$config->increment('num_posts', 1, false);  			$sql_data[FORUMS_TABLE]['stat'][] = 'forum_last_post_id = ' . $data['post_id'];  			$sql_data[FORUMS_TABLE]['stat'][] = "forum_last_post_subject = '" . $db->sql_escape($subject) . "'"; @@ -2103,8 +1977,8 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		if ($space_taken && $files_added)  		{ -			set_config_count('upload_dir_size', $space_taken, true); -			set_config_count('num_files', $files_added, true); +			$config->increment('upload_dir_size', $space_taken, false); +			$config->increment('num_files', $files_added, false);  		}  	} @@ -2122,6 +1996,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		$is_starter = ($post_mode == 'edit_first_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED);  		$is_latest = ($post_mode == 'edit_last_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED); +		/* @var $phpbb_content_visibility \phpbb\content_visibility */  		$phpbb_content_visibility = $phpbb_container->get('content.visibility');  		$phpbb_content_visibility->set_post_visibility($post_visibility, $data['post_id'], $data['topic_id'], $data['forum_id'], $user->data['user_id'], time(), '', $is_starter, $is_latest);  	} @@ -2197,7 +2072,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	$db->sql_transaction('commit');  	// Delete draft if post was loaded... -	$draft_id = request_var('draft_loaded', 0); +	$draft_id = $request->variable('draft_loaded', 0);  	if ($draft_id)  	{  		$sql = 'DELETE FROM ' . DRAFTS_TABLE . " @@ -2300,6 +2175,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		'post_subject'		=> $subject,  	)); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	if ($post_visibility == ITEM_APPROVED) @@ -2421,6 +2297,8 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";  	$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor; +	$poll_ary = $poll; +	$data_ary = $data;  	/**  	* This event is used for performing actions directly after a post or topic  	* has been submitted. When a new topic is posted, the topic ID is @@ -2434,8 +2312,8 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	* @var	string	subject				Variable containing post subject value  	* @var	string	username			Variable containing post author name  	* @var	int		topic_type			Variable containing topic type value -	* @var	array	poll				Array with the poll data for the post -	* @var	array	data				Array with the data for the post +	* @var	array	poll_ary			Array with the poll data for the post +	* @var	array	data_ary			Array with the data for the post  	* @var	int		post_visibility		Variable containing up to date post visibility  	* @var	bool	update_message		Flag indicating if the post will be updated  	* @var	bool	update_search_index	Flag indicating if the search index will be updated @@ -2444,20 +2322,25 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	* @since 3.1.0-a3  	* @change 3.1.0-RC3 Added vars mode, subject, username, topic_type,  	*		poll, update_message, update_search_index +	* @change 3.2.0-a1 Replaced data and poll with data_ary and poll_ary  	*/  	$vars = array(  		'mode',  		'subject',  		'username',  		'topic_type', -		'poll', -		'data', +		'poll_ary', +		'data_ary',  		'post_visibility',  		'update_message',  		'update_search_index',  		'url',  	);  	extract($phpbb_dispatcher->trigger_event('core.submit_post_end', compact($vars))); +	$data = $data_ary; +	$poll = $poll_ary; +	unset($data_ary); +	unset($poll_ary);  	return $url;  } @@ -2478,7 +2361,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  */  function phpbb_bump_topic($forum_id, $topic_id, $post_data, $bump_time = false)  { -	global $config, $db, $user, $phpEx, $phpbb_root_path; +	global $config, $db, $user, $phpEx, $phpbb_root_path, $phpbb_log;  	if ($bump_time === false)  	{ @@ -2557,7 +2440,11 @@ function phpbb_bump_topic($forum_id, $topic_id, $post_data, $bump_time = false)  		update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_time, false);  	} -	add_log('mod', $forum_id, $topic_id, 'LOG_BUMP_TOPIC', $post_data['topic_title']); +	$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_BUMP_TOPIC', false, array( +		'forum_id' => $forum_id, +		'topic_id' => $topic_id, +		$post_data['topic_title'] +	));  	$url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p={$post_data['topic_last_post_id']}") . "#p{$post_data['topic_last_post_id']}"; @@ -2595,7 +2482,7 @@ function phpbb_upload_popup($forum_style = 0)  function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $is_soft = false, $delete_reason = '')  {  	global $user, $auth, $config, $request; -	global $phpbb_root_path, $phpEx; +	global $phpbb_root_path, $phpEx, $phpbb_log;  	$perm_check = ($is_soft) ? 'softdelete' : 'delete'; @@ -2630,14 +2517,27 @@ function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $  			if ($next_post_id === false)  			{ -				add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_TOPIC' : 'LOG_DELETE_TOPIC'), $post_data['topic_title'], $post_username, $delete_reason); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, (($is_soft) ? 'LOG_SOFTDELETE_TOPIC' : 'LOG_DELETE_TOPIC'), false, array( +					'forum_id' => $forum_id, +					'topic_id' => $topic_id, +					$post_data['topic_title'], +					$post_username, +					$delete_reason +				));  				$meta_info = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id");  				$message = $user->lang['POST_DELETED'];  			}  			else  			{ -				add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_POST' : 'LOG_DELETE_POST'), $post_data['post_subject'], $post_username, $delete_reason); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, (($is_soft) ? 'LOG_SOFTDELETE_POST' : 'LOG_DELETE_POST'), false, array( +					'forum_id' => $forum_id, +					'topic_id' => $topic_id, +					'post_id'  => $post_id, +					$post_data['post_subject'], +					$post_username, +					$delete_reason +				));  				$meta_info = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p=$next_post_id") . "#p$next_post_id";  				$message = $user->lang['POST_DELETED']; | 
