+ function onEndShowSections(Action $action)
+ {
+ if (!$action instanceof ShowstreamAction) {
+ // early return for actions we're not interested in
+ return true;
+ }
+
+ $target = $action->getTarget();
+ if (!$target->isSilenced()) {
+ // Only show the IP of users who are not silenced.
+ return true;
+ }
+
+ $scoped = $action->getScoped();
+ if (!$scoped->hasRight(Right::SILENCEUSER)) {
+ // only show registration IP if we have the right to silence users
+ return true;
+ }
+
+ $ri = Registration_ip::getKV('user_id', $target->getID());
+ $ipaddress = null;
+ if ($ri instanceof Registration_ip) {
+ $ipaddress = $ri->ipaddress;
+ unset($ri);
+ }
+
+ $action->elementStart('div', array('id' => 'entity_mod_log',
+ 'class' => 'section'));
+
+ $action->element('h2', null, _('Registration IP'));
+
+ // TRANS: Label for the information about which IP a users registered from.
+ $action->element('strong', null, _('Registered from:'));
+ $el = 'span';
+ $attrs = ['class'=>'ipaddress'];
+ if (!is_null($ipaddress)) {
+ $el = 'a';
+ $attrs['href'] = common_local_url('ipregistrations', array('ipaddress'=>$ipaddress));
+ }
+ $action->element($el, $attrs,
+ // TRANS: Unknown IP address.
+ $ipaddress ?: _('unknown'));
+
+ $action->elementEnd('div');
+ }
+