You are here

class VisitStatistic in Dashboards with Layout Builder 8

Same name and namespace in other branches
  1. 2.0.x modules/dashboards_matomo/src/Plugin/Dashboard/VisitStatistic.php \Drupal\dashboards_matomo\Plugin\Dashboard\VisitStatistic

Show account info.

Plugin annotation


@Dashboard(
  id = "matomo_visit_statistic",
  label = @Translation("Visit report."),
  category = @Translation("Matomo"),
)

Hierarchy

Expanded class hierarchy of VisitStatistic

File

modules/dashboards_matomo/src/Plugin/Dashboard/VisitStatistic.php, line 17

Namespace

Drupal\dashboards_matomo\Plugin\Dashboard
View source
class VisitStatistic extends MatomoBase {

  /**
   * Get columns for query.
   *
   * @return array
   *   Return columns.
   */
  protected function getChartColumns() {
    return [
      'nb_visits' => $this
        ->t('Visits'),
      'avg_time_on_site' => $this
        ->t('Average time on site'),
      'nb_uniq_visitors' => $this
        ->t('Unique visitors'),
      'nb_actions' => $this
        ->t('Actions'),
      'sum_visit_length' => $this
        ->t('Visit length summary.'),
      'max_actions' => $this
        ->t('Max actions.'),
      'nb_users' => $this
        ->t('Users'),
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function buildSettingsForm(array $form, FormStateInterface $form_state, array $configuration) : array {
    $form = parent::buildSettingsForm($form, $form_state, $configuration);
    $form['fields'] = [
      '#type' => 'checkboxes',
      '#options' => $this
        ->getChartColumns(),
      '#multiple' => TRUE,
      '#default_value' => $configuration['fields'],
      '#title' => $this
        ->t('Stats to show'),
    ];
    return $form;
  }

  /**
   * Lazy build callback.
   *
   * @param \Drupal\dashboards\Plugin\DashboardBase $plugin
   *   Matomo base plugin.
   * @param array $configuration
   *   Configuration.
   */
  public static function lazyBuild(DashboardBase $plugin, array $configuration) : array {
    try {
      $fields = array_values($configuration['fields']);
      $fields = array_filter($fields);
      $response = $plugin
        ->query('VisitsSummary.get', [
        'filter_limit' => 20,
        'period' => $configuration['period'],
        'date' => $plugin
          ->getDateTranslated($configuration['date']),
        'flat' => 1,
        'columns' => $fields,
      ]);
      $rows = [];
      foreach ($response as $date => $row) {
        if (!isset($row[0])) {
          $r = [
            $date,
          ];
          foreach ($fields as $field) {
            $r[] = 0;
          }
          continue;
        }
        $r = [
          $date,
        ];
        foreach ($fields as $field) {
          $r[] = $row[0][$field];
        }
        $rows[] = $r;
      }
      $plugin
        ->setRows($rows);
      $plugin
        ->setChartType('line');
      $labelsFields = $plugin
        ->getChartColumns();
      $labels = [
        $plugin
          ->t('Period'),
      ];
      foreach ($fields as $field) {
        $labels[] = $labelsFields[$field];
      }
      $plugin
        ->setLabels($labels);
      $plugin
        ->setChartType($configuration['chart_type']);
      return $plugin
        ->renderChart($configuration);
    } catch (\Exception $ex) {
      return [
        '#markup' => $plugin
          ->t('Error occured: @error', [
          '@error' => $ex
            ->getMessage(),
        ]),
        '#cache' => [
          'max-age' => 0,
        ],
      ];
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ChartTrait::$empty protected property Empty flag.
ChartTrait::$labels protected property Labels.
ChartTrait::$rows protected property Rows.
ChartTrait::$type protected property Chart type.
ChartTrait::addLabel public function Add a label.
ChartTrait::addRow public function Add a row.
ChartTrait::getAllowedStyles public function Get allowed styles.
ChartTrait::renderChart public function Set all rows.
ChartTrait::setChartType public function Add a label.
ChartTrait::setEmpty public function Set this chart is empty.
ChartTrait::setLabels public function Set all labels.
ChartTrait::setRows public function Set all rows.
DashboardBase::$cache protected property Cache backend.
DashboardBase::getCache protected function Get cache for cid.
DashboardBase::massageFormValues public function Validate settings form.
DashboardBase::setCache protected function Set a new cache entry. Cache is prefixed by pluginid.
DashboardBase::validateForm public function Validate settings form. 1
DashboardLazyBuildBase::buildRenderArray public function Build render array. Overrides DashboardBase::buildRenderArray
DashboardLazyBuildBase::lazyBuildPreRender public static function Helper for lazy build render. Overrides DashboardLazyBuildInterface::lazyBuildPreRender
MatomoBase::$matomoQuery protected property Entity query.
MatomoBase::buildDateRows protected function Helper function for build rows from matomo.
MatomoBase::create public static function Creates an instance of the plugin. Overrides DashboardBase::create
MatomoBase::formatDateRange public static function Helper function for short date ranges.
MatomoBase::getDateTranslated protected function Translate date matomo string.
MatomoBase::getQuery public function Get matomo query.
MatomoBase::query protected function Helper function for query matomo.
MatomoBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides DashboardBase::__construct
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
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.
VisitStatistic::buildSettingsForm public function Build render array. Overrides MatomoBase::buildSettingsForm
VisitStatistic::getChartColumns protected function Get columns for query.
VisitStatistic::lazyBuild public static function Lazy build callback. Overrides DashboardLazyBuildInterface::lazyBuild