Skip to content

Commit

Permalink
[ticket/10857] Adding information about items requiring a moderators …
Browse files Browse the repository at this point in the history
…attention

With thanks to RMcGirr83 for his Moderator Needed MOD.

PHPBB3-10857
  • Loading branch information
michaelcullum committed Apr 30, 2012
1 parent 2a92fee commit 56474da
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 3 deletions.
131 changes: 131 additions & 0 deletions phpBB/includes/functions_display.php
Expand Up @@ -1322,3 +1322,134 @@ function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $
$avatar_img .= $avatar;
return '<img src="' . (str_replace(' ', '%20', $avatar_img)) . '" width="' . $avatar_width . '" height="' . $avatar_height . '" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
}

/**
* Fetches the number of items which need a moderators attention
*/
public function mcp_quick_info()
{
global $auth, $cache, $db, $template, $user, $phpEx, $phpbb_root_path;

$allow = false;

// Check for approve and report permissions
if ($auth->acl_getf_global('m_approve') && $auth->acl_getf_global('m_report'))
{
$sql_where = ' WHERE (' . $db->sql_in_set('forum_id', get_forum_list('m_approve')) . ' or ' . $db->sql_in_set('forum_id', get_forum_list('m_report')) . ') AND (post_reported = 1 or post_approved = 0)';
$allow = true;
}
elseif ($auth->acl_getf_global('m_approve'))
{
$sql_where = ' WHERE ' . $db->sql_in_set('forum_id', get_forum_list('m_approve')) . ' AND post_approved = 0';
$allow = true;
}
elseif ($auth->acl_getf_global('m_report'))
{
$sql_where = ' WHERE ' . $db->sql_in_set('forum_id', get_forum_list('m_report')) . ' AND post_reported = 1';
$allow = true;
}

if ($allow)
{
$reported_posts_count = $unapproved_posts_count = $unapproved_topics_count = $reported_pms = 0;

// Topic Approval
if ($auth->acl_getf_global('m_approve'))
{
$sql = 'SELECT topic_first_post_id
FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('forum_id', get_forum_list('m_approve')) . ' AND topic_approved = 0';
$result = $db->sql_query($sql);

$unapproved_topics_array = array();
while ($row = $db->sql_fetchrow($result))
{
$unapproved_topics_array[] = (int) $row['topic_first_post_id'];
$unapproved_topics_count++;
}
$db->sql_freeresult($result);

if(sizeof($unapproved_topics_array))
{
$sql_where .= ' AND ' . $db->sql_in_set('post_id', $unapproved_topics_array, true);
}
}

// Reported Posts and Approved Posts
$sql = 'SELECT post_reported, post_approved
FROM ' . POSTS_TABLE .
$sql_where . ' OR (forum_id = 0 and post_reported = 1)';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
// count the reported posts
if ($row['post_reported'])
{
$reported_posts_count++;
}
// count the unapproved posts
if (!$row['post_approved'])
{
$unapproved_posts_count++;
}
}
$db->sql_freeresult($result);

// Lets use this data
if ($reported_posts_count || $unapproved_posts_count || $unapproved_topics_count)
{
$l_reported_posts_count = $reported_posts_count ? (($reported_posts_count == 1) ? $user->lang['MODERATOR_NEEDED_REPORTED_POST'] : $user->lang['MODERATOR_NEEDED_REPORTED_POSTS']) : '';
$total_reported_posts = sprintf($l_reported_posts_count, $reported_posts_count);
$l_unapproved_topics_count = $unapproved_topics_count ? (($unapproved_topics_count == 1) ? $user->lang['MODERATOR_NEEDED_APPROVE_TOPIC'] : $user->lang['MODERATOR_NEEDED_APPROVE_TOPICS']) : '';
$total_unapproved_topics = sprintf($l_unapproved_topics_count, $unapproved_topics_count);
$l_unapproved_posts_count = $unapproved_posts_count ? (($unapproved_posts_count == 1) ? $user->lang['MODERATOR_NEEDED_APPROVE_POST'] : $user->lang['MODERATOR_NEEDED_APPROVE_POSTS']) : '';
$total_unapproved_posts = sprintf($l_unapproved_posts_count, $unapproved_posts_count);

// And export variables to the template
$template->assign_vars(array(
'TOTAL_MODERATOR_REPORTS' => $total_reported_posts,
'TOTAL_MODERATOR_POSTS' => $total_unapproved_posts,
'TOTAL_MODERATOR_TOPICS' => $total_unapproved_topics,

'U_MODERATOR_REPORTS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=reports', true, $user->session_id),
'U_MODERATOR_APPROVE_POSTS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=unapproved_posts', true, $user->session_id),
'U_MODERATOR_APPROVE_TOPICS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=unapproved_topics', true, $user->session_id),
));
}
}

// Don't forget PMs
if ($auth->acl_getf_global('m_'))
{
$reported_pms = 0;

// Lets have a cache
if (($reported_pms = $cache->get('_reported_pms')) === false)
{
$sql = 'SELECT COUNT(msg_id) AS pms_count
FROM ' . PRIVMSGS_TABLE . '
WHERE message_reported = 1';
$result = $db->sql_query($sql);
$reported_pms = (int) $db->sql_fetchfield('pms_count');
$db->sql_freeresult($result);

// Cache for a few minutes to optimize. Might add to topics/posts later
$cache->put('_reported_pms', $reported_pms, 300);
}

// Dump to the template again
if ($reported_pms)
{
$l_reported_pms_count = $reported_pms ? (($reported_pms == 1) ? $user->lang['MODERATOR_NEEDED_REPORTED_PM'] : $user->lang['MODERATOR_NEEDED_REPORTED_PMS']) : '';
$total_reported_pms = sprintf($l_reported_pms_count, $reported_pms);

$template->assign_vars(array(
'TOTAL_MODERATOR_PMS' => $total_reported_pms,
'U_MODERATOR_PMS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=pm_reports&amp;mode=pm_reports', true, $user->session_id),
));
}
}

return;
}
1 change: 1 addition & 0 deletions phpBB/includes/mcp/mcp_pm_reports.php
Expand Up @@ -61,6 +61,7 @@ function main($id, $mode)
}

close_report($report_id_list, $mode, $action, true);
$cache->purge('_reported_pms');

break;
}
Expand Down
8 changes: 8 additions & 0 deletions phpBB/language/en/common.php
Expand Up @@ -358,6 +358,14 @@
'MINUTES' => 'Minutes',
'MODERATE' => 'Moderate',
'MODERATOR' => 'Moderator',
'MODERATOR_REPORTED_POST' => '<strong>%d</strong> Post is reported',
'MODERATOR_REPORTED_POSTS' => '<strong>%d</strong> Posts are reported',
'MODERATOR_APPROVE_POST' => '<strong>%d</strong> Post needs approval',
'MODERATOR_APPROVE_POSTS' => '<strong>%d</strong> Posts need approval',
'MODERATOR_APPROVE_TOPIC' => '<strong>%d</strong> Topic needs approval',
'MODERATOR_APPROVE_TOPICS' => '<strong>%d</strong> Topics need approval',
'MODERATOR_REPORTED_PM' => '<strong>%d</strong> PM is reported',
'MODERATOR_REPORTED_PMS' => '<strong>%d</strong> PMs are reported',
'MODERATORS' => 'Moderators',
'MONTH' => 'Month',
'MOVE' => 'Move',
Expand Down
2 changes: 1 addition & 1 deletion phpBB/styles/prosilver/template/index_body.html
@@ -1,7 +1,7 @@
<!-- INCLUDE overall_header.html -->

<p class="{S_CONTENT_FLOW_END}<!-- IF S_USER_LOGGED_IN --> rightside<!-- ENDIF -->"><!-- IF S_USER_LOGGED_IN -->{LAST_VISIT_DATE}<!-- ELSE -->{CURRENT_TIME}<!-- ENDIF --></p>
<!-- IF U_MCP --><p>{CURRENT_TIME} <br />[&nbsp;<a href="{U_MCP}">{L_MCP}</a>&nbsp;]</p><!-- ELSEIF S_USER_LOGGED_IN --><p>{CURRENT_TIME}</p><!-- ENDIF -->
<!-- IF U_MCP --><p>{CURRENT_TIME} <br />[&nbsp;<a href="{U_MCP}">{L_MCP}</a><!-- IF TOTAL_MODERATOR_REPORTS --> &bull; <a href="{U_MODERATOR_REPORTS}">{TOTAL_MODERATOR_REPORTS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_POSTS --> &bull; <a href="{U_MODERATOR_APPROVE_POSTS}">{TOTAL_MODERATOR_POSTS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_TOPICS --> &bull; <a href="{U_MODERATOR_APPROVE_TOPICS}">{TOTAL_MODERATOR_TOPICS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_PMS --> &bull; <a href="{U_MODERATOR_PMS}">{TOTAL_MODERATOR_PMS}</a><!-- ENDIF -->&nbsp;]</p><!-- ELSEIF S_USER_LOGGED_IN --><p>{CURRENT_TIME}</p><!-- ENDIF -->

<!-- IF S_DISPLAY_SEARCH or (S_USER_LOGGED_IN and not S_IS_BOT) -->
<ul class="linklist">
Expand Down
2 changes: 1 addition & 1 deletion phpBB/styles/prosilver/template/viewforum_body.html
@@ -1,5 +1,5 @@
<!-- INCLUDE overall_header.html -->
<!-- IF U_MCP --><p>[&nbsp;<a href="{U_MCP}">{L_MCP}</a>&nbsp;]</p><!-- ENDIF -->
<!-- IF U_MCP --><p>[&nbsp;<a href="{U_MCP}">{L_MCP}</a><!-- IF TOTAL_MODERATOR_REPORTS --> &bull; <a href="{U_MODERATOR_REPORTS}">{TOTAL_MODERATOR_REPORTS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_POSTS --> &bull; <a href="{U_MODERATOR_APPROVE_POSTS}">{TOTAL_MODERATOR_POSTS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_TOPICS --> &bull; <a href="{U_MODERATOR_APPROVE_TOPICS}">{TOTAL_MODERATOR_TOPICS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_PMS --> &bull; <a href="{U_MODERATOR_PMS}">{TOTAL_MODERATOR_PMS}</a><!-- ENDIF -->&nbsp;]</p><!-- ENDIF -->
<h2><a href="{U_VIEW_FORUM}">{FORUM_NAME}</a></h2>

<!-- IF FORUM_DESC or MODERATORS or U_MCP -->
Expand Down
2 changes: 1 addition & 1 deletion phpBB/styles/prosilver/template/viewtopic_body.html
@@ -1,5 +1,5 @@
<!-- INCLUDE overall_header.html -->
<!-- IF U_MCP --><p>[&nbsp;<a href="{U_MCP}">{L_MCP}</a>&nbsp;]</p><!-- ENDIF -->
<!-- IF U_MCP --><p>[&nbsp;<a href="{U_MCP}">{L_MCP}</a><!-- IF TOTAL_MODERATOR_REPORTS --> &bull; <a href="{U_MODERATOR_REPORTS}">{TOTAL_MODERATOR_REPORTS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_POSTS --> &bull; <a href="{U_MODERATOR_APPROVE_POSTS}">{TOTAL_MODERATOR_POSTS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_TOPICS --> &bull; <a href="{U_MODERATOR_APPROVE_TOPICS}">{TOTAL_MODERATOR_TOPICS}</a><!-- ENDIF --><!-- IF TOTAL_MODERATOR_PMS --> &bull; <a href="{U_MODERATOR_PMS}">{TOTAL_MODERATOR_PMS}</a><!-- ENDIF -->&nbsp;]</p><!-- ENDIF -->
<h2><a href="{U_VIEW_TOPIC}">{TOPIC_TITLE}</a></h2>
<!-- NOTE: remove the style="display: none" when you want to have the forum description on the topic body -->
<!-- IF FORUM_DESC --><div style="display: none !important;">{FORUM_DESC}<br /></div><!-- ENDIF -->
Expand Down

0 comments on commit 56474da

Please sign in to comment.