You are here

protected function Node::_getData in Visitors 8.2

Returns a table content.

Parameters

array $header: Table header configuration.

Return value

array Array representing the table content.

1 call to Node::_getData()
Node::display in src/Controller/Report/Node.php
Returns a recent hits page.

File

src/Controller/Report/Node.php, line 132
Contains Drupal\visitors\Controller\Report\Node.

Class

Node

Namespace

Drupal\visitors\Controller\Report

Code

protected function _getData($header, $node) {
  if ($node) {
    $items_per_page = \Drupal::config('visitors.config')
      ->get('items_per_page');
    $query = \Drupal::database()
      ->select('visitors', 'v')
      ->extend('Drupal\\Core\\Database\\Query\\PagerSelectExtender')
      ->extend('Drupal\\Core\\Database\\Query\\TableSortExtender');
    $query
      ->leftJoin('users_field_data', 'u', 'u.uid=v.visitors_id');
    $query
      ->fields('v', array(
      'visitors_uid',
      'visitors_id',
      'visitors_date_time',
      'visitors_referer',
    ));
    $nid = (int) $node
      ->id();
    $query
      ->fields('u', array(
      'name',
      'uid',
    ));
    $db_or = new Condition();
    $db_or
      ->condition('v.visitors_path', '/node/' . $nid, '=');

    //@todo removed placeholder is this right?
    $db_or
      ->condition('v.visitors_path', '%/node/' . $nid . "%", 'LIKE');
    $query
      ->condition($db_or);
    visitors_date_filter_sql_condition($query);
    $query
      ->orderByHeader($header);
    $query
      ->limit($items_per_page);
    $count_query = \Drupal::database()
      ->select('visitors', 'v');
    $count_query
      ->addExpression('COUNT(*)');
    $count_query
      ->condition($db_or);
    visitors_date_filter_sql_condition($count_query);
    $query
      ->setCountQuery($count_query);
    $results = $query
      ->execute();
    $rows = array();
    $page = isset($_GET['page']) ? (int) $_GET['page'] : '';
    $i = 0 + $page * $items_per_page;
    $timezone = date_default_timezone_get();
    foreach ($results as $data) {
      $user = \Drupal::entityTypeManager()
        ->getStorage('user')
        ->load($data->visitors_uid);
      $username = array(
        '#type' => 'username',
        '#account' => $user,
      );
      $rows[] = array(
        ++$i,
        $data->visitors_id,
        $this->date
          ->format($data->visitors_date_time, 'short'),
        !empty($data->visitors_referer) ? $data->visitors_referer : 'none',
        $user
          ->getAccountName(),
        Link::fromTextAndUrl($this
          ->t('details'), Url::fromRoute('visitors.hit_details', array(
          "hit_id" => $data->visitors_id,
        ))),
      );
    }
    return $rows;
  }
}