From c791c599a993246fd402d97002176d2313753e2f Mon Sep 17 00:00:00 2001
From: mattpiwik <matthieu.aubry@gmail.com>
Date: Tue, 15 Jun 2010 10:04:53 +0000
Subject: [PATCH] git-svn-id: http://dev.piwik.org/svn/trunk@2305
 59fd770c-687e-43c8-a1e3-f5a4ff64c105

---
 config/global.ini.php                 |  4 ++--
 plugins/Provider/Provider.php         |  8 ++++----
 plugins/UserSettings/API.php          |  1 +
 plugins/UserSettings/UserSettings.php | 13 ++++++++-----
 plugins/UserSettings/functions.php    |  8 ++++++++
 5 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/config/global.ini.php b/config/global.ini.php
index 0a45d5f9a6..f1dbd2f782 100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -135,8 +135,8 @@ datatable_archiving_maximum_rows_actions = 500
 ; maximum number of rows for pages in categories (sub pages, when clicking on the + for a page category)
 datatable_archiving_maximum_rows_subtable_actions = 100
 
-; maximum number of rows for the provider table
-datatable_archiving_maximum_rows_providers = 500
+; maximum number of rows for other tables (Providers, User settings configurations)
+datatable_archiving_maximum_rows_standard = 500
 
 ; by default, Piwik uses self-hosted AJAX libraries.
 ; If set to 1, Piwik uses a Content Distribution Network
diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php
index 6e4c6dee50..aec31c9f51 100644
--- a/plugins/Provider/Provider.php
+++ b/plugins/Provider/Provider.php
@@ -85,10 +85,10 @@ class Piwik_Provider extends Piwik_Plugin
 
 	function archivePeriod( $notification )
 	{
-		$maximumRowsInDataTableLevelZero = Zend_Registry::get('config')->General->datatable_archiving_maximum_rows_providers;
+		$maximumRowsInDataTable = Zend_Registry::get('config')->General->datatable_archiving_maximum_rows_standard;
 		$archiveProcessing = $notification->getNotificationObject();
 		$dataTableToSum = array( 'Provider_hostnameExt' );
-		$archiveProcessing->archiveDataTable($dataTableToSum, null, $maximumRowsInDataTableLevelZero);
+		$archiveProcessing->archiveDataTable($dataTableToSum, null, $maximumRowsInDataTable);
 	}
 
 	/**
@@ -103,8 +103,8 @@ class Piwik_Provider extends Piwik_Plugin
 		$interestByProvider = $archiveProcessing->getArrayInterestForLabel($labelSQL);
 		$tableProvider = $archiveProcessing->getDataTableFromArray($interestByProvider);
 		$columnToSortByBeforeTruncation = Piwik_Archive::INDEX_NB_VISITS;
-		$maximumRowsInDataTableLevelZero = Zend_Registry::get('config')->General->datatable_archiving_maximum_rows_providers;
-		$archiveProcessing->insertBlobRecord($recordName, $tableProvider->getSerialized($maximumRowsInDataTableLevelZero, null, $columnToSortByBeforeTruncation));
+		$maximumRowsInDataTable = Zend_Registry::get('config')->General->datatable_archiving_maximum_rows_standard;
+		$archiveProcessing->insertBlobRecord($recordName, $tableProvider->getSerialized($maximumRowsInDataTable, null, $columnToSortByBeforeTruncation));
 		destroy($tableProvider);
 	}
 	
diff --git a/plugins/UserSettings/API.php b/plugins/UserSettings/API.php
index 09f146fe1f..aab8f3416a 100644
--- a/plugins/UserSettings/API.php
+++ b/plugins/UserSettings/API.php
@@ -39,6 +39,7 @@ class Piwik_UserSettings_API
 		$dataTable = $archive->getDataTable($name);
 		$dataTable->filter('Sort', array(Piwik_Archive::INDEX_NB_VISITS));
 		$dataTable->queueFilter('ReplaceColumnNames');
+		$dataTable->queueFilter('ReplaceSummaryRowLabel');
 		return $dataTable;
 	}
 
diff --git a/plugins/UserSettings/UserSettings.php b/plugins/UserSettings/UserSettings.php
index dc1db413b5..bb0c10dddf 100644
--- a/plugins/UserSettings/UserSettings.php
+++ b/plugins/UserSettings/UserSettings.php
@@ -66,6 +66,8 @@ class Piwik_UserSettings extends Piwik_Plugin
 	function archiveDay( $notification )
 	{
 		require_once PIWIK_INCLUDE_PATH . '/plugins/UserSettings/functions.php';
+		$maximumRowsInDataTable = Zend_Registry::get('config')->General->datatable_archiving_maximum_rows_standard;
+		$columnToSortByBeforeTruncation = Piwik_Archive::INDEX_NB_VISITS;
 		
 		$archiveProcessing = $notification->getNotificationObject();
 		$this->archiveProcessing = $archiveProcessing;
@@ -74,21 +76,21 @@ class Piwik_UserSettings extends Piwik_Plugin
 		$labelSQL = "CONCAT(config_os, ';', config_browser_name, ';', config_resolution)";
 		$interestByConfiguration = $archiveProcessing->getArrayInterestForLabel($labelSQL);
 		$tableConfiguration = $archiveProcessing->getDataTableFromArray($interestByConfiguration);
-		$archiveProcessing->insertBlobRecord($recordName, $tableConfiguration->getSerialized());
+		$archiveProcessing->insertBlobRecord($recordName, $tableConfiguration->getSerialized($maximumRowsInDataTable, null, $columnToSortByBeforeTruncation));
 		destroy($tableConfiguration);
 		
 		$recordName = 'UserSettings_os';
 		$labelSQL = "config_os";
 		$interestByOs = $archiveProcessing->getArrayInterestForLabel($labelSQL);
 		$tableOs = $archiveProcessing->getDataTableFromArray($interestByOs);
-		$archiveProcessing->insertBlobRecord($recordName, $tableOs->getSerialized());
+		$archiveProcessing->insertBlobRecord($recordName, $tableOs->getSerialized($maximumRowsInDataTable, null, $columnToSortByBeforeTruncation));
 		destroy($tableOs);
 		
 		$recordName = 'UserSettings_browser';
 		$labelSQL = "CONCAT(config_browser_name, ';', config_browser_version)";
 		$interestByBrowser = $archiveProcessing->getArrayInterestForLabel($labelSQL);
 		$tableBrowser = $archiveProcessing->getDataTableFromArray($interestByBrowser);
-		$archiveProcessing->insertBlobRecord($recordName, $tableBrowser->getSerialized());
+		$archiveProcessing->insertBlobRecord($recordName, $tableBrowser->getSerialized($maximumRowsInDataTable, null, $columnToSortByBeforeTruncation));
 		
 		$recordName = 'UserSettings_browserType';
 		$tableBrowserType = $this->getTableBrowserByType($tableBrowser);
@@ -101,7 +103,7 @@ class Piwik_UserSettings extends Piwik_Plugin
 		$interestByResolution = $archiveProcessing->getArrayInterestForLabel($labelSQL);
 		$tableResolution = $archiveProcessing->getDataTableFromArray($interestByResolution);
 		$tableResolution->filter('ColumnCallbackDeleteRow', array('label', 'Piwik_UserSettings_keepStrlenGreater'));
-		$archiveProcessing->insertBlobRecord($recordName, $tableResolution->getSerialized());
+		$archiveProcessing->insertBlobRecord($recordName, $tableResolution->getSerialized($maximumRowsInDataTable, null, $columnToSortByBeforeTruncation));
 		
 		$recordName = 'UserSettings_wideScreen';
 		$tableWideScreen = $this->getTableWideScreen($tableResolution);
@@ -118,6 +120,7 @@ class Piwik_UserSettings extends Piwik_Plugin
 	function archivePeriod( $notification )
 	{
 		$archiveProcessing = $notification->getNotificationObject();
+		$maximumRowsInDataTable = Zend_Registry::get('config')->General->datatable_archiving_maximum_rows_standard;
 		
 		$dataTableToSum = array( 
 				'UserSettings_configuration',
@@ -129,7 +132,7 @@ class Piwik_UserSettings extends Piwik_Plugin
 				'UserSettings_plugin',
 		);
 		
-		$archiveProcessing->archiveDataTable($dataTableToSum);
+		$archiveProcessing->archiveDataTable($dataTableToSum, null, $maximumRowsInDataTable);
 	}
 	
 	protected function getTableWideScreen($tableResolution)
diff --git a/plugins/UserSettings/functions.php b/plugins/UserSettings/functions.php
index e16ed60867..c2aebe7b64 100644
--- a/plugins/UserSettings/functions.php
+++ b/plugins/UserSettings/functions.php
@@ -126,11 +126,19 @@ function Piwik_getBrowserVersion($str)
 function Piwik_getBrowsersLogo($label)
 {
 	$id = Piwik_getBrowserId($label);
+	// For aggregated row 'Others'
+	if(empty($id)) {
+		$id = 'UNK';
+	}
 	return  'plugins/UserSettings/images/browsers/'. $id . '.gif';
 }
 
 function Piwik_getOSLogo($label)
 {
+	// For aggregated row 'Others'
+	if(empty($label)) {
+		$label = 'UNK';
+	}
 	$path = 'plugins/UserSettings/images/os/'. $label . '.gif';
 	return $path;
 }
-- 
GitLab