diff options
Diffstat (limited to 'core/DataTable')
43 files changed, 564 insertions, 369 deletions
diff --git a/core/DataTable/Filter.php b/core/DataTable/Filter.php index 455c5aa6e7..43cb33f2a0 100644 --- a/core/DataTable/Filter.php +++ b/core/DataTable/Filter.php @@ -8,6 +8,12 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable; + +use Exception; +use Piwik\DataTable; +use Piwik\DataTable\Manager; +use Piwik\DataTable\Row; /** * A filter is applied instantly to a given DataTable and can @@ -21,9 +27,9 @@ * and can do whatever is necessary on the data (in the filter() method). * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -abstract class Piwik_DataTable_Filter +abstract class Filter { /** * @var bool @@ -32,19 +38,19 @@ abstract class Piwik_DataTable_Filter /** * @throws Exception - * @param Piwik_DataTable $table + * @param DataTable $table */ public function __construct($table) { - if (!($table instanceof Piwik_DataTable)) { - throw new Exception("The filter accepts only a Piwik_DataTable object."); + if (!($table instanceof DataTable)) { + throw new Exception("The filter accepts only a DataTable object."); } } /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ abstract public function filter($table); @@ -61,16 +67,16 @@ abstract class Piwik_DataTable_Filter /** * Filters a subtable * - * @param Piwik_DataTable_Row $row + * @param Row $row * @return mixed */ - public function filterSubTable(Piwik_DataTable_Row $row) + public function filterSubTable(Row $row) { if (!$this->enableRecursive) { return; } if ($row->isSubtableLoaded()) { - $subTable = Piwik_DataTable_Manager::getInstance()->getTable($row->getIdSubDataTable()); + $subTable = Manager::getInstance()->getTable($row->getIdSubDataTable()); $this->filter($subTable); } } diff --git a/core/DataTable/Filter/AddColumnsProcessedMetrics.php b/core/DataTable/Filter/AddColumnsProcessedMetrics.php index 73baf7aaa9..dc41dacdc7 100644 --- a/core/DataTable/Filter/AddColumnsProcessedMetrics.php +++ b/core/DataTable/Filter/AddColumnsProcessedMetrics.php @@ -8,22 +8,27 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable\Filter; +use Piwik\DataTable\Row; use Piwik\Metrics; +use Piwik\DataTable; /** * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_AddColumnsProcessedMetrics extends Piwik_DataTable_Filter +class AddColumnsProcessedMetrics extends Filter { protected $invalidDivision = 0; protected $roundPrecision = 2; protected $deleteRowsWithNoVisit = true; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param bool $deleteRowsWithNoVisit Automatically set to true when filter_add_columns_when_show_all_columns is found in the API request - * @return Piwik_DataTable_Filter_AddColumnsProcessedMetrics + * @return AddColumnsProcessedMetrics */ public function __construct($table, $deleteRowsWithNoVisit = true) { @@ -34,7 +39,7 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetrics extends Piwik_DataTable_ /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -97,7 +102,7 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetrics extends Piwik_DataTable_ * - raw datatables coming from the archive DB, which columns are int indexed * - datatables processed resulting of API calls, which columns have human readable english names * - * @param Piwik_DataTable_Row $row + * @param Row $row * @param int $columnIdRaw see consts in Archive:: * @param bool $mappingIdToName * @return mixed Value of column, false if not found @@ -108,7 +113,7 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetrics extends Piwik_DataTable_ $mappingIdToName = Metrics::$mappingFromIdToName; } $columnIdReadable = $mappingIdToName[$columnIdRaw]; - if ($row instanceof Piwik_DataTable_Row) { + if ($row instanceof Row) { $raw = $row->getColumn($columnIdRaw); if ($raw !== false) { return $raw; diff --git a/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php b/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php index 99d822bbd0..422df1adcf 100644 --- a/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php +++ b/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php @@ -8,14 +8,19 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Exception; use Piwik\Metrics; use Piwik\Piwik; +use Piwik\DataTable; +use Piwik\DataTable\Filter\AddColumnsProcessedMetrics; /** * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_AddColumnsProcessedMetricsGoal extends Piwik_DataTable_Filter_AddColumnsProcessedMetrics +class AddColumnsProcessedMetricsGoal extends AddColumnsProcessedMetrics { /** * Process main goal metrics: conversion rate, revenue per visit @@ -41,13 +46,13 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetricsGoal extends Piwik_DataTa * - nb conversions * - revenue per visit * - * @param Piwik_DataTable $table + * @param DataTable $table * @param bool $enable should be true (automatically set to true when filter_update_columns_when_show_all_goals is found in the API request) * @param string $processOnlyIdGoal Defines what metrics to add (don't process metrics when you don't display them) * If self::GOALS_FULL_TABLE, all Goal metrics (and per goal metrics) will be processed * If self::GOALS_OVERVIEW, only the main goal metrics will be added * If an int > 0, then will process only metrics for this specific Goal - * @return Piwik_DataTable_Filter_AddColumnsProcessedMetricsGoal + * @return \Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal */ public function __construct($table, $enable = true, $processOnlyIdGoal) { @@ -61,13 +66,13 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetricsGoal extends Piwik_DataTa /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { // Add standard processed metrics parent::filter($table); - $roundingPrecision = Piwik_Tracker_GoalManager::REVENUE_PRECISION; + $roundingPrecision = \Piwik_Tracker_GoalManager::REVENUE_PRECISION; $expectedColumns = array(); foreach ($table->getRows() as $key => $row) { $currentColumns = $row->getColumns(); diff --git a/core/DataTable/Filter/AddConstantMetadata.php b/core/DataTable/Filter/AddConstantMetadata.php index 4bff5aa813..f3682f5b10 100644 --- a/core/DataTable/Filter/AddConstantMetadata.php +++ b/core/DataTable/Filter/AddConstantMetadata.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Add a new metadata column to the table. @@ -16,14 +20,14 @@ * This value is fixed for all icons so we simply add the same value for all rows. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_AddConstantMetadata extends Piwik_DataTable_Filter +class AddConstantMetadata extends Filter { /** * Creates a new filter and sets all required parameters * - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $metadataName * @param mixed $metadataValue */ @@ -37,7 +41,7 @@ class Piwik_DataTable_Filter_AddConstantMetadata extends Piwik_DataTable_Filter /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { diff --git a/core/DataTable/Filter/AddSummaryRow.php b/core/DataTable/Filter/AddSummaryRow.php index ca0cb1882f..12504fa033 100644 --- a/core/DataTable/Filter/AddSummaryRow.php +++ b/core/DataTable/Filter/AddSummaryRow.php @@ -8,6 +8,11 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; +use Piwik\DataTable\Row; /** * Add a new row to the table containing a summary @@ -23,14 +28,14 @@ * This row is assigned a label of 'Others'. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_AddSummaryRow extends Piwik_DataTable_Filter +class AddSummaryRow extends Filter { /** * Creates a new filter and set all required parameters * - * @param Piwik_DataTable $table + * @param DataTable $table * @param int $startRowToSummarize * @param int $labelSummaryRow * @param null $columnToSortByBeforeTruncating @@ -38,7 +43,7 @@ class Piwik_DataTable_Filter_AddSummaryRow extends Piwik_DataTable_Filter */ public function __construct($table, $startRowToSummarize, - $labelSummaryRow = Piwik_DataTable::LABEL_SUMMARY_ROW, + $labelSummaryRow = DataTable::LABEL_SUMMARY_ROW, $columnToSortByBeforeTruncating = null, $deleteRows = true) { @@ -52,7 +57,7 @@ class Piwik_DataTable_Filter_AddSummaryRow extends Piwik_DataTable_Filter /** * Adds a summary row to the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -62,14 +67,14 @@ class Piwik_DataTable_Filter_AddSummaryRow extends Piwik_DataTable_Filter if ($table->getRowsCount() <= $this->startRowToSummarize + 1) { return; } - + $rows = $table->getRows(); $count = $table->getRowsCount(); - $newRow = new Piwik_DataTable_Row(); + $newRow = new Row(); for ($i = $this->startRowToSummarize; $i < $count; $i++) { if (!isset($rows[$i])) { - // case when the last row is a summary row, it is not indexed by $cout but by Piwik_DataTable::ID_SUMMARY_ROW - $summaryRow = $table->getRowFromId(Piwik_DataTable::ID_SUMMARY_ROW); + // case when the last row is a summary row, it is not indexed by $cout but by DataTable::ID_SUMMARY_ROW + $summaryRow = $table->getRowFromId(DataTable::ID_SUMMARY_ROW); //FIXME: I'm not sure why it could return false, but it was reported in: http://forum.piwik.org/read.php?2,89324,page=1#msg-89442 if ($summaryRow) { diff --git a/core/DataTable/Filter/BeautifyRangeLabels.php b/core/DataTable/Filter/BeautifyRangeLabels.php index 329bcf3308..5e2c0c1336 100644 --- a/core/DataTable/Filter/BeautifyRangeLabels.php +++ b/core/DataTable/Filter/BeautifyRangeLabels.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter\ColumnCallbackReplace; /** * A DataTable filter that replaces range label columns with prettier, @@ -26,7 +30,7 @@ * This filter can also be extended to beautify ranges differently based * on the range values. */ -class Piwik_DataTable_Filter_BeautifyRangeLabels extends Piwik_DataTable_Filter_ColumnCallbackReplace +class BeautifyRangeLabels extends ColumnCallbackReplace { /** * The string to use when the range being beautified is between 1-1 units. @@ -44,7 +48,7 @@ class Piwik_DataTable_Filter_BeautifyRangeLabels extends Piwik_DataTable_Filter_ /** * Constructor. * - * @param Piwik_DataTable $table The DataTable that will be filtered. + * @param DataTable $table The DataTable that will be filtered. * @param string $labelSingular The string to use when the range being beautified * is equal to '1-1 units'. * @param string $labelPlural The string to use when the range being beautified @@ -85,7 +89,7 @@ class Piwik_DataTable_Filter_BeautifyRangeLabels extends Piwik_DataTable_Filter_ // get the lower bound sscanf($value, "%d", $lowerBound); - if ($lowerBound !== NULL) { + if ($lowerBound !== null) { $plusEncoded = urlencode('+'); $plusLen = strlen($plusEncoded); $len = strlen($value); diff --git a/core/DataTable/Filter/BeautifyTimeRangeLabels.php b/core/DataTable/Filter/BeautifyTimeRangeLabels.php index 1a2dffce5a..f8fcb59b77 100644 --- a/core/DataTable/Filter/BeautifyTimeRangeLabels.php +++ b/core/DataTable/Filter/BeautifyTimeRangeLabels.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter\BeautifyRangeLabels; /** * A DataTable filter replaces range labels that are in seconds with @@ -17,7 +21,7 @@ * so range values that span values that are less than one minute are * displayed in seconds but other ranges are displayed in minutes. */ -class Piwik_DataTable_Filter_BeautifyTimeRangeLabels extends Piwik_DataTable_Filter_BeautifyRangeLabels +class BeautifyTimeRangeLabels extends BeautifyRangeLabels { /** * A format string used to create pretty range labels when the range's @@ -31,7 +35,7 @@ class Piwik_DataTable_Filter_BeautifyTimeRangeLabels extends Piwik_DataTable_Fil /** * Constructor. * - * @param Piwik_DataTable $table The DataTable this filter will run over. + * @param DataTable $table The DataTable this filter will run over. * @param string $labelSecondsPlural A string to use when beautifying range labels * whose lower bound is between 0 and 60. Must be * a format string that takes two numeric params. diff --git a/core/DataTable/Filter/CalculateEvolutionFilter.php b/core/DataTable/Filter/CalculateEvolutionFilter.php index e38fb93136..f8d5886d25 100755 --- a/core/DataTable/Filter/CalculateEvolutionFilter.php +++ b/core/DataTable/Filter/CalculateEvolutionFilter.php @@ -8,7 +8,12 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Row; use Piwik\Site; +use Piwik\DataTable\Filter\ColumnCallbackAddColumnPercentage; /** * A DataTable filter that calculates the evolution of a metric and adds @@ -21,7 +26,7 @@ use Piwik\Site; * The evolution metric is calculated as: * <code>((currentValue - pastValue) / pastValue) * 100</code> */ -class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Filter_ColumnCallbackAddColumnPercentage +class CalculateEvolutionFilter extends ColumnCallbackAddColumnPercentage { /** * The the DataTable that contains past data. @@ -36,11 +41,11 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi /** * Constructor. * - * @param Piwik_DataTable $table The DataTable being filtered. - * @param string $pastDataTable - * @param string $columnToAdd - * @param string $columnToRead - * @param int $quotientPrecision + * @param DataTable $table The DataTable being filtered. + * @param string $pastDataTable + * @param string $columnToAdd + * @param string $columnToRead + * @param int $quotientPrecision */ function __construct($table, $pastDataTable, $columnToAdd, $columnToRead, $quotientPrecision = 0) { @@ -56,7 +61,7 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi * Returns the difference between the column in the specific row and its * sister column in the past DataTable. * - * @param Piwik_DataTable_Row $row + * @param Row $row * @return int|float */ protected function getDividend($row) @@ -86,7 +91,7 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi * Returns the value of the column in $row's sister row in the past * DataTable. * - * @param Piwik_DataTable_Row $row + * @param Row $row * @return int|float */ protected function getDivisor($row) @@ -100,7 +105,7 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi /** * Calculates and formats a quotient based on a divisor and dividend. * - * Unlike Piwik_DataTable_Filter_ColumnCallbackAddColumnPercentage's, + * Unlike ColumnCallbackAddColumnPercentage's, * version of this method, this method will return 100% if the past * value of a metric is 0, and the current value is not 0. For a * value representative of an evolution, this makes sense. @@ -119,7 +124,7 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi /** * Utility function. Returns the current row in the past DataTable. * - * @param Piwik_DataTable_Row $row The row in the 'current' DataTable. + * @param Row $row The row in the 'current' DataTable. */ private function getPastRowFromCurrent($row) { @@ -129,10 +134,10 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi /** * Calculates the evolution percentage for two arbitrary values. * - * @param float|int $currentValue The current metric value. - * @param float|int $pastValue The value of the metric in the past. We measure the % change + * @param float|int $currentValue The current metric value. + * @param float|int $pastValue The value of the metric in the past. We measure the % change * from this value to $currentValue. - * @param float|int $quotientPrecision The quotient precision to round to. + * @param float|int $quotientPrecision The quotient precision to round to. * * @return string The evolution percent 15% */ diff --git a/core/DataTable/Filter/ColumnCallbackAddColumn.php b/core/DataTable/Filter/ColumnCallbackAddColumn.php index 4aa8b008e4..e65ab52e40 100755 --- a/core/DataTable/Filter/ColumnCallbackAddColumn.php +++ b/core/DataTable/Filter/ColumnCallbackAddColumn.php @@ -8,14 +8,18 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Adds a new column to every row of a DataTable based on the result of callback. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnCallbackAddColumn extends Piwik_DataTable_Filter +class ColumnCallbackAddColumn extends Filter { /** * The names of the columns to pass to the callback. @@ -41,7 +45,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumn extends Piwik_DataTable_Fil /** * Constructor. * - * @param Piwik_DataTable $table The DataTable that will be filtered. + * @param DataTable $table The DataTable that will be filtered. * @param array|string $columns The names of the columns to pass to the callback. * @param string $columnToAdd The name of the column to add. * @param mixed $functionToApply The callback to apply to each row of a DataTable. @@ -65,7 +69,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumn extends Piwik_DataTable_Fil * Executes a callback on every row of the supplied table and adds the result of * the callback as a new column to each row. * - * @param Piwik_DataTable $table The table to filter. + * @param DataTable $table The table to filter. */ public function filter($table) { diff --git a/core/DataTable/Filter/ColumnCallbackAddColumnPercentage.php b/core/DataTable/Filter/ColumnCallbackAddColumnPercentage.php index 5ac99ce678..92ad07185c 100644 --- a/core/DataTable/Filter/ColumnCallbackAddColumnPercentage.php +++ b/core/DataTable/Filter/ColumnCallbackAddColumnPercentage.php @@ -8,7 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + use Piwik\Piwik; +use Piwik\DataTable\Filter\ColumnCallbackAddColumnQuotient; /** * Add a new column to the table which is a percentage based on the value resulting @@ -23,9 +26,9 @@ use Piwik\Piwik; * $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('nb_visits', 'nb_visits_percentage', $nbVisits, 1)); * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnCallbackAddColumnPercentage extends Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient +class ColumnCallbackAddColumnPercentage extends ColumnCallbackAddColumnQuotient { /** * Formats the given value diff --git a/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php b/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php index b5573bb731..4e95a8a9a2 100644 --- a/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php +++ b/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php @@ -8,15 +8,20 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; +use Piwik\DataTable\Row; /** * Adds a new column that is a division of two columns of the current row. * Useful to process bounce rates, exit rates, average time on page, etc. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataTable_Filter +class ColumnCallbackAddColumnQuotient extends Filter { protected $table; protected $columnValueToRead; @@ -28,7 +33,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataT protected $getDivisorFromSummaryRow; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnNameToAdd * @param string $columnValueToRead * @param number|string $divisorValueOrDivisorColumnName @@ -57,7 +62,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataT /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -101,7 +106,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataT * Returns the dividend to use when calculating the new column value. Can * be overridden by descendent classes to customize behavior. * - * @param Piwik_DataTable_Row $row The row being modified. + * @param Row $row The row being modified. * @return int|float */ protected function getDividend($row) @@ -113,7 +118,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataT * Returns the divisor to use when calculating the new column value. Can * be overridden by descendent classes to customize behavior. * - * @param Piwik_DataTable_Row $row The row being modified. + * @param Row $row The row being modified. * @return int|float */ protected function getDivisor($row) @@ -121,7 +126,7 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataT if (!is_null($this->totalValueUsedAsDivisor)) { return $this->totalValueUsedAsDivisor; } else if ($this->getDivisorFromSummaryRow) { - $summaryRow = $this->table->getRowFromId(Piwik_DataTable::ID_SUMMARY_ROW); + $summaryRow = $this->table->getRowFromId(DataTable::ID_SUMMARY_ROW); return $summaryRow->getColumn($this->columnNameUsedAsDivisor); } else { return $row->getColumn($this->columnNameUsedAsDivisor); diff --git a/core/DataTable/Filter/ColumnCallbackAddMetadata.php b/core/DataTable/Filter/ColumnCallbackAddMetadata.php index b181f4c177..166c9e740a 100644 --- a/core/DataTable/Filter/ColumnCallbackAddMetadata.php +++ b/core/DataTable/Filter/ColumnCallbackAddMetadata.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Add a new 'metadata' column to the table based on the value resulting @@ -17,9 +21,9 @@ * with the icon URI built from the label (LINUX => UserSettings/icons/linux.png) * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnCallbackAddMetadata extends Piwik_DataTable_Filter +class ColumnCallbackAddMetadata extends Filter { private $columnsToRead; private $functionToApply; @@ -28,12 +32,12 @@ class Piwik_DataTable_Filter_ColumnCallbackAddMetadata extends Piwik_DataTable_F private $applyToSummaryRow; /** - * @param Piwik_DataTable $table - * @param string|array $columnsToRead - * @param string $metadataToAdd - * @param string $functionToApply - * @param array $functionParameters - * @param bool $applyToSummaryRow + * @param DataTable $table + * @param string|array $columnsToRead + * @param string $metadataToAdd + * @param string $functionToApply + * @param array $functionParameters + * @param bool $applyToSummaryRow */ public function __construct($table, $columnsToRead, $metadataToAdd, $functionToApply = null, $functionParameters = null, $applyToSummaryRow = true) @@ -54,12 +58,12 @@ class Piwik_DataTable_Filter_ColumnCallbackAddMetadata extends Piwik_DataTable_F /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { foreach ($table->getRows() as $key => $row) { - if (!$this->applyToSummaryRow && $key == Piwik_DataTable::ID_SUMMARY_ROW) { + if (!$this->applyToSummaryRow && $key == DataTable::ID_SUMMARY_ROW) { continue; } diff --git a/core/DataTable/Filter/ColumnCallbackDeleteRow.php b/core/DataTable/Filter/ColumnCallbackDeleteRow.php index dbe0684cf8..66c0eded79 100644 --- a/core/DataTable/Filter/ColumnCallbackDeleteRow.php +++ b/core/DataTable/Filter/ColumnCallbackDeleteRow.php @@ -8,21 +8,25 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Delete all rows for which a given function returns false for a given column. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnCallbackDeleteRow extends Piwik_DataTable_Filter +class ColumnCallbackDeleteRow extends Filter { private $columnToFilter; private $function; private $functionParams; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnToFilter * @param callback $function * @param array $functionParams @@ -43,7 +47,7 @@ class Piwik_DataTable_Filter_ColumnCallbackDeleteRow extends Piwik_DataTable_Fil /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { diff --git a/core/DataTable/Filter/ColumnCallbackReplace.php b/core/DataTable/Filter/ColumnCallbackReplace.php index f1c2d65f3a..4b2110eff3 100644 --- a/core/DataTable/Filter/ColumnCallbackReplace.php +++ b/core/DataTable/Filter/ColumnCallbackReplace.php @@ -8,15 +8,21 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; +use Piwik\DataTable\Row; +use Piwik\Piwik; /** * Replace a column value with a new value resulting * from the function called with the column's value * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnCallbackReplace extends Piwik_DataTable_Filter +class ColumnCallbackReplace extends Filter { private $columnsToFilter; private $functionToApply; @@ -24,7 +30,7 @@ class Piwik_DataTable_Filter_ColumnCallbackReplace extends Piwik_DataTable_Filte private $extraColumnParameters; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param array|string $columnsToFilter * @param callback $functionToApply * @param array|null $functionParameters @@ -48,7 +54,7 @@ class Piwik_DataTable_Filter_ColumnCallbackReplace extends Piwik_DataTable_Filte /** * Filters the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -79,7 +85,7 @@ class Piwik_DataTable_Filter_ColumnCallbackReplace extends Piwik_DataTable_Filte /** * Replaces the given column within given row with the given value * - * @param Piwik_DataTable_Row $row + * @param Row $row * @param string $columnToFilter * @param mixed $newValue */ @@ -91,7 +97,7 @@ class Piwik_DataTable_Filter_ColumnCallbackReplace extends Piwik_DataTable_Filte /** * Returns the element that should be replaced * - * @param Piwik_DataTable_Row $row + * @param Row $row * @param string $columnToFilter * @return mixed */ diff --git a/core/DataTable/Filter/ColumnDelete.php b/core/DataTable/Filter/ColumnDelete.php index 709d56a02e..5540634ef8 100644 --- a/core/DataTable/Filter/ColumnDelete.php +++ b/core/DataTable/Filter/ColumnDelete.php @@ -8,15 +8,19 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Filter that will remove columns from a DataTable using either a blacklist, * whitelist or both. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter +class ColumnDelete extends Filter { /** * The columns that should be removed from DataTable rows. @@ -51,13 +55,13 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter /** * Constructor. * - * @param Piwik_DataTable $table - * @param array|string $columnsToRemove An array of column names or a comma-separated list of + * @param DataTable $table + * @param array|string $columnsToRemove An array of column names or a comma-separated list of * column names. These columns will be removed. - * @param array|string $columnsToKeep An array of column names that should be kept or a + * @param array|string $columnsToKeep An array of column names that should be kept or a * comma-separated list of column names. Columns not in * this list will be removed. - * @param bool $deleteIfZeroOnly + * @param bool $deleteIfZeroOnly */ public function __construct($table, $columnsToRemove, $columnsToKeep = array(), $deleteIfZeroOnly = false) { @@ -80,7 +84,7 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter * Filters the given DataTable. Removes columns that are not desired from * each DataTable row. * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -112,15 +116,16 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter $keep = false; // @see self::APPEND_TO_COLUMN_NAME_TO_KEEP - foreach($this->columnsToKeep as $nameKeep => $true) { - if(strpos($name, $nameKeep . self::APPEND_TO_COLUMN_NAME_TO_KEEP) === 0) { + foreach ($this->columnsToKeep as $nameKeep => $true) { + if (strpos($name, $nameKeep . self::APPEND_TO_COLUMN_NAME_TO_KEEP) === 0) { $keep = true; } } if (!$keep && $name != 'label' // label cannot be removed via whitelisting - && !isset($this->columnsToKeep[$name])) { + && !isset($this->columnsToKeep[$name]) + ) { $row->deleteColumn($name); } } diff --git a/core/DataTable/Filter/ExcludeLowPopulation.php b/core/DataTable/Filter/ExcludeLowPopulation.php index 9f4d5c723c..07699ea2ea 100644 --- a/core/DataTable/Filter/ExcludeLowPopulation.php +++ b/core/DataTable/Filter/ExcludeLowPopulation.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Delete all rows that have a $columnToFilter value less than the $minimumValue @@ -17,16 +21,16 @@ * You can obviously apply this filter on a percentaged column, eg. remove all countries with the column 'percent_visits' less than 0.05 * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter +class ExcludeLowPopulation extends Filter { const MINIMUM_SIGNIFICANT_PERCENTAGE_THRESHOLD = 0.02; - + /** * The minimum value to enforce in a datatable for a specified column. Rows found with * a value less than this are removed. - * + * * @var number */ private $minimumValue; @@ -34,7 +38,7 @@ class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter /** * Constructor * - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnToFilter column to filter * @param number|Closure $minimumValue minimum value * @param bool $minimumPercentageThreshold @@ -43,7 +47,7 @@ class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter { parent::__construct($table); $this->columnToFilter = $columnToFilter; - + if ($minimumValue == 0) { if ($minimumPercentageThreshold === false) { $minimumPercentageThreshold = self::MINIMUM_SIGNIFICANT_PERCENTAGE_THRESHOLD; @@ -52,14 +56,14 @@ class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter $sumValues = array_sum($allValues); $minimumValue = $sumValues * $minimumPercentageThreshold; } - + $this->minimumValue = $minimumValue; } /** * Executes filter and removes all rows below the defined minimum * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -67,7 +71,7 @@ class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter $isValueHighPopulation = function ($value) use ($minimumValue) { return $value >= $minimumValue; }; - + $table->filter('ColumnCallbackDeleteRow', array($this->columnToFilter, $isValueHighPopulation)); } } diff --git a/core/DataTable/Filter/GroupBy.php b/core/DataTable/Filter/GroupBy.php index 166994cd29..2dbc839c59 100755 --- a/core/DataTable/Filter/GroupBy.php +++ b/core/DataTable/Filter/GroupBy.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * DataTable filter that will group DataTable rows together based on the results @@ -16,9 +20,9 @@ * NOTE: This filter should never be queued, it must be applied directly on a DataTable. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_GroupBy extends Piwik_DataTable_Filter +class GroupBy extends Filter { /** * The name of the columns to reduce. @@ -40,7 +44,7 @@ class Piwik_DataTable_Filter_GroupBy extends Piwik_DataTable_Filter /** * Constructor. * - * @param Piwik_DataTable $table The DataTable to filter. + * @param DataTable $table The DataTable to filter. * @param string $groupByColumn The column name to reduce. * @param mixed $reduceFunction The reduce function. This must alter the $groupByColumn in some way. * @param array $parameters Extra parameters to supply to the reduce function. @@ -57,7 +61,7 @@ class Piwik_DataTable_Filter_GroupBy extends Piwik_DataTable_Filter /** * Applies the reduce function to each row and merges rows w/ the same reduce result. * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -66,7 +70,7 @@ class Piwik_DataTable_Filter_GroupBy extends Piwik_DataTable_Filter foreach ($table->getRows() as $rowId => $row) { // skip the summary row - if ($rowId == Piwik_DataTable::ID_SUMMARY_ROW) { + if ($rowId == DataTable::ID_SUMMARY_ROW) { continue; } diff --git a/core/DataTable/Filter/Limit.php b/core/DataTable/Filter/Limit.php index 7845727948..5d751ddbc4 100644 --- a/core/DataTable/Filter/Limit.php +++ b/core/DataTable/Filter/Limit.php @@ -8,19 +8,23 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Delete all rows from the table that are not in the offset,offset+limit range * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_Limit extends Piwik_DataTable_Filter +class Limit extends Filter { /** * Filter constructor. * - * @param Piwik_DataTable $table + * @param DataTable $table * @param int $offset Starting row (indexed from 0) * @param int $limit Number of rows to keep (specify -1 to keep all rows) * @param bool $keepSummaryRow Whether to keep the summary row or not. @@ -40,14 +44,14 @@ class Piwik_DataTable_Filter_Limit extends Piwik_DataTable_Filter /** * Limits the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { $table->setRowsCountBeforeLimitFilter(); if ($this->keepSummaryRow) { - $summaryRow = $table->getRowFromId(Piwik_DataTable::ID_SUMMARY_ROW); + $summaryRow = $table->getRowFromId(DataTable::ID_SUMMARY_ROW); } // we delete from 0 to offset diff --git a/core/DataTable/Filter/MetadataCallbackAddMetadata.php b/core/DataTable/Filter/MetadataCallbackAddMetadata.php index dbfc1728ee..b24402c870 100644 --- a/core/DataTable/Filter/MetadataCallbackAddMetadata.php +++ b/core/DataTable/Filter/MetadataCallbackAddMetadata.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Add a new metadata to the table based on the value resulting @@ -18,9 +22,9 @@ * the path of the logo for this search engine URL (which has the format URL.png). * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_MetadataCallbackAddMetadata extends Piwik_DataTable_Filter +class MetadataCallbackAddMetadata extends Filter { private $metadataToRead; private $functionToApply; @@ -28,7 +32,7 @@ class Piwik_DataTable_Filter_MetadataCallbackAddMetadata extends Piwik_DataTable private $applyToSummaryRow; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string|array $metadataToRead * @param string $metadataToAdd * @param callback $functionToApply @@ -50,12 +54,12 @@ class Piwik_DataTable_Filter_MetadataCallbackAddMetadata extends Piwik_DataTable } /** - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { foreach ($table->getRows() as $key => $row) { - if (!$this->applyToSummaryRow && $key == Piwik_DataTable::ID_SUMMARY_ROW) { + if (!$this->applyToSummaryRow && $key == DataTable::ID_SUMMARY_ROW) { continue; } diff --git a/core/DataTable/Filter/MetadataCallbackReplace.php b/core/DataTable/Filter/MetadataCallbackReplace.php index 4e6e5990de..32051c1e6f 100644 --- a/core/DataTable/Filter/MetadataCallbackReplace.php +++ b/core/DataTable/Filter/MetadataCallbackReplace.php @@ -8,18 +8,24 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter\ColumnCallbackReplace; +use Piwik\DataTable\Row; +use false; /** * Replace a metadata value with a new value resulting * from the function called with the metadata's value * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_MetadataCallbackReplace extends Piwik_DataTable_Filter_ColumnCallbackReplace +class MetadataCallbackReplace extends ColumnCallbackReplace { /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param array|string $metadataToFilter * @param callback $functionToApply * @param null|array $functionParameters @@ -32,7 +38,7 @@ class Piwik_DataTable_Filter_MetadataCallbackReplace extends Piwik_DataTable_Fil } /** - * @param Piwik_DataTable_Row $row + * @param Row $row * @param string $metadataToFilter * @param mixed $newValue */ @@ -42,7 +48,7 @@ class Piwik_DataTable_Filter_MetadataCallbackReplace extends Piwik_DataTable_Fil } /** - * @param Piwik_DataTable_Row $row + * @param Row $row * @param string $metadataToFilter * @return array|false|mixed */ diff --git a/core/DataTable/Filter/Null.php b/core/DataTable/Filter/Null.php index 240dc53c41..7b9cb0d623 100644 --- a/core/DataTable/Filter/Null.php +++ b/core/DataTable/Filter/Null.php @@ -8,18 +8,22 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Filter template. * You can use it if you want to create a new filter. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_Null extends Piwik_DataTable_Filter +class Null extends Filter { /** - * @param Piwik_DataTable $table + * @param DataTable $table */ public function __construct($table) { @@ -27,7 +31,7 @@ class Piwik_DataTable_Filter_Null extends Piwik_DataTable_Filter } /** - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { diff --git a/core/DataTable/Filter/Pattern.php b/core/DataTable/Filter/Pattern.php index 4a1ef8fd99..8ac29a89f8 100644 --- a/core/DataTable/Filter/Pattern.php +++ b/core/DataTable/Filter/Pattern.php @@ -8,6 +8,10 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Delete all rows for which the given $columnToFilter do not contain the $patternToSearch @@ -15,9 +19,9 @@ * Example: from the keyword report, keep only the rows for which the label contains "piwik" * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_Pattern extends Piwik_DataTable_Filter +class Pattern extends Filter { private $columnToFilter; private $patternToSearch; @@ -25,7 +29,7 @@ class Piwik_DataTable_Filter_Pattern extends Piwik_DataTable_Filter private $invertedMatch; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnToFilter * @param string $patternToSearch * @param bool $invertedMatch @@ -65,7 +69,7 @@ class Piwik_DataTable_Filter_Pattern extends Piwik_DataTable_Filter } /** - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { diff --git a/core/DataTable/Filter/PatternRecursive.php b/core/DataTable/Filter/PatternRecursive.php index 088546fee5..168c6a520a 100644 --- a/core/DataTable/Filter/PatternRecursive.php +++ b/core/DataTable/Filter/PatternRecursive.php @@ -8,6 +8,13 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Exception; +use Piwik\DataTable; +use Piwik\DataTable\Filter; +use Piwik\DataTable\Filter\Pattern; +use Piwik\DataTable\Manager; /** * Delete all rows for which @@ -18,16 +25,16 @@ * Example: from the pages viewed report, keep only the rows that contain "piwik" or for which a subpage contains "piwik". * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_PatternRecursive extends Piwik_DataTable_Filter +class PatternRecursive extends Filter { private $columnToFilter; private $patternToSearch; private $patternToSearchQuoted; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnToFilter * @param string $patternToSearch */ @@ -35,13 +42,13 @@ class Piwik_DataTable_Filter_PatternRecursive extends Piwik_DataTable_Filter { parent::__construct($table); $this->patternToSearch = $patternToSearch; - $this->patternToSearchQuoted = Piwik_DataTable_Filter_Pattern::getPatternQuoted($patternToSearch); + $this->patternToSearchQuoted = Pattern::getPatternQuoted($patternToSearch); $this->patternToSearch = $patternToSearch; //preg_quote($patternToSearch); $this->columnToFilter = $columnToFilter; } /** - * @param Piwik_DataTable $table + * @param DataTable $table * @return int */ public function filter($table) @@ -56,7 +63,7 @@ class Piwik_DataTable_Filter_PatternRecursive extends Piwik_DataTable_Filter try { $idSubTable = $row->getIdSubDataTable(); - $subTable = Piwik_DataTable_Manager::getInstance()->getTable($idSubTable); + $subTable = Manager::getInstance()->getTable($idSubTable); // we delete the row if we couldn't find the pattern in any row in the // children hierarchy @@ -69,7 +76,7 @@ class Piwik_DataTable_Filter_PatternRecursive extends Piwik_DataTable_Filter } if ($patternNotFoundInChildren - && !Piwik_DataTable_Filter_Pattern::match($this->patternToSearch, $this->patternToSearchQuoted, $row->getColumn($this->columnToFilter), $invertedMatch = false) + && !Pattern::match($this->patternToSearch, $this->patternToSearchQuoted, $row->getColumn($this->columnToFilter), $invertedMatch = false) ) { $table->deleteRow($key); } diff --git a/core/DataTable/Filter/RangeCheck.php b/core/DataTable/Filter/RangeCheck.php index ebfea03d7f..5fc2db1c9c 100644 --- a/core/DataTable/Filter/RangeCheck.php +++ b/core/DataTable/Filter/RangeCheck.php @@ -8,20 +8,24 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * Check range * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_RangeCheck extends Piwik_DataTable_Filter +class RangeCheck extends Filter { static public $minimumValue = 0.00; static public $maximumValue = 100.0; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnToFilter name of the column to filter * @param float $minimumValue minimum value for range * @param float $maximumValue maximum value for range @@ -41,7 +45,7 @@ class Piwik_DataTable_Filter_RangeCheck extends Piwik_DataTable_Filter /** * Executes the filter an adjusts all columns to fit the defined range * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { diff --git a/core/DataTable/Filter/ReplaceColumnNames.php b/core/DataTable/Filter/ReplaceColumnNames.php index c2b2beca79..abf802b82a 100644 --- a/core/DataTable/Filter/ReplaceColumnNames.php +++ b/core/DataTable/Filter/ReplaceColumnNames.php @@ -8,8 +8,14 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable\Filter; +use Piwik\DataTable\Simple; use Piwik\Metrics; use Piwik\Piwik; +use Piwik\DataTable; +use Piwik_Tracker_GoalManager; /** * This filter replaces column names using a mapping table that maps from the old name to the new name. @@ -24,14 +30,14 @@ use Piwik\Piwik; * You can specify the mapping array to apply in the constructor. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ReplaceColumnNames extends Piwik_DataTable_Filter +class ReplaceColumnNames extends Filter { protected $mappingToApply; /** - * @param Piwik_DataTable $table Table + * @param DataTable $table Table * @param array $mappingToApply Mapping to apply. Must have the format * array( OLD_COLUMN_NAME => NEW_COLUMN NAME, * OLD_COLUMN_NAME2 => NEW_COLUMN NAME2, @@ -49,11 +55,11 @@ class Piwik_DataTable_Filter_ReplaceColumnNames extends Piwik_DataTable_Filter /** * Executes the filter and renames the defined columns * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { - if($table instanceof Piwik_DataTable_Simple) { + if ($table instanceof Simple) { $this->filterSimple($table); } else { $this->filterTable($table); @@ -70,13 +76,13 @@ class Piwik_DataTable_Filter_ReplaceColumnNames extends Piwik_DataTable_Filter } } - protected function filterSimple(Piwik_DataTable_Simple $table) + protected function filterSimple(Simple $table) { foreach ($table->getRows() as $row) { - $columns = array_keys( $row->getColumns() ); - foreach($columns as $column) { + $columns = array_keys($row->getColumns()); + foreach ($columns as $column) { $newName = $this->getRenamedColumn($column); - if($newName) { + if ($newName) { $row->renameColumn($column, $newName); } } diff --git a/core/DataTable/Filter/ReplaceSummaryRowLabel.php b/core/DataTable/Filter/ReplaceSummaryRowLabel.php index b89f05871c..2e65716922 100644 --- a/core/DataTable/Filter/ReplaceSummaryRowLabel.php +++ b/core/DataTable/Filter/ReplaceSummaryRowLabel.php @@ -8,16 +8,21 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; +use Piwik\DataTable\Manager; /** * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_ReplaceSummaryRowLabel extends Piwik_DataTable_Filter +class ReplaceSummaryRowLabel extends Filter { /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string|null $newLabel new label for summary row */ public function __construct($table, $newLabel = null) @@ -32,13 +37,13 @@ class Piwik_DataTable_Filter_ReplaceSummaryRowLabel extends Piwik_DataTable_Filt /** * Updates the summary row label * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { $rows = $table->getRows(); foreach ($rows as $row) { - if ($row->getColumn('label') == Piwik_DataTable::LABEL_SUMMARY_ROW) { + if ($row->getColumn('label') == DataTable::LABEL_SUMMARY_ROW) { $row->setColumn('label', $this->newLabel); break; } @@ -47,7 +52,7 @@ class Piwik_DataTable_Filter_ReplaceSummaryRowLabel extends Piwik_DataTable_Filt // recurse foreach ($rows as $row) { if ($row->isSubtableLoaded()) { - $subTable = Piwik_DataTable_Manager::getInstance()->getTable($row->getIdSubDataTable()); + $subTable = Manager::getInstance()->getTable($row->getIdSubDataTable()); $this->filter($subTable); } } diff --git a/core/DataTable/Filter/SafeDecodeLabel.php b/core/DataTable/Filter/SafeDecodeLabel.php index ef8643b77f..ecb183c6cb 100644 --- a/core/DataTable/Filter/SafeDecodeLabel.php +++ b/core/DataTable/Filter/SafeDecodeLabel.php @@ -8,18 +8,22 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; /** * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_SafeDecodeLabel extends Piwik_DataTable_Filter +class SafeDecodeLabel extends Filter { private $columnToDecode; static private $outputHtml = true; /** - * @param Piwik_DataTable $table + * @param DataTable $table */ public function __construct($table) { @@ -57,7 +61,7 @@ class Piwik_DataTable_Filter_SafeDecodeLabel extends Piwik_DataTable_Filter /** * Decodes all columns of the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -71,5 +75,4 @@ class Piwik_DataTable_Filter_SafeDecodeLabel extends Piwik_DataTable_Filter } } } - } diff --git a/core/DataTable/Filter/Sort.php b/core/DataTable/Filter/Sort.php index 014362b45d..72bc433bef 100644 --- a/core/DataTable/Filter/Sort.php +++ b/core/DataTable/Filter/Sort.php @@ -8,22 +8,28 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable\Filter; +use Piwik\DataTable\Simple; +use Piwik\DataTable\Row; use Piwik\Metrics; +use Piwik\DataTable; /** * Sort the DataTable based on the value of column $columnToSort ordered by $order. * Possible to specify a natural sorting (see php.net/natsort for details) * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter +class Sort extends Filter { protected $columnToSort; protected $order; /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $columnToSort name of the column to sort by * @param string $order order (asc|desc) * @param bool $naturalSort use natural sort? @@ -65,27 +71,27 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter */ public function sort($a, $b) { - return !isset($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) - && !isset($b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + return !isset($a->c[Row::COLUMNS][$this->columnToSort]) + && !isset($b->c[Row::COLUMNS][$this->columnToSort]) ? 0 : ( - !isset($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + !isset($a->c[Row::COLUMNS][$this->columnToSort]) ? 1 : ( - !isset($b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + !isset($b->c[Row::COLUMNS][$this->columnToSort]) ? -1 - : (($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort] != $b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort] - || !isset($a->c[Piwik_DataTable_Row::COLUMNS]['label'])) + : (($a->c[Row::COLUMNS][$this->columnToSort] != $b->c[Row::COLUMNS][$this->columnToSort] + || !isset($a->c[Row::COLUMNS]['label'])) ? ($this->sign * ( - $a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort] - < $b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort] + $a->c[Row::COLUMNS][$this->columnToSort] + < $b->c[Row::COLUMNS][$this->columnToSort] ? -1 : 1) ) : -1 * $this->sign * strnatcasecmp( - $a->c[Piwik_DataTable_Row::COLUMNS]['label'], - $b->c[Piwik_DataTable_Row::COLUMNS]['label']) + $a->c[Row::COLUMNS]['label'], + $b->c[Row::COLUMNS]['label']) ) ) ); @@ -100,16 +106,16 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter */ function naturalSort($a, $b) { - return !isset($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) - && !isset($b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + return !isset($a->c[Row::COLUMNS][$this->columnToSort]) + && !isset($b->c[Row::COLUMNS][$this->columnToSort]) ? 0 - : (!isset($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + : (!isset($a->c[Row::COLUMNS][$this->columnToSort]) ? 1 - : (!isset($b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + : (!isset($b->c[Row::COLUMNS][$this->columnToSort]) ? -1 : $this->sign * strnatcasecmp( - $a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort], - $b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort] + $a->c[Row::COLUMNS][$this->columnToSort], + $b->c[Row::COLUMNS][$this->columnToSort] ) ) ); @@ -124,16 +130,16 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter */ function sortString($a, $b) { - return !isset($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) - && !isset($b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + return !isset($a->c[Row::COLUMNS][$this->columnToSort]) + && !isset($b->c[Row::COLUMNS][$this->columnToSort]) ? 0 - : (!isset($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + : (!isset($a->c[Row::COLUMNS][$this->columnToSort]) ? 1 - : (!isset($b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort]) + : (!isset($b->c[Row::COLUMNS][$this->columnToSort]) ? -1 : $this->sign * - strcasecmp($a->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort], - $b->c[Piwik_DataTable_Row::COLUMNS][$this->columnToSort] + strcasecmp($a->c[Row::COLUMNS][$this->columnToSort], + $b->c[Row::COLUMNS][$this->columnToSort] ) ) ); @@ -142,7 +148,7 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter /** * Sets the column to be used for sorting * - * @param Piwik_DataTable_Row $row + * @param Row $row * @return int */ protected function selectColumnToSort($row) @@ -179,12 +185,12 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter /** * Sorts the given data table by defined column and sorting method * - * @param Piwik_DataTable $table + * @param DataTable $table * @return mixed */ public function filter($table) { - if ($table instanceof Piwik_DataTable_Simple) { + if ($table instanceof Simple) { return; } if (empty($this->columnToSort)) { diff --git a/core/DataTable/Filter/Truncate.php b/core/DataTable/Filter/Truncate.php index 7c917034f9..1cd6f98bf0 100644 --- a/core/DataTable/Filter/Truncate.php +++ b/core/DataTable/Filter/Truncate.php @@ -8,15 +8,20 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\DataTable\Filter; +use Piwik\DataTable\Manager; /** * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Filter_Truncate extends Piwik_DataTable_Filter +class Truncate extends Filter { /** - * @param Piwik_DataTable $table + * @param DataTable $table * @param int $truncateAfter */ public function __construct($table, $truncateAfter) @@ -28,7 +33,7 @@ class Piwik_DataTable_Filter_Truncate extends Piwik_DataTable_Filter /** * Truncates the table after X rows and adds a summary row * - * @param Piwik_DataTable $table + * @param DataTable $table */ public function filter($table) { @@ -38,7 +43,7 @@ class Piwik_DataTable_Filter_Truncate extends Piwik_DataTable_Filter foreach ($table->getRows() as $row) { if ($row->isSubtableLoaded()) { $idSubTable = $row->getIdSubDataTable(); - $subTable = Piwik_DataTable_Manager::getInstance()->getTable($idSubTable); + $subTable = Manager::getInstance()->getTable($idSubTable); $subTable->filter('Truncate', array($this->truncateAfter)); } } diff --git a/core/DataTable/Manager.php b/core/DataTable/Manager.php index 21dc600481..b32463b176 100644 --- a/core/DataTable/Manager.php +++ b/core/DataTable/Manager.php @@ -9,7 +9,11 @@ * @package Piwik */ +namespace Piwik\DataTable; + +use Exception; use Piwik\Common; +use Piwik\DataTable; /** * The DataTable_Manager registers all the instanciated DataTable and provides an @@ -17,16 +21,16 @@ use Piwik\Common; * At the end of archiving, the ArchiveProcessor will read the stored datatable and record them in the DB. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Manager +class Manager { static private $instance = null; /** * Returns instance * - * @return Piwik_DataTable_Manager + * @return \Piwik\DataTable\Manager */ static public function getInstance() { @@ -52,7 +56,7 @@ class Piwik_DataTable_Manager /** * Add a DataTable to the registry * - * @param Piwik_DataTable $table + * @param DataTable $table * @return int Index of the table in the manager array */ public function addTable($table) @@ -69,7 +73,7 @@ class Piwik_DataTable_Manager * * @param int $idTable * @throws Exception If the table can't be found - * @return Piwik_DataTable The table + * @return DataTable The table */ public function getTable($idTable) { @@ -134,9 +138,9 @@ class Piwik_DataTable_Manager */ public function dumpAllTables() { - echo "<hr />Piwik_DataTable_Manager->dumpAllTables()<br />"; + echo "<hr />Manager->dumpAllTables()<br />"; foreach ($this->tables as $id => $table) { - if (!($table instanceof Piwik_DataTable)) { + if (!($table instanceof DataTable)) { echo "Error table $id is not instance of datatable<br />"; var_export($table); } else { @@ -146,6 +150,6 @@ class Piwik_DataTable_Manager echo "<br />"; } } - echo "<br />-- End Piwik_DataTable_Manager->dumpAllTables()<hr />"; + echo "<br />-- End Manager->dumpAllTables()<hr />"; } } diff --git a/core/DataTable/Array.php b/core/DataTable/Map.php index 0274a65fe5..7bda0c1984 100644 --- a/core/DataTable/Array.php +++ b/core/DataTable/Map.php @@ -8,27 +8,28 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable; /** * The DataTable_Array is a way to store an array of dataTable. - * The Piwik_DataTable_Array implements some of the features of the Piwik_DataTable such as queueFilter, getRowsCount. + * The Set implements some of the features of the DataTable such as queueFilter, getRowsCount. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Array +class Map { /** - * Array containing the DataTable withing this Piwik_DataTable_Array + * Array containing the DataTable withing this Set * - * @var Piwik_DataTable[] + * @var DataTable[] */ protected $array = array(); /** * This is the label used to index the tables. * For example if the tables are indexed using the timestamp of each period - * eg. $this->array[1045886960] = new Piwik_DataTable(); + * eg. $this->array[1045886960] = new DataTable(); * the keyName would be 'timestamp'. * * This label is used in the Renderer (it becomes a column name or the XML description tag) @@ -70,7 +71,7 @@ class Piwik_DataTable_Array /** * Queue a filter to the DataTable_Array will queue this filter to every DataTable of the DataTable_Array. * - * @param string $className Filter name, eg. Piwik_DataTable_Filter_Limit + * @param string $className Filter name, eg. Limit * @param array $parameters Filter parameters, eg. array( 50, 10 ) */ public function queueFilter($className, $parameters = array()) @@ -106,7 +107,7 @@ class Piwik_DataTable_Array /** * Returns the array of DataTable * - * @return Piwik_DataTable[] + * @return DataTable[] */ public function getArray() { @@ -117,7 +118,7 @@ class Piwik_DataTable_Array * Returns the table with the specified label. * * @param string $label - * @return Piwik_DataTable + * @return DataTable */ public function getTable($label) { @@ -128,7 +129,7 @@ class Piwik_DataTable_Array * Returns the first row * This method can be used to treat DataTable and DataTable_Array in the same way * - * @return Piwik_DataTable_Row + * @return Row */ public function getFirstRow() { @@ -144,7 +145,7 @@ class Piwik_DataTable_Array /** * Adds a new DataTable to the DataTable_Array * - * @param Piwik_DataTable $table + * @param DataTable $table * @param string $label Label used to index this table in the array */ public function addTable($table, $label) @@ -287,19 +288,19 @@ class Piwik_DataTable_Array * This function can be used, for example, to smoosh IndexedBySite archive * query results into one DataTable w/ different rows differentiated by site ID. * - * @return Piwik_DataTable|Piwik_DataTable_Array + * @return DataTable|Set */ public function mergeChildren() { $firstChild = reset($this->array); - if ($firstChild instanceof Piwik_DataTable_Array) { + if ($firstChild instanceof Set) { $result = $firstChild->getEmptyClone(); foreach ($this->array as $label => $subTableArray) { foreach ($subTableArray->array as $innerLabel => $subTable) { if (!isset($result->array[$innerLabel])) { - $dataTable = new Piwik_DataTable(); + $dataTable = new DataTable(); $dataTable->metadata = $subTable->metadata; $result->addTable($dataTable, $innerLabel); @@ -309,7 +310,7 @@ class Piwik_DataTable_Array } } } else { - $result = new Piwik_DataTable(); + $result = new DataTable(); foreach ($this->array as $label => $subTable) { $this->copyRowsAndSetLabel($result, $subTable, $label); @@ -323,21 +324,21 @@ class Piwik_DataTable_Array * Utility function used by mergeChildren. Copies the rows from one table, * sets their 'label' columns to a value and adds them to another table. * - * @param Piwik_DataTable $toTable The table to copy rows to. - * @param Piwik_DataTable $fromTable The table to copy rows from. + * @param DataTable $toTable The table to copy rows to. + * @param DataTable $fromTable The table to copy rows from. * @param string $label The value to set the 'label' column of every copied row. */ - private function copyRowsAndSetLabel($toTable, $fromTable, $label) + private function copyRowsAndSetLabel(DataTable $toTable, DataTable $fromTable, $label) { foreach ($fromTable->getRows() as $fromRow) { $oldColumns = $fromRow->getColumns(); unset($oldColumns['label']); $columns = array_merge(array('label' => $label), $oldColumns); - $row = new Piwik_DataTable_Row(array( - Piwik_DataTable_Row::COLUMNS => $columns, - Piwik_DataTable_Row::METADATA => $fromRow->getMetadata(), - Piwik_DataTable_Row::DATATABLE_ASSOCIATED => $fromRow->getIdSubDataTable() + $row = new Row(array( + Row::COLUMNS => $columns, + Row::METADATA => $fromRow->getMetadata(), + Row::DATATABLE_ASSOCIATED => $fromRow->getIdSubDataTable() )); $toTable->addRow($row); } @@ -347,9 +348,9 @@ class Piwik_DataTable_Array * Adds a DataTable to all the tables in this array * NOTE: Will only add $tableToSum if the childTable has some rows * - * @param Piwik_DataTable $tableToSum + * @param DataTable $tableToSum */ - public function addDataTable(Piwik_DataTable $tableToSum) + public function addDataTable(DataTable $tableToSum) { foreach ($this->getArray() as $childTable) { if ($childTable->getRowsCount() > 0) { @@ -364,7 +365,7 @@ class Piwik_DataTable_Array * * @see Piwik_DataTable::mergeSubtables * - * @return Piwik_DataTable_Array + * @return Set */ public function mergeSubtables() { @@ -379,11 +380,11 @@ class Piwik_DataTable_Array * Returns a new DataTable_Array w/o any child DataTables, but with * the same key name as this instance. * - * @return Piwik_DataTable_Array + * @return Set */ public function getEmptyClone() { - $newTableArray = new Piwik_DataTable_Array; + $newTableArray = new Map; $newTableArray->setKeyName($this->getKeyName()); return $newTableArray; } diff --git a/core/DataTable/Renderer.php b/core/DataTable/Renderer.php index 68fcf88fe5..88f3f9ff37 100644 --- a/core/DataTable/Renderer.php +++ b/core/DataTable/Renderer.php @@ -8,21 +8,26 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable; + +use Exception; use Piwik\Metrics; use Piwik\Piwik; +use Piwik\DataTable; +use Piwik\DataTable\Simple; /** * A DataTable Renderer can produce an output given a DataTable object. * All new Renderers must be copied in DataTable/Renderer and added to the factory() method. * To use a renderer, simply do: - * $render = new Piwik_DataTable_Renderer_Xml(); + * $render = new Xml(); * $render->setTable($dataTable); * echo $render; * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -abstract class Piwik_DataTable_Renderer +abstract class Renderer { protected $table; protected $exception; @@ -59,7 +64,6 @@ abstract class Piwik_DataTable_Renderer */ public $idSite = 'all'; - public function __construct() { } @@ -135,16 +139,16 @@ abstract class Piwik_DataTable_Renderer /** * Set the DataTable to be rendered * - * @param Piwik_DataTable|Piwik_DataTable_Simple|Piwik_DataTable_Array $table table to be rendered + * @param DataTable|Simple|DataTable\Map $table table to be rendered * @throws Exception */ public function setTable($table) { if (!is_array($table) - && !($table instanceof Piwik_DataTable) - && !($table instanceof Piwik_DataTable_Array) + && !($table instanceof DataTable) + && !($table instanceof DataTable\Map) ) { - throw new Exception("DataTable renderers renderer accepts only Piwik_DataTable and Piwik_DataTable_Array instances, and array instances."); + throw new Exception("DataTable renderers renderer accepts only DataTable and Set instances, and array instances."); } $this->table = $table; } @@ -163,7 +167,6 @@ abstract class Piwik_DataTable_Renderer $this->exception = $exception; } - /** * @var array */ @@ -190,20 +193,19 @@ abstract class Piwik_DataTable_Renderer * * @param string $name * @throws Exception If the renderer is unknown - * @return Piwik_DataTable_Renderer + * @return \Piwik\DataTable\Renderer */ static public function factory($name) { - $name = ucfirst(strtolower($name)); - $className = 'Piwik_DataTable_Renderer_' . $name; - + $className = ucfirst(strtolower($name)); + $className = 'Piwik\DataTable\Renderer\\' . $className; try { - Piwik_Loader::loadClass($className); + \Piwik\Loader::loadClass($className); return new $className; } catch (Exception $e) { $availableRenderers = implode(', ', self::getRenderers()); @header('Content-Type: text/plain; charset=utf-8'); - throw new Exception(Piwik_TranslateException('General_ExceptionInvalidRendererFormat', array($name, $availableRenderers))); + throw new Exception(Piwik_TranslateException('General_ExceptionInvalidRendererFormat', array($className, $availableRenderers))); } } @@ -365,7 +367,7 @@ abstract class Piwik_DataTable_Renderer * - empty array (ie, array()) * - array w/ arrays/DataTable instances as values (ie, * array('name' => 'myreport', - * 'reportData' => new Piwik_DataTable()) + * 'reportData' => new DataTable()) * OR array('name' => 'myreport', * 'reportData' => array(...)) ) * diff --git a/core/DataTable/Renderer/Console.php b/core/DataTable/Renderer/Console.php index c78b4eda1f..594c80427f 100644 --- a/core/DataTable/Renderer/Console.php +++ b/core/DataTable/Renderer/Console.php @@ -8,14 +8,19 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Piwik\DataTable; +use Piwik\DataTable\Manager; +use Piwik\DataTable\Renderer; /** * Simple output * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage Piwik_DataTable_Renderer_ConsoleDataTable */ -class Piwik_DataTable_Renderer_Console extends Piwik_DataTable_Renderer +class Console extends Renderer { /** * Prefix @@ -60,13 +65,13 @@ class Piwik_DataTable_Renderer_Console extends Piwik_DataTable_Renderer /** * Computes the output of the given array of data tables * - * @param Piwik_DataTable_Array $tableArray data tables to render + * @param DataTable\Map $tableArray data tables to render * @param string $prefix prefix to output before table data * @return string */ - protected function renderDataTableArray(Piwik_DataTable_Array $tableArray, $prefix) + protected function renderDataTableArray(DataTable\Map $tableArray, $prefix) { - $output = "Piwik_DataTable_Array<hr />"; + $output = "Set<hr />"; $prefix = $prefix . ' '; foreach ($tableArray->getArray() as $descTable => $table) { $output .= $prefix . "<b>" . $descTable . "</b><br />"; @@ -79,7 +84,7 @@ class Piwik_DataTable_Renderer_Console extends Piwik_DataTable_Renderer /** * Computes the given dataTable output and returns the string/binary * - * @param Piwik_DataTable $table data table to render + * @param DataTable $table data table to render * @param string $prefix prefix to output before table data * @return string */ @@ -87,10 +92,10 @@ class Piwik_DataTable_Renderer_Console extends Piwik_DataTable_Renderer { if (is_array($table)) // convert array to DataTable { - $table = Piwik_DataTable::makeFromSimpleArray($table); + $table = DataTable::makeFromSimpleArray($table); } - if ($table instanceof Piwik_DataTable_Array) { + if ($table instanceof DataTable\Map) { return $this->renderDataTableArray($table, $prefix); } @@ -105,7 +110,7 @@ class Piwik_DataTable_Renderer_Console extends Piwik_DataTable_Renderer $dataTableArrayBreak = false; $columns = array(); foreach ($row->getColumns() as $column => $value) { - if ($value instanceof Piwik_DataTable_Array) { + if ($value instanceof DataTable\Map) { $output .= $this->renderDataTableArray($value, $prefix); $dataTableArrayBreak = true; break; @@ -136,7 +141,7 @@ class Piwik_DataTable_Renderer_Console extends Piwik_DataTable_Renderer if ($row->isSubtableLoaded()) { $depth++; $output .= $this->renderTable( - Piwik_DataTable_Manager::getInstance()->getTable( + Manager::getInstance()->getTable( $row->getIdSubDataTable() ), $prefix . ' ' diff --git a/core/DataTable/Renderer/Csv.php b/core/DataTable/Renderer/Csv.php index 9b2f5505d6..03074897d4 100644 --- a/core/DataTable/Renderer/Csv.php +++ b/core/DataTable/Renderer/Csv.php @@ -8,10 +8,16 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Piwik\DataTable\Simple; +use Piwik\DataTable\Renderer; use Piwik\Period; -use Piwik\Period_Range; +use Piwik\Period\Range; use Piwik\Piwik; use Piwik\Common; +use Piwik\Date; +use Piwik\DataTable; /** * CSV export @@ -23,9 +29,9 @@ use Piwik\Common; * Formatting and layout are ignored. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer +class Csv extends Renderer { /** * Column separator @@ -119,7 +125,7 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer /** * Computes the output of the given data table * - * @param Piwik_DataTable|array $table + * @param DataTable|array $table * @param array $allColumns * @return string */ @@ -127,10 +133,10 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer { if (is_array($table)) // convert array to DataTable { - $table = Piwik_DataTable::makeFromSimpleArray($table); + $table = DataTable::makeFromSimpleArray($table); } - if ($table instanceof Piwik_DataTable_Array) { + if ($table instanceof DataTable\Map) { $str = $this->renderDataTableArray($table, $allColumns); } else { $str = $this->renderDataTable($table, $allColumns); @@ -141,7 +147,7 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer /** * Computes the output of the given data table array * - * @param Piwik_DataTable_Array $table + * @param DataTable\Map $table * @param array $allColumns * @return string */ @@ -176,13 +182,13 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer /** * Converts the output of the given simple data table * - * @param Piwik_DataTable_Simple $table + * @param Simple $table * @param array $allColumns * @return string */ protected function renderDataTable($table, &$allColumns = array()) { - if ($table instanceof Piwik_DataTable_Simple) { + if ($table instanceof Simple) { $row = $table->getFirstRow(); if ($row !== false) { $columnNameToValue = $row->getColumns(); @@ -352,11 +358,11 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer if ($period || $date) // in test cases, there are no request params set { if ($period == 'range') { - $period = new Period_Range($period, $date); + $period = new Range($period, $date); } else if (strpos($date, ',') !== false) { - $period = new Period_Range('range', $date); + $period = new Range('range', $date); } else { - $period = Period::factory($period, Piwik_Date::factory($date)); + $period = Period::factory($period, Date::factory($date)); } $prettyDate = $period->getLocalizedLongString(); diff --git a/core/DataTable/Renderer/Html.php b/core/DataTable/Renderer/Html.php index 1d620f74cc..035726a9ed 100644 --- a/core/DataTable/Renderer/Html.php +++ b/core/DataTable/Renderer/Html.php @@ -8,15 +8,21 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Exception; +use Piwik\DataTable; +use Piwik\DataTable\Simple; +use Piwik\DataTable\Renderer; /** * Simple HTML output * Does not work with recursive DataTable (i.e., when a row can be associated with a subDataTable). * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Html extends Piwik_DataTable_Renderer +class Html extends Renderer { protected $tableId; protected $allColumns; @@ -71,23 +77,23 @@ class Piwik_DataTable_Renderer_Html extends Piwik_DataTable_Renderer /** * Computes the output for the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table * @return string */ protected function renderTable($table) { if (is_array($table)) // convert array to DataTable { - $table = Piwik_DataTable::makeFromSimpleArray($table); + $table = DataTable::makeFromSimpleArray($table); } - if ($table instanceof Piwik_DataTable_Array) { + if ($table instanceof DataTable\Map) { foreach ($table->getArray() as $date => $subtable) { if ($subtable->getRowsCount()) { $this->buildTableStructure($subtable, '_' . $table->getKeyName(), $date); } } - } else // Piwik_DataTable_Simple + } else // Simple { if ($table->getRowsCount()) { $this->buildTableStructure($table); @@ -101,7 +107,7 @@ class Piwik_DataTable_Renderer_Html extends Piwik_DataTable_Renderer /** * Adds the given data table to the table structure array * - * @param Piwik_DataTable_Simple $table + * @param Simple $table * @param null|string $columnToAdd * @param null|string $valueToAdd * @throws Exception @@ -117,7 +123,7 @@ class Piwik_DataTable_Renderer_Html extends Piwik_DataTable_Renderer * ROW1 = col1 | col2 | col3 | metadata | idSubTable * ROW2 = col1 | col2 (no value but appears) | col3 | metadata | idSubTable */ - if (!($table instanceof Piwik_DataTable)) { + if (!($table instanceof DataTable)) { throw new Exception("HTML Renderer does not work with this combination of parameters"); } foreach ($table->getRows() as $row) { diff --git a/core/DataTable/Renderer/Json.php b/core/DataTable/Renderer/Json.php index 92e0830316..f5f6fc12bb 100644 --- a/core/DataTable/Renderer/Json.php +++ b/core/DataTable/Renderer/Json.php @@ -8,17 +8,22 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Piwik\DataTable\Renderer; use Piwik\Piwik; use Piwik\Common; +use Piwik\DataTable; +use Piwik\DataTable\Renderer\Php; /** * JSON export. * Works with recursive DataTable (when a row can be associated with a subDataTable). * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer +class Json extends Renderer { /** * Computes the dataTable output and returns the string/binary @@ -50,7 +55,7 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer /** * Computes the output for the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table * @return string */ protected function renderTable($table) @@ -61,7 +66,7 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer $array = array($array); } } else { - $renderer = new Piwik_DataTable_Renderer_Php(); + $renderer = new Php(); $renderer->setTable($table); $renderer->setRenderSubTables($this->isRenderSubtables()); $renderer->setSerialize(false); diff --git a/core/DataTable/Renderer/Php.php b/core/DataTable/Renderer/Php.php index ec66701cbe..6717746295 100644 --- a/core/DataTable/Renderer/Php.php +++ b/core/DataTable/Renderer/Php.php @@ -8,7 +8,14 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Exception; +use Piwik\DataTable\Manager; +use Piwik\DataTable\Simple; +use Piwik\DataTable\Renderer; use Piwik\Piwik; +use Piwik\DataTable; /** * Returns the equivalent PHP array for a given DataTable. @@ -19,9 +26,9 @@ use Piwik\Piwik; * Works with recursive DataTable (when a row can be associated with a subDataTable). * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer +class Php extends Renderer { protected $prettyDisplay = false; protected $serialize = true; @@ -63,7 +70,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer /** * Computes the dataTable output and returns the string/binary * - * @param null|Piwik_DataTable_Array|Piwik_DataTable_Simple $dataTable + * @param null|DataTable\Map|Simple $dataTable * @return string */ public function render($dataTable = null) @@ -116,7 +123,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer * 'col2_name' => value2, * 'metadata1_name' => value_metadata ) * - * @param null|Piwik_DataTable_Array|Piwik_DataTable_Simple $dataTable + * @param null|DataTable\Map|Simple $dataTable * @return array Php array representing the 'flat' version of the datatable */ public function flatRender($dataTable = null) @@ -130,7 +137,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer if (self::shouldWrapArrayBeforeRendering($flatArray)) { $flatArray = array($flatArray); } - } else if ($dataTable instanceof Piwik_DataTable_Array) { + } else if ($dataTable instanceof DataTable\Map) { $flatArray = array(); foreach ($dataTable->getArray() as $keyName => $table) { $serializeSave = $this->serialize; @@ -138,7 +145,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer $flatArray[$keyName] = $this->flatRender($table); $this->serialize = $serializeSave; } - } else if ($dataTable instanceof Piwik_DataTable_Simple) { + } else if ($dataTable instanceof Simple) { $flatArray = $this->renderSimpleTable($dataTable); // if we return only one numeric value then we print out the result in a simple <result> tag @@ -146,7 +153,6 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer if (count($flatArray) == 1) { $flatArray = current($flatArray); } - } // A normal DataTable needs to be handled specifically else { $array = $this->renderTable($dataTable); @@ -191,11 +197,11 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer */ public function originalRender() { - Piwik::checkObjectTypeIs($this->table, array('Piwik_DataTable_Simple', 'Piwik_DataTable')); + Piwik::checkObjectTypeIs($this->table, array('Simple', 'DataTable')); - if ($this->table instanceof Piwik_DataTable_Simple) { + if ($this->table instanceof Simple) { $array = $this->renderSimpleTable($this->table); - } elseif ($this->table instanceof Piwik_DataTable) { + } elseif ($this->table instanceof DataTable) { $array = $this->renderTable($this->table); } @@ -208,7 +214,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer /** * Converts the given data table to an array * - * @param Piwik_DataTable $table + * @param DataTable $table * @return array */ protected function renderTable($table) @@ -222,14 +228,14 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer 'idsubdatatable' => $row->getIdSubDataTable(), ); - if ($id == Piwik_DataTable::ID_SUMMARY_ROW) { + if ($id == DataTable::ID_SUMMARY_ROW) { $newRow['issummaryrow'] = true; } if ($this->isRenderSubtables() && $row->isSubtableLoaded() ) { - $subTable = $this->renderTable(Piwik_DataTable_Manager::getInstance()->getTable($row->getIdSubDataTable())); + $subTable = $this->renderTable(Manager::getInstance()->getTable($row->getIdSubDataTable())); $newRow['subtable'] = $subTable; if ($this->hideIdSubDatatable === false && isset($newRow['metadata']['idsubdatatable_in_db']) @@ -250,7 +256,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer /** * Converts the simple data table to an array * - * @param Piwik_DataTable_Simple $table + * @param Simple $table * @return array */ protected function renderSimpleTable($table) diff --git a/core/DataTable/Renderer/Rss.php b/core/DataTable/Renderer/Rss.php index 2c1fd05114..2b131d25df 100644 --- a/core/DataTable/Renderer/Rss.php +++ b/core/DataTable/Renderer/Rss.php @@ -8,17 +8,24 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Exception; use Piwik\Common; +use Piwik\DataTable\Renderer; +use Piwik\Date; +use Piwik\DataTable; +use Piwik_Url; /** * RSS Feed. - * The RSS renderer can be used only on Piwik_DataTable_Array that are arrays of Piwik_DataTable. - * A RSS feed contains one dataTable per element in the Piwik_DataTable_Array. + * The RSS renderer can be used only on Set that are arrays of DataTable. + * A RSS feed contains one dataTable per element in the Set. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Rss extends Piwik_DataTable_Renderer +class Rss extends Renderer { /** * Computes the dataTable output and returns the string/binary @@ -46,13 +53,13 @@ class Piwik_DataTable_Renderer_Rss extends Piwik_DataTable_Renderer /** * Computes the output for the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table * @return string * @throws Exception */ protected function renderTable($table) { - if (!($table instanceof Piwik_DataTable_Array) + if (!($table instanceof DataTable\Map) || $table->getKeyName() != 'date' ) { throw new Exception("RSS feeds can be generated for one specific website &idSite=X." . @@ -72,7 +79,7 @@ class Piwik_DataTable_Renderer_Rss extends Piwik_DataTable_Renderer $pudDate = date('r', $timestamp); - $dateInSiteTimezone = Piwik_Date::factory($timestamp)->setTimezone($site->getTimezone())->toString('Y-m-d'); + $dateInSiteTimezone = Date::factory($timestamp)->setTimezone($site->getTimezone())->toString('Y-m-d'); $thisPiwikUrl = Common::sanitizeInputValue($piwikUrl . "&date=$dateInSiteTimezone"); $siteName = $site->getName(); $title = $siteName . " on " . $date; @@ -189,7 +196,6 @@ class Piwik_DataTable_Renderer_Rss extends Piwik_DataTable_Renderer } } $html .= "</tr>"; - } $html .= "\n\n</table>"; return $html; diff --git a/core/DataTable/Renderer/Tsv.php b/core/DataTable/Renderer/Tsv.php index 4835853143..3f6aea5b53 100644 --- a/core/DataTable/Renderer/Tsv.php +++ b/core/DataTable/Renderer/Tsv.php @@ -8,6 +8,9 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Piwik\DataTable\Renderer\Csv; /** * TSV export @@ -16,9 +19,9 @@ * TSV is therefore the 'CSV' that is Excel compatible * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Tsv extends Piwik_DataTable_Renderer_Csv +class Tsv extends Csv { /** * Constructor diff --git a/core/DataTable/Renderer/Xml.php b/core/DataTable/Renderer/Xml.php index ba00e6d39e..4a9fdbdec5 100644 --- a/core/DataTable/Renderer/Xml.php +++ b/core/DataTable/Renderer/Xml.php @@ -8,7 +8,15 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Renderer; + +use Exception; +use Piwik\DataTable\Renderer\Php; +use Piwik\DataTable\Simple; +use Piwik\DataTable\Renderer; use Piwik\Piwik; +use Piwik\DataTable; +use DataTable\Map; /** * XML export of a given DataTable. @@ -18,9 +26,9 @@ use Piwik\Piwik; * Works with recursive DataTable (when a row can be associated with a subDataTable). * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer +class Xml extends Renderer { /** * Computes the dataTable output and returns the string/binary @@ -55,7 +63,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer /** * Converts the given data table to an array * - * @param Piwik_DataTable $table data table to convert + * @param DataTable $table data table to convert * @return array */ protected function getArrayFromDataTable($table) @@ -64,7 +72,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer return $table; } - $renderer = new Piwik_DataTable_Renderer_Php(); + $renderer = new Php(); $renderer->setRenderSubTables($this->isRenderSubtables()); $renderer->setSerialize(false); $renderer->setTable($table); @@ -75,7 +83,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer /** * Computes the output for the given data table * - * @param Piwik_DataTable $table + * @param DataTable $table * @param bool $returnOnlyDataTableXml * @param string $prefixLines * @return array|string @@ -84,7 +92,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer protected function renderTable($table, $returnOnlyDataTableXml = false, $prefixLines = '') { $array = $this->getArrayFromDataTable($table); - if ($table instanceof Piwik_DataTable_Array) { + if ($table instanceof DataTable\Map) { $out = $this->renderDataTableArray($table, $array, $prefixLines); if ($returnOnlyDataTableXml) { @@ -102,7 +110,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer $out = "<result />"; return $out; } - if ($table instanceof Piwik_DataTable_Simple) { + if ($table instanceof Simple) { if (is_array($array)) { $out = $this->renderDataTableSimple($array); } else { @@ -125,7 +133,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer return $out; } - if ($table instanceof Piwik_DataTable) { + if ($table instanceof DataTable) { $out = $this->renderDataTable($array); if ($returnOnlyDataTableXml) { return $out; @@ -191,16 +199,16 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer $result .= $prefixLines . $prefix . "\n"; $result .= $this->renderArray($value, $prefixLines . "\t"); $result .= $prefixLines . $suffix . "\n"; - } else if ($value instanceof Piwik_DataTable - || $value instanceof Piwik_DataTable_Array + } else if ($value instanceof DataTable + || $value instanceof DataTable\Map ) { if ($value->getRowsCount() == 0) { $result .= $prefixLines . $emptyNode . "\n"; } else { $result .= $prefixLines . $prefix . "\n"; - if ($value instanceof Piwik_DataTable_Array) { + if ($value instanceof DataTable\Map) { $result .= $this->renderDataTableArray($value, $this->getArrayFromDataTable($value), $prefixLines); - } else if ($value instanceof Piwik_DataTable_Simple) { + } else if ($value instanceof Simple) { $result .= $this->renderDataTableSimple($this->getArrayFromDataTable($value), $prefixLines); } else { $result .= $this->renderDataTable($this->getArrayFromDataTable($value), $prefixLines); @@ -225,7 +233,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer /** * Computes the output for the given data table array * - * @param Piwik_DataTable_Array $table + * @param DataTable\Map $table * @param array $array * @param string $prefixLines * @return string @@ -243,7 +251,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer foreach ($array as $valueAttribute => $value) { if (empty($value)) { $xml .= $prefixLines . "\t<result $nameDescriptionAttribute=\"$valueAttribute\" />\n"; - } elseif ($value instanceof Piwik_DataTable_Array) { + } elseif ($value instanceof DataTable\Map) { $out = $this->renderTable($value, true); //TODO somehow this code is not tested, cover this case $xml .= "\t<result $nameDescriptionAttribute=\"$valueAttribute\">\n$out</result>\n"; @@ -267,7 +275,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer // array // 'nb_uniq_visitors' => string '28' // 'nb_visits' => string '11' - if ($firstTable instanceof Piwik_DataTable_Simple) { + if ($firstTable instanceof Simple) { $xml = ''; $nameDescriptionAttribute = $table->getKeyName(); foreach ($array as $valueAttribute => $dataTableSimple) { @@ -309,7 +317,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer // 'label' => string 'piwik bis' // 'nb_uniq_visitors' => int 20 // 'nb_visits' => int 120 - if ($firstTable instanceof Piwik_DataTable) { + if ($firstTable instanceof DataTable) { $xml = ''; $nameDescriptionAttribute = $table->getKeyName(); foreach ($array as $keyName => $arrayForSingleDate) { @@ -325,14 +333,13 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer return $xml; } - if ($firstTable instanceof Piwik_DataTable_Array) { + if ($firstTable instanceof DataTable\Map) { $xml = ''; $tables = $table->getArray(); $nameDescriptionAttribute = $table->getKeyName(); foreach ($tables as $valueAttribute => $tableInArray) { $out = $this->renderTable($tableInArray, true, $prefixLines . "\t"); $xml .= $prefixLines . "\t<result $nameDescriptionAttribute=\"$valueAttribute\">\n" . $out . $prefixLines . "\t</result>\n"; - } return $xml; } diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php index 4b2b42a695..841ff5f5d6 100644 --- a/core/DataTable/Row.php +++ b/core/DataTable/Row.php @@ -8,7 +8,12 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable; + +use Exception; +use Piwik\DataTable\Manager; use Piwik\Metrics; +use Piwik\DataTable; /** * A DataTable is composed of rows. @@ -27,9 +32,9 @@ use Piwik\Metrics; * serialized and recorded in the DB millions of times. This object size is critical and must be under control. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Row +class Row { /** * List of columns that cannot be summed. An associative array for speed. @@ -45,7 +50,7 @@ class Piwik_DataTable_Row * This array contains the row information: * - array indexed by self::COLUMNS contains the columns, pairs of (column names, value) * - (optional) array indexed by self::METADATA contains the metadata, pairs of (metadata name, value) - * - (optional) integer indexed by self::DATATABLE_ASSOCIATED contains the ID of the Piwik_DataTable associated to this row. + * - (optional) integer indexed by self::DATATABLE_ASSOCIATED contains the ID of the DataTable associated to this row. * This ID can be used to read the DataTable from the DataTable_Manager. * * @var array @@ -61,22 +66,21 @@ class Piwik_DataTable_Row const METADATA = 1; const DATATABLE_ASSOCIATED = 3; - /** * Efficient load of the Row structure from a well structured php array * * @param array $row The row array has the structure * array( - * Piwik_DataTable_Row::COLUMNS => array( + * Row::COLUMNS => array( * 'label' => 'Piwik', * 'column1' => 42, * 'visits' => 657, * 'time_spent' => 155744, * ), - * Piwik_DataTable_Row::METADATA => array( + * Row::METADATA => array( * 'logo' => 'test.png' * ), - * Piwik_DataTable_Row::DATATABLE_ASSOCIATED => #Piwik_DataTable object + * Row::DATATABLE_ASSOCIATED => #DataTable object * (but in the row only the ID will be stored) * ) */ @@ -93,7 +97,7 @@ class Piwik_DataTable_Row $this->c[self::METADATA] = $row[self::METADATA]; } if (isset($row[self::DATATABLE_ASSOCIATED]) - && $row[self::DATATABLE_ASSOCIATED] instanceof Piwik_DataTable + && $row[self::DATATABLE_ASSOCIATED] instanceof DataTable ) { $this->setSubtable($row[self::DATATABLE_ASSOCIATED]); } @@ -134,7 +138,7 @@ class Piwik_DataTable_Row public function __destruct() { if ($this->isSubtableLoaded()) { - Piwik_DataTable_Manager::getInstance()->deleteTable($this->getIdSubDataTable()); + Manager::getInstance()->deleteTable($this->getIdSubDataTable()); $this->c[self::DATATABLE_ASSOCIATED] = null; } } @@ -257,12 +261,12 @@ class Piwik_DataTable_Row /** * Returns the associated subtable, if one exists. * - * @return Piwik_DataTable|false + * @return DataTable|false */ public function getSubtable() { if ($this->isSubtableLoaded()) { - return Piwik_DataTable_Manager::getInstance()->getTable($this->getIdSubDataTable()); + return Manager::getInstance()->getTable($this->getIdSubDataTable()); } return false; } @@ -272,31 +276,30 @@ class Piwik_DataTable_Row * If this row doesn't have a SubDataTable yet, we create a new one. * Then we add the values of the given DataTable to this row's DataTable. * - * @param Piwik_DataTable $subTable Table to sum to this row's subDatatable + * @param DataTable $subTable Table to sum to this row's subDatatable * @see Piwik_DataTable::addDataTable() for the algorithm used for the sum */ - public function sumSubtable(Piwik_DataTable $subTable) + public function sumSubtable(DataTable $subTable) { if ($this->isSubtableLoaded()) { $thisSubTable = $this->getSubtable(); } else { - $thisSubTable = new Piwik_DataTable(); + $thisSubTable = new DataTable(); $this->addSubtable($thisSubTable); } $thisSubTable->setColumnAggregationOperations($subTable->getColumnAggregationOperations()); $thisSubTable->addDataTable($subTable); } - /** * Set a DataTable to be associated to this row. * If the row already has a DataTable associated to it, throws an Exception. * - * @param Piwik_DataTable $subTable DataTable to associate to this row - * @return Piwik_DataTable Returns $subTable. + * @param DataTable $subTable DataTable to associate to this row + * @return DataTable Returns $subTable. * @throws Exception */ - public function addSubtable(Piwik_DataTable $subTable) + public function addSubtable(DataTable $subTable) { if (!is_null($this->c[self::DATATABLE_ASSOCIATED])) { throw new Exception("Adding a subtable to the row, but it already has a subtable associated."); @@ -308,10 +311,10 @@ class Piwik_DataTable_Row * Set a DataTable to this row. If there is already * a DataTable associated, it is simply overwritten. * - * @param Piwik_DataTable $subTable DataTable to associate to this row - * @return Piwik_DataTable Returns $subTable. + * @param DataTable $subTable DataTable to associate to this row + * @return DataTable Returns $subTable. */ - public function setSubtable(Piwik_DataTable $subTable) + public function setSubtable(DataTable $subTable) { // Hacking -1 to ensure value is negative, so we know the table was loaded // @see isSubtableLoaded() @@ -456,22 +459,22 @@ class Piwik_DataTable_Row * If the column already exists in $this then we have * this.columns[idThisCol] += $row.columns[idThisCol] * - * @param Piwik_DataTable_Row $rowToSum - * @param bool $enableCopyMetadata - * @param array $aggregationOperations for columns that should not be summed, determine which + * @param \Piwik\DataTable\Row $rowToSum + * @param bool $enableCopyMetadata + * @param array $aggregationOperations for columns that should not be summed, determine which * aggregation should be used (min, max). * format: column name => function name */ - public function sumRow(Piwik_DataTable_Row $rowToSum, $enableCopyMetadata = true, $aggregationOperations = null) + public function sumRow(Row $rowToSum, $enableCopyMetadata = true, $aggregationOperations = null) { foreach ($rowToSum->getColumns() as $columnToSumName => $columnToSumValue) { if (!isset(self::$unsummableColumns[$columnToSumName])) // make sure we can add this column { $thisColumnValue = $this->getColumn($columnToSumName); - $operation = (is_array($aggregationOperations) && isset($aggregationOperations[$columnToSumName]) ? + $operation = (is_array($aggregationOperations) && isset($aggregationOperations[$columnToSumName]) ? strtolower($aggregationOperations[$columnToSumName]) : 'sum'); - + // max_actions is a core metric that is generated in ArchiveProcess_Day. Therefore, it can be // present in any data table and is not part of the $aggregationOperations mechanism. if ($columnToSumName == Metrics::INDEX_MAX_ACTIONS) { @@ -536,13 +539,13 @@ class Piwik_DataTable_Row public function isSummaryRow() { - return $this->getColumn('label') === Piwik_DataTable::LABEL_SUMMARY_ROW; + return $this->getColumn('label') === DataTable::LABEL_SUMMARY_ROW; } /** * Helper function: sums 2 values * - * @param number|bool $thisColumnValue + * @param number|bool $thisColumnValue * @param number|array $columnToSumValue * * @throws Exception @@ -577,7 +580,7 @@ class Piwik_DataTable_Row } else if ($columnToSumValue === false) { return $thisColumnValue; } else { - throw new Exception("Trying to add two strings values in DataTable_Row::sumRowArray: " + throw new Exception("Trying to add two strings values in DataTable\Row::sumRowArray: " . "'$thisColumnValue' + '$columnToSumValue'"); } } @@ -616,11 +619,11 @@ class Piwik_DataTable_Row * - if they have exactly the same columns / metadata * - if they have a subDataTable associated, then we check that both of them are the same. * - * @param Piwik_DataTable_Row $row1 first to compare - * @param Piwik_DataTable_Row $row2 second to compare + * @param \Piwik\DataTable\Row $row1 first to compare + * @param \Piwik\DataTable\Row $row2 second to compare * @return bool */ - static public function isEqual(Piwik_DataTable_Row $row1, Piwik_DataTable_Row $row2) + static public function isEqual(Row $row1, Row $row2) { //same columns $cols1 = $row1->getColumns(); @@ -651,7 +654,7 @@ class Piwik_DataTable_Row ) { $subtable1 = $row1->getSubtable(); $subtable2 = $row2->getSubtable(); - if (!Piwik_DataTable::isEqual($subtable1, $subtable2)) { + if (!DataTable::isEqual($subtable1, $subtable2)) { return false; } } diff --git a/core/DataTable/Row/DataTableSummary.php b/core/DataTable/Row/DataTableSummaryRow.php index c3acafdc66..f4203d9489 100644 --- a/core/DataTable/Row/DataTableSummary.php +++ b/core/DataTable/Row/DataTableSummaryRow.php @@ -8,6 +8,11 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable\Row; + +use Piwik\DataTable; +use Piwik\DataTable\Manager; +use Piwik\DataTable\Row; /** * This class creates a row from a given DataTable. @@ -15,15 +20,15 @@ * - for each numeric column, the returned "summary" column is the sum of all the subRows * - for every other column, it is ignored and will not be in the "summary row" * - * @see Piwik_DataTable_Row::sumRow() for more information on the algorithm + * @see \DataTable\Row::sumRow() for more information on the algorithm * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Row_DataTableSummary extends Piwik_DataTable_Row +class DataTableSummaryRow extends Row { /** - * @param Piwik_DataTable $subTable + * @param DataTable $subTable */ function __construct($subTable = null) { @@ -41,7 +46,7 @@ class Piwik_DataTable_Row_DataTableSummary extends Piwik_DataTable_Row { $id = $this->getIdSubDataTable(); if ($id !== null) { - $subtable = Piwik_DataTable_Manager::getInstance()->getTable($id); + $subtable = Manager::getInstance()->getTable($id); $this->sumTable($subtable); } } @@ -49,7 +54,7 @@ class Piwik_DataTable_Row_DataTableSummary extends Piwik_DataTable_Row /** * Sums a tables row with this one. * - * @param Piwik_DataTable $table + * @param DataTable $table */ private function sumTable($table) { diff --git a/core/DataTable/Simple.php b/core/DataTable/Simple.php index 7189fb0b2e..d7f9c430ad 100644 --- a/core/DataTable/Simple.php +++ b/core/DataTable/Simple.php @@ -8,21 +8,22 @@ * @category Piwik * @package Piwik */ +namespace Piwik\DataTable; /** - * The DataTable_Simple is used to provide an easy way to create simple DataGrid. - * A DataTable_Simple actually is a DataTable with 2 columns: 'label' and 'value'. + * The DataTable\Simple is used to provide an easy way to create simple DataGrid. + * A DataTable\Simple is a DataTable with 2 columns: 'label' and 'value'. * - * It is usually best to return a DataTable_Simple instead of + * It is usually best to return a DataTable\Simple instead of * a PHP array (or other custom data structure) in API methods: * - the generic filters can be applied automatically (offset, limit, pattern search, sort, etc.) * - the renderer can be applied (XML, PHP, HTML, etc.) * So you don't have to write specific renderer for your data, it is already available in all the formats supported natively by Piwik. * * @package Piwik - * @subpackage Piwik_DataTable + * @subpackage DataTable */ -class Piwik_DataTable_Simple extends Piwik_DataTable +class Simple extends DataTable { /** * Loads (append) in the DataTable the array information |