X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiImport.php;h=3f48f38a0ef18312d01d6c881d7338f8b05e4e99;hb=8642482ee1618aa867e119bd34e5928398590608;hp=735cc7fa11332dd893fc399ef52166d08016b30b;hpb=88791ec8806c7a3b4d9da66eca3f565f1609b3e1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiImport.php b/includes/api/ApiImport.php index 735cc7fa11..3f48f38a0e 100644 --- a/includes/api/ApiImport.php +++ b/includes/api/ApiImport.php @@ -42,10 +42,10 @@ class ApiImport extends ApiBase { $isUpload = false; if ( isset( $params['interwikisource'] ) ) { if ( !$user->isAllowed( 'import' ) ) { - $this->dieUsageMsg( 'cantimport' ); + $this->dieWithError( 'apierror-cantimport' ); } if ( !isset( $params['interwikipage'] ) ) { - $this->dieUsageMsg( array( 'missingparam', 'interwikipage' ) ); + $this->dieWithError( [ 'apierror-missingparam', 'interwikipage' ] ); } $source = ImportStreamSource::newFromInterwiki( $params['interwikisource'], @@ -56,7 +56,7 @@ class ApiImport extends ApiBase { } else { $isUpload = true; if ( !$user->isAllowed( 'importupload' ) ) { - $this->dieUsageMsg( 'cantimport-upload' ); + $this->dieWithError( 'apierror-cantimport-upload' ); } $source = ImportStreamSource::newFromUpload( 'xml' ); } @@ -83,7 +83,7 @@ class ApiImport extends ApiBase { try { $importer->doImport(); } catch ( Exception $e ) { - $this->dieUsageMsg( array( 'import-unknownerror', $e->getMessage() ) ); + $this->dieWithError( [ 'apierror-import-unknownerror', wfEscapeWikiText( $e->getMessage() ) ] ); } $resultData = $reporter->getData(); @@ -92,6 +92,30 @@ class ApiImport extends ApiBase { $result->addValue( null, $this->getModuleName(), $resultData ); } + /** + * Returns a list of interwiki prefixes corresponding to each defined import + * source. + * + * @return array + * @since 1.27 + */ + public function getAllowedImportSources() { + $importSources = $this->getConfig()->get( 'ImportSources' ); + Hooks::run( 'ImportSources', [ &$importSources ] ); + + $result = []; + foreach ( $importSources as $key => $value ) { + if ( is_int( $key ) ) { + $result[] = $value; + } else { + foreach ( $value as $subproject ) { + $result[] = "$key:$subproject"; + } + } + } + return $result; + } + public function mustBePosted() { return true; } @@ -101,22 +125,22 @@ class ApiImport extends ApiBase { } public function getAllowedParams() { - return array( + return [ 'summary' => null, - 'xml' => array( + 'xml' => [ ApiBase::PARAM_TYPE => 'upload', - ), - 'interwikisource' => array( - ApiBase::PARAM_TYPE => $this->getConfig()->get( 'ImportSources' ), - ), + ], + 'interwikisource' => [ + ApiBase::PARAM_TYPE => $this->getAllowedImportSources(), + ], 'interwikipage' => null, 'fullhistory' => false, 'templates' => false, - 'namespace' => array( + 'namespace' => [ ApiBase::PARAM_TYPE => 'namespace' - ), + ], 'rootpage' => null, - ); + ]; } public function needsToken() { @@ -124,11 +148,11 @@ class ApiImport extends ApiBase { } protected function getExamplesMessages() { - return array( + return [ 'action=import&interwikisource=meta&interwikipage=Help:ParserFunctions&' . 'namespace=100&fullhistory=&token=123ABC' => 'apihelp-import-example-import', - ); + ]; } public function getHelpUrls() { @@ -141,7 +165,7 @@ class ApiImport extends ApiBase { * @ingroup API */ class ApiImportReporter extends ImportReporter { - private $mResultArr = array(); + private $mResultArr = []; /** * @param Title $title @@ -151,9 +175,9 @@ class ApiImportReporter extends ImportReporter { * @param array $pageInfo * @return void */ - function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) { + public function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) { // Add a result entry - $r = array(); + $r = []; if ( $title === null ) { # Invalid or non-importable title @@ -170,7 +194,7 @@ class ApiImportReporter extends ImportReporter { parent::reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ); } - function getData() { + public function getData() { return $this->mResultArr; } }