Loading src/Controller/Report/HitDetails.php +1 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ class HitDetails extends ControllerBase { 'title' => $this->t('Whois lookup'), ], ]; $ip = long2ip($hit_details->visitors_ip); $ip = inet_ntop($hit_details->visitors_ip); $user = $this->entityTypeManager()->getStorage('user')->load($hit_details->visitors_uid); // @TODO make url, referer and username as link $array = [ Loading src/Controller/Report/Hits.php +3 −3 Original line number Diff line number Diff line Loading @@ -143,7 +143,7 @@ class Hits extends ControllerBase { * Array representing the table content. */ protected function getData(array $header, $host) { if (@inet_pton($host) === FALSE) { if (inet_pton($host) === FALSE) { return NULL; } Loading @@ -167,14 +167,14 @@ class Hits extends ControllerBase { ] ); $query->fields('u', ['name', 'uid']); $query->condition('v.visitors_ip', sprintf('%u', ip2long($host)), '='); $query->condition('v.visitors_ip', inet_pton($host), '='); visitors_date_filter_sql_condition($query); $query->orderByHeader($header); $query->limit($items_per_page); $count_query = $this->database->select('visitors', 'v'); $count_query->addExpression('COUNT(*)'); $count_query->condition('visitors_ip', sprintf('%u', ip2long($host))); $count_query->condition('visitors_ip', inet_pton($host)); visitors_date_filter_sql_condition($count_query); $query->setCountQuery($count_query); $results = $query->execute(); Loading src/Controller/Report/Hosts.php +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ class Hosts extends ControllerBase { $i = 0 + $page * $items_per_page; foreach ($results as $data) { $ip = long2ip($data->visitors_ip); $ip = inet_ntop($data->visitors_ip); $visitors_host_url = Url::fromRoute('visitors.host_hits', ["host" => $ip]); $visitors_host_link = Link::fromTextAndUrl($ip, $visitors_host_url); $visitors_host_link = $visitors_host_link->toRenderable(); Loading src/EventSubscriber/KernelTerminateSubscriber.php +1 −1 Original line number Diff line number Diff line Loading @@ -232,7 +232,7 @@ class KernelTerminateSubscriber implements EventSubscriberInterface { * IPv4) Internet Protocol dotted address. */ protected function getIpStr() { return sprintf("%u", ip2long($this->request->getClientIp())); return inet_pton($this->request->getClientIp()); } /** Loading visitors.install +44 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ */ use Drupal\block\Entity\Block; use Drupal\Core\Database\Database; /** * Implements hook_schema(). Loading Loading @@ -131,3 +132,46 @@ function visitors_update_8212() { } } } /** * Support IPv6. */ function visitors_update_8213(&$sandbox) { // Retrieves a \Drupal\Core\Database\Connection which is a PDO instance. $database = Database::getConnection(); if (!isset($sandbox['progress'])) { $sandbox['progress'] = 0; $sandbox['last_id'] = 0; $sandbox['max'] = $database->query('SELECT COUNT(visitors_id) FROM {visitors}') ->fetchField(); } $logs = $database->select('visitors', 'v') ->fields('v', [ 'visitors_id', 'visitors_ip', ]) ->condition('visitors_id', $sandbox['last_id'], '>') ->range(0, 75) ->orderBy('visitors_id', 'ASC') ->execute(); foreach ($logs as $log) { $ip_address = long2ip($log->visitors_ip); $packed = inet_pton($ip_address); if ($packed != FALSE) { $database->update('visitors') ->fields([ 'visitors_ip' => $packed, ]) ->condition('visitors_id', $log->visitors_id) ->execute(); } $sandbox['progress'] += 1; $sandbox['last_id'] = $log->visitors_id; } $sandbox['#finished'] = empty($sandbox['max']) ? 1 : $sandbox['progress'] / $sandbox['max']; } Loading
src/Controller/Report/HitDetails.php +1 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ class HitDetails extends ControllerBase { 'title' => $this->t('Whois lookup'), ], ]; $ip = long2ip($hit_details->visitors_ip); $ip = inet_ntop($hit_details->visitors_ip); $user = $this->entityTypeManager()->getStorage('user')->load($hit_details->visitors_uid); // @TODO make url, referer and username as link $array = [ Loading
src/Controller/Report/Hits.php +3 −3 Original line number Diff line number Diff line Loading @@ -143,7 +143,7 @@ class Hits extends ControllerBase { * Array representing the table content. */ protected function getData(array $header, $host) { if (@inet_pton($host) === FALSE) { if (inet_pton($host) === FALSE) { return NULL; } Loading @@ -167,14 +167,14 @@ class Hits extends ControllerBase { ] ); $query->fields('u', ['name', 'uid']); $query->condition('v.visitors_ip', sprintf('%u', ip2long($host)), '='); $query->condition('v.visitors_ip', inet_pton($host), '='); visitors_date_filter_sql_condition($query); $query->orderByHeader($header); $query->limit($items_per_page); $count_query = $this->database->select('visitors', 'v'); $count_query->addExpression('COUNT(*)'); $count_query->condition('visitors_ip', sprintf('%u', ip2long($host))); $count_query->condition('visitors_ip', inet_pton($host)); visitors_date_filter_sql_condition($count_query); $query->setCountQuery($count_query); $results = $query->execute(); Loading
src/Controller/Report/Hosts.php +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ class Hosts extends ControllerBase { $i = 0 + $page * $items_per_page; foreach ($results as $data) { $ip = long2ip($data->visitors_ip); $ip = inet_ntop($data->visitors_ip); $visitors_host_url = Url::fromRoute('visitors.host_hits', ["host" => $ip]); $visitors_host_link = Link::fromTextAndUrl($ip, $visitors_host_url); $visitors_host_link = $visitors_host_link->toRenderable(); Loading
src/EventSubscriber/KernelTerminateSubscriber.php +1 −1 Original line number Diff line number Diff line Loading @@ -232,7 +232,7 @@ class KernelTerminateSubscriber implements EventSubscriberInterface { * IPv4) Internet Protocol dotted address. */ protected function getIpStr() { return sprintf("%u", ip2long($this->request->getClientIp())); return inet_pton($this->request->getClientIp()); } /** Loading
visitors.install +44 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ */ use Drupal\block\Entity\Block; use Drupal\Core\Database\Database; /** * Implements hook_schema(). Loading Loading @@ -131,3 +132,46 @@ function visitors_update_8212() { } } } /** * Support IPv6. */ function visitors_update_8213(&$sandbox) { // Retrieves a \Drupal\Core\Database\Connection which is a PDO instance. $database = Database::getConnection(); if (!isset($sandbox['progress'])) { $sandbox['progress'] = 0; $sandbox['last_id'] = 0; $sandbox['max'] = $database->query('SELECT COUNT(visitors_id) FROM {visitors}') ->fetchField(); } $logs = $database->select('visitors', 'v') ->fields('v', [ 'visitors_id', 'visitors_ip', ]) ->condition('visitors_id', $sandbox['last_id'], '>') ->range(0, 75) ->orderBy('visitors_id', 'ASC') ->execute(); foreach ($logs as $log) { $ip_address = long2ip($log->visitors_ip); $packed = inet_pton($ip_address); if ($packed != FALSE) { $database->update('visitors') ->fields([ 'visitors_ip' => $packed, ]) ->condition('visitors_id', $log->visitors_id) ->execute(); } $sandbox['progress'] += 1; $sandbox['last_id'] = $log->visitors_id; } $sandbox['#finished'] = empty($sandbox['max']) ? 1 : $sandbox['progress'] / $sandbox['max']; }