[ticket/16558] Improve viewonline page

Pages that are not handled by viewonline now shown as "Unrecognised Page"
Admins see the URI of session table page

PHPBB3-16558
This commit is contained in:
v12mike 2020-07-28 19:10:07 -04:00
parent 65065bf315
commit aa3472ce76
2 changed files with 61 additions and 5 deletions

View file

@ -835,6 +835,7 @@ $lang = array_merge($lang, array(
'UNREAD_MESSAGES' => 'Unread messages', 'UNREAD_MESSAGES' => 'Unread messages',
'UNREAD_POST' => 'Unread post', 'UNREAD_POST' => 'Unread post',
'UNREAD_POSTS' => 'Unread posts', 'UNREAD_POSTS' => 'Unread posts',
'UNRECOGNISED_PAGE' => 'Unrecognised page',
'UNWATCH_FORUM_CONFIRM' => 'Are you sure you wish to unsubscribe from this forum?', 'UNWATCH_FORUM_CONFIRM' => 'Are you sure you wish to unsubscribe from this forum?',
'UNWATCH_FORUM_DETAILED' => 'Are you sure you wish to unsubscribe from the forum “%s”?', 'UNWATCH_FORUM_DETAILED' => 'Are you sure you wish to unsubscribe from the forum “%s”?',
'UNWATCH_TOPIC_CONFIRM' => 'Are you sure you wish to unsubscribe from this topic?', 'UNWATCH_TOPIC_CONFIRM' => 'Are you sure you wish to unsubscribe from this topic?',

View file

@ -263,6 +263,55 @@ while ($row = $db->sql_fetchrow($result))
case 'viewtopic': case 'viewtopic':
$forum_id = $row['session_forum_id']; $forum_id = $row['session_forum_id'];
if (!$forum_id)
{
$array_match_index = 5;
// find the forum_id from the page URI
$matches = array();
$pattern = '#(viewtopic|posting)\.' . $phpEx . '((\?|&)\w+=\w+)*(\?|&)';
preg_match($pattern . 'f=(\d+)#', $row['session_page'], $matches, PREG_UNMATCHED_AS_NULL);
if ($matches[$array_match_index])
{
$forum_id = (int) $matches[$array_match_index];
}
else
{
preg_match($pattern . 't=(\d+)#', $row['session_page'], $matches, PREG_UNMATCHED_AS_NULL);
if ($matches[$array_match_index])
{
$topic_id = $matches[$array_match_index];
$sql = 'SELECT forum_id
FROM ' . TOPICS_TABLE . "
WHERE topic_id = $topic_id";
$db->sql_query($sql);
$forum_id = (int) $db->sql_fetchfield('forum_id');
}
else
{
preg_match($pattern . 'p=(\d+)#', $row['session_page'], $matches, PREG_UNMATCHED_AS_NULL);
if ($matches[$array_match_index])
{
$post_id = $matches[$array_match_index];
$topic_forum = array();
$sql = 'SELECT t.forum_id
FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
WHERE p.post_id = ' . $post_id . '
AND t.topic_id = p.topic_id';
$db->sql_query($sql);
$forum_id = (int) $db->sql_fetchfield('forum_id');
}
else
{
$forum_id = 0;
}
}
}
}
if ($forum_id && $auth->acl_get('f_list', $forum_id)) if ($forum_id && $auth->acl_get('f_list', $forum_id))
{ {
$location = ''; $location = '';
@ -304,7 +353,7 @@ while ($row = $db->sql_fetchrow($result))
} }
else else
{ {
$location = $user->lang['INDEX']; $location = $user->lang['UNRECOGNISED_PAGE'];
$location_url = append_sid("{$phpbb_root_path}index.$phpEx"); $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
} }
break; break;
@ -377,17 +426,23 @@ while ($row = $db->sql_fetchrow($result))
break; break;
default: default:
$location = $user->lang['INDEX'];
$location_url = append_sid("{$phpbb_root_path}index.$phpEx");
if ($row['session_page'] === 'app.' . $phpEx . '/help/faq' || if ($row['session_page'] === 'app.' . $phpEx . '/help/faq' ||
$row['session_page'] === 'app.' . $phpEx . '/help/bbcode') $row['session_page'] === 'app.' . $phpEx . '/help/bbcode')
{ {
$location = $user->lang['VIEWING_FAQ']; $location = $user->lang['VIEWING_FAQ'];
$location_url = $controller_helper->route('phpbb_help_faq_controller'); $location_url = $controller_helper->route('phpbb_help_faq_controller');
} }
else
{
$location = $user->lang['UNRECOGNISED_PAGE'];
$location_url = append_sid("{$phpbb_root_path}index.$phpEx");
}
break; break;
} }
if ($auth->acl_get('a_'))
{
$location .= '<br>' . substr($row['session_page'], 0, 99);
}
/** /**
* Overwrite the location's name and URL, which are displayed in the list * Overwrite the location's name and URL, which are displayed in the list
@ -405,7 +460,7 @@ while ($row = $db->sql_fetchrow($result))
extract($phpbb_dispatcher->trigger_event('core.viewonline_overwrite_location', compact($vars))); extract($phpbb_dispatcher->trigger_event('core.viewonline_overwrite_location', compact($vars)));
$template_row = array( $template_row = array(
'USERNAME' => $row['username'], 'USERNAME' => $row['username'],
'USERNAME_COLOUR' => $row['user_colour'], 'USERNAME_COLOUR' => $row['user_colour'],
'USERNAME_FULL' => $username_full, 'USERNAME_FULL' => $username_full,
'LASTUPDATE' => $user->format_date($row['session_time']), 'LASTUPDATE' => $user->format_date($row['session_time']),