PDA

View Full Version : My idea for thread archiving


TurboFC3S
06-17-2001, 08:01 PM
I would love to see some sort of archiving features in vBulletin. But just archive everything over x days old isn't exactly what I would like to see. Running a technical based forum, the same questions come up over and over again, so here's my idea for how to archive them.

Basically you would have a forum, and a corresponding archive for that forum. Then if a thread reaches a set rating with a minimum number of votes, the thread is automatically moved to a non-writable archive for that forum. That way only the good threads are archived, and you can then prune the forum without losing anything good.

Options for it could be:
Moderator approval - have an admin page where the threads are stored in queue. If the moderator ok's the move to the archive, then the thread is moved.
Choices of where to move - give users the choice of moving threads from one or many forums into one or many archives.
Archiving variables - allow the rating and minimum number of votes to be set in the control panel, or another admin page.

And something else that might be an entirely different hack would be download archive. Something to basically turn the entire archive into one big HTML or zip file that you download for your own use at home.

So what do you think? Feedback?

TurboFC3S
06-20-2001, 12:48 PM
So I guess nobody likes this idea? Or would it be to hard to implement?

Deacon Frost
07-21-2001, 05:09 PM
well, I like this idea...

My Problem is, on my host, I can't create DBs bigger than 100 MB... So I've to prune old threads all the time... this is very depressing, because there aren't still all threads available.

So I'm lookin' for a hack, which is archiving all old threads (which have no new posts since XX days) in static html-files and create links to them in a (maybe) "Archiv-Forum".

Sorry for my english:)

Deacon Frost
07-29-2001, 07:04 AM
*bump* there are lots of great hack-writers, an noone wants to help me? I can't believe it :)

TurboFC3S
08-20-2001, 06:24 PM
It's looking like I'm going to have to pay to get this one done...

theflow
08-21-2001, 09:30 PM
Turbo, it's been my experience that a number of the great hack writers here do not even look at the "Requests" subforum. Try reposting your request in the "free for all" area here:

http://www.vbulletin.com/forum/forumdisplay.php?s=&forumid=8

**Note: I've suggested to the vB Moderators that they re-org this whole hacks forum because they say "be sure to make requests in the Requests forum", yet 95% of all requests are actualy made in this free-for-all area. It's an inconsistent mess, even if the intentions were good.

You might also try a PM to Firefly, who is new to vB, but who has just kicked ass with a number of great hacks which have been very helpful to me. Also, I have made several attempts to pay people to accomplish some desired hacks. In general, no responses. One person who was willing to attempt some hacking for a reasonable hourly fee was:

s.molinari:
PM:
http://www.vbulletin.com/forum/private.php?s=&action=newmessage&userid=626

Good luck

Admin
08-22-2001, 05:34 AM
* FireFly bookmarks this page :)

Admin
08-22-2001, 01:16 PM
Ok I started working on it.

It will be a part of moving threads (where you have the option to move by username or date). You will be able to move all, or selectively.
I'll keep you informed of my progress.

Wish me luck! :D

EDIT:
I could really use a testing forum. I would test everything on a copy of my forum, but it's not very popular and has no thread votes.
So I would really appreciate if you (TurboFC3S) could send me a backup of your forum, with fake passwords (so I won't see them.
It would really really help me.
Thanks.

Admin
08-22-2001, 02:48 PM
Looks like I'm done, now I only need a forum to test this on. :rolleyes:
Any volunteers in the audience? :p

Admin
08-22-2001, 04:26 PM
Just so you can see what I came up with, take a look at the screen shot I attached. :)

Forgot to mention that if you want I can make it close the threads, so you won't have to make the archive forums "read only". :)

theflow
08-22-2001, 06:46 PM
Firefly, I'd let you use my forums but they're not open yet and no traffic yet either... plus I've got a headcold and groggy. But if you accomplished the task, again, great work. You are at one with vBulletin :)

Admin
08-22-2001, 07:03 PM
Thanks Richard. :D

I really just need a database, just so I could install it somewhere and test the added functions on it.

Admin
08-24-2001, 05:10 AM
Um... TurboFC3S? Anyone?
Tell me I didn't do this for nothing.

TurboFC3S
08-24-2001, 09:25 PM
FireFly, WOW! I didn't expect somebody to just whip it out. Tell me what exactly you need me to do. You can either reply here or e-mail me at turbo@nothnbut.net

Thanks!

Admin
08-27-2001, 01:27 PM
Open thread.php under your admin folder.
Add this code
// ###################### Start Move by Rate #######################
if ($HTTP_POST_VARS['action']=="moverate") {
if ($numvotes=="" or $minrate=="") {
echo "<p>Please enter number of votes and average rate</p>";
exit;
}

if ($confirm!=1) {

if ($forumid==-1) {
$forumtitle="all";
} else {
$forum=$DB_site->query_first("SELECT title FROM forum WHERE forumid=$forumid");
$forumtitle=$forum[title];
}
echo "<p>You are about to move all threads from the $forumtitle forum older than $daysmove day(s).";

doformheader("thread","moverate");
maketableheader("Move All Threads Automatically");
makehiddencode("forumid", "$forumid");
makehiddencode("numvotes", "$numvotes");
makehiddencode("minrate", "$minrate");
makehiddencode("destforumid", "$destforumid");
makehiddencode("confirm", "1");
doformfooter("Click Here to Move All Threads Automatically","",2);

doformheader("thread","moveratesel");
maketableheader("Move Threads Selectively");
makehiddencode("forumid", "$forumid");
makehiddencode("numvotes", "$numvotes");
makehiddencode("minrate", "$minrate");
makehiddencode("destforumid", "$destforumid");
doformfooter("Click Here to Move Threads Selectively","",2);

exit;
}

$forumcheck=iif($forumid!=-1,"forumid=$forumid AND ","");

$DB_site->query("UPDATE thread SET forumid=$destforumid WHERE $forumcheck votenum>=$numvotes AND votetotal/votenum>=$minrate");

echo "<p>Posts moved successfully! It is recommend that you <a href=\"misc.php?s=$session[sessionhash]\">update counters</a> now.</p>";
}

// ###################### Start Move by rate selector #######################
if ($action=="moveratesel") {

doformheader("thread","domoverate");
makehiddencode("destforumid",$destforumid);
maketableheader("Move Threads Selectively");

$forumcheck=iif($forumid!=-1,"forumid=$forumid AND ","");

$threads=$DB_site->query("SELECT threadid,title,votenum,votetotal,replycount,postus ername,postuserid FROM thread WHERE $forumcheck votenum>=$numvotes AND votetotal/votenum>=$minrate ORDER BY lastpost DESC");
while ($thread=$DB_site->fetch_array($threads)) {
$threadavg = $thread[votetotal]/$thread[votenum];
makeyesnocode("<a href=\"../showthread.php?s=$session[sessionhash]&threadid=$thread[threadid]\" target=\"_blank\">$thread[title]</a><br>&nbsp;&nbsp;With <b>$thread[votenum]</b> and an average of <b>$threadavg</b><br>&nbsp;&nbsp;Started by <a href=\"../member.php?s=$session[sessionhash]&action=getinfo&userid=$thread[postuserid]\" target=\"_blank\">$thread[postusername]</a><br>&nbsp;&nbsp;$thread[replycount] replies","move[$thread[threadid]]",1);
}

doformfooter("Submit - only click here if you are ABSOLUTELY certain");
}

// ###################### Start Move by rate selected #######################
if ($HTTP_POST_VARS['action']=="domoverate") {

echo "<p>Moving...</p>";

while (list($key,$val)=each($move)) {
if ($val==1) {
$DB_site->query("UPDATE thread SET forumid=$destforumid WHERE threadid=$key");
}
}

echo "<p>Posts moved successfully! It is recommend that you <a href=\"misc.php?s=$session[sessionhash]\">update counters</a> now.</p>";
}
right before
// ###################### Start by Move Date #######################
Now add
doformheader("thread","moverate");
maketableheader("Move by rate");
makeinputcode("Move threads with at least x votes:","numvotes");
makeinputcode("Move threads with average rate of at least x:","minrate");
makeforumchoosercode("Source Forum","forumid",-1,"All forums");
makeforumchoosercode("Destination Forum","destforumid");
makelabelcode("Note: this will not move posts from sub forums!");

doformfooter("Move");
right before
doformheader("thread","movedate");
maketableheader("Move by date");
makeinputcode("Move threads with last post older than x days:","daysmove","0");
makeforumchoosercode("Source Forum","forumid",-1,"All forums");
makeforumchoosercode("Destination Forum","destforumid");
makelabelcode("Note: this will not move posts from sub forums!");

doformfooter("Move");
And that's it. :)

TurboFC3S
08-28-2001, 02:35 AM
So you used that database I gave you and it tested fine?

Impressive list of hacks btw. If this works, you'll be my hero.

TurboFC3S
08-28-2001, 02:52 AM
One more request. I want to use this for a way to archive threads, so to keep it from moving active threads, could you throw one more variable in for date. Basically just to move if (number of votes = x) and (rating = x) and (date is before xx/xx/xx)

I know you could do it in like 5 seconds, but I'm going to play along at home and see if I can do it... then compare to how you do it :D

Admin
08-29-2001, 04:27 PM
Replace the whole huge block of PHP you added last post with this block:
// ###################### Start by Move Rate #######################
if ($HTTP_POST_VARS['action']=="moverate") {
if ($numvotes=="" or $minrate=="") {
echo "<p>Please enter number of votes and average rate</p>";
exit;
}

if ($confirm!=1) {

if ($forumid==-1) {
$forumtitle="all";
} else {
$forum=$DB_site->query_first("SELECT title FROM forum WHERE forumid=$forumid");
$forumtitle=$forum[title];
}
echo "<p>You are about to move all threads from the $forumtitle forum older than $daysmove day(s) with an average rate of at least $minrate and at least $numvotes votes.";

doformheader("thread","moverate");
maketableheader("Move All Threads Automatically");
makehiddencode("forumid", "$forumid");
makehiddencode("numvotes", "$numvotes");
makehiddencode("minrate", "$minrate");
makehiddencode("daysmove", "$daysmove");
makehiddencode("destforumid", "$destforumid");
makehiddencode("confirm", "1");
doformfooter("Click Here to Move All Threads Automatically","",2);

doformheader("thread","moveratesel");
maketableheader("Move Threads Selectively");
makehiddencode("forumid", "$forumid");
makehiddencode("numvotes", "$numvotes");
makehiddencode("minrate", "$minrate");
makehiddencode("daysmove", "$daysmove");
makehiddencode("destforumid", "$destforumid");
doformfooter("Click Here to Move Threads Selectively","",2);

exit;
}

$forumcheck=iif($forumid!=-1,"forumid=$forumid AND ","");

if ($daysmove) {
$datecut=time()-($daysmove*86400);
$datecheck="AND lastpost<=$datecut";
}
$DB_site->query("UPDATE thread SET forumid=$destforumid WHERE $forumcheck votenum>=$numvotes AND votetotal/votenum>=$minrate $datecheck");

echo "<p>Posts moved successfully! It is recommend that you <a href=\"misc.php?s=$session[sessionhash]\">update counters</a> now.</p>";
}

// ###################### Start Move by rate selector #######################
if ($action=="moveratesel") {

doformheader("thread","domoverate");
makehiddencode("destforumid",$destforumid);
maketableheader("Move Threads Selectively");

$forumcheck=iif($forumid!=-1,"forumid=$forumid AND ","");

if ($daysmove) {
$datecut=time()-($daysmove*86400);
$datecheck="AND lastpost<=$datecut";
}
$threads=$DB_site->query("SELECT threadid,title,votenum,votetotal,replycount,postus ername,postuserid,lastpost FROM thread WHERE $forumcheck votenum>=$numvotes AND votetotal/votenum>=$minrate $datecheck ORDER BY votetotal/votenum DESC, votenum DESC, lastpost");
while ($thread=$DB_site->fetch_array($threads)) {
$threadavg = $thread[votetotal]/$thread[votenum];
makeyesnocode("<a href=\"../showthread.php?s=$session[sessionhash]&threadid=$thread[threadid]\" target=\"_blank\">$thread[title]</a><br>&nbsp;&nbsp;With <b>$thread[votenum]</b> and an average of <b>$threadavg</b><br>&nbsp;&nbsp;Started by <a href=\"../member.php?s=$session[sessionhash]&action=getinfo&userid=$thread[postuserid]\" target=\"_blank\">$thread[postusername]</a><br>&nbsp;&nbsp;$thread[replycount] replies","move[$thread[threadid]]",1);
}

doformfooter("Submit - only click here if you are ABSOLUTELY certain");
}

// ###################### Start Move by rate selected #######################
if ($HTTP_POST_VARS['action']=="domoverate") {

echo "<p>Moving...</p>";

while (list($key,$val)=each($move)) {
if ($val==1) {
$DB_site->query("UPDATE thread SET forumid=$destforumid WHERE threadid=$key");
}
}

echo "<p>Posts moved successfully! It is recommend that you <a href=\"misc.php?s=$session[sessionhash]\">update counters</a> now.</p>";
}

And now add
makeinputcode("Move threads with last post older than x days:","daysmove","0");
right after
makeinputcode("Move threads with average rate of over x:","minrate");
(everything in thread.php)
That should do what you want. :)

Admin
08-29-2001, 04:42 PM
Ok I updated a little language mistake, and also tested it while at it - works just like I anticipated. :)

TurboFC3S
08-30-2001, 12:10 AM
Thanks again! You are the man ... I actually hacked it and had it working, but I like your way better. Want a job :D

Admin
08-30-2001, 04:48 AM
God I hear that a lot these days. :p

You're welcome (I actually use this myself ya know ;)).

smees
10-04-2006, 09:41 AM
I wonder if this is usable for vbulletin 3.6.

Since this thread is not the youngest, i wonder why such a function is not implemented in standard installation.

We are now looking several days for a modification like this and are getting nearly none replies in the vbulletin boards.

Any help is appreciated :-)

Quarterbore
10-04-2006, 12:13 PM
Here was an idea I threw out there....

https://vborg.vbsupport.ru/showthread.php?t=114702

Same concept... take the old threads and posts and move them to a read only database... when a member wants and old post they can go to the read only archive and see what was posted years ago...

I have not had time to work on this...

Paul M
10-04-2006, 11:06 PM
I wonder if this is usable for vbulletin 3.6.
No, this is over five years old and relates to vbulletin version 2.