/** * Archives Actions reports for a Period * @param Piwik_ArchiveProcessing $archiveProcessing * @return bool */ public function archivePeriod(Piwik_ArchiveProcessing $archiveProcessing) { Piwik_Actions_ArchivingHelper::reloadConfig(); $dataTableToSum = array('Actions_actions', 'Actions_downloads', 'Actions_outlink', 'Actions_actions_url', 'Actions_sitesearch'); $nameToCount = $archiveProcessing->archiveDataTable($dataTableToSum, self::$invalidSummedColumnNameToRenamedNameFromPeriodArchive, Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero, Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable, Piwik_Actions_ArchivingHelper::$columnToSortByBeforeTruncation); $archiveProcessing->archiveNumericValuesSum(array('Actions_nb_pageviews', 'Actions_nb_uniq_pageviews', 'Actions_nb_downloads', 'Actions_nb_uniq_downloads', 'Actions_nb_outlinks', 'Actions_nb_uniq_outlinks', 'Actions_nb_searches')); // Unique Keywords can't be summed, instead we take the RowsCount() of the keyword table $archiveProcessing->insertNumericRecord('Actions_nb_keywords', $nameToCount['Actions_sitesearch']['level0']); return true; }
/** * Analyze searches * - number of visits with searches * - number of total searches */ private function dayAnalyzeNumberOfSearches() { $query = ' SELECT COUNT(action.idaction) AS searches, COUNT(DISTINCT visit.idvisit) AS visits FROM ' . Piwik_Common::prefixTable('log_visit') . ' AS visit LEFT JOIN ' . Piwik_Common::prefixTable('log_link_visit_action') . ' AS visit_action ON visit.idvisit = visit_action.idvisit LEFT JOIN ' . Piwik_Common::prefixTable('log_action') . ' AS action ON action.idaction = visit_action.idaction_url WHERE visit.idsite = :idsite AND action.search_term IS NOT NULL AND (visit_first_action_time BETWEEN :startDate AND :endDate) '; $result = Piwik_SiteSearch_Db::fetchRow($query, $this->getSqlBindings()); $this->archiveProcessing->insertNumericRecord('SiteSearch_totalSearches', $result['searches']); $this->archiveProcessing->insertNumericRecord('SiteSearch_visitsWithSearches', $result['visits']); }
/** * Records the daily stats (numeric or datatable blob) into the archive tables. * * @param Piwik_ArchiveProcessing $archiveProcessing * @return void */ protected function archiveDayRecordInDatabase($archiveProcessing) { $numericRecords = array('Referers_distinctSearchEngines' => count($this->interestBySearchEngineAndKeyword), 'Referers_distinctKeywords' => count($this->interestByKeywordAndSearchEngine), 'Referers_distinctCampaigns' => count($this->interestByCampaign), 'Referers_distinctWebsites' => count($this->interestByWebsite), 'Referers_distinctWebsitesUrls' => count($this->distinctUrls)); foreach ($numericRecords as $name => $value) { $archiveProcessing->insertNumericRecord($name, $value); } $dataTable = $archiveProcessing->getDataTableSerialized($this->interestByType); $archiveProcessing->insertBlobRecord('Referers_type', $dataTable); destroy($dataTable); $blobRecords = array('Referers_keywordBySearchEngine' => $archiveProcessing->getDataTableWithSubtablesFromArraysIndexedByLabel($this->interestBySearchEngineAndKeyword, $this->interestBySearchEngine), 'Referers_searchEngineByKeyword' => $archiveProcessing->getDataTableWithSubtablesFromArraysIndexedByLabel($this->interestByKeywordAndSearchEngine, $this->interestByKeyword), 'Referers_keywordByCampaign' => $archiveProcessing->getDataTableWithSubtablesFromArraysIndexedByLabel($this->interestByCampaignAndKeyword, $this->interestByCampaign), 'Referers_urlByWebsite' => $archiveProcessing->getDataTableWithSubtablesFromArraysIndexedByLabel($this->interestByWebsiteAndUrl, $this->interestByWebsite)); foreach ($blobRecords as $recordName => $table) { $blob = $table->getSerialized($this->maximumRowsInDataTableLevelZero, $this->maximumRowsInSubDataTable, $this->columnToSortByBeforeTruncation); $archiveProcessing->insertBlobRecord($recordName, $blob); destroy($table); } }