示例#1
0
 /**
  * Daily archive: processes all Referers reports, eg. Visits by Keyword,
  * Visits by websites, etc.
  *
  * @param Piwik_ArchiveProcessing $archiveProcessing
  * @throws Exception
  * @return void
  */
 protected function archiveDayAggregateVisits(Piwik_ArchiveProcessing $archiveProcessing)
 {
     $dimension = array("referer_type", "referer_name", "referer_keyword", "referer_url");
     $query = $archiveProcessing->queryVisitsByDimension($dimension);
     $this->interestBySearchEngine = $this->interestByKeyword = $this->interestBySearchEngineAndKeyword = $this->interestByKeywordAndSearchEngine = $this->interestByWebsite = $this->interestByWebsiteAndUrl = $this->interestByCampaignAndKeyword = $this->interestByCampaign = $this->interestByType = $this->distinctUrls = array();
     while ($row = $query->fetch()) {
         if (empty($row['referer_type'])) {
             $row['referer_type'] = Piwik_Common::REFERER_TYPE_DIRECT_ENTRY;
         } else {
             switch ($row['referer_type']) {
                 case Piwik_Common::REFERER_TYPE_SEARCH_ENGINE:
                     if (empty($row['referer_keyword'])) {
                         $row['referer_keyword'] = self::LABEL_KEYWORD_NOT_DEFINED;
                     }
                     if (!isset($this->interestBySearchEngine[$row['referer_name']])) {
                         $this->interestBySearchEngine[$row['referer_name']] = $archiveProcessing->getNewInterestRow();
                     }
                     if (!isset($this->interestByKeyword[$row['referer_keyword']])) {
                         $this->interestByKeyword[$row['referer_keyword']] = $archiveProcessing->getNewInterestRow();
                     }
                     if (!isset($this->interestBySearchEngineAndKeyword[$row['referer_name']][$row['referer_keyword']])) {
                         $this->interestBySearchEngineAndKeyword[$row['referer_name']][$row['referer_keyword']] = $archiveProcessing->getNewInterestRow();
                     }
                     if (!isset($this->interestByKeywordAndSearchEngine[$row['referer_keyword']][$row['referer_name']])) {
                         $this->interestByKeywordAndSearchEngine[$row['referer_keyword']][$row['referer_name']] = $archiveProcessing->getNewInterestRow();
                     }
                     $archiveProcessing->updateInterestStats($row, $this->interestBySearchEngine[$row['referer_name']]);
                     $archiveProcessing->updateInterestStats($row, $this->interestByKeyword[$row['referer_keyword']]);
                     $archiveProcessing->updateInterestStats($row, $this->interestBySearchEngineAndKeyword[$row['referer_name']][$row['referer_keyword']]);
                     $archiveProcessing->updateInterestStats($row, $this->interestByKeywordAndSearchEngine[$row['referer_keyword']][$row['referer_name']]);
                     break;
                 case Piwik_Common::REFERER_TYPE_WEBSITE:
                     if (!isset($this->interestByWebsite[$row['referer_name']])) {
                         $this->interestByWebsite[$row['referer_name']] = $archiveProcessing->getNewInterestRow();
                     }
                     $archiveProcessing->updateInterestStats($row, $this->interestByWebsite[$row['referer_name']]);
                     if (!isset($this->interestByWebsiteAndUrl[$row['referer_name']][$row['referer_url']])) {
                         $this->interestByWebsiteAndUrl[$row['referer_name']][$row['referer_url']] = $archiveProcessing->getNewInterestRow();
                     }
                     $archiveProcessing->updateInterestStats($row, $this->interestByWebsiteAndUrl[$row['referer_name']][$row['referer_url']]);
                     if (!isset($this->distinctUrls[$row['referer_url']])) {
                         $this->distinctUrls[$row['referer_url']] = true;
                     }
                     break;
                 case Piwik_Common::REFERER_TYPE_CAMPAIGN:
                     if (!empty($row['referer_keyword'])) {
                         if (!isset($this->interestByCampaignAndKeyword[$row['referer_name']][$row['referer_keyword']])) {
                             $this->interestByCampaignAndKeyword[$row['referer_name']][$row['referer_keyword']] = $archiveProcessing->getNewInterestRow();
                         }
                         $archiveProcessing->updateInterestStats($row, $this->interestByCampaignAndKeyword[$row['referer_name']][$row['referer_keyword']]);
                     }
                     if (!isset($this->interestByCampaign[$row['referer_name']])) {
                         $this->interestByCampaign[$row['referer_name']] = $archiveProcessing->getNewInterestRow();
                     }
                     $archiveProcessing->updateInterestStats($row, $this->interestByCampaign[$row['referer_name']]);
                     break;
                 case Piwik_Common::REFERER_TYPE_DIRECT_ENTRY:
                     // direct entry are aggregated below in $this->interestByType array
                     break;
                 default:
                     throw new Exception("Non expected referer_type = " . $row['referer_type']);
                     break;
             }
         }
         if (!isset($this->interestByType[$row['referer_type']])) {
             $this->interestByType[$row['referer_type']] = $archiveProcessing->getNewInterestRow();
         }
         $archiveProcessing->updateInterestStats($row, $this->interestByType[$row['referer_type']]);
     }
 }
示例#2
0
 /**
  * @param Piwik_ArchiveProcessing $archiveProcessing
  * @return void
  */
 protected function archiveDayAggregate(Piwik_ArchiveProcessing $archiveProcessing)
 {
     for ($i = 1; $i <= Piwik_Tracker::MAX_CUSTOM_VARIABLES; $i++) {
         $keyField = "custom_var_k" . $i;
         $valueField = "custom_var_v" . $i;
         $dimensions = array($keyField, $valueField);
         $where = "{$keyField} != '' AND {$valueField} != ''";
         // Custom Vars names and values metrics for visits
         $query = $archiveProcessing->queryVisitsByDimension($dimensions, $where);
         while ($row = $query->fetch()) {
             if (!isset($this->interestByCustomVariables[$row[$keyField]])) {
                 $this->interestByCustomVariables[$row[$keyField]] = $archiveProcessing->getNewInterestRow();
             }
             if (!isset($this->interestByCustomVariablesAndValue[$row[$keyField]][$row[$valueField]])) {
                 $this->interestByCustomVariablesAndValue[$row[$keyField]][$row[$valueField]] = $archiveProcessing->getNewInterestRow();
             }
             $archiveProcessing->updateInterestStats($row, $this->interestByCustomVariables[$row[$keyField]]);
             $archiveProcessing->updateInterestStats($row, $this->interestByCustomVariablesAndValue[$row[$keyField]][$row[$valueField]]);
         }
         // Custom Vars names and values metrics for Goals
         $query = $archiveProcessing->queryConversionsByDimension($dimensions, $where);
         if ($query !== false) {
             while ($row = $query->fetch()) {
                 if (!isset($this->interestByCustomVariables[$row[$keyField]][Piwik_Archive::INDEX_GOALS][$row['idgoal']])) {
                     $this->interestByCustomVariables[$row[$keyField]][Piwik_Archive::INDEX_GOALS][$row['idgoal']] = $archiveProcessing->getNewGoalRow();
                 }
                 if (!isset($this->interestByCustomVariablesAndValue[$row[$keyField]][$row[$valueField]][Piwik_Archive::INDEX_GOALS][$row['idgoal']])) {
                     $this->interestByCustomVariablesAndValue[$row[$keyField]][$row[$valueField]][Piwik_Archive::INDEX_GOALS][$row['idgoal']] = $archiveProcessing->getNewGoalRow();
                 }
                 $archiveProcessing->updateGoalStats($row, $this->interestByCustomVariables[$row[$keyField]][Piwik_Archive::INDEX_GOALS][$row['idgoal']]);
                 $archiveProcessing->updateGoalStats($row, $this->interestByCustomVariablesAndValue[$row[$keyField]][$row[$valueField]][Piwik_Archive::INDEX_GOALS][$row['idgoal']]);
             }
         }
         $archiveProcessing->enrichConversionsByLabelArrayHasTwoLevels($this->interestByCustomVariablesAndValue);
     }
 }