X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FpopulateLogSearch.php;h=8a2366a0d82c489b9489fadd4859769efa2f92bc;hb=eb65b839f8c8329198c9a1bf0b089b6c3a973ebd;hp=894c9ee115862d10f440420880a4ba7d2617c8b1;hpb=62053ac8fda5b00457bb3ad1891eac2316cf707d;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/populateLogSearch.php b/maintenance/populateLogSearch.php index 894c9ee115..8a2366a0d8 100644 --- a/maintenance/populateLogSearch.php +++ b/maintenance/populateLogSearch.php @@ -18,26 +18,40 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html * + * @file * @ingroup Maintenance */ require_once( dirname( __FILE__ ) . '/Maintenance.php' ); -class PopulateLogSearch extends Maintenance { - - const LOG_SEARCH_BATCH_SIZE = 100; - +/** + * Maintenance script that makes the required database updates for populating the + * log_search table retroactively + * + * @ingroup Maintenance + */ +class PopulateLogSearch extends LoggedUpdateMaintenance { static $tableMap = array( 'rev' => 'revision', 'fa' => 'filearchive', 'oi' => 'oldimage', 'ar' => 'archive' ); public function __construct() { parent::__construct(); $this->mDescription = "Migrate log params to new table and index for searching"; + $this->setBatchSize( 100 ); } - public function execute() { - $db = wfGetDB( DB_MASTER ); + protected function getUpdateKey() { + return 'populate log_search'; + } + + protected function updateSkippedMessage() { + return 'log_search table already populated.'; + } + + protected function doDBUpdates() { + $db = $this->getDB( DB_MASTER ); if ( !$db->tableExists( 'log_search' ) ) { - $this->error( "log_search does not exist", true ); + $this->error( "log_search does not exist" ); + return false; } $start = $db->selectField( 'logging', 'MIN(log_id)', false, __FUNCTION__ ); if ( !$start ) { @@ -47,9 +61,9 @@ class PopulateLogSearch extends Maintenance { $end = $db->selectField( 'logging', 'MAX(log_id)', false, __FUNCTION__ ); # Do remaining chunk - $end += self::LOG_SEARCH_BATCH_SIZE - 1; + $end += $this->mBatchSize - 1; $blockStart = $start; - $blockEnd = $start + self::LOG_SEARCH_BATCH_SIZE - 1; + $blockEnd = $start + $this->mBatchSize - 1; $delTypes = array( 'delete', 'suppress' ); // revisiondelete types while ( $blockEnd <= $end ) { @@ -97,14 +111,14 @@ class PopulateLogSearch extends Maintenance { foreach ( $sres as $srow ) { if ( $srow->$userField > 0 ) $userIds[] = intval( $srow->$userField ); - else if ( $srow->$userTextField != '' ) + elseif ( $srow->$userTextField != '' ) $userIPs[] = $srow->$userTextField; } // Add item author relations... $log->addRelations( 'target_author_id', $userIds, $row->log_id ); $log->addRelations( 'target_author_ip', $userIPs, $row->log_id ); // RevisionDelete logs - log events - } else if ( LogEventsList::typeAction( $row, $delTypes, 'event' ) ) { + } elseif ( LogEventsList::typeAction( $row, $delTypes, 'event' ) ) { $params = LogPage::extractParams( $row->log_params ); // Param format: [ ] if ( count( $params ) < 1 ) continue; // bad row @@ -121,30 +135,19 @@ class PopulateLogSearch extends Maintenance { foreach ( $sres as $srow ) { if ( $srow->log_user > 0 ) $userIds[] = intval( $srow->log_user ); - else if ( IP::isIPAddress( $srow->log_user_text ) ) + elseif ( IP::isIPAddress( $srow->log_user_text ) ) $userIPs[] = $srow->log_user_text; } $log->addRelations( 'target_author_id', $userIds, $row->log_id ); $log->addRelations( 'target_author_ip', $userIPs, $row->log_id ); } } - $blockStart += self::LOG_SEARCH_BATCH_SIZE; - $blockEnd += self::LOG_SEARCH_BATCH_SIZE; + $blockStart += $this->mBatchSize; + $blockEnd += $this->mBatchSize; wfWaitForSlaves(); } - if ( $db->insert( - 'updatelog', - array( 'ul_key' => 'populate log_search' ), - __FUNCTION__, - 'IGNORE' - ) - ) { - $this->output( "log_search population complete.\n" ); - return true; - } else { - $this->output( "Could not insert log_search population row.\n" ); - return false; - } + $this->output( "Done populating log_search table.\n" ); + return true; } }