AntonLV 9 năm trước cách đây
mục cha
commit
ea187f6a46

+ 11 - 3
inc/classes/BxDolDb.php

@@ -604,7 +604,12 @@ class BxDolDb extends BxDolFactory implements iBxDolSingleton
 
         list($sTmplCode, $sTmplName) = BxDolTemplate::retrieveCode();
         if(!empty($sTmplCode) && !empty($sTmplName)) {
-            $aMixed = $this->fromCache(self::$_sParamsCacheNameMixed . $sTmplCode, 'getPairs', "SELECT `tmo`.`option` AS `option`, `tmo`.`value` AS `value` FROM `sys_options_mixes2options` AS `tmo` INNER JOIN `sys_options_mixes` AS `tm` ON `tmo`.`mix_id`=`tm`.`id` AND `tm`.`type`=:type AND `tm`.`active`='1'", "option", "value", array(
+            $sCacheNameMixed = self::$_sParamsCacheNameMixed . $sTmplCode;
+
+            if ($bForceCacheInvalidate)
+                $this->cacheParamsClear($sCacheNameMixed);
+
+            $aMixed = $this->fromCache($sCacheNameMixed, 'getPairs', "SELECT `tmo`.`option` AS `option`, `tmo`.`value` AS `value` FROM `sys_options_mixes2options` AS `tmo` INNER JOIN `sys_options_mixes` AS `tm` ON `tmo`.`mix_id`=`tm`.`id` AND `tm`.`type`=:type AND `tm`.`active`='1'", "option", "value", array(
     			'type' => $sTmplName
             ));
             if(!empty($aMixed))
@@ -619,9 +624,12 @@ class BxDolDb extends BxDolFactory implements iBxDolSingleton
         return true;
     }
 
-    public function cacheParamsClear()
+    public function cacheParamsClear($sCacheName = '')
     {
-        return $this->cleanCache(self::$_sParamsCacheName);
+        if(empty($sCacheName))
+            $sCacheName = self::$_sParamsCacheName;
+
+        return $this->cleanCache($sCacheName);
     }
 
     public function isParam($sKey, $bFromCache = true)

+ 11 - 2
studio/classes/BxDolStudioSettings.php

@@ -139,7 +139,7 @@ class BxDolStudioSettings extends BxTemplStudioPage
 
 		$aResult = array();
 		if($sName == BX_DOL_STUDIO_STG_MIX_SYSTEM || $this->oDb->updateMixes(array('active' => 1), array('name' => $sName))) {
-		    BxDolCacheUtilities::getInstance()->clear('css');
+		    $this->clearCache();
 
 			$aResult = array('eval' => $this->getPageJsObject() . '.onMixSelect(oData);');
 		}
@@ -198,8 +198,11 @@ class BxDolStudioSettings extends BxTemplStudioPage
     public function deleteMix($iId)
     {
     	$aResult = array();
-    	if($this->oDb->deleteMixesOptions(array('mix_id' => $iId)) && $this->oDb->deleteMixes(array('id' => $iId)))
+    	if($this->oDb->deleteMixesOptions(array('mix_id' => $iId)) && $this->oDb->deleteMixes(array('id' => $iId))) {
+    	    $this->clearCache();
+
     		$aResult = array('eval' => $this->getPageJsObject() . '.onMixDelete(oData);');
+    	}
     	else 
     		$aResult = array('message' => _t('_adm_stg_err_cannot_perform')); 
 
@@ -329,6 +332,12 @@ class BxDolStudioSettings extends BxTemplStudioPage
         }
         return $mixedValue;
     }
+
+    protected function clearCache()
+    {
+        BxDolDb::getInstance()->cacheParams(true);
+        BxDolCacheUtilities::getInstance()->clear('css');
+    }
 }
 
 /** @} */

+ 2 - 0
studio/template/scripts/BxBaseStudioSettings.php

@@ -348,6 +348,7 @@ class BxBaseStudioSettings extends BxDolStudioSettings
 			if(!empty($aDuplicate) && is_array($aDuplicate)) 
 				$this->oDb->duplicateMixesOptions($aDuplicate['id'], $iId);
 
+            $this->clearCache();
 			return array(
 				'eval' => $sJsObject . '.onMixCreate(oData);'
 			);
@@ -467,6 +468,7 @@ class BxBaseStudioSettings extends BxDolStudioSettings
 			));
 			$this->oDb->updateMixes(array('active' => 1), array('id' => $iId));
 
+			$this->clearCache();
 			return array(
 				'eval' => $sJsObject . '.onMixImport(oData);'
 			);