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-07-31 01:31:17 +0400
committermattab <matthieu.aubry@gmail.com>2013-07-31 01:31:17 +0400
commitc35e613b7ff66c6c86a712f0fd3250692ed9d8a9 (patch)
tree4e56d45743fc85f80014518e5c5bd419cc4a8f7b /plugins/DBStats/DBStats.php
parent765be0dc8f92a6d4bb3e678a0c23f2d4b95e0e18 (diff)
parent13f657ccfa6b58864291a173a0849d7169b031b2 (diff)
Merge branch 'master' into php-5.3-namespaces
Conflicts: core/Access.php core/Config.php core/EventDispatcher.php core/JqplotDataGenerator/Evolution.php core/Piwik.php core/Plugin/MetadataLoader.php core/ViewDataTable.php core/ViewDataTable/Cloud.php core/ViewDataTable/GenerateGraphHTML.php core/ViewDataTable/HtmlTable.php core/ViewDataTable/HtmlTable/AllColumns.php core/ViewDataTable/HtmlTable/Goals.php plugins/Actions/Controller.php plugins/CoreHome/Controller.php plugins/CoreHome/DataTableRowAction/RowEvolution.php plugins/CoreHome/templates/_dataTable.twig plugins/CustomVariables/Controller.php plugins/DBStats/Controller.php plugins/DevicesDetection/Controller.php plugins/ExampleUI/Controller.php plugins/Goals/Controller.php plugins/Live/Controller.php plugins/Provider/Controller.php plugins/Referers/Controller.php plugins/UserCountry/Controller.php plugins/UserCountryMap/Controller.php plugins/UserSettings/Archiver.php plugins/UserSettings/Controller.php plugins/VisitTime/Controller.php plugins/VisitTime/VisitTime.php plugins/VisitorInterest/Controller.php plugins/VisitsSummary/Controller.php tests/PHPUnit/proxy/index.php
Diffstat (limited to 'plugins/DBStats/DBStats.php')
-rw-r--r--plugins/DBStats/DBStats.php284
1 files changed, 281 insertions, 3 deletions
diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php
index 955c0b6812..467933d1e3 100644
--- a/plugins/DBStats/DBStats.php
+++ b/plugins/DBStats/DBStats.php
@@ -27,9 +27,10 @@ class Piwik_DBStats extends Plugin
public function getListHooksRegistered()
{
return array(
- 'AssetManager.getCssFiles' => 'getCssFiles',
- 'AdminMenu.add' => 'addMenu',
- 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks',
+ 'AssetManager.getCssFiles' => 'getCssFiles',
+ 'AdminMenu.add' => 'addMenu',
+ 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks',
+ 'ViewDataTable.getReportDisplayProperties' => 'getReportDisplayProperties',
);
}
@@ -80,4 +81,281 @@ class Piwik_DBStats extends Plugin
{
return Piwik_GetOption(self::TIME_OF_LAST_TASK_RUN_OPTION);
}
+
+ public function getReportDisplayProperties(&$properties)
+ {
+ $properties['DBStats.getDatabaseUsageSummary'] = $this->getDisplayPropertiesForGetDatabaseUsageSummary();
+ $properties['DBStats.getTrackerDataSummary'] = $this->getDisplayPropertiesForGetTrackerDataSummary();
+ $properties['DBStats.getMetricDataSummary'] = $this->getDisplayPropertiesForGetMetricDataSummary();
+ $properties['DBStats.getMetricDataSummaryByYear'] = $this->getDisplayPropertiesForGetMetricDataSummaryByYear();
+ $properties['DBStats.getReportDataSummary'] = $this->getDisplayPropertiesForGetReportDataSummary();
+ $properties['DBStats.getReportDataSummaryByYear'] = $this->getDisplayPropertiesForGetReportDataSummaryByYear();
+ $properties['DBStats.getIndividualReportsSummary'] = $this->getDisplayPropertiesForGetIndividualReportsSummary();
+ $properties['DBStats.getIndividualMetricsSummary'] = $this->getDisplayPropertiesForGetIndividualMetricsSummary();
+ $properties['DBStats.getAdminDataSummary'] = $this->getDisplayPropertiesForGetAdminDataSummary();
+ }
+
+ private function getDisplayPropertiesForGetDatabaseUsageSummary()
+ {
+ $result = array('default_view_type' => 'graphPie');
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result, $addTotalSizeColumn = true, $addPercentColumn = true);
+
+ $result['show_offset_information'] = false;
+ $result['show_pagination_control'] = false;
+ $result['show_all_ticks'] = true;
+
+ // translate the labels themselves
+ $valueToTranslationStr = array(
+ 'tracker_data' => 'DBStats_TrackerTables',
+ 'report_data' => 'DBStats_ReportTables',
+ 'metric_data' => 'DBStats_MetricTables',
+ 'other_data' => 'DBStats_OtherTables'
+ );
+
+ $translateSummaryLabel = function ($value) use ($valueToTranslationStr) {
+ return isset($valueToTranslationStr[$value])
+ ? Piwik_Translate($valueToTranslationStr[$value])
+ : $value;
+ };
+
+ $result['filters'][] = array('ColumnCallbackReplace', array('label', $translateSummaryLabel), $isPriority = true);
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetTrackerDataSummary()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result);
+
+ $result['filter_sort_order'] = 'asc';
+ $result['show_offset_information'] = false;
+ $result['show_pagination_control'] = false;
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetMetricDataSummary()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result);
+
+ $result['title'] = Piwik_Translate('DBStats_MetricTables');
+ $result['relatedReports'] = array(
+ 'DBStats.getMetricDataSummaryByYear' => Piwik_Translate('DBStats_MetricDataByYear')
+ );
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetMetricDataSummaryByYear()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result);
+
+ $result['translations']['label'] = Piwik_Translate('CoreHome_PeriodYear');
+ $result['title'] = Piwik_Translate('DBStats_MetricDataByYear');
+ $result['relatedReports'] = array(
+ 'DBStats.getMetricDataSummary' => Piwik_Translate('DBStats_MetricTables')
+ );
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetReportDataSummary()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result);
+
+ $result['title'] = Piwik_Translate('DBStats_ReportTables');
+ $result['relatedReports'] = array(
+ 'DBStats.getReportDataSummaryByYear' => Piwik_Translate('DBStats_ReportDataByYear')
+ );
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetReportDataSummaryByYear()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result);
+
+ $result['translations']['label'] = Piwik_Translate('CoreHome_PeriodYear');
+ $result['title'] = Piwik_Translate('DBStats_ReportDataByYear');
+ $result['relatedReports'] = array(
+ 'DBStats.getReportDataSummary' => Piwik_Translate('DBStats_ReportTables')
+ );
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetIndividualReportsSummary()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $viewDataTable = $this->addPresentationFilters($result, $addTotalSizeColumn = false, $addPercentColumn = false,
+ $sizeColumns = array('estimated_size'));
+
+ $result['filter_sort_order'] = 'asc';
+ $result['translations']['label'] = Piwik_Translate('General_Report');
+
+ // this report table has some extra columns that shouldn't be shown
+ if ($viewDataTable == 'table') {
+ $result['columns_to_display'] = array('label', 'row_count', 'estimated_size');
+ }
+
+ $this->setIndividualSummaryFooterMessage($result);
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetIndividualMetricsSummary()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result, $addTotalSizeColumn = false, $addPercentColumn = false,
+ $sizeColumns = array('estimated_size'));
+
+ $result['filter_sort_order'] = 'asc';
+ $result['translations']['label'] = Piwik_Translate('General_Metric');
+
+ $this->setIndividualSummaryFooterMessage($result);
+
+ return $result;
+ }
+
+ private function getDisplayPropertiesForGetAdminDataSummary()
+ {
+ $result = array();
+ $this->addBaseDisplayProperties($result);
+ $this->addPresentationFilters($result);
+
+ $result['filter_sort_order'] = 'asc';
+ $result['show_offset_information'] = false;
+ $result['show_pagination_control'] = false;
+
+ return $result;
+ }
+
+ private function addBaseDisplayProperties(&$properties)
+ {
+ $properties['filter_sort_column'] = 'label';
+ $properties['filter_sort_order'] = 'desc';
+ $properties['filter_limit'] = 25;
+ $properties['highlight_summary_row'] = true;
+ $properties['show_search'] = false;
+ $properties['show_exclude_low_population'] = false;
+ $properties['show_tag_cloud'] = false;
+ $properties['show_table_all_columns'] = false;
+ $properties['keep_summary_row'] = true;
+ $properties['disable_row_evolution'] = true;
+ $properties['translations'] = array(
+ 'label' => Piwik_Translate('DBStats_Table'),
+ 'year' => Piwik_Translate('CoreHome_PeriodYear'),
+ 'data_size' => Piwik_Translate('DBStats_DataSize'),
+ 'index_size' => Piwik_Translate('DBStats_IndexSize'),
+ 'total_size' => Piwik_Translate('DBStats_TotalSize'),
+ 'row_count' => Piwik_Translate('DBStats_RowCount'),
+ 'percent_total' => '%&nbsp;' . Piwik_Translate('DBStats_DBSize'),
+ 'estimated_size' => Piwik_Translate('DBStats_EstimatedSize')
+ );
+ }
+
+ private function addPresentationFilters(&$properties, $addTotalSizeColumn = true, $addPercentColumn = false,
+ $sizeColumns = array('data_size', 'index_size'))
+ {
+ // add total_size column
+ if ($addTotalSizeColumn) {
+ $getTotalTableSize = function ($dataSize, $indexSize) {
+ return $dataSize + $indexSize;
+ };
+
+ $properties['filters'][] = array('ColumnCallbackAddColumn',
+ array(array('data_size', 'index_size'), 'total_size', $getTotalTableSize), $isPriority = true);
+
+ $sizeColumns[] = 'total_size';
+ }
+
+ $runPrettySizeFilterBeforeGeneric = false;
+
+ $viewDataTable = empty($properties['default_view_type']) ? 'table' : $properties['default_view_type'];
+ $viewDataTable = Piwik_Common::getRequestVar('viewDataTable', $viewDataTable);
+
+ if ($viewDataTable == 'table') {
+ // add summary row only if displaying a table
+ $properties['filters'][] = array(
+ 'AddSummaryRow', array(0, Piwik_Translate('General_Total'), 'label', false), $isPriority = true);
+
+ // add percentage column if desired
+ if ($addPercentColumn
+ && $addTotalSizeColumn
+ ) {
+ $properties['filters'][] = array('ColumnCallbackAddColumnPercentage',
+ array('percent_total', 'total_size', 'total_size', $quotientPrecision = 0,
+ $shouldSkipRows = false, $getDivisorFromSummaryRow = true),
+ $isPriority = true
+ );
+
+ $properties['filter_sort_column'] = 'percent_total';
+ }
+ } else if (strpos($viewDataTable, 'graph') === 0) {
+ if ($addTotalSizeColumn) {
+ $properties['columns_to_display'] = array('label', 'total_size');
+
+ // when displaying a graph, we force sizes to be shown as the same unit so axis labels
+ // will be readable. NOTE: The unit should depend on the smallest value of the data table,
+ // however there's no way to know this information, short of creating a custom filter. For
+ // now, just assume KB.
+ $fixedMemoryUnit = 'K';
+ $properties['y_axis_unit'] = ' K';
+
+ $properties['filter_sort_column'] = 'total_size';
+ $properties['filter_sort_order'] = 'desc';
+
+ $runPrettySizeFilterBeforeGeneric = true;
+ } else {
+ $properties['columns_to_display'] = array('label', 'row_count');
+ $properties['y_axis_unit'] = ' ' . Piwik_Translate('General_Rows');
+
+ $properties['filter_sort_column'] = 'row_count';
+ $properties['filter_sort_order'] = 'desc';
+ }
+ }
+
+ $getPrettySize = array('Piwik', 'getPrettySizeFromBytes');
+ $params = !isset($fixedMemoryUnit) ? array() : array($fixedMemoryUnit);
+ $properties['filters'][] = array(
+ 'ColumnCallbackReplace', array($sizeColumns, $getPrettySize, $params), $runPrettySizeFilterBeforeGeneric);
+
+ // jqPlot will display &nbsp; as, well, '&nbsp;', so don't replace the spaces when rendering as a graph
+ if ($viewDataTable == 'table') {
+ $replaceSpaces = function ($value) {
+ return str_replace(' ', '&nbsp;', $value);
+ };
+
+ $properties['filters'][] = array('ColumnCallbackReplace', array($sizeColumns, $replaceSpaces));
+ }
+
+ $getPrettyNumber = array('Piwik', 'getPrettyNumber');
+ $properties['filters'][] = array('ColumnCallbackReplace', array('row_count', $getPrettyNumber));
+
+ return $viewDataTable;
+ }
+
+ /**
+ * Sets the footer message for the Individual...Summary reports.
+ */
+ private function setIndividualSummaryFooterMessage($result)
+ {
+ $lastGenerated = self::getDateOfLastCachingRun();
+ if ($lastGenerated !== false) {
+ $result['show_footer_message'] = Piwik_Translate('Mobile_LastUpdated', $lastGenerated);
+ }
+ }
}