Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
30 / 30
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
Referer
100.00% covered (success)
100.00%
30 / 30
100.00% covered (success)
100.00%
4 / 4
5
100.00% covered (success)
100.00%
1 / 1
 getFormId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 buildForm
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
1 / 1
1
 submitForm
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setSessionRefererType
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Drupal\visitors\Form;
4
5use Drupal\Core\Form\FormStateInterface;
6use Drupal\visitors\VisitorsReportInterface;
7
8/**
9 * Referer type filter form.
10 */
11class Referer extends DateFilter {
12
13  /**
14   * {@inheritdoc}
15   */
16  public function getFormId() {
17    return 'visitors_referer_form';
18  }
19
20  /**
21   * {@inheritdoc}
22   */
23  public function buildForm(array $form, FormStateInterface $form_state) {
24    $this->setSessionRefererType();
25    $form = parent::buildForm($form, $form_state);
26
27    unset($form['submit']);
28
29    $form['visitors_referer'] = [
30      '#type'          => 'fieldset',
31      '#title'         => $this->t('Referer type filter'),
32      '#collapsible'   => FALSE,
33      '#collapsed'     => FALSE,
34      '#description'   => $this->t('Choose referer type'),
35    ];
36
37    $form['visitors_referer']['referer_type'] = [
38      '#type' => 'select',
39      '#title' => 'Referer type',
40      '#default_value' => $_SESSION['referer_type'],
41      '#options' => [
42        $this->t('Internal pages'),
43        $this->t('External pages'),
44        $this->t('All pages'),
45      ],
46    ];
47
48    $form['submit'] = [
49      '#type'          => 'submit',
50      '#value'         => $this->t('Save'),
51    ];
52
53    return $form;
54  }
55
56  /**
57   * {@inheritdoc}
58   */
59  public function submitForm(array &$form, FormStateInterface $form_state) {
60    parent::submitForm($form, $form_state);
61
62    $_SESSION['referer_type'] = $form_state->getValues()['referer_type'];
63  }
64
65  /**
66   * Set to session info default values for visitors referer type.
67   */
68  protected function setSessionRefererType() {
69    if (!isset($_SESSION['referer_type'])) {
70      $_SESSION['referer_type'] = VisitorsReportInterface::REFERER_TYPE_EXTERNAL_PAGES;
71    }
72  }
73
74}