Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattab <matthieu.aubry@gmail.com>2013-10-10 08:52:46 +0400
committermattab <matthieu.aubry@gmail.com>2013-10-11 00:15:03 +0400
commitc782b8ccd740a206bf2b7af393dcade94a38ef7d (patch)
tree1c9d40a922785b2aa279857a1520a6eb6781bdb7
parenta4972f38678207e649a20f1b5ac281a679bf92fa (diff)
Refs #4208 refactor all singletons except the hard ones (with custom getInstance()
(some tests failing)
-rw-r--r--core/API/Proxy.php22
-rw-r--r--core/Config.php19
-rw-r--r--core/DataTable/Manager.php18
-rw-r--r--core/Db/Schema.php21
-rw-r--r--core/EventDispatcher.php18
-rw-r--r--core/FrontController.php17
-rw-r--r--core/Log.php33
-rw-r--r--core/Menu/MenuAbstract.php3
-rw-r--r--core/Menu/MenuAdmin.php13
-rw-r--r--core/Menu/MenuMain.php13
-rw-r--r--core/Menu/MenuTop.php14
-rw-r--r--core/Plugin/API.php18
-rw-r--r--core/Plugin/Controller.php11
-rw-r--r--core/Plugin/Manager.php18
-rw-r--r--core/Registry.php18
-rw-r--r--core/Singleton.php37
-rw-r--r--piwik.php1
-rw-r--r--plugins/API/API.php15
-rw-r--r--plugins/Actions/API.php15
-rwxr-xr-xplugins/Annotations/API.php17
-rw-r--r--plugins/CoreAdminHome/API.php15
-rw-r--r--plugins/CoreConsole/templates/api/API.php16
-rw-r--r--plugins/CustomVariables/API.php15
-rw-r--r--plugins/DBStats/API.php18
-rw-r--r--plugins/Dashboard/API.php21
-rw-r--r--plugins/DevicesDetection/API.php17
-rw-r--r--plugins/ExampleAPI/API.php36
-rw-r--r--plugins/ExampleUI/API.php16
-rw-r--r--plugins/Goals/API.php15
-rw-r--r--plugins/ImageGraph/API.php16
-rw-r--r--plugins/LanguagesManager/API.php15
-rw-r--r--plugins/Live/API.php15
-rw-r--r--plugins/MobileMessaging/API.php15
-rwxr-xr-xplugins/MultiSites/API.php22
-rw-r--r--plugins/Overlay/API.php17
-rw-r--r--plugins/Provider/API.php12
-rw-r--r--plugins/Referrers/API.php12
-rw-r--r--plugins/SEO/API.php15
-rw-r--r--plugins/ScheduledReports/API.php15
-rw-r--r--plugins/SegmentEditor/API.php15
-rw-r--r--plugins/SitesManager/API.php15
-rw-r--r--plugins/Transitions/API.php13
-rw-r--r--plugins/UserCountry/API.php12
-rw-r--r--plugins/UserSettings/API.php12
-rw-r--r--plugins/UsersManager/API.php2
-rw-r--r--plugins/VisitFrequency/API.php12
-rw-r--r--plugins/VisitTime/API.php12
-rw-r--r--plugins/VisitorInterest/API.php12
-rw-r--r--plugins/VisitsSummary/API.php15
-rw-r--r--tests/PHPUnit/Core/LogTest.php4
50 files changed, 115 insertions, 673 deletions
diff --git a/core/API/Proxy.php b/core/API/Proxy.php
index 43d07bc25f..f504bdeb8f 100644
--- a/core/API/Proxy.php
+++ b/core/API/Proxy.php
@@ -14,6 +14,7 @@ namespace Piwik\API;
use Exception;
use Piwik\Common;
use Piwik\Piwik;
+use Piwik\Singleton;
use ReflectionClass;
use ReflectionMethod;
@@ -28,7 +29,7 @@ use ReflectionMethod;
* @package Piwik
* @subpackage Piwik_API
*/
-class Proxy
+class Proxy extends Singleton
{
// array of already registered plugins names
protected $alreadyRegistered = array();
@@ -40,12 +41,6 @@ class Proxy
private $noDefaultValue;
/**
- * Singleton instance
- * @var \Piwik\API\Proxy|null
- */
- static private $instance = null;
-
- /**
* protected constructor
*/
protected function __construct()
@@ -54,19 +49,6 @@ class Proxy
}
/**
- * Singleton, returns instance
- *
- * @return \Piwik\API\Proxy
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
- /**
* Returns array containing reflection meta data for all the loaded classes
* eg. number of parameters, method names, etc.
*
diff --git a/core/Config.php b/core/Config.php
index 1ed8ddee47..c7a5ad9d27 100644
--- a/core/Config.php
+++ b/core/Config.php
@@ -42,23 +42,8 @@ use Exception;
* @package Piwik
* @subpackage Piwik_Config
*/
-class Config
+class Config extends Singleton
{
- private static $instance = null;
-
- /**
- * Returns the singleton Piwik_Config
- *
- * @return \Piwik\Config
- * @api
- */
- public static function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
/**
* Contains configuration files values
@@ -298,7 +283,7 @@ class Config
// must be called here, not in init(), since setTestEnvironment() calls init(). (this avoids
// infinite recursion)
- Piwik::postTestEvent('Config.createConfigSingleton', array(self::$instance));
+ Piwik::postTestEvent('Config.createConfigSingleton', array( $this->getInstance() ));
}
// check cache for merged section
diff --git a/core/DataTable/Manager.php b/core/DataTable/Manager.php
index b32463b176..0ae03ede89 100644
--- a/core/DataTable/Manager.php
+++ b/core/DataTable/Manager.php
@@ -14,6 +14,7 @@ namespace Piwik\DataTable;
use Exception;
use Piwik\Common;
use Piwik\DataTable;
+use Piwik\Singleton;
/**
* The DataTable_Manager registers all the instanciated DataTable and provides an
@@ -23,23 +24,8 @@ use Piwik\DataTable;
* @package Piwik
* @subpackage DataTable
*/
-class Manager
+class Manager extends Singleton
{
- static private $instance = null;
-
- /**
- * Returns instance
- *
- * @return \Piwik\DataTable\Manager
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Array used to store the DataTable
*
diff --git a/core/Db/Schema.php b/core/Db/Schema.php
index 015899928c..5ce1d55d62 100644
--- a/core/Db/Schema.php
+++ b/core/Db/Schema.php
@@ -11,6 +11,7 @@
namespace Piwik\Db;
use Piwik\Config;
+use Piwik\Singleton;
/**
* Schema abstraction
@@ -20,14 +21,8 @@ use Piwik\Config;
* @package Piwik
* @subpackage Piwik_Db
*/
-class Schema
+class Schema extends Singleton
{
- /**
- * Singleton instance
- *
- * @var \Piwik\Db\Schema
- */
- static private $instance = null;
/**
* Type of database schema
@@ -36,18 +31,6 @@ class Schema
*/
private $schema = null;
- /**
- * Returns the singleton Schema
- *
- * @return \Piwik\Db\Schema
- */
- static public function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
/**
* Get schema class name
diff --git a/core/EventDispatcher.php b/core/EventDispatcher.php
index 66cef418ef..c57cea990e 100644
--- a/core/EventDispatcher.php
+++ b/core/EventDispatcher.php
@@ -17,7 +17,7 @@ use Piwik\Plugin;
* This class allows code to post events from anywhere in Piwik and for
* plugins to associate callbacks to be executed when events are posted.
*/
-class EventDispatcher
+class EventDispatcher extends Singleton
{
// implementation details for postEvent
const EVENT_CALLBACK_GROUP_FIRST = 0;
@@ -25,22 +25,6 @@ class EventDispatcher
const EVENT_CALLBACK_GROUP_THIRD = 2;
/**
- * Singleton instance.
- */
- private static $instance = null;
-
- /**
- * Returns the singleton EventDispatcher instance. Creates it if necessary.
- */
- public static function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new EventDispatcher();
- }
- return self::$instance;
- }
-
- /**
* Array of observers (callbacks attached to events) that are not methods
* of plugin classes.
*
diff --git a/core/FrontController.php b/core/FrontController.php
index f93a607ee9..8b42c87a98 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -27,7 +27,7 @@ use Piwik\Session;
* @package Piwik
* @subpackage FrontController
*/
-class FrontController
+class FrontController extends Singleton
{
/**
* Set to false and the Front Controller will not dispatch the request
@@ -36,8 +36,6 @@ class FrontController
*/
public static $enableDispatch = true;
- private static $instance = null;
-
protected function prepareDispatch($module, $action, $parameters)
{
if (is_null($module)) {
@@ -92,19 +90,6 @@ class FrontController
}
/**
- * returns singleton
- *
- * @return \Piwik\FrontController
- */
- public static function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
- /**
* Dispatches the request to the right plugin and executes the requested action on the plugin controller.
*
* @throws Exception|\Piwik\PluginDeactivatedException in case the plugin doesn't exist, the action doesn't exist, there is not enough permission, etc.
diff --git a/core/Log.php b/core/Log.php
index 026f63c839..23017acd59 100644
--- a/core/Log.php
+++ b/core/Log.php
@@ -26,7 +26,7 @@ use Piwik\Db;
* The logging utility can be configured by manipulating the INI config options in the
* [log] section.
*/
-class Log
+class Log extends Singleton
{
// log levels
const NONE = 0;
@@ -51,35 +51,6 @@ class Log
const GET_AVAILABLE_WRITERS_EVENT = 'Log.getAvailableWriters';
/**
- * The singleton Log instance.
- *
- * @var Log
- */
- private static $instance = null;
-
- /**
- * Returns the singleton Log instance or creates it if it doesn't exist.
- *
- * @return Log
- */
- public static function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new Log();
- }
- return self::$instance;
- }
-
- /**
- * Unsets the singleton instance so it will be re-created the next time getInstance() is
- * called. For testing purposes only.
- */
- public static function clearInstance()
- {
- self::$instance = null;
- }
-
- /**
* The current logging level. Everything of equal or greater priority will be logged.
* Everything else will be ignored.
*
@@ -120,7 +91,7 @@ class Log
/**
* Constructor.
*/
- private function __construct()
+ protected function __construct()
{
$logConfig = Config::getInstance()->log;
$this->setCurrentLogLevelFromConfig($logConfig);
diff --git a/core/Menu/MenuAbstract.php b/core/Menu/MenuAbstract.php
index edd53161ba..b8f5b11e1a 100644
--- a/core/Menu/MenuAbstract.php
+++ b/core/Menu/MenuAbstract.php
@@ -12,11 +12,12 @@ namespace Piwik\Menu;
use Piwik\Common;
use Piwik\Plugins\SitesManager\API;
+use Piwik\Singleton;
/**
* @package Piwik_Menu
*/
-abstract class MenuAbstract
+abstract class MenuAbstract extends Singleton
{
protected $menu = null;
diff --git a/core/Menu/MenuAdmin.php b/core/Menu/MenuAdmin.php
index 4a29db3e29..eb3576d37e 100644
--- a/core/Menu/MenuAdmin.php
+++ b/core/Menu/MenuAdmin.php
@@ -17,19 +17,6 @@ use Piwik\Piwik;
*/
class MenuAdmin extends MenuAbstract
{
- static private $instance = null;
-
- /**
- * @return MenuAdmin
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Adds a new AdminMenu entry.
*
diff --git a/core/Menu/MenuMain.php b/core/Menu/MenuMain.php
index 2485f18294..4146559fcd 100644
--- a/core/Menu/MenuMain.php
+++ b/core/Menu/MenuMain.php
@@ -17,19 +17,6 @@ use Piwik\Piwik;
*/
class MenuMain extends MenuAbstract
{
- static private $instance = null;
-
- /**
- * @return MenuAbstract
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Returns if the URL was found in the menu.
*
diff --git a/core/Menu/MenuTop.php b/core/Menu/MenuTop.php
index 29f056367a..ab2d312799 100644
--- a/core/Menu/MenuTop.php
+++ b/core/Menu/MenuTop.php
@@ -17,20 +17,6 @@ use Piwik\Piwik;
*/
class MenuTop extends MenuAbstract
{
- static private $instance = null;
-
- /**
- * @return MenuTop
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
-
/**
* Adds a new entry to the TopMenu.
*
diff --git a/core/Plugin/API.php b/core/Plugin/API.php
new file mode 100644
index 0000000000..e10baf7888
--- /dev/null
+++ b/core/Plugin/API.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ * @category Piwik
+ * @package Piwik_PluginArchiver
+ */
+
+namespace Piwik\Plugin;
+
+use Piwik\Singleton;
+
+abstract class API extends Singleton
+{
+}
diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php
index f54c068d0d..99d5a9668d 100644
--- a/core/Plugin/Controller.php
+++ b/core/Plugin/Controller.php
@@ -24,7 +24,6 @@ use Piwik\Period\Month;
use Piwik\Period;
use Piwik\Period\Range;
use Piwik\Piwik;
-use Piwik\Plugins\API\API;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Plugins\UsersManager\API as APIUsersManager;
@@ -207,7 +206,7 @@ abstract class Controller
$idSite = Common::getRequestVar('idSite');
$period = Common::getRequestVar('period');
$date = Common::getRequestVar('date');
- $meta = API::getInstance()->getReportMetadata($idSite, $period, $date);
+ $meta = \Piwik\Plugins\API\API::getInstance()->getReportMetadata($idSite, $period, $date);
$columns = array_merge($columnsToDisplay, $selectableColumns);
$translations = array_combine($columns, $columns);
@@ -452,10 +451,10 @@ abstract class Controller
$view->isSuperUser = Access::getInstance()->isSuperUser();
$view->hasSomeAdminAccess = Piwik::isUserHasSomeAdminAccess();
$view->isCustomLogo = Config::getInstance()->branding['use_custom_logo'];
- $view->logoHeader = API::getInstance()->getHeaderLogoUrl();
- $view->logoLarge = API::getInstance()->getLogoUrl();
- $view->logoSVG = API::getInstance()->getSVGLogoUrl();
- $view->hasSVGLogo = API::getInstance()->hasSVGLogo();
+ $view->logoHeader = \Piwik\Plugins\API\API::getInstance()->getHeaderLogoUrl();
+ $view->logoLarge = \Piwik\Plugins\API\API::getInstance()->getLogoUrl();
+ $view->logoSVG = \Piwik\Plugins\API\API::getInstance()->getSVGLogoUrl();
+ $view->hasSVGLogo = \Piwik\Plugins\API\API::getInstance()->hasSVGLogo();
$view->enableFrames = Config::getInstance()->General['enable_framed_pages']
|| @Config::getInstance()->General['enable_framed_logins'];
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index d7add95fdb..7dbb4f86c4 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -16,6 +16,7 @@ use Piwik\EventDispatcher;
use Piwik\Filesystem;
use Piwik\Option;
use Piwik\Plugin;
+use Piwik\Singleton;
use Piwik\Translate;
use Piwik\Updater;
@@ -27,7 +28,7 @@ require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php';
* @package Piwik
* @subpackage Manager
*/
-class Manager
+class Manager extends Singleton
{
protected $pluginsToLoad = array();
@@ -69,21 +70,6 @@ class Manager
// If a plugin hooks onto at least an event starting with "Tracker.", we load the plugin during tracker
const TRACKER_EVENT_PREFIX = 'Tracker.';
- static private $instance = null;
-
- /**
- * Returns the singleton Manager
- *
- * @return Manager
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Update Plugins config
*
diff --git a/core/Registry.php b/core/Registry.php
index 5fe90370b9..88ecc1ce95 100644
--- a/core/Registry.php
+++ b/core/Registry.php
@@ -15,24 +15,15 @@ namespace Piwik;
*
* @package Piwik
*/
-class Registry
+class Registry extends Singleton
{
- private static $instance;
private $data;
- private function __construct()
+ protected function __construct()
{
$this->data = array();
}
- public static function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new Registry();
- }
- return self::$instance;
- }
-
public static function isRegistered($key)
{
return self::getInstance()->hasKey($key);
@@ -48,11 +39,6 @@ class Registry
self::getInstance()->setKey($key, $value);
}
- public static function unsetInstance()
- {
- self::$instance = null;
- }
-
public function setKey($key, $value)
{
$this->data[$key] = $value;
diff --git a/core/Singleton.php b/core/Singleton.php
new file mode 100644
index 0000000000..7e7679c67a
--- /dev/null
+++ b/core/Singleton.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ * @category Piwik
+ * @package Piwik
+ */
+
+namespace Piwik;
+
+class Singleton
+{
+
+ protected static $instances;
+
+ protected function __construct() { }
+
+ final private function __clone() { }
+
+ public static function getInstance() {
+ $class = get_called_class();
+
+ if (!isset(self::$instances[$class])) {
+ self::$instances[$class] = new $class;
+ }
+ return self::$instances[$class];
+ }
+
+ public static function unsetInstance()
+ {
+ $class = get_called_class();
+ unset(self::$instances[$class]);
+ }
+}
diff --git a/piwik.php b/piwik.php
index 018fb2fa6e..fa98df9076 100644
--- a/piwik.php
+++ b/piwik.php
@@ -36,6 +36,7 @@ if (!defined('PIWIK_INCLUDE_PATH')) {
@ignore_user_abort(true);
require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
+require_once PIWIK_INCLUDE_PATH . '/core/Singleton.php';
require_once PIWIK_INCLUDE_PATH . '/core/Plugin/Manager.php';
require_once PIWIK_INCLUDE_PATH . '/core/Plugin.php';
require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 0673e55a2d..5bd4a6c898 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -46,21 +46,8 @@ require_once PIWIK_INCLUDE_PATH . '/core/Config.php';
*
* @package Piwik_API
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\API\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Get Piwik version
* @return string
diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php
index e9c9d4c810..84ceca80ac 100644
--- a/plugins/Actions/API.php
+++ b/plugins/Actions/API.php
@@ -36,21 +36,8 @@ use Piwik\Tracker\Action;
* Note: pageName, pageUrl, outlinkUrl, downloadUrl parameters must be URL encoded before you call the API.
* @package Actions
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\Actions\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Returns the list of metrics (pages, downloads, outlinks)
*
diff --git a/plugins/Annotations/API.php b/plugins/Annotations/API.php
index b18a2264f9..7863d0ff5c 100755
--- a/plugins/Annotations/API.php
+++ b/plugins/Annotations/API.php
@@ -30,23 +30,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Annotations/AnnotationList.php';
*
* @package Annotations
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * Returns this API's singleton instance.
- *
- * @return \Piwik\Plugins\Annotations\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Create a new annotation for a site.
*
diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php
index 909a178738..ab3ff062a8 100644
--- a/plugins/CoreAdminHome/API.php
+++ b/plugins/CoreAdminHome/API.php
@@ -27,21 +27,8 @@ use Piwik\TaskScheduler;
/**
* @package CoreAdminHome
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\CoreAdminHome\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Will run all scheduled tasks due to run at this time.
*
diff --git a/plugins/CoreConsole/templates/api/API.php b/plugins/CoreConsole/templates/api/API.php
index 74e8abb13a..bc3da69fb2 100644
--- a/plugins/CoreConsole/templates/api/API.php
+++ b/plugins/CoreConsole/templates/api/API.php
@@ -15,22 +15,8 @@ namespace Piwik\Plugins\PLUGINNAME;
*
* @package Piwik_PLUGINNAME
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\PLUGINNAME\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
-
- return self::$instance;
- }
-
/**
* Example method. Please remove if you do not need this API method.
* You can call this API method like this:
diff --git a/plugins/CustomVariables/API.php b/plugins/CustomVariables/API.php
index 8c87124099..522a05cf81 100644
--- a/plugins/CustomVariables/API.php
+++ b/plugins/CustomVariables/API.php
@@ -22,21 +22,8 @@ use Piwik\Tracker\Action;
*
* @package CustomVariables
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\CustomVariables\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* @param int $idSite
* @param string $period
diff --git a/plugins/DBStats/API.php b/plugins/DBStats/API.php
index 1e3224cf2f..af71b4cf42 100644
--- a/plugins/DBStats/API.php
+++ b/plugins/DBStats/API.php
@@ -24,22 +24,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/DBStats/MySQLMetadataProvider.php';
*
* @package DBStats
*/
-class API
+class API extends \Piwik\Plugin\API
{
- /** Singleton instance of this class. */
- static private $instance = null;
-
- /**
- * Gets or creates the DBStats API singleton.
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* The MySQLMetadataProvider instance that fetches table/db status information.
*/
@@ -48,7 +34,7 @@ class API
/**
* Constructor.
*/
- public function __construct()
+ protected function __construct()
{
$this->metadataProvider = new MySQLMetadataProvider();
}
diff --git a/plugins/Dashboard/API.php b/plugins/Dashboard/API.php
index a6acf6c26a..1841775211 100644
--- a/plugins/Dashboard/API.php
+++ b/plugins/Dashboard/API.php
@@ -17,33 +17,16 @@ use Piwik\WidgetsList;
*
* @package Piwik_API
*/
-class API
+class API extends \Piwik\Plugin\API
{
- /**
- * @var \Piwik\Plugins\Dashboard\API
- */
- static private $instance = null;
-
private $dashboard = null;
- public function __construct()
+ protected function __construct()
{
$this->dashboard = new Dashboard();
}
/**
- * @return \Piwik\Plugins\Dashboard\API
- */
- static public function getInstance()
- {
- if (null == self::$instance) {
- self::$instance = new self;
- }
-
- return self::$instance;
- }
-
- /**
* Get each dashboard that belongs to a user including the containing widgets that are placed within each dashboard.
* If the user has not created any dashboard yet, the default dashboard will be returned.
*
diff --git a/plugins/DevicesDetection/API.php b/plugins/DevicesDetection/API.php
index f899b0ce78..0c466ef0b6 100644
--- a/plugins/DevicesDetection/API.php
+++ b/plugins/DevicesDetection/API.php
@@ -19,23 +19,8 @@ use Piwik\Piwik;
/**
* The DevicesDetection API lets you access reports on your visitors devices, brands, models, Operating system, Browsers.
*/
-class API
+class API extends \Piwik\Plugin\API
{
-
- static private $instance = null;
-
- /**
- *
- * @return \Piwik\Plugins\DevicesDetection\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* @param string $name
* @param int $idSite
diff --git a/plugins/ExampleAPI/API.php b/plugins/ExampleAPI/API.php
index a6c012a644..5d9809334b 100644
--- a/plugins/ExampleAPI/API.php
+++ b/plugins/ExampleAPI/API.php
@@ -21,43 +21,9 @@ use Piwik\Version;
* Please see the <a href='http://dev.piwik.org/trac/browser/trunk/plugins/ExampleAPI/API.php#L1' target='_blank'>source code in in the file plugins/ExampleAPI/API.php</a> for more documentation.
* @package Piwik_ExampleAPI
*/
-class API
+class API extends \Piwik\Plugin\API
{
/**
- * * This is an example of a basic API file. Each plugin can have one public API.
- * Each public function in this class will be available to be called via the API.
- * Protected and private members will not be callable.
- * Functions can be called internally using the PHP objects directly, or via the
- * Piwik Web APIs, using HTTP requests. For more information, check out:
- * http://piwik.org/docs/analytics-api/calling-techniques
- *
- * Parameters are passed automatically from the GET request to the API functions.
- *
- * Common API uses include:
- * - requesting stats for a given date and period, for one or several websites
- * - creating, editing, deleting entities (Goals, Websites, Users)
- * - any logic that could be useful to a larger scope than the Controller (make a setting editable for example)
- *
- * It is highly recommended that all the plugin logic is done inside API implementations, and the
- * Controller and other objects would all call the API internally using, eg.
- * API::getInstance()->getSum(1, 2);
- *
- */
- static private $instance = null;
-
- /**
- * Singleton
- * @return \Piwik\Plugins\ExampleAPI\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
- /**
* Get Piwik version
* @return string
*/
diff --git a/plugins/ExampleUI/API.php b/plugins/ExampleUI/API.php
index 5827acac67..681e2afb4b 100644
--- a/plugins/ExampleUI/API.php
+++ b/plugins/ExampleUI/API.php
@@ -21,24 +21,10 @@ use Piwik\Period\Range;
*
* @package ExampleUI
*/
-class API
+class API extends \Piwik\Plugin\API
{
public static $disableRandomness = false;
- private static $instance = null;
-
- /**
- * @return \Piwik\Plugins\ExampleUI\API
- */
- public static function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
-
- return self::$instance;
- }
-
public function getTemperaturesEvolution($date, $period)
{
$temperatures = array();
diff --git a/plugins/Goals/API.php b/plugins/Goals/API.php
index d61af04626..34b3083f88 100644
--- a/plugins/Goals/API.php
+++ b/plugins/Goals/API.php
@@ -41,21 +41,8 @@ use Piwik\Tracker\GoalManager;
*
* @package Goals
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\Goals\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Returns all Goals for a given website, or list of websites
*
diff --git a/plugins/ImageGraph/API.php b/plugins/ImageGraph/API.php
index 48a28f1f7b..ce0b600f6b 100644
--- a/plugins/ImageGraph/API.php
+++ b/plugins/ImageGraph/API.php
@@ -33,7 +33,7 @@ use Piwik\Translate;
*
* @package ImageGraph
*/
-class API
+class API extends \Piwik\Plugin\API
{
const FILENAME_KEY = 'filename';
const TRUNCATE_KEY = 'truncate';
@@ -104,20 +104,6 @@ class API
const DEFAULT_NB_ROW_EVOLUTIONS = 5;
const MAX_NB_ROW_LABELS = 10;
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\ImageGraph\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- $c = __CLASS__;
- self::$instance = new $c();
- }
- return self::$instance;
- }
-
public function get(
$idSite,
$period,
diff --git a/plugins/LanguagesManager/API.php b/plugins/LanguagesManager/API.php
index 64a58ccdf2..6309ff5a39 100644
--- a/plugins/LanguagesManager/API.php
+++ b/plugins/LanguagesManager/API.php
@@ -28,21 +28,8 @@ use Piwik\Piwik;
*
* @package LanguagesManager
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\LanguagesManager\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
protected $availableLanguageNames = null;
protected $languageNames = null;
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index 04083c86ba..56f6338192 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -57,25 +57,12 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Live/Visitor.php';
* See also the documentation about <a href='http://piwik.org/docs/real-time/' target='_blank'>Real time widget and visitor level reports</a> in Piwik.
* @package Live
*/
-class API
+class API extends \Piwik\Plugin\API
{
const VISITOR_PROFILE_MAX_VISITS_TO_AGGREGATE = 100;
const VISITOR_PROFILE_MAX_VISITS_TO_SHOW = 10;
const VISITOR_PROFILE_DATE_FORMAT = '%day% %shortMonth% %longYear%';
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\Live\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* This will return simple counters, for a given website ID, for visits over the last N minutes
*
diff --git a/plugins/MobileMessaging/API.php b/plugins/MobileMessaging/API.php
index 3c369785a8..0aa7e3b924 100644
--- a/plugins/MobileMessaging/API.php
+++ b/plugins/MobileMessaging/API.php
@@ -24,24 +24,11 @@ use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
* - send SMS
* @package MobileMessaging
*/
-class API
+class API extends \Piwik\Plugin\API
{
const VERIFICATION_CODE_LENGTH = 5;
const SMS_FROM = 'Piwik';
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\MobileMessaging\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* @param string $provider
* @return SMSProvider
diff --git a/plugins/MultiSites/API.php b/plugins/MultiSites/API.php
index d92af8e82c..763a1e28d3 100755
--- a/plugins/MultiSites/API.php
+++ b/plugins/MultiSites/API.php
@@ -26,7 +26,7 @@ use Piwik\TaskScheduler;
/**
* The MultiSites API lets you request the key metrics (visits, page views, revenue) for all Websites in Piwik.
*/
-class API
+class API extends \Piwik\Plugin\API
{
const METRIC_TRANSLATION_KEY = 'translation';
const METRIC_EVOLUTION_COL_NAME_KEY = 'evolution_column_name';
@@ -64,26 +64,6 @@ class API
);
/**
- * The singleton instance of this class.
- */
- static private $instance = null;
-
- /**
- * Returns the singleton instance of this class. The instance is created
- * if it hasn't been already.
- *
- * @return \Piwik\Plugins\MultiSites\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
-
- return self::$instance;
- }
-
- /**
* Returns a report displaying the total visits, actions and revenue, as
* well as the evolution of these values, of all existing sites over a
* specified period of time.
diff --git a/plugins/Overlay/API.php b/plugins/Overlay/API.php
index 0c736932f1..334cd712b3 100644
--- a/plugins/Overlay/API.php
+++ b/plugins/Overlay/API.php
@@ -20,23 +20,8 @@ use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Plugins\Transitions\API as APITransitions;
use Piwik\Tracker\Action;
-class API
+class API extends \Piwik\Plugin\API
{
-
- private static $instance = null;
-
- /**
- * Get Singleton instance
- * @return \Piwik\Plugins\Overlay\API
- */
- public static function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Get translation strings
*/
diff --git a/plugins/Provider/API.php b/plugins/Provider/API.php
index 106fbd5883..ae53d0f2f8 100644
--- a/plugins/Provider/API.php
+++ b/plugins/Provider/API.php
@@ -24,18 +24,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Provider/functions.php';
*
* @package Provider
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
public function getProvider($idSite, $period, $date, $segment = false)
{
Piwik::checkUserHasViewAccess($idSite);
diff --git a/plugins/Referrers/API.php b/plugins/Referrers/API.php
index 1599546b4f..15d4785771 100644
--- a/plugins/Referrers/API.php
+++ b/plugins/Referrers/API.php
@@ -30,18 +30,8 @@ use Piwik\Piwik;
* Check out the widget <a href='http://demo.piwik.org/index.php?module=Widgetize&action=iframe&moduleToWidgetize=Referrers&actionToWidgetize=getKeywordsForPage&idSite=7&period=day&date=2011-02-15&disableLink=1' target='_blank'>"Top keywords used to find this page"</a> that you can easily re-use on your website.
* @package Referrers
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* @param string $name
* @param int $idSite
diff --git a/plugins/SEO/API.php b/plugins/SEO/API.php
index f23875812a..4111c6d5f7 100644
--- a/plugins/SEO/API.php
+++ b/plugins/SEO/API.php
@@ -24,21 +24,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Referrers/functions.php';
*
* @package SEO
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\SEO\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Returns SEO statistics for a URL.
*
diff --git a/plugins/ScheduledReports/API.php b/plugins/ScheduledReports/API.php
index 4feb8dfcb5..4980870aa9 100644
--- a/plugins/ScheduledReports/API.php
+++ b/plugins/ScheduledReports/API.php
@@ -35,7 +35,7 @@ use Zend_Mime;
*
* @package ScheduledReports
*/
-class API
+class API extends \Piwik\Plugin\API
{
const VALIDATE_PARAMETERS_EVENT = 'ScheduledReports.validateReportParameters';
const GET_REPORT_PARAMETERS_EVENT = 'ScheduledReports.getReportParameters';
@@ -66,19 +66,6 @@ class API
const REPORT_TRUNCATE = 23;
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\ScheduledReports\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* Creates a new report and schedules it.
*
diff --git a/plugins/SegmentEditor/API.php b/plugins/SegmentEditor/API.php
index 62fd909bc1..85a69f0710 100644
--- a/plugins/SegmentEditor/API.php
+++ b/plugins/SegmentEditor/API.php
@@ -22,23 +22,10 @@ use Piwik\Segment;
*
* @package SegmentEditor
*/
-class API
+class API extends \Piwik\Plugin\API
{
const DEACTIVATE_SEGMENT_EVENT = 'SegmentEditor.deactivate';
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\SegmentEditor\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
protected function checkSegmentValue($definition, $idSite)
{
// unsanitize so we don't record the HTML entitied segment
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index c78e0a9d2c..e1b367d9c3 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -43,22 +43,9 @@ use Piwik\UrlHelper;
* See also the documentation about <a href='http://piwik.org/docs/manage-websites/' target='_blank'>Managing Websites</a> in Piwik.
* @package SitesManager
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
const DEFAULT_SEARCH_KEYWORD_PARAMETERS = 'q,query,s,search,searchword,k,keyword';
-
- /**
- * @return \Piwik\Plugins\SitesManager\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
const OPTION_EXCLUDED_IPS_GLOBAL = 'SitesManager_ExcludedIpsGlobal';
const OPTION_DEFAULT_TIMEZONE = 'SitesManager_DefaultTimezone';
const OPTION_DEFAULT_CURRENCY = 'SitesManager_DefaultCurrency';
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index e6fe825617..f48ca9d9a7 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -34,19 +34,8 @@ use Piwik\Tracker\Action;
/**
* @package Transitions
*/
-class API
+class API extends \Piwik\Plugin\API
{
-
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
public function getTransitionsForPageTitle($pageTitle, $idSite, $period, $date, $segment = false, $limitBeforeGrouping = false)
{
return $this->getTransitionsForAction($pageTitle, 'title', $idSite, $period, $date, $segment, $limitBeforeGrouping);
diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php
index 85ff3973c4..79ac0cb6ec 100644
--- a/plugins/UserCountry/API.php
+++ b/plugins/UserCountry/API.php
@@ -28,18 +28,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/UserCountry/functions.php';
* The UserCountry API lets you access reports about your visitors' Countries and Continents.
* @package UserCountry
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
public function getCountry($idSite, $period, $date, $segment = false)
{
$dataTable = $this->getDataTable(Archiver::COUNTRY_RECORD_NAME, $idSite, $period, $date, $segment);
diff --git a/plugins/UserSettings/API.php b/plugins/UserSettings/API.php
index 1fc12059c1..90dd4752c7 100644
--- a/plugins/UserSettings/API.php
+++ b/plugins/UserSettings/API.php
@@ -26,18 +26,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/UserSettings/functions.php';
*
* @package UserSettings
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
protected function getDataTable($name, $idSite, $period, $date, $segment)
{
Piwik::checkUserHasViewAccess($idSite);
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index 34bca9c465..c71995b728 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -34,7 +34,7 @@ use Piwik\Tracker\Cache;
* See also the documentation about <a href='http://piwik.org/docs/manage-users/' target='_blank'>Managing Users</a> in Piwik.
* @package UsersManager
*/
-class API
+class API extends \Piwik\Plugin\API
{
const PREFERENCE_DEFAULT_REPORT = 'defaultReport';
const PREFERENCE_DEFAULT_REPORT_DATE = 'defaultReportDate';
diff --git a/plugins/VisitFrequency/API.php b/plugins/VisitFrequency/API.php
index 18142916d7..fa4007f309 100644
--- a/plugins/VisitFrequency/API.php
+++ b/plugins/VisitFrequency/API.php
@@ -19,21 +19,11 @@ use Piwik\SegmentExpression;
* VisitFrequency API lets you access a list of metrics related to Returning Visitors.
* @package VisitFrequency
*/
-class API
+class API extends \Piwik\Plugin\API
{
const RETURNING_VISITOR_SEGMENT = "visitorType==returning";
const COLUMN_SUFFIX = "_returning";
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
/**
* @param int $idSite
* @param string $period
diff --git a/plugins/VisitTime/API.php b/plugins/VisitTime/API.php
index f87708e4ef..fe5c70bd05 100644
--- a/plugins/VisitTime/API.php
+++ b/plugins/VisitTime/API.php
@@ -26,18 +26,8 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/VisitTime/functions.php';
*
* @package VisitTime
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
protected function getDataTable($name, $idSite, $period, $date, $segment)
{
Piwik::checkUserHasViewAccess($idSite);
diff --git a/plugins/VisitorInterest/API.php b/plugins/VisitorInterest/API.php
index 1cb1fc3a1e..68b6c44715 100644
--- a/plugins/VisitorInterest/API.php
+++ b/plugins/VisitorInterest/API.php
@@ -21,18 +21,8 @@ use Piwik\Piwik;
*
* @package VisitorInterest
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
protected function getDataTable($name, $idSite, $period, $date, $segment, $column = Metrics::INDEX_NB_VISITS)
{
Piwik::checkUserHasViewAccess($idSite);
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index 3578d8f411..c0f32f39f1 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -21,21 +21,8 @@ use Piwik\SettingsPiwik;
*
* @package VisitsSummary
*/
-class API
+class API extends \Piwik\Plugin\API
{
- static private $instance = null;
-
- /**
- * @return \Piwik\Plugins\VisitsSummary\API
- */
- static public function getInstance()
- {
- if (self::$instance == null) {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
public function get($idSite, $period, $date, $segment = false, $columns = false)
{
Piwik::checkUserHasViewAccess($idSite);
diff --git a/tests/PHPUnit/Core/LogTest.php b/tests/PHPUnit/Core/LogTest.php
index 706c8f16a6..ead7b7488d 100644
--- a/tests/PHPUnit/Core/LogTest.php
+++ b/tests/PHPUnit/Core/LogTest.php
@@ -67,7 +67,7 @@ dummy backtrace'
Config::getInstance()->log['string_message_format'] = self::STRING_MESSAGE_FORMAT;
Config::getInstance()->log['logger_file_path'] = self::getDefaultLogFileLocation();
@unlink(self::getLogFileLocation());
- Log::clearInstance();
+ Log::unsetInstance();
Error::$debugBacktraceForTests = ExceptionHandler::$debugBacktraceForTests = "dummy backtrace";
}
@@ -75,7 +75,7 @@ dummy backtrace'
{
parent::tearDown();
- Log::clearInstance();
+ Log::unsetInstance();
@unlink(self::getLogFileLocation());
Error::$debugBacktraceForTests = ExceptionHandler::$debugBacktraceForTests = null;
}