Author: sevein
Date: Thu Apr 26 15:21:09 2012
New Revision: 11528

Log:
Stop caching settings in QubitSettingsFilter because we store there some 
multilingual ui labels. The easiest fix now was to use raw SQL with culture 
fallback, 1 query instead of 54 queries. I tried to use QubitCultureFallback 
but I couldn't hydrate objects and its i18n versions at the same time, it only 
works when sorting.

Modified:
   trunk/apps/qubit/modules/settings/actions/deleteAction.class.php
   trunk/apps/qubit/modules/settings/actions/listAction.class.php
   trunk/lib/filter/QubitSettingsFilter.class.php
   trunk/lib/model/QubitSetting.php
   
trunk/plugins/sfThemePlugin/modules/sfThemePlugin/actions/indexAction.class.php

Modified: trunk/apps/qubit/modules/settings/actions/deleteAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/settings/actions/deleteAction.class.php    Thu Apr 
26 13:35:47 2012        (r11527)
+++ trunk/apps/qubit/modules/settings/actions/deleteAction.class.php    Thu Apr 
26 15:21:09 2012        (r11528)
@@ -32,10 +32,6 @@
     }
     // TODO: else populate an error?
 
-    // Clean cache
-    $cache = new sfFileCache(array('cache_dir' => 
sfConfig::get('sf_app_cache_dir').'/settings'));
-    $cache->clean();
-
     if ($this->context->getViewCacheManager() !== null)
     {
       
$this->context->getViewCacheManager()->remove('@sf_cache_partial?module=menu&action=_browseMenu&sf_cache_key=*');

Modified: trunk/apps/qubit/modules/settings/actions/listAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/settings/actions/listAction.class.php      Thu Apr 
26 13:35:47 2012        (r11527)
+++ trunk/apps/qubit/modules/settings/actions/listAction.class.php      Thu Apr 
26 15:21:09 2012        (r11528)
@@ -72,10 +72,6 @@
     // Handle POST data (form submit)
     if ($request->isMethod('post'))
     {
-      // Clean cache
-      $cache = new sfFileCache(array('cache_dir' => 
sfConfig::get('sf_app_cache_dir').'/settings'));
-      $cache->clean();
-
       if ($this->context->getViewCacheManager() !== null)
       {
         
$this->context->getViewCacheManager()->remove('@sf_cache_partial?module=menu&action=_browseMenu&sf_cache_key=*');

Modified: trunk/lib/filter/QubitSettingsFilter.class.php
==============================================================================
--- trunk/lib/filter/QubitSettingsFilter.class.php      Thu Apr 26 13:35:47 
2012        (r11527)
+++ trunk/lib/filter/QubitSettingsFilter.class.php      Thu Apr 26 15:21:09 
2012        (r11528)
@@ -24,23 +24,11 @@
    */
   public function execute($filterChain)
   {
-    // Create a function cache object for the QubitSettings method call
-    $cache = new sfFileCache(array('cache_dir' => 
sfConfig::get('sf_app_cache_dir').'/settings'));
-
-    // Get settings (from cache if exists)
-    if ($cache->has('settings'))
-    {
-      $settings = unserialize($cache->get('settings'));
-    }
-    else
-    {
-      $settings = QubitSetting::getSettingsArray();
-
-      $cache->set('settings', serialize($settings));
-    }
-
     // Overwrite/populate settings into sfConfig object
-    sfConfig::add($settings);
+    echo "<pre>";
+    var_dump(QubitSetting::getSettingsArray());
+    die();
+    sfConfig::add(QubitSetting::getSettingsArray());
 
     // Execute next filter
     $filterChain->execute();

Modified: trunk/lib/model/QubitSetting.php
==============================================================================
--- trunk/lib/model/QubitSetting.php    Thu Apr 26 13:35:47 2012        (r11527)
+++ trunk/lib/model/QubitSetting.php    Thu Apr 26 15:21:09 2012        (r11528)
@@ -47,20 +47,29 @@
    */
   public static function getSettingsArray()
   {
-    // load all settings from the settings table
+    $sql = 'SELECT
+        setting.*,
+        (CASE WHEN (current.VALUE IS NOT NULL AND current.VALUE <> "") THEN 
current.VALUE ELSE source.VALUE END) AS value,
+        (CASE WHEN (current.CULTURE IS NOT NULL AND current.CULTURE <> "") 
THEN current.CULTURE ELSE source.CULTURE END) AS culture
+      FROM '.QubitSetting::TABLE_NAME.'
+      LEFT JOIN '.QubitSettingI18n::TABLE_NAME.' current
+        ON (setting.ID = current.id AND current.CULTURE = 
"'.sfContext::getInstance()->user->getCulture().'")
+      LEFT JOIN '.QubitSettingI18n::TABLE_NAME.' source
+        ON (setting.ID = source.id AND source.CULTURE = setting.SOURCE_CULTURE 
AND source.CULTURE <> "'.sfContext::getInstance()->user->getCulture().'")';
+
     $settings = array();
-    foreach (QubitSetting::getAll() as $qubitSetting)
+    foreach (QubitPdo::fetchAll($sql) as $qubitSetting)
     {
-      if ($qubitSetting->getScope())
+      if ($qubitSetting->scope)
       {
-        $key = 'app_'.$qubitSetting->getScope().'_'.$qubitSetting->getName();
+        $key = 'app_'.$qubitSetting->scope.'_'.$qubitSetting->name;
       }
       else
       {
-        $key = 'app_'.$qubitSetting->getName();
+        $key = 'app_'.$qubitSetting->name;
       }
 
-      $settings[$key] = $qubitSetting->getValue(array('cultureFallback' => 
true));
+      $settings[$key] = $qubitSetting->value;
     }
 
     return $settings;

Modified: 
trunk/plugins/sfThemePlugin/modules/sfThemePlugin/actions/indexAction.class.php
==============================================================================
--- 
trunk/plugins/sfThemePlugin/modules/sfThemePlugin/actions/indexAction.class.php 
    Thu Apr 26 13:35:47 2012        (r11527)
+++ 
trunk/plugins/sfThemePlugin/modules/sfThemePlugin/actions/indexAction.class.php 
    Thu Apr 26 15:21:09 2012        (r11528)
@@ -93,10 +93,6 @@
         $toggleTitleSetting->__set('value', 
$this->form->getValue('toggleTitle'), array('sourceCulture' => true));
         $toggleTitleSetting->save();
 
-        // Clean cache
-        $cache = new sfFileCache(array('cache_dir' => 
sfConfig::get('sf_app_cache_dir').'/settings'));
-        $cache->clean();
-
         $this->redirect(array('module' => 'settings', 'action' => 'list'));
       }
     }

-- 
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/qubit-commits?hl=en.

Reply via email to