diff options
Diffstat (limited to 'bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserRightsChanger.php')
-rw-r--r-- | bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserRightsChanger.php | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserRightsChanger.php b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserRightsChanger.php new file mode 100644 index 00000000..4fbea9c1 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserRightsChanger.php @@ -0,0 +1,59 @@ +<?php + +namespace Mediawiki\Api\Service; + +use Mediawiki\Api\SimpleRequest; +use Mediawiki\DataModel\User; + +/** + * @access private + * + * @author Addshore + */ +class UserRightsChanger extends Service { + + /** + * @since 0.3 + * + * @param User $user + * @param string[] $add + * @param string[] $remove + * @param array $extraParams + * + * @return bool + */ + public function change( + User $user, + $add = [], + $remove = [], + array $extraParams = [] + ) { + $result = $this->api->postRequest( + new SimpleRequest( + 'query', [ + 'list' => 'users', + 'ustoken' => 'userrights', + 'ususers' => $user->getName(), + ] + ) + ); + + $params = [ + 'user' => $user->getName(), + 'token' => $result['query']['users'][0]['userrightstoken'], + ]; + if ( !empty( $add ) ) { + $params['add'] = implode( '|', $add ); + } + if ( !empty( $remove ) ) { + $params['remove'] = implode( '|', $remove ); + } + + $this->api->postRequest( + new SimpleRequest( 'userrights', array_merge( $extraParams, $params ) ) + ); + + return true; + } + +} |