diff options
author | Thomas Steur <tsteur@users.noreply.github.com> | 2019-06-27 14:44:24 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-27 14:44:24 +0300 |
commit | c167963872278ab53d47839567a963dd65bef09e (patch) | |
tree | 0afe6b262d285c45f053e333782ed640d2fafa28 | |
parent | 7a93a2b5ff683e7bb27339502a60c00add9fe26e (diff) |
Provide methods to force the update of tracker caches (#14578)
* Provide methods to force the update of tracker caches
* delete tracker cache more often
* delete only needed cache
* invalidate cache when hosts change
-rw-r--r-- | core/Tracker/Cache.php | 32 | ||||
-rw-r--r-- | plugins/CoreAdminHome/SystemSettings.php | 6 | ||||
-rw-r--r-- | plugins/PrivacyManager/PrivacyManager.php | 3 | ||||
-rw-r--r-- | plugins/UsersManager/API.php | 4 |
4 files changed, 44 insertions, 1 deletions
diff --git a/core/Tracker/Cache.php b/core/Tracker/Cache.php index 17a0b1700d..69fe39e78a 100644 --- a/core/Tracker/Cache.php +++ b/core/Tracker/Cache.php @@ -66,13 +66,33 @@ class Cache } $cache = self::getCache(); - $cacheId = $idSite; + $cacheId = self::getCacheKeyWebsiteAttributes($idSite); $cacheContent = $cache->fetch($cacheId); if (false !== $cacheContent) { return $cacheContent; } + return self::updateCacheWebsiteAttributes($idSite); + } + + private static function getCacheKeyWebsiteAttributes($idSite) + { + return $idSite; + } + + /** + * Updates the website specific tracker cache containing data about the website: goals, URLs, etc. + * + * @param int $idSite + * + * @return array + */ + public static function updateCacheWebsiteAttributes($idSite) + { + $cache = self::getCache(); + $cacheId = self::getCacheKeyWebsiteAttributes($idSite); + Tracker::initCorePiwikInTrackerMode(); $content = array(); @@ -133,6 +153,16 @@ class Cache return $cacheContent; } + return self::updateGeneralCache(); + } + + /** + * Updates the contents of the general (global) cache. + * + * @return array + */ + public static function updateGeneralCache() + { Tracker::initCorePiwikInTrackerMode(); $cacheContent = array( 'isBrowserTriggerEnabled' => Rules::isBrowserTriggerEnabled(), diff --git a/plugins/CoreAdminHome/SystemSettings.php b/plugins/CoreAdminHome/SystemSettings.php index d998033337..ecf192645a 100644 --- a/plugins/CoreAdminHome/SystemSettings.php +++ b/plugins/CoreAdminHome/SystemSettings.php @@ -12,6 +12,7 @@ use Piwik\Piwik; use Piwik\Plugins\CoreAdminHome\Controller as CoreAdminController; use Piwik\Settings\Setting; use Piwik\Settings\FieldConfig; +use Piwik\Tracker\Cache; class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings { @@ -62,4 +63,9 @@ class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings }); } + public function save() + { + parent::save(); + Cache::deleteTrackerCache(); + } } diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php index 8d4704203a..70e7c09bad 100644 --- a/plugins/PrivacyManager/PrivacyManager.php +++ b/plugins/PrivacyManager/PrivacyManager.php @@ -25,6 +25,7 @@ use Piwik\Plugin; use Piwik\Plugins\Goals\Archiver; use Piwik\Plugins\Installation\FormDefaultSettings; use Piwik\Site; +use Piwik\Tracker\Cache; use Piwik\Tracker\GoalManager; use Piwik\View; @@ -318,6 +319,8 @@ class PrivacyManager extends Plugin Option::set($configName, $settings[$configName]); } } + + Cache::deleteTrackerCache(); } /** diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 2696c9ffe2..5980e75cb1 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -730,6 +730,8 @@ class API extends \Piwik\Plugin\API $this->model->deleteUserAccess($userLogin); $this->model->setSuperUserAccess($userLogin, $hasSuperUserAccess); + + Cache::deleteTrackerCache(); } /** @@ -850,6 +852,8 @@ class API extends \Piwik\Plugin\API $userLogin, $this->createTokenAuth($userLogin) ); + + Cache::deleteTrackerCache(); } /** |