diff options
author | mattab <matthieu.aubry@gmail.com> | 2013-03-28 03:42:39 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2013-03-28 03:42:40 +0400 |
commit | ae4b03163792f0b6e933933e5d37df87dc3fd566 (patch) | |
tree | d1d7510a9728f587d3d63ebd03e4ecf3d904838b /plugins/DBStats/Controller.php | |
parent | 158c2150f5f2e13ece459b8d131244c11b763997 (diff) |
Mass conversion of all files to the newly agreed coding standard: PSR 1/2
Converting Piwik core source files, PHP, JS, TPL, CSS
More info: http://piwik.org/participate/coding-standards/
Diffstat (limited to 'plugins/DBStats/Controller.php')
-rw-r--r-- | plugins/DBStats/Controller.php | 717 |
1 files changed, 353 insertions, 364 deletions
diff --git a/plugins/DBStats/Controller.php b/plugins/DBStats/Controller.php index 06bae7232b..ab0de6a292 100644 --- a/plugins/DBStats/Controller.php +++ b/plugins/DBStats/Controller.php @@ -1,10 +1,10 @@ <?php /** * Piwik - Open source web analytics - * + * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * + * * @category Piwik_Plugins * @package Piwik_DBStats */ @@ -15,366 +15,355 @@ */ class Piwik_DBStats_Controller extends Piwik_Controller_Admin { - /** - * Returns the index for this plugin. Shows every other report defined by this plugin, - * except the '...ByYear' reports. These can be loaded as related reports. - * - * Also, the 'getIndividual...Summary' reports are loaded by AJAX, as they can take - * a significant amount of time to load on setups w/ lots of websites. - */ - public function index() - { - Piwik::checkUserIsSuperUser(); - $view = Piwik_View::factory('index'); - $this->setBasicVariablesView($view); - $view->menu = Piwik_GetAdminMenu(); - - $view->databaseUsageSummary = $this->getDatabaseUsageSummary(true); - $view->trackerDataSummary = $this->getTrackerDataSummary(true); - $view->metricDataSummary = $this->getMetricDataSummary(true); - $view->reportDataSummary = $this->getReportDataSummary(true); - $view->adminDataSummary = $this->getAdminDataSummary(true); - - list($siteCount, $userCount, $totalSpaceUsed) = Piwik_DBStats_API::getInstance()->getGeneralInformation(); - $view->siteCount = Piwik::getPrettyNumber($siteCount); - $view->userCount = Piwik::getPrettyNumber($userCount); - $view->totalSpaceUsed = Piwik::getPrettySizeFromBytes($totalSpaceUsed); - - echo $view->render(); - } - - /** - * Shows a datatable that displays how much space the tracker tables, numeric - * archive tables, report tables and other tables take up in the MySQL database. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getDatabaseUsageSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'graphPie', $orderDir = 'desc', - $addPercentColumn = true); - $view->disableOffsetInformationAndPaginationControls(); - - if ($view instanceof Piwik_ViewDataTable_GenerateGraphHTML) - { - $view->showAllTicks(); - } - - // translate the labels themselves - $translateSummaryLabel = array($this, 'translateSummarylabel'); - $view->queueFilter('ColumnCallbackReplace', array(array('label'), $translateSummaryLabel), - $runBeforeGenericFilters = true); - - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays the amount of space each individual log table - * takes up in the MySQL database. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getTrackerDataSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - - $view = $this->getDataTableView(__FUNCTION__); - $view->disableOffsetInformationAndPaginationControls(); - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays the amount of space each numeric archive table - * takes up in the MySQL database. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getMetricDataSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc'); - $view->addRelatedReports(Piwik_Translate('DBStats_MetricTables'), array( - 'DBStats.getMetricDataSummaryByYear' => Piwik_Translate('DBStats_MetricDataByYear') - )); - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays the amount of space each numeric archive table - * takes up in the MySQL database, for each year of numeric data. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getMetricDataSummaryByYear( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc', - $addPercentColumn = false, $labelKey = 'CoreHome_PeriodYear'); - $view->addRelatedReports(Piwik_Translate('DBStats_MetricDataByYear'), array( - 'DBStats.getMetricDataSummary' => Piwik_Translate('DBStats_MetricTables') - )); - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays the amount of space each blob archive table - * takes up in the MySQL database. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getReportDataSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc'); - $view->addRelatedReports(Piwik_Translate('DBStats_ReportTables'), array( - 'DBStats.getReportDataSummaryByYear' => Piwik_Translate('DBStats_ReportDataByYear') - )); - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays the amount of space each blob archive table - * takes up in the MySQL database, for each year of blob data. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getReportDataSummaryByYear( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc', - $addPercentColumn = false, $labelKey = 'CoreHome_PeriodYear'); - $view->addRelatedReports(Piwik_Translate('DBStats_ReportDataByYear'), array( - 'DBStats.getReportDataSummary' => Piwik_Translate('DBStats_ReportTables') - )); - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays how many occurances there are of each individual - * report type stored in the MySQL database. - * - * Goal reports and reports of the format: .*_[0-9]+ are grouped together. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getIndividualReportsSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'asc', - $addPercentColumn = false, $labelKey = 'General_Report', - $sizeColumns = array('estimated_size')); - - // this report table has some extra columns that shouldn't be shown - if ($view instanceof Piwik_ViewDataTable_HtmlTable) - { - $view->setColumnsToDisplay(array('label', 'row_count', 'estimated_size')); - } - - $this->setIndividualSummaryFooterMessage($view); - - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays how many occurances there are of each individual - * metric type stored in the MySQL database. - * - * Goal metrics, metrics of the format .*_[0-9]+ and 'done...' metrics are grouped together. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getIndividualMetricsSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'asc', - $addPercentColumn = false, $labelKey = 'General_Metric', - $sizeColumns = array('estimated_size')); - - $this->setIndividualSummaryFooterMessage($view); - - return $this->renderView($view, $fetch); - } - - /** - * Shows a datatable that displays the amount of space each 'admin' table takes - * up in the MySQL database. - * - * An 'admin' table is a table that is not central to analytics functionality. - * So any table that isn't an archive table or a log table is an 'admin' table. - * - * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, - * it is echoed. - */ - public function getAdminDataSummary( $fetch = false ) - { - Piwik::checkUserIsSuperUser(); - $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table'); - $view->disableOffsetInformationAndPaginationControls(); - return $this->renderView($view, $fetch); - } - - /** - * Utility function that creates and prepares a ViewDataTable for this plugin. - */ - private function getDataTableView( $function, $viewType = 'table', $orderDir = 'asc', $addPercentColumn = false, - $labelKey = 'DBStats_Table', $sizeColumns = array('data_size', 'index_size'), - $limit = 25 ) - { - $columnTranslations = array( - 'label' => Piwik_Translate($labelKey), - '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' => '% '.Piwik_Translate('DBStats_DBSize'), - 'estimated_size' => Piwik_Translate('DBStats_EstimatedSize') - ); - - $view = Piwik_ViewDataTable::factory($viewType); - $view->init($this->pluginName, $function, "DBStats.$function"); - $view->setSortedColumn('label', $orderDir); - $view->setLimit($limit); - $view->setHighlightSummaryRow(true); - $view->disableSearchBox(); - $view->disableExcludeLowPopulation(); - $view->disableTagCloud(); - $view->disableShowAllColumns(); - $view->alwaysShowSummaryRow(); - - // translate columns - foreach ($columnTranslations as $columnName => $translation) - { - $view->setColumnTranslation($columnName, $translation); - } - - // add total_size column (if necessary columns are present) - if (in_array('data_size', $sizeColumns) && in_array('index_size', $sizeColumns)) - { - $getTotalTableSize = array($this, 'getTotalTableSize'); - $view->queueFilter('ColumnCallbackAddColumn', - array(array('data_size', 'index_size'), 'total_size', $getTotalTableSize), - $runBeforeGenericFilters = true); - - $sizeColumns[] = 'total_size'; - } - - $runPrettySizeFilterBeforeGeneric = false; - $fixedMemoryUnit = false; - if ($view instanceof Piwik_ViewDataTable_HtmlTable) // if displaying a table - { - $view->disableRowEvolution(); - - // add summary row only if displaying a table - $view->queueFilter('AddSummaryRow', array(0, Piwik_Translate('General_Total'), 'label', false), - $runBeforeGenericFilters = true); - - // add other filters - if ($addPercentColumn && in_array('total_size', $sizeColumns)) - { - $view->queueFilter('ColumnCallbackAddColumnPercentage', - array('percent_total', 'total_size', 'total_size', $quotientPrecision = 0, $shouldSkipRows = false, - $getDivisorFromSummaryRow = true), - $runBeforeGenericFilters = true); - $view->setSortedColumn('percent_total', $orderDir); - } - } - else if ($view instanceof Piwik_ViewDataTable_GenerateGraphData) // if displaying a graph - { - if (in_array('total_size', $sizeColumns)) - { - $view->setColumnsToDisplay(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'; - $view->setAxisYUnit(' K'); - - $view->setSortedColumn('total_size', 'desc'); - - $runPrettySizeFilterBeforeGeneric = true; - } - else - { - $view->setColumnsToDisplay(array('label', 'row_count')); - $view->setAxisYUnit(' '.Piwik_Translate('General_Rows')); - - $view->setSortedColumn('row_count', 'desc'); - } - } - - $getPrettySize = array('Piwik', 'getPrettySizeFromBytes'); - $params = $fixedMemoryUnit === false ? array() : array($fixedMemoryUnit); - $view->queueFilter( - 'ColumnCallbackReplace', array($sizeColumns, $getPrettySize, $params), $runPrettySizeFilterBeforeGeneric); - - // jqPlot will display as, well, ' ', so don't replace the spaces when rendering as a graph - if (!($view instanceof Piwik_ViewDataTable_GenerateGraphData)) - { - $replaceSpaces = array($this, 'replaceColumnSpaces'); - $view->queueFilter('ColumnCallbackReplace', array($sizeColumns, $replaceSpaces)); - } - - $getPrettyNumber = array('Piwik', 'getPrettyNumber'); - $view->queueFilter('ColumnCallbackReplace', array(array('row_count'), $getPrettyNumber)); - - return $view; - } - - /** - * Replaces spaces w/ for correct HTML output. - */ - public function replaceColumnSpaces( $value ) - { - return str_replace(' ', ' ', $value); - } - - /** - * Row callback function that calculates a tables total size. - */ - public function getTotalTableSize( $dataSize, $indexSize ) - { - return $dataSize + $indexSize; - } - - /** - * Column callback used to translate the column values in the database usage summary table. - */ - public function translateSummarylabel( $value ) - { - static $valueToTranslationStr = array( - 'tracker_data' => 'DBStats_TrackerTables', - 'report_data' => 'DBStats_ReportTables', - 'metric_data' => 'DBStats_MetricTables', - 'other_data' => 'DBStats_OtherTables' - ); - - return isset($valueToTranslationStr[$value]) - ? Piwik_Translate($valueToTranslationStr[$value]) - : $value; - } - - /** - * Sets the footer message for the Individual...Summary reports. - */ - private function setIndividualSummaryFooterMessage( $view ) - { - $lastGenerated = Piwik_DBStats::getDateOfLastCachingRun(); - if ($lastGenerated !== false) - { - $view->setFooterMessage(Piwik_Translate('Mobile_LastUpdated', $lastGenerated)); - } - } + /** + * Returns the index for this plugin. Shows every other report defined by this plugin, + * except the '...ByYear' reports. These can be loaded as related reports. + * + * Also, the 'getIndividual...Summary' reports are loaded by AJAX, as they can take + * a significant amount of time to load on setups w/ lots of websites. + */ + public function index() + { + Piwik::checkUserIsSuperUser(); + $view = Piwik_View::factory('index'); + $this->setBasicVariablesView($view); + $view->menu = Piwik_GetAdminMenu(); + + $view->databaseUsageSummary = $this->getDatabaseUsageSummary(true); + $view->trackerDataSummary = $this->getTrackerDataSummary(true); + $view->metricDataSummary = $this->getMetricDataSummary(true); + $view->reportDataSummary = $this->getReportDataSummary(true); + $view->adminDataSummary = $this->getAdminDataSummary(true); + + list($siteCount, $userCount, $totalSpaceUsed) = Piwik_DBStats_API::getInstance()->getGeneralInformation(); + $view->siteCount = Piwik::getPrettyNumber($siteCount); + $view->userCount = Piwik::getPrettyNumber($userCount); + $view->totalSpaceUsed = Piwik::getPrettySizeFromBytes($totalSpaceUsed); + + echo $view->render(); + } + + /** + * Shows a datatable that displays how much space the tracker tables, numeric + * archive tables, report tables and other tables take up in the MySQL database. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getDatabaseUsageSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'graphPie', $orderDir = 'desc', + $addPercentColumn = true); + $view->disableOffsetInformationAndPaginationControls(); + + if ($view instanceof Piwik_ViewDataTable_GenerateGraphHTML) { + $view->showAllTicks(); + } + + // translate the labels themselves + $translateSummaryLabel = array($this, 'translateSummarylabel'); + $view->queueFilter('ColumnCallbackReplace', array(array('label'), $translateSummaryLabel), + $runBeforeGenericFilters = true); + + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays the amount of space each individual log table + * takes up in the MySQL database. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getTrackerDataSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + + $view = $this->getDataTableView(__FUNCTION__); + $view->disableOffsetInformationAndPaginationControls(); + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays the amount of space each numeric archive table + * takes up in the MySQL database. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getMetricDataSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc'); + $view->addRelatedReports(Piwik_Translate('DBStats_MetricTables'), array( + 'DBStats.getMetricDataSummaryByYear' => Piwik_Translate('DBStats_MetricDataByYear') + )); + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays the amount of space each numeric archive table + * takes up in the MySQL database, for each year of numeric data. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getMetricDataSummaryByYear($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc', + $addPercentColumn = false, $labelKey = 'CoreHome_PeriodYear'); + $view->addRelatedReports(Piwik_Translate('DBStats_MetricDataByYear'), array( + 'DBStats.getMetricDataSummary' => Piwik_Translate('DBStats_MetricTables') + )); + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays the amount of space each blob archive table + * takes up in the MySQL database. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getReportDataSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc'); + $view->addRelatedReports(Piwik_Translate('DBStats_ReportTables'), array( + 'DBStats.getReportDataSummaryByYear' => Piwik_Translate('DBStats_ReportDataByYear') + )); + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays the amount of space each blob archive table + * takes up in the MySQL database, for each year of blob data. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getReportDataSummaryByYear($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'desc', + $addPercentColumn = false, $labelKey = 'CoreHome_PeriodYear'); + $view->addRelatedReports(Piwik_Translate('DBStats_ReportDataByYear'), array( + 'DBStats.getReportDataSummary' => Piwik_Translate('DBStats_ReportTables') + )); + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays how many occurances there are of each individual + * report type stored in the MySQL database. + * + * Goal reports and reports of the format: .*_[0-9]+ are grouped together. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getIndividualReportsSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'asc', + $addPercentColumn = false, $labelKey = 'General_Report', + $sizeColumns = array('estimated_size')); + + // this report table has some extra columns that shouldn't be shown + if ($view instanceof Piwik_ViewDataTable_HtmlTable) { + $view->setColumnsToDisplay(array('label', 'row_count', 'estimated_size')); + } + + $this->setIndividualSummaryFooterMessage($view); + + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays how many occurances there are of each individual + * metric type stored in the MySQL database. + * + * Goal metrics, metrics of the format .*_[0-9]+ and 'done...' metrics are grouped together. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getIndividualMetricsSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table', $orderDir = 'asc', + $addPercentColumn = false, $labelKey = 'General_Metric', + $sizeColumns = array('estimated_size')); + + $this->setIndividualSummaryFooterMessage($view); + + return $this->renderView($view, $fetch); + } + + /** + * Shows a datatable that displays the amount of space each 'admin' table takes + * up in the MySQL database. + * + * An 'admin' table is a table that is not central to analytics functionality. + * So any table that isn't an archive table or a log table is an 'admin' table. + * + * @param bool $fetch If true, the rendered HTML datatable is returned, otherwise, + * it is echoed. + */ + public function getAdminDataSummary($fetch = false) + { + Piwik::checkUserIsSuperUser(); + $view = $this->getDataTableView(__FUNCTION__, $viewType = 'table'); + $view->disableOffsetInformationAndPaginationControls(); + return $this->renderView($view, $fetch); + } + + /** + * Utility function that creates and prepares a ViewDataTable for this plugin. + */ + private function getDataTableView($function, $viewType = 'table', $orderDir = 'asc', $addPercentColumn = false, + $labelKey = 'DBStats_Table', $sizeColumns = array('data_size', 'index_size'), + $limit = 25) + { + $columnTranslations = array( + 'label' => Piwik_Translate($labelKey), + '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' => '% ' . Piwik_Translate('DBStats_DBSize'), + 'estimated_size' => Piwik_Translate('DBStats_EstimatedSize') + ); + + $view = Piwik_ViewDataTable::factory($viewType); + $view->init($this->pluginName, $function, "DBStats.$function"); + $view->setSortedColumn('label', $orderDir); + $view->setLimit($limit); + $view->setHighlightSummaryRow(true); + $view->disableSearchBox(); + $view->disableExcludeLowPopulation(); + $view->disableTagCloud(); + $view->disableShowAllColumns(); + $view->alwaysShowSummaryRow(); + + // translate columns + foreach ($columnTranslations as $columnName => $translation) { + $view->setColumnTranslation($columnName, $translation); + } + + // add total_size column (if necessary columns are present) + if (in_array('data_size', $sizeColumns) && in_array('index_size', $sizeColumns)) { + $getTotalTableSize = array($this, 'getTotalTableSize'); + $view->queueFilter('ColumnCallbackAddColumn', + array(array('data_size', 'index_size'), 'total_size', $getTotalTableSize), + $runBeforeGenericFilters = true); + + $sizeColumns[] = 'total_size'; + } + + $runPrettySizeFilterBeforeGeneric = false; + $fixedMemoryUnit = false; + if ($view instanceof Piwik_ViewDataTable_HtmlTable) // if displaying a table + { + $view->disableRowEvolution(); + + // add summary row only if displaying a table + $view->queueFilter('AddSummaryRow', array(0, Piwik_Translate('General_Total'), 'label', false), + $runBeforeGenericFilters = true); + + // add other filters + if ($addPercentColumn && in_array('total_size', $sizeColumns)) { + $view->queueFilter('ColumnCallbackAddColumnPercentage', + array('percent_total', 'total_size', 'total_size', $quotientPrecision = 0, $shouldSkipRows = false, + $getDivisorFromSummaryRow = true), + $runBeforeGenericFilters = true); + $view->setSortedColumn('percent_total', $orderDir); + } + } else if ($view instanceof Piwik_ViewDataTable_GenerateGraphData) // if displaying a graph + { + if (in_array('total_size', $sizeColumns)) { + $view->setColumnsToDisplay(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'; + $view->setAxisYUnit(' K'); + + $view->setSortedColumn('total_size', 'desc'); + + $runPrettySizeFilterBeforeGeneric = true; + } else { + $view->setColumnsToDisplay(array('label', 'row_count')); + $view->setAxisYUnit(' ' . Piwik_Translate('General_Rows')); + + $view->setSortedColumn('row_count', 'desc'); + } + } + + $getPrettySize = array('Piwik', 'getPrettySizeFromBytes'); + $params = $fixedMemoryUnit === false ? array() : array($fixedMemoryUnit); + $view->queueFilter( + 'ColumnCallbackReplace', array($sizeColumns, $getPrettySize, $params), $runPrettySizeFilterBeforeGeneric); + + // jqPlot will display as, well, ' ', so don't replace the spaces when rendering as a graph + if (!($view instanceof Piwik_ViewDataTable_GenerateGraphData)) { + $replaceSpaces = array($this, 'replaceColumnSpaces'); + $view->queueFilter('ColumnCallbackReplace', array($sizeColumns, $replaceSpaces)); + } + + $getPrettyNumber = array('Piwik', 'getPrettyNumber'); + $view->queueFilter('ColumnCallbackReplace', array(array('row_count'), $getPrettyNumber)); + + return $view; + } + + /** + * Replaces spaces w/ for correct HTML output. + */ + public function replaceColumnSpaces($value) + { + return str_replace(' ', ' ', $value); + } + + /** + * Row callback function that calculates a tables total size. + */ + public function getTotalTableSize($dataSize, $indexSize) + { + return $dataSize + $indexSize; + } + + /** + * Column callback used to translate the column values in the database usage summary table. + */ + public function translateSummarylabel($value) + { + static $valueToTranslationStr = array( + 'tracker_data' => 'DBStats_TrackerTables', + 'report_data' => 'DBStats_ReportTables', + 'metric_data' => 'DBStats_MetricTables', + 'other_data' => 'DBStats_OtherTables' + ); + + return isset($valueToTranslationStr[$value]) + ? Piwik_Translate($valueToTranslationStr[$value]) + : $value; + } + + /** + * Sets the footer message for the Individual...Summary reports. + */ + private function setIndividualSummaryFooterMessage($view) + { + $lastGenerated = Piwik_DBStats::getDateOfLastCachingRun(); + if ($lastGenerated !== false) { + $view->setFooterMessage(Piwik_Translate('Mobile_LastUpdated', $lastGenerated)); + } + } } |