Просмотр исходного кода

#5177 Content cache: profile stats menu cache

Alex Trofimov 1 год назад
Родитель
Сommit
537d604443

+ 1 - 1
install/sql/system.sql

@@ -4827,7 +4827,7 @@ INSERT INTO `sys_objects_menu` (`object`, `title`, `title_public`, `set_name`, `
 ('sys_studio_account_popup', '_sys_menu_title_studio_account_popup', '', 'sys_studio_account_popup', 'system', 4, 0, 1, 'BxTemplStudioMenuAccountPopup', '');
 
 UPDATE `sys_objects_menu` SET `cache` = 'per_acl' WHERE `object` IN('sys_site', 'sys_account_notifications', 'sys_add_content', 'sys_toolbar_site', 'sys_footer', 'sys_site_submenu', 'sys_homepage_submenu', 'sys_homepage', 'sys_application', 'sys_site_in_panel');
-UPDATE `sys_objects_menu` SET `cache` = 'per_user' WHERE `object` IN('sys_toolbar_member');
+UPDATE `sys_objects_menu` SET `cache` = 'per_user' WHERE `object` IN('sys_toolbar_member', 'sys_profile_stats');
 
 CREATE TABLE IF NOT EXISTS `sys_menu_sets` (
   `set_name` varchar(64) NOT NULL,

+ 8 - 0
modules/base/general/classes/BxBaseModGeneralFormEntry.php

@@ -591,6 +591,10 @@ class BxBaseModGeneralFormEntry extends BxTemplFormView
         if(($iContextNid = $this->getCleanValue('context_nid')) !== false)
             $this->_processContextAfterAdd($iContentId, $iContextNid, (int)$this->getCleanValue('context_usage'));
 
+        // invalidate menu profile stats cache
+        if (isset($aContentInfo[$CNF['FIELD_AUTHOR']]));
+            bx_content_cache_del("menu_sys_profile_stats_p" . $iAuthor);
+
         return $iContentId;
     }
 
@@ -820,6 +824,10 @@ class BxBaseModGeneralFormEntry extends BxTemplFormView
         
         BxDolFormQuery::removeFormField($this->id, $iContentId);
 
+        // invalidate menu profile stats cache
+        if (isset($aContentInfo[$CNF['FIELD_AUTHOR']]));
+            bx_content_cache_del("menu_sys_profile_stats_p" . $aContentInfo[$CNF['FIELD_AUTHOR']]);
+
         return parent::delete($iContentId);
     }