From 96689db3d7b9276b10db3ee21b4cb9eed9ffc166 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Wed, 19 Jun 2019 08:21:31 +1000 Subject: [PATCH] Convert Navigation cache group to current cache defition system Also reset memory and system caches when resetting navigation Additonal place to cause extra flush Add in utility function for resetting ACL and System Level Caches Use cache utility function --- CRM/Admin/Form/Setting/Localization.php | 4 +++- CRM/Core/BAO/Cache/Psr16.php | 1 - CRM/Core/BAO/ConfigSetting.php | 2 +- CRM/Core/BAO/Navigation.php | 8 +++++--- CRM/Utils/System.php | 1 + Civi/Core/Container.php | 1 + 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CRM/Admin/Form/Setting/Localization.php b/CRM/Admin/Form/Setting/Localization.php index e87f459575..e5c52cd7c3 100644 --- a/CRM/Admin/Form/Setting/Localization.php +++ b/CRM/Admin/Form/Setting/Localization.php @@ -187,7 +187,9 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { CRM_Core_BAO_Cache::deleteGroup('contact fields'); //CRM-8559, cache navigation do not respect locale if it is changed, so reseting cache. - CRM_Core_BAO_Cache::deleteGroup('navigation'); + Civi::cache('navigation')->flush(); + // reset ACL and System caches + CRM_Core_BAO_Cache::resetCaches(); // we do this only to initialize monetary decimal point and thousand separator $config = CRM_Core_Config::singleton(); diff --git a/CRM/Core/BAO/Cache/Psr16.php b/CRM/Core/BAO/Cache/Psr16.php index efc723a3fa..34aa47cd89 100644 --- a/CRM/Core/BAO/Cache/Psr16.php +++ b/CRM/Core/BAO/Cache/Psr16.php @@ -183,7 +183,6 @@ class CRM_Core_BAO_Cache_Psr16 { $groups = [ // Core 'contact fields', - 'navigation', 'custom data', // Universe diff --git a/CRM/Core/BAO/ConfigSetting.php b/CRM/Core/BAO/ConfigSetting.php index 946890452e..8919a6d790 100644 --- a/CRM/Core/BAO/ConfigSetting.php +++ b/CRM/Core/BAO/ConfigSetting.php @@ -156,7 +156,7 @@ class CRM_Core_BAO_ConfigSetting { //CRM-8559, cache navigation do not respect locale if it is changed, so reseting cache. // Ed: This doesn't sound good. - // CRM_Core_BAO_Cache::deleteGroup('navigation'); + // Civi::cache('navigation')->flush(); } else { $requestLocale = NULL; diff --git a/CRM/Core/BAO/Navigation.php b/CRM/Core/BAO/Navigation.php index bac09cd73c..44a536a424 100644 --- a/CRM/Core/BAO/Navigation.php +++ b/CRM/Core/BAO/Navigation.php @@ -165,7 +165,7 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { $config = CRM_Core_Config::singleton(); // check if we can retrieve from database cache - $navigations = CRM_Core_BAO_Cache::getItem('navigation', $cacheKeyString); + $navigations = Civi::cache('navigation')->get($cacheKeyString); if (!$navigations) { $domainID = CRM_Core_Config::domainID(); @@ -186,7 +186,7 @@ FROM civicrm_navigation WHERE domain_id = $domainID"; $navigations = []; self::_getNavigationLabel($pidGroups[''], $navigations); - CRM_Core_BAO_Cache::setItem($navigations, 'navigation', $cacheKeyString); + Civi::cache('navigation')->set($cacheKeyString, $navigations); } return $navigations; } @@ -567,7 +567,9 @@ FROM civicrm_navigation WHERE domain_id = $domainID"; $ser = serialize($newKey); $query = "UPDATE civicrm_setting SET value = '$ser' WHERE name='navigation' AND contact_id IS NOT NULL"; CRM_Core_DAO::executeQuery($query); - CRM_Core_BAO_Cache::deleteGroup('navigation'); + Civi::cache('navigation')->flush(); + // reset ACL and System caches + CRM_Core_BAO_Cache::resetCaches(); } else { // before inserting check if contact id exists in db diff --git a/CRM/Utils/System.php b/CRM/Utils/System.php index 2ba2d976d1..b89d56cd0c 100644 --- a/CRM/Utils/System.php +++ b/CRM/Utils/System.php @@ -1440,6 +1440,7 @@ class CRM_Utils_System { Civi::cache('js_strings')->flush(); Civi::cache('community_messages')->flush(); Civi::cache('groups')->flush(); + Civi::cache('navigation')->flush(); CRM_Extension_System::singleton()->getCache()->flush(); CRM_Cxn_CiviCxnHttp::singleton()->getCache()->flush(); } diff --git a/Civi/Core/Container.php b/Civi/Core/Container.php index 853299498b..1587f7263d 100644 --- a/Civi/Core/Container.php +++ b/Civi/Core/Container.php @@ -157,6 +157,7 @@ class Container { 'session' => 'CiviCRM Session', 'long' => 'long', 'groups' => 'contact groups', + 'navigation' => 'navigation', ]; foreach ($basicCaches as $cacheSvc => $cacheGrp) { $definitionParams = [ -- 2.25.1