wiki.techinc.nl/includes/api/ApiCreateTempUserTrait.php
James D. Forrester 984076f98e Add namespace to includes/api classes
Bug: T353458
Change-Id: I3ea6b08c5018ba03ba45c5766e1f46e12f6b8597
2024-09-25 19:31:14 +00:00

97 lines
2.5 KiB
PHP

<?php
namespace MediaWiki\Api;
use MediaWiki\Request\WebRequest;
use MediaWiki\User\UserIdentity;
use Wikimedia\ParamValidator\ParamValidator;
/**
* Methods needed by APIs that create a temporary user.
*
* This should only be added to classes that extend ApiBase.
*
* @ingroup API
* @since 1.42
*/
trait ApiCreateTempUserTrait {
/**
* Get any login redirect URL added by TempUserCreatedRedirectHook.
*
* @param array $params
* @param UserIdentity $savedTempUser
* @return string The redirect URL, or '' if none was added
*/
protected function getTempUserRedirectUrl(
array $params,
UserIdentity $savedTempUser
): string {
$returnToQuery = $params['returntoquery'];
$returnToAnchor = $params['returntoanchor'];
if ( str_starts_with( $returnToQuery, '?' ) ) {
// Remove leading '?' if provided (both ways work, but this is more common elsewhere)
$returnToQuery = substr( $returnToQuery, 1 );
}
if ( $returnToAnchor !== '' && !str_starts_with( $returnToAnchor, '#' ) ) {
// Add leading '#' if missing (it's required)
$returnToAnchor = '#' . $returnToAnchor;
}
$redirectUrl = '';
$this->getHookRunner()->onTempUserCreatedRedirect(
$this->getRequest()->getSession(),
$savedTempUser,
$params['returnto'] ?: '',
$returnToQuery,
$returnToAnchor,
$redirectUrl
);
return $redirectUrl;
}
/**
* Add params needed for TempUserCreatedRedirectHook.
*
* @return array
*/
protected function getCreateTempUserParams(): array {
return [
'returnto' => [
ParamValidator::PARAM_TYPE => 'title',
ApiBase::PARAM_HELP_MSG => 'apihelp-edit-param-returnto',
],
'returntoquery' => [
ParamValidator::PARAM_TYPE => 'string',
ParamValidator::PARAM_DEFAULT => '',
ApiBase::PARAM_HELP_MSG => 'apihelp-edit-param-returntoquery',
],
'returntoanchor' => [
ParamValidator::PARAM_TYPE => 'string',
ParamValidator::PARAM_DEFAULT => '',
ApiBase::PARAM_HELP_MSG => 'apihelp-edit-param-returntoanchor',
],
];
}
// region Methods required from ApiBase
/** @name Methods required from ApiBase
* @{
*/
/**
* @see ApiBase::getHookRunner
* @return ApiHookRunner
*/
abstract protected function getHookRunner();
/**
* @see IContextSource::getRequest
* @return WebRequest
*/
abstract public function getRequest();
/** @} */
// endregion -- end of methods required from ApiBase
}
/** @deprecated class alias since 1.43 */
class_alias( ApiCreateTempUserTrait::class, 'ApiCreateTempUserTrait' );