diff options
Diffstat (limited to 'phpBB/includes/functions_mcp.php')
| -rw-r--r-- | phpBB/includes/functions_mcp.php | 54 | 
1 files changed, 52 insertions, 2 deletions
| diff --git a/phpBB/includes/functions_mcp.php b/phpBB/includes/functions_mcp.php index 811d49f1de..ed96dcf338 100644 --- a/phpBB/includes/functions_mcp.php +++ b/phpBB/includes/functions_mcp.php @@ -368,7 +368,7 @@ function phpbb_get_pm_data($pm_ids)  */  function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, &$sort_order_sql, &$total, $forum_id = 0, $topic_id = 0, $where_sql = 'WHERE')  { -	global $db, $user, $auth, $template; +	global $db, $user, $auth, $template, $phpbb_dispatcher;  	$sort_days = request_var('st', 0);  	$min_time = ($sort_days) ? time() - ($sort_days * 86400) : 0; @@ -553,6 +553,56 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by  			break;  	} +	// Default total to -1 to allow editing by the event +	$total = -1; + +	/** +	* This event allows you to control the SQL query used to get the total number +	* of reports the user can access. +	* +	* This total is used for the pagination and for displaying the total number +	* of reports to the user +	* +	* +	* @event core.mcp_sorting_query_before +	* @var	string	sql					The current SQL search string +	* @var	string	mode				An id related to the module(s) the user is viewing +	* @var	string	type				Which kind of information is this being used for displaying. Posts, topics, etc... +	* @var	int		forum_id			The forum id of the posts the user is trying to access, if not 0 +	* @var	int		topic_id			The topic id of the posts the user is trying to access, if not 0 +	* @var	int		sort_days			The max age of the oldest report to be shown, in days +	* @var	string	sort_key			The way the user has decided to sort the data. +	*									The valid values must be in the keys of the sort_by_* variables +	* @var	string	sort_dir			Either 'd' for "DESC" or 'a' for 'ASC' in the SQL query +	* @var	int		limit_days			The possible max ages of the oldest report for the user to choose, in days. +	* @var	array	sort_by_sql			SQL text (values) for the possible names of the ways of sorting data (keys). +	* @var	array	sort_by_text		Language text (values) for the possible names of the ways of sorting data (keys). +	* @var	int		min_time			Integer with the minimum post time that the user is searching for +	* @var	int		limit_time_sql		Time limiting options used in the SQL query. +	* @var	int		total				The total number of reports that exist. Only set if you want to override the result +	* @var	string	where_sql			Extra information included in the WHERE clause. It must end with "WHERE" or "AND" or "OR". +	*									Set to "WHERE" and set total above -1 to override the total value +	* @since 3.1.4-RC1 +	*/ +	$vars = array( +		'sql', +		'mode', +		'type', +		'forum_id', +		'topic_id', +		'sort_days', +		'sort_key', +		'sort_dir', +		'limit_days', +		'sort_by_sql', +		'sort_by_text', +		'min_time', +		'limit_time_sql', +		'total', +		'where_sql', +	); +	extract($phpbb_dispatcher->trigger_event('core.mcp_sorting_query_before', compact($vars))); +  	if (!isset($sort_by_sql[$sort_key]))  	{  		$sort_key = $default_key; @@ -584,7 +634,7 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by  		$total = (int) $db->sql_fetchfield('total');  		$db->sql_freeresult($result);  	} -	else +	else if ($total < -1)  	{  		$total = -1;  	} | 
