Skip to content

Commit

Permalink
Implements #430 Moderation Notifications
Browse files Browse the repository at this point in the history
  • Loading branch information
Omar Gonzalez committed Jul 19, 2014
1 parent 6b293f0 commit c3b0f7f
Show file tree
Hide file tree
Showing 14 changed files with 185 additions and 8 deletions.
11 changes: 9 additions & 2 deletions admin/modules/home/index.php
Expand Up @@ -191,8 +191,15 @@
$users = my_number_format($db->fetch_field($query, "numusers"));

// Get the number of users awaiting validation
$query = $db->simple_select("users", "COUNT(uid) AS awaitingusers", "usergroup='5'");
$awaitingusers = my_number_format($db->fetch_field($query, "awaitingusers"));
$awaitingusers = $cache->read('awaitingactivation');
if(empty($awaitingusers))
{
$awaitingusers = 0;
}
else
{
$awaitingusers = my_number_format($awaitingusers);
}

// Get the number of new users for today
$timecut = TIME_NOW - 86400;
Expand Down
15 changes: 14 additions & 1 deletion editpost.php
Expand Up @@ -14,7 +14,7 @@
$templatelist = "editpost,previewpost,changeuserbox,codebuttons,smilieinsert,smilieinsert_getmore,smilieinsert_smilie,smilieinsert_smilie_empty,post_attachments_attachment_postinsert,post_attachments_attachment_mod_unapprove";
$templatelist .= ",editpost_delete,error_attacherror,forumdisplay_password_wrongpass,forumdisplay_password,editpost_reason,post_attachments_attachment_remove,post_attachments_update,postbit_author_guest,post_subscription_method";
$templatelist .= ",posticons_icon,post_prefixselect_prefix,post_prefixselect_single,newthread_postpoll,editpost_disablesmilies,post_attachments_attachment_mod_approve,post_attachments_attachment_unapproved,post_attachments_new";
$templatelist .= ",postbit_warninglevel_formatted,postbit_reputation_formatted_link,editpost_disablesmilies_hidden,attachment_icon,post_attachments_attachment,post_attachments_add,post_attachments,posticons";
$templatelist .= ",postbit_warninglevel_formatted,postbit_reputation_formatted_link,editpost_disablesmilies_hidden,attachment_icon,post_attachments_attachment,post_attachments_add,post_attachments,posticons,global_moderation_notice";

require_once "./global.php";
require_once MYBB_ROOT."inc/functions_post.php";
Expand Down Expand Up @@ -890,6 +890,19 @@
eval("\$disablesmilies = \"".$templates->get("editpost_disablesmilies_hidden")."\";");
}

$moderation_notice = '';
if($forumpermissions['modattachments'] == 1 && $forumpermissions['canpostattachments'] != 0)
{
$moderation_text = $lang->moderation_forum_attachments;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

if($forumpermissions['mod_edit_posts'] == 1)
{
$moderation_text = $lang->moderation_forum_edits;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

$plugins->run_hooks("editpost_end");

$forum['name'] = strip_tags($forum['name']);
Expand Down
26 changes: 26 additions & 0 deletions global.php
Expand Up @@ -678,6 +678,32 @@
}
eval('$pm_notice = "'.$templates->get('global_pm_alert').'";');
}
$cache->update('awaitingactivation', 50);
if($mybb->usergroup['cancp'] == 1)
{
$awaitingusers = $cache->read('awaitingactivation');
if(empty($awaitingusers))
{
$awaitingusers = 0;
}
else
{
$awaitingusers = my_number_format($awaitingusers);
}

if($awaitingusers > 0)
{
if($awaitingusers == 1)
{
$awaiting_message = $lang->awaiting_message_single;
}
else
{
$awaiting_message = $lang->sprintf($lang->awaiting_message_plural, $awaitingusers);
}
eval('$awaitingusers = "'.$templates->get('global_awaiting_activation').'";');
}
}

// Set up some of the default templates
eval('$headerinclude = "'.$templates->get('headerinclude').'";');
Expand Down
14 changes: 14 additions & 0 deletions inc/class_datacache.php
Expand Up @@ -783,6 +783,20 @@ function sort_moderators_by_usernames($a, $b)
$this->update("moderators", $this->built_moderators);
}

/**
* Update the users awaiting activation cache.
*
*/
function update_awaitingactivation()
{
global $db;

$query = $db->simple_select('users', 'COUNT(uid) AS awaitingusers', 'usergroup=\'5\'');
$awaitingusers = (int)$db->fetch_field($query, 'awaitingusers');

$this->update('awaitingactivation', $awaitingusers);
}

/**
* Build the moderators array
*
Expand Down
12 changes: 12 additions & 0 deletions inc/datahandlers/user.php
Expand Up @@ -1150,6 +1150,11 @@ function insert_user()
// Update forum stats
update_stats(array('numusers' => '+1'));

if(intval($user['usergroup']) == 5)
{
$cache->update_awaitingactivation();
}

$this->return_values = array(
"uid" => $this->uid,
"username" => $user['username'],
Expand Down Expand Up @@ -1355,6 +1360,11 @@ function update_user()
$cache->update_birthdays();
}

if(isset($user['usergroup']) && intval($user['usergroup']) == 5)
{
$cache->update_awaitingactivation();
}

// Maybe some userfields need to be updated?
if(isset($user['user_fields']) && is_array($user['user_fields']))
{
Expand Down Expand Up @@ -1544,6 +1554,8 @@ function delete_user($delete_uids, $prunecontent=0)
// Update reports cache
$cache->update_reportedcontent();

$cache->update_awaitingactivation();

$plugins->run_hooks("datahandler_user_delete_end", $this);

return $this->return_values;
Expand Down
9 changes: 9 additions & 0 deletions inc/languages/english/global.lang.php
Expand Up @@ -524,4 +524,13 @@
$l['november'] = "November";
$l['december'] = "December";

$l['moderation_forum_attachments'] = "Please note that new attachments in this forum must be approved by a moderator before becoming visible.";
$l['moderation_forum_posts'] = "Please note that new posts in this forum must be approved by a moderator before becoming visible.";
$l['moderation_user_posts'] = "Please note that new posts you make must be approved by a moderator before becoming visible.";
$l['moderation_forum_thread'] = "Please note that new threads in this forum must be approved by a moderator before becoming visible.";
$l['moderation_forum_edits'] = "Please note that edited posts in this forum must be approved by a moderator before becoming visible.";
$l['moderation_forum_edits_quick'] = "Please note edited posts in this forum must be approved by a moderator before becoming visible.";
$l['awaiting_message_single'] = "There is 1 account awaiting activation. Please go to your ACP to activate the users.";
$l['awaiting_message_plural'] = "There is {1} accounts awaiting activation. Please go to your ACP to activate the users.";

?>
5 changes: 5 additions & 0 deletions inc/languages/english/newreply.lang.php
Expand Up @@ -44,4 +44,9 @@
$l['redirect_newreplyerror'] = "Sorry, but your reply has been rejected for lack of content. <br />You will now be returned to the thread.";
$l['redirect_threadclosed'] = "You cannot post replies in this thread because it has been closed by a moderator.";
$l['error_post_noperms'] = "You don't have permission to edit this draft.";
$l['error_suspendedposting'] = "Your posting privileges are currently suspended {1}.<br /><br />
Suspension Date: {2}";
$l['error_suspendedposting_temporal'] = "until {1}";
$l['error_suspendedposting_permanent'] = "permanently";
?>
5 changes: 5 additions & 0 deletions inc/languages/english/newthread.lang.php
Expand Up @@ -45,4 +45,9 @@
$l['redirect_newthread_moderation'] = "<br />The administrator has specified that all new threads require moderation. You will now be returned to the thread listing.";
$l['redirect_newthread_thread'] = "<br />You will now be taken to the new thread.";
$l['invalidthread'] = "The specified draft does not exist or you don't have permission to view it.";
$l['error_suspendedposting'] = "Your posting privileges are currently suspended {1}.<br /><br />
Suspension Date: {2}";
$l['error_suspendedposting_temporal'] = "until {1}";
$l['error_suspendedposting_permanent'] = "permanently";
?>
1 change: 1 addition & 0 deletions install/index.php
Expand Up @@ -2272,6 +2272,7 @@ function install_done()
$cache->update_moderators();
$cache->update_usertitles();
$cache->update_reportedcontent();
$cache->update_awaitingactivation();
$cache->update_mycode();
$cache->update_profilefields();
$cache->update_posticons();
Expand Down
7 changes: 7 additions & 0 deletions install/resources/mybb_theme.xml
Expand Up @@ -3287,6 +3287,7 @@ a.button {
{$preview}
{$post_errors}
{$attacherror}
{$moderation_notice}
{$deletebox}
<form id="editpost" action="editpost.php?pid={$pid}&amp;processed=1" method="post" enctype="multipart/form-data" name="input">
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
Expand Down Expand Up @@ -3930,6 +3931,8 @@ a.button {
<div>{$privatemessage_text}</div>
</div>]]></template>
<template name="global_unreadreports" version="1800"><![CDATA[<div class="red_alert"><a href="{$mybb->settings['bburl']}/modcp.php?action=reports">{$lang->unread_reports}</a></div>]]></template>
<template name="global_moderation_notice" version="1800"><![CDATA[<div class="pm_alert">{$moderation_text}</div>]]></template>
<template name="global_awaiting_activation" version="1800"><![CDATA[<div class="red_alert">{$awaiting_message}</div>]]></template>
<template name="header" version="1800"><![CDATA[<div id="container">
<a name="top" id="top"></a>
<div id="header">
Expand Down Expand Up @@ -3961,6 +3964,7 @@ a.button {
{$bbclosedwarning}
{$unreadreports}
{$pending_joinrequests}
{$awaitingusers}
<navigation>
<br />]]></template>
<template name="header_menu_calendar" version="1800"><![CDATA[<li><a href="{$mybb->settings['bburl']}/calendar.php" class="calendar">{$lang->toplinks_calendar}</a></li>]]></template>
Expand Down Expand Up @@ -8422,6 +8426,7 @@ if(use_xmlhttprequest == "1")
{$maximageserror}
{$attacherror}
{$reply_errors}
{$moderation_notice}
<form action="newreply.php?tid={$tid}&amp;processed=1" method="post" enctype="multipart/form-data" name="input">
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
Expand Down Expand Up @@ -8514,6 +8519,7 @@ if(use_xmlhttprequest == "1")
{$preview}
{$thread_errors}
{$attacherror}
{$moderation_notice}
<form action="newthread.php?fid={$fid}&amp;processed=1" method="post" enctype="multipart/form-data" name="input">
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
Expand Down Expand Up @@ -11059,6 +11065,7 @@ if(use_xmlhttprequest == "1")
<br />]]></template>
<template name="showthread_poll_undovote" version="1800"><![CDATA[ [<a href="polls.php?action=do_undovote&amp;pid={$poll['pid']}&amp;my_post_key={$mybb->post_code}">{$lang->undo_vote}</a>]]]></template>
<template name="showthread_quickreply" version="1800"><![CDATA[<br />
{$moderation_notice}
<form method="post" action="newreply.php?tid={$tid}&amp;processed=1" name="quick_reply_form" id="quick_reply_form">
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
<input type="hidden" name="subject" value="RE: {$reply_subject}" />
Expand Down
1 change: 1 addition & 0 deletions install/upgrade.php
Expand Up @@ -581,6 +581,7 @@ function buildcaches()
$cache->update_forums();
$cache->update_usertitles();
$cache->update_reportedcontent();
$cache->update_awaitingactivation();
$cache->update_mycode();
$cache->update_profilefields();
$cache->update_posticons();
Expand Down
36 changes: 34 additions & 2 deletions newreply.php
Expand Up @@ -17,7 +17,7 @@
$templatelist .= ",post_attachments_attachment_postinsert,post_attachments_attachment_remove,post_attachments_attachment_unapproved,post_attachments_attachment,postbit_attachments_attachment,postbit_attachments,newreply_options_signature,postbit_find";
$templatelist .= ",member_register_regimage,member_register_regimage_recaptcha,member_register_regimage_ayah,post_captcha_hidden,post_captcha,post_captcha_recaptcha,post_captcha_ayah,postbit_groupimage,postbit_away,postbit_offline,postbit_avatar";
$templatelist .= ",postbit_rep_button,postbit_warn,postbit_author_guest,postbit_signature,postbit_classic,postbit_attachments_thumbnails_thumbnailpostbit_attachments_images_image,postbit_attachments_attachment_unapproved,postbit_pm,post_attachments_update";
$templatelist .= ",postbit_attachments_thumbnails,postbit_attachments_images,postbit_gotopost,forumdisplay_password_wrongpass,forumdisplay_password,posticons_icon,attachment_icon,postbit_reputation_formatted_link,newreply_disablesmilies_hidden,forumdisplay_rules";
$templatelist .= ",postbit_attachments_thumbnails,postbit_attachments_images,postbit_gotopost,forumdisplay_password_wrongpass,forumdisplay_password,posticons_icon,attachment_icon,postbit_reputation_formatted_link,newreply_disablesmilies_hidden,forumdisplay_rules,global_moderation_notice";

require_once "./global.php";
require_once MYBB_ROOT."inc/functions_post.php";
Expand Down Expand Up @@ -95,11 +95,24 @@
{
error($lang->error_closedinvalidforum);
}
if($forumpermissions['canview'] == 0 || $forumpermissions['canpostreplys'] == 0 || $mybb->user['suspendposting'] == 1)
if($forumpermissions['canview'] == 0 || $forumpermissions['canpostreplys'] == 0)
{
error_no_permission();
}

if($mybb->user['suspendposting'] == 1)
{
$suspendedpostingtype = $lang->error_suspendedposting_permanent;
if($mybb->user['suspensiontime'])
{
$suspendedpostingtype = $lang->sprintf($lang->error_suspendedposting_temporal, my_date($mybb->settings['dateformat'], $mybb->user['suspensiontime']));
}

$lang->error_suspendedposting = $lang->sprintf($lang->error_suspendedposting, $suspendedpostingtype, my_date($mybb->settings['timeformat'], $mybb->user['suspensiontime']));

error($lang->error_suspendedposting);
}

if(isset($forumpermissions['canonlyviewownthreads']) && $forumpermissions['canonlyviewownthreads'] == 1 && $thread['uid'] != $mybb->user['uid'])
{
error_no_permission();
Expand Down Expand Up @@ -1417,6 +1430,25 @@
}
}

$moderation_notice = '';
if($forumpermissions['modattachments'] == 1 && $forumpermissions['canpostattachments'] != 0)
{
$moderation_text = $lang->moderation_forum_attachments;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

if($forumpermissions['modposts'] == 1)
{
$moderation_text = $lang->moderation_forum_posts;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

if($mybb->user['moderateposts'] == 1)
{
$moderation_text = $lang->moderation_user_posts;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

$plugins->run_hooks("newreply_end");

$forum['name'] = strip_tags($forum['name']);
Expand Down
36 changes: 34 additions & 2 deletions newthread.php
Expand Up @@ -17,7 +17,7 @@
$templatelist .= ",member_register_regimage,member_register_regimage_recaptcha,member_register_regimage_ayah,post_captcha_hidden,post_captcha,post_captcha_recaptcha,post_captcha_ayah,postbit_groupimage,postbit_online,postbit_away";
$templatelist .= ",postbit_avatar,postbit_find,postbit_pm,postbit_rep_button,postbit_www,postbit_email,postbit_reputation,postbit_warn,postbit_warninglevel,postbit_author_user,postbit_author_guest,postbit_offline";
$templatelist .= ",postbit_signature,postbit_classic,postbit,postbit_attachments_thumbnails_thumbnail,postbit_attachments_images_image,postbit_attachments_attachment,postbit_attachments_attachment_unapproved,post_attachments_update";
$templatelist .= ",postbit_attachments_thumbnails,postbit_attachments_images,postbit_attachments,postbit_gotopost,smilieinsert_getmore,smilieinsert_smilie,smilieinsert_smilie_empty,attachment_icon,postbit_reputation_formatted_link";
$templatelist .= ",postbit_attachments_thumbnails,postbit_attachments_images,postbit_attachments,postbit_gotopost,smilieinsert_getmore,smilieinsert_smilie,smilieinsert_smilie_empty,attachment_icon,postbit_reputation_formatted_link,global_moderation_notice";

require_once "./global.php";
require_once MYBB_ROOT."inc/functions_post.php";
Expand Down Expand Up @@ -71,11 +71,24 @@
error($lang->error_closedinvalidforum);
}

if($forumpermissions['canview'] == 0 || $forumpermissions['canpostthreads'] == 0 || $mybb->user['suspendposting'] == 1)
if($forumpermissions['canview'] == 0 || $forumpermissions['canpostthreads'] == 0)
{
error_no_permission();
}

if($mybb->user['suspendposting'] == 1)
{
$suspendedpostingtype = $lang->error_suspendedposting_permanent;
if($mybb->user['suspensiontime'])
{
$suspendedpostingtype = $lang->sprintf($lang->error_suspendedposting_temporal, my_date($mybb->settings['dateformat'], $mybb->user['suspensiontime']));
}

$lang->error_suspendedposting = $lang->sprintf($lang->error_suspendedposting, $suspendedpostingtype, my_date($mybb->settings['timeformat'], $mybb->user['suspensiontime']));

error($lang->error_suspendedposting);
}

// Check if this forum is password protected and we have a valid password
check_forum_password($forum['fid']);

Expand Down Expand Up @@ -1054,6 +1067,25 @@
}
}

$moderation_notice = '';
if($forumpermissions['modattachments'] == 1 && $forumpermissions['canpostattachments'] != 0)
{
$moderation_text = $lang->moderation_forum_attachments;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

if($forumpermissions['modthreads'] == 1)
{
$moderation_text = $lang->moderation_forum_thread;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

if($mybb->user['moderateposts'] == 1)
{
$moderation_text = $lang->moderation_user_posts;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

$plugins->run_hooks("newthread_end");

$forum['name'] = strip_tags($forum['name']);
Expand Down
15 changes: 14 additions & 1 deletion showthread.php
Expand Up @@ -18,7 +18,7 @@
$templatelist .= ",postbit_inlinecheck,showthread_inlinemoderation,postbit_attachments_thumbnails_thumbnail,postbit_ignored,postbit_groupimage,postbit_multiquote,showthread_search,showthread_moderationoptions_custom_tool,showthread_moderationoptions_custom,showthread_inlinemoderation_custom_tool,showthread_inlinemoderation_custom";
$templatelist .= ",showthread_usersbrowsing,showthread_usersbrowsing_user,showthread_poll_option_multiple,showthread_poll_option,showthread_poll,showthread_threadedbox,showthread_quickreply_options_signature,showthread_threaded_bitactive,showthread_threaded_bit,postbit_attachments_attachment_unapproved";
$templatelist .= ",showthread_moderationoptions_openclose,showthread_moderationoptions_stickunstick,showthread_moderationoptions_delete,showthread_moderationoptions_threadnotes,showthread_moderationoptions_manage,showthread_moderationoptions_deletepoll,showthread_threadnoteslink,showthread_poll_results,showthread_classic_header,postbit_warn";
$templatelist .= ",postbit_userstar,postbit_reputation_formatted_link,postbit_warninglevel_formatted,postbit_quickrestore,forumdisplay_password,forumdisplay_password_wrongpass,postbit_classic,postbit_purgespammer,showthread_inlinemoderation_approve,showthread_moderationoptions,forumdisplay_thread_icon,postbit_warninglevel,showthread_poll_resultbit";
$templatelist .= ",postbit_userstar,postbit_reputation_formatted_link,postbit_warninglevel_formatted,postbit_quickrestore,forumdisplay_password,forumdisplay_password_wrongpass,postbit_classic,postbit_purgespammer,showthread_inlinemoderation_approve,showthread_moderationoptions,forumdisplay_thread_icon,postbit_warninglevel,showthread_poll_resultbit,global_moderation_notice";

require_once "./global.php";
require_once MYBB_ROOT."inc/functions_post.php";
Expand Down Expand Up @@ -1193,6 +1193,19 @@
{
$trow = 'trow_shaded';
}

$moderation_notice = '';
if($forumpermissions['modposts'] == 1)
{
$moderation_text = $lang->moderation_forum_posts;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

if($mybb->user['moderateposts'] == 1)
{
$moderation_text = $lang->moderation_user_posts;
eval('$moderation_notice = "'.$templates->get('global_moderation_notice').'";');
}

$posthash = md5($mybb->user['uid'].random_str());
eval("\$quickreply = \"".$templates->get("showthread_quickreply")."\";");
Expand Down

0 comments on commit c3b0f7f

Please sign in to comment.