Merge "Add passing ''italic'''s case to 'Unclosed and unmatched quotes' test"
[lhc/web/wiklou.git] / maintenance / cleanupUploadStash.php
index 4e85472..c8d8924 100644 (file)
@@ -32,50 +32,58 @@ class UploadStashCleanup extends Maintenance {
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Clean up abandoned files in temporary uploaded file stash";
-       }
+       }
 
-       public function execute() {
+       public function execute() {
                $repo = RepoGroup::singleton()->getLocalRepo();
-       
+
                $dbr = $repo->getSlaveDb();
 
                // how far back should this look for files to delete?
                global $wgUploadStashMaxAge;
-               if( $wgUploadStashMaxAge === null ) {
-                       $wgUploadStashMaxAge = 6 * 3600; // default: 6 hours.
-               }
-               
+
                $this->output( "Getting list of files to clean up...\n" );
                $res = $dbr->select(
                        'uploadstash',
                        'us_key',
-                       'us_timestamp < ' . $dbr->timestamp( time() - $wgUploadStashMaxAge ),
+                       'us_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( time() - $wgUploadStashMaxAge ) ),
                        __METHOD__
                );
-               
+
                if( !is_object( $res ) || $res->numRows() == 0 ) {
+                       $this->output( "No files to cleanup!\n" );
                        // nothing to do.
-                       return false;
+                       return;
                }
 
                // finish the read before starting writes.
                $keys = array();
-               foreach($res as $row) {
+               foreach( $res as $row ) {
                        array_push( $keys, $row->us_key );
                }
-               
+
                $this->output( 'Removing ' . count($keys) . " file(s)...\n" );
                // this could be done some other, more direct/efficient way, but using
                // UploadStash's own methods means it's less likely to fall accidentally
                // out-of-date someday
                $stash = new UploadStash( $repo );
-               
+
+               $i = 0;
                foreach( $keys as $key ) {
-                       $stash->getFile( $key, true );
-                       $stash->removeFileNoAuth( $key );
+                       $i++;
+                       try {
+                               $stash->getFile( $key, true );
+                               $stash->removeFileNoAuth( $key );
+                       } catch ( UploadStashBadPathException $ex ) {
+                               $this->output( "Failed removing stashed upload with key: $key\n"  );
+                       }
+                       if ( $i % 100 == 0 ) {
+                               $this->output( "$i\n" );
+                       }
                }
-       }
+               $this->output( "$i done\n" );
+       }
 }
 
 $maintClass = "UploadStashCleanup";
-require_once( RUN_MAINTENANCE_IF_MAIN );
\ No newline at end of file
+require_once( RUN_MAINTENANCE_IF_MAIN );