* @ingroup Maintenance
*/
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Shell\Shell;
+
require_once __DIR__ . '/Maintenance.php';
/**
class PopulateImageSha1 extends LoggedUpdateMaintenance {
public function __construct() {
parent::__construct();
- $this->mDescription = "Populate the img_sha1 field";
+ $this->addDescription( 'Populate the img_sha1 field' );
$this->addOption( 'force', "Recalculate sha1 for rows that already have a value" );
$this->addOption( 'multiversiononly', "Calculate only for files with several versions" );
$this->addOption( 'method', "Use 'pipe' to pipe to mysql command line,\n" .
if ( $file != '' ) {
$res = $dbw->select(
'image',
- array( 'img_name' ),
- array( 'img_name' => $file ),
+ [ 'img_name' ],
+ [ 'img_name' => $file ],
__METHOD__
);
if ( !$res ) {
- $this->error( "No such file: $file", true );
-
- return false;
+ $this->fatalError( "No such file: $file" );
}
$this->output( "Populating img_sha1 field for specified files\n" );
} else {
if ( $this->hasOption( 'multiversiononly' ) ) {
- $conds = array();
+ $conds = [];
$this->output( "Populating and recalculating img_sha1 field for versioned files\n" );
} elseif ( $force ) {
- $conds = array();
+ $conds = [];
$this->output( "Populating and recalculating img_sha1 field\n" );
} else {
- $conds = array( 'img_sha1' => '' );
+ $conds = [ 'img_sha1' => '' ];
$this->output( "Populating img_sha1 field\n" );
}
if ( $this->hasOption( 'multiversiononly' ) ) {
$res = $dbw->select( 'oldimage',
- array( 'img_name' => 'DISTINCT(oi_name)' ), $conds, __METHOD__ );
+ [ 'img_name' => 'DISTINCT(oi_name)' ], $conds, __METHOD__ );
} else {
- $res = $dbw->select( 'image', array( 'img_name' ), $conds, __METHOD__ );
+ $res = $dbw->select( 'image', [ 'img_name' ], $conds, __METHOD__ );
}
}
// in the pipe buffer. This can improve performance by up to a
// factor of 2.
global $wgDBuser, $wgDBserver, $wgDBpassword, $wgDBname;
- $cmd = 'mysql -u' . wfEscapeShellArg( $wgDBuser ) .
- ' -h' . wfEscapeShellArg( $wgDBserver ) .
- ' -p' . wfEscapeShellArg( $wgDBpassword, $wgDBname );
+ $cmd = 'mysql -u' . Shell::escape( $wgDBuser ) .
+ ' -h' . Shell::escape( $wgDBserver ) .
+ ' -p' . Shell::escape( $wgDBpassword, $wgDBname );
$this->output( "Using pipe method\n" );
$pipe = popen( $cmd, 'w' );
}
$numRows = $res->numRows();
$i = 0;
foreach ( $res as $row ) {
- if ( $i % $this->mBatchSize == 0 ) {
+ if ( $i % $this->getBatchSize() == 0 ) {
$this->output( sprintf(
"Done %d of %d, %5.3f%% \r", $i, $numRows, $i / $numRows * 100 ) );
wfWaitForSlaves();
}
- $file = wfLocalFile( $row->img_name );
+ $file = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo()
+ ->newFile( $row->img_name );
if ( !$file ) {
continue;
}
}
}
-$maintClass = "PopulateImageSha1";
+$maintClass = PopulateImageSha1::class;
require_once RUN_MAINTENANCE_IF_MAIN;