function acp_rebuild_forum_counters()
{
    global $db, $mybb, $lang;
    $query = $db->simple_select("forums", "COUNT(*) as num_forums");
    $num_forums = $db->fetch_field($query, 'num_forums');
    $page = intval($mybb->input['page']);
    $per_page = intval($mybb->input['forumcounters']);
    $start = ($page - 1) * $per_page;
    $end = $start + $per_page;
    $query = $db->simple_select("forums", "fid", '', array('order_by' => 'fid', 'order_dir' => 'asc', 'limit_start' => $start, 'limit' => $per_page));
    while ($forum = $db->fetch_array($query)) {
        $update['parentlist'] = make_parent_list($forum['fid']);
        $db->update_query("forums", $update, "fid='{$forum['fid']}'");
        rebuild_forum_counters($forum['fid']);
    }
    check_proceed($num_forums, $end, ++$page, $per_page, "forumcounters", "do_rebuildforumcounters", $lang->success_rebuilt_forum_counters);
}
Example #2
0
             $query = $db->simple_select("threads", "tid", "tid IN (" . $sql_array . ")", array('order_by' => 'tid', 'order_dir' => 'asc'));
             while ($thread = $db->fetch_array($query)) {
                 rebuild_thread_counters($thread['tid']);
             }
         }
         // After updating thread counters, update the affected forum counters
         if (is_array($prune_array['forum_update']) && count($prune_array['forum_update']) > 0) {
             $sql_array = implode(",", $prune_array['forum_update']);
             $query = $db->simple_select("forums", "fid", "fid IN (" . $sql_array . ")", array('order_by' => 'fid', 'order_dir' => 'asc'));
             while ($forum = $db->fetch_array($query)) {
                 // Because we have a recursive array merge, check to see if there isn't a duplicated forum to update
                 if ($looped_forum == $forum['fid']) {
                     continue;
                 }
                 $looped_forum = $forum['fid'];
                 rebuild_forum_counters($forum['fid']);
             }
         }
         //log_admin_action();
         my_unsetcookie("inlinemod_useracp");
         // We've got our users, remove the cookie
         flash_message($lang->prune_complete, 'success');
         admin_redirect("index.php?module=user-users" . $vid_url);
     }
 }
 $page->output_header($lang->manage_users);
 $page->output_nav_tabs($sub_tabs, 'manage_users');
 // Display a table warning
 $table = new Table();
 $lang->mass_prune_info = $lang->sprintf($lang->mass_prune_info, count($selected));
 $table->construct_cell($lang->mass_prune_info);
Example #3
0
 /**
  * Rebuild counters, and lastpost information right after importing posts
  *
  */
 public function counters_cleanup()
 {
     global $db, $output, $import_session;
     $output->print_header("Rebuilding Counters");
     $this->debug->log->trace0("Rebuilding thread, forum, and statistic counters");
     $output->construct_progress_bar();
     echo "<br />\nRebuilding thread, forum, and statistic counters...(This may take a while)<br /><br />\n";
     echo "<br />\nRebuilding thread counters... ";
     flush();
     // Rebuild thread counters, forum counters, user post counters, last post* and thread username
     $query = $db->simple_select("threads", "COUNT(*) as count", "import_tid != 0");
     $num_imported_threads = $db->fetch_field($query, "count");
     $progress = $last_percent = 0;
     if ($import_session['counters_cleanup_start'] < $num_imported_threads) {
         $this->debug->log->trace1("Rebuilding thread counters");
         $progress = $import_session['counters_cleanup_start'];
         $query = $db->simple_select("threads", "tid", "import_tid != 0", array('order_by' => 'tid', 'order_dir' => 'asc', 'limit_start' => intval($import_session['counters_cleanup_start']), 'limit' => 1000));
         while ($thread = $db->fetch_array($query)) {
             rebuild_thread_counters($thread['tid']);
             ++$progress;
             if ($progress % 5 == 0) {
                 if ($progress % 100 == 0) {
                     check_memory();
                 }
                 $percent = round($progress / $num_imported_threads * 100, 1);
                 if ($percent != $last_percent) {
                     $output->update_progress_bar($percent, "Rebuilding counters for thread #{$thread['tid']}");
                 }
                 $last_percent = $percent;
             }
         }
         $import_session['counters_cleanup_start'] += $progress;
         if ($import_session['counters_cleanup_start'] >= $num_imported_threads) {
             $this->debug->log->trace1("Finished rebuilding thread counters");
             $import_session['counters_cleanup'] = 0;
             echo "done.";
             flush();
             return;
         }
         $import_session['counters_cleanup'] = 1;
         return;
     }
     if ($import_session['counters_cleanup_start'] >= $num_imported_threads) {
         $this->debug->log->trace1("Rebuilding forum counters");
         echo "done. <br />Rebuilding forum counters... ";
         flush();
         $query = $db->simple_select("forums", "COUNT(*) as count", "import_fid != 0");
         $num_imported_forums = $db->fetch_field($query, "count");
         $progress = 0;
         $query = $db->simple_select("forums", "fid", "import_fid != 0", array('order_by' => 'fid', 'order_dir' => 'asc'));
         while ($forum = $db->fetch_array($query)) {
             rebuild_forum_counters($forum['fid']);
             ++$progress;
             $output->update_progress_bar(round($progress / $num_imported_forums * 50, 1) + 100, "Rebuilding counters for forum #{$forum['fid']}");
         }
         $output->update_progress_bar(150);
         $query = $db->simple_select("forums", "fid", "usepostcounts = 0");
         while ($forum = $db->fetch_array($query)) {
             $fids[] = $forum['fid'];
         }
         if (is_array($fids)) {
             $fids = implode(',', $fids);
         }
         if ($fids) {
             $fids = " AND fid NOT IN({$fids})";
         } else {
             $fids = "";
         }
         $this->debug->log->trace1("Rebuilding user counters");
         echo "done. <br />Rebuilding user counters... ";
         flush();
         $query = $db->simple_select("users", "COUNT(*) as count", "import_uid != 0");
         $num_imported_users = $db->fetch_field($query, "count");
         $progress = $last_percent = 0;
         $query = $db->simple_select("users", "uid", "import_uid != 0");
         while ($user = $db->fetch_array($query)) {
             $query2 = $db->simple_select("posts", "COUNT(*) AS post_count", "uid='{$user['uid']}' AND visible > 0{$fids}");
             $num_posts = $db->fetch_field($query2, "post_count");
             $db->free_result($query2);
             $db->update_query("users", array("postnum" => intval($num_posts)), "uid='{$user['uid']}'");
             ++$progress;
             $percent = round($progress / $num_imported_users * 50 + 150, 1);
             if ($percent != $last_percent) {
                 $output->update_progress_bar($percent, "Rebuilding counters for user #{$user['uid']}");
             }
             $last_percent = $percent;
         }
         // TODO: recount user posts doesn't seem to work
         $output->update_progress_bar(200, "Please wait...");
         echo "done.<br />";
         flush();
         sleep(3);
     }
 }