diff options
Diffstat (limited to 'bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserGetter.php')
-rw-r--r-- | bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserGetter.php | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserGetter.php b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserGetter.php new file mode 100644 index 00000000..d3bfbd5b --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/UserGetter.php @@ -0,0 +1,63 @@ +<?php + +namespace Mediawiki\Api\Service; + +use Mediawiki\Api\SimpleRequest; +use Mediawiki\DataModel\User; + +/** + * @access private + * + * @author Addshore + */ +class UserGetter extends Service { + + /** + * @param string $username + * + * @return User + */ + public function getFromUsername( $username ) { + $result = $this->api->getRequest( + new SimpleRequest( + 'query', [ + 'list' => 'users', + 'ususers' => $username, + 'usprop' => 'gender|emailable|registration|editcount|rights|implicitgroups|groups|blockinfo', + ] + ) + ); + + return $this->newUserFromListUsersResult( array_shift( $result['query']['users'] ) ); + } + + /** + * @param array $array + * + * @return User + */ + private function newUserFromListUsersResult( $array ) { + if ( array_key_exists( 'userid', $array ) ) { + return new User( + $array['name'], + $array['userid'], + $array['editcount'], + $array['registration'], + [ 'groups' => $array['groups'], 'implicitgroups' => $array['implicitgroups'] ], + $array['rights'], + $array['gender'] + ); + } else { + return new User( + $array['name'], + 0, + 0, + '', + [ 'groups' => [], 'implicitgroups' => [] ], + [], + '' + ); + } + } + +} |