X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryFilearchive.php;h=212b61340ac64897af028fb97beb717fc61a0482;hb=52ce204415df71eb978b1f6f61a6122f7c3b09f6;hp=54889846f1c25a5b3d01302c1e41ef3bea880d70;hpb=9c092814c7f275db78a6ed769aa76fdd87709c60;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryFilearchive.php b/includes/api/ApiQueryFilearchive.php index 54889846f1..212b61340a 100644 --- a/includes/api/ApiQueryFilearchive.php +++ b/includes/api/ApiQueryFilearchive.php @@ -38,16 +38,12 @@ class ApiQueryFilearchive extends ApiQueryBase { } public function execute() { - $user = $this->getUser(); // Before doing anything at all, let's check permissions - if ( !$user->isAllowed( 'deletedhistory' ) ) { - $this->dieUsage( - 'You don\'t have permission to view deleted file information', - 'permissiondenied' - ); - } + $this->checkUserRightsAny( 'deletedhistory' ); + $user = $this->getUser(); $db = $this->getDB(); + $commentStore = new CommentStore( 'fa_description' ); $params = $this->extractRequestParams(); @@ -67,17 +63,23 @@ class ApiQueryFilearchive extends ApiQueryBase { $this->addTables( 'filearchive' ); $this->addFields( ArchivedFile::selectFields() ); - $this->addFields( array( 'fa_id', 'fa_name', 'fa_timestamp', 'fa_deleted' ) ); + $this->addFields( [ 'fa_id', 'fa_name', 'fa_timestamp', 'fa_deleted' ] ); $this->addFieldsIf( 'fa_sha1', $fld_sha1 ); - $this->addFieldsIf( array( 'fa_user', 'fa_user_text' ), $fld_user ); - $this->addFieldsIf( array( 'fa_height', 'fa_width', 'fa_size' ), $fld_dimensions || $fld_size ); - $this->addFieldsIf( 'fa_description', $fld_description ); - $this->addFieldsIf( array( 'fa_major_mime', 'fa_minor_mime' ), $fld_mime ); + $this->addFieldsIf( [ 'fa_user', 'fa_user_text' ], $fld_user ); + $this->addFieldsIf( [ 'fa_height', 'fa_width', 'fa_size' ], $fld_dimensions || $fld_size ); + $this->addFieldsIf( [ 'fa_major_mime', 'fa_minor_mime' ], $fld_mime ); $this->addFieldsIf( 'fa_media_type', $fld_mediatype ); $this->addFieldsIf( 'fa_metadata', $fld_metadata ); $this->addFieldsIf( 'fa_bits', $fld_bitdepth ); $this->addFieldsIf( 'fa_archive_name', $fld_archivename ); + if ( $fld_description ) { + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( !is_null( $params['continue'] ) ) { $cont = explode( '|', $params['continue'] ); $this->dieContinueUsageIf( count( $cont ) != 3 ); @@ -112,13 +114,13 @@ class ApiQueryFilearchive extends ApiQueryBase { if ( $sha1Set ) { $sha1 = strtolower( $params['sha1'] ); if ( !$this->validateSha1Hash( $sha1 ) ) { - $this->dieUsage( 'The SHA1 hash provided is not valid', 'invalidsha1hash' ); + $this->dieWithError( 'apierror-invalidsha1hash' ); } - $sha1 = wfBaseConvert( $sha1, 16, 36, 31 ); + $sha1 = Wikimedia\base_convert( $sha1, 16, 36, 31 ); } elseif ( $sha1base36Set ) { $sha1 = strtolower( $params['sha1base36'] ); if ( !$this->validateSha1Base36Hash( $sha1 ) ) { - $this->dieUsage( 'The SHA1Base36 hash provided is not valid', 'invalidsha1base36hash' ); + $this->dieWithError( 'apierror-invalidsha1base36hash' ); } } if ( $sha1 ) { @@ -141,11 +143,11 @@ class ApiQueryFilearchive extends ApiQueryBase { $limit = $params['limit']; $this->addOption( 'LIMIT', $limit + 1 ); $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' ); - $this->addOption( 'ORDER BY', array( + $this->addOption( 'ORDER BY', [ 'fa_name' . $sort, 'fa_timestamp' . $sort, 'fa_id' . $sort, - ) ); + ] ); $res = $this->select( __METHOD__ ); @@ -161,7 +163,7 @@ class ApiQueryFilearchive extends ApiQueryBase { break; } - $file = array(); + $file = []; $file['id'] = (int)$row->fa_id; $file['name'] = $row->fa_name; $title = Title::makeTitle( NS_FILE, $row->fa_name ); @@ -170,10 +172,10 @@ class ApiQueryFilearchive extends ApiQueryBase { if ( $fld_description && Revision::userCanBitfield( $row->fa_deleted, File::DELETED_COMMENT, $user ) ) { - $file['description'] = $row->fa_description; + $file['description'] = $commentStore->getComment( $row )->text; if ( isset( $prop['parseddescription'] ) ) { $file['parseddescription'] = Linker::formatComment( - $row->fa_description, $title ); + $file['description'], $title ); } } if ( $fld_user && @@ -183,7 +185,7 @@ class ApiQueryFilearchive extends ApiQueryBase { $file['user'] = $row->fa_user_text; } if ( $fld_sha1 ) { - $file['sha1'] = wfBaseConvert( $row->fa_sha1, 36, 16, 40 ); + $file['sha1'] = Wikimedia\base_convert( $row->fa_sha1, 36, 16, 40 ); } if ( $fld_timestamp ) { $file['timestamp'] = wfTimestamp( TS_ISO_8601, $row->fa_timestamp ); @@ -231,7 +233,7 @@ class ApiQueryFilearchive extends ApiQueryBase { $file['suppressed'] = true; } - $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $file ); + $fit = $result->addValue( [ 'query', $this->getModuleName() ], null, $file ); if ( !$fit ) { $this->setContinueEnumParameter( 'continue', "$row->fa_name|$row->fa_timestamp|$row->fa_id" @@ -240,27 +242,27 @@ class ApiQueryFilearchive extends ApiQueryBase { } } - $result->addIndexedTagName( array( 'query', $this->getModuleName() ), 'fa' ); + $result->addIndexedTagName( [ 'query', $this->getModuleName() ], 'fa' ); } public function getAllowedParams() { - return array( + return [ 'from' => null, 'to' => null, 'prefix' => null, - 'dir' => array( + 'dir' => [ ApiBase::PARAM_DFLT => 'ascending', - ApiBase::PARAM_TYPE => array( + ApiBase::PARAM_TYPE => [ 'ascending', 'descending' - ) - ), + ] + ], 'sha1' => null, 'sha1base36' => null, - 'prop' => array( + 'prop' => [ ApiBase::PARAM_DFLT => 'timestamp', ApiBase::PARAM_ISMULTI => true, - ApiBase::PARAM_TYPE => array( + ApiBase::PARAM_TYPE => [ 'sha1', 'timestamp', 'user', @@ -273,29 +275,30 @@ class ApiQueryFilearchive extends ApiQueryBase { 'metadata', 'bitdepth', 'archivename', - ), - ), - 'limit' => array( + ], + ApiBase::PARAM_HELP_MSG_PER_VALUE => [], + ], + 'limit' => [ ApiBase::PARAM_DFLT => 10, ApiBase::PARAM_TYPE => 'limit', ApiBase::PARAM_MIN => 1, ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1, ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2 - ), - 'continue' => array( + ], + 'continue' => [ ApiBase::PARAM_HELP_MSG => 'api-help-param-continue', - ), - ); + ], + ]; } protected function getExamplesMessages() { - return array( + return [ 'action=query&list=filearchive' => 'apihelp-query+filearchive-example-simple', - ); + ]; } public function getHelpUrls() { - return 'https://www.mediawiki.org/wiki/API:Filearchive'; + return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Filearchive'; } }