/** * MyBB 1.8 * Copyright 2014 MyBB Group, All Rights Reserved * * Website: http://www.mybb.com * License: http://www.mybb.com/about/license * */ function task_usercleanup($task) { global $db, $lang, $cache, $plugins; // Expire any old warnings require_once MYBB_ROOT . 'inc/datahandlers/warnings.php'; $warningshandler = new WarningsHandler('update'); $warningshandler->expire_warnings(); // Expire any post moderation or suspension limits $query = $db->simple_select("users", "uid, moderationtime, suspensiontime", "(moderationtime!=0 AND moderationtime<" . TIME_NOW . ") OR (suspensiontime!=0 AND suspensiontime<" . TIME_NOW . ")"); while ($user = $db->fetch_array($query)) { $updated_user = array(); if ($user['moderationtime'] != 0 && $user['moderationtime'] < TIME_NOW) { $updated_user['moderateposts'] = 0; $updated_user['moderationtime'] = 0; } if ($user['suspensiontime'] != 0 && $user['suspensiontime'] < TIME_NOW) { $updated_user['suspendposting'] = 0; $updated_user['suspensiontime'] = 0; } $db->update_query("users", $updated_user, "uid='{$user['uid']}'"); } // Expire any suspended signatures $query = $db->simple_select("users", "uid, suspendsigtime", "suspendsignature != 0 AND suspendsigtime < '" . TIME_NOW . "'"); while ($user = $db->fetch_array($query)) { if ($user['suspendsigtime'] != 0 && $user['suspendsigtime'] < TIME_NOW) { $updated_user = array("suspendsignature" => 0, "suspendsigtime" => 0); $db->update_query("users", $updated_user, "uid='" . $user['uid'] . "'"); } } // Expire bans $query = $db->simple_select("banned", "*", "lifted!=0 AND lifted<" . TIME_NOW); while ($ban = $db->fetch_array($query)) { $updated_user = array("usergroup" => $ban['oldgroup'], "additionalgroups" => $ban['oldadditionalgroups'], "displaygroup" => $ban['olddisplaygroup']); $db->update_query("users", $updated_user, "uid='{$ban['uid']}'"); $db->delete_query("banned", "uid='{$ban['uid']}'"); } $cache->update_moderators(); if (is_object($plugins)) { $plugins->run_hooks('task_usercleanup', $task); } add_task_log($task, $lang->task_usercleanup_ran); }
} $latest_warnings = ''; if ($mybb->settings['enablewarningsystem'] != 0 && $mybb->settings['canviewownwarning'] != 0) { if ($mybb->settings['maxwarningpoints'] < 1) { $mybb->settings['maxwarningpoints'] = 10; } $warning_level = round($mybb->user['warningpoints'] / $mybb->settings['maxwarningpoints'] * 100); if ($warning_level > 100) { $warning_level = 100; } if ($mybb->user['warningpoints'] > $mybb->settings['maxwarningpoints']) { $mybb->user['warningpoints'] = $mybb->settings['maxwarningpoints']; } if ($warning_level > 0) { require_once MYBB_ROOT . 'inc/datahandlers/warnings.php'; $warningshandler = new WarningsHandler('update'); $warningshandler->expire_warnings(); $lang->current_warning_level = $lang->sprintf($lang->current_warning_level, $warning_level, $mybb->user['warningpoints'], $mybb->settings['maxwarningpoints']); $warnings = ''; // Fetch latest warnings $query = $db->query("\n\t\t\t\tSELECT w.*, t.title AS type_title, u.username, p.subject AS post_subject\n\t\t\t\tFROM " . TABLE_PREFIX . "warnings w\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "warningtypes t ON (t.tid=w.tid)\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=w.issuedby)\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "posts p ON (p.pid=w.pid)\n\t\t\t\tWHERE w.uid='{$mybb->user['uid']}'\n\t\t\t\tORDER BY w.expired ASC, w.dateline DESC\n\t\t\t\tLIMIT 5\n\t\t\t"); while ($warning = $db->fetch_array($query)) { $post_link = ""; if ($warning['post_subject']) { $warning['post_subject'] = $parser->parse_badwords($warning['post_subject']); $warning['post_subject'] = htmlspecialchars_uni($warning['post_subject']); $warning['postlink'] = get_post_link($warning['pid']); eval("\$post_link .= \"" . $templates->get("usercp_warnings_warning_post") . "\";"); } $issuedby = build_profile_link($warning['username'], $warning['issuedby']); $date_issued = my_date('relative', $warning['dateline']);
define('THIS_SCRIPT', 'warnings.php'); $templatelist = "warnings,warnings_warn_post,warnings_active_header,warnings_expired_header,warnings_warning,warnings_warn_existing,warnings_warn_type,warnings_warn_custom,warnings_warn_pm"; $templatelist .= ",warnings_view_post,warnings_view_user,warnings_view_revoke,warnings_view_revoked,smilieinsert_getmore,smilieinsert_smilie,smilieinsert_smilie_empty,smilieinsert,warnings_warn_type_result"; $templatelist .= ",multipage,multipage_end,multipage_jump_page,multipage_nextpage,multipage_page,multipage_page_current,multipage_page_link_current,multipage_prevpage,multipage_start,warnings_no_warnings,codebuttons,warnings_warn,warnings_view,warnings_warn_pm_anonymous"; require_once "./global.php"; require_once MYBB_ROOT . "inc/functions_warnings.php"; require_once MYBB_ROOT . "inc/functions_modcp.php"; require_once MYBB_ROOT . "inc/class_parser.php"; $parser = new postParser(); $lang->load("warnings"); if ($mybb->settings['enablewarningsystem'] == 0) { error($lang->error_warning_system_disabled); } // Expire old warnings require_once MYBB_ROOT . 'inc/datahandlers/warnings.php'; $warningshandler = new WarningsHandler('update'); $warningshandler->expire_warnings(); $mybb->input['action'] = $mybb->get_input('action'); $plugins->run_hooks("warnings_start"); // Actually warn a user if ($mybb->input['action'] == "do_warn" && $mybb->request_method == "post") { // Verify incoming POST request verify_post_check($mybb->get_input('my_post_key')); if ($mybb->usergroup['canwarnusers'] != 1) { error_no_permission(); } $user = get_user($mybb->get_input('uid', MyBB::INPUT_INT)); if (!$user['uid']) { error($lang->error_invalid_user); } $group_permissions = user_permissions($user['uid']);
/** * Expire old warnings in the database. * * @return bool */ function expire_warnings() { global $warningshandler; if (!is_object($warningshandler)) { require_once MYBB_ROOT . 'inc/datahandlers/warnings.php'; $warningshandler = new WarningsHandler('update'); } return $warningshandler->expire_warnings(); }