24use Wikimedia\Assert\Assert;
25use Wikimedia\Assert\ParameterTypeException;
56 public function __construct( $userId = 0, $group =
null, $expiry =
null ) {
60 $this->expiry =
$expiry ?:
null;
74 Assert::parameterType(
'integer',
$userId,
'$userId' );
75 Assert::parameterType( [
'string',
'null' ],
$group,
'$group' );
76 Assert::parameterType( [
'string',
'null' ],
$expiry,
'$expiry' );
106 $this->userId = (int)$row->ug_user;
107 $this->group = $row->ug_group;
108 $this->expiry = $row->ug_expiry ===
null ?
126 $row->ug_expiry ===
null ?
null :
wfTimestamp( TS_MW, $row->ug_expiry )
139 return MediaWikiServices::getInstance()->getUserGroupManager()->getQueryInfo()[
'fields'];
153 return MediaWikiServices::getInstance()
154 ->getUserGroupManager()
155 ->removeUserFromGroup(
179 return MediaWikiServices::getInstance()
180 ->getUserGroupManager()
199 return $this->expired;
212 return MediaWikiServices::getInstance()
213 ->getUserGroupManager()
229 return MediaWikiServices::getInstance()
230 ->getUserGroupManager()
231 ->getUserGroupMemberships(
254 $ugms = MediaWikiServices::getInstance()
255 ->getUserGroupManager()
256 ->getUserGroupMemberships(
263 return $ugms[
$group] ??
false;
280 if ( $format !==
'wiki' && $format !==
'html' ) {
281 throw new MWException(
'UserGroupMembership::getLink() $format parameter should be ' .
282 "'wiki' or 'html'" );
287 $group = $ugm->getGroup();
293 if ( $userName !==
null ) {
294 $groupName = self::getGroupMemberName(
$group, $userName );
296 $groupName = self::getGroupName(
$group );
300 $linkTitle = self::getGroupPage(
$group );
301 $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
302 if ( $format ===
'wiki' ) {
304 $linkPage = $linkTitle->getFullText();
305 $groupLink =
"[[$linkPage|$groupName]]";
307 $groupLink = $groupName;
311 $groupLink = $linkRenderer->makeLink( $linkTitle, $groupName );
313 $groupLink = htmlspecialchars( $groupName );
321 $expiryDT = $uiLanguage->userTimeAndDate(
$expiry, $uiUser );
322 $expiryD = $uiLanguage->userDate(
$expiry, $uiUser );
323 $expiryT = $uiLanguage->userTime(
$expiry, $uiUser );
325 if ( $format ===
'wiki' ) {
326 return $context->
msg(
'group-membership-link-with-expiry' )
327 ->params( $groupLink, $expiryDT, $expiryD, $expiryT )->text();
330 return $context->
msg(
'group-membership-link-with-expiry' )
331 ->params( $groupLink, $expiryDT, $expiryD, $expiryT )->escaped();
346 return $msg->isBlank() ?
$group : $msg->text();
358 $msg =
wfMessage(
"group-$group-member", $username );
359 return $msg->isBlank() ?
$group : $msg->text();
370 $msg =
wfMessage(
"grouppage-$group" )->inContentLanguage();
371 if ( $msg->exists() ) {
372 $title = Title::newFromText( $msg->text() );
373 if ( is_object(
$title ) ) {
391 && $ugm->
getGroup() === $this->group
wfTimestampNow()
Convenience function; returns MediaWiki timestamp for the present time.
wfTimestamp( $outputtype=TS_UNIX, $ts=0)
Get a timestamp string in one of various formats.
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Logs a warning that $function is deprecated.
Represents a "user group membership" – a specific instance of a user belonging to a group.
static newFromRow( $row)
Creates a new UserGroupMembership object from a database row.
static getMembershipsForUser( $userId, IDatabase $db=null)
Returns UserGroupMembership objects for all the groups a user currently belongs to.
static getGroupPage( $group)
Gets the title of a page describing a particular user group.
static getMembership( $userId, $group, IDatabase $db=null)
Returns a UserGroupMembership object that pertains to the given user and group, or false if the user ...
static selectFields()
Returns the list of user_groups fields that should be selected to create a new user group membership.
static getLink( $ugm, IContextSource $context, $format, $userName=null)
Gets a link for a user group, possibly including the expiry date if relevant.
insert( $allowUpdate=false, IDatabase $dbw=null)
Insert a user right membership into the database.
int $userId
The ID of the user who belongs to the group.
static getGroupName( $group)
Gets the localized friendly name for a group, if it exists.
static purgeExpired()
Purge expired memberships from the user_groups table.
__construct( $userId=0, $group=null, $expiry=null)
isExpired()
Has the membership expired?
static getGroupMemberName( $group, $username)
Gets the localized name for a member of a group, if it exists.
string null $expiry
Timestamp of expiry in TS_MW format, or null if no expiry.
equals(UserGroupMembership $ugm)
Compares two pure value objects.
bool $expired
Expiration flag.
static assertValidSpec( $userId, $group, $expiry)
Asserts that the given parameters could be used to construct a UserGroupMembership object.
static newFromId( $id)
Static factory method for creation from a given user ID.
Interface for objects which can provide a MediaWiki context on request.
msg( $key,... $params)
This is the method for getting translated interface messages.