summaryrefslogtreecommitdiff
path: root/maintenance/importImages.php
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/importImages.php')
-rw-r--r--maintenance/importImages.php81
1 files changed, 46 insertions, 35 deletions
diff --git a/maintenance/importImages.php b/maintenance/importImages.php
index 782f502d..54fd4e2d 100644
--- a/maintenance/importImages.php
+++ b/maintenance/importImages.php
@@ -35,11 +35,11 @@ $optionsWithArgs = array(
'extensions', 'comment', 'comment-file', 'comment-ext', 'summary', 'user',
'license', 'sleep', 'limit', 'from', 'source-wiki-url', 'timestamp',
);
-require_once( __DIR__ . '/commandLine.inc' );
-require_once( __DIR__ . '/importImages.inc' );
+require_once __DIR__ . '/commandLine.inc';
+require_once __DIR__ . '/importImages.inc';
$processed = $added = $ignored = $skipped = $overwritten = $failed = 0;
-echo( "Import Images\n\n" );
+echo "Import Images\n\n";
# Need a path
if ( count( $args ) == 0 ) {
@@ -104,15 +104,15 @@ if ( $limit ) {
$timestamp = isset( $options['timestamp'] ) ? $options['timestamp'] : false;
# Get the upload comment. Provide a default one in case there's no comment given.
-$comment = 'Importing image file';
+$comment = 'Importing file';
if ( isset( $options['comment-file'] ) ) {
- $comment = file_get_contents( $options['comment-file'] );
+ $comment = file_get_contents( $options['comment-file'] );
if ( $comment === false || $comment === null ) {
die( "failed to read comment file: {$options['comment-file']}\n" );
}
} elseif ( isset( $options['comment'] ) ) {
- $comment = $options['comment'];
+ $comment = $options['comment'];
}
$commentExt = isset( $options['comment-ext'] ) ? $options['comment-ext'] : false;
@@ -132,7 +132,7 @@ if ( $count > 0 ) {
# Validate a title
$title = Title::makeTitleSafe( NS_FILE, $base );
if ( !is_object( $title ) ) {
- echo( "{$base} could not be imported; a valid title cannot be produced\n" );
+ echo "{$base} could not be imported; a valid title cannot be produced\n";
continue;
}
@@ -148,7 +148,7 @@ if ( $count > 0 ) {
if ( $checkUserBlock && ( ( $processed % $checkUserBlock ) == 0 ) ) {
$user->clearInstanceCache( 'name' ); // reload from DB!
if ( $user->isBlocked() ) {
- echo( $user->getName() . " was blocked! Aborting.\n" );
+ echo $user->getName() . " was blocked! Aborting.\n";
break;
}
}
@@ -157,10 +157,10 @@ if ( $count > 0 ) {
$image = wfLocalFile( $title );
if ( $image->exists() ) {
if ( isset( $options['overwrite'] ) ) {
- echo( "{$base} exists, overwriting..." );
+ echo "{$base} exists, overwriting...";
$svar = 'overwritten';
} else {
- echo( "{$base} exists, skipping\n" );
+ echo "{$base} exists, skipping\n";
$skipped++;
continue;
}
@@ -172,23 +172,24 @@ if ( $count > 0 ) {
$dupes = $repo->findBySha1( $sha1 );
if ( $dupes ) {
- echo( "{$base} already exists as " . $dupes[0]->getName() . ", skipping\n" );
+ echo "{$base} already exists as " . $dupes[0]->getName() . ", skipping\n";
$skipped++;
continue;
}
}
- echo( "Importing {$base}..." );
+ echo "Importing {$base}...";
$svar = 'added';
}
if ( isset( $options['source-wiki-url'] ) ) {
/* find comment text directly from source wiki, through MW's API */
$real_comment = getFileCommentFromSourceWiki( $options['source-wiki-url'], $base );
- if ( $real_comment === false )
+ if ( $real_comment === false ) {
$commentText = $comment;
- else
+ } else {
$commentText = $real_comment;
+ }
/* find user directly from source wiki, through MW's API */
$real_user = getFileUserFromSourceWiki( $options['source-wiki-url'], $base );
@@ -198,7 +199,7 @@ if ( $count > 0 ) {
$wgUser = User::newFromName( $real_user );
if ( $wgUser === false ) {
# user does not exist in target wiki
- echo ( "failed: user '$real_user' does not exist in target wiki." );
+ echo "failed: user '$real_user' does not exist in target wiki.";
continue;
}
}
@@ -209,11 +210,11 @@ if ( $count > 0 ) {
if ( $commentExt ) {
$f = findAuxFile( $file, $commentExt );
if ( !$f ) {
- echo( " No comment file with extension {$commentExt} found for {$file}, using default comment. " );
+ echo " No comment file with extension {$commentExt} found for {$file}, using default comment. ";
} else {
$commentText = file_get_contents( $f );
if ( !$commentText ) {
- echo( " Failed to load comment file {$f}, using default comment. " );
+ echo " Failed to load comment file {$f}, using default comment. ";
}
}
}
@@ -225,28 +226,37 @@ if ( $count > 0 ) {
# Import the file
if ( isset( $options['dry'] ) ) {
- echo( " publishing {$file} by '" . $wgUser->getName() . "', comment '$commentText'... " );
+ echo " publishing {$file} by '" . $wgUser->getName() . "', comment '$commentText'... ";
} else {
- $archive = $image->publish( $file );
+ $props = FSFile::getPropsFromPath( $file );
+ $flags = 0;
+ $publishOptions = array();
+ $handler = MediaHandler::getHandler( $props['mime'] );
+ if ( $handler ) {
+ $publishOptions['headers'] = $handler->getStreamHeaders( $props['metadata'] );
+ } else {
+ $publishOptions['headers'] = array();
+ }
+ $archive = $image->publish( $file, $flags, $publishOptions );
if ( !$archive->isGood() ) {
- echo( "failed. (" .
+ echo "failed. (" .
$archive->getWikiText() .
- ")\n" );
+ ")\n";
$failed++;
continue;
}
}
$commentText = SpecialUpload::getInitialPageText( $commentText, $license );
- if ( !$summary ) {
+ if ( !isset( $options['summary'] ) ) {
$summary = $commentText;
}
if ( isset( $options['dry'] ) ) {
- echo( "done.\n" );
- } elseif ( $image->recordUpload2( $archive->value, $summary, $commentText, false, $timestamp ) ) {
+ echo "done.\n";
+ } elseif ( $image->recordUpload2( $archive->value, $summary, $commentText, $props, $timestamp ) ) {
# We're done!
- echo( "done.\n" );
+ echo "done.\n";
$doProtect = false;
@@ -269,21 +279,21 @@ if ( $count > 0 ) {
sleep( 2.0 ); # Why this sleep?
wfWaitForSlaves();
- echo( "\nSetting image restrictions ... " );
+ echo "\nSetting image restrictions ... ";
$cascade = false;
$restrictions = array();
- foreach( $title->getRestrictionTypes() as $type ) {
+ foreach ( $title->getRestrictionTypes() as $type ) {
$restrictions[$type] = $protectLevel;
}
$page = WikiPage::factory( $title );
$status = $page->doUpdateRestrictions( $restrictions, array(), $cascade, '', $user );
- echo( ( $status->isOK() ? 'done' : 'failed' ) . "\n" );
+ echo ( $status->isOK() ? 'done' : 'failed' ) . "\n";
}
} else {
- echo( "failed. (at recordUpload stage)\n" );
+ echo "failed. (at recordUpload stage)\n";
$svar = 'failed';
}
@@ -300,23 +310,24 @@ if ( $count > 0 ) {
}
# Print out some statistics
- echo( "\n" );
+ echo "\n";
foreach ( array( 'count' => 'Found', 'limit' => 'Limit', 'ignored' => 'Ignored',
'added' => 'Added', 'skipped' => 'Skipped', 'overwritten' => 'Overwritten',
'failed' => 'Failed' ) as $var => $desc ) {
- if ( $$var > 0 )
- echo( "{$desc}: {$$var}\n" );
+ if ( $$var > 0 ) {
+ echo "{$desc}: {$$var}\n";
+ }
}
} else {
- echo( "No suitable files could be found for import.\n" );
+ echo "No suitable files could be found for import.\n";
}
exit( 0 );
function showUsage( $reason = false ) {
if ( $reason ) {
- echo( $reason . "\n" );
+ echo $reason . "\n";
}
echo <<<TEXT
@@ -336,7 +347,7 @@ Options:
--sleep=<sec> Sleep between files. Useful mostly for debugging.
--user=<username> Set username of uploader, default 'Maintenance script'
--check-userblock Check if the user got blocked during import.
---comment=<text> Set file description, default 'Importing image file'.
+--comment=<text> Set file description, default 'Importing file'.
--comment-file=<file> Set description to the content of <file>.
--comment-ext=<ext> Causes the description for each file to be loaded from a file with the same name
but the extension <ext>. If a global description is also given, it is appended.