/** * check sieve backend capabilities * * @param Felamimail_Model_Sieve_Vacation $_vacation */ protected function _checkCapabilities(Felamimail_Model_Sieve_Vacation $_vacation) { $capabilities = $this->_backend->capability(); if (!in_array('mime', $capabilities['SIEVE'])) { unset($_vacation->mime); $_vacation->reason = Felamimail_Model_Message::convertHTMLToPlainTextWithQuotes($_vacation->reason); } if (preg_match('/cyrus/i', $capabilities['IMPLEMENTATION'])) { // cyrus does not support :from unset($_vacation->from); } }
/** * do substitutions in vacation message * * @param Felamimail_Model_Sieve_Vacation $vacation * @param string $message * @return string * * @todo get locale from placeholder (i.e. endDate-_LOCALESTRING_) * @todo get field from placeholder (i.e. representation-_FIELDNAME_) * @todo use html templates? * @todo use ZF templates / phplib tpl files? */ protected function _doMessageSubstitutions(Felamimail_Model_Sieve_Vacation $vacation, $message) { $timezone = Tinebase_Core::getUserTimezone(); $representatives = $vacation->contact_ids ? Addressbook_Controller_Contact::getInstance()->getMultiple($vacation->contact_ids) : array(); if ($vacation->contact_ids && count($representatives) > 0) { // sort representatives $representativesArray = array(); foreach ($vacation->contact_ids as $id) { $representativesArray[] = $representatives->getById($id); } } try { $ownContact = Addressbook_Controller_Contact::getInstance()->getContactByUserId(Tinebase_Core::getUser()->getId()); } catch (Exception $e) { if (Tinebase_Core::isLogLevel(Zend_Log::WARN)) { Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' ' . $e); } $ownContact = NULL; } $search = array('{startDate-en_US}', '{endDate-en_US}', '{startDate-de_DE}', '{endDate-de_DE}', '{representation-n_fn-1}', '{representation-n_fn-2}', '{representation-email-1}', '{representation-email-2}', '{representation-tel_work-1}', '{representation-tel_work-2}', '{owncontact-n_fn}', '{signature}'); $replace = array(Tinebase_Translation::dateToStringInTzAndLocaleFormat($vacation->start_date, $timezone, new Zend_Locale('en_US'), 'date'), Tinebase_Translation::dateToStringInTzAndLocaleFormat($vacation->end_date, $timezone, new Zend_Locale('en_US'), 'date'), Tinebase_Translation::dateToStringInTzAndLocaleFormat($vacation->start_date, $timezone, new Zend_Locale('de_DE'), 'date'), Tinebase_Translation::dateToStringInTzAndLocaleFormat($vacation->end_date, $timezone, new Zend_Locale('de_DE'), 'date'), isset($representativesArray[0]) ? $representativesArray[0]->n_fn : 'unknown person', isset($representativesArray[1]) ? $representativesArray[1]->n_fn : 'unknown person', isset($representativesArray[0]) ? $representativesArray[0]->email : 'unknown email', isset($representativesArray[1]) ? $representativesArray[1]->email : 'unknown email', isset($representativesArray[0]) ? $representativesArray[0]->tel_work : 'unknown phone', isset($representativesArray[1]) ? $representativesArray[1]->tel_work : 'unknown phone', $ownContact ? $ownContact->n_fn : '', $vacation->signature ? Felamimail_Model_Message::convertHTMLToPlainTextWithQuotes(preg_replace("/\\r|\\n/", '', $vacation->signature)) : ''); $result = str_replace($search, $replace, $message); if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . $result); } return $result; }