Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1427429
PermissionStatus.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
PermissionStatus.php
View Options
<?php
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace
MediaWiki\Permissions
;
use
ErrorPageError
;
use
MediaWiki\Block\Block
;
use
PermissionsError
;
use
StatusValue
;
use
ThrottledError
;
use
UserBlockedError
;
/**
* A StatusValue for permission errors.
*
* @todo Add compat code for PermissionManager::getPermissionErrors
* and additional info about user blocks.
*
* @unstable
* @since 1.36
*/
class
PermissionStatus
extends
StatusValue
{
/** @var ?Block */
private
$block
=
null
;
/** @var bool */
private
$rateLimitExceeded
=
false
;
/** @var ?string */
private
$permission
=
null
;
/**
* Returns the user block that contributed to permissions being denied,
* if such a block was provided via setBlock().
*
* This is intended to be used to provide additional information to the user that
* allows them to determine the reason for them being denied an action.
*
* @since 1.37
*
* @return ?Block
*/
public
function
getBlock
():
?
Block
{
return
$this
->
block
;
}
/**
* Returns true when permissions were denied because the user is blocked.
*
* @since 1.41
*
* @return bool
*/
public
function
isBlocked
():
bool
{
return
$this
->
block
!==
null
;
}
/**
* @since 1.37
* @internal
* @param Block $block
*/
public
function
setBlock
(
Block
$block
):
void
{
$this
->
block
=
$block
;
$this
->
setOK
(
false
);
}
/**
* @return static
*/
public
static
function
newEmpty
()
{
return
new
static
();
}
/**
* Returns this permission status in legacy error array format.
*
* @deprecated since 1.43
* @see PermissionManager::getPermissionErrors()
*
* @return array[]
*/
public
function
toLegacyErrorArray
():
array
{
return
$this
->
getStatusArray
();
}
/**
* Call this to indicate that the user is over the rate limit for some action.
* @since 1.41
* @internal
* Will cause isRateLimited() to return true.
*/
public
function
setRateLimitExceeded
()
{
$this
->
rateLimitExceeded
=
true
;
$this
->
fatal
(
'actionthrottledtext'
);
}
/**
* Whether the user is over the rate limit for some action.
* @since 1.41
* @return bool True if setRateLimitExceeded() was called.
*/
public
function
isRateLimitExceeded
():
bool
{
return
$this
->
rateLimitExceeded
;
}
/**
* Sets the name of the permission that is being checked.
*
* @since 1.41
* @internal
* Will cause isRateLimited() to return true.
*/
public
function
setPermission
(
string
$permission
)
{
$this
->
permission
=
$permission
;
}
/**
* Returns the name of the permission that was being checked.
*
* @return string|null The permission, if known
* @since 1.41
*/
public
function
getPermission
():
?
string
{
return
$this
->
permission
;
}
/**
* Will throw an appropriate ErrorPageError if isOK() returns false.
* If isOK() returns true, this method does nothing.
*
* This is a convenience method for use in user interaction code,
* such as subclasses of SpecialPage.
*
* @unstable Introduced in 1.41, but unstable since the future of ErrorPageError is unclear (T281935).
*
* @throws ErrorPageError
* @return void
*/
public
function
throwErrorPageError
():
void
{
if
(
$this
->
isOK
()
)
{
return
;
}
$block
=
$this
->
getBlock
();
if
(
$block
)
{
throw
new
UserBlockedError
(
$block
);
}
if
(
$this
->
isRateLimitExceeded
()
)
{
throw
new
ThrottledError
();
}
$messages
=
$this
->
getStatusArray
(
'error'
);
throw
new
PermissionsError
(
$this
->
permission
,
$messages
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 14:37 (1 d, 3 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
73/9e/028063ea87edfbecf9f0b7aa7f90
Default Alt Text
PermissionStatus.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment