Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattab <matthieu.aubry@gmail.com>2013-06-18 08:14:49 +0400
committermattab <matthieu.aubry@gmail.com>2013-06-18 08:14:49 +0400
commit621db6a16a37374aed623f75ea8cdabdf2b8e8d0 (patch)
tree6cc0365cf90f2d82dcdc5321043fe99aeabd8141 /core/Archive.php
parentd8ac3977a27b41b1a87caceb2f9766a6305391cf (diff)
Adding new Metrics class that knows about all metrics. Moving from Piwik_Archive class.
Also moved some other const to Piwik class.
Diffstat (limited to 'core/Archive.php')
-rw-r--r--core/Archive.php192
1 files changed, 7 insertions, 185 deletions
diff --git a/core/Archive.php b/core/Archive.php
index c085f8d8a5..a6efb48331 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -41,181 +41,10 @@
*/
class Piwik_Archive
{
- /**
- * When saving DataTables in the DB, we sometimes replace the columns name by these IDs so we save up lots of bytes
- * Eg. INDEX_NB_UNIQ_VISITORS is an integer: 4 bytes, but 'nb_uniq_visitors' is 16 bytes at least
- * (in php it's actually even much more)
- *
- */
- const INDEX_NB_UNIQ_VISITORS = 1;
- const INDEX_NB_VISITS = 2;
- const INDEX_NB_ACTIONS = 3;
- const INDEX_MAX_ACTIONS = 4;
- const INDEX_SUM_VISIT_LENGTH = 5;
- const INDEX_BOUNCE_COUNT = 6;
- const INDEX_NB_VISITS_CONVERTED = 7;
- const INDEX_NB_CONVERSIONS = 8;
- const INDEX_REVENUE = 9;
- const INDEX_GOALS = 10;
- const INDEX_SUM_DAILY_NB_UNIQ_VISITORS = 11;
-
- // Specific to the Actions reports
- const INDEX_PAGE_NB_HITS = 12;
- const INDEX_PAGE_SUM_TIME_SPENT = 13;
-
- const INDEX_PAGE_EXIT_NB_UNIQ_VISITORS = 14;
- const INDEX_PAGE_EXIT_NB_VISITS = 15;
- const INDEX_PAGE_EXIT_SUM_DAILY_NB_UNIQ_VISITORS = 16;
-
- const INDEX_PAGE_ENTRY_NB_UNIQ_VISITORS = 17;
- const INDEX_PAGE_ENTRY_SUM_DAILY_NB_UNIQ_VISITORS = 18;
- const INDEX_PAGE_ENTRY_NB_VISITS = 19;
- const INDEX_PAGE_ENTRY_NB_ACTIONS = 20;
- const INDEX_PAGE_ENTRY_SUM_VISIT_LENGTH = 21;
- const INDEX_PAGE_ENTRY_BOUNCE_COUNT = 22;
-
- // Ecommerce Items reports
- const INDEX_ECOMMERCE_ITEM_REVENUE = 23;
- const INDEX_ECOMMERCE_ITEM_QUANTITY = 24;
- const INDEX_ECOMMERCE_ITEM_PRICE = 25;
- const INDEX_ECOMMERCE_ORDERS = 26;
- const INDEX_ECOMMERCE_ITEM_PRICE_VIEWED = 27;
-
- // Site Search
- const INDEX_SITE_SEARCH_HAS_NO_RESULT = 28;
- const INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS = 29;
-
- // Performance Analytics
- const INDEX_PAGE_SUM_TIME_GENERATION = 30;
- const INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION = 31;
- const INDEX_PAGE_MIN_TIME_GENERATION = 32;
- const INDEX_PAGE_MAX_TIME_GENERATION = 33;
-
- // Goal reports
- const INDEX_GOAL_NB_CONVERSIONS = 1;
- const INDEX_GOAL_REVENUE = 2;
- const INDEX_GOAL_NB_VISITS_CONVERTED = 3;
-
- const INDEX_GOAL_ECOMMERCE_REVENUE_SUBTOTAL = 4;
- const INDEX_GOAL_ECOMMERCE_REVENUE_TAX = 5;
- const INDEX_GOAL_ECOMMERCE_REVENUE_SHIPPING = 6;
- const INDEX_GOAL_ECOMMERCE_REVENUE_DISCOUNT = 7;
- const INDEX_GOAL_ECOMMERCE_ITEMS = 8;
-
const REQUEST_ALL_WEBSITES_FLAG = 'all';
const ARCHIVE_ALL_PLUGINS_FLAG = 'all';
const ID_SUBTABLE_LOAD_ALL_SUBTABLES = 'all';
- public static function getVisitsMetricNames()
- {
- $names = array();
- foreach(self::$metricsAggregatedFromLogs as $metricId) {
- $names[$metricId] = self::$mappingFromIdToName[$metricId];
- }
- return $names;
- }
-
- protected static $metricsAggregatedFromLogs = array(
- Piwik_Archive::INDEX_NB_UNIQ_VISITORS,
- Piwik_Archive::INDEX_NB_VISITS,
- Piwik_Archive::INDEX_NB_ACTIONS,
- Piwik_Archive::INDEX_MAX_ACTIONS,
- Piwik_Archive::INDEX_SUM_VISIT_LENGTH,
- Piwik_Archive::INDEX_BOUNCE_COUNT,
- Piwik_Archive::INDEX_NB_VISITS_CONVERTED,
- );
-
- public static $mappingFromIdToName = array(
- Piwik_Archive::INDEX_NB_UNIQ_VISITORS => 'nb_uniq_visitors',
- Piwik_Archive::INDEX_NB_VISITS => 'nb_visits',
- Piwik_Archive::INDEX_NB_ACTIONS => 'nb_actions',
- Piwik_Archive::INDEX_MAX_ACTIONS => 'max_actions',
- Piwik_Archive::INDEX_SUM_VISIT_LENGTH => 'sum_visit_length',
- Piwik_Archive::INDEX_BOUNCE_COUNT => 'bounce_count',
- Piwik_Archive::INDEX_NB_VISITS_CONVERTED => 'nb_visits_converted',
- Piwik_Archive::INDEX_NB_CONVERSIONS => 'nb_conversions',
- Piwik_Archive::INDEX_REVENUE => 'revenue',
- Piwik_Archive::INDEX_GOALS => 'goals',
- Piwik_Archive::INDEX_SUM_DAILY_NB_UNIQ_VISITORS => 'sum_daily_nb_uniq_visitors',
-
- // Actions metrics
- Piwik_Archive::INDEX_PAGE_NB_HITS => 'nb_hits',
- Piwik_Archive::INDEX_PAGE_SUM_TIME_SPENT => 'sum_time_spent',
- Piwik_Archive::INDEX_PAGE_SUM_TIME_GENERATION => 'sum_time_generation',
- Piwik_Archive::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION => 'nb_hits_with_time_generation',
- Piwik_Archive::INDEX_PAGE_MIN_TIME_GENERATION => 'min_time_generation',
- Piwik_Archive::INDEX_PAGE_MAX_TIME_GENERATION => 'max_time_generation',
-
- Piwik_Archive::INDEX_PAGE_EXIT_NB_UNIQ_VISITORS => 'exit_nb_uniq_visitors',
- Piwik_Archive::INDEX_PAGE_EXIT_NB_VISITS => 'exit_nb_visits',
- Piwik_Archive::INDEX_PAGE_EXIT_SUM_DAILY_NB_UNIQ_VISITORS => 'sum_daily_exit_nb_uniq_visitors',
-
- Piwik_Archive::INDEX_PAGE_ENTRY_NB_UNIQ_VISITORS => 'entry_nb_uniq_visitors',
- Piwik_Archive::INDEX_PAGE_ENTRY_SUM_DAILY_NB_UNIQ_VISITORS => 'sum_daily_entry_nb_uniq_visitors',
- Piwik_Archive::INDEX_PAGE_ENTRY_NB_VISITS => 'entry_nb_visits',
- Piwik_Archive::INDEX_PAGE_ENTRY_NB_ACTIONS => 'entry_nb_actions',
- Piwik_Archive::INDEX_PAGE_ENTRY_SUM_VISIT_LENGTH => 'entry_sum_visit_length',
- Piwik_Archive::INDEX_PAGE_ENTRY_BOUNCE_COUNT => 'entry_bounce_count',
- Piwik_Archive::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS => 'nb_hits_following_search',
-
- // Items reports metrics
- Piwik_Archive::INDEX_ECOMMERCE_ITEM_REVENUE => 'revenue',
- Piwik_Archive::INDEX_ECOMMERCE_ITEM_QUANTITY => 'quantity',
- Piwik_Archive::INDEX_ECOMMERCE_ITEM_PRICE => 'price',
- Piwik_Archive::INDEX_ECOMMERCE_ITEM_PRICE_VIEWED => 'price_viewed',
- Piwik_Archive::INDEX_ECOMMERCE_ORDERS => 'orders',
- );
-
- public static $mappingFromIdToNameGoal = array(
- Piwik_Archive::INDEX_GOAL_NB_CONVERSIONS => 'nb_conversions',
- Piwik_Archive::INDEX_GOAL_NB_VISITS_CONVERTED => 'nb_visits_converted',
- Piwik_Archive::INDEX_GOAL_REVENUE => 'revenue',
- Piwik_Archive::INDEX_GOAL_ECOMMERCE_REVENUE_SUBTOTAL => 'revenue_subtotal',
- Piwik_Archive::INDEX_GOAL_ECOMMERCE_REVENUE_TAX => 'revenue_tax',
- Piwik_Archive::INDEX_GOAL_ECOMMERCE_REVENUE_SHIPPING => 'revenue_shipping',
- Piwik_Archive::INDEX_GOAL_ECOMMERCE_REVENUE_DISCOUNT => 'revenue_discount',
- Piwik_Archive::INDEX_GOAL_ECOMMERCE_ITEMS => 'items',
- );
-
- /**
- * string indexed column name => Integer indexed column name
- * @var array
- */
- public static $mappingFromNameToId = array(
- 'nb_uniq_visitors' => Piwik_Archive::INDEX_NB_UNIQ_VISITORS,
- 'nb_visits' => Piwik_Archive::INDEX_NB_VISITS,
- 'nb_actions' => Piwik_Archive::INDEX_NB_ACTIONS,
- 'max_actions' => Piwik_Archive::INDEX_MAX_ACTIONS,
- 'sum_visit_length' => Piwik_Archive::INDEX_SUM_VISIT_LENGTH,
- 'bounce_count' => Piwik_Archive::INDEX_BOUNCE_COUNT,
- 'nb_visits_converted' => Piwik_Archive::INDEX_NB_VISITS_CONVERTED,
- 'nb_conversions' => Piwik_Archive::INDEX_NB_CONVERSIONS,
- 'revenue' => Piwik_Archive::INDEX_REVENUE,
- 'goals' => Piwik_Archive::INDEX_GOALS,
- 'sum_daily_nb_uniq_visitors' => Piwik_Archive::INDEX_SUM_DAILY_NB_UNIQ_VISITORS,
- );
-
- /**
- * Metrics calculated and archived by the Actions plugin.
- *
- * @var array
- */
- public static $actionsMetrics = array(
- 'nb_pageviews',
- 'nb_uniq_pageviews',
- 'nb_downloads',
- 'nb_uniq_downloads',
- 'nb_outlinks',
- 'nb_uniq_outlinks',
- 'nb_searches',
- 'nb_keywords',
- 'nb_hits',
- 'nb_hits_following_search',
- );
-
- const LABEL_ECOMMERCE_CART = 'ecommerceAbandonedCart';
- const LABEL_ECOMMERCE_ORDER = 'ecommerceOrder';
-
/**
* List of archive IDs for the site, periods and segment we are querying with.
* Archive IDs are indexed by done flag and period, ie:
@@ -425,17 +254,6 @@ class Piwik_Archive
}
/**
- * Returns true if Segmentation is allowed for this user
- *
- * @return bool
- */
- public static function isSegmentationEnabled()
- {
- return !Piwik::isUserIsAnonymous()
- || Piwik_Config::getInstance()->General['anonymous_user_enable_use_segments_API'];
- }
-
- /**
* Returns the list of plugins that archive the given reports.
*
* @param array $archiveNames
@@ -483,7 +301,11 @@ class Piwik_Archive
return $dataTable;
}
-
+
+ private function appendIdSubtable($recordName, $id)
+ {
+ return $recordName . "_" . $id;
+ }
/**
* Queries archive tables for data and returns the result.
* @return Piwik_Archive_DataCollection
@@ -499,7 +321,7 @@ class Piwik_Archive
&& $idSubtable != self::ID_SUBTABLE_LOAD_ALL_SUBTABLES
) {
foreach ($archiveNames as &$name) {
- $name .= "_$idSubtable";
+ $name = $this->appendIdsubtable($name, $idSubtable);
}
}
@@ -799,7 +621,7 @@ class Piwik_Archive
public static function getPluginForReport($report)
{
// Core metrics are always processed in Core, for the requested date/period/segment
- if (in_array($report, Piwik_Archive::getVisitsMetricNames())) {
+ if (in_array($report, Piwik_Metrics::getVisitsMetricNames())) {
$report = 'VisitsSummary_CoreMetrics';
}
// Goal_* metrics are processed by the Goals plugin (HACK)