[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/maintenance/ -> populateLogUsertext.php (source)

   1  <?php
   2  /**
   3   * Makes the required database updates for Special:ProtectedPages
   4   * to show all protected pages, even ones before the page restrictions
   5   * schema change. All remaining page_restriction column values are moved
   6   * to the new table.
   7   *
   8   * This program is free software; you can redistribute it and/or modify
   9   * it under the terms of the GNU General Public License as published by
  10   * the Free Software Foundation; either version 2 of the License, or
  11   * (at your option) any later version.
  12   *
  13   * This program is distributed in the hope that it will be useful,
  14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16   * GNU General Public License for more details.
  17   *
  18   * You should have received a copy of the GNU General Public License along
  19   * with this program; if not, write to the Free Software Foundation, Inc.,
  20   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  21   * http://www.gnu.org/copyleft/gpl.html
  22   *
  23   * @file
  24   * @ingroup Maintenance
  25   */
  26  
  27  require_once  __DIR__ . '/Maintenance.php';
  28  
  29  /**
  30   * Maintenance script that makes the required database updates for
  31   * Special:ProtectedPages to show all protected pages.
  32   *
  33   * @ingroup Maintenance
  34   */
  35  class PopulateLogUsertext extends LoggedUpdateMaintenance {
  36  	public function __construct() {
  37          parent::__construct();
  38          $this->mDescription = "Populates the log_user_text field";
  39          $this->setBatchSize( 100 );
  40      }
  41  
  42  	protected function getUpdateKey() {
  43          return 'populate log_usertext';
  44      }
  45  
  46  	protected function updateSkippedMessage() {
  47          return 'log_user_text column of logging table already populated.';
  48      }
  49  
  50  	protected function doDBUpdates() {
  51          $db = $this->getDB( DB_MASTER );
  52          $start = $db->selectField( 'logging', 'MIN(log_id)', false, __METHOD__ );
  53          if ( !$start ) {
  54              $this->output( "Nothing to do.\n" );
  55  
  56              return true;
  57          }
  58          $end = $db->selectField( 'logging', 'MAX(log_id)', false, __METHOD__ );
  59  
  60          # Do remaining chunk
  61          $end += $this->mBatchSize - 1;
  62          $blockStart = $start;
  63          $blockEnd = $start + $this->mBatchSize - 1;
  64          while ( $blockEnd <= $end ) {
  65              $this->output( "...doing log_id from $blockStart to $blockEnd\n" );
  66              $cond = "log_id BETWEEN $blockStart AND $blockEnd AND log_user = user_id";
  67              $res = $db->select( array( 'logging', 'user' ),
  68                  array( 'log_id', 'user_name' ), $cond, __METHOD__ );
  69  
  70              $db->begin( __METHOD__ );
  71              foreach ( $res as $row ) {
  72                  $db->update( 'logging', array( 'log_user_text' => $row->user_name ),
  73                      array( 'log_id' => $row->log_id ), __METHOD__ );
  74              }
  75              $db->commit( __METHOD__ );
  76              $blockStart += $this->mBatchSize;
  77              $blockEnd += $this->mBatchSize;
  78              wfWaitForSlaves();
  79          }
  80          $this->output( "Done populating log_user_text field.\n" );
  81  
  82          return true;
  83      }
  84  }
  85  
  86  $maintClass = "PopulateLogUsertext";
  87  require_once RUN_MAINTENANCE_IF_MAIN;


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1