Beispiel #1
0
 /**
  * parse headers and set 'date', 'from', 'to', 'cc', 'bcc', 'subject', 'sender' fields
  * 
  * @param array $_headers
  * @return void
  */
 public function parseHeaders(array $_headers)
 {
     // remove duplicate headers (which can't be set twice in real life)
     foreach (array('date', 'from', 'to', 'cc', 'bcc', 'subject', 'sender') as $field) {
         if (isset($_headers[$field]) && is_array($_headers[$field])) {
             $_headers[$field] = $_headers[$field][0];
         }
     }
     $this->importance = isset($_headers['importance']) && $_headers['importance'] === 'high' ? true : false;
     $this->subject = isset($_headers['subject']) ? Felamimail_Message::convertText($_headers['subject']) : null;
     if (array_key_exists('date', $_headers)) {
         $this->sent = Felamimail_Message::convertDate($_headers['date']);
     } elseif (array_key_exists('resent-date', $_headers)) {
         $this->sent = Felamimail_Message::convertDate($_headers['resent-date']);
     }
     $punycodeConverter = Felamimail_Controller_Message::getInstance()->getPunycodeConverter();
     foreach (array('to', 'cc', 'bcc', 'from', 'sender') as $field) {
         if (isset($_headers[$field])) {
             $value = Felamimail_Message::convertAddresses($_headers[$field], $punycodeConverter);
             switch ($field) {
                 case 'from':
                     $this->from_email = isset($value[0]) && array_key_exists('email', $value[0]) ? $value[0]['email'] : '';
                     $this->from_name = isset($value[0]) && array_key_exists('name', $value[0]) && !empty($value[0]['name']) ? $value[0]['name'] : $this->from_email;
                     break;
                 case 'sender':
                     $this->sender = isset($value[0]) && array_key_exists('email', $value[0]) ? '<' . $value[0]['email'] . '>' : '';
                     if (isset($value[0]) && array_key_exists('name', $value[0]) && !empty($value[0]['name'])) {
                         $this->sender = '"' . $value[0]['name'] . '" ' . $this->sender;
                     }
                     break;
                 default:
                     $this->{$field} = $value;
             }
         }
     }
 }
 /**
  * parse headers and set 'date', 'from', 'to', 'cc', 'bcc', 'subject', 'sender' fields
  * 
  * @param array $_headers
  * @return void
  */
 public function parseHeaders(array $_headers)
 {
     // remove duplicate headers (which can't be set twice in real life)
     foreach (array('date', 'from', 'subject', 'sender') as $field) {
         if (isset($_headers[$field]) && is_array($_headers[$field])) {
             $_headers[$field] = $_headers[$field][0];
         }
     }
     // @see 0008644: error when sending mail with note (wrong charset)
     $this->subject = isset($_headers['subject']) ? Tinebase_Core::filterInputForDatabase(Felamimail_Message::convertText($_headers['subject'])) : null;
     if (isset($_headers['date']) || array_key_exists('date', $_headers)) {
         $this->sent = Felamimail_Message::convertDate($_headers['date']);
     } elseif (isset($_headers['resent-date']) || array_key_exists('resent-date', $_headers)) {
         $this->sent = Felamimail_Message::convertDate($_headers['resent-date']);
     }
     $punycodeConverter = Felamimail_Controller_Message::getInstance()->getPunycodeConverter();
     foreach (array('to', 'cc', 'bcc', 'from', 'sender') as $field) {
         if (isset($_headers[$field])) {
             if (is_array($_headers[$field])) {
                 $value = array();
                 foreach ($_headers[$field] as $headerValue) {
                     $value = array_merge($value, Felamimail_Message::convertAddresses($headerValue, $punycodeConverter));
                 }
                 $this->{$field} = $value;
             } else {
                 $value = Felamimail_Message::convertAddresses($_headers[$field], $punycodeConverter);
                 switch ($field) {
                     case 'from':
                         $this->from_email = isset($value[0]) && (isset($value[0]['email']) || array_key_exists('email', $value[0])) ? $value[0]['email'] : '';
                         $this->from_name = isset($value[0]) && (isset($value[0]['name']) || array_key_exists('name', $value[0])) && !empty($value[0]['name']) ? $value[0]['name'] : $this->from_email;
                         break;
                     case 'sender':
                         $this->sender = isset($value[0]) && (isset($value[0]['email']) || array_key_exists('email', $value[0])) ? '<' . $value[0]['email'] . '>' : '';
                         if (isset($value[0]) && (isset($value[0]['name']) || array_key_exists('name', $value[0])) && !empty($value[0]['name'])) {
                             $this->sender = '"' . $value[0]['name'] . '" ' . $this->sender;
                         }
                         break;
                     default:
                         $this->{$field} = $value;
                 }
             }
         }
     }
 }
 protected function compareStrings($str1, $str2)
 {
     $str1 = Felamimail_Message::convertText($str1);
     $str2 = Felamimail_Message::convertText($str2);
     return $this->_pagination->dir == 'ASC' ? strcasecmp($str1, $str2) : strcasecmp($str2, $str1);
 }