isUniqueVisitorsEnabled() публичный статический Метод

Unique visitor processing is controlled by the [General] enable_processing_unique_visitors_... INI config options. By default, unique visitors are processed only for day/week/month periods.
public static isUniqueVisitorsEnabled ( string $periodLabel ) : boolean
$periodLabel string `"day"`, `"week"`, `"month"`, `"year"` or `"range"`
Результат boolean
Пример #1
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     if (!$this->getParams()->isSingleSite()) {
         // we only compute unique visitors for a single site
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') !== false) {
         if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
             $uniqueVisitors = (double) $this->computeNbUniqVisitors();
             $row->setColumn('nb_uniq_visitors', $uniqueVisitors);
         } else {
             $row->deleteColumn('nb_uniq_visitors');
         }
     }
 }
Пример #2
0
 /**
  * Sets general period variables on a view, including:
  * 
  * - **displayUniqueVisitors** - Whether unique visitors should be displayed for the current
  *                               period.
  * - **period** - The value of the **period** query parameter.
  * - **otherPeriods** - `array('day', 'week', 'month', 'year', 'range')`
  * - **periodsNames** - List of available periods mapped to their singular and plural translations.
  *
  * @param View $view
  * @throws Exception if the current period is invalid.
  * @api
  */
 public static function setPeriodVariablesView($view)
 {
     if (isset($view->period)) {
         return;
     }
     $currentPeriod = Common::getRequestVar('period');
     $view->displayUniqueVisitors = SettingsPiwik::isUniqueVisitorsEnabled($currentPeriod);
     $availablePeriods = self::getEnabledPeriodsInUI();
     if (!in_array($currentPeriod, $availablePeriods)) {
         throw new Exception("Period must be one of: " . implode(", ", $availablePeriods));
     }
     $found = array_search($currentPeriod, $availablePeriods);
     unset($availablePeriods[$found]);
     $view->period = $currentPeriod;
     $view->otherPeriods = $availablePeriods;
     $view->periodsNames = self::getEnabledPeriodsNames();
 }
Пример #3
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     // skip unique visitors metrics calculation if calculating for multiple sites is disabled
     if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) {
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') === false && $row->getColumn('nb_users') === false) {
         return;
     }
     if (!SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
         $row->deleteColumn('nb_uniq_visitors');
         $row->deleteColumn('nb_users');
         return;
     }
     $metrics = array(Metrics::INDEX_NB_USERS);
     if ($this->getParams()->isSingleSite()) {
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_VISITORS;
     } else {
         if (!SettingsPiwik::isSameFingerprintAcrossWebsites()) {
             throw new Exception("Processing unique visitors across websites is enabled for this instance,\n                            but to process this metric you must first set enable_fingerprinting_across_websites=1\n                            in the config file, under the [Tracker] section.");
         }
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_FINGERPRINTS;
     }
     $metrics[] = $uniqueVisitorsMetric;
     $uniques = $this->computeNbUniques($metrics);
     // see edge case as described in https://github.com/piwik/piwik/issues/9357 where uniq_visitors might be higher
     // than visits because we archive / process it after nb_visits. Between archiving nb_visits and nb_uniq_visitors
     // there could have been a new visit leading to a higher nb_unique_visitors than nb_visits which is not possible
     // by definition. In this case we simply use the visits metric instead of unique visitors metric.
     $visits = $row->getColumn('nb_visits');
     if ($visits !== false && $uniques[$uniqueVisitorsMetric] !== false) {
         $uniques[$uniqueVisitorsMetric] = min($uniques[$uniqueVisitorsMetric], $visits);
     }
     $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]);
     $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
 }
Пример #4
0
 /**
  * @param $period
  * @param $metric
  * @throws \Exception
  */
 private function checkUniqueIsEnabledOrFail($period, $metric)
 {
     if (!SettingsPiwik::isUniqueVisitorsEnabled($period)) {
         throw new \Exception("The metric " . $metric . " is not enabled for the requested period. " . "Please see this FAQ: http://piwik.org/faq/how-to/faq_113/");
     }
 }
Пример #5
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     // skip unique visitors metrics calculation if calculating for multiple sites is disabled
     if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) {
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') === false && $row->getColumn('nb_users') === false) {
         return;
     }
     if (!SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
         $row->deleteColumn('nb_uniq_visitors');
         $row->deleteColumn('nb_users');
         return;
     }
     $metrics = array(Metrics::INDEX_NB_USERS);
     if ($this->getParams()->isSingleSite()) {
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_VISITORS;
     } else {
         if (!SettingsPiwik::isSameFingerprintAcrossWebsites()) {
             throw new Exception("Processing unique visitors across websites is enabled for this instance,\n                            but to process this metric you must first set enable_fingerprinting_across_websites=1\n                            in the config file, under the [Tracker] section.");
         }
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_FINGERPRINTS;
     }
     $metrics[] = $uniqueVisitorsMetric;
     $uniques = $this->computeNbUniques($metrics);
     $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]);
     $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
 }
Пример #6
0
 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);
     }
 }
Пример #7
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     // skip unique visitors metrics calculation if calculating for multiple sites is disabled
     if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) {
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') !== false || $row->getColumn('nb_users') !== false) {
         if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
             $metrics = array(Metrics::INDEX_NB_UNIQ_VISITORS, Metrics::INDEX_NB_USERS);
             $uniques = $this->computeNbUniques($metrics);
             $row->setColumn('nb_uniq_visitors', $uniques[Metrics::INDEX_NB_UNIQ_VISITORS]);
             $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
         } else {
             $row->deleteColumn('nb_uniq_visitors');
             $row->deleteColumn('nb_users');
         }
     }
 }
Пример #8
0
 protected function getCoreColumns($period)
 {
     $columns = array('nb_visits', 'nb_actions', 'nb_visits_converted', 'bounce_count', 'sum_visit_length', 'max_actions');
     if (SettingsPiwik::isUniqueVisitorsEnabled($period)) {
         $columns = array_merge(array('nb_uniq_visitors'), $columns);
     }
     $columns = array_values($columns);
     return $columns;
 }
Пример #9
0
 /**
  * Sets general period variables on a view, including:
  * 
  * - **displayUniqueVisitors** - Whether unique visitors should be displayed for the current
  *                               period.
  * - **period** - The value of the **period** query parameter.
  * - **otherPeriods** - `array('day', 'week', 'month', 'year', 'range')`
  * - **periodsNames** - List of available periods mapped to their singular and plural translations.
  *
  * @param View $view
  * @throws Exception if the current period is invalid.
  * @api
  */
 public static function setPeriodVariablesView($view)
 {
     if (isset($view->period)) {
         return;
     }
     $currentPeriod = Common::getRequestVar('period');
     $view->displayUniqueVisitors = SettingsPiwik::isUniqueVisitorsEnabled($currentPeriod);
     $availablePeriods = array('day', 'week', 'month', 'year', 'range');
     if (!in_array($currentPeriod, $availablePeriods)) {
         throw new Exception("Period must be one of: " . implode(",", $availablePeriods));
     }
     $periodNames = array('day' => array('singular' => Piwik::translate('CoreHome_PeriodDay'), 'plural' => Piwik::translate('CoreHome_PeriodDays')), 'week' => array('singular' => Piwik::translate('CoreHome_PeriodWeek'), 'plural' => Piwik::translate('CoreHome_PeriodWeeks')), 'month' => array('singular' => Piwik::translate('CoreHome_PeriodMonth'), 'plural' => Piwik::translate('CoreHome_PeriodMonths')), 'year' => array('singular' => Piwik::translate('CoreHome_PeriodYear'), 'plural' => Piwik::translate('CoreHome_PeriodYears')), 'range' => array('singular' => Piwik::translate('General_DateRangeInPeriodList'), 'plural' => Piwik::translate('General_DateRangeInPeriodList')));
     $found = array_search($currentPeriod, $availablePeriods);
     if ($found !== false) {
         unset($availablePeriods[$found]);
     }
     $view->period = $currentPeriod;
     $view->otherPeriods = $availablePeriods;
     $view->periodsNames = $periodNames;
 }