37 $userrightsInterwikiDelimiter = $this->context->getConfig()
38 ->get( MainConfigNames::UserrightsInterwikiDelimiter );
40 if ( !$this->plaintext ) {
42 ucfirst( $title->getDBkey() );
43 $parts = explode( $userrightsInterwikiDelimiter, $text, 2 );
45 if ( count( $parts ) === 2 ) {
47 $titleLink = WikiMap::foreignUserLink(
51 strtr( $parts[0],
'_',
' ' ) .
52 $userrightsInterwikiDelimiter .
57 if ( $titleLink !==
false ) {
63 return parent::makePageLink( $title, $parameters, $title ? $title->getText() : null );
78 $params = parent::getMessageParameters();
85 $oldGroups = $this->makeGroupArray(
$params[3] );
86 $newGroups = $this->makeGroupArray(
$params[4] );
88 $userName = $this->entry->getTarget()->getText();
89 $lang = $this->context->getLanguage();
90 if ( !$this->plaintext && count( $oldGroups ) ) {
91 foreach ( $oldGroups as &$group ) {
92 $group = $lang->getGroupMemberName( $group, $userName );
95 if ( !$this->plaintext && count( $newGroups ) ) {
96 foreach ( $newGroups as &$group ) {
97 $group = $lang->getGroupMemberName( $group, $userName );
102 $allParams = $this->entry->getParameters();
104 if ( count( $oldGroups ) ) {
106 $allParams[
'oldmetadata'] ?? [] ) );
108 $params[3] = $this->
msg(
'rightsnone' )->text();
110 if ( count( $newGroups ) ) {
114 $allParams[
'newmetadata'] ?? [] ) );
116 $params[4] = $this->
msg(
'rightsnone' )->text();
125 $uiLanguage = $this->context->getLanguage();
126 $uiUser = $this->context->getUser();
128 $tempList = $permList = [];
131 reset( $serializedUGMs );
132 while ( current( $groups ) ) {
133 $group = current( $groups );
135 if ( current( $serializedUGMs ) &&
136 isset( current( $serializedUGMs )[
'expiry'] ) &&
137 current( $serializedUGMs )[
'expiry']
140 $expiry = current( $serializedUGMs )[
'expiry'];
141 $expiryFormatted = $uiLanguage->userTimeAndDate( $expiry, $uiUser );
142 $expiryFormattedD = $uiLanguage->userDate( $expiry, $uiUser );
143 $expiryFormattedT = $uiLanguage->userTime( $expiry, $uiUser );
144 $tempList[] = $this->
msg(
'rightslogentry-temporary-group' )->params( $group,
145 $expiryFormatted, $expiryFormattedD, $expiryFormattedT )->parse();
148 $permList[] = htmlspecialchars( $group );
152 next( $serializedUGMs );
157 return $uiLanguage->listToText( array_merge( $tempList, $permList ) );
167 '4::oldgroups' =>
'4:array:oldgroups',
168 '5::newgroups' =>
'5:array:newgroups',
170 foreach ( $map as $index => $key ) {
171 if ( isset(
$params[$index] ) ) {
181 if ( isset(
$params[
'4:array:oldgroups'] ) ) {
182 $params[
'4:array:oldgroups'] = $this->makeGroupArray(
$params[
'4:array:oldgroups'] );
184 $oldmetadata =&
$params[
'oldmetadata'];
186 unset(
$params[
'oldmetadata'] );
187 $params[
'oldmetadata'] = array_map(
static function ( $index ) use (
$params, $oldmetadata ) {
188 $result = [
'group' =>
$params[
'4:array:oldgroups'][$index] ];
189 if ( isset( $oldmetadata[$index] ) ) {
190 $result += $oldmetadata[$index];
192 $result[
'expiry'] = ApiResult::formatExpiry( $result[
'expiry'] ??
null );
195 }, array_keys(
$params[
'4:array:oldgroups'] ) );
198 if ( isset(
$params[
'5:array:newgroups'] ) ) {
199 $params[
'5:array:newgroups'] = $this->makeGroupArray(
$params[
'5:array:newgroups'] );
201 $newmetadata =&
$params[
'newmetadata'];
203 unset(
$params[
'newmetadata'] );
204 $params[
'newmetadata'] = array_map(
static function ( $index ) use (
$params, $newmetadata ) {
205 $result = [
'group' =>
$params[
'5:array:newgroups'][$index] ];
206 if ( isset( $newmetadata[$index] ) ) {
207 $result += $newmetadata[$index];
209 $result[
'expiry'] = ApiResult::formatExpiry( $result[
'expiry'] ??
null );
212 }, array_keys(
$params[
'5:array:newgroups'] ) );
219 $ret = parent::formatParametersForApi();
220 if ( isset( $ret[
'oldgroups'] ) ) {
221 ApiResult::setIndexedTagName( $ret[
'oldgroups'],
'g' );
223 if ( isset( $ret[
'newgroups'] ) ) {
224 ApiResult::setIndexedTagName( $ret[
'newgroups'],
'g' );
226 if ( isset( $ret[
'oldmetadata'] ) ) {
227 ApiResult::setArrayType( $ret[
'oldmetadata'],
'array' );
228 ApiResult::setIndexedTagName( $ret[
'oldmetadata'],
'g' );
230 if ( isset( $ret[
'newmetadata'] ) ) {
231 ApiResult::setArrayType( $ret[
'newmetadata'],
'array' );
232 ApiResult::setIndexedTagName( $ret[
'newmetadata'],
'g' );