You are here

class HitDetails in Visitors 8.2

Hierarchy

Expanded class hierarchy of HitDetails

File

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

Namespace

Drupal\visitors\Controller\Report
View source
class HitDetails extends ControllerBase {

  /**
   * The date service.
   *
   * @var \Drupal\Core\Datetime\DateFormatterInterface
   */
  protected $date;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('date.formatter'));
  }

  /**
   * Constructs a HitDetails object.
   *
   * @param \Drupal\Core\Datetime\DateFormatterInterface $date
   *   The date service.
   */
  public function __construct(DateFormatterInterface $date_formatter) {
    $this->date = $date_formatter;
  }

  /**
   * Returns a hit details page.
   *
   * @return array
   *   A render array representing the hit details page content.
   */
  public function display($hit_id) {
    return array(
      'visitors_table' => array(
        '#type' => 'table',
        '#rows' => $this
          ->_getData($hit_id),
      ),
    );
  }

  /**
   * Returns a table content.
   *
   * @param int $hit_id
   *   Unique id of the visitors log.
   *
   * @return array
   *   Array representing the table content.
   */
  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;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ControllerBase::$configFactory protected property The configuration factory.
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityManager protected property The entity manager.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$formBuilder protected property The form builder. 2
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityManager Deprecated protected function Retrieves the entity manager service.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
ControllerBase::state protected function Returns the state storage service.
HitDetails::$date protected property The date service.
HitDetails::create public static function Instantiates a new instance of this class. Overrides ControllerBase::create
HitDetails::display public function Returns a hit details page.
HitDetails::_getData protected function Returns a table content.
HitDetails::__construct public function Constructs a HitDetails object.
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.