diff options
Diffstat (limited to 'core/DataTable')
-rw-r--r-- | core/DataTable/DataTableInterface.php | 1 | ||||
-rw-r--r-- | core/DataTable/Map.php | 14 | ||||
-rw-r--r-- | core/DataTable/Renderer/Csv.php | 2 | ||||
-rw-r--r-- | core/DataTable/Renderer/Xml.php | 4 | ||||
-rw-r--r-- | core/DataTable/Row.php | 7 |
5 files changed, 22 insertions, 6 deletions
diff --git a/core/DataTable/DataTableInterface.php b/core/DataTable/DataTableInterface.php index 84440dfa24..7009be7285 100644 --- a/core/DataTable/DataTableInterface.php +++ b/core/DataTable/DataTableInterface.php @@ -27,4 +27,5 @@ interface DataTableInterface public function deleteColumn($name); public function getColumn($name); public function getColumns(); + public function deleteRowsMetadata($name, $deleteRecursiveInSubtables = false); } diff --git a/core/DataTable/Map.php b/core/DataTable/Map.php index 9169a36128..351cb4d058 100644 --- a/core/DataTable/Map.php +++ b/core/DataTable/Map.php @@ -11,7 +11,6 @@ namespace Piwik\DataTable; use Closure; use Piwik\Common; use Piwik\DataTable; -use Piwik\DataTable\Renderer\Console; use Piwik\DataTable\Renderer\Html; /** @@ -514,6 +513,19 @@ class Map implements DataTableInterface } /** + * Delete row metadata by name in every row. + * + * @param $name + * @param bool $deleteRecursiveInSubtables + */ + public function deleteRowsMetadata($name, $deleteRecursiveInSubtables = false) + { + foreach ($this->getDataTables() as $table) { + $table->deleteRowsMetadata($name, $deleteRecursiveInSubtables); + } + } + + /** * See {@link DataTable::getColumns()}. * * @return array diff --git a/core/DataTable/Renderer/Csv.php b/core/DataTable/Renderer/Csv.php index bf864238e5..b67150d2fd 100644 --- a/core/DataTable/Renderer/Csv.php +++ b/core/DataTable/Renderer/Csv.php @@ -489,7 +489,7 @@ class Csv extends Renderer protected function removeFirstPercentSign($value) { $needle = '%'; - $posPercent = strpos($value, $needle); + $posPercent = strpos($value ?? '', $needle); if ($posPercent !== false) { return substr_replace($value, '', $posPercent, strlen($needle)); } diff --git a/core/DataTable/Renderer/Xml.php b/core/DataTable/Renderer/Xml.php index 1fd09f938e..daac728652 100644 --- a/core/DataTable/Renderer/Xml.php +++ b/core/DataTable/Renderer/Xml.php @@ -179,7 +179,7 @@ class Xml extends Renderer } else { $xmlValue = self::formatValueXml($value); - if (strlen($xmlValue) != 0) { + if (strlen(strval($xmlValue)) !== 0) { $result .= $prefixLines . $prefix . $xmlValue . $suffix . "\n"; } else { $result .= $prefixLines . $emptyNode . "\n"; @@ -381,7 +381,7 @@ class Xml extends Renderer list($tagStart, $tagEnd) = $this->getTagStartAndEndFor($name, $columnsHaveInvalidChars); - if (strlen($value) == 0) { + if (strlen((string) $value) == 0) { $out .= $prefixLine . "\t\t<$tagStart />\n"; } else { $out .= $prefixLine . "\t\t<$tagStart>" . $value . "</$tagEnd>\n"; diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php index bfa1a49667..878c1a61cf 100644 --- a/core/DataTable/Row.php +++ b/core/DataTable/Row.php @@ -12,7 +12,6 @@ use Exception; use Piwik\Container\StaticContainer; use Piwik\DataTable; use Piwik\Date; -use Piwik\Log; use Piwik\Metrics; use Piwik\Period; use Psr\Log\LoggerInterface; @@ -36,7 +35,8 @@ class Row extends \ArrayObject */ private static $unsummableColumns = array( 'label' => true, - 'full_url' => true // column used w/ old Piwik versions, + 'full_url' => true, // column used w/ old Piwik versions, + 'ts_archived' => true // date column used in metadata for proportional tooltips ); // @see sumRow - implementation detail @@ -677,6 +677,9 @@ class Row extends \ArrayObject if (is_array($columnToSumValue)) { $newValue = $thisColumnValue; foreach ($columnToSumValue as $arrayIndex => $arrayValue) { + if (!is_numeric($arrayIndex) && !$this->isSummableColumn($arrayIndex)) { + continue; + } if (!isset($newValue[$arrayIndex])) { $newValue[$arrayIndex] = false; } |