} $user = get_user($ban['uid']); if (is_super_admin($user['uid']) && ($mybb->user['uid'] != $user['uid'] && !is_super_admin($mybb->user['uid']))) { flash_message($lang->cannot_perform_action_super_admin_general, 'error'); admin_redirect("index.php?module=user-banning"); } if ($mybb->request_method == "post") { require_once MYBB_ROOT . "inc/class_moderation.php"; $moderation = new Moderation(); $query = $db->simple_select("threads", "tid", "uid='{$user['uid']}'"); while ($thread = $db->fetch_array($query)) { $moderation->delete_thread($thread['tid']); } $query = $db->simple_select("posts", "pid", "uid='{$user['uid']}'"); while ($post = $db->fetch_array($query)) { $moderation->delete_post($post['pid']); } $cache->update_reportedposts(); $plugins->run_hooks("admin_user_banning_prune_commit"); // Log admin action log_admin_action($mybb->input['uid'], $user['username']); flash_message($lang->success_pruned, 'success'); admin_redirect("index.php?module=user-banning"); } else { $page->output_confirm_action("index.php?module=user-banning&action=prune&uid={$user['uid']}", $lang->confirm_prune); } } if ($mybb->input['action'] == "lift") { $plugins->run_hooks("admin_user_banning_lift"); // User clicked no if ($mybb->input['no']) {
/** * Provides a method to delete an users posts and threads * * @param array Array of user ids, false if they're already set (eg when using the delete_user function) */ function delete_posts($delete_uids = false) { global $db, $plugins; if ($delete_uids != false) { $this->delete_uids = array_map('intval', (array) $delete_uids); foreach ($this->delete_uids as $key => $uid) { if (!$uid || is_super_admin($uid) || $uid == $mybb->user['uid']) { // Remove super admins unset($this->delete_uids[$key]); } } $this->delete_uids = implode(',', $this->delete_uids); } require_once MYBB_ROOT . 'inc/class_moderation.php'; $moderation = new Moderation(); $plugins->run_hooks('datahandler_user_delete_posts', $this); // Threads $query = $db->simple_select('threads', 'tid', "uid IN({$this->delete_uids})"); while ($tid = $db->fetch_field($query, 'tid')) { $moderation->delete_thread($tid); } // Posts $pids = array(); $query = $db->simple_select('posts', 'pid', "uid IN({$this->delete_uids})"); while ($pid = $db->fetch_field($query, 'pid')) { $moderation->delete_post($pid); $pids[] = (int) $pid; } // Delete Reports made to users's posts/threads if (!empty($pids)) { $db->delete_query('reportedcontent', "type='posts' AND id IN(" . implode(',', $pids) . ")"); } }
/** * Deletes a post from the database * * @param int The thread ID */ function delete_post($pid, $tid = "") { global $moderation; if (!is_object($moderation)) { require_once MYBB_ROOT . "inc/class_moderation.php"; $moderation = new Moderation(); } return $moderation->delete_post($pid); }
/** * MyBB 1.6 * Copyright 2010 MyBB Group, All Rights Reserved * * Website: http://mybb.com * License: http://mybb.com/about/license * * $Id: userpruning.php 5297 2010-12-28 22:01:14Z Tomm $ */ function task_userpruning($task) { global $db, $lang, $mybb, $cache; if ($mybb->settings['enablepruning'] != 1) { return; } // Are we pruning by posts? if ($mybb->settings['enableprunebyposts'] == 1) { $in_usergroups = array(); $users = array(); $usergroups = $cache->read("usergroups"); foreach ($usergroups as $gid => $usergroup) { // Exclude admin, moderators, super moderators, banned if ($usergroup['canmodcp'] == 1 || $usergroup['cancp'] == 1 || $usergroup['issupermod'] == 1 || $usergroup['isbannedgroup'] == 1) { continue; } $in_usergroups[] = $gid; } // If we're not pruning unactivated users, then remove them from the criteria if ($mybb->settings['pruneunactived'] == 0) { $key = array_search('5', $in_usergroups); unset($in_usergroups[$key]); } $regdate = TIME_NOW - intval($mybb->settings['dayspruneregistered']) * 24 * 60 * 60; $query = $db->simple_select("users", "uid", "regdate <= " . intval($regdate) . " AND postnum <= " . intval($mybb->settings['prunepostcount']) . " AND usergroup IN(" . $db->escape_string(implode(',', $in_usergroups)) . ")"); while ($user = $db->fetch_array($query)) { $users[$user['uid']] = $user['uid']; } } // Are we pruning unactivated users? if ($mybb->settings['pruneunactived'] == 1) { $regdate = TIME_NOW - intval($mybb->settings['dayspruneunactivated']) * 24 * 60 * 60; $query = $db->simple_select("users", "uid", "regdate <= " . intval($regdate) . " AND usergroup='5'"); while ($user = $db->fetch_array($query)) { $users[$user['uid']] = $user['uid']; } } if (!empty($users)) { $uid_list = $db->escape_string(implode(',', $users)); // Delete the user $db->delete_query("userfields", "ufid IN({$uid_list})"); $db->delete_query("privatemessages", "uid IN({$uid_list})"); $db->delete_query("events", "uid IN({$uid_list})"); $db->delete_query("moderators", "id IN({$uid_list}) AND isgroup='0'"); $db->delete_query("forumsubscriptions", "uid IN({$uid_list})"); $db->delete_query("threadsubscriptions", "uid IN({$uid_list})"); $db->delete_query("sessions", "uid IN({$uid_list})"); $db->delete_query("banned", "uid IN({$uid_list})"); $db->delete_query("threadratings", "uid IN({$uid_list})"); $db->delete_query("joinrequests", "uid IN({$uid_list})"); $db->delete_query("awaitingactivation", "uid IN({$uid_list})"); $query = $db->delete_query("users", "uid IN({$uid_list})"); $num_deleted = $db->affected_rows($query); // Remove any of the user(s) uploaded avatars $query = $db->simple_select("users", "avatar", "uid IN ({$uid_list}) AND avatartype = 'upload'"); if ($db->num_rows($query)) { while ($avatar = $db->fetch_field($query, "avatar")) { $avatar = substr($avatar, 2, -20); @unlink(MYBB_ROOT . $avatar); } } // Are we removing the posts/threads of a user? if ($mybb->settings['prunethreads'] == 1) { require_once MYBB_ROOT . "inc/class_moderation.php"; $moderation = new Moderation(); // Threads $query = $db->simple_select("threads", "tid", "uid IN({$uid_list})"); while ($thread = $db->fetch_array($query)) { $moderation->delete_thread($thread['tid']); } // Posts $query = $db->simple_select("posts", "pid", "uid IN({$uid_list})"); while ($post = $db->fetch_array($query)) { $moderation->delete_post($post['pid']); } } else { // We're just updating the UID $db->update_query("posts", array('uid' => 0), "uid IN({$uid_list})"); } // Update forum stats update_stats(array('numusers' => '-' . intval($num_deleted))); $cache->update_moderators(); $cache->update_banned(); } add_task_log($task, $lang->task_userpruning_ran); }
redirect(get_forum_link($fid), $lang->redirect_threaddeleted); } } else { error_no_permission(); } } else { if ($forumpermissions['candeleteposts'] == 1 || is_moderator($fid, "candeleteposts") || is_moderator($fid, "cansoftdeleteposts")) { // Select the first post before this require_once MYBB_ROOT . "inc/class_moderation.php"; $moderation = new Moderation(); if ($mybb->settings['soft_delete'] == 1 || is_moderator($fid, "cansoftdeleteposts")) { $modlogdata['pid'] = $pid; $moderation->soft_delete_posts(array($pid)); log_moderator_action($modlogdata, $lang->post_soft_deleted); } else { $moderation->delete_post($pid); mark_reports($pid, "post"); log_moderator_action($modlogdata, $lang->post_deleted); } $query = $db->simple_select("posts", "pid", "tid='{$tid}' AND dateline <= '{$post['dateline']}'", array("limit" => 1, "order_by" => "dateline", "order_dir" => "desc")); $next_post = $db->fetch_array($query); if ($next_post['pid']) { $redirect = get_post_link($next_post['pid'], $tid) . "#pid{$next_post['pid']}"; } else { $redirect = get_thread_link($tid); } if ($mybb->input['ajax'] == 1) { header("Content-type: application/json; charset={$lang->settings['charset']}"); if (is_moderator($fid, "canviewdeleted")) { echo json_encode(array("data" => '1')); } else {
/** * Provides a method to delete an users posts and threads * * @param array|bool $delete_uids Array of user ids, false if they're already set (eg when using the delete_user function) */ function delete_posts($delete_uids = false) { global $db, $plugins, $mybb; if ($delete_uids != false) { $this->delete_uids = array_map('intval', (array) $delete_uids); foreach ($this->delete_uids as $key => $uid) { if (!$uid || is_super_admin($uid) || $uid == $mybb->user['uid']) { // Remove super admins unset($this->delete_uids[$key]); } } $this->delete_uids = implode(',', $this->delete_uids); } require_once MYBB_ROOT . 'inc/class_moderation.php'; $moderation = new Moderation(); $plugins->run_hooks('datahandler_user_delete_posts', $this); if (empty($this->delete_uids)) { return; } // Threads $query = $db->simple_select('threads', 'tid', "uid IN({$this->delete_uids})"); while ($tid = $db->fetch_field($query, 'tid')) { $moderation->delete_thread($tid); } // Posts $query = $db->simple_select('posts', 'pid', "uid IN({$this->delete_uids})"); while ($pid = $db->fetch_field($query, 'pid')) { $moderation->delete_post($pid); } }