Oppaitime's version of Gazelle
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lock_old_threads.php 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?
  2. //------------- Lock old threads ----------------------------------------//
  3. $DB->query("
  4. SELECT t.ID, t.ForumID
  5. FROM forums_topics AS t
  6. JOIN forums AS f ON t.ForumID = f.ID
  7. WHERE t.IsLocked = '0'
  8. AND t.IsSticky = '0'
  9. AND DATEDIFF(CURDATE(), DATE(t.LastPostTime)) / 7 > f.AutoLockWeeks
  10. AND f.AutoLock = '1'");
  11. $IDs = $DB->collect('ID');
  12. $ForumIDs = $DB->collect('ForumID');
  13. if (count($IDs) > 0) {
  14. $LockIDs = implode(',', $IDs);
  15. $DB->query("
  16. UPDATE forums_topics
  17. SET IsLocked = '1'
  18. WHERE ID IN($LockIDs)");
  19. sleep(2);
  20. $DB->query("
  21. DELETE FROM forums_last_read_topics
  22. WHERE TopicID IN($LockIDs)");
  23. foreach ($IDs as $ID) {
  24. $Cache->begin_transaction("thread_$ID".'_info');
  25. $Cache->update_row(false, array('IsLocked' => '1'));
  26. $Cache->commit_transaction(3600 * 24 * 30);
  27. $Cache->expire_value("thread_$ID".'_catalogue_0', 3600 * 24 * 30);
  28. $Cache->expire_value("thread_$ID".'_info', 3600 * 24 * 30);
  29. Forums::add_topic_note($ID, 'Locked automatically by schedule', 0);
  30. }
  31. $ForumIDs = array_flip(array_flip($ForumIDs));
  32. foreach ($ForumIDs as $ForumID) {
  33. $Cache->delete_value("forums_$ForumID");
  34. }
  35. }
  36. echo "Old threads locked\n";
  37. ?>