wiki.techinc.nl/includes/Rest/Handler/AbstractContributionHandler.php
Umherirrender 886643796c docs: Fix @var comments to use doc comment syntax
@var needs /**-comments to work, not /*-comments

Change-Id: If54b3f24d4ca49036fa91aa4c72fab6d841fcc9e
2021-04-29 22:48:52 +00:00

79 lines
1.8 KiB
PHP

<?php
namespace MediaWiki\Rest\Handler;
use MediaWiki\Rest\Handler;
use MediaWiki\Rest\LocalizedHttpException;
use MediaWiki\Revision\ContributionsLookup;
use MediaWiki\User\UserIdentity;
use MediaWiki\User\UserNameUtils;
use Wikimedia\Message\MessageValue;
/**
* @since 1.35
*/
abstract class AbstractContributionHandler extends Handler {
/**
* @var ContributionsLookup
*/
protected $contributionsLookup;
/** Hard limit results to 20 contributions */
protected const MAX_LIMIT = 20;
/**
* @var bool User is requesting their own contributions
*/
protected $me;
/**
* @var UserNameUtils
*/
protected $userNameUtils;
/**
* @param ContributionsLookup $contributionsLookup
* @param UserNameUtils $userNameUtils
*/
public function __construct(
ContributionsLookup $contributionsLookup,
UserNameUtils $userNameUtils
) {
$this->contributionsLookup = $contributionsLookup;
$this->userNameUtils = $userNameUtils;
}
protected function postInitSetup() {
$this->me = $this->getConfig()['mode'] === 'me';
}
/**
* Returns the user who's contributions we are requesting.
* Either me (requesting user) or another user.
*
* @return UserIdentity
* @throws LocalizedHttpException
*/
protected function getTargetUser() {
if ( $this->me ) {
$user = $this->getAuthority()->getUser();
if ( !$user->isRegistered() ) {
throw new LocalizedHttpException(
new MessageValue( 'rest-permission-denied-anon' ), 401
);
}
return $user;
}
/** @var UserIdentity $user */
$user = $this->getValidatedParams()['user'];
$name = $user->getName();
if ( !$this->userNameUtils->isIp( $name ) && !$user->isRegistered() ) {
throw new LocalizedHttpException(
new MessageValue( 'rest-nonexistent-user', [ $name ] ), 404
);
}
return $user;
}
}