<?php
/**
- * Script to clean up broken, unparseable upload filenames.
+ * Clean up broken, unparseable upload filenames.
*
* Usage: php cleanupImages.php [--fix]
* Options:
* --fix Actually clean up titles; otherwise just checks for them
*
- * Copyright (C) 2005-2006 Brion Vibber <brion@pobox.com>
+ * Copyright © 2005-2006 Brion Vibber <brion@pobox.com>
* http://www.mediawiki.org/
*
* This program is free software; you can redistribute it and/or modify
* @ingroup Maintenance
*/
-require_once( dirname( __FILE__ ) . '/cleanupTable.inc' );
+require_once( __DIR__ . '/cleanupTable.inc' );
+/**
+ * Maintenance script to clean up broken, unparseable upload filenames.
+ *
+ * @ingroup Maintenance
+ */
class ImageCleanup extends TableCleanup {
protected $defaultParams = array(
'table' => 'image',
if ( is_null( $title ) ) {
$this->output( "page $source ($cleaned) is illegal.\n" );
$safe = $this->buildSafeTitle( $cleaned );
- if ( $safe === false )
+ if ( $safe === false ) {
return $this->progress( 0 );
+ }
$this->pokeFile( $source, $safe );
return $this->progress( 1 );
}
return $this->progress( 1 );
}
- $this->progress( 0 );
+ return $this->progress( 0 );
}
/**
$path = $this->filePath( $orig );
if ( !file_exists( $path ) ) {
$this->output( "missing file: $path\n" );
- return $this->killRow( $orig );
+ $this->killRow( $orig );
+ return;
}
$db = wfGetDB( DB_MASTER );
$version = 0;
$final = $new;
$conflict = ( $this->imageExists( $final, $db ) ||
- ( $this->pageExists( $orig, $db ) && $this->pageExists( $final, $db ) ) );
+ ( $this->pageExists( $orig, $db ) && $this->pageExists( $final, $db ) ) );
while ( $conflict ) {
$this->output( "Rename conflicts with '$final'...\n" );
} else {
$this->output( "renaming $path to $finalPath\n" );
// @todo FIXME: Should this use File::move()?
- $db->begin();
+ $db->begin( __METHOD__ );
$db->update( 'image',
array( 'img_name' => $final ),
array( 'img_name' => $orig ),
$dir = dirname( $finalPath );
if ( !file_exists( $dir ) ) {
if ( !wfMkdirParents( $dir, null, __METHOD__ ) ) {
- $this->log( "RENAME FAILED, COULD NOT CREATE $dir" );
- $db->rollback();
+ $this->output( "RENAME FAILED, COULD NOT CREATE $dir" );
+ $db->rollback( __METHOD__ );
return;
}
}
if ( rename( $path, $finalPath ) ) {
- $db->commit();
+ $db->commit( __METHOD__ );
} else {
$this->error( "RENAME FAILED" );
- $db->rollback();
+ $db->rollback( __METHOD__ );
}
}
}
}
private function buildSafeTitle( $name ) {
- global $wgLegalTitleChars;
$x = preg_replace_callback(
- "/([^$wgLegalTitleChars]|~)/",
+ '/([^' . Title::legalChars() . ']|~)/',
array( $this, 'hexChar' ),
$name );