Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
    /**
     * 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']);
    }
Exemple #3
0
 /**
  * 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);
     }
 }