9use InvalidArgumentException;
29 private readonly ?
string $expiry;
32 private readonly
bool $expired;
40 private readonly
int $userId = 0,
41 private readonly ?
string $group =
null,
42 ?
string $expiry =
null,
44 $this->expiry = $expiry ?:
null;
75 return $this->expired;
100 throw new InvalidArgumentException(
'UserGroupMembership::getLink() $format parameter should be ' .
101 "'wiki' or 'html'" );
121 'linkTitle' => $linkTitle,
122 'groupName' => $groupName
123 ] = self::getLinkInfo( $ugm, $context, $userName );
128 $groupLink = $linkRenderer->makeLink( $linkTitle, $groupName );
130 $groupLink = htmlspecialchars( $groupName );
135 'expiryDT' => $expiryDT,
136 'expiryD' => $expiryD,
137 'expiryT' => $expiryT
138 ] = self::getLinkExpiryParams( $context, $expiry );
140 return $context->
msg(
'group-membership-link-with-expiry' )
141 ->params( $groupLink, $expiryDT, $expiryD, $expiryT )->escaped();
162 'linkTitle' => $linkTitle,
163 'groupName' => $groupName
164 ] = self::getLinkInfo( $ugm, $context, $userName );
168 $linkPage = $linkTitle->getFullText();
169 $groupLink =
"[[$linkPage|$groupName]]";
171 $groupLink = $groupName;
176 'expiryDT' => $expiryDT,
177 'expiryD' => $expiryD,
178 'expiryT' => $expiryT
179 ] = self::getLinkExpiryParams( $context, $expiry );
180 return $context->
msg(
'group-membership-link-with-expiry' )
181 ->params( $groupLink, $expiryDT, $expiryD, $expiryT )->text();
192 private static function getLinkInfo( $ugm, $context, $userName =
null ): array {
193 if ( $ugm instanceof UserGroupMembership ) {
194 $expiry = $ugm->getExpiry();
195 $group = $ugm->getGroup();
202 if ( $userName !==
null ) {
203 $groupName = $uiLanguage->getGroupMemberName( $group, $userName );
205 $groupName = $uiLanguage->getGroupName( $group );
207 $linkTitle = self::getGroupPage( $group );
208 return [
'expiry' => $expiry,
'linkTitle' => $linkTitle,
'groupName' => $groupName ];
216 private static function getLinkExpiryParams( IContextSource $context,
string $expiry ): array {
219 $uiUser = $context->getUser();
220 $expiryDT = $uiLanguage->userTimeAndDate( $expiry, $uiUser );
221 $expiryD = $uiLanguage->userDate( $expiry, $uiUser );
222 $expiryT = $uiLanguage->userTime( $expiry, $uiUser );
223 return [
'expiryDT' => $expiryDT,
'expiryD' => $expiryD,
'expiryT' => $expiryT ];
234 $msg =
wfMessage(
"grouppage-$group" )->inContentLanguage();
235 if ( $msg->exists() ) {
236 $title = Title::newFromText( $msg->text() );
255 && $ugm->
getGroup() === $this->group
262class_alias( UserGroupMembership::class,
'UserGroupMembership' );
wfTimestampNow()
Convenience function; returns MediaWiki timestamp for the present time.
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
if(!defined('MW_SETUP_CALLBACK'))
Interface for objects which can provide a MediaWiki context on request.