mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-11-28 07:50:24 +00:00
167f6cb642
This is a plain value object that represents the action being filtered, replacing associative arrays that were being used up to this point. We should now check whether it's possible to make it not require an accountname (which complicates things), and then use it in related classes as well, e.g. Parameters. Change-Id: I9550c14819b600c97c46b632cc1c2d447972d69c
68 lines
1.6 KiB
PHP
68 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Extension\AbuseFilter;
|
|
|
|
use InvalidArgumentException;
|
|
use MediaWiki\Linker\LinkTarget;
|
|
use MediaWiki\User\UserIdentity;
|
|
|
|
/**
|
|
* Plain value object that univocally represents an action being filtered
|
|
* @todo Add constants for possible actions?
|
|
*/
|
|
class ActionSpecifier {
|
|
/** @var string */
|
|
private $action;
|
|
/** @var LinkTarget */
|
|
private $title;
|
|
/** @var UserIdentity */
|
|
private $user;
|
|
/** @var string|null */
|
|
private $accountName;
|
|
|
|
/**
|
|
* @param string $action Action being filtered (e.g. 'edit' or 'createaccount')
|
|
* @param LinkTarget $title Where the current action is executed. This is the user page
|
|
* for account creations.
|
|
* @param UserIdentity $user
|
|
* @param string|null $accountName Required iff the action is an account creation
|
|
*/
|
|
public function __construct( string $action, LinkTarget $title, UserIdentity $user, ?string $accountName ) {
|
|
if ( $accountName === null && strpos( $action, 'createaccount' ) !== false ) {
|
|
throw new InvalidArgumentException( '$accountName required for account creations' );
|
|
}
|
|
$this->action = $action;
|
|
$this->title = $title;
|
|
$this->user = $user;
|
|
$this->accountName = $accountName;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getAction(): string {
|
|
return $this->action;
|
|
}
|
|
|
|
/**
|
|
* @return LinkTarget
|
|
*/
|
|
public function getTitle(): LinkTarget {
|
|
return $this->title;
|
|
}
|
|
|
|
/**
|
|
* @return UserIdentity
|
|
*/
|
|
public function getUser(): UserIdentity {
|
|
return $this->user;
|
|
}
|
|
|
|
/**
|
|
* @return string|null
|
|
*/
|
|
public function getAccountName(): ?string {
|
|
return $this->accountName;
|
|
}
|
|
}
|