You are here

protected function HitDetails::_getData in Visitors 8.2

Returns a table content.

Parameters

int $hit_id: Unique id of the visitors log.

Return value

array Array representing the table content.

1 call to HitDetails::_getData()
HitDetails::display in src/Controller/Report/HitDetails.php
Returns a hit details page.

File

src/Controller/Report/HitDetails.php, line 67
Contains Drupal\visitors\Controller\Report\HitDetails.

Class

HitDetails

Namespace

Drupal\visitors\Controller\Report

Code

protected function _getData($hit_id) {
  $query = \Drupal::database()
    ->select('visitors', 'v');
  $query
    ->leftJoin('users_field_data', 'u', 'u.uid=v.visitors_uid');
  $query
    ->fields('v');
  $query
    ->fields('u', array(
    'name',
    'uid',
  ));
  $query
    ->condition('v.visitors_id', (int) $hit_id);
  $hit_details = $query
    ->execute()
    ->fetch();
  $rows = array();
  if ($hit_details) {
    $url = urldecode($hit_details->visitors_url);
    $referer = $hit_details->visitors_referer;
    $date = $this->date
      ->format($hit_details->visitors_date_time, 'large');
    $whois_enable = \Drupal::service('module_handler')
      ->moduleExists('whois');
    $attr = array(
      'attributes' => array(
        'target' => '_blank',
        'title' => t('Whois lookup'),
      ),
    );
    $ip = long2ip($hit_details->visitors_ip);
    $user = \Drupal::entityTypeManager()
      ->getStorage('user')
      ->load($hit_details->visitors_uid);

    //@TODO make url, referer and username as link
    $array = array(
      'URL' => $url,
      'Title' => Html::escape($hit_details->visitors_title),
      'Referer' => $referer,
      'Date' => $date,
      'User' => $user
        ->getAccountName(),
      'IP' => $whois_enable ? Link::fromTextAndUrl($ip, Url::fromUri('whois/' . $ip, $attr)) : $ip,
      'User Agent' => Html::escape($hit_details->visitors_user_agent),
    );
    if (\Drupal::service('module_handler')
      ->moduleExists('visitors_geoip')) {
      $geoip_data_array = array(
        'Country' => Html::escape($hit_details->visitors_country_name),
        'Region' => Html::escape($hit_details->visitors_region),
        'City' => Html::escape($hit_details->visitors_city),
        'Postal Code' => Html::escape($hit_details->visitors_postal_code),
        'Latitude' => Html::escape($hit_details->visitors_latitude),
        'Longitude' => Html::escape($hit_details->visitors_longitude),
        'DMA Code' => Html::escape($hit_details->visitors_dma_code),
        'PSTN Area Code' => Html::escape($hit_details->visitors_area_code),
      );
      $array = array_merge($array, $geoip_data_array);
    }
    foreach ($array as $key => $value) {
      $rows[] = array(
        array(
          'data' => t($key),
          'header' => TRUE,
        ),
        $value,
      );
    }
  }
  return $rows;
}