18 protected static $right =
'translate-groupreview';
19 private LanguageNameUtils $languageNameUtils;
22 public function __construct(
25 LanguageNameUtils $languageNameUtils,
28 parent::__construct( $main, $action );
29 $this->languageNameUtils = $languageNameUtils;
30 $this->messageGroupReviewStore = $messageGroupReviewStore;
33 public function execute() {
34 $user = $this->getUser();
35 $requestParams = $this->extractRequestParams();
38 $code = $requestParams[
'language'];
40 if ( !$group || MessageGroups::isDynamic( $group ) ) {
41 $this->dieWithError( [
'apierror-badparameter',
'group' ] );
43 $stateConfig = $group->getMessageGroupStates()->getStates();
44 if ( !$stateConfig ) {
45 $this->dieWithError(
'apierror-translate-groupreviewdisabled',
'disabled' );
48 $this->checkUserRightsAny( self::$right );
50 $block = $user->getBlock();
52 $this->dieBlocked( $block );
55 $languages = $this->languageNameUtils->getLanguageNames();
56 if ( !isset( $languages[$code] ) ) {
57 $this->dieWithError( [
'apierror-badparameter',
'language' ] );
60 $targetState = $requestParams[
'state'];
61 if ( !isset( $stateConfig[$targetState] ) ) {
62 $this->dieWithError(
'apierror-translate-invalidstate',
'invalidstate' );
65 if ( is_array( $stateConfig[$targetState] )
66 && isset( $stateConfig[$targetState][
'right'] )
68 $this->checkUserRightsAny( $stateConfig[$targetState][
'right'] );
71 $this->messageGroupReviewStore->changeState( $group, $code, $targetState, $user );
73 $output = [
'review' => [
74 'group' => $group->getId(),
76 'state' => $targetState,
79 $this->getResult()->addValue(
null, $this->getModuleName(), $output );
82 public function isWriteMode():
bool {
86 public function needsToken():
string {
90 protected function getAllowedParams(): array {
93 ParamValidator::PARAM_TYPE =>
'string',
94 ParamValidator::PARAM_REQUIRED =>
true,
97 ParamValidator::PARAM_TYPE =>
'string',
98 ParamValidator::PARAM_DEFAULT =>
'en',
101 ParamValidator::PARAM_TYPE =>
'string',
102 ParamValidator::PARAM_REQUIRED =>
true,
105 ParamValidator::PARAM_TYPE =>
'string',
106 ParamValidator::PARAM_REQUIRED =>
true,
111 protected function getExamplesMessages(): array {
113 'action=groupreview&group=page-Example&language=de&state=ready&token=foo'
114 =>
'apihelp-groupreview-example-1',