Stop using curly braces
[squirrelmail.git] / functions / rfc822address.php
index 896b37f79ea116b10e4d88a6aed1c549c778f1c8..69be3e8d4990bc2cc6610ccd457d799d2d4b4c3f 100644 (file)
@@ -1,56 +1,37 @@
 <?php
+
 /**
  * rfc822address.php
  *
- * Copyright (c) 2004 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
  * Contains rfc822 email address function parsing functions.
  *
- *
+ * @copyright 2004-2021 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
  */
 
-/**
- * Undocumented defines
- */
-if (!defined('SQM_ADDR_PERSONAL')) define('SQM_ADDR_PERSONAL', 0);
-if (!defined('SQM_ADDR_ADLL'))     define('SQM_ADDR_ADL',      1);
-if (!defined('SQM_ADDR_MAILBOX'))  define('SQM_ADDR_MAILBOX',  2);
-if (!defined('SQM_ADDR_HOST'))     define('SQM_ADDR_HOST',     3);
 
 /**
  * parseRFC822Address: function for parsing RFC822 email address strings and store
  *               them in an address array
  *
- * @param string $address The email address string to parse
- * @param array  $aProps  associative array with properties
+ * @param string  $address The email address string to parse
+ * @param integer $iLimit stop on $iLimit parsed addresses
  * @public
  * @author Marc Groot Koerkamp
  *
  **/
-
-function parseRFC822Address($sAddress,$aProps) {
-//    $aPropsDefault = array (
-//                            'domain' => '',         //
-//                            'limit'  => 0,          // limits returned addresses
-//                            'abooklookup' => false); // callback function for addressbook lookup
-//
-//    $aProps = is_array($aProps) ? array_merge($aPropsDefault,$aProps) : $aPropsDefault;
-
-//    $cbLookup = $aProps['abooklookup'];
-//    $sDomain  = $aProps['domain'];
-    $iLimit   = $aProps['limit'];
+function parseRFC822Address($sAddress,$iLimit = 0) {
 
     $aTokens = _getAddressTokens($sAddress);
-    $sEmail = $sGroup = '';
+    $sPersonal = $sEmail = $sComment = $sGroup = '';
     $aStack = $aComment = $aAddress = array();
     foreach ($aTokens as $sToken) {
         if ($iLimit && $iLimit == count($aAddress)) {
             return $aAddress;
         }
-        $cChar = $sToken{0};
+        $cChar = $sToken[0];
         switch ($cChar)
         {
         case '=':
@@ -64,8 +45,8 @@ function parseRFC822Address($sAddress,$aProps) {
         case ';':
             if ($sGroup) {
                 $aAddress[] = _createAddressElement($aStack,$aComment,$sEmail);
-                $oAddr = end($aAddress);
-                if(!$oAddr || ((isset($oAddr)) && !$oAddr->mailbox && !$oAddr->personal)) {
+                $aAddr = end($aAddress);
+                if(!$aAddr || ((isset($aAddr)) && !$aAddr[SQM_ADDR_MAILBOX] && !$aAddr[SQM_ADDR_PERSONAL])) {
                     $sEmail = $sGroup . ':;';
                 }
                 $aAddress[] = _createAddressElement($aStack,$aComment,$sEmail);
@@ -95,6 +76,7 @@ function parseRFC822Address($sAddress,$aProps) {
     return $aAddress;
 }
 
+
 /**
  * Do the address array to string translation
  *
@@ -108,7 +90,7 @@ function parseRFC822Address($sAddress,$aProps) {
  **/
 function getAddressString($aAddressList,$aProps) {
     $aPropsDefault = array (
-                            'separator' => ',',     // address separator
+                            'separator' => ', ',     // address separator
                             'limit'  => 0,          // limits returned addresses
                             'personal' => true,     // show persnal part
                             'email'    => true,     // show email part
@@ -163,7 +145,7 @@ function getAddressString($aAddressList,$aProps) {
             $aNewAddressList[] = $s;
         }
     }
-    return explode($aProps['seperator'],$aNewAddressList);
+    return implode($aProps['separator'],$aNewAddressList);
 }
 
 
@@ -180,7 +162,7 @@ function getAddressString($aAddressList,$aProps) {
  * @return string
  * @public
  * @see parseRFC822Address
- * $see Rfc822Header
+ * @see Rfc822Header
  * @author Marc Groot Koerkamp
  *
  **/
@@ -308,7 +290,7 @@ function _getAddressTokens($address) {
     $iCnt = strlen($address);
     $i = 0;
     while ($i < $iCnt) {
-        $cChar = $address{$i};
+        $cChar = $address[$i];
         switch($cChar)
         {
         case '<':
@@ -327,11 +309,11 @@ function _getAddressTokens($address) {
             $iEnd = strpos($address,$cChar,$i+1);
             if ($iEnd) {
                 // skip escaped quotes
-                $prev_char = $address{$iEnd-1};
+                $prev_char = $address[$iEnd-1];
                 while ($prev_char === '\\' && substr($address,$iEnd-2,2) !== '\\\\') {
                     $iEnd = strpos($address,$cChar,$iEnd+1);
                     if ($iEnd) {
-                        $prev_char = $address{$iEnd-1};
+                        $prev_char = $address[$iEnd-1];
                     } else {
                         $prev_char = false;
                     }
@@ -358,7 +340,7 @@ function _getAddressTokens($address) {
                 $iDepth = 1;
                 $iComment = $i;
                 while (($iDepth > 0) && (++$iComment < $iCnt)) {
-                    $cCharComment = $address{$iComment};
+                    $cCharComment = $address[$iComment];
                     switch($cCharComment) {
                         case '\\':
                             ++$iComment;
@@ -384,7 +366,7 @@ function _getAddressTokens($address) {
             // check the next token in case comments appear in the middle of email addresses
             $prevToken = end($aTokens);
             if (!in_array($prevToken,$aSpecials,true)) {
-                if ($i+1<strlen($address) && !in_array($address{$i+1},$aSpecials,true)) {
+                if ($i+1<strlen($address) && !in_array($address[$i+1],$aSpecials,true)) {
                     $iEnd = strpos($address,' ',$i+1);
                     if ($iEnd) {
                         $sNextToken = trim(substr($address,$i+1,$iEnd - $i -1));
@@ -424,4 +406,3 @@ function _getAddressTokens($address) {
     }
     return $aTokens;
 }
-?>
\ No newline at end of file