X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiImport.php;h=8574dceb4f5b77316e40320d41d95c0e8cd62e22;hb=58cb1f824ac75c3b58ba19d1e88c1b38f9dc1fab;hp=735cc7fa11332dd893fc399ef52166d08016b30b;hpb=6d0c983c59d72f942736615183694de1b6a9c965;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiImport.php b/includes/api/ApiImport.php index 735cc7fa11..8574dceb4f 100644 --- a/includes/api/ApiImport.php +++ b/includes/api/ApiImport.php @@ -45,7 +45,7 @@ class ApiImport extends ApiBase { $this->dieUsageMsg( 'cantimport' ); } if ( !isset( $params['interwikipage'] ) ) { - $this->dieUsageMsg( array( 'missingparam', 'interwikipage' ) ); + $this->dieUsageMsg( [ 'missingparam', 'interwikipage' ] ); } $source = ImportStreamSource::newFromInterwiki( $params['interwikisource'], @@ -83,7 +83,7 @@ class ApiImport extends ApiBase { try { $importer->doImport(); } catch ( Exception $e ) { - $this->dieUsageMsg( array( 'import-unknownerror', $e->getMessage() ) ); + $this->dieUsageMsg( [ 'import-unknownerror', $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 @@ -153,7 +177,7 @@ class ApiImportReporter extends ImportReporter { */ function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) { // Add a result entry - $r = array(); + $r = []; if ( $title === null ) { # Invalid or non-importable title