[ticket/13142] Place the event in the most meaningful place

The event now has nearly all variables and it is in the place where it can
most influence this method's outcome without requiring the extension
to re-process phpBB's code.

PHPBB3-13142
This commit is contained in:
brunoais 2015-02-26 13:07:35 +00:00
parent 3e451cbe75
commit ec855f1817

View file

@ -553,6 +553,54 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by
break; break;
} }
/**
* 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])) if (!isset($sort_by_sql[$sort_key]))
{ {
$sort_key = $default_key; $sort_key = $default_key;
@ -584,7 +632,7 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by
$total = (int) $db->sql_fetchfield('total'); $total = (int) $db->sql_fetchfield('total');
$db->sql_freeresult($result); $db->sql_freeresult($result);
} }
else else if ( $total < -1)
{ {
$total = -1; $total = -1;
} }