From 94e9bc0b97f85b2c6f9c56b7b082319b34e8dd0e Mon Sep 17 00:00:00 2001
From: mattpiwik <matthieu.aubry@gmail.com>
Date: Tue, 28 Oct 2008 11:42:44 +0000
Subject: [PATCH] - renaming all instances of LogStats to Tracker for clarity -
 improving error message to be prettier - adding footer in all admin pages for
 consistency

git-svn-id: http://dev.piwik.org/svn/trunk@649 59fd770c-687e-43c8-a1e3-f5a4ff64c105
---
 TODO                                          | 10 ----
 config/global.ini.php                         |  8 +--
 core/Cookie.php                               |  2 +-
 core/FrontController.php                      |  2 +-
 core/Plugin.php                               |  2 +-
 core/PluginsManager.php                       | 36 ++++++------
 core/{LogStats.php => Tracker.php}            | 44 +++++++-------
 core/{LogStats => Tracker}/Action.php         | 22 +++----
 core/{LogStats => Tracker}/Config.php         | 10 ++--
 core/{LogStats => Tracker}/Db.php             | 12 ++--
 core/{LogStats => Tracker}/Generator.php      | 46 +++++++--------
 .../Generator/Tracker.php}                    | 18 +++---
 .../{LogStats => Tracker}/Generator/Visit.php | 10 ++--
 core/{LogStats => Tracker}/Visit.php          | 58 +++++++++----------
 core/{LogStats => Tracker}/javascriptTag.tpl  |  0
 core/ViewDataTable.php                        |  4 +-
 core/testMinimumPhpVersion.php                | 16 +++--
 misc/generateVisits.php                       | 23 ++++----
 piwik.php                                     | 14 ++---
 plugins/Actions/Actions.php                   | 14 ++---
 plugins/CoreAdminHome/templates/footer.tpl    |  2 +
 plugins/CoreAdminHome/templates/index.tpl     |  2 +
 plugins/CoreHome/templates/piwik_tag.tpl      |  2 +-
 plugins/CorePluginsAdmin/templates/manage.tpl |  3 +-
 plugins/DBStats/templates/DBStats.tpl         |  4 +-
 plugins/Provider/Provider.php                 |  4 +-
 .../SitesManager/templates/SitesManager.tpl   |  1 +
 .../UsersManager/templates/UsersManager.tpl   |  2 +
 ...gStats_Db.test.php => Tracker_Db.test.php} |  6 +-
 29 files changed, 193 insertions(+), 184 deletions(-)
 rename core/{LogStats.php => Tracker.php} (85%)
 rename core/{LogStats => Tracker}/Action.php (90%)
 rename core/{LogStats => Tracker}/Config.php (90%)
 rename core/{LogStats => Tracker}/Db.php (96%)
 rename core/{LogStats => Tracker}/Generator.php (92%)
 rename core/{LogStats/Generator/LogStats.php => Tracker/Generator/Tracker.php} (62%)
 rename core/{LogStats => Tracker}/Generator/Visit.php (79%)
 rename core/{LogStats => Tracker}/Visit.php (91%)
 rename core/{LogStats => Tracker}/javascriptTag.tpl (100%)
 create mode 100644 plugins/CoreAdminHome/templates/footer.tpl
 rename tests/core/{LogStats_Db.test.php => Tracker_Db.test.php} (67%)

diff --git a/TODO b/TODO
index 61e82cc2a5..403e284251 100644
--- a/TODO
+++ b/TODO
@@ -1,18 +1,8 @@
 Bugs
-- add width+height to sparklines
 - google chrome/safari bug with calendar + language dropdown
 http://4.bp.blogspot.com/_B0Ay-jl4bcM/SLRqaqKz7jI/AAAAAAAAD-U/GfMiqCImtD8/s1600-h/piwik.png
-- site selector is hidden first, then shown
 - WRONG::: 147 sites Internet différents (utilisant 147 différentes adresses)
-- Undefined text for "loading data..." on piwik.org demo!
-- we should call login->logout in installation->welcome instead of duplicating code
-- fix images in sub tables when JS loaded
-- wrong display seconds 42 min 2563 s total time spent by the visitors
-- check that when online archiving disabled, take the last valid archiving
-- ACTIONS limit seem not right, seem limited to 50 instead of 200 for root
-- editing site web with single quote bugs in siteAdmin???
 - something is wrong in JS calendar when year selected
-- API request shouldnt be SO DataTable aware (fixed with ResponseBuilder??)
 
 To clean
 - rename LogStats in Tracker
diff --git a/config/global.ini.php b/config/global.ini.php
index 8c3fd49dda..16f6db10e8 100755
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -16,7 +16,7 @@ adapter			= PDO_MYSQL ; PDO_MYSQL or MYSQLI
 host 			= localhost
 username 		= root
 password 		= 
-dbname			= piwik_tests11
+dbname			= piwik_tests
 tables_prefix	= piwiktests_
 port			= 3306
 adapter 		= PDO_MYSQL
@@ -59,7 +59,7 @@ PluginsInstalled[] = UsersManager
 PluginsInstalled[] = SitesManager
 PluginsInstalled[] = Installation
 
-[Plugins_LogStats]
+[Plugins_Tracker]
 
 
 [Debug]
@@ -75,7 +75,7 @@ enable_sql_profiler = false
 ; Time in seconds after which an archive will be computed again. 
 ; This setting is used only for today's statistics.
 ; Defaults to 10 seconds so that by default, Piwik provides real time reporting.
-time_before_archive_considered_outdated = 10
+time_before_archive_considered_outdated = 3600
 
 ; When loading piwik interface, we redirect the user to 'yesterday' statistics by default
 ; Possible values: yesterday, today, or any YYYY-MM-DD
@@ -107,7 +107,7 @@ minimum_php_version = 5.1.3
 
 minimum_memory_limit = 128
 
-[LogStats]
+[Tracker]
 ; set to 0 if you want to stop tracking the visitors. Useful if you need to stop all the connections on the DB.
 record_statistics			= 1
 
diff --git a/core/Cookie.php b/core/Cookie.php
index 7bcbe7b92c..192ebc3b3b 100644
--- a/core/Cookie.php
+++ b/core/Cookie.php
@@ -264,7 +264,7 @@ class Piwik_Cookie
 }
 
 
-//$c = new Piwik_Cookie( 'piwik_logstats', 86400);
+//$c = new Piwik_Cookie( 'piwik_Tracker', 86400);
 //echo $c;
 //$c->set(1,1);
 //$c->set('test',1);
diff --git a/core/FrontController.php b/core/FrontController.php
index 8d16f31980..6ce8922a31 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -283,7 +283,7 @@ class Piwik_FrontController
 
 			Piwik::raiseMemoryLimitIfNecessary();
 		} catch(Exception $e) {
-			Piwik_ExitWithMessage($e->getMessage());
+			Piwik_ExitWithMessage($e->getMessage(), $e->getTraceAsString());
 		}
 	}
 	
diff --git a/core/Plugin.php b/core/Plugin.php
index 9d49a19a96..dfd7ff3c88 100644
--- a/core/Plugin.php
+++ b/core/Plugin.php
@@ -26,7 +26,7 @@ abstract class Piwik_Plugin
 	 * 	'author_homepage' => string  // author homepage (or email "mailto:youremail@example.org")
 	 * 	'homepage' => string         // plugin homepage
 	 * 	'version' => string          // plugin version number
-	 * 	'LogStatsPlugin' => bool     // should we load this plugin during the stats logging process?
+	 * 	'TrackerPlugin' => bool     // should we load this plugin during the stats logging process?
 	 */
 	abstract function getInformation();
 
diff --git a/core/PluginsManager.php b/core/PluginsManager.php
index 9d0d422010..c8ae201916 100644
--- a/core/PluginsManager.php
+++ b/core/PluginsManager.php
@@ -88,15 +88,15 @@ class Piwik_PluginsManager
 		}
 		
 		try{
-			$pluginsLogStats = Zend_Registry::get('config')->Plugins_LogStats->Plugins_LogStats;
-			if(!is_null($pluginsLogStats))
+			$pluginsTracker = Zend_Registry::get('config')->Plugins_Tracker->Plugins_Tracker;
+			if(!is_null($pluginsTracker))
 			{
-				$pluginsLogStats = $pluginsLogStats->toArray();
-				$key = array_search($pluginName,$pluginsLogStats);
+				$pluginsTracker = $pluginsTracker->toArray();
+				$key = array_search($pluginName,$pluginsTracker);
 				if($key !== false)
 				{
-					unset($pluginsLogStats[$key]);
-					Zend_Registry::get('config')->Plugins_LogStats = $pluginsLogStats;
+					unset($pluginsTracker[$key]);
+					Zend_Registry::get('config')->Plugins_Tracker = $pluginsTracker;
 				}
 			}
 		} catch(Exception $e) {}
@@ -261,7 +261,7 @@ class Piwik_PluginsManager
 		
 		$path = 'plugins/' . $pluginFileName;
 
-		// case LogStats, we don't throw the exception, we don't want to add the Zend overhead
+		// case Tracker, we don't throw the exception, we don't want to add the Zend overhead
 		if(class_exists('Zend_Loader') 
 			&& !Zend_Loader::isReadable($path))
 		{
@@ -365,7 +365,7 @@ class Piwik_PluginsManager
 	 */
 	private function loadTranslation( $plugin, $langCode )
 	{
-		// we are certainly in LogStats mode, Zend is not loaded
+		// we are certainly in Tracker mode, Zend is not loaded
 		if(!class_exists('Zend_Loader'))
 		{
 			return ;
@@ -418,7 +418,7 @@ class Piwik_PluginsManager
 	{
 		if(!class_exists('Zend_Registry'))
 		{
-			throw new Exception("Not possible to list installed plugins (case LogStats module)");
+			throw new Exception("Not possible to list installed plugins (case Tracker module)");
 		}
 		if(!is_null(Zend_Registry::get('config')->PluginsInstalled->PluginsInstalled))
 		{
@@ -450,22 +450,22 @@ class Piwik_PluginsManager
 		$information = $plugin->getInformation();
 		
 		// if the plugin is to be loaded during the statistics logging
-		if(isset($information['LogStatsPlugin'])
-			&& $information['LogStatsPlugin'] === true)
+		if(isset($information['TrackerPlugin'])
+			&& $information['TrackerPlugin'] === true)
 		{
-			$pluginsLogStats = Zend_Registry::get('config')->Plugins_LogStats->Plugins_LogStats;
-			if(is_null($pluginsLogStats))
+			$pluginsTracker = Zend_Registry::get('config')->Plugins_Tracker->Plugins_Tracker;
+			if(is_null($pluginsTracker))
 			{
-				$pluginsLogStats = array();
+				$pluginsTracker = array();
 			}
 			else
 			{
-				$pluginsLogStats = $pluginsLogStats->toArray();
+				$pluginsTracker = $pluginsTracker->toArray();
 			}
-			if(!in_array($pluginName, $pluginsLogStats))
+			if(!in_array($pluginName, $pluginsTracker))
 			{
-				$pluginsLogStats[] = $pluginName;
-				Zend_Registry::get('config')->Plugins_LogStats = $pluginsLogStats;
+				$pluginsTracker[] = $pluginName;
+				Zend_Registry::get('config')->Plugins_Tracker = $pluginsTracker;
 			}
 		}
 	}
diff --git a/core/LogStats.php b/core/Tracker.php
similarity index 85%
rename from core/LogStats.php
rename to core/Tracker.php
index c0a26c21de..c2a69293c8 100644
--- a/core/LogStats.php
+++ b/core/Tracker.php
@@ -4,9 +4,9 @@
  * 
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
- * @version $Id: LogStats.php 575 2008-07-26 23:08:32Z matt $
+ * @version $Id: Tracker.php 575 2008-07-26 23:08:32Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 /**
@@ -42,9 +42,9 @@
  * Configuration options for the statsLogEngine module:
  * - use_cookie  ; defines if we try to get/set a cookie to help recognize a unique visitor
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
-class Piwik_LogStats
+class Piwik_Tracker
 {	
 	protected $stateValid;
 	
@@ -52,7 +52,7 @@ class Piwik_LogStats
 	
 	/**
 	 *
-	 * @var Piwik_LogStats_Db
+	 * @var Piwik_Tracker_Db
 	 */
 	static protected $db = null;
 	
@@ -83,7 +83,7 @@ class Piwik_LogStats
 		Piwik_PostEvent('Tracker.createDatabase', $db);
 		if(is_null($db))
 		{
-			$configDb = Piwik_LogStats_Config::getInstance()->database;
+			$configDb = Piwik_Tracker_Config::getInstance()->database;
 			
 			// we decode the password. Password is html encoded because it's enclosed between " double quotes
 			$configDb['password'] = htmlspecialchars_decode($configDb['password']);
@@ -93,7 +93,7 @@ class Piwik_LogStats
 				$configDb['port'] = '3306';  
 			}
 			
-			$db = new Piwik_LogStats_Db( 	$configDb['host'], 
+			$db = new Piwik_Tracker_Db( 	$configDb['host'], 
 												$configDb['username'], 
 												$configDb['password'], 
 												$configDb['dbname'],
@@ -119,17 +119,17 @@ class Piwik_LogStats
 	private function initProcess()
 	{
 		try{
-			$pluginsLogStats = Piwik_LogStats_Config::getInstance()->Plugins_LogStats;
-			if(is_array($pluginsLogStats)
-				&& count($pluginsLogStats) != 0)
+			$pluginsTracker = Piwik_Tracker_Config::getInstance()->Plugins_Tracker;
+			if(is_array($pluginsTracker)
+				&& count($pluginsTracker) != 0)
 			{
 				Piwik_PluginsManager::getInstance()->doNotLoadAlwaysActivatedPlugins();
-				Piwik_PluginsManager::getInstance()->setPluginsToLoad( $pluginsLogStats['Plugins_LogStats'] );
+				Piwik_PluginsManager::getInstance()->setPluginsToLoad( $pluginsTracker['Plugins_Tracker'] );
 			}
 		} catch(Exception $e) {		
 		}
 		
-		$saveStats = Piwik_LogStats_Config::getInstance()->LogStats['record_statistics'];
+		$saveStats = Piwik_Tracker_Config::getInstance()->Tracker['record_statistics'];
 
 		if($saveStats == 0)
 		{
@@ -141,7 +141,7 @@ class Piwik_LogStats
 			$this->setState(self::STATE_NO_GET_VARIABLE);			
 		}
 
-		$downloadVariableName = Piwik_LogStats_Config::getInstance()->LogStats['download_url_var_name'];
+		$downloadVariableName = Piwik_Tracker_Config::getInstance()->Tracker['download_url_var_name'];
 		$urlDownload = Piwik_Common::getRequestVar( $downloadVariableName, '', 'string');
 
 		if( !empty($urlDownload) )
@@ -153,7 +153,7 @@ class Piwik_LogStats
 			$this->setUrlToRedirect ( $urlDownload);
 		}
 		
-		$outlinkVariableName = Piwik_LogStats_Config::getInstance()->LogStats['outlink_url_var_name'];
+		$outlinkVariableName = Piwik_Tracker_Config::getInstance()->Tracker['outlink_url_var_name'];
 		$urlOutlink = Piwik_Common::getRequestVar( $outlinkVariableName, '', 'string');
 		
 		if( !empty($urlOutlink) )
@@ -193,23 +193,23 @@ class Piwik_LogStats
 	}
 	
 	/**
-	 * Returns the LogStats_Visit object.
-	 * This method can be overwritten so that we use a different LogStats_Visit object
+	 * Returns the Tracker_Visit object.
+	 * This method can be overwritten so that we use a different Tracker_Visit object
 	 *
-	 * @return Piwik_LogStats_Visit
+	 * @return Piwik_Tracker_Visit
 	 */
 	protected function getNewVisitObject()
 	{
 		$visit = null;
-		Piwik_PostEvent('LogStats.getNewVisitObject', $visit);
+		Piwik_PostEvent('Tracker.getNewVisitObject', $visit);
 	
 		if(is_null($visit))
 		{
-			$visit = new Piwik_LogStats_Visit();
+			$visit = new Piwik_Tracker_Visit();
 		}
-		elseif(!($visit instanceof Piwik_LogStats_Visit_Interface ))
+		elseif(!($visit instanceof Piwik_Tracker_Visit_Interface ))
 		{
-			throw new Exception("The Visit object set in the plugin must implement Piwik_LogStats_Visit_Interface");
+			throw new Exception("The Visit object set in the plugin must implement Piwik_Tracker_Visit_Interface");
 		}
 		
 		$visit->setDb(self::$db);
@@ -270,7 +270,7 @@ class Piwik_LogStats
 		
 		if($GLOBALS['DEBUGPIWIK'] === true)
 		{
-			Piwik::printSqlProfilingReportLogStats(self::$db);
+			Piwik::printSqlProfilingReportTracker(self::$db);
 		}
 		
 		self::disconnectDb();
diff --git a/core/LogStats/Action.php b/core/Tracker/Action.php
similarity index 90%
rename from core/LogStats/Action.php
rename to core/Tracker/Action.php
index effc0409f9..2fc7b322f1 100644
--- a/core/LogStats/Action.php
+++ b/core/Tracker/Action.php
@@ -6,16 +6,16 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Action.php 558 2008-07-20 23:10:38Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 /**
  * Interface of the Action object.
  * New Action classes can be defined in plugins and used instead of the default one.
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
-interface Piwik_LogStats_Action_Interface {
+interface Piwik_Tracker_Action_Interface {
 	public function getActionId();
 	public function record( $idVisit, $idRefererAction, $timeSpentRefererAction );
 	public function setIdSite( $idSite );
@@ -41,9 +41,9 @@ interface Piwik_LogStats_Action_Interface {
  * PLUGIN_IDEA - An action hit by a visitor is associated to the HTML title of the page that triggered the action and this HTML title is displayed in the interface
  * 
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
-class Piwik_LogStats_Action implements Piwik_LogStats_Action_Interface
+class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
 {
 	private $actionName;
 	private $url;
@@ -59,24 +59,24 @@ class Piwik_LogStats_Action implements Piwik_LogStats_Action_Interface
 	const TYPE_OUTLINK  = 2;
 	
 	/**
-	 * @param Piwik_LogStats_Db Database object to be used
+	 * @param Piwik_Tracker_Db Database object to be used
 	 */
 	function __construct( $db )
 	{
 		$this->actionName = Piwik_Common::getRequestVar( 'action_name', '', 'string');
 		
-		$downloadVariableName = Piwik_LogStats_Config::getInstance()->LogStats['download_url_var_name'];
+		$downloadVariableName = Piwik_Tracker_Config::getInstance()->Tracker['download_url_var_name'];
 		$this->downloadUrl = Piwik_Common::getRequestVar( $downloadVariableName, '', 'string');
 		
-		$outlinkVariableName = Piwik_LogStats_Config::getInstance()->LogStats['outlink_url_var_name'];
+		$outlinkVariableName = Piwik_Tracker_Config::getInstance()->Tracker['outlink_url_var_name'];
 		$this->outlinkUrl = Piwik_Common::getRequestVar( $outlinkVariableName, '', 'string');
 		
-		$nameVariableName = Piwik_LogStats_Config::getInstance()->LogStats['download_outlink_name_var'];
+		$nameVariableName = Piwik_Tracker_Config::getInstance()->Tracker['download_outlink_name_var'];
 		$this->nameDownloadOutlink = Piwik_Common::getRequestVar( $nameVariableName, '', 'string');
 		
 		$this->url = Piwik_Common::getRequestVar( 'url', '', 'string');
 		$this->db = $db;
-		$this->defaultActionName = Piwik_LogStats_Config::getInstance()->LogStats['default_action_name'];
+		$this->defaultActionName = Piwik_Tracker_Config::getInstance()->Tracker['default_action_name'];
 	}
 	
 	
@@ -182,7 +182,7 @@ class Piwik_LogStats_Action implements Piwik_LogStats_Action_Interface
 		 */
 		 
 		// get the delimiter, by default '/'
-		$actionCategoryDelimiter = Piwik_LogStats_Config::getInstance()->General['action_category_delimiter'];
+		$actionCategoryDelimiter = Piwik_Tracker_Config::getInstance()->General['action_category_delimiter'];
 		
 		// case the name is an URL we dont clean the name the same way
 		if(Piwik_Common::isLookLikeUrl($actionName))
diff --git a/core/LogStats/Config.php b/core/Tracker/Config.php
similarity index 90%
rename from core/LogStats/Config.php
rename to core/Tracker/Config.php
index 65c38d9144..f6e296d02a 100644
--- a/core/LogStats/Config.php
+++ b/core/Tracker/Config.php
@@ -6,7 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Config.php 450 2008-04-20 22:33:27Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 /**
@@ -14,21 +14,21 @@
  * 
  * This is essentially a simple version of Zend_Config that we wrote 
  * because of performance reasons. 
- * The LogStats module can't afford a dependency with the Zend_Framework.
+ * The Tracker module can't afford a dependency with the Zend_Framework.
  * 
  * It's using the php.net/parse_ini_file function to parse the configuration files.
  * It can be used to access both user config.ini.php and piwik global.ini.php config file.
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
-class Piwik_LogStats_Config
+class Piwik_Tracker_Config
 {
 	static private $instance = null;
 	
 	/**
 	 * Returns singleton
 	 *
-	 * @return Piwik_LogStats_Config
+	 * @return Piwik_Tracker_Config
 	 */
 	static public function getInstance()
 	{
diff --git a/core/LogStats/Db.php b/core/Tracker/Db.php
similarity index 96%
rename from core/LogStats/Db.php
rename to core/Tracker/Db.php
index 2f62116bdd..13d23d1a26 100644
--- a/core/LogStats/Db.php
+++ b/core/Tracker/Db.php
@@ -6,17 +6,17 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Db.php 522 2008-06-11 00:31:03Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 /**
  * Simple database PDO wrapper.
- * We can't afford to have a dependency with the Zend_Db module in LogStats.
+ * We can't afford to have a dependency with the Zend_Db module in Tracker.
  * We wrote this simple class 
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
-class Piwik_LogStats_Db 
+class Piwik_Tracker_Db 
 {
 	private $connection = null;
 	private $username;
@@ -56,7 +56,7 @@ class Piwik_LogStats_Db
 	 * Enables the SQL profiling. 
 	 * For each query, saves in the DB the time spent on this query. 
 	 * Very useful to see the slow query under heavy load.
-	 * You can then use Piwik::printSqlProfilingReportLogStats(); 
+	 * You can then use Piwik::printSqlProfilingReportTracker(); 
 	 * to display the SQLProfiling report and see which queries take time, etc.
 	 */
 	static public function enableProfiling()
@@ -121,7 +121,7 @@ class Piwik_LogStats_Db
 	{
 		static $prefix;
 		if (!isset($prefix)) {
-			$prefix = Piwik_LogStats_Config::getInstance()->database['tables_prefix'];
+			$prefix = Piwik_Tracker_Config::getInstance()->database['tables_prefix'];
 		}
 		return $prefix . $suffix;
 	}
diff --git a/core/LogStats/Generator.php b/core/Tracker/Generator.php
similarity index 92%
rename from core/LogStats/Generator.php
rename to core/Tracker/Generator.php
index dfc6b03052..cd65d1e9f6 100644
--- a/core/LogStats/Generator.php
+++ b/core/Tracker/Generator.php
@@ -6,7 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Generator.php 492 2008-05-23 01:08:12Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 /**
@@ -33,14 +33,14 @@
  * - HTML title
  * 
  *  
- * @package Piwik_LogStats
- * @subpackage Piwik_LogStats_Generator
+ * @package Piwik_Tracker
+ * @subpackage Piwik_Tracker_Generator
  * 
  * 											"Le Generator, il est trop Fort!"
  * 											- Random fan
  */
 
-class Piwik_LogStats_Generator
+class Piwik_Tracker_Generator
 {
 	/**
 	 * GET parameters array of values to be used for the current visit
@@ -126,7 +126,7 @@ class Piwik_LogStats_Generator
 		// setup database	
 		Piwik::createDatabaseObject();
 		
-		Piwik_LogStats_Db::enableProfiling();
+		Piwik_Tracker_Db::enableProfiling();
 		
 		$this->timestampToUse = time();
 	}
@@ -218,7 +218,7 @@ class Piwik_LogStats_Generator
 	public function disableProfiler()
 	{
 		$this->profiling = false;
-		Piwik_LogStats_Db::disableProfiling();
+		Piwik_Tracker_Db::disableProfiling();
 	}
 	
 	/**
@@ -229,10 +229,10 @@ class Piwik_LogStats_Generator
 	 */
 	public function end()
 	{
-		Piwik_LogStats::disconnectDb();
+		Piwik_Tracker::disconnectDb();
 		if($this->profiling)
 		{
-			Piwik::printSqlProfilingReportLogStats();
+			Piwik::printSqlProfilingReportTracker();
 		}
 	}
 	
@@ -285,8 +285,8 @@ class Piwik_LogStats_Generator
 		 */
 		// we get the name of the Download/outlink variables
 		$downloadOrOutlink = array(
-						Piwik_LogStats_Config::getInstance()->LogStats['download_url_var_name'],
-						Piwik_LogStats_Config::getInstance()->LogStats['outlink_url_var_name'],
+						Piwik_Tracker_Config::getInstance()->Tracker['download_url_var_name'],
+						Piwik_Tracker_Config::getInstance()->Tracker['outlink_url_var_name'],
 		);
 		// we have a 20% chance to add a download or outlink variable to the URL 
 		$this->addParam('piwik_downloadOrOutlink', $downloadOrOutlink);
@@ -294,9 +294,9 @@ class Piwik_LogStats_Generator
 		
 		// we get the variables name for the campaign parameters
 		$campaigns = array(
-						Piwik_LogStats_Config::getInstance()->LogStats['campaign_var_name'],
-						Piwik_LogStats_Config::getInstance()->LogStats['newsletter_var_name'],
-						Piwik_LogStats_Config::getInstance()->LogStats['partner_var_name'],
+						Piwik_Tracker_Config::getInstance()->Tracker['campaign_var_name'],
+						Piwik_Tracker_Config::getInstance()->Tracker['newsletter_var_name'],
+						Piwik_Tracker_Config::getInstance()->Tracker['partner_var_name'],
 		);
 		// we generate a campaign in the URL in 3/18 % of the generated URls
 		$this->addParam('piwik_vars_campaign', $campaigns);
@@ -360,7 +360,7 @@ class Piwik_LogStats_Generator
 		{
 			$nbActions = mt_rand(1, $nbActionsMaxPerVisit);
 			
-			Piwik_LogStats_Generator_Visit::setTimestampToUse($this->getTimestampToUse());
+			Piwik_Tracker_Generator_Visit::setTimestampToUse($this->getTimestampToUse());
 						
 			$this->generateNewVisit();
 			for($j = 1; $j <= $nbActions; $j++)
@@ -420,9 +420,9 @@ class Piwik_LogStats_Generator
 	{		
 		// we don't keep the previous action values 
 		// reinit them to empty string
-		$this->setCurrentRequest( Piwik_LogStats_Config::getInstance()->LogStats['download_outlink_name_var'],'');
-		$this->setCurrentRequest( Piwik_LogStats_Config::getInstance()->LogStats['download_url_var_name'],'');
-		$this->setCurrentRequest( Piwik_LogStats_Config::getInstance()->LogStats['outlink_url_var_name'],'');
+		$this->setCurrentRequest( Piwik_Tracker_Config::getInstance()->Tracker['download_outlink_name_var'],'');
+		$this->setCurrentRequest( Piwik_Tracker_Config::getInstance()->Tracker['download_url_var_name'],'');
+		$this->setCurrentRequest( Piwik_Tracker_Config::getInstance()->Tracker['outlink_url_var_name'],'');
 		$this->setCurrentRequest( 'action_name', '');
 
 		// generate new url referer ; case the visitor stays more than 30min
@@ -445,10 +445,10 @@ class Piwik_LogStats_Generator
 			$url .= '?'. $urlVars . '=' . $urlValue;
 			
 			// for a campaign of the CPC kind, we sometimes generate a keyword 
-			if($urlVars == Piwik_LogStats_Config::getInstance()->LogStats['campaign_var_name']
+			if($urlVars == Piwik_Tracker_Config::getInstance()->Tracker['campaign_var_name']
 				&& mt_rand(0,1)==0)
 			{
-				$url .= '&'. Piwik_LogStats_Config::getInstance()->LogStats['campaign_keyword_var_name'] 
+				$url .= '&'. Piwik_Tracker_Config::getInstance()->Tracker['campaign_keyword_var_name'] 
 							. '=' . $this->getRandomString(6,3,'ALL');;
 			}
 		}
@@ -474,7 +474,7 @@ class Piwik_LogStats_Generator
 				{
 					$nameDownload = $this->getRandomString(6,3,'ALL');
 					
-					$this->setCurrentRequest( Piwik_LogStats_Config::getInstance()->LogStats['download_outlink_name_var'] 
+					$this->setCurrentRequest( Piwik_Tracker_Config::getInstance()->Tracker['download_outlink_name_var'] 
 											, $nameDownload);
 				}
 			}
@@ -648,7 +648,7 @@ class Piwik_LogStats_Generator
 	/**
 	 * Saves the visit 
 	 * - replaces GET and REQUEST by the fake generated request
-	 * - load the LogStats class and call the method to launch the recording
+	 * - load the Tracker class and call the method to launch the recording
 	 * 
 	 * This will save the visit in the database
 	 * 
@@ -657,10 +657,10 @@ class Piwik_LogStats_Generator
 	protected function saveVisit()
 	{
 		$this->setFakeRequest();
-		$process = new Piwik_LogStats_Generator_LogStats;
+		$process = new Piwik_Tracker_Generator_Tracker;
 		$process->main();
 	}
 	
 }
-require_once "Generator/LogStats.php";
+require_once "Generator/Tracker.php";
 require_once "Generator/Visit.php";
diff --git a/core/LogStats/Generator/LogStats.php b/core/Tracker/Generator/Tracker.php
similarity index 62%
rename from core/LogStats/Generator/LogStats.php
rename to core/Tracker/Generator/Tracker.php
index 92a8d29c39..db3ee22272 100644
--- a/core/LogStats/Generator/LogStats.php
+++ b/core/Tracker/Generator/Tracker.php
@@ -6,20 +6,20 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Generator.php 404 2008-03-23 01:09:59Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 
 /**
- * Fake Piwik_LogStats that:
+ * Fake Piwik_Tracker that:
  * - overwrite the sendHeader method so that no headers are sent.
  * - doesn't print the 1pixel transparent GIF at the end of the visit process
- * - overwrite the logstat_visit object to use so we use our own logstats_visit @see Piwik_LogStats_Generator_Visit
+ * - overwrite the Tracker Visit object to use so we use our own Tracker_visit @see Piwik_Tracker_Generator_Visit
  * 
- * @package Piwik_LogStats
- * @subpackage Piwik_LogStats_Generator
+ * @package Piwik_Tracker
+ * @subpackage Piwik_Tracker_Generator
  */
-class Piwik_LogStats_Generator_LogStats extends Piwik_LogStats
+class Piwik_Tracker_Generator_Tracker extends Piwik_Tracker
 {
 	/**
 	 * Does nothing instead of sending headers
@@ -40,13 +40,13 @@ class Piwik_LogStats_Generator_LogStats extends Piwik_LogStats
 	}
 	
 	/**
-	 * Returns our 'generator home made' Piwik_LogStats_Generator_Visit object.
+	 * Returns our 'generator home made' Piwik_Tracker_Generator_Visit object.
 	 *
-	 * @return Piwik_LogStats_Generator_Visit
+	 * @return Piwik_Tracker_Generator_Visit
 	 */
 	protected function getNewVisitObject()
 	{
-		$visit = new Piwik_LogStats_Generator_Visit();
+		$visit = new Piwik_Tracker_Generator_Visit();
 		$visit->setDb(self::$db);
 		return $visit;
 	}	
diff --git a/core/LogStats/Generator/Visit.php b/core/Tracker/Generator/Visit.php
similarity index 79%
rename from core/LogStats/Generator/Visit.php
rename to core/Tracker/Generator/Visit.php
index 01396d126e..41535f045c 100644
--- a/core/LogStats/Generator/Visit.php
+++ b/core/Tracker/Generator/Visit.php
@@ -6,19 +6,19 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Generator.php 404 2008-03-23 01:09:59Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 
 /**
- * Fake Piwik_LogStats_Visit class that overwrite all the Time related method to be able
+ * Fake Piwik_Tracker_Visit class that overwrite all the Time related method to be able
  * to setup a given timestamp for the generated visitor and actions.
  * 
  * 
- * @package Piwik_LogStats
- * @subpackage Piwik_LogStats_Generator
+ * @package Piwik_Tracker
+ * @subpackage Piwik_Tracker_Generator
  */
-class Piwik_LogStats_Generator_Visit extends Piwik_LogStats_Visit
+class Piwik_Tracker_Generator_Visit extends Piwik_Tracker_Visit
 {
 	static protected $timestampToUse;
 	
diff --git a/core/LogStats/Visit.php b/core/Tracker/Visit.php
similarity index 91%
rename from core/LogStats/Visit.php
rename to core/Tracker/Visit.php
index 68714cd129..bf66f07960 100644
--- a/core/LogStats/Visit.php
+++ b/core/Tracker/Visit.php
@@ -6,11 +6,11 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
  * @version $Id: Visit.php 575 2008-07-26 23:08:32Z matt $
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
 
-interface Piwik_LogStats_Visit_Interface {
+interface Piwik_Tracker_Visit_Interface {
 	function handle();
 	function setDb($db);
 }
@@ -26,10 +26,10 @@ interface Piwik_LogStats_Visit_Interface {
  * Whether a visit is NEW or KNOWN we also save the action in the DB. 
  * One request to the piwik.php script is associated to one action.
  * 
- * @package Piwik_LogStats
+ * @package Piwik_Tracker
  */
 
-class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
+class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
 {
 	protected $cookieLog = null;
 	protected $visitorInfo = array();
@@ -92,7 +92,7 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	protected function isExcluded()
 	{
 		$excluded = 0;
-		Piwik_PostEvent('LogStats.Visit.isExcluded', $excluded);
+		Piwik_PostEvent('Tracker.Visit.isExcluded', $excluded);
 		if($excluded)
 		{
 			printDebug("Visitor excluded.");
@@ -103,12 +103,12 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	}
 	
 	/**
-	 * Returns the cookie name used for the Piwik LogStats cookie
+	 * Returns the cookie name used for the Piwik Tracker cookie
 	 * @return string
 	 */
 	protected function getCookieName()
 	{
-		return Piwik_LogStats_Config::getInstance()->LogStats['cookie_name'] . $this->idsite;
+		return Piwik_Tracker_Config::getInstance()->Tracker['cookie_name'] . $this->idsite;
 	}
 	
 	
@@ -151,12 +151,12 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 		 * We make sure all the data that should saved in the cookie is available.
 		 */
 		
-		if( false !== ($idVisitor = $this->cookieLog->get( Piwik_LogStats::COOKIE_INDEX_IDVISITOR )) )
+		if( false !== ($idVisitor = $this->cookieLog->get( Piwik_Tracker::COOKIE_INDEX_IDVISITOR )) )
 		{
-			$timestampLastAction = $this->cookieLog->get( Piwik_LogStats::COOKIE_INDEX_TIMESTAMP_LAST_ACTION );
-			$timestampFirstAction = $this->cookieLog->get( Piwik_LogStats::COOKIE_INDEX_TIMESTAMP_FIRST_ACTION );
-			$idVisit = $this->cookieLog->get( Piwik_LogStats::COOKIE_INDEX_ID_VISIT );
-			$idLastAction = $this->cookieLog->get( Piwik_LogStats::COOKIE_INDEX_ID_LAST_ACTION );
+			$timestampLastAction = $this->cookieLog->get( Piwik_Tracker::COOKIE_INDEX_TIMESTAMP_LAST_ACTION );
+			$timestampFirstAction = $this->cookieLog->get( Piwik_Tracker::COOKIE_INDEX_TIMESTAMP_FIRST_ACTION );
+			$idVisit = $this->cookieLog->get( Piwik_Tracker::COOKIE_INDEX_ID_VISIT );
+			$idLastAction = $this->cookieLog->get( Piwik_Tracker::COOKIE_INDEX_ID_LAST_ACTION );
 			
 			if(		$timestampLastAction !== false && is_numeric($timestampLastAction)
 				&& 	$timestampFirstAction !== false && is_numeric($timestampFirstAction)
@@ -298,7 +298,7 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	protected function isLastActionInTheSameVisit()
 	{
 		return $this->visitorInfo['visit_last_action_time'] 
-					>= ($this->getCurrentTimestamp() - Piwik_LogStats_Config::getInstance()->LogStats['visit_standard_length']);
+					>= ($this->getCurrentTimestamp() - Piwik_Tracker_Config::getInstance()->Tracker['visit_standard_length']);
 	}
 
 	/**
@@ -359,23 +359,23 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 		printDebug("We manage the cookie...");
 		
 		// idcookie has been generated in handleNewVisit or we simply propagate the old value
-		$this->cookieLog->set( 	Piwik_LogStats::COOKIE_INDEX_IDVISITOR, 
+		$this->cookieLog->set( 	Piwik_Tracker::COOKIE_INDEX_IDVISITOR, 
 								$this->visitorInfo['visitor_idcookie'] );
 		
 		// the last action timestamp is the current timestamp
-		$this->cookieLog->set( 	Piwik_LogStats::COOKIE_INDEX_TIMESTAMP_LAST_ACTION, 	
+		$this->cookieLog->set( 	Piwik_Tracker::COOKIE_INDEX_TIMESTAMP_LAST_ACTION, 	
 								$this->visitorInfo['visit_last_action_time'] );
 		
 		// the first action timestamp is the timestamp of the first action of the current visit
-		$this->cookieLog->set( 	Piwik_LogStats::COOKIE_INDEX_TIMESTAMP_FIRST_ACTION, 	
+		$this->cookieLog->set( 	Piwik_Tracker::COOKIE_INDEX_TIMESTAMP_FIRST_ACTION, 	
 								$this->visitorInfo['visit_first_action_time'] );
 		
 		// the idvisit has been generated by mysql in handleNewVisit or simply propagated here
-		$this->cookieLog->set( 	Piwik_LogStats::COOKIE_INDEX_ID_VISIT, 	
+		$this->cookieLog->set( 	Piwik_Tracker::COOKIE_INDEX_ID_VISIT, 	
 								$this->visitorInfo['idvisit'] );
 		
 		// the last action ID is the current exit idaction
-		$this->cookieLog->set( 	Piwik_LogStats::COOKIE_INDEX_ID_LAST_ACTION, 	
+		$this->cookieLog->set( 	Piwik_Tracker::COOKIE_INDEX_ID_LAST_ACTION, 	
 								$this->visitorInfo['visit_exit_idaction'] );
 								
 		$this->cookieLog->save();
@@ -467,7 +467,7 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 			$returningVisitor = 0;
 		}
 		
-		$defaultTimeOnePageVisit = Piwik_LogStats_Config::getInstance()->LogStats['default_time_one_page_visit'];
+		$defaultTimeOnePageVisit = Piwik_Tracker_Config::getInstance()->Tracker['default_time_one_page_visit'];
 		
 		$userInfo = $this->getUserSettingsInformation();
 		$country 		= Piwik_Common::getCountry($userInfo['location_browser_lang']);				
@@ -523,7 +523,7 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 			'location_continent' 	=> $continent,
 		);
 		
-		Piwik_PostEvent('LogStats.newVisitorInformation', $informationToSave);
+		Piwik_PostEvent('Tracker.newVisitorInformation', $informationToSave);
 		
 		$fields = implode(", ", array_keys($informationToSave));
 		$values = substr(str_repeat( "?,",count($informationToSave)),0,-1);
@@ -550,20 +550,20 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	 * Returns an object able to handle the current action
 	 * Plugins can return an override Action that for example, does not record the action in the DB
 	 *
-	 * @return Piwik_LogStats_Action child or fake but with same public interface
+	 * @return Piwik_Tracker_Action child or fake but with same public interface
 	 */
 	protected function getActionObject()
 	{
 		$action = null;
-		Piwik_PostEvent('LogStats.newAction', $action);
+		Piwik_PostEvent('Tracker.newAction', $action);
 	
 		if(is_null($action))
 		{
-			$action = new Piwik_LogStats_Action( $this->db );
+			$action = new Piwik_Tracker_Action( $this->db );
 		}
-		elseif(!($action instanceof Piwik_LogStats_Action_Interface))
+		elseif(!($action instanceof Piwik_Tracker_Action_Interface))
 		{
-			throw new Exception("The Action object set in the plugin must implement the interface Piwik_LogStats_Action_Interface");
+			throw new Exception("The Action object set in the plugin must implement the interface Piwik_Tracker_Action_Interface");
 		}
 		$action->setIdSite($this->idsite);
 		
@@ -724,7 +724,7 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	{
 		if(isset($this->currentUrlParse['query']))
 		{
-			$newsletterVariableName = Piwik_LogStats_Config::getInstance()->LogStats['newsletter_var_name'];
+			$newsletterVariableName = Piwik_Tracker_Config::getInstance()->Tracker['newsletter_var_name'];
 			$newsletterVar = Piwik_Common::getParameterFromQueryString( $this->currentUrlParse['query'], $newsletterVariableName);
 
 			if(!empty($newsletterVar))
@@ -744,7 +744,7 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	{
 		if(isset($this->currentUrlParse['query']))
 		{		
-			$partnerVariableName = Piwik_LogStats_Config::getInstance()->LogStats['partner_var_name'];
+			$partnerVariableName = Piwik_Tracker_Config::getInstance()->Tracker['partner_var_name'];
 			$partnerVar = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $partnerVariableName);
 							
 			if(!empty($partnerVar))
@@ -764,12 +764,12 @@ class Piwik_LogStats_Visit implements Piwik_LogStats_Visit_Interface
 	{	
 		if(isset($this->currentUrlParse['query']))
 		{		
-			$campaignVariableName = Piwik_LogStats_Config::getInstance()->LogStats['campaign_var_name'];
+			$campaignVariableName = Piwik_Tracker_Config::getInstance()->Tracker['campaign_var_name'];
 			$campaignName = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignVariableName);
 			
 			if( !empty($campaignName))
 			{
-				$campaignKeywordVariableName = Piwik_LogStats_Config::getInstance()->LogStats['campaign_keyword_var_name'];
+				$campaignKeywordVariableName = Piwik_Tracker_Config::getInstance()->Tracker['campaign_keyword_var_name'];
 				$campaignKeyword = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignKeywordVariableName);
 
 				$this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_CAMPAIGN;
diff --git a/core/LogStats/javascriptTag.tpl b/core/Tracker/javascriptTag.tpl
similarity index 100%
rename from core/LogStats/javascriptTag.tpl
rename to core/Tracker/javascriptTag.tpl
diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php
index 2503d23eb5..d367097278 100644
--- a/core/ViewDataTable.php
+++ b/core/ViewDataTable.php
@@ -455,7 +455,7 @@ abstract class Piwik_ViewDataTable
 	 * - etc.
 	 *
 	 * The values are loaded:
-	 * - from the generic filters that are applied by default @see Piwik_API_Request::getGenericFiltersInformation()
+	 * - from the generic filters that are applied by default @see Piwik_API_ResponseBuilder::getGenericFiltersInformation()
 	 * - from the values already available in the GET array
 	 * - from the values set using methods from this class (eg. setSearchPattern(), setLimit(), etc.)
 	 * 
@@ -466,7 +466,7 @@ abstract class Piwik_ViewDataTable
 		// build javascript variables to set
 		$javascriptVariablesToSet = array();
 		
-		$genericFilters = Piwik_API_Request::getGenericFiltersInformation();
+		$genericFilters = Piwik_API_ResponseBuilder::getGenericFiltersInformation();
 		foreach($genericFilters as $filter)
 		{
 			foreach($filter as $filterVariableName => $filterInfo)
diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php
index 52c7c6d608..1edb46ff87 100644
--- a/core/testMinimumPhpVersion.php
+++ b/core/testMinimumPhpVersion.php
@@ -38,8 +38,12 @@ if($piwik_zend_compatibility_mode == 1)
 				If you want to use Piwik you need to set <pre>zend.ze1_compatibility_mode = Off</pre> in your php.ini configuration file. You may have to ask your system administrator.</p>";
 }
 
-function Piwik_ExitWithMessage($message)
+function Piwik_ExitWithMessage($message, $optionalTrace)
 {
+	if($optionalTrace)
+	{
+		$optionalTrace = '<font color="#888888">Backtrace:<br/><pre>'.$optionalTrace.'</pre></font>';
+	}
 	$html = '<html>
 				<head>
 					<title>Piwik &rsaquo; Error</title>
@@ -51,9 +55,12 @@ function Piwik_ExitWithMessage($message)
 					color: #000;
 					font-family: Georgia, "Times New Roman", Times, serif;
 					margin-left: 20%;
-					margin-top: 25px;
+					margin-top: 50px;
 					margin-right: 20%;
-					padding: .2em 2em;
+					padding: 1em 2em;
+					-moz-border-radius: 12px;
+					-khtml-border-radius: 12px;
+					-webkit-border-radius: 12px;
 				}
 				#h1 {
 					color: #006;
@@ -77,7 +84,8 @@ function Piwik_ExitWithMessage($message)
 				</head>
 				<body>
 					<span id="h1">Piwik </span><span id="subh1"> # open source web analytics</span>
-					<p>'.$message.'</p>				
+					<p>'.$message.'</p>
+					'. $optionalTrace .'
 					<ul>
 						<li><a target="_blank" href="misc/redirectToUrl.php?url=http://piwik.org">Piwik homepage</a></li>
 						<li><a target="_blank" href="misc/redirectToUrl.php?url=http://piwik.org/demo">Piwik demo</a></li>
diff --git a/misc/generateVisits.php b/misc/generateVisits.php
index b509d5c2b8..2da8e3e40b 100644
--- a/misc/generateVisits.php
+++ b/misc/generateVisits.php
@@ -5,9 +5,8 @@
  */
 $minVisits = 5;
 $maxVisits = 15;
-$nbActions = 15;
-$daysToCompute = 1;
-$idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
+$nbActions = 10;
+$daysToCompute = 2;
 
 //-----------------------------------------------------------------------------
 error_reporting(E_ALL|E_NOTICE);
@@ -28,29 +27,30 @@ define('ENABLE_DISPATCH', false);
 require_once "index.php";
 require_once "FrontController.php";
 
+$idSite = Piwik_Common::getRequestVar('idSite', 1, 'int');
 Piwik_FrontController::getInstance()->init();
 Piwik::checkUserIsSuperUser();
 
 require_once "PluginsManager.php";
 require_once "Timer.php";
 require_once "Cookie.php";
-require_once "LogStats.php";
-require_once "LogStats/Config.php";
-require_once "LogStats/Action.php";
-require_once "LogStats/Db.php";
-require_once "LogStats/Visit.php";
-require_once "LogStats/Generator.php";
+require_once "Tracker.php";
+require_once "Tracker/Config.php";
+require_once "Tracker/Action.php";
+require_once "Tracker/Db.php";
+require_once "Tracker/Visit.php";
+require_once "Tracker/Generator.php";
 
 //Piwik_PluginsManager::getInstance()->unloadPlugins();
 
 // we have to unload the Provider plugin otherwise it tries to lookup the IP for ahostname, and there is no dns server here
 Piwik_PluginsManager::getInstance()->unloadPlugin('Provider');
 
-// we set the DO NOT load plugins so that the LogStats generator doesn't load the plugins we've just disabled.
+// we set the DO NOT load plugins so that the Tracker generator doesn't load the plugins we've just disabled.
 // if for some reasons you want to load the plugins, comment this line, and disable the plugin Provider in the plugins interface
 Piwik_PluginsManager::getInstance()->doNotLoadPlugins();
 
-$generator = new Piwik_LogStats_Generator;
+$generator = new Piwik_Tracker_Generator;
 $generator->setMaximumUrlDepth(3);
 //$generator->disableProfiler();
 $generator->setIdSite( $idSite );
@@ -74,6 +74,7 @@ while($startTime <= time())
 	$startTime+=86400;
 	$nbActionsTotal+=$nbActionsTotalThisDay;
 	flush();
+	sleep(1);
 }
 
 echo "<br>Total actions: $nbActionsTotal";
diff --git a/piwik.php b/piwik.php
index 790a3a4055..7959b315ca 100644
--- a/piwik.php
+++ b/piwik.php
@@ -19,12 +19,12 @@ set_include_path(PIWIK_INCLUDE_PATH
 
 require_once "Common.php";
 require_once "PluginsManager.php";
-require_once "LogStats.php";
-require_once "LogStats/Config.php";
-require_once "LogStats/Action.php";
+require_once "Tracker.php";
+require_once "Tracker/Config.php";
+require_once "Tracker/Action.php";
 require_once "Cookie.php";
-require_once "LogStats/Db.php";
-require_once "LogStats/Visit.php";
+require_once "Tracker/Db.php";
+require_once "Tracker/Visit.php";
 
 $GLOBALS['DEBUGPIWIK'] = false;
 
@@ -36,13 +36,13 @@ if($GLOBALS['DEBUGPIWIK'] === true)
 	set_error_handler('Piwik_ErrorHandler');
 	set_exception_handler('Piwik_ExceptionHandler');
 	printDebug($_GET);
-	Piwik_LogStats_Db::enableProfiling();
+	Piwik_Tracker_Db::enableProfiling();
 	Piwik::createConfigObject();
 	Piwik::createLogObject();
 }
 
 ob_start();
-$process = new Piwik_LogStats;
+$process = new Piwik_Tracker;
 $process->main();
 ob_end_flush();
 printDebug($_COOKIE);
diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php
index 9b70b899d5..66e7199d98 100644
--- a/plugins/Actions/Actions.php
+++ b/plugins/Actions/Actions.php
@@ -93,12 +93,12 @@ class Piwik_Actions extends Piwik_Plugin
 	{
 		$archiveProcessing = $notification->getNotificationObject();
 		
-		require_once "LogStats/Action.php";
+		require_once "Tracker/Action.php";
 		
 		$this->actionsTablesByType = array(
-			Piwik_LogStats_Action::TYPE_ACTION => array(),
-			Piwik_LogStats_Action::TYPE_DOWNLOAD => array(),
-			Piwik_LogStats_Action::TYPE_OUTLINK => array(),
+			Piwik_Tracker_Action::TYPE_ACTION => array(),
+			Piwik_Tracker_Action::TYPE_DOWNLOAD => array(),
+			Piwik_Tracker_Action::TYPE_OUTLINK => array(),
 		);
 		
 		// This row is used in the case where an action is know as an exit_action
@@ -191,15 +191,15 @@ class Piwik_Actions extends Piwik_Plugin
 		$maximumRowsInDataTableLevelZero = 200;
 		$maximumRowsInSubDataTable = 50;
 		
-		$dataTable = Piwik_ArchiveProcessing_Day::generateDataTable($this->actionsTablesByType[Piwik_LogStats_Action::TYPE_ACTION]);
+		$dataTable = Piwik_ArchiveProcessing_Day::generateDataTable($this->actionsTablesByType[Piwik_Tracker_Action::TYPE_ACTION]);
 		$s = $dataTable->getSerialized( $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable );
 		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Actions_actions', $s);
 		
-		$dataTable = Piwik_ArchiveProcessing_Day::generateDataTable($this->actionsTablesByType[Piwik_LogStats_Action::TYPE_DOWNLOAD]);
+		$dataTable = Piwik_ArchiveProcessing_Day::generateDataTable($this->actionsTablesByType[Piwik_Tracker_Action::TYPE_DOWNLOAD]);
 		$s = $dataTable->getSerialized( $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable );
 		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Actions_downloads', $s);
 		
-		$dataTable = Piwik_ArchiveProcessing_Day::generateDataTable($this->actionsTablesByType[Piwik_LogStats_Action::TYPE_OUTLINK]);
+		$dataTable = Piwik_ArchiveProcessing_Day::generateDataTable($this->actionsTablesByType[Piwik_Tracker_Action::TYPE_OUTLINK]);
 		$s = $dataTable->getSerialized( $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable );
 		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Actions_outlink', $s);
 		
diff --git a/plugins/CoreAdminHome/templates/footer.tpl b/plugins/CoreAdminHome/templates/footer.tpl
new file mode 100644
index 0000000000..51f0116ae5
--- /dev/null
+++ b/plugins/CoreAdminHome/templates/footer.tpl
@@ -0,0 +1,2 @@
+
+{include file="CoreHome/templates/piwik_tag.tpl"}
\ No newline at end of file
diff --git a/plugins/CoreAdminHome/templates/index.tpl b/plugins/CoreAdminHome/templates/index.tpl
index 431f768e26..370e1b963f 100644
--- a/plugins/CoreAdminHome/templates/index.tpl
+++ b/plugins/CoreAdminHome/templates/index.tpl
@@ -14,3 +14,5 @@
 <a href='?module=CoreHome'>{'General_BackToHomepage'|translate}</a>
 
 </div>
+
+{include file="CoreAdminHome/templates/footer.tpl"}
\ No newline at end of file
diff --git a/plugins/CoreHome/templates/piwik_tag.tpl b/plugins/CoreHome/templates/piwik_tag.tpl
index 3f207f6bda..7807ceb5bd 100644
--- a/plugins/CoreHome/templates/piwik_tag.tpl
+++ b/plugins/CoreHome/templates/piwik_tag.tpl
@@ -16,4 +16,4 @@ piwik_log(piwik_action_name, piwik_idsite, piwik_url, piwik_vars);
 </noscript></object></a>
 <!-- /Piwik -->
 {/literal}
-{/if}
\ No newline at end of file
+{/if}
diff --git a/plugins/CorePluginsAdmin/templates/manage.tpl b/plugins/CorePluginsAdmin/templates/manage.tpl
index 37b8ac9d85..209007d135 100644
--- a/plugins/CorePluginsAdmin/templates/manage.tpl
+++ b/plugins/CorePluginsAdmin/templates/manage.tpl
@@ -48,4 +48,5 @@
 </tbody>
 </table>
 
-</div>
\ No newline at end of file
+</div>
+{include file="CoreAdminHome/templates/footer.tpl"}
\ No newline at end of file
diff --git a/plugins/DBStats/templates/DBStats.tpl b/plugins/DBStats/templates/DBStats.tpl
index 3b12605793..27f0769dcd 100644
--- a/plugins/DBStats/templates/DBStats.tpl
+++ b/plugins/DBStats/templates/DBStats.tpl
@@ -34,4 +34,6 @@
 	</tbody>
 </table>
 
-</div>
\ No newline at end of file
+</div>
+
+{include file="CoreAdminHome/templates/footer.tpl"}
\ No newline at end of file
diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php
index e42df824b6..81b8090990 100644
--- a/plugins/Provider/Provider.php
+++ b/plugins/Provider/Provider.php
@@ -23,7 +23,7 @@ class Piwik_Provider extends Piwik_Plugin
 			'author' => 'Piwik',
 			'homepage' => 'http://piwik.org/',
 			'version' => '0.1',
-			'LogStatsPlugin' => true, // this plugin must be loaded during the stats logging
+			'TrackerPlugin' => true, // this plugin must be loaded during the stats logging
 		);
 		
 		return $info;
@@ -34,7 +34,7 @@ class Piwik_Provider extends Piwik_Plugin
 		$hooks = array(
 			'ArchiveProcessing_Day.compute' => 'archiveDay',
 			'ArchiveProcessing_Period.compute' => 'archivePeriod',
-			'LogStats.newVisitorInformation' => 'logProviderInfo',
+			'Tracker.newVisitorInformation' => 'logProviderInfo',
 			'WidgetsList.add' => 'addWidget',
 			'Menu.add' => 'addMenu',
 		);
diff --git a/plugins/SitesManager/templates/SitesManager.tpl b/plugins/SitesManager/templates/SitesManager.tpl
index 18d0372ddb..e9cec2405a 100644
--- a/plugins/SitesManager/templates/SitesManager.tpl
+++ b/plugins/SitesManager/templates/SitesManager.tpl
@@ -61,3 +61,4 @@
 	<div class="addRowSite"><a href="#"><img src='plugins/UsersManager/images/add.png' alt="" /> {'SitesManager_AddSite'|translate}</a></div>
 {/if}
 
+{include file="CoreAdminHome/templates/footer.tpl"}
diff --git a/plugins/UsersManager/templates/UsersManager.tpl b/plugins/UsersManager/templates/UsersManager.tpl
index 054a269c04..02781df325 100644
--- a/plugins/UsersManager/templates/UsersManager.tpl
+++ b/plugins/UsersManager/templates/UsersManager.tpl
@@ -140,3 +140,5 @@
 
 <div class="addrow"><a href="#"><img src='plugins/UsersManager/images/add.png'> {'UsersManager_AddUser'|translate}</a></div>
 <script type="text/javascript" src="plugins/UsersManager/templates/UsersManager.js"></script>
+
+{include file="CoreAdminHome/templates/footer.tpl"}
\ No newline at end of file
diff --git a/tests/core/LogStats_Db.test.php b/tests/core/Tracker_Db.test.php
similarity index 67%
rename from tests/core/LogStats_Db.test.php
rename to tests/core/Tracker_Db.test.php
index b4cd6a7d3e..12d37c7a20 100644
--- a/tests/core/LogStats_Db.test.php
+++ b/tests/core/Tracker_Db.test.php
@@ -7,9 +7,9 @@ if(!defined('CONFIG_TEST_INCLUDED'))
 	require_once PATH_TEST_TO_ROOT ."/../tests/config_test.php";
 }
 
-require_once 'LogStats/Db.php';
+require_once 'Tracker/Db.php';
 
-class Test_Piwik_LogStats_Db extends UnitTestCase
+class Test_Piwik_Tracker_Db extends UnitTestCase
 {
 	function __construct( $title = '')
 	{
@@ -30,7 +30,7 @@ class Test_Piwik_LogStats_Db extends UnitTestCase
      */
     public function test_profilingDisabledInProduction()
     {
-    	$this->assertTrue(Piwik_LogStats_Db::isProfilingEnabled() === false, 'SQL profiler should be disabled in production! See Piwik_LogStats_Db::$profiling');
+    	$this->assertTrue(Piwik_Tracker_Db::isProfilingEnabled() === false, 'SQL profiler should be disabled in production! See Piwik_Tracker_Db::$profiling');
     }
 }
 
-- 
GitLab