From dbd2e78843e25b65a84fe154b7e265f08286fd22 Mon Sep 17 00:00:00 2001
From: mattpiwik <matthieu.aubry@gmail.com>
Date: Wed, 31 Mar 2010 13:53:29 +0000
Subject: [PATCH] Fixes #1227 the archive script now loops over all websites
 and triggers a different request for each archive, helping out with the
 archive memory exhausted issue (refs #766)

git-svn-id: http://dev.piwik.org/svn/trunk@2025 59fd770c-687e-43c8-a1e3-f5a4ff64c105
---
 core/API/ResponseBuilder.php    |  4 ++++
 core/DataTable/Renderer/Csv.php |  5 +++++
 misc/cron/archive.sh            | 25 +++++++++++++++++++++----
 3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/core/API/ResponseBuilder.php b/core/API/ResponseBuilder.php
index e629e44d1d..4e586f19d7 100644
--- a/core/API/ResponseBuilder.php
+++ b/core/API/ResponseBuilder.php
@@ -202,6 +202,10 @@ class Piwik_API_ResponseBuilder
 		{
 			$renderer->setTableId($this->request['method']);
 		}
+		else if($format == 'csv')
+		{
+			$renderer->setConvertToUnicode( Piwik_Common::getRequestVar('convertToUnicode', true, 'int') );
+		}
 		
 		return $renderer->render();
 	}
diff --git a/core/DataTable/Renderer/Csv.php b/core/DataTable/Renderer/Csv.php
index e756b518e6..8cc72d4b08 100644
--- a/core/DataTable/Renderer/Csv.php
+++ b/core/DataTable/Renderer/Csv.php
@@ -61,6 +61,11 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer
 	 */
 	public $exportIdSubtable = true;
 	
+	function setConvertToUnicode($bool)
+	{
+		$this->convertToUnicode = $bool;
+	}
+	
 	function render()
 	{
 		return $this->output($this->renderTable($this->table));
diff --git a/misc/cron/archive.sh b/misc/cron/archive.sh
index bfd43fd3e4..2871bf4c42 100644
--- a/misc/cron/archive.sh
+++ b/misc/cron/archive.sh
@@ -48,8 +48,25 @@ PIWIK_SUPERUSER_MD5_PASSWORD=`sed '/^\[superuser\]/,$!d;/^password[ \t]*=[ \t]*"
 CMD_TOKEN_AUTH="$PHP_BIN $PIWIK_PATH -- module=API&method=UsersManager.getTokenAuth&userLogin=$PIWIK_SUPERUSER&md5Password=$PIWIK_SUPERUSER_MD5_PASSWORD&format=php&serialize=0"
 TOKEN_AUTH=`$CMD_TOKEN_AUTH`
 
-for period in day week year; do
-  CMD="$PHP_BIN $PIWIK_PATH -- module=API&method=VisitsSummary.getVisits&idSite=all&period=$period&date=last52&format=xml&token_auth=$TOKEN_AUTH";
-  $CMD
-  echo ""
+CMD_GET_ID_SITES="$PHP_BIN $PIWIK_PATH -- module=API&method=SitesManager.getAllSitesId&token_auth=$TOKEN_AUTH&format=csv&convertToUnicode=0"
+ID_SITES=`$CMD_GET_ID_SITES`
+echo "Starting Piwik archiving..."
+echo ""
+for idsite in $ID_SITES; do
+  TEST_IS_NUMERIC=`echo $idsite | egrep '^[0-9]+$'`
+  if [ "$TEST_IS_NUMERIC" ]
+  then
+    for period in day week year; do
+      echo ""
+      echo "Archiving period = $period for idsite = $idsite..."
+      CMD="$PHP_BIN $PIWIK_PATH -- module=API&method=VisitsSummary.getVisits&idSite=$idsite&period=$period&date=last52&format=xml&token_auth=$TOKEN_AUTH";
+      $CMD
+    done
+
+    echo ""
+    echo "Archiving for idsite = $idsite done!"
+  fi
 done
+
+echo "Piwik archiving finished."
+
-- 
GitLab