fixes app default config handling
[tine20] / tine20 / Tinebase / Config / Abstract.php
index f4980dc..12b70aa 100644 (file)
@@ -91,13 +91,6 @@ abstract class Tinebase_Config_Abstract
     private static $_configFileData;
     
     /**
-     * application defaults config file data.
-     * 
-     * @var array
-     */
-    private static $_appDefaultsConfigFileData;
-    
-    /**
      * config database backend
      * 
      * @var Tinebase_Backend_Sql
@@ -110,7 +103,7 @@ abstract class Tinebase_Config_Abstract
      * @var array
      */
     protected $_cachedApplicationConfig = NULL;
-    
+
     /**
      * get properties definitions 
      * 
@@ -415,31 +408,28 @@ abstract class Tinebase_Config_Abstract
      */
     protected function _getAppDefaultsConfigFileData()
     {
-        if (! self::$_appDefaultsConfigFileData) {
-            $cacheId = $this->_appName;
-            try {
-                $configData = Tinebase_Cache_PerRequest::getInstance()->load(__CLASS__, __METHOD__, $cacheId);
-            } catch (Tinebase_Exception_NotFound $tenf) {
+        $cacheId = $this->_appName;
+        try {
+            $configData = Tinebase_Cache_PerRequest::getInstance()->load(__CLASS__, __METHOD__, $cacheId);
+        } catch (Tinebase_Exception_NotFound $tenf) {
 
-                $configFilename = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . $this->_appName . DIRECTORY_SEPARATOR . 'config.inc.php';
+            $configFilename = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . $this->_appName . DIRECTORY_SEPARATOR . 'config.inc.php';
 
+            if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
+                . ' Looking for defaults config.inc.php at ' . $configFilename);
+            if (file_exists($configFilename)) {
+                $configData = include($configFilename);
                 if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
-                    . ' Looking for defaults config.inc.php at ' . $configFilename);
-                if (file_exists($configFilename)) {
-                    $configData = include($configFilename);
-                    if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
-                        . ' Found default config.inc.php for app ' . $this->_appName);
-                    if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
-                        . ' ' . print_r($configData, true));
-                } else {
-                    $configData = array();
-                }
-                Tinebase_Cache_PerRequest::getInstance()->save(__CLASS__, __METHOD__, $cacheId, $configData);
+                    . ' Found default config.inc.php for app ' . $this->_appName);
+                if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
+                    . ' ' . print_r($configData, true));
+            } else {
+                $configData = array();
             }
-            self::$_appDefaultsConfigFileData = $configData;
+            Tinebase_Cache_PerRequest::getInstance()->save(__CLASS__, __METHOD__, $cacheId, $configData);
         }
         
-        return self::$_appDefaultsConfigFileData;
+        return $configData;
     }
     
     /**
@@ -662,11 +652,21 @@ abstract class Tinebase_Config_Abstract
      */
     public function featureEnabled($featureName)
     {
-        $features = $this->get(self::ENABLED_FEATURES);
+        $cacheId = $this->_appName;
+        try {
+            $features = Tinebase_Cache_PerRequest::getInstance()->load(__CLASS__, __METHOD__, $cacheId);
+        } catch (Tinebase_Exception_NotFound $tenf) {
+            $features = $this->get(self::ENABLED_FEATURES);
+            if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
+                . ' Features config of app ' . $this->_appName . ': '
+                . print_r($features->toArray(), true));
+            Tinebase_Cache_PerRequest::getInstance()->save(__CLASS__, __METHOD__, $cacheId, $features);
+        }
+
         if (isset($features->{$featureName})) {
             return $features->{$featureName};
         }
-        
+
         return false;
     }
 }