PDA

View Full Version : Freezing postcounts during board cleanup


RedTrinity
10-22-2009, 04:58 AM
Hi guys.

I'm planning to do a cleanup of our forum, however I am hoping there is a way I can 'freeze' the postcounts of all members in the meanwhile... in other words, so they have the same post amounts afterwards, even after mass topics have been deleted from the forum.

Basically just want to do a big cleanup without it affecting any post counts at all! Otherwise, with over 1,000 members, it would take too long to restore them manually afterwards.

Can anybody please point me in the right direction for a mod which would help with this, or even might be interested in helping me with their own hack/mod for it?

Thanks in advance :)

Lynne
10-22-2009, 02:12 PM
I have never seen a mod to do this. What you might be able to do is create a new field in the user table and copy the post count to that new field. Then do your maintenance. Then copy the field back to the post counts field.

RedTrinity
10-23-2009, 05:02 AM
Hi Lynne,

Thanks for your advice. Would this method work effectively for a board with a lot of members ie. can it be done in one hit, via an SQL query or the like? It would it have to be done manually per user (ie. one-by-one)?

I'm hoping the first is an option, with the amount of members we have it may take too long to do otherwise.

Cheers :)

dartho
10-23-2009, 06:45 AM
I'm pretty sure you can delete to your hearts content and post numbers won't go down so long as you don't perform a "Update Post Counts" in the maintenance section of the admincp.

[But you should probably perform a database backup first! 1. "just in case" and 2. so you have those soon to be deleted posts save for posterity should you need to go back to them.]

Andreas
10-23-2009, 07:45 AM
This is a somewhat common request which is virtually impossible to achieve, as there are a million + 1 places where the postcount gets updated.

Even if you did backup and restore the postcount, it would get updated to the real numbers the next time you run the maintenance function.

My best advice would be: Don't delete content - or don't care about post counters.

RedTrinity
10-27-2009, 02:32 AM
My best advice would be: Don't delete content - or don't care about post counters.

Unfortunately our database is getting very large, I'm looking to delete older content to free up some space and shrink things down. Otherwise for a non-profit forum, its gonna get too expensive for me to host.

We also have an established post count 'program' where members see it as a big achievement to reach certain post milestones (in fact we have a section specifically where members post about them, and get medals/trophies for it) and we also have postcount restricted areas on our forum too. So we can't really do without the post counters option.

I guess I'll have to keep searching in the meanwhile for a way to do this.

I'm pretty sure you can delete to your hearts content and post numbers won't go down so long as you don't perform a "Update Post Counts" in the maintenance section of the admincp.

[But you should probably perform a database backup first! 1. "just in case" and 2. so you have those soon to be deleted posts save for posterity should you need to go back to them.]

Thanks Dartho, I'll do some testing and see if it works :)

Lynne
10-27-2009, 02:48 AM
Hi Lynne,

Thanks for your advice. Would this method work effectively for a board with a lot of members ie. can it be done in one hit, via an SQL query or the like? It would it have to be done manually per user (ie. one-by-one)?
I was thinking you could just create a new field, like posts2, and then write a query to copy the content from posts to posts2. then, after you were done deleting posts you could just copy it back.

Adrian Schneider
10-27-2009, 02:49 AM
If not, SQL for the win:

Run these before:
CREATE TABLE postcounts (
userid INTEGER UNSIGNED NOT NULL PRIMARY KEY
, posts INTEGER UNSIGNED NOT NULL
);

INSERT INTO postcounts
SELECT userid
, posts
FROM user;Run these after: UPDATE user
INNER
JOIN postcounts
ON postcounts.userid = user.userid
SET user.posts = postcounts.posts;

DROP TABLE postcounts;

Add your prefixes if necessary.

Lynne
10-27-2009, 02:56 AM
^^ Adrian wrote out what I was thinking. :)

RedTrinity
11-24-2009, 10:36 PM
Thanks so much for that, the queries are perfect for what I want to do :)

I do have one more small request though... would there be a similar one for reinstating post/topic counts for the forum stats?

Ie. Members: 1,087, Threads: 25,591, Posts: 420,667

Or where would I edit this afterwards to reflect the counts prior to the changes being made?

Thanks again SirAdrian, you've been a great help sofar!!

PS. Thought I had better note as well in regards to your suggestion Dartho - I did a test and unfortunately postcounts are affected with topic/post deletion, even without touching the maintenance section of the AdminCP! Just to let you know :) I wasn't sure of this beforehand, either.

RedTrinity
11-27-2009, 11:45 PM
Nobody can help me with the last bit? :)

dartho
11-28-2009, 01:37 AM
Create a new plugin:
Product: vBulletin
Hook Location: forumhome_complete
Name: Restore ForumHome Stats
Execution Order: 5
Plugin PHP Code:


function stripcomma($string){
$string = str_replace(',', '', $string);
return $string;
}

/*
Enter in the figures you need to. Suggest you make notes too for your own future reference
Deleted 10,000 users, threads and posts on December 23 2008 added back in here
*/

$num_deleted_threads =10000;
$num_deleted_posts=10000;
$num_deleted_users=10000;

$totalthreads=vb_number_format(stripcomma($totalth reads)+$num_deleted_threads);
$totalposts=vb_number_format(stripcomma($totalpost s)+$num_deleted_posts);
$numbermembers=vb_number_format(stripcomma($number members)+$num_deleted_users);


Modify the following as required.

$num_deleted_threads =10000;
$num_deleted_posts=10000;
$num_deleted_users=10000;

RedTrinity
11-28-2009, 08:45 AM
Hi Dartho,

Thanks for your help. I followed your instructions and set the following, which were the stats for our forum prior to the board cleanup...

$num_deleted_threads=25,627;
$num_deleted_posts=421,341;
$num_deleted_users=1,087;

Have activated the plugin, but the stats haven't changed at all - they reflect the aftermath still. Have I done it correctly? :)

dartho
11-28-2009, 09:00 AM
no commas!

BTW - don't put in the totals, put in teh number you deleted.

eg. if now (after the clean up) you have 5000 threads and previously you had 25627, then $num_deleted_threads=20627; etc ...

RedTrinity
11-28-2009, 09:31 AM
no commas!

BTW - don't put in the totals, put in teh number you deleted.

eg. if now (after the clean up) you have 5000 threads and previously you had 25627, then $num_deleted_threads=20627; etc ...

Oh bugger, I have no idea how many I deleted LOL... I suppose that means I'm gonna have to do the math now, going by the current totals :p ;)

I'll give it a shot now and see how I go, thanks again :)

ETA: Ok, I altered the amounts to reflect the deletions:

$num_deleted_threads=15548;
$num_deleted_posts=247368;
$num_deleted_users=0;

Made sure the plugin is active, still no change though :confused: Do i need to update the counters or anything like that?

dartho
11-28-2009, 09:44 AM
I tested on my live site - let me just check that I haven't missed a vital point...


[Edit]
Tested and working on my site...

I exported teh plugin so it is definately identical - try uploading the attached (disable/delete the one you created manually first)

RedTrinity
11-28-2009, 11:33 PM
Ok I just worked out whats going on :D The default display for our forum stats (ie. at the foot of the forum) is right ie. the plugin is working correctly :) Its the VBAdvanced forum stats box in the left side column thats still wrong :rolleyes:

I don't suppose there is an easy fix to get it working for that too? :)

Its not a huge issue if not, I am grateful for your help regardless Dartho :) Just means I'll have to either edit/remove that box, since its not the same!

Let me know :)

dartho
11-29-2009, 12:11 AM
You could create another plugin with the same code and put it on

Product: vBadvanved CMPS
Hook Location: vba_cmps_module_stats (vbacmps)
Title: vBadvanced Stats

RedTrinity
11-29-2009, 02:08 AM
Got it :D Its all fixed!!!

Thank you so much for all your help!!! I really appreciate it :) Our forum is nice and tidy now - and taking up a lot less database space :)

Cheers :D

ETA: Bugger, spoke too soon... the VBA stats work on all forum pages except for the index page - which goes blank when this plugin is active :S