phpBB

Code Changes

File: includes/functions_mcp.php

  Unmodified   Added   Modified   Removed
Line 301Line 301
		WHERE " . $db->sql_in_set('f.forum_id', $forum_id);
$result = $db->sql_query($sql);


		WHERE " . $db->sql_in_set('f.forum_id', $forum_id);
$result = $db->sql_query($sql);


 
	/* @var $phpbb_content_visibility \phpbb\content_visibility */

	$phpbb_content_visibility = $phpbb_container->get('content.visibility');

while ($row = $db->sql_fetchrow($result))

	$phpbb_content_visibility = $phpbb_container->get('content.visibility');

while ($row = $db->sql_fetchrow($result))

Line 366Line 367
* $mode reports and reports_closed: the $where parameters uses aliases p for posts table and r for report table
* $mode unapproved_posts: the $where parameters uses aliases p for posts table and t for topic table
*/

* $mode reports and reports_closed: the $where parameters uses aliases p for posts table and r for report table
* $mode unapproved_posts: the $where parameters uses aliases p for posts table and t for topic table
*/

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')

function phpbb_mcp_sorting($mode, &$sort_days_val, &$sort_key_val, &$sort_dir_val, &$sort_by_sql_ary, &$sort_order_sql, &$total_val, $forum_id = 0, $topic_id = 0, $where_sql = 'WHERE')

{

{

	global $db, $user, $auth, $template;

	global $db, $user, $auth, $template, $request, $phpbb_dispatcher;





	$sort_days = request_var('st', 0);
$min_time = ($sort_days) ? time() - ($sort_days * 86400) : 0;

	$sort_days_val = $request->variable('st', 0);
$min_time = ($sort_days_val) ? time() - ($sort_days_val * 86400) : 0;


switch ($mode)
{


switch ($mode)
{

Line 388Line 389

if (!$auth->acl_get('m_approve', $forum_id))
{


if (!$auth->acl_get('m_approve', $forum_id))
{

				$sql .= 'AND topic_visibility = ' . ITEM_APPROVED;

				$sql .= ' AND topic_visibility = ' . ITEM_APPROVED;

			}
break;


			}
break;


Line 404Line 405

if (!$auth->acl_get('m_approve', $forum_id))
{


if (!$auth->acl_get('m_approve', $forum_id))
{

				$sql .= 'AND post_visibility = ' . ITEM_APPROVED;

				$sql .= ' AND post_visibility = ' . ITEM_APPROVED;

			}
break;


			}
break;


Line 511Line 512
			break;
}


			break;
}


	$sort_key = request_var('sk', $default_key);
$sort_dir = request_var('sd', $default_dir);

	$sort_key_val = $request->variable('sk', $default_key);
$sort_dir_val = $request->variable('sd', $default_dir);

	$sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);

switch ($type)

	$sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);

switch ($type)

Line 521Line 522
			$limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'tt' => $user->lang['TOPIC_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']);


			$limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'tt' => $user->lang['TOPIC_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']);


			$sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => array('t.topic_last_post_time', 't.topic_last_post_id'), 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts_approved + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts_approved'), 's' => 't.topic_title', 'v' => 't.topic_views');

			$sort_by_sql_ary = array('a' => 't.topic_first_poster_name', 't' => array('t.topic_last_post_time', 't.topic_last_post_id'), 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts_approved + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts_approved'), 's' => 't.topic_title', 'v' => 't.topic_views');

			$limit_time_sql = ($min_time) ? "AND t.topic_last_post_time >= $min_time" : '';
break;

case 'posts':
$limit_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);

			$limit_time_sql = ($min_time) ? "AND t.topic_last_post_time >= $min_time" : '';
break;

case 'posts':
$limit_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);

			$sort_by_sql = array('a' => 'u.username_clean', 't' => array('p.post_time', 'p.post_id'), 's' => 'p.post_subject');

			$sort_by_sql_ary = array('a' => 'u.username_clean', 't' => array('p.post_time', 'p.post_id'), 's' => 'p.post_subject');

			$limit_time_sql = ($min_time) ? "AND p.post_time >= $min_time" : '';
break;

case 'reports':
$limit_days = array(0 => $user->lang['ALL_REPORTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 'r' => $user->lang['REPORTER'], 'p' => $user->lang['POST_TIME'], 't' => $user->lang['REPORT_TIME'], 's' => $user->lang['SUBJECT']);

			$limit_time_sql = ($min_time) ? "AND p.post_time >= $min_time" : '';
break;

case 'reports':
$limit_days = array(0 => $user->lang['ALL_REPORTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 'r' => $user->lang['REPORTER'], 'p' => $user->lang['POST_TIME'], 't' => $user->lang['REPORT_TIME'], 's' => $user->lang['SUBJECT']);

			$sort_by_sql = array('a' => 'u.username_clean', 'r' => 'ru.username', 'p' => array('p.post_time', 'p.post_id'), 't' => 'r.report_time', 's' => 'p.post_subject');

			$sort_by_sql_ary = array('a' => 'u.username_clean', 'r' => 'ru.username', 'p' => array('p.post_time', 'p.post_id'), 't' => 'r.report_time', 's' => 'p.post_subject');

			break;

case 'pm_reports':
$limit_days = array(0 => $user->lang['ALL_REPORTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 'r' => $user->lang['REPORTER'], 'p' => $user->lang['POST_TIME'], 't' => $user->lang['REPORT_TIME'], 's' => $user->lang['SUBJECT']);

			break;

case 'pm_reports':
$limit_days = array(0 => $user->lang['ALL_REPORTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 'r' => $user->lang['REPORTER'], 'p' => $user->lang['POST_TIME'], 't' => $user->lang['REPORT_TIME'], 's' => $user->lang['SUBJECT']);

			$sort_by_sql = array('a' => 'u.username_clean', 'r' => 'ru.username', 'p' => 'p.message_time', 't' => 'r.report_time', 's' => 'p.message_subject');

			$sort_by_sql_ary = array('a' => 'u.username_clean', 'r' => 'ru.username', 'p' => 'p.message_time', 't' => 'r.report_time', 's' => 'p.message_subject');

			break;

case 'logs':
$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('u' => $user->lang['SORT_USERNAME'], 't' => $user->lang['SORT_DATE'], 'i' => $user->lang['SORT_IP'], 'o' => $user->lang['SORT_ACTION']);


			break;

case 'logs':
$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('u' => $user->lang['SORT_USERNAME'], 't' => $user->lang['SORT_DATE'], 'i' => $user->lang['SORT_IP'], 'o' => $user->lang['SORT_ACTION']);


			$sort_by_sql = array('u' => 'u.username_clean', 't' => 'l.log_time', 'i' => 'l.log_ip', 'o' => 'l.log_operation');

			$sort_by_sql_ary = array('u' => 'u.username_clean', 't' => 'l.log_time', 'i' => 'l.log_ip', 'o' => 'l.log_operation');

			$limit_time_sql = ($min_time) ? "AND l.log_time >= $min_time" : '';
break;
}


			$limit_time_sql = ($min_time) ? "AND l.log_time >= $min_time" : '';
break;
}


	if (!isset($sort_by_sql[$sort_key]))


































































	// Default total to -1 to allow editing by the event
$total_val = -1;

$sort_by_sql = $sort_by_sql_ary;
$sort_days = $sort_days_val;
$sort_dir = $sort_dir_val;
$sort_key = $sort_key_val;
$total = $total_val;
/**
* 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)));
$sort_by_sql_ary = $sort_by_sql;
$sort_days_val = $sort_days;
$sort_key_val = $sort_key;
$sort_dir_val = $sort_dir;
$total_val = $total;
unset($sort_by_sql);
unset($sort_days);
unset($sort_key);
unset($sort_dir);
unset($total);

if (!isset($sort_by_sql_ary[$sort_key_val]))

	{

	{

		$sort_key = $default_key;

		$sort_key_val = $default_key;

	}


	}


	$direction = ($sort_dir == 'd') ? 'DESC' : 'ASC';

	$direction = ($sort_dir_val == 'd') ? 'DESC' : 'ASC';





	if (is_array($sort_by_sql[$sort_key]))

	if (is_array($sort_by_sql_ary[$sort_key_val]))

	{

	{

		$sort_order_sql = implode(' ' . $direction . ', ', $sort_by_sql[$sort_key]) . ' ' . $direction;

		$sort_order_sql = implode(' ' . $direction . ', ', $sort_by_sql_ary[$sort_key_val]) . ' ' . $direction;

	}
else
{

	}
else
{

		$sort_order_sql = $sort_by_sql[$sort_key] . ' ' . $direction;

		$sort_order_sql = $sort_by_sql_ary[$sort_key_val] . ' ' . $direction;

	}

$s_limit_days = $s_sort_key = $s_sort_dir = $sort_url = '';

	}

$s_limit_days = $s_sort_key = $s_sort_dir = $sort_url = '';

	gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $sort_url);

	gen_sort_selects($limit_days, $sort_by_text, $sort_days_val, $sort_key_val, $sort_dir_val, $s_limit_days, $s_sort_key, $s_sort_dir, $sort_url);


$template->assign_vars(array(
'S_SELECT_SORT_DIR' => $s_sort_dir,


$template->assign_vars(array(
'S_SELECT_SORT_DIR' => $s_sort_dir,

Line 578Line 644
			'S_SELECT_SORT_DAYS'	=> $s_limit_days)
);


			'S_SELECT_SORT_DAYS'	=> $s_limit_days)
);


	if (($sort_days && $mode != 'viewlogs') || in_array($mode, array('reports', 'unapproved_topics', 'unapproved_posts', 'deleted_topics', 'deleted_posts')) || $where_sql != 'WHERE')

	if (($sort_days_val && $mode != 'viewlogs') || in_array($mode, array('reports', 'unapproved_topics', 'unapproved_posts', 'deleted_topics', 'deleted_posts')) || $where_sql != 'WHERE')

	{
$result = $db->sql_query($sql);

	{
$result = $db->sql_query($sql);

		$total = (int) $db->sql_fetchfield('total');

		$total_val = (int) $db->sql_fetchfield('total');

		$db->sql_freeresult($result);
}

		$db->sql_freeresult($result);
}

	else

	else if ($total_val < -1)

	{

	{

		$total = -1;

		$total_val = -1;

	}
}


	}
}