Auto lock for old posts

Looking for a MOD? Have a MOD request? Post here for help. (Note: This forum is community supported; phpBB does not have official MOD authors)
Get Involved
adiz
Registered User
Posts: 59
Joined: Wed Aug 05, 2009 1:22 pm

Auto lock for old posts

Post by adiz » Mon Dec 21, 2009 2:11 pm

I would like to lock old post automatically.

Any post that didn't have a reply for the last 30 days, will be locked automatically.

Any mod or code for this one?

User avatar
Skinny Vinny
Registered User
Posts: 230
Joined: Tue Dec 01, 2009 7:10 pm

Re: Auto lock for old posts

Post by Skinny Vinny » Mon Dec 21, 2009 3:55 pm

Always backup your database before installing mods on a production board, and test first on a copy whenever possible!

That said...
In cron.php (at or around line 63), find

Code: Select all

// another cron process altered the table between script start and UPDATE query so exit
if ($db->sql_affectedrows() != 1)
{
	exit;
}
Add below (before switch ($cron_type)):

Code: Select all

$lock=time()-86400*30;
$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."' where topic_last_post_time<".$lock;
$db->sql_query($sql);
This exact position isnt important, but keeps calls from running in parallel with the rest of the cron tasks. It's a simple update, so that's really not a big deal here.

May take up to an hour to run when loaded to a live board. For an immediate run, you could throw it onto almost any phpbb33 page script (index, veiwtopic, etc), but remove it afterwards (otherwise it will run on every request for that page).

You could edit the '30' in the $lock line to however many days you want.
Also, if you wanted an auto lock on only selected forums (or skip selected forums), that would be a pretty simple addition to this.

Nothing fancy here, but hope it helps.

adiz
Registered User
Posts: 59
Joined: Wed Aug 05, 2009 1:22 pm

Re: Auto lock for old posts

Post by adiz » Tue Dec 22, 2009 12:07 pm

Thank you very much!

If I would like to run it for test after 5 minutes, do I need to change the code to this -

Code: Select all

$lock=time()-300*1;
$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."' where topic_last_post_time<".$lock;
$db->sql_query($sql);

User avatar
Skinny Vinny
Registered User
Posts: 230
Joined: Tue Dec 01, 2009 7:10 pm

Re: Auto lock for old posts

Post by Skinny Vinny » Tue Dec 22, 2009 6:34 pm

Yes, that will lock anything older than 300 seconds (*1 not needed there but won't hurt it). If running it from the cron.php file though, note that the cron file only pulls through if last run was over an hour ago.

pro_hunter
Registered User
Posts: 138
Joined: Mon Nov 19, 2007 7:49 pm

Re: Auto lock for old posts

Post by pro_hunter » Mon May 10, 2010 11:04 pm

will this work on 3.0.7 ???

or is there a mod i could use.

tried Post Expire viewtopic.php?t=1976495

but i got errors so put my my original php files

Rattus Norvegicus
Registered User
Posts: 5
Joined: Wed Apr 20, 2011 9:06 pm

Re: Auto lock for old posts

Post by Rattus Norvegicus » Thu Apr 21, 2011 11:13 am

adiz wrote:Thank you very much!

If I would like to run it for test after 5 minutes, do I need to change the code to this -

Code: Select all

$lock=time()-300*1;
$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."' where topic_last_post_time<".$lock;
$db->sql_query($sql);
I have used this cron job for a few months now, and it works perfectly.

But can anyone tell me if it's possible to specify wich forums this cron job will affect instead of all of them... and how this is done?

angelorosso
Registered User
Posts: 9
Joined: Sun Apr 22, 2012 4:32 pm

Re: Auto lock for old posts

Post by angelorosso » Sun Nov 04, 2012 8:21 pm

I have the same problem: it's possible to apply this function in some sections of forum?

User avatar
HGN
Former Team Member
Posts: 4706
Joined: Wed Dec 03, 2008 1:53 pm
Location: The Netherlands
Name: Alfred
Contact:

Re: Auto lock for old posts

Post by HGN » Sun Nov 04, 2012 10:27 pm

You have to know the forum_id's of the forums you want to apply the function to.

The code should be changed to

Code: Select all

$lock=time()-86400*30;
$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."' where topic_last_post_time<".$lock." AND forum_id IN (id1, id2, id3)";
$db->sql_query($sql);
Replace id1, id2, id3 with the applicable forum id's .

angelorosso
Registered User
Posts: 9
Joined: Sun Apr 22, 2012 4:32 pm

Re: Auto lock for old posts

Post by angelorosso » Mon Nov 05, 2012 8:33 pm

Ok, thanks!!!! :D

angelorosso
Registered User
Posts: 9
Joined: Sun Apr 22, 2012 4:32 pm

Re: Auto lock for old posts

Post by angelorosso » Wed Nov 07, 2012 5:37 pm

Hi guys, I've another question....

it's possible to move topic in other section????

for example, it's possible this for move topic after 7 day of their closer?

Code: Select all

$move=time()-86400*37;
$sql="update ".TOPICS_TABLE." set forum_id='".id1."' where topic_last_post_time<".$move." AND forum_id IN (id1, id2, id3)";
$db->sql_query($sql);
]

and in this code

Code: Select all

$lock=time()-86400*30;
$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."' where topic_last_post_time<".$lock." AND forum_id IN (id1, id2, id3)";
$db->sql_query($sql);
it's possible change this

Code: Select all

$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."'
in this?

Code: Select all

$sql="update ".TOPICS_TABLE." set topic_status='".1."'
because i've noted that in "topic_status" there is 1 for close topic, and 0 for open topic

angelorosso
Registered User
Posts: 9
Joined: Sun Apr 22, 2012 4:32 pm

Re: Auto lock for old posts

Post by angelorosso » Fri Nov 09, 2012 1:07 pm

up :D

angelorosso
Registered User
Posts: 9
Joined: Sun Apr 22, 2012 4:32 pm

Re: Auto lock for old posts

Post by angelorosso » Sun Nov 11, 2012 8:51 am

*** this is my error, MOD can delete this message, thanks

User avatar
HGN
Former Team Member
Posts: 4706
Joined: Wed Dec 03, 2008 1:53 pm
Location: The Netherlands
Name: Alfred
Contact:

Re: Auto lock for old posts

Post by HGN » Sun Nov 11, 2012 11:04 am

Did you try?

I modified your suggested code a little bit

Code: Select all

$move=time()-86400*37;
$sql="update ".TOPICS_TABLE." set forum_id= 'new_id' where topic_last_post_time<".$move." AND forum_id IN (id1, id2, id3)";
$db->sql_query($sql);
Replace new_id with the actual forum_id you want to have the topic go to.
Make a database backup and try...


[quote=""angelorosso"]

Code: Select all

$lock=time()-86400*30;
$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."' where topic_last_post_time<".$lock." AND forum_id IN (id1, id2, id3)";
$db->sql_query($sql);
it's possible change this

Code: Select all

$sql="update ".TOPICS_TABLE." set topic_status='".ITEM_LOCKED."'
in this?

Code: Select all

$sql="update ".TOPICS_TABLE." set topic_status='".1."'
because i've noted that in "topic_status" there is 1 for close topic, and 0 for open topic[/quote]
Why would you want to do that?
It should be possible to use the following, but I don't see a valid reason.

Code: Select all

$sql="update ".TOPICS_TABLE." set topic_status = '1' 

angelorosso
Registered User
Posts: 9
Joined: Sun Apr 22, 2012 4:32 pm

Re: Auto lock for old posts

Post by angelorosso » Sun Nov 11, 2012 1:37 pm

Thanks! ;)

User avatar
imkingdavid
Former Team Member
Posts: 2664
Joined: Sun Jul 26, 2009 7:59 pm
Location: EST
Name: David King
Contact:

Re: Auto lock for old posts

Post by imkingdavid » Mon Nov 12, 2012 1:17 am

Just so you know, I created a MOD that adds a topic age notification and optionally automatically locks topics that are deemed "old" (aka age is greater than the specified threshold). This doesn't lock the topics unless a user attempts to reply to it, and only if you have it set to lock old topics in the ACP. https://www.phpbb.com/customise/db/mod/ ... e_warning/
This also does not provide for moving the topic after a given amount of time (e.g. moving to a trash or archive forum), but that is a good idea for a future version.
Don't forget to smile today. :)
Please do NOT contact for support via PM or email.
Remember, the enemy's gate is down.

Locked

Return to “[3.0.x] MOD Requests”

Who is online

Users browsing this forum: No registered users and 7 guests