1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<?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?
* @todo Add the timestamp
*/
class ActionSpecifier {
/** @var string */
private $action;
/** @var LinkTarget */
private $title;
/** @var UserIdentity */
private $user;
/** @var string */
private $requestIP;
/** @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 $requestIP
* @param string|null $accountName Required iff the action is an account creation
*/
public function __construct(
string $action, LinkTarget $title, UserIdentity $user, string $requestIP, ?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->requestIP = $requestIP;
$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
* @note It may be an empty string for less recent changes.
*/
public function getIP(): string {
return $this->requestIP;
}
/**
* @return string|null
*/
public function getAccountName(): ?string {
return $this->accountName;
}
}
|