X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fapi%2FApiManageTags.php;h=3c080939c0ca24d1ee942685aa44b001bede261e;hp=617db227df7a48d13b1cae12f5baedb316c225ad;hb=22806b0a4509e97b56fb52b387e17e3c80fb7eb2;hpb=19fe074b654f874d7cdfb1d2622f2489b8bdfaa0 diff --git a/includes/api/ApiManageTags.php b/includes/api/ApiManageTags.php index 617db227df..3c080939c0 100644 --- a/includes/api/ApiManageTags.php +++ b/includes/api/ApiManageTags.php @@ -27,22 +27,34 @@ class ApiManageTags extends ApiBase { public function execute() { $params = $this->extractRequestParams(); + $user = $this->getUser(); // make sure the user is allowed if ( $params['operation'] !== 'delete' && !$this->getUser()->isAllowed( 'managechangetags' ) ) { - $this->dieUsage( "You don't have permission to manage change tags", - 'permissiondenied' ); + $this->dieWithError( 'tags-manage-no-permission', 'permissiondenied' ); } elseif ( !$this->getUser()->isAllowed( 'deletechangetags' ) ) { - $this->dieUsage( "You don't have permission to delete change tags", - 'permissiondenied' ); + $this->dieWithError( 'tags-delete-no-permission', 'permissiondenied' ); + } + + // Check if user can add the log entry tags which were requested + if ( $params['tags'] ) { + $ableToTag = ChangeTags::canAddTagsAccompanyingChange( $params['tags'], $user ); + if ( !$ableToTag->isOK() ) { + $this->dieStatus( $ableToTag ); + } } $result = $this->getResult(); $funcName = "{$params['operation']}TagWithChecks"; - $status = ChangeTags::$funcName( $params['tag'], $params['reason'], - $this->getUser(), $params['ignorewarnings'] ); + $status = ChangeTags::$funcName( + $params['tag'], + $params['reason'], + $user, + $params['ignorewarnings'], + $params['tags'] ?: [] + ); if ( !$status->isOK() ) { $this->dieStatus( $status ); @@ -59,6 +71,7 @@ class ApiManageTags extends ApiBase { if ( $ret['success'] ) { $ret['logid'] = $status->value; } + $result->addValue( null, $this->getModuleName(), $ret ); } @@ -87,6 +100,10 @@ class ApiManageTags extends ApiBase { ApiBase::PARAM_TYPE => 'boolean', ApiBase::PARAM_DFLT => false, ], + 'tags' => [ + ApiBase::PARAM_TYPE => 'tags', + ApiBase::PARAM_ISMULTI => true, + ], ]; }