diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index a81c6d919c..2e81cb13ce 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -215,7 +215,7 @@
[Feature] Add option to disable remote upload avatars (Bug #45375 - Patch by nickvergessen)
[Feature] Ability to delete warnings and keep warnings permanently (Bug #43375 - Patch by nickvergessen)
[Feature] Ability to empty a user's outbox from the user ACP quick tools.
- [Feature] Ability to filter ACP logs
+ [Feature] Ability to filter ACP / MCP logs
1.ii. Changes since 3.0.4
diff --git a/phpBB/includes/acp/acp_logs.php b/phpBB/includes/acp/acp_logs.php
index c44592a23c..f13979ec0f 100644
--- a/phpBB/includes/acp/acp_logs.php
+++ b/phpBB/includes/acp/acp_logs.php
@@ -158,8 +158,12 @@ class acp_logs
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
+ if (empty($row['log_operation']))
+ {
+ continue;
+ }
$selected = ($log_operation == $row['log_operation']) ? ' selected="selected"' : '';
- $s_lang_keys .= '';
+ $s_lang_keys .= '';
}
$db->sql_freeresult($result);
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index dd6378a2b5..ff7f687945 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -2499,7 +2499,8 @@ function view_log($mode, &$log, &$log_count, $limit = 0, $offset = 0, $forum_id
$sql = 'SELECT COUNT(l.log_id) AS total_entries
FROM ' . LOG_TABLE . " l
WHERE l.log_type = $log_type
- AND l.log_time >= $limit_days
+ AND l.log_time >= $limit_days " .
+ (!empty($log_operation) ? "AND l.log_operation = '" . $db->sql_escape($log_operation) . "'" : '') . "
$sql_forum";
$result = $db->sql_query($sql);
$log_count = (int) $db->sql_fetchfield('total_entries');
diff --git a/phpBB/includes/mcp/mcp_logs.php b/phpBB/includes/mcp/mcp_logs.php
index a6b1935c88..b83e364811 100644
--- a/phpBB/includes/mcp/mcp_logs.php
+++ b/phpBB/includes/mcp/mcp_logs.php
@@ -164,10 +164,43 @@ class mcp_logs
$sql_where = ($sort_days) ? (time() - ($sort_days * 86400)) : 0;
$sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
+ $log_operation = request_var('log_operation', '');
+ $s_lang_keys = '';
+
+ if ($topic_id)
+ {
+ $sql_forum = 'AND topic_id = ' . intval($topic_id);
+ }
+ else if (is_array($forum_id))
+ {
+ $sql_forum = 'AND ' . $db->sql_in_set('forum_id', array_map('intval', $forum_id));
+ }
+ else
+ {
+ $sql_forum = ($forum_id) ? 'AND forum_id = ' . intval($forum_id) : '';
+ }
+
+ $sql = "SELECT DISTINCT log_operation
+ FROM " . LOG_TABLE . '
+ WHERE log_type = ' . LOG_MOD . '
+ ' . (($limit_days) ? "AND log_time >= $sql_where " : ' ') .
+ $sql_forum;
+ $result = $db->sql_query($sql);
+ while ($row = $db->sql_fetchrow($result))
+ {
+ if (empty($row['log_operation']))
+ {
+ continue;
+ }
+ $selected = ($log_operation == $row['log_operation']) ? ' selected="selected"' : '';
+ $s_lang_keys .= '';
+ }
+ $db->sql_freeresult($result);
+
// Grab log data
$log_data = array();
$log_count = 0;
- view_log('mod', $log_data, $log_count, $config['topics_per_page'], $start, $forum_list, $topic_id, 0, $sql_where, $sql_sort);
+ view_log('mod', $log_data, $log_count, $config['topics_per_page'], $start, $forum_list, $topic_id, 0, $sql_where, $sql_sort, $log_operation);
$template->assign_vars(array(
'PAGE_NUMBER' => on_page($log_count, $config['topics_per_page'], $start),
@@ -181,6 +214,7 @@ class mcp_logs
'S_SELECT_SORT_DIR' => $s_sort_dir,
'S_SELECT_SORT_KEY' => $s_sort_key,
'S_SELECT_SORT_DAYS' => $s_limit_days,
+ 'S_LANG_KEYS' => $s_lang_keys,
'S_LOGS' => ($log_count > 0),
)
);
diff --git a/phpBB/includes/mcp/mcp_notes.php b/phpBB/includes/mcp/mcp_notes.php
index 7480b24a46..d07874524a 100644
--- a/phpBB/includes/mcp/mcp_notes.php
+++ b/phpBB/includes/mcp/mcp_notes.php
@@ -193,9 +193,28 @@ class mcp_notes
$sql_where = ($st) ? (time() - ($st * 86400)) : 0;
$sql_sort = $sort_by_sql[$sk] . ' ' . (($sd == 'd') ? 'DESC' : 'ASC');
+ $log_operation = request_var('log_operation', '');
+ $s_lang_keys = '';
+
+ $sql = "SELECT DISTINCT log_operation
+ FROM " . LOG_TABLE . '
+ WHERE log_type = ' . LOG_USERS .
+ (($limit_days) ? " AND log_time >= $sql_where" : '');
+ $result = $db->sql_query($sql);
+ while ($row = $db->sql_fetchrow($result))
+ {
+ if (empty($row['log_operation']))
+ {
+ continue;
+ }
+ $selected = ($log_operation == $row['log_operation']) ? ' selected="selected"' : '';
+ $s_lang_keys .= '';
+ }
+ $db->sql_freeresult($result);
+
$log_data = array();
$log_count = 0;
- view_log('user', $log_data, $log_count, $config['posts_per_page'], $start, 0, 0, $user_id, $sql_where, $sql_sort);
+ view_log('user', $log_data, $log_count, $config['posts_per_page'], $start, 0, 0, $user_id, $sql_where, $sql_sort, $log_operation);
if ($log_count)
{
@@ -219,6 +238,7 @@ class mcp_notes
'S_SELECT_SORT_DIR' => $s_sort_dir,
'S_SELECT_SORT_KEY' => $s_sort_key,
'S_SELECT_SORT_DAYS' => $s_limit_days,
+ 'S_LANG_KEYS' => $s_lang_keys,
'L_TITLE' => $user->lang['MCP_NOTES_USER'],
diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php
index b1d722a006..55eadc8341 100644
--- a/phpBB/language/en/acp/common.php
+++ b/phpBB/language/en/acp/common.php
@@ -281,6 +281,8 @@ $lang = array_merge($lang, array(
'SETTING_TOO_LONG' => 'The entered value for the setting ā%1$sā is too long. The maximal allowed length is %2$d.',
'SETTING_TOO_SHORT' => 'The entered value for the setting ā%1$sā is not long enough. The minimal allowed length is %2$d.',
+ 'SHOW_ALL_OPERATIONS' => 'Show all operations',
+
'UCP' => 'User Control Panel',
'USERNAMES_EXPLAIN' => 'Place each username on a separate line.',
'USER_CONTROL_PANEL' => 'User Control Panel',
diff --git a/phpBB/styles/prosilver/template/mcp_logs.html b/phpBB/styles/prosilver/template/mcp_logs.html
index bf1e867be3..ef2b4f4ab6 100644
--- a/phpBB/styles/prosilver/template/mcp_logs.html
+++ b/phpBB/styles/prosilver/template/mcp_logs.html
@@ -8,6 +8,9 @@