diff options
Diffstat (limited to 'phpBB/includes/functions_posting.php')
| -rw-r--r-- | phpBB/includes/functions_posting.php | 72 | 
1 files changed, 69 insertions, 3 deletions
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 3640f543d9..1956f65666 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -52,9 +52,29 @@ function generate_smilies($mode, $forum_id)  		page_header($user->lang['SMILIES']); -		$sql = 'SELECT COUNT(smiley_id) AS item_count -			FROM ' . SMILIES_TABLE . ' -			GROUP BY smiley_url'; +		$sql_ary = [ +			'SELECT'	=> 'COUNT(s.smiley_id) AS item_count', +			'FROM'		=> [ +				SMILIES_TABLE => 's', +			], +			'GROUP_BY'	=> 's.smiley_url', +		]; + +		/** +		* Modify SQL query that fetches the total number of smilies in window mode +		* +		* @event core.generate_smilies_count_sql_before +		* @var int		forum_id	Forum where smilies are generated +		* @var array	sql_ary		Array with the SQL query +		* @since 3.2.9-RC1 +		*/ +		$vars = [ +			'forum_id', +			'sql_ary', +		]; +		extract($phpbb_dispatcher->trigger_event('core.generate_smilies_count_sql_before', compact($vars))); + +		$sql = $db->sql_build_query('SELECT', $sql_ary);  		$result = $db->sql_query($sql, 3600);  		$smiley_count = 0; @@ -114,6 +134,22 @@ function generate_smilies($mode, $forum_id)  	}  	$db->sql_freeresult($result); +	/** +	* Modify smilies before they are assigned to the template +	* +	* @event core.generate_smilies_modify_rowset +	* @var string	mode		Smiley mode, either window or inline +	* @var int		forum_id	Forum where smilies are generated +	* @var array	smilies		Smiley rows fetched from the database +	* @since 3.2.9-RC1 +	*/ +	$vars = [ +		'mode', +		'forum_id', +		'smilies', +	]; +	extract($phpbb_dispatcher->trigger_event('core.generate_smilies_modify_rowset', compact($vars))); +  	if (count($smilies))  	{  		$root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_path_helper->get_web_root_path(); @@ -978,6 +1014,30 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id  			AND u.user_id = p.poster_id',  	); +	/** +	* Event to modify the SQL query for topic reviews +	* +	* @event core.topic_review_modify_sql_ary +	* @var	int		topic_id			The topic ID that is being reviewed +	* @var	int		forum_id			The topic's forum ID +	* @var	string	mode				The topic review mode +	* @var	int		cur_post_id			Post offset ID +	* @var	bool	show_quote_button	Flag indicating if the quote button should be displayed +	* @var	array	post_list			Array with the post IDs +	* @var	array	sql_ary				Array with the SQL query +	* @since 3.2.8-RC1 +	*/ +	$vars = array( +		'topic_id', +		'forum_id', +		'mode', +		'cur_post_id', +		'show_quote_button', +		'post_list', +		'sql_ary', +	); +	extract($phpbb_dispatcher->trigger_event('core.topic_review_modify_sql_ary', compact($vars))); +  	$sql = $db->sql_build_query('SELECT', $sql_ary);  	$result = $db->sql_query($sql); @@ -1284,6 +1344,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $  				delete_topics('topic_id', array($topic_id), false);  				$phpbb_content_visibility->remove_topic_from_statistic($data, $sql_data); +				$config->increment('num_posts', -1, false);  				$update_sql = update_post_information('forum', $forum_id, true);  				if (count($update_sql)) @@ -2054,6 +2115,11 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data  				continue;  			} +			if (preg_match('/[\x{10000}-\x{10FFFF}]/u', $attach_row['attach_comment'])) +			{ +				trigger_error('ATTACH_COMMENT_NO_EMOJIS'); +			} +  			if (!$attach_row['is_orphan'])  			{  				// update entry in db if attachment already stored in db and filespace  | 
