fixes app default config handling
authorPhilipp Schüle <p.schuele@metaways.de>
Thu, 30 Jul 2015 11:06:11 +0000 (13:06 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Thu, 30 Jul 2015 14:24:35 +0000 (16:24 +0200)
* only the first app default config was saved in class cache -> this overwrote all following app defaults
* adds a test for invoices modules in registry data

Change-Id: I94b5099201b11c3b6098a22700afc12c4c71ee5f
Reviewed-on: http://gerrit.tine20.com/customers/2081
Tested-by: Jenkins CI (http://ci.tine20.com/)
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
tests/tine20/Tinebase/Frontend/JsonTest.php
tine20/Tinebase/Config/Abstract.php

index 19f7fb0..773ada9 100644 (file)
  */
 
 /**
+ * Test helper
+ */
+require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
+
+/**
  * Test class for Tinebase_Frontend_Json
  */
 class Tinebase_Frontend_JsonTest extends TestCase
@@ -495,6 +500,12 @@ class Tinebase_Frontend_JsonTest extends TestCase
         $locale = Tinebase_Core::getLocale();
         $symbols = Zend_Locale::getTranslationList('symbols', $locale);
         $this->assertEquals($symbols['decimal'], $registryData['Tinebase']['decimalSeparator']);
+
+        if (Sales_Config::getInstance()->featureEnabled(Sales_Config::FEATURE_INVOICES_MODULE)) {
+            $configuredSalesModels = array_keys($registryData['Sales']['models']);
+            $this->assertTrue(in_array('Invoice', $configuredSalesModels), 'Invoices is missing from configured models: '
+                . print_r($configuredSalesModels, true));
+        }
     }
 
     /**
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;
     }
 }