diff options
Diffstat (limited to 'maintenance/importImages.php')
-rw-r--r-- | maintenance/importImages.php | 81 |
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. |