/** * the singleton pattern * * @return Felamimail_Controller_Sieve */ public static function getInstance() { if (self::$_instance === NULL) { self::$_instance = new Felamimail_Controller_Sieve(); } return self::$_instance; }
/** * use another name for test sieve script */ protected function _setTestScriptname() { $this->_oldActiveSieveScriptName = Felamimail_Controller_Sieve::getInstance()->getActiveScriptName($this->_account->getId()); $this->_testSieveScriptName = 'Felamimail_Unittest'; Felamimail_Controller_Sieve::getInstance()->setScriptName($this->_testSieveScriptName); }
/** * get vacation message defined by template / do substitutions for dates and representative * * @param array $vacationData * @return array */ public function getVacationMessage($vacationData) { $record = new Felamimail_Model_Sieve_Vacation(array(), TRUE); $record->setFromJsonInUsersTimezone($vacationData); $message = Felamimail_Controller_Sieve::getInstance()->getVacationMessage($record); $htmlMessage = Tinebase_Mail::convertFromTextToHTML($message, 'felamimail-body-blockquote'); return array('message' => $htmlMessage); }
/** * set sieve rules for account * * @param array $accountId * @param array $rulesData * @return array */ public function saveRules($accountId, $rulesData) { $records = new Tinebase_Record_RecordSet('Felamimail_Model_Sieve_Rule', $rulesData); $records = Felamimail_Controller_Sieve::getInstance()->setRules($accountId, $records); return $this->_multipleRecordsToJson($records); }
/** * sieve test helper * * @param array $_sieveData */ protected function _sieveTestHelper($_sieveData, $_isMime = FALSE) { $this->_oldActiveSieveScriptName = Felamimail_Controller_Sieve::getInstance()->getActiveScriptName($this->_account->getId()); // use another name for test script $this->_testSieveScriptName = 'Felamimail_Unittest'; Felamimail_Controller_Sieve::getInstance()->setScriptName($this->_testSieveScriptName); // check which save fn to use if (array_key_exists('reason', $_sieveData)) { $resultSet = $this->_json->saveVacation($_sieveData); $this->assertEquals($this->_account->email, $resultSet['addresses'][0]); $_sieveBackend = Felamimail_Backend_SieveFactory::factory($this->_account->getId()); if (preg_match('/dbmail/i', $_sieveBackend->getImplementation())) { $translate = Tinebase_Translation::getTranslation('Felamimail'); $this->assertEquals(sprintf($translate->_('Out of Office reply from %1$s'), Tinebase_Core::getUser()->accountFullName), $resultSet['subject']); } else { $this->assertEquals($_sieveData['subject'], $resultSet['subject']); } if ($_isMime) { $this->assertEquals(html_entity_decode('unittest vacation message', ENT_NOQUOTES, 'UTF-8'), $resultSet['reason']); } else { $this->assertEquals($_sieveData['reason'], $resultSet['reason']); } } else { if (array_key_exists('action_type', $_sieveData[0])) { $resultSet = $this->_json->saveRules($this->_account->getId(), $_sieveData); $this->assertEquals($_sieveData, $resultSet); } } }