示例#1
0
/**
 * MyBB 1.8
 * Copyright 2014 MyBB Group, All Rights Reserved
 *
 * Website: http://www.mybb.com
 * License: http://www.mybb.com/about/license
 *
 */
function task_userpruning($task)
{
    global $db, $lang, $mybb, $cache, $plugins;
    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]);
        }
        $prunepostcount = (int) $mybb->settings['prunepostcount'];
        $regdate = TIME_NOW - (int) $mybb->settings['dayspruneregistered'] * 24 * 60 * 60;
        $usergroups = $db->escape_string(implode(',', $in_usergroups));
        $query = $db->simple_select('users', 'uid', "regdate<={$regdate} AND postnum<={$prunepostcount} AND usergroup IN({$usergroups})");
        while ($uid = $db->fetch_field($query, 'uid')) {
            $users[$uid] = $uid;
        }
        if ($users && $mybb->settings['prunepostcountall']) {
            $query = $db->simple_select('posts', 'uid, COUNT(pid) as posts', "uid IN ('" . implode("','", $users) . "') AND visible>0", array('group_by' => 'uid'));
            while ($user = $db->fetch_array($query)) {
                if ($user['posts'] >= $prunepostcount) {
                    unset($users[$user['uid']]);
                }
            }
        }
    }
    // Are we pruning unactivated users?
    if ($mybb->settings['pruneunactived'] == 1) {
        $regdate = TIME_NOW - (int) $mybb->settings['dayspruneunactivated'] * 24 * 60 * 60;
        $query = $db->simple_select("users", "uid", "regdate<={$regdate} AND usergroup='5'");
        while ($user = $db->fetch_array($query)) {
            $users[$user['uid']] = $user['uid'];
        }
    }
    if (is_object($plugins)) {
        $args = array('task' => &$task, 'in_usergroups' => &$in_usergroups, 'users' => &$users);
        $plugins->run_hooks('task_userpruning', $args);
    }
    if (!empty($users)) {
        // Set up user handler.
        require_once MYBB_ROOT . 'inc/datahandlers/user.php';
        $userhandler = new UserDataHandler('delete');
        // Delete the prunned users
        $userhandler->delete_user($users, $mybb->settings['prunethreads']);
    }
    add_task_log($task, $lang->task_userpruning_ran);
}
示例#2
0
     $buttons[] = $form->generate_submit_button($lang->ban_users);
     $form->output_submit_wrapper($buttons);
     $form->end();
     $page->output_footer();
     break;
 case 'multidelete':
     if ($mybb->input['no']) {
         admin_redirect("index.php?module=user-users" . $vid_url);
         // User clicked on 'No
     } else {
         if ($mybb->input['processed'] == 1) {
             // Set up user handler.
             require_once MYBB_ROOT . 'inc/datahandlers/user.php';
             $userhandler = new UserDataHandler('delete');
             // Delete users
             $deleted = $userhandler->delete_user($selected);
             $to_be_deleted = $deleted['deleted_users'];
             // Get the correct number of deleted users
             // Update forum stats, remove the cookie and redirect the user
             my_unsetcookie("inlinemod_useracp");
             $mybb->input['action'] = "inline_delete";
             log_admin_action($to_be_deleted);
             $lang->users_deleted = $lang->sprintf($lang->users_deleted, $to_be_deleted);
             $cache->update_awaitingactivation();
             flash_message($lang->users_deleted, 'success');
             admin_redirect("index.php?module=user-users" . $vid_url);
         }
         $to_be_deleted = count($selected);
         $lang->confirm_multidelete = $lang->sprintf($lang->confirm_multidelete, my_number_format($to_be_deleted));
         $page->output_confirm_action("index.php?module=user-users&amp;action=inline_edit&amp;inline_action=multidelete&amp;my_post_key={$mybb->post_code}&amp;processed=1", $lang->confirm_multidelete);
     }
示例#3
0
         							"type" => 1,
         							"dateline" => TIME_NOW
         						);
         						$db->insert_query("banfilters", $insert);
         					}
         				}
         */
         // Clear the profile
         $userhandler->clear_profile($uid, $mybb->settings['purgespammerbangroup']);
         $cache->update_banned();
         $cache->update_bannedips();
         $cache->update_awaitingactivation();
         // Update reports cache
         $cache->update_reportedcontent();
     } elseif ($mybb->settings['purgespammerbandelete'] == "delete") {
         $user_deleted = $userhandler->delete_user($uid, 1);
     }
     // Submit the user to stop forum spam
     if (!empty($mybb->settings['purgespammerapikey'])) {
         $sfs = @fetch_remote_file("http://stopforumspam.com/add.php?username="******"&ip_addr=" . urlencode(my_inet_ntop($db->unescape_binary($user['lastip']))) . "&email=" . urlencode($user['email']) . "&api_key=" . urlencode($mybb->settings['purgespammerapikey']));
     }
     log_moderator_action(array('uid' => $uid, 'username' => $user['username']), $lang->purgespammer_modlog);
     if ($user_deleted) {
         redirect($mybb->settings['bburl'], $lang->purgespammer_success);
     } else {
         redirect(get_profile_link($uid), $lang->purgespammer_success);
     }
 } else {
     if ($mybb->input['action'] == "purgespammer") {
         $plugins->run_hooks("moderation_purgespammer_show");
         add_breadcrumb($lang->purgespammer);