Zeile 11 | Zeile 11 |
---|
/** * Check if the current user has permission to perform a ModCP action on another user *
|
/** * Check if the current user has permission to perform a ModCP action on another user *
|
* @param int The user ID to perform the action on.
| * @param int $uid The user ID to perform the action on.
|
* @return boolean True if the user has necessary permissions */ function modcp_can_manage_user($uid)
| * @return boolean True if the user has necessary permissions */ function modcp_can_manage_user($uid)
|
Zeile 36 | Zeile 36 |
---|
/** * Fetch forums the moderator can manage announcements to *
|
/** * Fetch forums the moderator can manage announcements to *
|
* @param int (Optional) The parent forum ID * @param int (Optional) The depth from parent forum the moderator can manage to
| * @param int $pid (Optional) The parent forum ID * @param int $depth (Optional) The depth from parent forum the moderator can manage to
|
*/ function fetch_forum_announcements($pid=0, $depth=1) {
|
*/ function fetch_forum_announcements($pid=0, $depth=1) {
|
global $mybb, $db, $lang, $theme, $announcements, $templates, $announcements_forum, $moderated_forums, $unviewableforums;
| global $mybb, $db, $lang, $theme, $announcements, $templates, $announcements_forum, $moderated_forums, $unviewableforums, $parser;
|
static $forums_by_parent, $forum_cache, $parent_forums;
if(!is_array($forum_cache))
| static $forums_by_parent, $forum_cache, $parent_forums;
if(!is_array($forum_cache))
|
Zeile 74 | Zeile 74 |
---|
{ foreach($children as $forum) {
|
{ foreach($children as $forum) {
|
if($forum['linkto'] || ($unviewableforums && in_array($forum['fid'], $unviewableforums)))
| if($forum['linkto'] || (is_array($unviewableforums) && in_array($forum['fid'], $unviewableforums)))
|
{ continue; }
| { continue; }
|
Zeile 82 | Zeile 82 |
---|
if($forum['active'] == 0 || !is_moderator($forum['fid'], "canmanageannouncements")) { // Check if this forum is a parent of a moderated forum
|
if($forum['active'] == 0 || !is_moderator($forum['fid'], "canmanageannouncements")) { // Check if this forum is a parent of a moderated forum
|
if(in_array($forum['fid'], $parent_forums))
| if(is_array($parent_forums) && in_array($forum['fid'], $parent_forums))
|
{ // A child is moderated, so print out this forum's title. RECURSE! $trow = alt_trow();
| { // A child is moderated, so print out this forum's title. RECURSE! $trow = alt_trow();
|
Zeile 118 | Zeile 118 |
---|
eval("\$icon = \"".$templates->get("modcp_announcements_announcement_active")."\";"); }
|
eval("\$icon = \"".$templates->get("modcp_announcements_announcement_active")."\";"); }
|
$subject = htmlspecialchars_uni($announcement['subject']);
| $subject = htmlspecialchars_uni($parser->parse_badwords($announcement['subject']));
|
eval("\$announcements_forum .= \"".$templates->get("modcp_announcements_announcement")."\";"); }
| eval("\$announcements_forum .= \"".$templates->get("modcp_announcements_announcement")."\";"); }
|
Zeile 137 | Zeile 137 |
---|
/** * Send reported content to moderators *
|
/** * Send reported content to moderators *
|
* @param array Array of reported content * @return bool True if PM sent
| * @param array $report Array of reported content * @param string $report_type Type of content being reported * @return bool|array PM Information or false
|
*/
|
*/
|
function send_report($report)
| function send_report($report, $report_type='post')
|
{
|
{
|
global $db, $lang, $forum, $mybb, $post, $thread;
| global $db, $lang, $forum, $mybb, $post, $thread, $reputation, $user, $plugins;
|
|
|
$query = $db->query(" SELECT DISTINCT u.username, u.email, u.receivepms, u.uid FROM ".TABLE_PREFIX."moderators m LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=m.id) WHERE m.fid IN (".$forum['parentlist'].") AND m.isgroup = '0' ");
$nummods = $db->num_rows($query);
if(!$nummods)
| $report_reason = ''; if($report['reasonid'])
|
{
|
{
|
unset($query); switch($db->type) { case "pgsql": case "sqlite": $query = $db->query(" SELECT u.username, u.email, u.receivepms, u.uid FROM ".TABLE_PREFIX."users u LEFT JOIN ".TABLE_PREFIX."usergroups g ON (((','|| u.additionalgroups|| ',' LIKE '%,'|| g.gid|| ',%') OR u.usergroup = g.gid)) WHERE (g.cancp=1 OR g.issupermod=1) "); break; default: $query = $db->query(" SELECT u.username, u.email, u.receivepms, u.uid FROM ".TABLE_PREFIX."users u LEFT JOIN ".TABLE_PREFIX."usergroups g ON (((CONCAT(',', u.additionalgroups, ',') LIKE CONCAT('%,', g.gid, ',%')) OR u.usergroup = g.gid)) WHERE (g.cancp=1 OR g.issupermod=1) "); } }
| $query = $db->simple_select("reportreasons", "title", "rid = '".(int)$report['reasonid']."'", array('limit' => 1)); $reason = $db->fetch_array($query);
$lang->load('report');
$report_reason = $lang->parse($reason['title']); }
if($report['reason']) { $report_reason = $lang->sprintf($lang->email_report_comment_extra, $report_reason, $report['reason']); }
$modsjoin = $modswhere = ''; if(!empty($forum['parentlist'])) { $modswhere = "m.fid IN ({$forum['parentlist']}) OR ";
if($db->type == 'pgsql' || $db->type == 'sqlite') { $modsjoin = "LEFT JOIN {$db->table_prefix}moderators m ON (m.id = u.uid AND m.isgroup = 0) OR ((m.id = u.usergroup OR ',' || u.additionalgroups || ',' LIKE '%,' || m.id || ',%') AND m.isgroup = 1)"; } else { $modsjoin = "LEFT JOIN {$db->table_prefix}moderators m ON (m.id = u.uid AND m.isgroup = 0) OR ((m.id = u.usergroup OR CONCAT(',', u.additionalgroups, ',') LIKE CONCAT('%,', m.id, ',%')) AND m.isgroup = 1)"; } }
switch($db->type) { case "pgsql": case "sqlite": $query = $db->query(" SELECT DISTINCT u.username, u.email, u.receivepms, u.uid FROM {$db->table_prefix}users u {$modsjoin} LEFT JOIN {$db->table_prefix}usergroups g ON (',' || u.additionalgroups || ',' LIKE '%,' || g.gid || ',%' OR g.gid = u.usergroup) WHERE {$modswhere}g.cancp = 1 OR g.issupermod = 1 "); break; default: $query = $db->query(" SELECT DISTINCT u.username, u.email, u.receivepms, u.uid FROM {$db->table_prefix}users u {$modsjoin} LEFT JOIN {$db->table_prefix}usergroups g ON (CONCAT(',', u.additionalgroups, ',') LIKE CONCAT('%,', g.gid, ',%') OR g.gid = u.usergroup) WHERE {$modswhere}g.cancp = 1 OR g.issupermod = 1 "); }
$lang_string_subject = "emailsubject_report{$report_type}"; $lang_string_message = "email_report{$report_type}";
if(empty($lang->$lang_string_subject) || empty($lang->$lang_string_message)) { return false; }
global $send_report_subject, $send_report_url;
switch($report_type) { case 'post': $send_report_subject = $post['subject']; $send_report_url = str_replace('&', '&', get_post_link($post['pid'], $thread['tid'])."#pid".$post['pid']); break; case 'profile': $send_report_subject = $user['username']; $send_report_url = str_replace('&', '&', get_profile_link($user['uid'])); break; case 'reputation': $from_user = get_user($reputation['adduid']); $send_report_subject = $from_user['username']; $send_report_url = "reputation.php?uid={$reputation['uid']}#rid{$reputation['rid']}"; break; }
$plugins->run_hooks("send_report_report_type");
$emailsubject = $lang->sprintf($lang->$lang_string_subject, $mybb->settings['bbname']); $emailmessage = $lang->sprintf($lang->$lang_string_message, $mybb->user['username'], $mybb->settings['bbname'], $send_report_subject, $mybb->settings['bburl'], $send_report_url, $report_reason); $pm_recipients = array();
|
while($mod = $db->fetch_array($query))
|
while($mod = $db->fetch_array($query))
|
{ $emailsubject = $lang->sprintf($lang->emailsubject_reportpost, $mybb->settings['bbname']); $emailmessage = $lang->sprintf($lang->email_reportpost, $mybb->user['username'], $mybb->settings['bbname'], $post['subject'], $mybb->settings['bburl'], str_replace('&', '&', get_post_link($post['pid'], $thread['tid'])."#pid".$post['pid']), $thread['subject'], $report['reason']);
| {
|
if($mybb->settings['reportmethod'] == "pms" && $mod['receivepms'] != 0 && $mybb->settings['enablepms'] != 0)
|
if($mybb->settings['reportmethod'] == "pms" && $mod['receivepms'] != 0 && $mybb->settings['enablepms'] != 0)
|
{
| {
|
$pm_recipients[] = $mod['uid']; } else
| $pm_recipients[] = $mod['uid']; } else
|
Zeile 194 | Zeile 245 |
---|
if(count($pm_recipients) > 0) {
|
if(count($pm_recipients) > 0) {
|
$emailsubject = $lang->sprintf($lang->emailsubject_reportpost, $mybb->settings['bbname']); $emailmessage = $lang->sprintf($lang->email_reportpost, $mybb->user['username'], $mybb->settings['bbname'], $post['subject'], $mybb->settings['bburl'], str_replace('&', '&', get_post_link($post['pid'], $thread['tid'])."#pid".$post['pid']), $thread['subject'], $report['reason']);
| |
require_once MYBB_ROOT."inc/datahandlers/pm.php"; $pmhandler = new PMDataHandler();
| require_once MYBB_ROOT."inc/datahandlers/pm.php"; $pmhandler = new PMDataHandler();
|
Zeile 206 | Zeile 254 |
---|
"icon" => 0, "fromid" => $mybb->user['uid'], "toid" => $pm_recipients,
|
"icon" => 0, "fromid" => $mybb->user['uid'], "toid" => $pm_recipients,
|
"ipaddress" => $session->packedip
| "ipaddress" => $mybb->session->packedip
|
);
$pmhandler->admin_override = true;
| );
$pmhandler->admin_override = true;
|
Zeile 230 | Zeile 278 |
---|
/** * Add a report *
|
/** * Add a report *
|
* @param array Array of reported content * @param string Type of content being reported
| * @param array $report Array of reported content * @param string $type Type of content being reported
|
* @return int Report ID */ function add_report($report, $type = 'post')
| * @return int Report ID */ function add_report($report, $type = 'post')
|
Zeile 244 | Zeile 292 |
---|
'id3' => (int)$report['id3'], 'uid' => (int)$report['uid'], 'reportstatus' => 0,
|
'id3' => (int)$report['id3'], 'uid' => (int)$report['uid'], 'reportstatus' => 0,
|
| 'reasonid' => (int)$report['reasonid'],
|
'reason' => $db->escape_string($report['reason']), 'type' => $db->escape_string($type), 'reports' => 1, 'dateline' => TIME_NOW, 'lastreport' => TIME_NOW,
|
'reason' => $db->escape_string($report['reason']), 'type' => $db->escape_string($type), 'reports' => 1, 'dateline' => TIME_NOW, 'lastreport' => TIME_NOW,
|
'reporters' => $db->escape_string(serialize(array($report['uid'])))
| 'reporters' => $db->escape_string(my_serialize(array($report['uid'])))
|
);
if($mybb->settings['reportmethod'] == "email" || $mybb->settings['reportmethod'] == "pms") {
|
);
if($mybb->settings['reportmethod'] == "email" || $mybb->settings['reportmethod'] == "pms") {
|
return send_report($report);
| send_report($report, $type);
|
}
$rid = $db->insert_query("reportedcontent", $insert_array);
| }
$rid = $db->insert_query("reportedcontent", $insert_array);
|
Zeile 266 | Zeile 315 |
---|
/** * Update an existing report *
|
/** * Update an existing report *
|
* @param array Array of reported content * @return bool
| * @param array $report Array of reported content * @return bool true
|
*/ function update_report($report) {
| */ function update_report($report) {
|
Zeile 276 | Zeile 325 |
---|
$update_array = array( 'reports' => ++$report['reports'], 'lastreport' => TIME_NOW,
|
$update_array = array( 'reports' => ++$report['reports'], 'lastreport' => TIME_NOW,
|
'reporters' => $db->escape_string(serialize($report['reporters']))
| 'reporters' => $db->escape_string(my_serialize($report['reporters']))
|
);
$db->update_query("reportedcontent", $update_array, "rid = '{$report['rid']}'");
| );
$db->update_query("reportedcontent", $update_array, "rid = '{$report['rid']}'");
|