]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - scripts/triminboxes.php
Merge branch '0.9.x' of git@gitorious.org:laconica/mainline into 0.9.x
[quix0rs-gnu-social.git] / scripts / triminboxes.php
index 0d2eaeaf09263e0d3bed6f50110855b38c752e26..27e200fef3a671ce0dbcb78165faed46ee4d312c 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-# Abort if called from a web server
-if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
-    print "This script must be run from the command line\n";
-    exit(1);
-}
-
-ini_set("max_execution_time", "0");
-ini_set("max_input_time", "0");
-set_time_limit(0);
-mb_internal_encoding('UTF-8');
-
 define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
-define('LACONICA', true);
-
-require_once(INSTALLDIR . '/lib/common.php');
-
-$user = new User();
-if ($argc > 1) {
-    $user->whereAdd('id > ' . $argv[1]);
-}
-$cnt = $user->find();
-
-while ($user->fetch()) {
-
-    $inbox_entry = new Notice_inbox();
-    $inbox_entry->user_id = $user->id;
-    $inbox_entry->orderBy('created DESC');
-    $inbox_entry->limit(1000, 1);
 
-    $id = null;
+$shortoptions = 'u::';
+$longoptions = array('start-user-id::');
 
-    if ($inbox_entry->find(true)) {
-        $id = $inbox_entry->notice_id;
-    }
+$helptext = <<<END_OF_TRIM_HELP
+Batch script for trimming notice inboxes to a reasonable size.
 
-    $inbox_entry->free();
-    unset($inbox_entry);
+    -u <id>
+    --start-user-id=<id>   User ID to start after. Default is all.
 
-    if (is_null($id)) {
-        continue;
-    }
+END_OF_TRIM_HELP;
 
-    $start = microtime(true);
+require_once INSTALLDIR.'/scripts/commandline.inc';
 
-    $old_inbox = new Notice_inbox();
-    $cnt = $old_inbox->query('DELETE from notice_inbox WHERE user_id = ' . $user->id . ' AND notice_id < ' . $id);
-    $old_inbox->free();
-    unset($old_inbox);
+$id = null;
 
-    print "Deleted $cnt notices for $user->nickname ($user->id).\n";
+if (have_option('u')) {
+    $id = get_option_value('u');
+} else if (have_option('--start-user-id')) {
+    $id = get_option_value('--start-user-id');
+} else {
+    $id = null;
+}
 
-    $finish = microtime(true);
+$user = new User();
 
-    $delay = 3.0 * ($finish - $start);
+if (!empty($id)) {
+    $user->whereAdd('id > ' . $id);
+}
 
-    print "Delaying $delay seconds...";
-    
-    // Wait to let slaves catch up
+$cnt = $user->find();
 
-    usleep($delay * 1000000);
-    
-    print "DONE.\n";
+while ($user->fetch()) {
+    Notice_inbox::gc($user->id);
 }