예제 #1
0
파일: banning.php 프로젝트: Nidrax/ppm-1.6
    }
    $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']) {
예제 #2
0
 /**
  * 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) . ")");
     }
 }
예제 #3
0
/**
 * 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);
}
예제 #5
0
             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 {
예제 #6
0
 /**
  * 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);
     }
 }