diff options
Diffstat (limited to 'Echo/formatters/UserRightsFormatter.php')
-rw-r--r-- | Echo/formatters/UserRightsFormatter.php | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Echo/formatters/UserRightsFormatter.php b/Echo/formatters/UserRightsFormatter.php new file mode 100644 index 00000000..c59a79a3 --- /dev/null +++ b/Echo/formatters/UserRightsFormatter.php @@ -0,0 +1,72 @@ +<?php + +/** + * Formatter for 'user-rights' notifications + */ +class EchoUserRightsFormatter extends EchoBasicFormatter { + + /** + * @param $event EchoEvent + * @param $param string + * @param $message Message + * @param $user User + */ + protected function processParam( $event, $param, $message, $user ) { + $extra = $event->getExtra(); + + switch ( $param ) { + // List of user rights that are granted or revoked + case 'user-rights-list': + global $wgLang; + + $list = array(); + + foreach ( array( 'add', 'remove' ) as $action ) { + if ( isset( $extra[$action] ) && $extra[$action] ) { + + // Get the localized group names, bug 55338 + $groups = array(); + foreach( $extra[$action] as $group ) { + $msg = $this->getMessage( 'group-' . $group ); + $groups[] = $msg->isBlank() ? $group : $msg->escaped(); + } + + // Messages that can be used here: + // * notification-user-rights-add + // * notification-user-rights-remove + $list[] = $this->getMessage( 'notification-user-rights-' . $action ) + ->params( $wgLang->commaList( $groups ), count( $groups ) ) + ->escaped(); + } + } + $message->params( $wgLang->semicolonList( $list ) ); + break; + + default: + parent::processParam( $event, $param, $message, $user ); + break; + } + } + + /** + * Helper function for getLink() + * + * @param EchoEvent $event + * @param User $user The user receiving the notification + * @param String $destination The destination type for the link + * @return Array including target and query parameters + */ + protected function getLinkParams( $event, $user, $destination ) { + $target = null; + $query = array(); + // Set up link parameters based on the destination (or pass to parent) + switch ( $destination ) { + case 'user-rights-list': + $target = SpecialPage::getTitleFor( 'Listgrouprights' ); + break; + default: + return parent::getLinkParams( $event, $user, $destination ); + } + return array( $target, $query ); + } +} |