Revert r54244 which was stupid and fix this properly. Require commandLine.inc/Mainten...
[lhc/web/wiklou.git] / maintenance / refreshImageCount.php
index 797cedd..44794cc 100644 (file)
@@ -1,16 +1,54 @@
 <?php
+/**
+ * Quickie hack; patch-ss_images.sql uses variables which don't
+ * replicate properly.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
 
-// Quickie hack; patch-ss_images.sql uses variables which don't
-// replicate properly.
+require_once( dirname(__FILE__) . '/Maintenance.php' );
 
-require_once( "commandLine.inc" );
+class RefreshImageCount extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Resets ss_image count, forcing slaves to pick it up.";
+       }
+       
+       public function execute() {
+               $dbw = wfGetDB( DB_MASTER );
 
-$dbw =& wfGetDB( DB_MASTER );
-$count = $dbw->selectField( 'image', 'COUNT(*)' );
+               // Load the current value from the master
+               $count = $dbw->selectField( 'site_stats', 'ss_images' );
 
-echo "$wgDBname: setting ss_images to $count\n";
-$dbw->update( 'site_stats',
-       array( 'ss_images' => $count ),
-       array( 'ss_row_id' => 1 ) );
+               $this->output( wfWikiID() . ": forcing ss_images to $count\n" );
+
+               // First set to NULL so that it changes on the master
+               $dbw->update( 'site_stats',
+                       array( 'ss_images' => null ),
+                       array( 'ss_row_id' => 1 ) );
+       
+               // Now this update will be forced to go out
+               $dbw->update( 'site_stats',
+                       array( 'ss_images' => $count ),
+                       array( 'ss_row_id' => 1 ) );
+                       }
+}
+
+$maintClass = "RefreshImageCount";
+require_once( DO_MAINTENANCE );
 
-?>
\ No newline at end of file