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:
authormattpiwik <matthieu.aubry@gmail.com>2009-03-20 10:39:09 +0300
committermattpiwik <matthieu.aubry@gmail.com>2009-03-20 10:39:09 +0300
commit0bcc6f8d5e27db477ee7e34b1bed6150671d4ce3 (patch)
tree95df9f49750fadf00f67b995c7ed240acebdab43
parent7c0a514ea0ed897e3f3a386c169c527c12758da2 (diff)
- fixed #9 referer URLs with host registered as main_url or alias_url should NOT be counted as referer
now if a visitor comes to piwik.org/ with a piwik.org/xx/y/z referer, it will be considered a direct entry rather than a referer visit. makes use of the new caching mechanism introduced with the Goal Tracking plugin, to cache website-related data for super fast access at Tracker time. - Goals is not a tracker plugin anymore (improving performance of Tracker) - fixed bug that the cache file wasn't read properly and goal queries were done at each piwik.php request git-svn-id: http://dev.piwik.org/svn/trunk@994 59fd770c-687e-43c8-a1e3-f5a4ff64c105
-rw-r--r--core/API/Request.php4
-rw-r--r--core/Access.php32
-rw-r--r--core/Auth.php2
-rw-r--r--core/CacheFile.php4
-rw-r--r--core/Common.php53
-rw-r--r--core/FrontController.php13
-rw-r--r--core/Piwik.php6
-rw-r--r--core/PluginsFunctions/WidgetsList.php5
-rw-r--r--core/PluginsManager.php34
-rw-r--r--core/Tracker/Db.php9
-rw-r--r--core/Tracker/Visit.php49
-rw-r--r--core/Updates/0.2.33.php5
-rw-r--r--core/Url.php1
-rwxr-xr-xindex.php1
-rw-r--r--piwik.php1
-rw-r--r--plugins/Goals/Goals.php1
-rw-r--r--plugins/Installation/Controller.php2
-rw-r--r--plugins/Login/Login.php5
-rwxr-xr-xplugins/SitesManager/API.php35
-rw-r--r--plugins/SitesManager/SitesManager.php26
-rwxr-xr-xplugins/UsersManager/API.php4
-rwxr-xr-xtests/core/Database.test.php2
22 files changed, 209 insertions, 85 deletions
diff --git a/core/API/Request.php b/core/API/Request.php
index e7d06c1e26..79993992ac 100644
--- a/core/API/Request.php
+++ b/core/API/Request.php
@@ -64,7 +64,7 @@ class Piwik_API_Request
if(isset($requestArray['token_auth']))
{
Piwik_PostEvent('API.Request.authenticate', $requestArray['token_auth']);
- Zend_Registry::get('access')->loadAccess();
+ Zend_Registry::get('access')->reloadAccess();
}
$requestArray = array_merge($_REQUEST, $requestArray);
@@ -75,7 +75,7 @@ class Piwik_API_Request
if(!is_array($element))
{
$element = trim($element);
- }
+ }
}
$this->request = $requestArray;
diff --git a/core/Access.php b/core/Access.php
index c9c7bc98d0..5f7bb65249 100644
--- a/core/Access.php
+++ b/core/Access.php
@@ -81,7 +81,7 @@ class Piwik_Access
*
* @var Piwik_Auth
*/
- private $auth;
+ private $auth = null;
/**
* Returns the list of the existing Access level.
@@ -93,14 +93,15 @@ class Piwik_Access
return self::$availableAccess;
}
- /**
- * @param Piwik_Auth The authentification object
- */
- public function __construct( Piwik_Auth $auth )
+ function __construct()
{
- $this->auth = $auth;
+ $this->idsitesByAccess = array(
+ 'view' => array(),
+ 'admin' => array(),
+ 'superuser' => array()
+ );
}
-
+
/**
* Loads the access levels for the current user.
*
@@ -110,10 +111,15 @@ class Piwik_Access
* We load the access levels for this user for all the websites.
*
*/
- public function loadAccess()
+ public function reloadAccess(Piwik_Auth $auth = null)
{
- $idsitesByAccess = array( 'view' => array(), 'admin' => array(), 'superuser' => array());
-
+ if(!is_null($auth)) {
+ $this->auth = $auth;
+ }
+ if(is_null($this->auth)) {
+ throw new Exception("You must pass a Piwik_Auth object in order to reload access information for this session.");
+ }
+
// access = array ( idsite => accessIdSite, idsite2 => accessIdSite2)
$result = $this->auth->authenticate();
@@ -131,7 +137,7 @@ class Piwik_Access
{
throw new Exception("Piwik could not find any website in the database.");
}
- $idsitesByAccess['superuser'] = $allSitesId;
+ $this->idsitesByAccess['superuser'] = $allSitesId;
}
// valid authentification (normal user logged in)
else
@@ -146,12 +152,10 @@ class Piwik_Access
" WHERE login = ?", $this->login);
foreach($accessRaw as $access)
{
- $idsitesByAccess[$access['access']][] = $access['idsite'];
+ $this->idsitesByAccess[$access['access']][] = $access['idsite'];
}
}
}
-
- $this->idsitesByAccess = $idsitesByAccess;
}
/**
diff --git a/core/Auth.php b/core/Auth.php
index b3d99d5d26..dc23bc6128 100644
--- a/core/Auth.php
+++ b/core/Auth.php
@@ -9,6 +9,8 @@
* @package Piwik
*/
+require_once "Zend/Auth/Result.php";
+
interface Piwik_Auth {
/**
* @return Piwik_Auth_Result
diff --git a/core/CacheFile.php b/core/CacheFile.php
index a254788c52..3a7607223c 100644
--- a/core/CacheFile.php
+++ b/core/CacheFile.php
@@ -41,7 +41,7 @@ class Piwik_CacheFile
$content = '';
// We are assuming that most of the time cache will exists
- $ok = @include($this->cachePath . $id);
+ $ok = @include_once($this->cachePath . $id . ".php");
if ($ok && $cache_complete == true) {
return $content;
@@ -104,7 +104,7 @@ class Piwik_CacheFile
*/
function delete($id)
{
- $filename = $this->cachePath . $id;
+ $filename = $this->cachePath . $id . ".php";
if (file_exists($filename)) {
@unlink ($filename);
return true;
diff --git a/core/Common.php b/core/Common.php
index f3d1b5753d..343d509eec 100644
--- a/core/Common.php
+++ b/core/Common.php
@@ -83,26 +83,59 @@ class Piwik_Common
return $cacheContent;
}
- if(!class_exists('Zend_Registry'))
- {
- require_once "Zend/Registry.php";
- }
// if DB is not in the registry, we are in tracker mode, we add it in the registry
- try {
- Zend_Registry::get('db');
- } catch(Exception $e) {
+ if(defined('PIWIK_TRACKER_MODE')
+ && PIWIK_TRACKER_MODE)
+ {
Zend_Registry::set('db', Piwik_Tracker::getDatabase());
+ require_once "Zend/Exception.php";
+ require_once "Zend/Loader.php";
+ require_once "Zend/Auth.php";
+ require_once "Timer.php";
+ require_once "PluginsManager.php";
+ require_once "core/Piwik.php";
+ require_once "Access.php";
+ require_once "Auth.php";
+ require_once "API/Proxy.php";
+ require_once "Archive.php";
+ require_once "Site.php";
+ require_once "Date.php";
+ require_once "DataTable.php";
+ require_once "Translate.php";
+ require_once "Mail.php";
+ require_once "Url.php";
+ require_once "Controller.php";
+ require_once "Option.php";
+ require_once "View.php";
+ require_once "UpdateCheck.php";
+ Piwik::createAccessObject();
+ Piwik::setUserIsSuperUser();
+ $pluginsManager = Piwik_PluginsManager::getInstance();
+ $pluginsManager->setPluginsToLoad( Zend_Registry::get('config')->Plugins->Plugins->toArray() );
}
+
$content = array();
Piwik_PostEvent('Common.fetchWebsiteAttributes', $content, $idSite);
$cache->set($filename, $content);
return $content;
}
- static public function regenerateCacheWebsiteAttributes($idSite)
+ /**
+ * Delete existing Tracker cache files and regenerate them
+ *
+ * @param array $idSites array of idSites to clear cache for
+ * @return void
+ */
+ static public function regenerateCacheWebsiteAttributes($idSites = array())
{
- self::deleteCacheWebsiteAttributes($idSite);
- self::getCacheWebsiteAttributes($idSite);
+ if(!is_array($idSites))
+ {
+ $idSites = array( $idSites );
+ }
+ foreach($idSites as $idSite) {
+ self::deleteCacheWebsiteAttributes($idSite);
+ self::getCacheWebsiteAttributes($idSite);
+ }
}
static public function deleteCacheWebsiteAttributes( $idSite )
diff --git a/core/FrontController.php b/core/FrontController.php
index e43a36edad..f0421baae0 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -16,12 +16,12 @@
require_once "Zend/Exception.php";
require_once "Zend/Loader.php";
require_once "Zend/Auth.php";
-require_once "Zend/Auth/Adapter/DbTable.php";
/**
* Piwik classes
*/
require_once "Timer.php";
+require_once "PluginsManager.php";
require_once "core/Piwik.php";
require_once "Access.php";
require_once "Auth.php";
@@ -38,10 +38,6 @@ require_once "Option.php";
require_once "View.php";
require_once "UpdateCheck.php";
-require_once "PluginsFunctions/Menu.php";
-require_once "PluginsFunctions/AdminMenu.php";
-require_once "PluginsFunctions/WidgetsList.php";
-require_once "PluginsFunctions/Sql.php";
/**
* Front controller.
@@ -238,6 +234,9 @@ class Piwik_FrontController
$pluginsManager->setLanguageToLoad( Piwik_Translate::getInstance()->getLanguageToLoad() );
$pluginsManager->postLoadPlugins();
+ // creating the access object, so that core/Updates/* can enforce Super User and use some APIs
+ Piwik::createAccessObject();
+
require_once "CoreUpdater/Controller.php";
$updaterController = new Piwik_CoreUpdater_Controller();
$updaterController->checkForCoreAndPluginsUpdates();
@@ -255,9 +254,7 @@ class Piwik_FrontController
under the <code>[Plugins]</code> section in your config/config.inc.php");
}
- $access = new Piwik_Access($authAdapter);
- Zend_Registry::set('access', $access);
- Zend_Registry::get('access')->loadAccess();
+ Zend_Registry::get('access')->reloadAccess($authAdapter);
Piwik::raiseMemoryLimitIfNecessary();
diff --git a/core/Piwik.php b/core/Piwik.php
index 701698d074..d27ce8ccca 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -13,7 +13,6 @@ require_once "Config.php";
require_once "Zend/Db.php";
require_once "Zend/Db/Table.php";
require_once "Log.php";
-require_once "PluginsManager.php";
require_once "Translate.php";
/**
@@ -1259,6 +1258,11 @@ class Piwik
$config->init();
}
+ static public function createAccessObject()
+ {
+ Zend_Registry::set('access', new Piwik_Access());
+ }
+
static public function dropTables( $doNotDelete = array() )
{
$tablesAlreadyInstalled = self::getTablesInstalled();
diff --git a/core/PluginsFunctions/WidgetsList.php b/core/PluginsFunctions/WidgetsList.php
index 197e2e4cd9..d06f8e8aef 100644
--- a/core/PluginsFunctions/WidgetsList.php
+++ b/core/PluginsFunctions/WidgetsList.php
@@ -15,10 +15,7 @@ class Piwik_WidgetsList
static function get()
{
- if(is_null(self::$widgets)) {
- self::$widgets = array();
- Piwik_PostEvent('WidgetsList.add');
- }
+ Piwik_PostEvent('WidgetsList.add');
return self::$widgets;
}
diff --git a/core/PluginsManager.php b/core/PluginsManager.php
index b01ee2ab13..ffdb24e784 100644
--- a/core/PluginsManager.php
+++ b/core/PluginsManager.php
@@ -11,6 +11,15 @@
require_once "Plugin.php";
require_once "Event/Dispatcher.php";
+require_once "PluginsFunctions/Menu.php";
+require_once "PluginsFunctions/AdminMenu.php";
+require_once "PluginsFunctions/WidgetsList.php";
+require_once "PluginsFunctions/Sql.php";
+
+require_once "Zend/Exception.php";
+require_once "Zend/Loader.php";
+require_once "Auth.php";
+require_once "Controller.php";
/**
* @package Piwik
@@ -23,9 +32,9 @@ class Piwik_PluginsManager
public $dispatcher;
protected $pluginsToLoad = array();
- protected $installPlugins = false;
- protected $doLoadPlugins = true;
protected $languageToLoad = null;
+
+ protected $doLoadPlugins = true;
protected $loadedPlugins = array();
protected $doLoadAlwaysActivatedPlugins = true;
@@ -64,6 +73,11 @@ class Piwik_PluginsManager
|| $this->isPluginAlwaysActivated( $name );
}
+ public function isPluginLoaded( $name )
+ {
+ return isset($this->loadedPlugins[$name]);
+ }
+
/**
* Reads the directories inside the plugins/ directory and returns their names in an array
*
@@ -223,15 +237,15 @@ class Piwik_PluginsManager
foreach($this->pluginsToLoad as $pluginName)
{
- $newPlugin = $this->loadPlugin($pluginName);
-
- // if we have to load the plugins
- // and if this plugin is activated
- if($this->doLoadPlugins
- && $this->isPluginActivated($pluginName))
+ if(!$this->isPluginLoaded($pluginName))
{
- $this->addPluginObservers( $newPlugin );
- $this->addLoadedPlugin( $pluginName, $newPlugin);
+ $newPlugin = $this->loadPlugin($pluginName);
+ if($this->doLoadPlugins
+ && $this->isPluginActivated($pluginName))
+ {
+ $this->addPluginObservers( $newPlugin );
+ $this->addLoadedPlugin( $pluginName, $newPlugin);
+ }
}
}
}
diff --git a/core/Tracker/Db.php b/core/Tracker/Db.php
index 1d57467c84..93ea1924ec 100644
--- a/core/Tracker/Db.php
+++ b/core/Tracker/Db.php
@@ -164,6 +164,15 @@ class Piwik_Tracker_Db
}
/**
+ * This function is a proxy to fetch(), used to maintain compatibility with Zend_Db interface
+ * @see fetch()
+ */
+ public function fetchRow( $query, $parameters = array() )
+ {
+ return $this->fetch($query, $parameters);
+ }
+
+ /**
* Executes a query, using optional bound parameters.
*
* @param string Query
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index 6a63a29d65..f8c37a863e 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -46,7 +46,6 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
{
throw new Exception("The 'idsite' in the request is invalid.");
}
-
$this->idsite = $idsite;
}
@@ -236,6 +235,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
$fields = implode(", ", array_keys($this->visitorInfo));
$values = substr(str_repeat( "?,",count($this->visitorInfo)),0,-1);
+ printDebug($this->visitorInfo);
Piwik_Tracker::getDatabase()->query( "INSERT INTO ".Piwik_Common::prefixTable('log_visit').
" ($fields) VALUES ($values)", array_values($this->visitorInfo));
@@ -641,19 +641,17 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
}
$refererDetected = false;
- if( !empty($this->currentUrlParse['host']))
+
+ if( !empty($this->currentUrlParse['host'])
+ && $this->detectRefererCampaign() )
{
- if( $this->detectRefererCampaign() )
- {
- $refererDetected = true;
- }
+ $refererDetected = true;
}
- if(!$refererDetected
- && !empty($this->refererUrlParse['host']) )
+ if(!$refererDetected)
{
- if( $this->detectRefererSearchEngine()
- || $this->detectRefererDirectEntry() )
+ if( $this->detectRefererDirectEntry()
+ || $this->detectRefererSearchEngine() )
{
$refererDetected = true;
}
@@ -691,7 +689,8 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
*/
require_once "DataFiles/SearchEngines.php";
- if(array_key_exists($this->refererHost, $GLOBALS['Piwik_SearchEngines']))
+ if(!empty($this->refererHost)
+ && array_key_exists($this->refererHost, $GLOBALS['Piwik_SearchEngines']))
{
$searchEngineName = $GLOBALS['Piwik_SearchEngines'][$this->refererHost][0];
$variableName = $GLOBALS['Piwik_SearchEngines'][$this->refererHost][1];
@@ -767,23 +766,35 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
/*
- * Direct entry (referer host is similar to current host)
- * And we have previously tried to detect the campaign variables in the URL
- * so it can only be a direct access
+ * We have previously tried to detect the campaign variables in the URL
+ * so at this stage, if the referer host is the current host,
+ * or if the referer host is any of the registered URL for this website,
+ * it is considered a direct entry
*/
protected function detectRefererDirectEntry()
{
- if(isset($this->currentUrlParse['host']))
+ if(!empty($this->refererHost))
{
- $currentHost = $this->currentUrlParse['host'];
-
- if($currentHost == $this->refererHost)
+ // is the referer host the current host?
+ if(isset($this->currentUrlParse['host']))
+ {
+ $currentHost = $this->currentUrlParse['host'];
+ if($currentHost == $this->refererHost)
+ {
+ $this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_DIRECT_ENTRY;
+ return true;
+ }
+ }
+ // is the referer host any of the registered URLs for this website?
+ $websiteData = Piwik_Common::getCacheWebsiteAttributes($this->idsite);
+ if(isset($websiteData['hosts'])
+ && in_array($this->refererHost, $websiteData['hosts']))
{
$this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_DIRECT_ENTRY;
return true;
}
}
-
+
}
/**
diff --git a/core/Updates/0.2.33.php b/core/Updates/0.2.33.php
new file mode 100644
index 0000000000..b3df11c51e
--- /dev/null
+++ b/core/Updates/0.2.33.php
@@ -0,0 +1,5 @@
+<?php
+require_once "SitesManager/API.php";
+Piwik::setUserIsSuperUser();
+$allSiteIds = Piwik_SitesManager_API::getAllSitesId();
+Piwik_Common::regenerateCacheWebsiteAttributes($allSiteIds);
diff --git a/core/Url.php b/core/Url.php
index f4add00d5d..811e2a8579 100644
--- a/core/Url.php
+++ b/core/Url.php
@@ -35,7 +35,6 @@ class Piwik_Url
*/
static public function getCurrentUrlWithoutQueryString()
{
-
return self::getCurrentHost()
. self::getCurrentScriptName() ;
}
diff --git a/index.php b/index.php
index bee539390a..62adb688c7 100755
--- a/index.php
+++ b/index.php
@@ -17,7 +17,6 @@ if(!defined('PIWIK_INCLUDE_PATH'))
define('PIWIK_INCLUDE_PATH', dirname(__FILE__));
}
-
set_include_path(PIWIK_INCLUDE_PATH
. PATH_SEPARATOR . PIWIK_INCLUDE_PATH . '/libs/'
. PATH_SEPARATOR . PIWIK_INCLUDE_PATH . '/plugins/'
diff --git a/piwik.php b/piwik.php
index d8a6507f73..998758dd0d 100644
--- a/piwik.php
+++ b/piwik.php
@@ -13,6 +13,7 @@ if(defined('ENABLE_PIWIK_TRACKER') && !ENABLE_PIWIK_TRACKER)
return;
}
+define('PIWIK_TRACKER_MODE', true);
error_reporting(E_ALL|E_NOTICE);
define('PIWIK_INCLUDE_PATH', dirname(__FILE__));
@ignore_user_abort(true);
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index a031db5120..c672658bfb 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -30,7 +30,6 @@ class Piwik_Goals extends Piwik_Plugin
'author' => 'Piwik',
'homepage' => 'http://piwik.org/',
'version' => '0.1',
- 'TrackerPlugin' => true
);
return $info;
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index f36643669e..4a03494684 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -524,5 +524,5 @@ class Piwik_FakeAccess_SetSuperUser {
{
return true;
}
- function loadAccess() {}
+ function reloadAccess() {}
}
diff --git a/plugins/Login/Login.php b/plugins/Login/Login.php
index 9d5db0154e..9b1cc774df 100644
--- a/plugins/Login/Login.php
+++ b/plugins/Login/Login.php
@@ -8,8 +8,9 @@
*
* @package Piwik_Login
*/
-require "Login/Auth.php";
-require "Cookie.php";
+
+require_once "Cookie.php";
+require_once "Login/Auth.php";
/**
*
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 24a33d17b2..07d413a861 100755
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -71,9 +71,14 @@ class Piwik_SitesManager_API
static private function getAliasSiteUrlsFromId( $idsite )
{
$db = Zend_Registry::get('db');
- $urls = $db->fetchCol("SELECT url
+ $result = $db->fetchAll("SELECT url
FROM ".Piwik::prefixTable("site_url"). "
WHERE idsite = ?", $idsite);
+ $urls = array();
+ foreach($result as $url)
+ {
+ $urls[] = $url['url'];
+ }
return $urls;
}
@@ -99,7 +104,13 @@ class Piwik_SitesManager_API
static public function getAllSitesId()
{
Piwik::checkUserIsSuperUser();
- return Zend_Registry::get('db')->fetchCol("SELECT idsite FROM ".Piwik::prefixTable('site'));
+ $result = Zend_Registry::get('db')->fetchAll("SELECT idsite FROM ".Piwik::prefixTable('site'));
+ $idSites = array();
+ foreach($result as $idSite)
+ {
+ $idSites[] = $idSite['idsite'];
+ }
+ return $idSites;
}
@@ -231,11 +242,17 @@ class Piwik_SitesManager_API
self::insertSiteUrls($idSite, $urls);
// we reload the access list which doesn't yet take in consideration this new website
- Zend_Registry::get('access')->loadAccess();
+ Zend_Registry::get('access')->reloadAccess();
+ self::postUpdateWebsite($idSite);
return (int)$idSite;
}
+ private static function postUpdateWebsite($idSite)
+ {
+ Piwik_Common::regenerateCacheWebsiteAttributes($idSite);
+ }
+
/**
* Delete a website from the database, given its Id.
*
@@ -247,8 +264,12 @@ class Piwik_SitesManager_API
{
Piwik::checkUserIsSuperUser();
- $nbSites = count(Piwik_SitesManager_API::getAllSitesId());
-
+ $idSites = Piwik_SitesManager_API::getAllSitesId();
+ if(!in_array($idSite, $idSites))
+ {
+ throw new Exception("website id = $idSite not found");
+ }
+ $nbSites = count($idSites);
if($nbSites == 1)
{
throw new Exception(Piwik_TranslateException("SitesManager_ExceptionDeleteSite"));
@@ -264,6 +285,8 @@ class Piwik_SitesManager_API
$db->query("DELETE FROM ".Piwik::prefixTable("access")."
WHERE idsite = ?", $idSite);
+
+ Piwik_Common::deleteCacheWebsiteAttributes($idSite);
}
@@ -299,6 +322,7 @@ class Piwik_SitesManager_API
$urlsInit = self::getSiteUrlsFromId($idSite);
$toInsert = array_diff($urls, $urlsInit);
self::insertSiteUrls($idSite, $toInsert);
+ self::postUpdateWebsite($idSite);
return count($toInsert);
}
@@ -349,6 +373,7 @@ class Piwik_SitesManager_API
{
$insertedUrls = self::addSiteAliasUrls($idSite, array_slice($urls,1));
}
+ self::postUpdateWebsite($idSite);
}
/**
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index fe09980913..1fcd1364ce 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -29,7 +29,31 @@ class Piwik_SitesManager extends Piwik_Plugin
function getListHooksRegistered()
{
- return array('AdminMenu.add' => 'addMenu');
+ return array(
+ 'AdminMenu.add' => 'addMenu',
+ 'Common.fetchWebsiteAttributes' => 'recordWebsiteHostsInCache',
+ );
+ }
+
+ function recordWebsiteHostsInCache($notification)
+ {
+ require_once "SitesManager/API.php";
+ $info = $notification->getNotificationInfo();
+ $idsite = $info['idsite'];
+
+ // add the 'hosts' entry in the website array
+ $array =& $notification->getNotificationObject();
+ $urls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite);
+ $hosts = array();
+ foreach($urls as $url)
+ {
+ $url = parse_url($url);
+ if(isset($url['host']))
+ {
+ $hosts[] = $url['host'];
+ }
+ }
+ $array['hosts'] = $hosts;
}
function addMenu()
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index a28dea82b1..7b808c1eaa 100755
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -292,7 +292,7 @@ class Piwik_UsersManager_API
);
// we reload the access list which doesn't yet take in consideration this new user
- Zend_Registry::get('access')->loadAccess();
+ Zend_Registry::get('access')->reloadAccess();
}
@@ -476,7 +476,7 @@ class Piwik_UsersManager_API
}
// we reload the access list which doesn't yet take in consideration this new user access
- Zend_Registry::get('access')->loadAccess();
+ Zend_Registry::get('access')->reloadAccess();
}
/**
diff --git a/tests/core/Database.test.php b/tests/core/Database.test.php
index 0261f508c3..ef2726a1cf 100755
--- a/tests/core/Database.test.php
+++ b/tests/core/Database.test.php
@@ -75,7 +75,7 @@ class FakeAccess
}
}
- static public function loadAccess()
+ static public function reloadAccess()
{}
static public function checkUserHasAdminAccess( $idSites )