0009924: Refactoring of Tinebase_Setup_Initialize for decoupling code
authorFlávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
Thu, 15 May 2014 13:47:07 +0000 (10:47 -0300)
committerLars Kneschke <l.kneschke@metaways.de>
Fri, 16 May 2014 05:30:21 +0000 (07:30 +0200)
specific for Oracle

 - Decouple Oracle procedure of Tinebase_Setup_Initialize
 - Allow procedures for other databases

Change-Id: If00c57e7e85c358b19e52946b49e94257bcf8dbc
Reviewed-on: https://gerrit.tine20.org/tine20/2828
Tested-by: jenkins user
Reviewed-by: Lars Kneschke <l.kneschke@metaways.de>
tine20/Tinebase/Backend/Sql/Command/Interface.php
tine20/Tinebase/Backend/Sql/Command/Mysql.php
tine20/Tinebase/Backend/Sql/Command/Oracle.php
tine20/Tinebase/Backend/Sql/Command/Pgsql.php
tine20/Tinebase/Setup/Initialize.php

index ae76324..0100663 100755 (executable)
@@ -6,7 +6,7 @@
  * @subpackage  Backend
  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
  * @author      Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
- * @copyright   Copyright (c) 2011-2011 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2011-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  */
 
 /**
@@ -21,18 +21,17 @@ interface Tinebase_Backend_Sql_Command_Interface
      * @param string $field
      * @return string
      */
-     public function getAggregate($field);
-
-     /**
-      * @param string $field
-      * @param mixed $returnIfTrue
-      * @param mixed $returnIfFalse
-      * @return string
-      */
+    public function getAggregate($field);
+    
+    /**
+     * @param string $field
+     * @param mixed $returnIfTrue
+     * @param mixed $returnIfFalse
+     * @return string
+     */
     public function getIfIsNull($field, $returnIfTrue, $returnIfFalse);
-
+    
     /**
-     *
      * @param string $condition
      * @param string $returnIfTrue
      * @param string $returnIfFalse
@@ -55,28 +54,28 @@ interface Tinebase_Backend_Sql_Command_Interface
      * @return mixed
      */
     public function getFalseValue();
-
+    
     /**
      * returns the true value according to backend
      * @return mixed
      */
     public function getTrueValue();
-
+    
     /**
      * @param array $field
      */
     public function setDatabaseJokerCharacters();
-
+    
     /**
      * get like keyword
-     * 
+     *
      * @return string
      */
     public function getLike();
     
     /**
      * prepare value for case insensitive search
-     * 
+     *
      * @param string $value
      * @return string
      */
@@ -84,7 +83,7 @@ interface Tinebase_Backend_Sql_Command_Interface
     
     /**
      * returns field without accents (diacritic signs) - for Pgsql;
-     * 
+     *
      * @param string $field
      * @return string
      */
@@ -92,8 +91,14 @@ interface Tinebase_Backend_Sql_Command_Interface
     
     /**
      * escape special char
-     *  
+     *
      * @ return string
      */
-     public function escapeSpecialChar($value);
+    public function escapeSpecialChar($value);
+    
+    /**
+     * Initializes database procedures
+     * @param Setup_Backend_Interface $backend
+     */
+    public function initProcedures(Setup_Backend_Interface $backend);
 }
index 7acaf35..e7999ff 100644 (file)
@@ -6,7 +6,7 @@
  * @subpackage  Backend
  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
  * @author      Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
- * @copyright   Copyright (c) 2011-2011 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2011-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  */
 
 /**
@@ -18,7 +18,6 @@
 class Tinebase_Backend_Sql_Command_Mysql implements Tinebase_Backend_Sql_Command_Interface
 {
     /**
-     * 
      * @var Zend_Db_Adapter_Abstract
      */
     protected $_adapter;
@@ -41,10 +40,10 @@ class Tinebase_Backend_Sql_Command_Mysql implements Tinebase_Backend_Sql_Command
         
         return new Zend_Db_Expr("GROUP_CONCAT( DISTINCT $quotedField)");
     }
-
+    
     /**
      * returns concatenation expression
-     * 
+     *
      * @param array $values
      */
     public function getConcat($values)
@@ -79,7 +78,6 @@ class Tinebase_Backend_Sql_Command_Mysql implements Tinebase_Backend_Sql_Command
     }
     
     /**
-     *
      * @param string $condition
      * @param string $returnIfTrue
      * @param string $returnIfFalse
@@ -144,7 +142,7 @@ class Tinebase_Backend_Sql_Command_Mysql implements Tinebase_Backend_Sql_Command
     
     /**
      * prepare value for case insensitive search
-     * 
+     *
      * @param string $value
      * @return string
      */
@@ -155,7 +153,7 @@ class Tinebase_Backend_Sql_Command_Mysql implements Tinebase_Backend_Sql_Command
     
     /**
      * returns field without accents (diacritic signs) - for Pgsql;
-     * 
+     *
      * @param string $field
      * @return string
      */
@@ -166,11 +164,21 @@ class Tinebase_Backend_Sql_Command_Mysql implements Tinebase_Backend_Sql_Command
     
     /**
      * escape special char
-     *  
+     *
      * @return string
-     */ 
+     */
      public function escapeSpecialChar($value)
      {
          return $value;
      }
+
+     /**
+      * Initializes database procedures
+      * 
+      * @param Setup_Backend_Interface $backend
+      */
+     public function initProcedures(Setup_Backend_Interface $backend)
+     {
+
+     }
 }
index 475ad7d..b1f36f8 100755 (executable)
@@ -6,7 +6,7 @@
  * @subpackage  Backend
  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
  * @author      Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
- * @copyright   Copyright (c) 2011-2011 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2011-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  */
 
 /**
@@ -18,7 +18,6 @@
 class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Command_Interface
 {
     /**
-     * 
      * @var Zend_Db_Adapter_Abstract
      */
     protected $_adapter;
@@ -42,7 +41,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
         
         return new Zend_Db_Expr("GROUP_CONCAT( DISTINCT $quotedField)");
     }
-
+    
     /**
      * @param string $field
      * @param mixed $returnIfTrue
@@ -74,7 +73,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     {
         return "TO_DATE({$date}, 'YYYY-MM-DD hh24:mi:ss') ";
     }
-
+    
     /**
      * @param string $value
      * @return string
@@ -83,7 +82,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     {
         return "TO_DATE('{$value}', 'YYYY-MM-DD hh24:mi:ss') ";
     }
-
+    
     /**
      * @return mixed
      */
@@ -91,7 +90,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     {
         return '0';
     }
-
+    
     /**
      * @return mixed
      */
@@ -99,7 +98,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     {
         return '1';
     }
-
+    
     /**
      * @return string
      */
@@ -110,7 +109,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     
     /**
      * get like keyword
-     * 
+     *
      * @return string
      */
     public function getLike()
@@ -120,7 +119,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     
     /**
      * prepare value for case insensitive search
-     * 
+     *
      * @param string $value
      * @return string
      */
@@ -131,7 +130,7 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     
     /**
      * returns field without accents (diacritic signs) - for Pgsql;
-     * 
+     *
      * @param string $field
      * @return string
      */
@@ -141,12 +140,96 @@ class Tinebase_Backend_Sql_Command_Oracle implements Tinebase_Backend_Sql_Comman
     }
     
     /**
-     * escape special char 
-     * 
+     * escape special char
+     *
      * @return string
-     */ 
+     */
      public function escapeSpecialChar($value)
      {
          return $value;
-     }    
+     }
+     
+     /**
+      * Initializes database procedures
+      * 
+      * @param Setup_Backend_Interface $backend
+      */
+     public function initProcedures(Setup_Backend_Interface $backend)
+     {
+         $md5 = "CREATE OR REPLACE
+            function md5( input varchar2 ) return sys.dbms_obfuscation_toolkit.varchar2_checksum as
+            begin
+                return lower(rawtohex(utl_raw.cast_to_raw(sys.dbms_obfuscation_toolkit.md5( input_string => input ))));
+            end;";
+         $backend->execQueryVoid($md5);
+
+         $now = "CREATE OR REPLACE
+            function NOW return DATE as
+            begin
+                return SYSDATE;
+            end;";
+         $backend->execQueryVoid($now);
+
+         $typeStringAgg = "CREATE OR REPLACE TYPE t_string_agg AS OBJECT
+                (
+                  g_string  VARCHAR2(32767),
+
+                  STATIC FUNCTION ODCIAggregateInitialize(sctx  IN OUT  t_string_agg)
+                    RETURN NUMBER,
+
+                  MEMBER FUNCTION ODCIAggregateIterate(self   IN OUT  t_string_agg, value  IN      VARCHAR2 )
+                     RETURN NUMBER,
+
+                  MEMBER FUNCTION ODCIAggregateTerminate(self         IN   t_string_agg,
+                                                         returnValue  OUT  VARCHAR2,
+                                                         flags        IN   NUMBER)
+                    RETURN NUMBER,
+
+                  MEMBER FUNCTION ODCIAggregateMerge(self  IN OUT  t_string_agg,
+                                                     ctx2  IN      t_string_agg)
+                    RETURN NUMBER
+                );";
+         $backend->execQueryVoid($typeStringAgg);
+
+         $typeStringAgg = "CREATE OR REPLACE TYPE BODY t_string_agg IS
+              STATIC FUNCTION ODCIAggregateInitialize(sctx  IN OUT  t_string_agg)
+                RETURN NUMBER IS
+              BEGIN
+                sctx := t_string_agg(NULL);
+                RETURN ODCIConst.Success;
+              END;
+
+              MEMBER FUNCTION ODCIAggregateIterate(self   IN OUT  t_string_agg,
+                                                   value  IN      VARCHAR2 )
+                RETURN NUMBER IS
+              BEGIN
+                SELF.g_string := self.g_string || ',' || value;
+                RETURN ODCIConst.Success;
+              END;
+
+              MEMBER FUNCTION ODCIAggregateTerminate(self         IN   t_string_agg,
+                                                     returnValue  OUT  VARCHAR2,
+                                                     flags        IN   NUMBER)
+                RETURN NUMBER IS
+              BEGIN
+                returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
+                RETURN ODCIConst.Success;
+              END;
+
+              MEMBER FUNCTION ODCIAggregateMerge(self  IN OUT  t_string_agg,
+                                                 ctx2  IN      t_string_agg)
+                RETURN NUMBER IS
+              BEGIN
+                SELF.g_string := SELF.g_string || ',' || ctx2.g_string;
+                RETURN ODCIConst.Success;
+              END;
+            END;";
+         $backend->execQueryVoid($typeStringAgg);
+
+         $group_concat = "CREATE OR REPLACE
+            FUNCTION GROUP_CONCAT (p_input VARCHAR2)
+            RETURN VARCHAR2
+            PARALLEL_ENABLE AGGREGATE USING t_string_agg;";
+         $backend->execQueryVoid($group_concat);
+     }
 }
index 5e0e182..f01afc9 100755 (executable)
@@ -6,7 +6,7 @@
  * @subpackage  Backend
  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
  * @author      Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
- * @copyright   Copyright (c) 2011-2011 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2011-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  */
 
 /**
@@ -18,7 +18,6 @@
 class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command_Interface
 {
     /**
-     * 
      * @var Zend_Db_Adapter_Abstract
      */
     protected $_adapter;
@@ -80,9 +79,8 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
         
         return new Zend_Db_Expr("(CASE WHEN $quotedField IS NULL THEN $returnIfTrue ELSE $returnIfFalse END)");
     }
-
+    
     /**
-     *
      * @param Zend_Db_Adapter_Abstract $adapter
      * @param string $condition
      * @param string $returnIfTrue
@@ -102,7 +100,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     {
         return "DATE({$date})";
     }
-
+    
     /**
      * @param string $value
      * @return string
@@ -111,7 +109,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     {
         return $this->_adapter->quote($value);
     }
-
+    
     /**
      * @return mixed
      */
@@ -119,7 +117,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     {
         return 'FALSE';
     }
-
+    
     /**
      * @return mixed
      */
@@ -127,7 +125,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     {
         return 'TRUE';
     }
-
+    
     /**
      * @return string
      */
@@ -138,7 +136,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     
     /**
      * get like keyword
-     * 
+     *
      * @return string
      */
     public function getLike()
@@ -148,7 +146,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     
     /**
      * prepare value for case insensitive search
-     * 
+     *
      * @param string $value
      * @return string
      */
@@ -159,9 +157,9 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     
     /**
      * Even if the database backend is PostgreSQL, we have to verify
-     *  if the extension Unaccent is installed and loaded. 
+     *  if the extension Unaccent is installed and loaded.
      *  This is done in Tinebase_Core::checkUnaccentExtension.
-     * 
+     *
      * @return boolean
      */
     protected function _hasUnaccentExtension()
@@ -177,7 +175,7 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     
     /**
      * returns field without accents (diacritic signs) - for Pgsql;
-     * 
+     *
      * @param string $field
      * @return string
      */
@@ -191,13 +189,21 @@ class Tinebase_Backend_Sql_Command_Pgsql implements Tinebase_Backend_Sql_Command
     }
     
     /**
-     * escape special char 
-     * 
+     * escape special char
+     *
      * @return string
-     */ 
+     */
      public function escapeSpecialChar($value)
      {
          return str_replace('\\', '\\\\', $value);
-     }     
+     }
      
+     /**
+      * Initializes database procedures
+      * @param Setup_Backend_Interface $backend
+      */
+     public function initProcedures(Setup_Backend_Interface $backend)
+     {
+
+     }
 }
index e452eab..2eb005a 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * Tine 2.0
- * 
+ *
  * @package     Tinebase
  * @subpackage  Setup
  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
@@ -12,7 +12,7 @@
 
 /**
  * class for Tinebase initialization
- * 
+ *
  * @package     Tinebase
  * @subpackage  Setup
  */
@@ -20,7 +20,7 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
 {
     /**
      * Override method: Tinebase needs additional initialisation
-     * 
+     *
      * @see tine20/Setup/Setup_Initialize#_initialize($_application)
      */
     public function _initialize(Tinebase_Model_Application $_application, $_options = null)
@@ -29,102 +29,25 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
 
         $this->_setupConfigOptions($_options);
         $this->_setupGroups();
-        
+
         Tinebase_Acl_Roles::getInstance()->createInitialRoles();
-        
+
         parent::_initialize($_application, $_options);
     }
-    
+
     /**
-     * This method is necessary only if Oracle is used.
-     * @todo discover a way to replace this code for an equivalent in Tinebase_Backend_Sql_Command
+     * Initializes database procedures if they exist
      */
     protected function _initProcedures()
     {
         $backend = Setup_Backend_Factory::factory();
-        $_db = Tinebase_Core::getDb();
-        if ($_db instanceof Zend_Db_Adapter_Oracle) {
-            $md5 = "CREATE OR REPLACE
-                function md5( input varchar2 ) return sys.dbms_obfuscation_toolkit.varchar2_checksum as
-                begin
-                    return lower(rawtohex(utl_raw.cast_to_raw(sys.dbms_obfuscation_toolkit.md5( input_string => input ))));
-                end;";
-            $backend->execQueryVoid($md5);
-
-            $now = "CREATE OR REPLACE
-                function NOW return DATE as
-                begin
-                    return SYSDATE;
-                end;";
-            $backend->execQueryVoid($now);
-
-            $typeStringAgg = "CREATE OR REPLACE TYPE t_string_agg AS OBJECT
-                    (
-                      g_string  VARCHAR2(32767),
-
-                      STATIC FUNCTION ODCIAggregateInitialize(sctx  IN OUT  t_string_agg)
-                        RETURN NUMBER,
-
-                      MEMBER FUNCTION ODCIAggregateIterate(self   IN OUT  t_string_agg, value  IN      VARCHAR2 )
-                         RETURN NUMBER,
-
-                      MEMBER FUNCTION ODCIAggregateTerminate(self         IN   t_string_agg,
-                                                             returnValue  OUT  VARCHAR2,
-                                                             flags        IN   NUMBER)
-                        RETURN NUMBER,
-
-                      MEMBER FUNCTION ODCIAggregateMerge(self  IN OUT  t_string_agg,
-                                                         ctx2  IN      t_string_agg)
-                        RETURN NUMBER
-                    );";
-            $backend->execQueryVoid($typeStringAgg);
-
-            $typeStringAgg = "CREATE OR REPLACE TYPE BODY t_string_agg IS
-                  STATIC FUNCTION ODCIAggregateInitialize(sctx  IN OUT  t_string_agg)
-                    RETURN NUMBER IS
-                  BEGIN
-                    sctx := t_string_agg(NULL);
-                    RETURN ODCIConst.Success;
-                  END;
-
-                  MEMBER FUNCTION ODCIAggregateIterate(self   IN OUT  t_string_agg,
-                                                       value  IN      VARCHAR2 )
-                    RETURN NUMBER IS
-                  BEGIN
-                    SELF.g_string := self.g_string || ',' || value;
-                    RETURN ODCIConst.Success;
-                  END;
-
-                  MEMBER FUNCTION ODCIAggregateTerminate(self         IN   t_string_agg,
-                                                         returnValue  OUT  VARCHAR2,
-                                                         flags        IN   NUMBER)
-                    RETURN NUMBER IS
-                  BEGIN
-                    returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
-                    RETURN ODCIConst.Success;
-                  END;
-
-                  MEMBER FUNCTION ODCIAggregateMerge(self  IN OUT  t_string_agg,
-                                                     ctx2  IN      t_string_agg)
-                    RETURN NUMBER IS
-                  BEGIN
-                    SELF.g_string := SELF.g_string || ',' || ctx2.g_string;
-                    RETURN ODCIConst.Success;
-                  END;
-                END;";
-            $backend->execQueryVoid($typeStringAgg);
-
-            $group_concat = "CREATE OR REPLACE
-                FUNCTION GROUP_CONCAT (p_input VARCHAR2)
-                RETURN VARCHAR2
-                PARALLEL_ENABLE AGGREGATE USING t_string_agg;";
-            $backend->execQueryVoid($group_concat);
-        }
+        $dbCommand = Tinebase_Backend_Sql_Command::factory(Tinebase_Core::getDb());
+        $dbCommand->initProcedures($backend);
     }
 
     /**
      * set config options (accounts/authentication/email/...)
-     * 
+     *
      * @param array $_options
      */
     protected function _setupConfigOptions($_options)
@@ -133,27 +56,27 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
         foreach($_options as $key => $value) {
             if (empty($_options[$key])) unset($_options[$key]);
         }
-        
+
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Saving config options (accounts/authentication/email/...)');
-        
+
         // this is a dangerous TRACE as there might be passwords in here!
         //if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_options, TRUE));
-        
+
         $defaults = empty($_options['authenticationData']) ? Setup_Controller::getInstance()->loadAuthenticationData() : $_options['authenticationData'];
         $defaultGroupNames = $this->_parseDefaultGroupNameOptions($_options);
         $defaults['accounts'][Tinebase_User::getConfiguredBackend()] = array_merge($defaults['accounts'][Tinebase_User::getConfiguredBackend()], $defaultGroupNames);
-        
+
         $emailConfigKeys = Setup_Controller::getInstance()->getEmailConfigKeys();
         $configsToSet = array_merge($emailConfigKeys, array('authentication', 'accounts', 'redirectSettings', 'acceptedTermsVersion'));
-        
+
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($configsToSet, TRUE));
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($defaults, TRUE));
-        
+
         $optionsToSave = array();
         foreach ($configsToSet as $group) {
             if (isset($_options[$group])) {
                 $parsedOptions = (is_string($_options[$group])) ? Setup_Frontend_Cli::parseConfigValue($_options[$group]) : $_options[$group];
-                
+
                 switch ($group) {
                     case 'authentication':
                     case 'accounts':
@@ -168,13 +91,13 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
                 $optionsToSave[$group] = $defaults[$group];
             }
         }
-        
+
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($optionsToSave, TRUE));
-        
+
         Setup_Controller::getInstance()->saveEmailConfig($optionsToSave);
         Setup_Controller::getInstance()->saveAuthentication($optionsToSave);
     }
-    
+
     /**
     * Extract default group name settings from {@param $_options}
     *
@@ -187,10 +110,10 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
             'defaultAdminGroupName' => (isset($_options['defaultAdminGroupName'])) ? $_options['defaultAdminGroupName'] : Tinebase_Group::DEFAULT_ADMIN_GROUP,
             'defaultUserGroupName'  => (isset($_options['defaultUserGroupName'])) ? $_options['defaultUserGroupName'] : Tinebase_Group::DEFAULT_USER_GROUP,
         );
-        
+
         return $result;
     }
-    
+
     /**
      * import groups(ldap)/create initial groups(sql)
      */
@@ -202,11 +125,11 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
             Tinebase_Group::createInitialGroups();
         }
     }
-    
+
     /**
      * Override method because this app requires special rights
      * @see tine20/Setup/Setup_Initialize#_createInitialRights($_application)
-     * 
+     *
      * @todo make hard coded role name ('user role') configurable
      */
     protected function _createInitialRights(Tinebase_Model_Application $_application)
@@ -216,29 +139,29 @@ class Tinebase_Setup_Initialize extends Setup_Initialize
         $roles = Tinebase_Acl_Roles::getInstance();
         $userRole = $roles->getRoleByName('user role');
         $roles->addSingleRight(
-            $userRole->getId(), 
-            $_application->getId(), 
+            $userRole->getId(),
+            $_application->getId(),
             Tinebase_Acl_Rights::CHECK_VERSION
         );
         $roles->addSingleRight(
-            $userRole->getId(), 
-            $_application->getId(), 
+            $userRole->getId(),
+            $_application->getId(),
             Tinebase_Acl_Rights::REPORT_BUGS
         );
         $roles->addSingleRight(
-            $userRole->getId(), 
-            $_application->getId(), 
+            $userRole->getId(),
+            $_application->getId(),
             Tinebase_Acl_Rights::MANAGE_OWN_STATE
         );
     }
-    
+
     /**
      * init scheduler tasks
      */
     protected function _initializeSchedulerTasks()
     {
         $scheduler = Tinebase_Core::getScheduler();
-        
+
         Tinebase_Scheduler_Task::addAlarmTask($scheduler);
         Tinebase_Scheduler_Task::addCacheCleanupTask($scheduler);
         Tinebase_Scheduler_Task::addCredentialCacheCleanupTask($scheduler);