Inheritance: extends Piwik\Plugin\Dimension\VisitDimension
 /**
  * @param DataTable $table
  */
 public function filter($table)
 {
     $userId = new UserId();
     if (!$userId->hasDataTableUsers($table) && !$userId->isUsedInAtLeastOneSite(array($this->idSite), $this->period, $this->date)) {
         $table->deleteColumn(Metrics::INDEX_NB_USERS);
     }
 }
Exemplo n.º 2
0
 public function enrichProcessedReportIfVisitsSummaryGet(&$response, $infos)
 {
     if (empty($infos['parameters'][4]) || empty($response['reportData'])) {
         return;
     }
     $params = $infos['parameters'];
     $idSites = array($params[0]);
     $period = $params[1];
     $date = $params[2];
     $module = $params[3];
     $method = $params[4];
     if (!$this->isRequestingVisitsSummaryGet($module, $method)) {
         return;
     }
     $userId = new UserId();
     /** @var DataTable|DataTable\Map $dataTable */
     $dataTable = $response['reportData'];
     if (!$userId->hasDataTableUsers($dataTable) && !$userId->isUsedInAtLeastOneSite($idSites, $period, $date)) {
         $report = new Get();
         $report->removeUsersFromProcessedReport($response);
     }
 }
 /**
  * Here you can configure how your report should be displayed. For instance whether your report supports a search
  * etc. You can also change the default request config. For instance change how many rows are displayed by default.
  *
  * @param ViewDataTable $view
  */
 public function configureView(ViewDataTable $view)
 {
     $idDimension = Common::getRequestVar('idDimension', 0, 'int');
     if ($idDimension < 1) {
         return;
     }
     $isWidget = Common::getRequestVar('widget', 0, 'int');
     $module = Common::getRequestVar('module', '', 'string');
     if ($isWidget && $module !== 'Widgetize' && $view->isViewDataTableId(HtmlTable::ID)) {
         // we disable row evolution as it would not forward the idDimension when requesting the row evolution
         // this is a limitation in row evolution
         $view->config->disable_row_evolution = true;
     }
     $module = $view->requestConfig->getApiModuleToRequest();
     $method = $view->requestConfig->getApiMethodToRequest();
     $idReport = sprintf('%s_%s_idDimension--%d', $module, $method, $idDimension);
     if ($view->requestConfig->idSubtable) {
         $view->config->addTranslation('label', Piwik::translate('Actions_ColumnActionURL'));
     } elseif (!empty($this->dimension)) {
         $view->config->addTranslation('label', $this->dimension->getName());
     }
     $view->requestConfig->request_parameters_to_modify['idDimension'] = $idDimension;
     $view->requestConfig->request_parameters_to_modify['reportUniqueId'] = $idReport;
     $view->config->custom_parameters['scopeOfDimension'] = $this->scopeOfDimension;
     if ($this->scopeOfDimension === CustomDimensions::SCOPE_VISIT) {
         // Goal metrics for each custom dimension  of 'visit' scope is processed in Archiver via aggregateFromConversions
         $view->config->show_goals = true;
         $view->config->columns_to_display = array('label', 'nb_visits', 'nb_uniq_visitors', 'nb_users', 'nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate');
         $view->config->filters[] = function (DataTable $table) use($view) {
             $userId = new UserId();
             if (!$userId->hasDataTableUsers($table)) {
                 $view->config->removeColumnToDisplay('nb_users');
             }
             if ($table->getRowsCount() > 0 && !$table->getFirstRow()->hasColumn('nb_uniq_visitors')) {
                 $view->config->removeColumnToDisplay('nb_uniq_visitors');
             }
         };
     } elseif ($this->scopeOfDimension === CustomDimensions::SCOPE_ACTION) {
         $view->config->columns_to_display = array('label', 'nb_hits', 'nb_visits', 'bounce_rate', 'avg_time_on_dimension', 'exit_rate', 'avg_time_generation');
         $formatter = new Metrics\Formatter();
         // add avg_generation_time tooltip
         $tooltipCallback = function ($hits, $min, $max) use($formatter) {
             if (!$hits) {
                 return false;
             }
             return Piwik::translate("Actions_AvgGenerationTimeTooltip", array($hits, "<br />", $formatter->getPrettyTimeFromSeconds($min, true), $formatter->getPrettyTimeFromSeconds($max, true)));
         };
         $view->config->filters[] = array('ColumnCallbackAddMetadata', array(array('nb_hits_with_time_generation', 'min_time_generation', 'max_time_generation'), 'avg_time_generation_tooltip', $tooltipCallback));
     }
     $view->config->show_table_all_columns = false;
 }
Exemplo n.º 4
0
Arquivo: Get.php Projeto: piwik/piwik
 private function addSparklineColumns(Sparklines $view)
 {
     $currentPeriod = Common::getRequestVar('period');
     $currentIdSite = Common::getRequestVar('idSite');
     $currentDate = Common::getRequestVar('date');
     $displayUniqueVisitors = SettingsPiwik::isUniqueVisitorsEnabled($currentPeriod);
     $isActionPluginEnabled = Common::isActionsPluginEnabled();
     $view->config->addSparklineMetric($displayUniqueVisitors ? array('nb_visits', 'nb_uniq_visitors') : array('nb_visits'), 5);
     if ($isActionPluginEnabled) {
         $view->config->addSparklineMetric(array('nb_actions'), 10);
         // either actions or pageviews will be displayed
         $view->config->addSparklineMetric(array('nb_pageviews', 'nb_uniq_pageviews'), 20);
     } else {
         // make sure to still create a div on the right side for this, just leave it empty
         $view->config->addPlaceholder(10);
     }
     $userId = new UserId();
     if ($userId->isUsedInAtLeastOneSite(array($currentIdSite), $currentPeriod, $currentDate)) {
         $view->config->addSparklineMetric(array('nb_users'), 30);
         $view->config->addPlaceholder(31);
     }
     $view->config->addSparklineMetric(array('avg_time_on_site'), 40);
     $idSite = Common::getRequestVar('idSite');
     if ($isActionPluginEnabled && Site::isSiteSearchEnabledFor($idSite)) {
         $view->config->addSparklineMetric(array('nb_searches', 'nb_keywords'), 50);
     } else {
         // make sure to still create a div on the right side for this, just leave it empty
         $view->config->addPlaceholder(50);
     }
     $view->config->addSparklineMetric(array('bounce_rate'), 60);
     if ($isActionPluginEnabled) {
         $view->config->addSparklineMetric(array('nb_downloads', 'nb_uniq_downloads'), 70);
         $view->config->addSparklineMetric(array('nb_actions_per_visit'), 71);
         $view->config->addSparklineMetric(array('nb_outlinks', 'nb_uniq_outlinks'), 72);
         $view->config->addSparklineMetric(array('avg_time_generation'), 73);
         $view->config->addSparklineMetric(array('max_actions'), 74);
     }
 }
Exemplo n.º 5
0
 private function assertNotUsedInAtLeastOneSite($idSites, $period, $date)
 {
     $result = $this->userId->isUsedInAtLeastOneSite($idSites, $period, $date);
     $this->assertFalse($result);
 }