From 7853d2d1d04b2fd59630d116055bf439d843076c Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Sun, 14 Apr 2013 21:52:13 +1200
Subject: [PATCH] fixes #3892 Fixing + testing filter_truncate on getPlugin

---
 core/DataTable/Row.php                                     | 3 +++
 plugins/UserSettings/API.php                               | 5 +++++
 plugins/UserSettings/functions.php                         | 3 +++
 .../Integration/OneVisitor_LongUrlsTruncatedTest.php       | 7 ++++++-
 4 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php
index ff5b5de25b..ed98c602e8 100644
--- a/core/DataTable/Row.php
+++ b/core/DataTable/Row.php
@@ -492,6 +492,9 @@ class Piwik_DataTable_Row
     private function getColumnValuesMerged($operation, $thisColumnValue, $columnToSumValue)
     {
         switch ($operation) {
+            case 'skip':
+                $newValue = null;
+                break;
             case 'max':
                 $newValue = max($thisColumnValue, $columnToSumValue);
                 break;
diff --git a/plugins/UserSettings/API.php b/plugins/UserSettings/API.php
index 49a6c4d883..e438b96b2f 100644
--- a/plugins/UserSettings/API.php
+++ b/plugins/UserSettings/API.php
@@ -215,6 +215,11 @@ class Piwik_UserSettings_API
 
             $visitsSum = $visitsSumTotal - $ieVisits;
 
+
+            // When Truncate filter is applied, it will call AddSummaryRow which tries to sum all rows.
+            // We tell the object to skip the column nb_visits_percentage when aggregating (since it's not correct to sum % values)
+            $table->setColumnAggregationOperation('nb_visits_percentage', 'skip');
+
             // The filter must be applied now so that the new column can
             // be sorted by the generic filters (applied right after this loop exits)
             $table->filter('ColumnCallbackAddColumnPercentage', array('nb_visits_percentage', Piwik_Archive::INDEX_NB_VISITS, $visitsSum, 1));
diff --git a/plugins/UserSettings/functions.php b/plugins/UserSettings/functions.php
index 6e5db05428..e1c5579608 100644
--- a/plugins/UserSettings/functions.php
+++ b/plugins/UserSettings/functions.php
@@ -16,6 +16,9 @@ require_once PIWIK_INCLUDE_PATH . '/libs/UserAgentParser/UserAgentParser.php';
 
 function Piwik_getPluginsLogo($oldLabel)
 {
+    if($oldLabel == Piwik_Translate('General_Others')) {
+        return false;
+    }
     return 'plugins/UserSettings/images/plugins/' . $oldLabel . '.gif';
 }
 
diff --git a/tests/PHPUnit/Integration/OneVisitor_LongUrlsTruncatedTest.php b/tests/PHPUnit/Integration/OneVisitor_LongUrlsTruncatedTest.php
index 4d18196094..02156d7a54 100644
--- a/tests/PHPUnit/Integration/OneVisitor_LongUrlsTruncatedTest.php
+++ b/tests/PHPUnit/Integration/OneVisitor_LongUrlsTruncatedTest.php
@@ -24,7 +24,12 @@ class Test_Piwik_Integration_OneVisitor_LongUrlsTruncated extends IntegrationTes
 
     public function getApiForTesting()
     {
-        $apiToCall = array('Referers.getKeywords', 'Actions.getPageUrls');
+        $apiToCall = array(
+            'Referers.getKeywords',
+            'Actions.getPageUrls',
+
+            // Specifically testing getPlugin filter_truncate works
+            'UserSettings.getPlugin');
 
         return array(
             array($apiToCall, array('idSite'                 => self::$fixture->idSite,
-- 
GitLab