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.