From 7ca35544d15cdb41b17283e693c8a14777c923ad Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Sat, 20 Jul 2013 18:55:54 +1200
Subject: [PATCH] Converting to namespace: Period, Site

---
 core/Access.php                               |  2 +-
 core/Archive.php                              | 14 +++---
 core/Archive/DataCollection.php               |  4 +-
 core/Archive/DataTableFactory.php             |  7 +--
 core/Archive/Parameters.php                   |  2 +-
 core/ArchiveProcessor.php                     | 12 +++--
 core/ArchiveProcessor/Rules.php               |  4 +-
 core/Controller.php                           | 17 ++++---
 core/DataAccess/ArchiveSelector.php           |  6 ++-
 core/DataAccess/ArchiveWriter.php             |  5 +-
 core/DataAccess/LogAggregator.php             |  5 +-
 .../Filter/CalculateEvolutionFilter.php       |  3 +-
 core/DataTable/Renderer/Csv.php               |  3 +-
 core/Period.php                               | 46 +++++++++++--------
 core/Period/Day.php                           |  5 +-
 core/Period/Month.php                         |  5 +-
 core/Period/Range.php                         | 11 +++--
 core/Period/Week.php                          |  5 +-
 core/Period/Year.php                          |  5 +-
 core/Piwik.php                                |  4 +-
 core/Site.php                                 |  7 ++-
 core/ViewDataTable.php                        |  6 ++-
 .../GenerateGraphHTML/ChartEvolution.php      |  3 +-
 core/ViewDataTable/HtmlTable/Goals.php        |  3 +-
 plugins/API/ProcessedReport.php               |  8 ++--
 plugins/API/RowEvolution.php                  |  3 +-
 plugins/Actions/Actions.php                   |  3 +-
 plugins/Annotations/API.php                   |  3 +-
 plugins/Annotations/AnnotationList.php        |  5 +-
 plugins/CoreAdminHome/API.php                 |  8 ++--
 plugins/CoreAdminHome/Controller.php          |  5 +-
 plugins/CoreHome/Controller.php               |  3 +-
 plugins/Dashboard/Dashboard.php               |  3 +-
 plugins/ExamplePlugin/Controller.php          |  2 +-
 plugins/Goals/API.php                         |  3 +-
 plugins/Goals/Goals.php                       |  9 ++--
 plugins/ImageGraph/API.php                    |  3 +-
 plugins/ImageGraph/ImageGraph.php             |  6 ++-
 plugins/Live/API.php                          |  8 ++--
 .../MobileMessaging/ReportRenderer/Sms.php    |  4 +-
 plugins/MultiSites/API.php                    |  9 ++--
 plugins/MultiSites/Controller.php             | 14 +++---
 plugins/PDFReports/API.php                    |  5 +-
 plugins/PDFReports/PDFReports.php             |  3 +-
 plugins/SEO/Controller.php                    |  3 +-
 plugins/SitesManager/API.php                  |  5 +-
 plugins/SitesManager/Controller.php           |  7 +--
 plugins/Transitions/API.php                   |  6 ++-
 plugins/UserCountryMap/Controller.php         |  3 +-
 plugins/UsersManager/API.php                  |  3 +-
 plugins/UsersManager/Controller.php           |  7 +--
 plugins/VisitTime/API.php                     |  8 ++--
 plugins/VisitTime/VisitTime.php               |  4 +-
 plugins/VisitorGenerator/Controller.php       |  3 +-
 plugins/VisitsSummary/Controller.php          |  5 +-
 tests/PHPUnit/BaseFixture.php                 |  3 +-
 .../Benchmarks/ArchiveQueryBenchmark.php      |  4 +-
 tests/PHPUnit/Core/ArchiveProcessingTest.php  | 10 ++--
 tests/PHPUnit/Core/PeriodTest.php             | 12 +++--
 tests/PHPUnit/DatabaseTestCase.php            |  3 +-
 tests/PHPUnit/FakeAccess.php                  |  4 +-
 tests/PHPUnit/IntegrationTestCase.php         |  3 +-
 tests/PHPUnit/Plugins/PDFReportsTest.php      |  3 +-
 tests/PHPUnit/Plugins/PrivacyManagerTest.php  |  3 +-
 tests/PHPUnit/Plugins/SitesManagerTest.php    | 13 +++---
 tests/PHPUnit/proxy/piwik.php                 |  3 +-
 66 files changed, 246 insertions(+), 160 deletions(-)

diff --git a/core/Access.php b/core/Access.php
index 931e958567..ab92cf97c1 100644
--- a/core/Access.php
+++ b/core/Access.php
@@ -425,7 +425,7 @@ class Access
             $idSites = $this->getSitesIdWithAtLeastViewAccess();
         }
 
-        $idSites = \Piwik_Site::getIdSitesFromIdSitesString($idSites);
+        $idSites = \Piwik\Site::getIdSitesFromIdSitesString($idSites);
         if (empty($idSites)) {
             throw new NoAccessException("The parameter 'idSite=' is missing from the request.");
         }
diff --git a/core/Archive.php b/core/Archive.php
index 993390b46d..5ba77c6523 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -122,19 +122,19 @@ class Archive
      */
     public static function build($idSites, $period, $strDate, $segment = false, $_restrictSitesToLogin = false)
     {
-        $websiteIds = Piwik_Site::getIdSitesFromIdSitesString($idSites, $_restrictSitesToLogin);
+        $websiteIds = Site::getIdSitesFromIdSitesString($idSites, $_restrictSitesToLogin);
 
-        if (Piwik_Period::isMultiplePeriod($strDate, $period)) {
+        if (Period::isMultiplePeriod($strDate, $period)) {
             $oPeriod = new Piwik_Period_Range($period, $strDate);
             $allPeriods = $oPeriod->getSubperiods();
         } else {
-            $timezone = count($websiteIds) == 1 ? Piwik_Site::getTimezoneFor($websiteIds[0]) : false;
-            $oPeriod = Piwik_Period::makePeriodFromQueryParams($timezone, $period, $strDate);
+            $timezone = count($websiteIds) == 1 ? Site::getTimezoneFor($websiteIds[0]) : false;
+            $oPeriod = Period::makePeriodFromQueryParams($timezone, $period, $strDate);
             $allPeriods = array($oPeriod);
         }
         $segment = new Piwik_Segment($segment, $websiteIds);
         $idSiteIsAll = $idSites == self::REQUEST_ALL_WEBSITES_FLAG;
-        $isMultipleDate = Piwik_Period::isMultiplePeriod($strDate, $period);
+        $isMultipleDate = Period::isMultiplePeriod($strDate, $period);
         return Archive::factory($segment, $allPeriods, $websiteIds, $idSiteIsAll, $isMultipleDate);
     }
 
@@ -431,7 +431,7 @@ class Archive
     {
         $today = Piwik_Date::today();
 
-        /* @var Piwik_Period $period */
+        /* @var Period $period */
         foreach ($this->params->getPeriods() as $period) {
             $periodStr = $period->getRangeString();
 
@@ -439,7 +439,7 @@ class Archive
             $twoDaysAfterPeriod = $period->getDateEnd()->addDay(2);
 
             foreach ($this->params->getIdSites() as $idSite) {
-                $site = new Piwik_Site($idSite);
+                $site = new Site($idSite);
 
                 // if the END of the period is BEFORE the website creation date
                 // we already know there are no stats for this period
diff --git a/core/Archive/DataCollection.php b/core/Archive/DataCollection.php
index 9dc9a38e63..f6b50b485b 100644
--- a/core/Archive/DataCollection.php
+++ b/core/Archive/DataCollection.php
@@ -83,8 +83,8 @@ class Piwik_Archive_DataCollection
      * the period's range string. Eg,
      * 
      * array(
-     *     '2012-01-01,2012-01-31' => new Piwik_Period(...),
-     *     '2012-02-01,2012-02-28' => new Piwik_Period(...),
+     *     '2012-01-01,2012-01-31' => new Period(...),
+     *     '2012-02-01,2012-02-28' => new Period(...),
      * )
      * 
      * @var array
diff --git a/core/Archive/DataTableFactory.php b/core/Archive/DataTableFactory.php
index 6bee96d344..0b3cf23743 100644
--- a/core/Archive/DataTableFactory.php
+++ b/core/Archive/DataTableFactory.php
@@ -9,6 +9,7 @@
  * @package Piwik
  */
 
+use Piwik\Site;
 const FIX_ME_OMG = 'this is a warning and reminder to fix this code ';
 
 /**
@@ -352,14 +353,14 @@ class Piwik_Archive_DataTableFactory
     }
     
     /**
-     * Converts site IDs and period string ranges into Piwik_Site instances and
-     * Piwik_Period instances in DataTable metadata.
+     * Converts site IDs and period string ranges into Site instances and
+     * Period instances in DataTable metadata.
      */
     private function transformMetadata($table)
     {
         $periods = $this->periods;
         $table->filter(function ($table) use($periods) {
-            $table->metadata['site'] = new Piwik_Site($table->metadata['site']);
+            $table->metadata['site'] = new Site($table->metadata['site']);
             $table->metadata['period'] = empty($periods[$table->metadata['period']])
                                             ? FIX_ME_OMG
                                             : $periods[$table->metadata['period']];
diff --git a/core/Archive/Parameters.php b/core/Archive/Parameters.php
index 51b0a9e454..0db74b0a58 100644
--- a/core/Archive/Parameters.php
+++ b/core/Archive/Parameters.php
@@ -10,7 +10,7 @@ class Piwik_Archive_Parameters
     private $idSites = array();
 
     /**
-     * The list of Piwik_Period's to query archive data for.
+     * The list of Period's to query archive data for.
      *
      * @var array
      */
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php
index bcbfcc1de2..42185a219b 100644
--- a/core/ArchiveProcessor.php
+++ b/core/ArchiveProcessor.php
@@ -9,7 +9,9 @@
  * @package Piwik
  */
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
+use Piwik\Site;
 
 /**
  * The ArchiveProcessor class is used by the Archive object to make sure the given Archive is processed and available in the DB.
@@ -80,12 +82,12 @@ abstract class Piwik_ArchiveProcessor
      * Site of the current archive
      * Can be accessed by plugins (that is why it's public)
      *
-     * @var Piwik_Site
+     * @var Site
      */
     private $site = null;
 
     /**
-     * @var Piwik_Period
+     * @var Period
      */
     private $period = null;
 
@@ -94,7 +96,7 @@ abstract class Piwik_ArchiveProcessor
      */
     private $segment = null;
 
-    public function __construct(Piwik_Period $period, Piwik_Site $site, Piwik_Segment $segment)
+    public function __construct(Period $period, Site $site, Piwik_Segment $segment)
     {
         $this->period = $period;
         $this->site = $site;
@@ -114,7 +116,7 @@ abstract class Piwik_ArchiveProcessor
     }
 
     /**
-     * @return Piwik_Period
+     * @return Period
      */
     protected function getPeriod()
     {
@@ -122,7 +124,7 @@ abstract class Piwik_ArchiveProcessor
     }
 
     /**
-     * @return Piwik_Site
+     * @return Site
      */
     public function getSite()
     {
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index a4ddd03e35..b8b91cd703 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -9,8 +9,10 @@
  * @package Piwik
  */
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * This class contains Archiving rules/logic which are used in several places
@@ -137,7 +139,7 @@ class Piwik_ArchiveProcessor_Rules
         return false;
     }
 
-    public static function getMinTimeProcessedForTemporaryArchive(Piwik_Date $dateStart, Piwik_Period $period, Piwik_Segment $segment, Piwik_Site $site)
+    public static function getMinTimeProcessedForTemporaryArchive(Piwik_Date $dateStart, Period $period, Piwik_Segment $segment, Site $site)
     {
         $now = time();
         $minimumArchiveTime = $now - Piwik_ArchiveProcessor_Rules::getTodayArchiveTimeToLive();
diff --git a/core/Controller.php b/core/Controller.php
index 55857f7ce8..06d946ad56 100644
--- a/core/Controller.php
+++ b/core/Controller.php
@@ -9,9 +9,12 @@
  * @package Piwik
  */
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Access;
+use Piwik\Site;
+
 
 /**
  * Parent class of all plugins Controllers (located in /plugins/PluginName/Controller.php
@@ -47,7 +50,7 @@ abstract class Piwik_Controller
     protected $idSite;
 
     /**
-     * @var Piwik_Site
+     * @var Site
      */
     protected $site = null;
 
@@ -66,7 +69,7 @@ abstract class Piwik_Controller
         $date = Common::getRequestVar('date', 'yesterday', 'string');
         try {
             $this->idSite = Common::getRequestVar('idSite', false, 'int');
-            $this->site = new Piwik_Site($this->idSite);
+            $this->site = new Site($this->idSite);
             $date = $this->getDateParameterInTimezone($date, $this->site->getTimezone());
             $this->setDate($date);
         } catch (Exception $e) {
@@ -290,7 +293,7 @@ abstract class Piwik_Controller
      * @param string $period
      * @param string $lastN
      * @param string $endDate
-     * @param Piwik_Site $site
+     * @param Site $site
      * @return string
      */
     public static function getDateRangeRelativeToEndDate($period, $lastN, $endDate, $site)
@@ -401,7 +404,7 @@ abstract class Piwik_Controller
             $periodStr = Common::getRequestVar('period');
             if ($periodStr != 'range') {
                 $date = Piwik_Date::factory($this->strDate);
-                $period = Piwik_Period::factory($periodStr, $date);
+                $period = Period::factory($periodStr, $date);
             } else {
                 $period = new Piwik_Period_Range($periodStr, $rawDate, $this->site->getTimezone());
             }
@@ -671,7 +674,7 @@ abstract class Piwik_Controller
     /**
      * Returns default website that Piwik should load
      *
-     * @return Piwik_Site
+     * @return Site
      */
     protected function getDefaultWebsiteId()
     {
@@ -759,7 +762,7 @@ abstract class Piwik_Controller
     /**
      * Returns pretty date for use in period selector widget.
      *
-     * @param Piwik_Period $period
+     * @param Period $period
      * @return string
      */
     public static function getCalendarPrettyDate($period)
@@ -782,7 +785,7 @@ abstract class Piwik_Controller
      */
     public static function getPrettyDate($date, $period)
     {
-        return self::getCalendarPrettyDate(Piwik_Period::factory($period, Piwik_Date::factory($date)));
+        return self::getCalendarPrettyDate(Period::factory($period, Piwik_Date::factory($date)));
     }
 
 
diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php
index 1eac19955c..54d18596d6 100644
--- a/core/DataAccess/ArchiveSelector.php
+++ b/core/DataAccess/ArchiveSelector.php
@@ -8,8 +8,10 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * Data Access object used to query archives
@@ -31,7 +33,7 @@ class Piwik_DataAccess_ArchiveSelector
 
     const NB_VISITS_CONVERTED_RECORD_LOOKED_UP = "nb_visits_converted";
 
-    static public function getArchiveIdAndVisits(Piwik_Site $site, Piwik_Period $period, Piwik_Segment $segment, $minDatetimeArchiveProcessedUTC, $requestedPlugin)
+    static public function getArchiveIdAndVisits(Site $site, Period $period, Piwik_Segment $segment, $minDatetimeArchiveProcessedUTC, $requestedPlugin)
     {
         $dateStart = $period->getDateStart();
         $bindSQL = array($site->getId(),
@@ -146,7 +148,7 @@ class Piwik_DataAccess_ArchiveSelector
 
         $monthToPeriods = array();
         foreach ($periods as $period) {
-            /** @var Piwik_Period $period */
+            /** @var Period $period */
             $table = Piwik_DataAccess_ArchiveTableCreator::getNumericTable($period->getDateStart());
             $monthToPeriods[$table][] = $period;
         }
diff --git a/core/DataAccess/ArchiveWriter.php b/core/DataAccess/ArchiveWriter.php
index f864af9ae1..bcd14e51c7 100644
--- a/core/DataAccess/ArchiveWriter.php
+++ b/core/DataAccess/ArchiveWriter.php
@@ -9,6 +9,7 @@
  * @package Piwik
  */
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 
@@ -30,7 +31,7 @@ class Piwik_DataAccess_ArchiveWriter
                               'name',
                               'value');
 
-    public function __construct($idSite, Piwik_Segment $segment, Piwik_Period $period, $requestedPlugin, $isArchiveTemporary)
+    public function __construct($idSite, Piwik_Segment $segment, Period $period, $requestedPlugin, $isArchiveTemporary)
     {
         $this->idArchive = false;
         $this->idSite = $idSite;
@@ -113,7 +114,7 @@ class Piwik_DataAccess_ArchiveWriter
         return self::makeLockName($this->idSite, $this->period, $this->segment);
     }
 
-    protected static function makeLockName($idsite, Piwik_Period $period, Piwik_Segment $segment)
+    protected static function makeLockName($idsite, Period $period, Piwik_Segment $segment)
     {
         $config = Config::getInstance();
 
diff --git a/core/DataAccess/LogAggregator.php b/core/DataAccess/LogAggregator.php
index 8be8a516f2..0d51091fc7 100644
--- a/core/DataAccess/LogAggregator.php
+++ b/core/DataAccess/LogAggregator.php
@@ -9,6 +9,7 @@
  * @package Piwik
  */
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * This class queries the Visitor logs tables (visits, actions, conversions, ecommerce)
@@ -50,13 +51,13 @@ class Piwik_DataAccess_LogAggregator
     /** @var \Piwik_Date */
     protected $dateEnd;
 
-    /** @var \Piwik_Site */
+    /** @var \Piwik\Site */
     protected $site;
 
     /** @var \Piwik_Segment */
     protected $segment;
 
-    public function __construct(Piwik_Date $dateStart, Piwik_Date $dateEnd, Piwik_Site $site, Piwik_Segment $segment)
+    public function __construct(Piwik_Date $dateStart, Piwik_Date $dateEnd, Site $site, Piwik_Segment $segment)
     {
         $this->dateStart = $dateStart;
         $this->dateEnd = $dateEnd;
diff --git a/core/DataTable/Filter/CalculateEvolutionFilter.php b/core/DataTable/Filter/CalculateEvolutionFilter.php
index f4ad1ea480..e38fb93136 100755
--- a/core/DataTable/Filter/CalculateEvolutionFilter.php
+++ b/core/DataTable/Filter/CalculateEvolutionFilter.php
@@ -8,6 +8,7 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Site;
 
 /**
  * A DataTable filter that calculates the evolution of a metric and adds
@@ -66,7 +67,7 @@ class Piwik_DataTable_Filter_CalculateEvolutionFilter extends Piwik_DataTable_Fi
         // we don't add the new column
         if ($currentValue === false
             && $this->isRevenueEvolution
-            && !Piwik_Site::isEcommerceEnabledFor($row->getColumn('label'))
+            && !Site::isEcommerceEnabledFor($row->getColumn('label'))
         ) {
             return false;
         }
diff --git a/core/DataTable/Renderer/Csv.php b/core/DataTable/Renderer/Csv.php
index 0e1a3f39d4..77d282f659 100644
--- a/core/DataTable/Renderer/Csv.php
+++ b/core/DataTable/Renderer/Csv.php
@@ -8,6 +8,7 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 
@@ -354,7 +355,7 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer
             } else if (strpos($date, ',') !== false) {
                 $period = new Piwik_Period_Range('range', $date);
             } else {
-                $period = Piwik_Period::factory($period, Piwik_Date::factory($date));
+                $period = Period::factory($period, Piwik_Date::factory($date));
             }
 
             $prettyDate = $period->getLocalizedLongString();
diff --git a/core/Period.php b/core/Period.php
index 01705ccbe7..6e74ad4095 100644
--- a/core/Period.php
+++ b/core/Period.php
@@ -8,10 +8,18 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik;
+use Exception;
 use Piwik\Piwik;
+use Piwik_Date;
+use Piwik_Period_Day;
+use Piwik_Period_Month;
+use Piwik_Period_Range;
+use Piwik_Period_Week;
+use Piwik_Period_Year;
 
 /**
- * Creating a new Piwik_Period subclass:
+ * Creating a new Period subclass:
  *
  * Every overloaded method must start with the code
  *        if(!$this->subperiodsProcessed)
@@ -22,13 +30,13 @@ use Piwik\Piwik;
  *    This is for performance improvements, computing the subperiods is done a per demand basis.
  *
  * @package Piwik
- * @subpackage Piwik_Period
+ * @subpackage Period
  */
-abstract class Piwik_Period
+abstract class Period
 {
     /**
      * Array of subperiods
-     * @var Piwik_Period[]
+     * @var \Piwik\Period[]
      */
     protected $subperiods = array();
     protected $subperiodsProcessed = false;
@@ -58,7 +66,7 @@ abstract class Piwik_Period
      * @param string $strPeriod "day", "week", "month", "year"
      * @param Piwik_Date $date Piwik_Date object
      * @throws Exception
-     * @return Piwik_Period
+     * @return \Piwik\Period
      */
     static public function factory($strPeriod, Piwik_Date $date)
     {
@@ -85,7 +93,6 @@ abstract class Piwik_Period
         }
     }
 
-
     /**
      * Indicate if $dateString and $period correspond to multiple periods
      *
@@ -108,29 +115,28 @@ abstract class Piwik_Period
      * method above. It doesn't require an instance of Piwik_Date and works for
      * period=range. Generally speaking, anything that can be passed as period
      * and range to the API methods can directly be forwarded to this factory
-     * method in order to get a suitable instance of Piwik_Period.
+     * method in order to get a suitable instance of Period.
      *
      * @param string $strPeriod "day", "week", "month", "year", "range"
      * @param string $strDate
-     * @return Piwik_Period
+     * @return \Piwik\Period
      */
     static public function advancedFactory($strPeriod, $strDate)
     {
-        if (Piwik_Period::isMultiplePeriod($strDate, $strPeriod) || $strPeriod == 'range') {
+        if (Period::isMultiplePeriod($strDate, $strPeriod) || $strPeriod == 'range') {
             return new Piwik_Period_Range($strPeriod, $strDate);
         }
-        return Piwik_Period::factory($strPeriod, Piwik_Date::factory($strDate));
+        return Period::factory($strPeriod, Piwik_Date::factory($strDate));
     }
 
-
     /**
-     * Creates a period instance using a Piwik_Site instance and two strings describing
+     * Creates a period instance using a Site instance and two strings describing
      * the period & date.
      *
      * @param string $timezone
      * @param string $period The period string: day, week, month, year, range
      * @param string $date The date or date range string.
-     * @return Piwik_Period
+     * @return \Piwik\Period
      */
     public static function makePeriodFromQueryParams($timezone, $period, $date)
     {
@@ -144,12 +150,12 @@ abstract class Piwik_Period
             if (!($date instanceof Piwik_Date)) {
                 if ($date == 'now' || $date == 'today') {
                     $date = date('Y-m-d', Piwik_Date::factory('now', $timezone)->getTimestamp());
-                } elseif ($date == 'yesterday' || $date == 'yesterdaySameTime' ) {
+                } elseif ($date == 'yesterday' || $date == 'yesterdaySameTime') {
                     $date = date('Y-m-d', Piwik_Date::factory('now', $timezone)->subDay(1)->getTimestamp());
                 }
-                $date = Piwik_Date::factory( $date );
+                $date = Piwik_Date::factory($date);
             }
-            $oPeriod = Piwik_Period::factory($period, $date);
+            $oPeriod = Period::factory($period, $date);
         }
         return $oPeriod;
     }
@@ -255,7 +261,7 @@ abstract class Piwik_Period
      * Returns Period_Day for a period made of days (week, month),
      *            Period_Month for a period made of months (year)
      *
-     * @return array Piwik_Period
+     * @return array Period
      */
     public function getSubperiods()
     {
@@ -270,7 +276,7 @@ abstract class Piwik_Period
      *
      * Protected because it not yet supported to add periods after the initialization
      *
-     * @param Piwik_Period $period Valid Piwik_Period object
+     * @param \Piwik\Period $period Valid Period object
      */
     protected function addSubperiod($period)
     {
@@ -315,9 +321,9 @@ abstract class Piwik_Period
     abstract public function getLocalizedShortString();
 
     abstract public function getLocalizedLongString();
-    
+
     public function getRangeString()
     {
-        return $this->getDateStart()->toString("Y-m-d").",".$this->getDateEnd()->toString("Y-m-d");
+        return $this->getDateStart()->toString("Y-m-d") . "," . $this->getDateEnd()->toString("Y-m-d");
     }
 }
diff --git a/core/Period/Day.php b/core/Period/Day.php
index 14cdd16bd7..198662dbe7 100644
--- a/core/Period/Day.php
+++ b/core/Period/Day.php
@@ -8,12 +8,13 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Period;
 
 /**
  * @package Piwik
- * @subpackage Piwik_Period
+ * @subpackage Period
  */
-class Piwik_Period_Day extends Piwik_Period
+class Piwik_Period_Day extends Period
 {
     protected $label = 'day';
 
diff --git a/core/Period/Month.php b/core/Period/Month.php
index fdb8a78dbc..c65bc4179e 100644
--- a/core/Period/Month.php
+++ b/core/Period/Month.php
@@ -8,12 +8,13 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Period;
 
 /**
  * @package Piwik
- * @subpackage Piwik_Period
+ * @subpackage Period
  */
-class Piwik_Period_Month extends Piwik_Period
+class Piwik_Period_Month extends Period
 {
     protected $label = 'month';
 
diff --git a/core/Period/Range.php b/core/Period/Range.php
index f69a0d304e..e8020ad875 100644
--- a/core/Period/Range.php
+++ b/core/Period/Range.php
@@ -9,14 +9,15 @@
  * @package Piwik
  */
 use Piwik\Common;
+use Piwik\Period;
 
 /**
  * from a starting date to an ending date
  *
  * @package Piwik
- * @subpackage Piwik_Period
+ * @subpackage Period
  */
-class Piwik_Period_Range extends Piwik_Period
+class Piwik_Period_Range extends Period
 {
     protected $label = 'range';
 
@@ -328,14 +329,14 @@ class Piwik_Period_Range extends Piwik_Period
     protected function fillArraySubPeriods($startDate, $endDate, $period)
     {
         $arrayPeriods = array();
-        $endSubperiod = Piwik_Period::factory($period, $endDate);
+        $endSubperiod = Period::factory($period, $endDate);
         $arrayPeriods[] = $endSubperiod;
 
         // set end date to start of end period since we're comparing against start date.
         $endDate = $endSubperiod->getDateStart();
         while ($endDate->isLater($startDate)) {
             $endDate = self::removePeriod($period, $endDate, 1);
-            $subPeriod = Piwik_Period::factory($period, $endDate);
+            $subPeriod = Period::factory($period, $endDate);
             $arrayPeriods[] = $subPeriod;
         }
         $arrayPeriods = array_reverse($arrayPeriods);
@@ -351,7 +352,7 @@ class Piwik_Period_Range extends Piwik_Period
      * @param bool|string $period The period to use (either 'day', 'week', 'month', 'year');
      *
      * @return array An array with two elements, a string for the date before $date and
-     *               a Piwik_Period instance for the period before $date.
+     *               a Period instance for the period before $date.
      */
     public static function getLastDate($date = false, $period = false)
     {
diff --git a/core/Period/Week.php b/core/Period/Week.php
index 9b84f05b11..1933a0aa5c 100644
--- a/core/Period/Week.php
+++ b/core/Period/Week.php
@@ -8,12 +8,13 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Period;
 
 /**
  * @package Piwik
- * @subpackage Piwik_Period
+ * @subpackage Period
  */
-class Piwik_Period_Week extends Piwik_Period
+class Piwik_Period_Week extends Period
 {
     protected $label = 'week';
 
diff --git a/core/Period/Year.php b/core/Period/Year.php
index 7ab5efbabe..d83e2ac842 100644
--- a/core/Period/Year.php
+++ b/core/Period/Year.php
@@ -8,12 +8,13 @@
  * @category Piwik
  * @package Piwik
  */
+use Piwik\Period;
 
 /**
  * @package Piwik
- * @subpackage Piwik_Period
+ * @subpackage Period
  */
-class Piwik_Period_Year extends Piwik_Period
+class Piwik_Period_Year extends Period
 {
     protected $label = 'year';
 
diff --git a/core/Piwik.php b/core/Piwik.php
index 0e07c888ca..4e87890aa3 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -26,7 +26,7 @@ use Piwik_Log_Message;
 use Piwik_Plugin;
 use Piwik_PluginsManager;
 use Piwik_Session;
-use Piwik_Site;
+use Piwik\Site;
 use Piwik_Tracker;
 use Piwik_Tracker_Cache;
 use Piwik_Tracker_Db;
@@ -1311,7 +1311,7 @@ class Piwik
     static public function getCurrency($idSite)
     {
         $symbols = self::getCurrencyList();
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         $currency = $site->getCurrency();
         if (isset($symbols[$currency])) {
             return $symbols[$currency][0];
diff --git a/core/Site.php b/core/Site.php
index f341aa7208..da655b9a74 100644
--- a/core/Site.php
+++ b/core/Site.php
@@ -9,11 +9,16 @@
  * @package Piwik
  */
 
+namespace Piwik;
+use Exception;
+use Piwik_Date;
+use Piwik_SitesManager_API;
+
 /**
  *
  * @package Piwik
  */
-class Piwik_Site
+class Site
 {
     /**
      * @var int|null
diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php
index be9770ce6d..05b59f0b29 100644
--- a/core/ViewDataTable.php
+++ b/core/ViewDataTable.php
@@ -9,8 +9,10 @@
  * @package Piwik
  */
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * This class is used to load (from the API) and customize the output of a given DataTable.
@@ -1527,7 +1529,7 @@ abstract class Piwik_ViewDataTable
             if ($strPeriod == 'range') {
                 $idSite = Common::getRequestVar('idSite', '');
                 if (intval($idSite) != 0) {
-                    $site = new Piwik_Site($idSite);
+                    $site = new Site($idSite);
                     $timezone = $site->getTimezone();
                 } else {
                     $timezone = 'UTC';
@@ -1536,7 +1538,7 @@ abstract class Piwik_ViewDataTable
                 $period = new Piwik_Period_Range('range', $strDate, $timezone);
                 $reportDate = $period->getDateStart();
             } // if a multiple period, this function is irrelevant
-            else if (Piwik_Period::isMultiplePeriod($strDate, $strPeriod)) {
+            else if (Period::isMultiplePeriod($strDate, $strPeriod)) {
                 return false;
             } // otherwise, use the date as given
             else {
diff --git a/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php b/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php
index 125c1c92ed..9fd005e132 100644
--- a/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php
+++ b/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php
@@ -10,6 +10,7 @@
  */
 
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * Generates HTML embed for the Evolution graph
@@ -132,7 +133,7 @@ class Piwik_ViewDataTable_GenerateGraphHTML_ChartEvolution extends Piwik_ViewDat
         $lastNParamName = self::getLastNParamName($period);
         $lastN = Common::getRequestVar($lastNParamName, $defaultLastN, 'int');
 
-        $site = new Piwik_Site(Common::getRequestVar('idSite'));
+        $site = new Site(Common::getRequestVar('idSite'));
 
         $dateRange = Piwik_Controller::getDateRangeRelativeToEndDate($period, 'last' . $lastN, $endDate, $site);
 
diff --git a/core/ViewDataTable/HtmlTable/Goals.php b/core/ViewDataTable/HtmlTable/Goals.php
index dbe8fc8338..4fa4980d72 100644
--- a/core/ViewDataTable/HtmlTable/Goals.php
+++ b/core/ViewDataTable/HtmlTable/Goals.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * @package Piwik
@@ -114,7 +115,7 @@ class Piwik_ViewDataTable_HtmlTable_Goals extends Piwik_ViewDataTable_HtmlTable
                 'name'   => Piwik_Translate('Goals_EcommerceOrder')
             );
 
-            $site = new Piwik_Site($idSite);
+            $site = new Site($idSite);
             //Case Ecommerce report table
             if ($this->isEcommerce) {
                 $goals = array($ecommerceGoal);
diff --git a/plugins/API/ProcessedReport.php b/plugins/API/ProcessedReport.php
index 70b51f91a5..1788ce79c8 100644
--- a/plugins/API/ProcessedReport.php
+++ b/plugins/API/ProcessedReport.php
@@ -1,6 +1,8 @@
 <?php
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * Piwik - Open source web analytics
@@ -64,7 +66,7 @@ class Piwik_API_ProcessedReport
      */
     public function getReportMetadata($idSites, $period = false, $date = false, $hideMetricsDoc = false, $showSubtableReports = false)
     {
-        $idSites = Piwik_Site::getIdSitesFromIdSitesString($idSites);
+        $idSites = Site::getIdSitesFromIdSitesString($idSites);
         if (!empty($idSites)) {
             Piwik::checkUserHasViewAccess($idSites);
         }
@@ -279,9 +281,9 @@ class Piwik_API_ProcessedReport
         foreach ($columns as $columnId => &$name) {
             $name = ucfirst($name);
         }
-        $website = new Piwik_Site($idSite);
+        $website = new Site($idSite);
 
-        $period = Piwik_Period::advancedFactory($period, $date);
+        $period = Period::advancedFactory($period, $date);
         $period = $period->getLocalizedLongString();
 
         $return = array(
diff --git a/plugins/API/RowEvolution.php b/plugins/API/RowEvolution.php
index ba6a63bdb8..cd7f469b94 100644
--- a/plugins/API/RowEvolution.php
+++ b/plugins/API/RowEvolution.php
@@ -8,6 +8,7 @@
  * @category Piwik_Plugins
  * @package Piwik_API
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 
@@ -27,7 +28,7 @@ class Piwik_API_RowEvolution
             $period = 'day';
         }
 
-        if (!Piwik_Period::isMultiplePeriod($date, $period)) {
+        if (!Period::isMultiplePeriod($date, $period)) {
             throw new Exception("Row evolutions can not be processed with this combination of \'date\' and \'period\' parameters.");
         }
 
diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php
index 103672f37b..cb8716aba0 100644
--- a/plugins/Actions/Actions.php
+++ b/plugins/Actions/Actions.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * Actions plugin
@@ -561,7 +562,7 @@ class Piwik_Actions extends Piwik_Plugin
         if ($idSite == 0) {
             return false;
         }
-        return Piwik_Site::isSiteSearchEnabledFor($idSite);
+        return Site::isSiteSearchEnabledFor($idSite);
     }
 
     /**
diff --git a/plugins/Annotations/API.php b/plugins/Annotations/API.php
index 92dd4f18e4..faa7d76c97 100755
--- a/plugins/Annotations/API.php
+++ b/plugins/Annotations/API.php
@@ -8,6 +8,7 @@
  * @category Piwik_Plugins
  * @package Piwik_Annotations
  */
+use Piwik\Period;
 use Piwik\Piwik;
 
 /**
@@ -318,7 +319,7 @@ class Piwik_Annotations_API
             if ($period == 'range') {
                 $oPeriod = new Piwik_Period_Range('day', $date);
             } else {
-                $oPeriod = Piwik_Period::factory($period, Piwik_Date::factory($date));
+                $oPeriod = Period::factory($period, Piwik_Date::factory($date));
             }
 
             $startDate = $oPeriod->getDateStart();
diff --git a/plugins/Annotations/AnnotationList.php b/plugins/Annotations/AnnotationList.php
index 0b0ca1ea44..4d15e91e50 100755
--- a/plugins/Annotations/AnnotationList.php
+++ b/plugins/Annotations/AnnotationList.php
@@ -9,6 +9,7 @@
  * @package Piwik_Annotations
  */
 use Piwik\Piwik;
+use Piwik\Site;
 
 /**
  * This class can be used to query & modify annotations for multiple sites
@@ -52,7 +53,7 @@ class Piwik_Annotations_AnnotationList
      */
     public function __construct($idSites)
     {
-        $this->idSites = Piwik_Site::getIdSitesFromIdSitesString($idSites);
+        $this->idSites = Site::getIdSitesFromIdSitesString($idSites);
         $this->annotations = $this->getAnnotationsForSite();
     }
 
@@ -214,7 +215,7 @@ class Piwik_Annotations_AnnotationList
     public function search($startDate, $endDate, $idSite = false)
     {
         if ($idSite) {
-            $idSites = Piwik_Site::getIdSitesFromIdSitesString($idSite);
+            $idSites = Site::getIdSitesFromIdSitesString($idSite);
         } else {
             $idSites = array_keys($this->annotations);
         }
diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php
index d192c17ca7..d9bf9b4cee 100644
--- a/plugins/CoreAdminHome/API.php
+++ b/plugins/CoreAdminHome/API.php
@@ -8,8 +8,10 @@
  * @category Piwik_Plugins
  * @package Piwik_CoreAdminHome
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * @package Piwik_CoreAdminHome
@@ -71,7 +73,7 @@ class Piwik_CoreAdminHome_API
      */
     public function invalidateArchivedReports($idSites, $dates)
     {
-        $idSites = Piwik_Site::getIdSitesFromIdSitesString($idSites);
+        $idSites = Site::getIdSitesFromIdSitesString($idSites);
         if (empty($idSites)) {
             throw new Exception("Specify a value for &idSites= as a comma separated list of website IDs, for which your token_auth has 'admin' permission");
         }
@@ -130,7 +132,7 @@ class Piwik_CoreAdminHome_API
 
             // but also weeks overlapping several months stored in the month where the week is starting
             /* @var $week Piwik_Period_Week */
-            $week = Piwik_Period::factory('week', $date);
+            $week = Period::factory('week', $date);
             $weekAsString = $week->getDateStart()->toString('Y_m');
             $datesByMonth[$weekAsString][] = $date->toString();
 
@@ -186,7 +188,7 @@ class Piwik_CoreAdminHome_API
         $invalidatedIdSites = array_values($invalidatedIdSites);
         Piwik_SetOption(self::OPTION_INVALIDATED_IDSITES, serialize($invalidatedIdSites));
 
-        Piwik_Site::clearCache();
+        Site::clearCache();
 
         $output = array();
         // output logs
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index 1cc8afb6c4..612a9e1c3e 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -11,6 +11,7 @@
 use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -137,7 +138,7 @@ class Piwik_CoreAdminHome_Controller extends Piwik_Controller_Admin
         $defaultIdSite = reset($viewableIdSites);
         $view->idSite = Common::getRequestVar('idSite', $defaultIdSite, 'int');
 
-        $view->defaultReportSiteName = Piwik_Site::getNameFor($view->idSite);
+        $view->defaultReportSiteName = Site::getNameFor($view->idSite);
         $view->defaultSiteRevenue = Piwik::getCurrency($view->idSite);
 
         $allUrls = Piwik_SitesManager_API::getInstance()->getSiteUrlsFromId($view->idSite);
@@ -148,7 +149,7 @@ class Piwik_CoreAdminHome_Controller extends Piwik_Controller_Admin
         }
         $view->defaultReportSiteAlias = $aliasUrl;
 
-        $mainUrl = Piwik_Site::getMainUrlFor($view->idSite);
+        $mainUrl = Site::getMainUrlFor($view->idSite);
         $view->defaultReportSiteDomain = @parse_url($mainUrl, PHP_URL_HOST);
 
         // get currencies for each viewable site
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index d6afe9e354..ded8a80658 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -73,7 +74,7 @@ class Piwik_CoreHome_Controller extends Piwik_Controller
         }
         $websiteId = Common::getRequestVar('idSite', false, 'int');
         if ($websiteId) {
-            $website = new Piwik_Site($websiteId);
+            $website = new Site($websiteId);
             $datetimeCreationDate = $this->site->getCreationDate()->getDatetime();
             $creationDateLocalTimezone = Piwik_Date::factory($datetimeCreationDate, $website->getTimezone())->toString('Y-m-d');
             $todayLocalTimezone = Piwik_Date::factory('now', $website->getTimezone())->toString('Y-m-d');
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php
index 6c8a4830b1..7548104be9 100644
--- a/plugins/Dashboard/Dashboard.php
+++ b/plugins/Dashboard/Dashboard.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * @package Piwik_Dashboard
@@ -212,7 +213,7 @@ class Piwik_Dashboard extends Piwik_Plugin
         $tooltip = false;
         try {
             $idSite = Common::getRequestVar('idSite');
-            $tooltip = Piwik_Translate('Dashboard_TopLinkTooltip', Piwik_Site::getNameFor($idSite));
+            $tooltip = Piwik_Translate('Dashboard_TopLinkTooltip', Site::getNameFor($idSite));
         } catch (Exception $ex) {
             // if no idSite parameter, show no tooltip
         }
diff --git a/plugins/ExamplePlugin/Controller.php b/plugins/ExamplePlugin/Controller.php
index 33b8e1d605..7ff7a79042 100644
--- a/plugins/ExamplePlugin/Controller.php
+++ b/plugins/ExamplePlugin/Controller.php
@@ -76,7 +76,7 @@ class Piwik_ExamplePlugin_Controller extends Piwik_Controller
         $out .= '<code>$this->date</code> = current selected <b>Piwik_Date</b> object (<a href="https://github.com/piwik/piwik/blob/master/core/Date.php">class</a>)<br />';
         $out .= '<code>$period = Common::getRequestVar("period");</code> - Get the current selected period<br />';
         $out .= '<code>$idSite = Common::getRequestVar("idSite");</code> - Get the selected idSite<br />';
-        $out .= '<code>$site = new Piwik_Site($idSite);</code> - Build the Piwik_Site object (<a href="https://github.com/piwik/piwik/tree/master/core/Site.php">class</a>)<br />';
+        $out .= '<code>$site = new Site($idSite);</code> - Build the Site object (<a href="https://github.com/piwik/piwik/tree/master/core/Site.php">class</a>)<br />';
         $out .= '<code>$this->str_date</code> = current selected date in YYYY-MM-DD format<br />';
 
         $out .= '<h3>Misc</h3>';
diff --git a/plugins/Goals/API.php b/plugins/Goals/API.php
index 98bfacd0b6..aeffa5583b 100644
--- a/plugins/Goals/API.php
+++ b/plugins/Goals/API.php
@@ -11,6 +11,7 @@
 use Piwik\Archive;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * Goals API lets you Manage existing goals, via "updateGoal" and "deleteGoal", create new Goals via "addGoal",
@@ -57,7 +58,7 @@ class Piwik_Goals_API
     {
         //TODO calls to this function could be cached as static
         // would help UI at least, since some UI requests would call this 2-3 times..
-        $idSite = Piwik_Site::getIdSitesFromIdSitesString($idSite);
+        $idSite = Site::getIdSitesFromIdSitesString($idSite);
         if (empty($idSite)) {
             return array();
         }
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index e612295dc1..dc3445cb88 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -216,7 +217,7 @@ class Piwik_Goals extends Piwik_Plugin
                 );
             }
 
-            $site = new Piwik_Site($idSite);
+            $site = new Site($idSite);
             if ($site->isEcommerceEnabled()) {
                 $category = Piwik_Translate('Goals_Ecommerce');
                 $ecommerceMetrics = array_merge($goalMetrics, array(
@@ -413,7 +414,7 @@ class Piwik_Goals extends Piwik_Plugin
         $idSite = Common::getRequestVar('idSite', null, 'int');
 
         // Ecommerce widgets
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         if ($site->isEcommerceEnabled()) {
             Piwik_AddWidget('Goals_Ecommerce', 'Goals_EcommerceOverview', 'Goals', 'widgetGoalReport', array('idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER));
             Piwik_AddWidget('Goals_Ecommerce', 'Goals_EcommerceLog', 'Goals', 'getEcommerceLog');
@@ -437,7 +438,7 @@ class Piwik_Goals extends Piwik_Plugin
         $idSite = Common::getRequestVar('idSite', null, 'int');
         $goals = Piwik_Goals_API::getInstance()->getGoals($idSite);
         $mainGoalMenu = $this->getGoalCategoryName($idSite);
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         if (count($goals) == 0) {
             Piwik_AddMenu($mainGoalMenu, '', array(
                                                   'module' => 'Goals',
@@ -469,7 +470,7 @@ class Piwik_Goals extends Piwik_Plugin
 
     protected function getGoalCategoryName($idSite)
     {
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         return $site->isEcommerceEnabled() ? 'Goals_EcommerceAndGoalsMenu' : 'Goals_Goals';
     }
 
diff --git a/plugins/ImageGraph/API.php b/plugins/ImageGraph/API.php
index 4087b7a18d..dd6967b56b 100644
--- a/plugins/ImageGraph/API.php
+++ b/plugins/ImageGraph/API.php
@@ -8,6 +8,7 @@
  * @category Piwik_Plugins
  * @package Piwik_ImageGraph
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 
@@ -171,7 +172,7 @@ class Piwik_ImageGraph_API
             $reportHasDimension = !empty($metadata['dimension']);
             $constantRowsCount = !empty($metadata['constantRowsCount']);
 
-            $isMultiplePeriod = Piwik_Period::isMultiplePeriod($date, $period);
+            $isMultiplePeriod = Period::isMultiplePeriod($date, $period);
             if (!$reportHasDimension && !$isMultiplePeriod) {
                 throw new Exception('The graph cannot be drawn for this combination of \'date\' and \'period\' parameters.');
             }
diff --git a/plugins/ImageGraph/ImageGraph.php b/plugins/ImageGraph/ImageGraph.php
index 60ff3dc27c..73743ccbba 100644
--- a/plugins/ImageGraph/ImageGraph.php
+++ b/plugins/ImageGraph/ImageGraph.php
@@ -1,5 +1,7 @@
 <?php
 use Piwik\Common;
+use Piwik\Period;
+use Piwik\Site;
 
 /**
  * Piwik - Open source web analytics
@@ -70,7 +72,7 @@ class Piwik_ImageGraph extends Piwik_Plugin
         }
 
         // need two sets of period & date, one for single period graphs, one for multiple periods graphs
-        if (Piwik_Period::isMultiplePeriod($info['date'], $info['period'])) {
+        if (Period::isMultiplePeriod($info['date'], $info['period'])) {
             $periodForMultiplePeriodGraph = $info['period'];
             $dateForMultiplePeriodGraph = $info['date'];
 
@@ -80,7 +82,7 @@ class Piwik_ImageGraph extends Piwik_Plugin
             $periodForSinglePeriodGraph = $info['period'];
             $dateForSinglePeriodGraph = $info['date'];
 
-            $piwikSite = new Piwik_Site($idSite);
+            $piwikSite = new Site($idSite);
             if ($periodForSinglePeriodGraph == 'range') {
                 $periodForMultiplePeriodGraph = Config::getInstance()->General['graphs_default_period_to_plot_when_period_range'];
                 $dateForMultiplePeriodGraph = $dateForSinglePeriodGraph;
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index 27652141d1..78bc6802bd 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -9,8 +9,10 @@
  * @package Piwik_Live
  */
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * @see plugins/Referers/functions.php
@@ -166,7 +168,7 @@ class Piwik_Live_API
 
         $table = new Piwik_DataTable();
 
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         $timezone = $site->getTimezone();
         $currencies = Piwik_SitesManager_API::getInstance()->getCurrencySymbols();
         foreach ($visitorDetails as $visitorDetail) {
@@ -345,7 +347,7 @@ class Piwik_Live_API
 
         // SQL Filter with provided period
         if (!empty($period) && !empty($date)) {
-            $currentSite = new Piwik_Site($idSite);
+            $currentSite = new Site($idSite);
             $currentTimezone = $currentSite->getTimezone();
 
             $dateString = $date;
@@ -362,7 +364,7 @@ class Piwik_Live_API
                 ) {
                     $processedDate = $processedDate->subDay(1);
                 }
-                $processedPeriod = Piwik_Period::factory($period, $processedDate);
+                $processedPeriod = Period::factory($period, $processedDate);
             }
             $dateStart = $processedPeriod->getDateStart()->setTimezone($currentTimezone);
             $where[] = "log_visit.visit_last_action_time >= ?";
diff --git a/plugins/MobileMessaging/ReportRenderer/Sms.php b/plugins/MobileMessaging/ReportRenderer/Sms.php
index d752b50e84..68bc22691a 100644
--- a/plugins/MobileMessaging/ReportRenderer/Sms.php
+++ b/plugins/MobileMessaging/ReportRenderer/Sms.php
@@ -9,7 +9,7 @@
  * @package Piwik_MobileMessaging_ReportRenderer
  */
 use Piwik\Common;
-
+use Piwik\Site;
 
 /**
  *
@@ -111,7 +111,7 @@ class Piwik_MobileMessaging_ReportRenderer_Sms extends Piwik_ReportRenderer
         $siteHasECommerce = array();
         foreach ($reportRowsMetadata as $rowMetadata) {
             $idSite = $rowMetadata->getColumn('idsite');
-            $siteHasECommerce[$idSite] = Piwik_Site::isEcommerceEnabledFor($idSite);
+            $siteHasECommerce[$idSite] = Site::isEcommerceEnabledFor($idSite);
         }
 
         $view = new Piwik_View('@MobileMessaging/SMSReport');
diff --git a/plugins/MultiSites/API.php b/plugins/MultiSites/API.php
index 92d56adea7..16a5440916 100755
--- a/plugins/MultiSites/API.php
+++ b/plugins/MultiSites/API.php
@@ -11,6 +11,7 @@
 use Piwik\Archive;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * The MultiSites API lets you request the key metrics (visits, page views, revenue) for all Websites in Piwik.
@@ -178,11 +179,11 @@ class Piwik_MultiSites_API
                 // Instead, we make sure that only the right set of data is returned
                 && !Piwik_TaskScheduler::isTaskBeingExecuted()
             ) {
-                Piwik_Site::setSites(
+                Site::setSites(
                     Piwik_SitesManager_API::getInstance()->getAllSites()
                 );
             } else {
-                Piwik_Site::setSitesFromArray(
+                Site::setSitesFromArray(
                     Piwik_SitesManager_API::getInstance()->getSitesWithAtLeastViewAccess($limit = false, $_restrictSitesToLogin)
                 );
             }
@@ -267,7 +268,7 @@ class Piwik_MultiSites_API
 
             foreach ($dataTableRows as $dataTableRow) {
                 $siteId = $dataTableRow->getColumn('label');
-                if (!Piwik_Site::isEcommerceEnabledFor($siteId)) {
+                if (!Site::isEcommerceEnabledFor($siteId)) {
                     foreach ($apiECommerceMetrics as $metricSettings) {
                         $dataTableRow->deleteColumn($metricSettings[self::METRIC_RECORD_NAME_KEY]);
                         $dataTableRow->deleteColumn($metricSettings[self::METRIC_EVOLUTION_COL_NAME_KEY]);
@@ -281,7 +282,7 @@ class Piwik_MultiSites_API
 
         // set the label of each row to the site name
         if ($multipleWebsitesRequested) {
-            $getNameFor = array('Piwik_Site', 'getNameFor');
+            $getNameFor = array('Site', 'getNameFor');
             $dataTable->filter('ColumnCallbackReplace', array('label', $getNameFor));
         } else {
             $dataTable->filter('ColumnDelete', array('label'));
diff --git a/plugins/MultiSites/Controller.php b/plugins/MultiSites/Controller.php
index 107f1923ce..992cfa6be0 100644
--- a/plugins/MultiSites/Controller.php
+++ b/plugins/MultiSites/Controller.php
@@ -8,9 +8,11 @@
  * @category Piwik_Plugins
  * @package Piwik_MultiSites
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Config;
+use Piwik\Site;
 
 /**
  *
@@ -69,12 +71,12 @@ class Piwik_MultiSites_Controller extends Piwik_Controller
         // put data into a form the template will understand better
         $digestableData = array();
         foreach ($siteIds as $idSite) {
-            $isEcommerceEnabled = Piwik_Site::isEcommerceEnabledFor($idSite);
+            $isEcommerceEnabled = Site::isEcommerceEnabledFor($idSite);
 
             $digestableData[$idSite] = array(
                 'idsite'    => $idSite,
-                'main_url'  => Piwik_Site::getMainUrlFor($idSite),
-                'name'      => Piwik_Site::getNameFor($idSite),
+                'main_url'  => Site::getMainUrlFor($idSite),
+                'name'      => Site::getNameFor($idSite),
                 'visits'    => 0,
                 'pageviews' => 0
             );
@@ -140,7 +142,7 @@ class Piwik_MultiSites_Controller extends Piwik_Controller
         }
 
         if ($period != 'range') {
-            $lastPeriod = Piwik_Period::factory($period, $dataTable->getMetadata('last_period_date'));
+            $lastPeriod = Period::factory($period, $dataTable->getMetadata('last_period_date'));
             $view->pastPeriodPretty = self::getCalendarPrettyDate($lastPeriod);
         }
 
@@ -180,14 +182,14 @@ class Piwik_MultiSites_Controller extends Piwik_Controller
         $maxDate = $now->subDay(1)->getTimestamp();
         foreach ($siteIds as $idsite) {
             // look for 'now' in the website's timezone
-            $timezone = Piwik_Site::getTimezoneFor($idsite);
+            $timezone = Site::getTimezoneFor($idsite);
             $date = Piwik_Date::adjustForTimezone($now->getTimestamp(), $timezone);
             if ($date > $maxDate) {
                 $maxDate = $date;
             }
 
             // look for the absolute minimum date
-            $creationDate = Piwik_Site::getCreationDateFor($idsite);
+            $creationDate = Site::getCreationDateFor($idsite);
             $date = Piwik_Date::adjustForTimezone(strtotime($creationDate), $timezone);
             if (is_null($minDate) || $date < $minDate) {
                 $minDate = $date;
diff --git a/plugins/PDFReports/API.php b/plugins/PDFReports/API.php
index f177eaf4e7..b8a3d1b8dd 100644
--- a/plugins/PDFReports/API.php
+++ b/plugins/PDFReports/API.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * The PDFReports API lets you manage Scheduled Email reports, as well as generate, download or email any existing report.
@@ -379,7 +380,7 @@ class Piwik_PDFReports_API
 
             $processedReport['segment'] = $segment;
 
-            // TODO add static method getPrettyDate($period, $date) in Piwik_Period
+            // TODO add static method getPrettyDate($period, $date) in Period
             $prettyDate = $processedReport['prettyDate'];
 
             if ($mustRestoreGET) {
@@ -419,7 +420,7 @@ class Piwik_PDFReports_API
         // render report
         $description = str_replace(array("\r", "\n"), ' ', $report['description']);
 
-        list($reportSubject, $reportTitle) = self::getReportSubjectAndReportTitle(Piwik_Site::getNameFor($idSite), $report['reports']);
+        list($reportSubject, $reportTitle) = self::getReportSubjectAndReportTitle(Site::getNameFor($idSite), $report['reports']);
         $filename = "$reportTitle - $prettyDate - $description";
 
         $reportRenderer->renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata, $segment);
diff --git a/plugins/PDFReports/PDFReports.php b/plugins/PDFReports/PDFReports.php
index 9130c2e291..2dde8fb0bb 100644
--- a/plugins/PDFReports/PDFReports.php
+++ b/plugins/PDFReports/PDFReports.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -416,7 +417,7 @@ class Piwik_PDFReports extends Piwik_Plugin
                         'H',
                         Piwik_Date::factory(
                             $arbitraryDateInUTC,
-                            Piwik_Site::getTimezoneFor($report['idsite'])
+                            Site::getTimezoneFor($report['idsite'])
                         )->getTimestamp()
                     );
 
diff --git a/plugins/SEO/Controller.php b/plugins/SEO/Controller.php
index c09ce235d1..b33aac8986 100644
--- a/plugins/SEO/Controller.php
+++ b/plugins/SEO/Controller.php
@@ -9,6 +9,7 @@
  * @package Piwik_SEO
  */
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * @package Piwik_SEO
@@ -18,7 +19,7 @@ class Piwik_SEO_Controller extends Piwik_Controller
     function getRank()
     {
         $idSite = Common::getRequestVar('idSite');
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
 
         $url = urldecode(Common::getRequestVar('url', '', 'string'));
 
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 667258c327..c9a12e710c 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -11,6 +11,7 @@
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Access;
+use Piwik\Site;
 
 /**
  * The SitesManager API gives you full control on Websites in Piwik (create, update and delete), and many methods to retrieve websites based on various attributes.
@@ -155,7 +156,7 @@ class Piwik_SitesManager_API
     public function getSiteUrlsFromId($idSite)
     {
         Piwik::checkUserHasViewAccess($idSite);
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         $urls = $this->getAliasSiteUrlsFromId($idSite);
         return array_merge(array($site->getMainUrl()), $urls);
     }
@@ -543,7 +544,7 @@ class Piwik_SitesManager_API
 
     private function postUpdateWebsite($idSite)
     {
-        Piwik_Site::clearCache();
+        Site::clearCache();
         Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($idSite);
     }
 
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index c6e518dbc9..55a4e8383b 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -26,11 +27,11 @@ class Piwik_SitesManager_Controller extends Piwik_Controller_Admin
 
         if (Piwik::isUserIsSuperUser()) {
             $sites = Piwik_SitesManager_API::getInstance()->getAllSites();
-            Piwik_Site::setSites($sites);
+            Site::setSites($sites);
             $sites = array_values($sites);
         } else {
             $sites = Piwik_SitesManager_API::getInstance()->getSitesWithAdminAccess();
-            Piwik_Site::setSitesFromArray($sites);
+            Site::setSitesFromArray($sites);
         }
 
         foreach ($sites as &$site) {
@@ -123,7 +124,7 @@ class Piwik_SitesManager_Controller extends Piwik_Controller_Admin
         $view = new Piwik_View('@SitesManager/displayJavascriptCode');
         $this->setBasicVariablesView($view);
         $view->idSite = $idSite;
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         $view->displaySiteName = $site->getName();
         $view->jsTag = $jsTag;
         echo $view->render();
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index 739d07af7d..ccb17fc875 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -8,8 +8,10 @@
  * @category Piwik_Plugins
  * @package Piwik_Transitions
  */
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  * @package Piwik_Transitions
@@ -65,8 +67,8 @@ class Piwik_Transitions_API
 
         // prepare archive processing that can be used by the archiving code
         $segment = new Piwik_Segment($segment, $idSite);
-        $site = new Piwik_Site($idSite);
-        $period = Piwik_Period::advancedFactory($period, $date);
+        $site = new Site($idSite);
+        $period = Period::advancedFactory($period, $date);
         $archiveProcessor = new Piwik_ArchiveProcessor_Day($period, $site, $segment);
         $logAggregator = $archiveProcessor->getLogAggregator();
         // prepare the report
diff --git a/plugins/UserCountryMap/Controller.php b/plugins/UserCountryMap/Controller.php
index 08989db237..5230677287 100644
--- a/plugins/UserCountryMap/Controller.php
+++ b/plugins/UserCountryMap/Controller.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -114,7 +115,7 @@ class Piwik_UserCountryMap_Controller extends Piwik_Controller
         $view->liveRefreshAfterMs = (int)Config::getInstance()->General['live_widget_refresh_after_seconds'] * 1000;
 
         $goals = Piwik_Goals_API::getInstance()->getGoals($idSite);
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
         $view->hasGoals = !empty($goals) || $site->isEcommerceEnabled() ? 'true' : 'false';
 
         // maximum number of visits to be displayed in the map
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index 17a2c84c47..2337d76d63 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -12,6 +12,7 @@ use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Access;
+use Piwik\Site;
 
 /**
  * The UsersManager API lets you Manage Users and their permissions to access specific websites.
@@ -540,7 +541,7 @@ class Piwik_UsersManager_API
             $idSites = Piwik_SitesManager_API::getInstance()->getSitesIdWithAdminAccess();
         } // in case the idSites is an integer we build an array
         else {
-            $idSites = Piwik_Site::getIdSitesFromIdSitesString($idSites);
+            $idSites = Site::getIdSitesFromIdSitesString($idSites);
         }
 
         if (empty($idSites)) {
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index 9c8cae77ca..29f567757c 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -44,7 +45,7 @@ class Piwik_UsersManager_Controller extends Piwik_Controller_Admin
             $defaultReportSiteName = Piwik_Translate('UsersManager_ApplyToAllWebsites');
         } else {
             $usersAccessByWebsite = Piwik_UsersManager_API::getInstance()->getUsersAccessFromSite($idSiteSelected);
-            $defaultReportSiteName = Piwik_Site::getNameFor($idSiteSelected);
+            $defaultReportSiteName = Site::getNameFor($idSiteSelected);
         }
 
         // we dont want to display the user currently logged so that the user can't change his settings from admin to view...
@@ -142,9 +143,9 @@ class Piwik_UsersManager_Controller extends Piwik_Controller_Admin
         $view->defaultReport = $defaultReport;
 
         if ($defaultReport == 'MultiSites') {
-            $view->defaultReportSiteName = Piwik_Site::getNameFor($this->getDefaultWebsiteId());
+            $view->defaultReportSiteName = Site::getNameFor($this->getDefaultWebsiteId());
         } else {
-            $view->defaultReportSiteName = Piwik_Site::getNameFor($defaultReport);
+            $view->defaultReportSiteName = Site::getNameFor($defaultReport);
         }
 
         $view->defaultDate = $this->getDefaultDateForUser($userLogin);
diff --git a/plugins/VisitTime/API.php b/plugins/VisitTime/API.php
index 78a084aaf0..c8a3dd86e6 100644
--- a/plugins/VisitTime/API.php
+++ b/plugins/VisitTime/API.php
@@ -9,7 +9,9 @@
  * @package Piwik_VisitTime
  */
 use Piwik\Archive;
+use Piwik\Period;
 use Piwik\Piwik;
+use Piwik\Site;
 
 /**
  * VisitTime API lets you access reports by Hour (Server time), and by Hour Local Time of your visitors.
@@ -73,12 +75,12 @@ class Piwik_VisitTime_API
         unset($metrics[Piwik_Metrics::INDEX_MAX_ACTIONS]);
         
         // disabled for multiple dates
-        if (Piwik_Period::isMultiplePeriod($date, $period)) {
+        if (Period::isMultiplePeriod($date, $period)) {
             throw new Exception("VisitTime.getByDayOfWeek does not support multiple dates.");
         }
 
         // get metric data for every day within the supplied period
-        $oPeriod = Piwik_Period::makePeriodFromQueryParams(Piwik_Site::getTimezoneFor($idSite), $period, $date);
+        $oPeriod = Period::makePeriodFromQueryParams(Site::getTimezoneFor($idSite), $period, $date);
         $dateRange = $oPeriod->getDateStart()->toString() . ',' . $oPeriod->getDateEnd()->toString();
         $archive = Archive::build($idSite, 'day', $dateRange, $segment);
 
@@ -121,7 +123,7 @@ class Piwik_VisitTime_API
 
     protected function removeHoursInFuture($table, $idSite, $period, $date)
     {
-        $site = new Piwik_Site($idSite);
+        $site = new Site($idSite);
 
         if ($period == 'day'
             && ($date == 'today'
diff --git a/plugins/VisitTime/VisitTime.php b/plugins/VisitTime/VisitTime.php
index e8030b7e7d..abd69f7809 100644
--- a/plugins/VisitTime/VisitTime.php
+++ b/plugins/VisitTime/VisitTime.php
@@ -9,6 +9,8 @@
  * @package Piwik_VisitTime
  */
 use Piwik\Common;
+use Piwik\Period;
+use Piwik\Site;
 
 /**
  *
@@ -190,7 +192,7 @@ class Piwik_VisitTime extends Piwik_Plugin
         $period = Common::getRequestVar('period');
 
         // create a period instance
-        $oPeriod = Piwik_Period::makePeriodFromQueryParams(Piwik_Site::getTimezoneFor($idSite), $period, $date);
+        $oPeriod = Period::makePeriodFromQueryParams(Site::getTimezoneFor($idSite), $period, $date);
 
         // set the footer message using the period start & end date
         $start = $oPeriod->getDateStart()->toString();
diff --git a/plugins/VisitorGenerator/Controller.php b/plugins/VisitorGenerator/Controller.php
index 606e8784c7..de621bc6ea 100644
--- a/plugins/VisitorGenerator/Controller.php
+++ b/plugins/VisitorGenerator/Controller.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -87,7 +88,7 @@ class Piwik_VisitorGenerator_Controller extends Piwik_Controller_Admin
         $view->assign('days', $daysToCompute);
         $view->assign('nbActionsTotal', $nbActionsTotal);
         $view->assign('nbRequestsPerSec', round($nbActionsTotal / $timer->getTime(), 0));
-        $view->assign('siteName', Piwik_Site::getNameFor($idSite));
+        $view->assign('siteName', Site::getNameFor($idSite));
         echo $view->render();
     }
 
diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php
index 8a4552f473..493acaab16 100644
--- a/plugins/VisitsSummary/Controller.php
+++ b/plugins/VisitsSummary/Controller.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 /**
  *
@@ -76,7 +77,7 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
         );
 
         $idSite = Common::getRequestVar('idSite');
-        $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
+        $displaySiteSearch = Site::isSiteSearchEnabledFor($idSite);
 
         if ($displaySiteSearch) {
             $selectableColumns[] = 'nb_searches';
@@ -122,7 +123,7 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
 		$view->urlSparklineAvgGenerationTime = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('avg_time_generation')));
 
         $idSite = Common::getRequestVar('idSite');
-        $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
+        $displaySiteSearch = Site::isSiteSearchEnabledFor($idSite);
         if ($displaySiteSearch) {
             $view->urlSparklineNbSearches = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_searches', 'nb_keywords')));
         }
diff --git a/tests/PHPUnit/BaseFixture.php b/tests/PHPUnit/BaseFixture.php
index 82b1b956cc..d738f7ae90 100644
--- a/tests/PHPUnit/BaseFixture.php
+++ b/tests/PHPUnit/BaseFixture.php
@@ -8,6 +8,7 @@
 use Piwik\Config;
 use Piwik\Common;
 use Piwik\Access;
+use Piwik\Site;
 
 /**
  * Base type for all integration test fixtures. Integration test fixtures
@@ -71,7 +72,7 @@ abstract class Test_Piwik_BaseFixture extends PHPUnit_Framework_Assert
         );
 
         // Clear the memory Website cache
-        Piwik_Site::clearCache();
+        Site::clearCache();
 
         return $idSite;
     }
diff --git a/tests/PHPUnit/Benchmarks/ArchiveQueryBenchmark.php b/tests/PHPUnit/Benchmarks/ArchiveQueryBenchmark.php
index e6305563cf..f10f258943 100644
--- a/tests/PHPUnit/Benchmarks/ArchiveQueryBenchmark.php
+++ b/tests/PHPUnit/Benchmarks/ArchiveQueryBenchmark.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\Period;
+
 require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/BenchmarkTestCase.php';
 
 /**
@@ -36,7 +38,7 @@ class ArchiveQueryBenchmark extends BenchmarkTestCase
 
         Piwik_ArchiveProcessor_Rules::$archivingDisabledByTests = true;
         
-        $period = Piwik_Period::factory(self::$fixture->period, Piwik_Date::factory(self::$fixture->date));
+        $period = Period::factory(self::$fixture->period, Piwik_Date::factory(self::$fixture->date));
         $dateRange = $period->getDateStart().','.$period->getDateEnd();
         
         Piwik_VisitsSummary_API::getInstance()->get(self::$fixture->idSite, 'day', $dateRange);
diff --git a/tests/PHPUnit/Core/ArchiveProcessingTest.php b/tests/PHPUnit/Core/ArchiveProcessingTest.php
index a190983ce9..68ec9bb0f4 100644
--- a/tests/PHPUnit/Core/ArchiveProcessingTest.php
+++ b/tests/PHPUnit/Core/ArchiveProcessingTest.php
@@ -1,8 +1,10 @@
 <?php
 use Piwik\Config;
+use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Access;
+use Piwik\Site;
 
 /**
  * Piwik - Open source web analytics
@@ -26,7 +28,7 @@ class ArchiveProcessingTest extends DatabaseTestCase
      * Creates a new website
      *
      * @param string $timezone
-     * @return Piwik_Site
+     * @return Site
      */
     private function _createWebsite($timezone = 'UTC')
     {
@@ -39,8 +41,8 @@ class ArchiveProcessingTest extends DatabaseTestCase
             $excludedQueryParameters = "",
             $timezone);
 
-        Piwik_Site::clearCache();
-        return new Piwik_Site($idSite);
+        Site::clearCache();
+        return new Site($idSite);
     }
 
     /**
@@ -55,7 +57,7 @@ class ArchiveProcessingTest extends DatabaseTestCase
     {
         $site = $this->_createWebsite($siteTimezone);
         $date = Piwik_Date::factory($dateLabel);
-        $period = Piwik_Period::factory($periodLabel, $date);
+        $period = Period::factory($periodLabel, $date);
         $segment = new Piwik_Segment('', $site->getId());
 
 
diff --git a/tests/PHPUnit/Core/PeriodTest.php b/tests/PHPUnit/Core/PeriodTest.php
index c7ab39662b..6021218214 100644
--- a/tests/PHPUnit/Core/PeriodTest.php
+++ b/tests/PHPUnit/Core/PeriodTest.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\Period;
+
 class PeriodTest extends PHPUnit_Framework_TestCase
 {
     /**
@@ -53,7 +55,7 @@ class PeriodTest extends PHPUnit_Framework_TestCase
      */
     public function testFactoryDay()
     {
-        $period = Piwik_Period::factory('day', Piwik_Date::today());
+        $period = Period::factory('day', Piwik_Date::today());
         $this->assertInstanceOf('Piwik_Period_Day', $period);
     }
 
@@ -63,7 +65,7 @@ class PeriodTest extends PHPUnit_Framework_TestCase
      */
     public function testFactoryMonth()
     {
-        $period = Piwik_Period::factory('month', Piwik_Date::today());
+        $period = Period::factory('month', Piwik_Date::today());
         $this->assertInstanceOf('Piwik_Period_Month', $period);
     }
 
@@ -73,7 +75,7 @@ class PeriodTest extends PHPUnit_Framework_TestCase
      */
     public function testFactoryWeek()
     {
-        $period = Piwik_Period::factory('week', Piwik_Date::today());
+        $period = Period::factory('week', Piwik_Date::today());
         $this->assertInstanceOf('Piwik_Period_Week', $period);
     }
 
@@ -83,7 +85,7 @@ class PeriodTest extends PHPUnit_Framework_TestCase
      */
     public function testFactoryYear()
     {
-        $period = Piwik_Period::factory('year', Piwik_Date::today());
+        $period = Period::factory('year', Piwik_Date::today());
         $this->assertInstanceOf('Piwik_Period_Year', $period);
     }
 
@@ -94,7 +96,7 @@ class PeriodTest extends PHPUnit_Framework_TestCase
     public function testFactoryInvalid()
     {
         try {
-            $period = Piwik_Period::factory('inValid', Piwik_Date::today());
+            $period = Period::factory('inValid', Piwik_Date::today());
         } catch (Exception $e) {
             return;
         }
diff --git a/tests/PHPUnit/DatabaseTestCase.php b/tests/PHPUnit/DatabaseTestCase.php
index edce58a99b..3c4fb971d0 100644
--- a/tests/PHPUnit/DatabaseTestCase.php
+++ b/tests/PHPUnit/DatabaseTestCase.php
@@ -7,6 +7,7 @@
  */
 use Piwik\Config;
 use Piwik\Piwik;
+use Piwik\Site;
 
 /**
  * Tests extending DatabaseTestCase are much slower to run: the setUp will
@@ -67,7 +68,7 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
         Piwik_DataTable_Manager::getInstance()->deleteAll();
         Piwik_Option::getInstance()->clearCache();
         Piwik_PDFReports_API::$cache = array();
-        Piwik_Site::clearCache();
+        Site::clearCache();
         Piwik_Tracker_Cache::deleteTrackerCache();
         Config::getInstance()->clear();
         Piwik_DataAccess_ArchiveTableCreator::clear();
diff --git a/tests/PHPUnit/FakeAccess.php b/tests/PHPUnit/FakeAccess.php
index fa8a8b829f..0498531052 100644
--- a/tests/PHPUnit/FakeAccess.php
+++ b/tests/PHPUnit/FakeAccess.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\Site;
+
 /**
  * FakeAccess for UnitTests
  */
@@ -65,7 +67,7 @@ class FakeAccess
             $websitesAccess = Piwik_SitesManager_API::getInstance()->getAllSitesId();
         }
 
-        $idSites = Piwik_Site::getIdSitesFromIdSitesString($idSites);
+        $idSites = Site::getIdSitesFromIdSitesString($idSites);
         foreach ($idSites as $idsite) {
             if (!in_array($idsite, $websitesAccess)) {
                 throw new Exception("checkUserHasAdminAccess Fake exception // string not to be tested");
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index 961f8d02a5..15872d8463 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -9,6 +9,7 @@ use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Access;
+use Piwik\Site;
 
 require_once PIWIK_INCLUDE_PATH . '/libs/PiwikTracker/PiwikTracker.php';
 
@@ -220,7 +221,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
         }
         Piwik_DataTable_Manager::getInstance()->deleteAll();
         Piwik_Option::getInstance()->clearCache();
-        Piwik_Site::clearCache();
+        Site::clearCache();
         Piwik_Tracker_Cache::deleteTrackerCache();
         Config::getInstance()->clear();
         Piwik_DataAccess_ArchiveTableCreator::clear();
diff --git a/tests/PHPUnit/Plugins/PDFReportsTest.php b/tests/PHPUnit/Plugins/PDFReportsTest.php
index ce5a7333f7..fcee880403 100644
--- a/tests/PHPUnit/Plugins/PDFReportsTest.php
+++ b/tests/PHPUnit/Plugins/PDFReportsTest.php
@@ -6,6 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
 use Piwik\Access;
+use Piwik\Site;
 
 require_once 'PDFReports/PDFReports.php';
 
@@ -356,7 +357,7 @@ class PDFReportsTest extends DatabaseTestCase
         $stubbedPDFReportsAPIClass->setValue($stubbedPDFReportsAPI);
 
         // initialize sites 1 and 2
-        Piwik_Site::$infoSites = array(
+        Site::$infoSites = array(
             1 => array('timezone' => 'Europe/Paris'),
             2 => array('timezone' => 'UTC-6.5'),
         );
diff --git a/tests/PHPUnit/Plugins/PrivacyManagerTest.php b/tests/PHPUnit/Plugins/PrivacyManagerTest.php
index 6dcc8821f9..08f12fe066 100755
--- a/tests/PHPUnit/Plugins/PrivacyManagerTest.php
+++ b/tests/PHPUnit/Plugins/PrivacyManagerTest.php
@@ -9,6 +9,7 @@ use Piwik\Archive;
 use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Site;
 
 require_once 'PrivacyManager/PrivacyManager.php';
 
@@ -107,7 +108,7 @@ class PrivacyManagerTest extends IntegrationTestCase
         parent::tearDown();
         Piwik_DataTable_Manager::getInstance()->deleteAll();
         Piwik_Option::getInstance()->clearCache();
-        Piwik_Site::clearCache();
+        Site::clearCache();
         Piwik_Tracker_Cache::deleteTrackerCache();
         Piwik_DataAccess_ArchiveTableCreator::clear();
 
diff --git a/tests/PHPUnit/Plugins/SitesManagerTest.php b/tests/PHPUnit/Plugins/SitesManagerTest.php
index 05cfb24095..74d7ca265d 100644
--- a/tests/PHPUnit/Plugins/SitesManagerTest.php
+++ b/tests/PHPUnit/Plugins/SitesManagerTest.php
@@ -6,6 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
 use Piwik\Access;
+use Piwik\Site;
 
 class SitesManagerTest extends DatabaseTestCase
 {
@@ -89,9 +90,9 @@ class SitesManagerTest extends DatabaseTestCase
         $this->assertEquals($timezone, $siteInfo['timezone']);
         $this->assertEquals($currency, $siteInfo['currency']);
         $this->assertEquals($ecommerce, $siteInfo['ecommerce']);
-        $this->assertTrue(Piwik_Site::isEcommerceEnabledFor($idsite));
+        $this->assertTrue(Site::isEcommerceEnabledFor($idsite));
         $this->assertEquals($siteSearch, $siteInfo['sitesearch']);
-        $this->assertTrue(Piwik_Site::isSiteSearchEnabledFor($idsite));
+        $this->assertTrue(Site::isSiteSearchEnabledFor($idsite));
         $this->assertEquals($searchKeywordParameters, $siteInfo['sitesearch_keyword_parameters']);
         $this->assertEquals($searchCategoryParameters, $siteInfo['sitesearch_category_parameters']);
         $this->assertEquals($expectedExcludedQueryParameters, $siteInfo['excluded_parameters']);
@@ -868,7 +869,7 @@ class SitesManagerTest extends DatabaseTestCase
 
         // test that when not specified, defaults are set as expected  
         $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1", array('http://example.org'));
-        $site = new Piwik_Site($idsite);
+        $site = new Site($idsite);
         $this->assertEquals('UTC', $site->getTimezone());
         $this->assertEquals('USD', $site->getCurrency());
         $this->assertEquals('', $site->getExcludedQueryParameters());
@@ -906,7 +907,7 @@ class SitesManagerTest extends DatabaseTestCase
         $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
             $siteSearch = 0, $searchKeywordParameters = 'test1,test2', $searchCategoryParameters = 'test2,test1',
             '', '', $newDefaultTimezone);
-        $site = new Piwik_Site($idsite);
+        $site = new Site($idsite);
         $this->assertEquals($newDefaultTimezone, $site->getTimezone());
         $this->assertEquals(date('Y-m-d'), $site->getCreationDate()->toString());
         $this->assertEquals($newDefaultCurrency, $site->getCurrency());
@@ -915,9 +916,9 @@ class SitesManagerTest extends DatabaseTestCase
         $this->assertEquals('test1,test2', $site->getSearchKeywordParameters());
         $this->assertEquals('test2,test1', $site->getSearchCategoryParameters());
         $this->assertFalse($site->isSiteSearchEnabled());
-        $this->assertFalse(Piwik_Site::isSiteSearchEnabledFor($idsite));
+        $this->assertFalse(Site::isSiteSearchEnabledFor($idsite));
         $this->assertFalse($site->isEcommerceEnabled());
-        $this->assertFalse(Piwik_Site::isEcommerceEnabledFor($idsite));
+        $this->assertFalse(Site::isEcommerceEnabledFor($idsite));
     }
 
     /**
diff --git a/tests/PHPUnit/proxy/piwik.php b/tests/PHPUnit/proxy/piwik.php
index b6ccd4711f..8c5fdb27e3 100755
--- a/tests/PHPUnit/proxy/piwik.php
+++ b/tests/PHPUnit/proxy/piwik.php
@@ -12,6 +12,7 @@
 // Wrapping the request inside ob_start() calls to ensure that the Test
 // calling us waits for the full request to process before unblocking
 use Piwik\Config;
+use Piwik\Site;
 
 ob_start();
 
@@ -38,7 +39,7 @@ Piwik_UserCountry_LocationProvider_GeoIp::$geoIPDatabaseDir = 'tests/lib/geoip-f
 Piwik_Tracker::setTestEnvironment();
 Piwik_DataTable_Manager::getInstance()->deleteAll();
 Piwik_Option::getInstance()->clearCache();
-Piwik_Site::clearCache();
+Site::clearCache();
 Piwik_Tracker_Cache::deleteTrackerCache();
 
 include PIWIK_INCLUDE_PATH . '/piwik.php';
-- 
GitLab