$sComment = trim(implode(' ',$aComment));
$sPersonal .= $sComment;
}
- $oAddr =& new AddressStructure();
+ $oAddr = new AddressStructure();
if ($sPersonal && substr($sPersonal,0,2) == '=?') {
$oAddr->personal = encodeHeader($sPersonal);
} else {
if ($sGroup) {
$aAddress[] = $this->createAddressObject($aStack,$aComment,$sEmail,$sGroup);
$oAddr = end($aAddress);
- if(!$oAddr || ((isset($oAddr)) && !$oAddr->mailbox && !$oAddr->personal)) {
+ if(!$oAddr || ((isset($oAddr)) && !strlen($oAddr->mailbox) && !$oAddr->personal)) {
$sEmail = $sGroup . ':;';
}
$aAddress[] = $this->createAddressObject($aStack,$aComment,$sEmail,$sGroup);
$aAddrBookAddress = $this->parseAddress($aAddr['email'],true);
} else {
$iPosAt = strpos($aAddr['email'], '@');
- $oAddr->mailbox = substr($aAddr['email'], 0, $iPosAt);
- $oAddr->host = substr($aAddr['email'], $iPosAt+1);
+ if ($iPosAt === FALSE) {
+ $oAddr->mailbox = $aAddr['email'];
+ $oAddr->host = FALSE;
+ } else {
+ $oAddr->mailbox = substr($aAddr['email'], 0, $iPosAt);
+ $oAddr->host = substr($aAddr['email'], $iPosAt+1);
+ }
if (isset($aAddr['name'])) {
$oAddr->personal = $aAddr['name'];
} else {
}
}
}
- if (!$grouplookup && !$oAddr->mailbox) {
+ if (!$grouplookup && !strlen($oAddr->mailbox)) {
$oAddr->mailbox = trim($sEmail);
- if ($sHost && $oAddr->mailbox) {
+ if ($sHost && strlen($oAddr->mailbox)) {
$oAddr->host = $sHost;
}
} else if (!$grouplookup && !$oAddr->host) {
- if ($sHost && $oAddr->mailbox) {
+ if ($sHost && strlen($oAddr->mailbox)) {
$oAddr->host = $sHost;
}
}
}
- if (!$aAddrBookAddress && $oAddr->mailbox) {
+ if (!$aAddrBookAddress && strlen($oAddr->mailbox)) {
$aProcessedAddress[] = $oAddr;
} else {
$aProcessedAddress = array_merge($aProcessedAddress,$aAddrBookAddress);
if ($ar) {
return $aProcessedAddress;
} else {
- return $aProcessedAddress[0];
+ if (isset($aProcessedAddress[0]))
+ return $aProcessedAddress[0];
+ else
+ return '';
}
}
* X-MS-Mail-Priority is not parsed because it always coincides
* with one of the other headers.
*
- * NOTE: this is actually a duplicate from the function in
- * functions/imap_messages. I'm not sure if it's ok here to call
+ * NOTE: this is actually a duplicate from the code in
+ * functions/imap_messages:parseFetch().
+ * I'm not sure if it's ok here to call
* that function?
* @param string $sValue literal priority name
* @return integer
*/
function parsePriority($sValue) {
// don't use function call inside array_shift.
- $aValue = split('/\w/',trim($sValue));
+ $aValue = preg_split('/\s/',trim($sValue));
$value = strtolower(array_shift($aValue));
if ( is_numeric($value) ) {
* @param boolean $encoded (since 1.4.0) return encoded or plain text addresses
* @return string
*/
- function getAddr_s($arr, $separator = ',',$encoded=false) {
+ function getAddr_s($arr, $separator = ', ', $encoded=false) {
$s = '';
if (is_array($arr)) {
}
/**
+//FIXME: This needs some documentation (inside the function too)! Don't code w/out comments!
* @param mixed $address array or string
* @param boolean $recurs
* @return mixed array, boolean
}
} else {
if (!is_array($this->cc)) $this->cc = array();
+ if (!is_array($this->to)) $this->to = array();
$srch_addr = $this->parseAddress($address);
$results = array();
foreach ($this->to as $to) {
- if ($to->host == $srch_addr->host) {
- if ($to->mailbox == $srch_addr->mailbox) {
+ if (strtolower($to->host) == strtolower($srch_addr->host)) {
+ if (strtolower($to->mailbox) == strtolower($srch_addr->mailbox)) {
$results[] = $srch_addr;
- if ($to->personal == $srch_addr->personal) {
+ if (strtolower($to->personal) == strtolower($srch_addr->personal)) {
if ($recurs) {
return array($results, true);
} else {
}
}
foreach ($this->cc as $cc) {
- if ($cc->host == $srch_addr->host) {
- if ($cc->mailbox == $srch_addr->mailbox) {
+ if (strtolower($cc->host) == strtolower($srch_addr->host)) {
+ if (strtolower($cc->mailbox) == strtolower($srch_addr->mailbox)) {
$results[] = $srch_addr;
- if ($cc->personal == $srch_addr->personal) {
+ if (strtolower($cc->personal) == strtolower($srch_addr->personal)) {
if ($recurs) {
return array($results, true);
} else {