Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4108338
Block.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Block.php
View Options
<?php
namespace
MediaWiki\Extension\AbuseFilter\Consequences\Consequence
;
use
ManualLogEntry
;
use
MediaWiki\Block\BlockUserFactory
;
use
MediaWiki\Block\DatabaseBlockStore
;
use
MediaWiki\Extension\AbuseFilter\Consequences\Parameters
;
use
MediaWiki\Extension\AbuseFilter\FilterUser
;
use
MediaWiki\Extension\AbuseFilter\GlobalNameUtils
;
use
MediaWiki\Title\TitleValue
;
use
MediaWiki\User\UserIdentity
;
use
MessageLocalizer
;
use
Psr\Log\LoggerInterface
;
/**
* Consequence that blocks a single user.
*/
class
Block
extends
BlockingConsequence
implements
ReversibleConsequence
{
private
bool
$preventsTalkEdit
;
private
DatabaseBlockStore
$databaseBlockStore
;
/**
* @param Parameters $params
* @param string $expiry
* @param bool $preventTalkEdit
* @param BlockUserFactory $blockUserFactory
* @param DatabaseBlockStore $databaseBlockStore
* @param FilterUser $filterUser
* @param MessageLocalizer $messageLocalizer
* @param LoggerInterface $logger
*/
public
function
__construct
(
Parameters
$params
,
string
$expiry
,
bool
$preventTalkEdit
,
BlockUserFactory
$blockUserFactory
,
DatabaseBlockStore
$databaseBlockStore
,
FilterUser
$filterUser
,
MessageLocalizer
$messageLocalizer
,
LoggerInterface
$logger
)
{
parent
::
__construct
(
$params
,
$expiry
,
$blockUserFactory
,
$filterUser
,
$messageLocalizer
,
$logger
);
$this
->
databaseBlockStore
=
$databaseBlockStore
;
$this
->
preventsTalkEdit
=
$preventTalkEdit
;
}
/**
* @inheritDoc
*/
public
function
execute
():
bool
{
$status
=
$this
->
doBlockInternal
(
$this
->
parameters
->
getFilter
()->
getName
(),
$this
->
parameters
->
getFilter
()->
getID
(),
$this
->
parameters
->
getUser
()->
getName
(),
$this
->
expiry
,
$autoblock
=
true
,
$this
->
preventsTalkEdit
);
// TODO: Should we reblock in case of partial blocks? At that point we could return
// the status of doBlockInternal
return
defined
(
'MW_PHPUNIT_TEST'
)
?
$status
->
isOK
()
:
true
;
}
/**
* @inheritDoc
* @todo This could use UnblockUser, but we need to check if the block was performed by the AF user
*/
public
function
revert
(
UserIdentity
$performer
,
string
$reason
):
bool
{
$block
=
$this
->
databaseBlockStore
->
newFromTarget
(
$this
->
parameters
->
getUser
()->
getName
()
);
if
(
!(
$block
&&
$block
->
getBy
()
===
$this
->
filterUser
->
getUserIdentity
()->
getId
()
)
)
{
// Not blocked by abuse filter
return
false
;
}
if
(
!
$this
->
databaseBlockStore
->
deleteBlock
(
$block
)
)
{
return
false
;
}
$logEntry
=
new
ManualLogEntry
(
'block'
,
'unblock'
);
$logEntry
->
setTarget
(
new
TitleValue
(
NS_USER
,
$this
->
parameters
->
getUser
()->
getName
()
)
);
$logEntry
->
setComment
(
$reason
);
$logEntry
->
setPerformer
(
$performer
);
if
(
!
defined
(
'MW_PHPUNIT_TEST'
)
)
{
// This has a bazillion of static dependencies all around the place, and a nightmare to deal with in tests
// TODO: Remove this check once T253717 is resolved
// @codeCoverageIgnoreStart
$logEntry
->
publish
(
$logEntry
->
insert
()
);
// @codeCoverageIgnoreEnd
}
return
true
;
}
/**
* @inheritDoc
*/
public
function
getMessage
():
array
{
$filter
=
$this
->
parameters
->
getFilter
();
return
[
'abusefilter-blocked-display'
,
$filter
->
getName
(),
GlobalNameUtils
::
buildGlobalName
(
$filter
->
getID
(),
$this
->
parameters
->
getIsGlobalFilter
()
)
];
}
/**
* @return string
* @internal
*/
public
function
getExpiry
():
string
{
return
$this
->
expiry
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Aug 18, 20:30 (2 w, 2 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
12/6a/ac2d527fa2d4be62c6c183241374
Default Alt Text
Block.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment