return true;
}
+ public function onRouterInitialized(URLMapper $m)
+ {
+ $m->connect('main/ipregistrations/:ipaddress',
+ array('action' => 'ipregistrations'),
+ array('ipaddress' => '[0-9a-f\.\:]+'));
+ }
+
/**
* Called when someone tries to register.
*
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 instanceof Profile || !$scoped->hasRight(self::VIEWMODLOG)) {
// only continue if we are allowed to VIEWMODLOG
$action->element('h2', null, _('Registration IP'));
$action->element('strong', null, _('Registered from:'));
- $action->element('span', ['class'=>'ipaddress'], $ipaddress ?: 'unknown');
+ $action->element('a',
+ [ 'class'=>'ipaddress',
+ 'href'=>common_local_url('ipregistrations', array('ipaddress'=>$ipaddress)),
+ ],
+ $ipaddress ?: 'unknown');
$action->elementEnd('div');
}
$reg = new Registration_ip();
- $reg->user_id = $profile->id;
- $reg->ipaddress = $ipaddress;
+ $reg->user_id = $profile->getID();
+ $reg->ipaddress = mb_strtolower($ipaddress);
$reg->created = common_sql_now();
$result = $reg->insert();
--- /dev/null
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class IpregistrationsAction extends ManagedAction
+{
+ protected $needLogin = true;
+
+ protected $ipaddress = null;
+
+ function title()
+ {
+ return sprintf(_('Registrations from IP %s'), $this->ipaddress);
+ }
+
+ protected function doPreparation()
+ {
+ if (!$scoped->hasRight(self::VIEWMODLOG) && !$scoped->hasRole(Profile_role::ADMINISTRATOR)) {
+ throw new AuthorizationException(_('You do not have privileges to see this page'));
+ }
+
+ $this->ipaddress = $this->trimmed('ipaddress');
+ $this->profile_ids = Registration_ip::usersByIP($this->ipaddress);
+ }
+
+ public function showContent()
+ {
+ $this->elementStart('ul');
+ foreach (Profile::listGet('id', $this->profile_ids) as $profile) {
+ $this->elementStart('li');
+ try {
+ $this->element('a', ['href'=>$profile->getUrl()], $profile->getFancyName());
+ } catch (InvalidUrlException $e) {
+ $this->element('span', null, $profile->getFancyName());
+ }
+ $this->elementEnd('li');
+ }
+ $this->elementEnd('ul');
+ }
+}