コード例 #1
0
 /**
  * init the test framework
  */
 public function initFramework()
 {
     $this->setWhiteAndBlacklists();
     // get config
     $configData = @(include 'phpunitconfig.inc.php');
     if ($configData === false) {
         $configData = (include 'config.inc.php');
     }
     if ($configData === false) {
         die('central configuration file config.inc.php not found in includepath: ' . get_include_path());
     }
     $config = new Zend_Config($configData);
     Zend_Registry::set('testConfig', $config);
     $_SERVER['DOCUMENT_ROOT'] = $config->docroot;
     $_SERVER['REQUEST_URI'] = '';
     Tinebase_Core::startCoreSession();
     Tinebase_Core::initFramework();
     // set default test mailer
     Tinebase_Smtp::setDefaultTransport(new Zend_Mail_Transport_Array());
     // set max execution time
     Tinebase_Core::setExecutionLifeTime(1200);
     if ($config->locale) {
         Tinebase_Core::setupUserLocale($config->locale);
     }
     // this is needed for session handling in unittests (deactivate Zend_Session::writeClose and others)
     Zend_Session::$_unitTestEnabled = TRUE;
 }
コード例 #2
0
 /**
  * sets locale
  *
  * @param  string $localeString
  * @param  bool   $saveaspreference
  * @param  bool   $setcookie
  * @return array
  */
 public function setLocale($localeString, $saveaspreference, $setcookie)
 {
     Tinebase_Core::setupUserLocale($localeString, $saveaspreference);
     $locale = Tinebase_Core::get('locale');
     // save in cookie (expires in 365 days)
     if ($setcookie) {
         setcookie('TINE20LOCALE', $localeString, time() + 60 * 60 * 24 * 365);
     }
     return array('success' => TRUE);
 }
コード例 #3
0
 /**
  * sets locale
  *
  * @param  string $localeString
  * @param  bool   $saveaspreference
  * @param  bool   $setcookie
  * @return array
  */
 public function setLocale($localeString, $saveaspreference, $setcookie)
 {
     Tinebase_Core::setupUserLocale($localeString);
     if ($saveaspreference && is_object(Tinebase_Core::getUser())) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " Saving locale: " . $localeString);
         }
         Tinebase_Core::getPreference()->{Tinebase_Preference::LOCALE} = $localeString;
     }
     // save in cookie (expires in 365 days)
     if ($setcookie) {
         setcookie('TINE20LOCALE', $localeString, time() + 60 * 60 * 24 * 365);
     }
     return array('success' => TRUE);
 }
コード例 #4
0
 /**
  * init tine framework
  */
 protected function _initFramework()
 {
     $this->_setupCliConfig();
     Tinebase_Core::setupTempDir();
     Tinebase_Core::setupServerTimezone();
     Tinebase_Core::setupLogger();
     Tinebase_Core::setupStreamWrapper();
     Tinebase_Core::setupSession();
     Tinebase_Core::set(Tinebase_Core::LOCALE, new Zend_Locale('en_US'));
     Tinebase_Core::set(Tinebase_Core::USERTIMEZONE, 'UTC');
     Tinebase_Core::setupDatabaseConnection();
     Tinebase_Core::setupCache();
     Tinebase_Core::setupUserTimezone();
     Tinebase_Core::setupUserLocale();
 }
 /**
  * init the test framework
  */
 public function initFramework()
 {
     $this->setWhiteAndBlacklists();
     $config = $this->getConfig();
     // set some server vars. sabredav complains if REQUEST_URI is not set
     $_SERVER['DOCUMENT_ROOT'] = $config->docroot;
     $_SERVER['REQUEST_URI'] = '';
     Tinebase_Core::startCoreSession();
     Tinebase_Core::initFramework();
     // set default test mailer
     Tinebase_Smtp::setDefaultTransport(new Zend_Mail_Transport_Array());
     // set max execution time
     Tinebase_Core::setExecutionLifeTime(1200);
     if ($config->locale) {
         Tinebase_Core::setupUserLocale($config->locale);
     }
     // this is needed for session handling in unittests (deactivate Zend_Session::writeClose and others)
     Zend_Session::$_unitTestEnabled = TRUE;
     Tinebase_Core::set('frameworkInitialized', true);
 }
コード例 #6
0
 /**
  * initialize user (session, locale, tz)
  * 
  * @param Tinebase_Model_FullUser $_user
  * @param boolean $fixCookieHeader
  */
 public function initUser(Tinebase_Model_FullUser $_user, $fixCookieHeader = true)
 {
     Tinebase_Core::set(Tinebase_Core::USER, $_user);
     if (Tinebase_Session_Abstract::getSessionEnabled()) {
         $this->_initUserSession($fixCookieHeader);
     }
     // need to set locale again and because locale might not be set correctly during loginFromPost
     // use 'auto' setting because it is fetched from cookie or preference then
     Tinebase_Core::setupUserLocale('auto');
     // need to set userTimeZone again
     $userTimezone = Tinebase_Core::getPreference()->getValue(Tinebase_Preference::TIMEZONE);
     Tinebase_Core::setupUserTimezone($userTimezone);
 }
    public function testCustomTranslations()
    {
        $lang = 'en_GB';
        $translationPath = Tinebase_Core::getTempDir() . "/tine20/translations";
        Tinebase_Config::getInstance()->translations = $translationPath;
        $translationDir = "{$translationPath}/{$lang}/Tinebase/translations";
        @mkdir($translationDir, 0777, TRUE);
        $poFile = "{$translationDir}/{$lang}.po";
        $poData = 'msgid ""
msgstr ""
"Project-Id-Version: Tine 2.0 - Tinebase\\n"
"POT-Creation-Date: 2008-05-17 22:12+0100\\n"
"PO-Revision-Date: 2008-07-29 21:14+0100\\n"
"Last-Translator: Cornelius Weiss <*****@*****.**>\\n"
"Language-Team: Tine 2.0 Translators\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"X-Poedit-Language: en\\n"
"X-Poedit-Country: US\\n"
"X-Poedit-SourceCharset: utf-8\\n"
"Plural-Forms: nplurals=2; plural=n != 1;\\n"
"X-Tine20-Language: My Language\\n"
"X-Tine20-Country: MY REGION\\n"

#: Acl/Rights/Abstract.php:75
msgid "run"
msgstr "изпълни"
';
        file_put_contents($poFile, $poData);
        $availableTranslations = Tinebase_Translation::getAvailableTranslations();
        foreach ($availableTranslations as $langInfo) {
            if ($langInfo['locale'] == $lang) {
                $customInfo = $langInfo;
            }
        }
        // assert cutom lang is available
        $this->assertTrue(isset($customInfo), 'custom translation not in list of available translations');
        $this->assertEquals('My Language', $customInfo['language'], 'custom language param missing');
        $this->assertEquals('MY REGION', $customInfo['region'], 'custom region param missing');
        // test the translation
        $translation = Tinebase_Translation::getTranslation('Tinebase', new Zend_Locale($lang));
        // NOTE: Zent_Translate does not work with .po files
        //$this->assertEquals("изпълни", $translation->_('run'));
        $jsTranslations = Tinebase_Translation::getJsTranslations($lang, 'Tinebase');
        $this->assertEquals(1, preg_match('/изпълни/', $jsTranslations));
        Tinebase_Core::setupUserLocale();
    }
コード例 #8
0
 /**
  * init tine framework
  */
 public static function initFramework()
 {
     // avoid autostart of sessions
     Zend_Session::setOptions(array('strict' => true));
     Tinebase_Core::setupTempDir();
     Tinebase_Core::setupStreamWrapper();
     //Cache must be setup before User Locale because otherwise Zend_Locale tries to setup
     //its own cache handler which might result in a open_basedir restriction depending on the php.ini settings
     Tinebase_Core::setupCache();
     Tinebase_Core::setupBuildConstants();
     // setup a temporary user locale. This will be overwritten later but we
     // need to handle exceptions during initialisation process such as session timeout
     // @todo add fallback locale to config file
     Tinebase_Core::set('locale', new Zend_Locale('en_US'));
     Tinebase_Core::setupUserLocale();
     Tinebase_Core::enableProfiling();
     if (PHP_SAPI !== 'cli') {
         header('X-API: http://www.tine20.org/apidocs/tine20/');
         if (isset($_SERVER['HTTP_X_TRANSACTIONID'])) {
             header('X-TransactionID: ' . substr($_SERVER['HTTP_X_TRANSACTIONID'], 1, -1) . ';' . $_SERVER['SERVER_NAME'] . ';16.4.5009.816;' . date('Y-m-d H:i:s') . ' UTC;265.1558 ms');
         }
     }
 }
コード例 #9
0
 /**
  * init tine framework
  */
 public static function initFramework()
 {
     Tinebase_Core::setupConfig();
     // Server Timezone must be setup before logger, as logger has timehandling!
     Tinebase_Core::setupServerTimezone();
     Tinebase_Core::setupLogger();
     // Database Connection must be setup before cache because setupCache uses constant "SQL_TABLE_PREFIX"
     Tinebase_Core::setupDatabaseConnection();
     Tinebase_Core::setupTempDir();
     Tinebase_Core::setupStreamWrapper();
     //Cache must be setup before User Locale because otherwise Zend_Locale tries to setup
     //its own cache handler which might result in a open_basedir restriction depending on the php.ini settings
     Tinebase_Core::setupCache();
     Tinebase_Core::setupSession();
     // setup a temporary user locale/timezone. This will be overwritten later but we
     // need to handle exceptions during initialisation process such as session timeout
     // @todo add fallback locale to config file
     Tinebase_Core::set('locale', new Zend_Locale('en_US'));
     Tinebase_Core::set('userTimeZone', 'UTC');
     //        Tinebase_Core::setupMailer();
     Tinebase_Core::setupUserCredentialCache();
     Tinebase_Core::setupUserTimezone();
     Tinebase_Core::setupUserLocale();
     header('X-API: http://www.tine20.org/apidocs/tine20/');
 }
コード例 #10
0
 /**
  * init user session
  * 
  * @param Tinebase_Model_FullUser $_user
  * @param Tinebase_Model_AccessLog $_accessLog
  * @param string $_password
  */
 protected function _initUser(Tinebase_Model_FullUser $_user, Tinebase_Model_AccessLog $_accessLog, $_password)
 {
     if ($_accessLog->result === Tinebase_Auth::SUCCESS && $_user->accountStatus === Tinebase_User::STATUS_ENABLED) {
         $this->_initUserSession($_user);
         Tinebase_Core::set(Tinebase_Core::USER, $_user);
         $credentialCache = Tinebase_Auth_CredentialCache::getInstance()->cacheCredentials($_user->accountLoginName, $_password);
         Tinebase_Core::set(Tinebase_Core::USERCREDENTIALCACHE, $credentialCache);
         // need to set locale again and because locale might not be set correctly during loginFromPost
         // use 'auto' setting because it is fetched from cookie or preference then
         Tinebase_Core::setupUserLocale('auto');
         // need to set userTimeZone again
         $userTimezone = Tinebase_Core::getPreference()->getValue(Tinebase_Preference::TIMEZONE);
         Tinebase_Core::setupUserTimezone($userTimezone);
         $_user->setLoginTime($_accessLog->ip);
         $_accessLog->sessionid = session_id();
         $_accessLog->login_name = $_user->accountLoginName;
         $_accessLog->account_id = $_user->getId();
     }
 }
コード例 #11
0
 /**
  * adds "start_date", "end_date" to contract and removes "status", "cleared", "cleared_in"
  */
 protected function _updateContractsFields()
 {
     $adminGroup = Tinebase_Group::getInstance()->getDefaultAdminGroup();
     $groupMembers = Tinebase_Group::getInstance()->getGroupMembers($adminGroup->getId());
     if (count($groupMembers) > 0) {
         $user = Tinebase_User::getInstance()->getUserById($groupMembers[0]);
         Tinebase_Core::set(Tinebase_Core::USER, $user);
         // cleared, cleared_in, status gets deleted, if the update is not called on cli
         $controller = Sales_Controller_Contract::getInstance();
         $table = new Zend_Db_Table(SQL_TABLE_PREFIX . 'sales_contracts', new Zend_Db_Table_Definition(array('id' => array('name' => 'id'), 'status' => array('name' => 'status'), 'cleared' => array('name' => 'cleared'), 'cleared_in' => array('name' => 'cleared_in'), 'description' => array('name' => 'description'), 'last_modified_time' => array('name' => 'last_modified_time'))));
         $count = 50;
         $offset = 0;
         $more = true;
         $updateDescription = $statusConfig = $clearedConfig = $setEndDate = array();
         $appId = Tinebase_Application::getInstance()->getApplicationByName('Tinebase')->getId();
         $pref = Tinebase_Core::getPreference('Tinebase');
         Tinebase_Core::setupUserLocale($pref->locale);
         $t = Tinebase_Translation::getTranslation('Sales', Tinebase_Core::getLocale());
         $config = Sales_Config::getInstance()->get('contractStatus');
         foreach ($config['records'] as $cfg) {
             $statusConfig[$cfg['id']] = $cfg['value'];
         }
         $config = Sales_Config::getInstance()->get('contractCleared');
         foreach ($config['records'] as $cfg) {
             $clearedConfig[$cfg['id']] = $cfg['value'];
         }
         while ($more) {
             $results = $table->fetchAll(NULL, NULL, $count, $offset)->toArray();
             foreach ($results as $row) {
                 if ($row['status'] == 'CLOSED') {
                     $setEndDate[$row['id']] = $row['last_modified_time'];
                 }
                 $desc = $row['description'];
                 $desc .= PHP_EOL . '---' . PHP_EOL . PHP_EOL;
                 $contents = FALSE;
                 if (!empty($row['status'])) {
                     $desc .= $t->_('Status') . ': ';
                     $desc .= isset($statusConfig[$row['status']]) ? $t->_($statusConfig[$row['status']]) : $row['status'];
                     $desc .= PHP_EOL;
                     $contents = TRUE;
                 }
                 if (!empty($row['cleared'])) {
                     $desc .= $t->_('Cleared') . ': ';
                     $desc .= isset($clearedConfig[$row['cleared']]) ? $t->_($clearedConfig[$row['cleared']]) : $row['cleared'];
                     $desc .= PHP_EOL;
                     $contents = TRUE;
                 }
                 if (!empty($row['cleared_in'])) {
                     $desc .= $t->_('Cleared In') . ': ';
                     $desc .= $row['cleared_in'];
                     $desc .= PHP_EOL;
                     $contents = TRUE;
                 }
                 if ($contents) {
                     $updateDescription[$row['id']] = $desc . PHP_EOL;
                 }
             }
             if (count($updateDescription) > 50) {
                 foreach ($controller->getMultiple(array_keys($updateDescription)) as $contr) {
                     $contr->description = $updateDescription[$contr->getId()];
                     $controller->update($contr, FALSE);
                 }
                 $updateDescription = array();
             }
             if (count($results) < $count) {
                 $more = FALSE;
             } else {
                 $offset = $offset + $count;
             }
         }
         try {
             foreach ($controller->getMultiple(array_keys($updateDescription)) as $contr) {
                 $contr->description = $updateDescription[$contr->getId()];
                 $controller->update($contr, FALSE);
             }
         } catch (Tinebase_Exception_AccessDenied $tead) {
             // could not update contracts ...
             Tinebase_Exception::log($tead);
         }
     }
     // remove deprecated sales contract fields
     foreach (array('status', 'cleared_in', 'cleared') as $colToDrop) {
         try {
             $this->_backend->dropCol('sales_contracts', $colToDrop);
         } catch (Zend_Db_Statement_Exception $zdse) {
             Tinebase_Exception::log($zdse);
         }
     }
     // add new sales contract fields
     $fields = array('<field>
         <name>start_date</name>
         <type>datetime</type>
     </field>', '
     <field>
         <name>end_date</name>
         <type>datetime</type>
     </field>');
     foreach ($fields as $field) {
         try {
             $declaration = new Setup_Backend_Schema_Field_Xml($field);
             $this->_backend->addCol('sales_contracts', $declaration);
         } catch (Zend_Db_Statement_Exception $zdse) {
             Tinebase_Exception::log($zdse);
         }
     }
     $table = new Zend_Db_Table(SQL_TABLE_PREFIX . 'sales_contracts', new Zend_Db_Table_Definition(array('id' => array('name' => 'id'), 'last_modified_time' => array('name' => 'last_modified_time'), 'end_date' => array('name' => 'end_date'), 'start_date' => array('name' => 'start_date'))));
     $db = $table->getAdapter();
     $values = array_keys($setEndDate);
     if (!empty($values)) {
         $sql = 'UPDATE ' . $db->quoteIdentifier(SQL_TABLE_PREFIX . 'sales_contracts') . ' SET ' . $db->quoteIdentifier('start_date') . ' = ' . $db->quoteIdentifier('last_modified_time') . ', ' . $db->quoteIdentifier('end_date') . ' = ' . $db->quoteIdentifier('last_modified_time') . ' WHERE ' . $db->quoteIdentifier('id') . $db->quoteInto(' IN (?)', $values);
         $db->query($sql);
     }
     if ($this->getTableVersion('sales_contracts') == 5) {
         $this->setTableVersion('sales_contracts', 6);
     } else {
         $this->setTableVersion('sales_contracts', 7);
     }
 }
コード例 #12
0
 protected function _updateContractsWithUser($user)
 {
     Tinebase_Core::set(Tinebase_Core::USER, $user);
     // cleared, cleared_in, status gets deleted, if the update is not called on cli
     $controller = Sales_Controller_Contract::getInstance();
     $table = new Zend_Db_Table(SQL_TABLE_PREFIX . 'sales_contracts', new Zend_Db_Table_Definition(array('id' => array('name' => 'id'), 'status' => array('name' => 'status'), 'cleared' => array('name' => 'cleared'), 'cleared_in' => array('name' => 'cleared_in'), 'description' => array('name' => 'description'), 'last_modified_time' => array('name' => 'last_modified_time'))));
     $count = 50;
     $offset = 0;
     $more = true;
     $updateDescription = $statusConfig = $clearedConfig = $setEndDate = array();
     $pref = Tinebase_Core::getPreference('Tinebase');
     Tinebase_Core::setupUserLocale($pref->locale);
     $t = Tinebase_Translation::getTranslation('Sales', Tinebase_Core::getLocale());
     $config = Sales_Config::getInstance()->get('contractStatus');
     foreach ($config['records'] as $cfg) {
         $statusConfig[$cfg['id']] = $cfg['value'];
     }
     $config = Sales_Config::getInstance()->get('contractCleared');
     foreach ($config['records'] as $cfg) {
         $clearedConfig[$cfg['id']] = $cfg['value'];
     }
     while ($more) {
         $results = $table->fetchAll(NULL, NULL, $count, $offset)->toArray();
         foreach ($results as $row) {
             if ($row['status'] == 'CLOSED') {
                 $setEndDate[$row['id']] = $row['last_modified_time'];
             }
             $desc = $row['description'];
             $desc .= PHP_EOL . '---' . PHP_EOL . PHP_EOL;
             $contents = FALSE;
             if (!empty($row['status'])) {
                 $desc .= $t->_('Status') . ': ';
                 $desc .= isset($statusConfig[$row['status']]) ? $t->_($statusConfig[$row['status']]) : $row['status'];
                 $desc .= PHP_EOL;
                 $contents = TRUE;
             }
             if (!empty($row['cleared'])) {
                 $desc .= $t->_('Cleared') . ': ';
                 $desc .= isset($clearedConfig[$row['cleared']]) ? $t->_($clearedConfig[$row['cleared']]) : $row['cleared'];
                 $desc .= PHP_EOL;
                 $contents = TRUE;
             }
             if (!empty($row['cleared_in'])) {
                 $desc .= $t->_('Cleared In') . ': ';
                 $desc .= $row['cleared_in'];
                 $desc .= PHP_EOL;
                 $contents = TRUE;
             }
             if ($contents) {
                 $updateDescription[$row['id']] = $desc . PHP_EOL;
             }
         }
         if (count($updateDescription) > 50) {
             foreach ($controller->getMultiple(array_keys($updateDescription)) as $contr) {
                 $contr->description = $updateDescription[$contr->getId()];
                 $controller->update($contr, FALSE);
             }
             $updateDescription = array();
         }
         if (count($results) < $count) {
             $more = FALSE;
         } else {
             $offset = $offset + $count;
         }
     }
     try {
         foreach ($controller->getMultiple(array_keys($updateDescription)) as $contr) {
             $contr->description = $updateDescription[$contr->getId()];
             $controller->update($contr, FALSE);
         }
     } catch (Tinebase_Exception_AccessDenied $tead) {
         // could not update contracts ...
         Tinebase_Exception::log($tead);
     }
 }