[prev in list] [next in list] [prev in thread] [next in thread] 

List:       squirrelmail-cvs
Subject:    [SM-CVS] CVS: squirrelmail/functions imap_general.php,1.190,1.191
From:       Marc Groot Koerkamp <stekkel () users ! sourceforge ! net>
Date:       2004-05-26 0:36:09
Message-ID: E1BSmOv-00005f-Ol () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]

Update of /cvsroot/squirrelmail/squirrelmail/functions
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32744/functions

Modified Files:
	imap_general.php 
Log Message:
removed parseAdress routines and made it point to rfc822address.php



Index: imap_general.php
===================================================================
RCS file: /cvsroot/squirrelmail/squirrelmail/functions/imap_general.php,v
retrieving revision 1.190
retrieving revision 1.191
diff -u -w -r1.190 -r1.191
--- imap_general.php	20 May 2004 09:46:07 -0000	1.190
+++ imap_general.php	26 May 2004 00:36:06 -0000	1.191
@@ -536,26 +536,8 @@
 
     $res = sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors, 
               $response, $message, $query,$filter,$outputstream,$no_return); 
-    /* sqimap_read_data should be called for one response
-       but since it just calls sqimap_retrieve_imap_response which 
-       handles multiple responses we need to check for that
-       and merge the $res array IF they are seperated and 
-       IF it was a FETCH response. */
-  
-//    if (isset($res[1]) && is_array($res[1]) && isset($res[1][0]) 
-//        && preg_match('/^\* \d+ FETCH/', $res[1][0])) {
-//        $result = array();
-//        foreach($res as $index=>$value) {
-//            $result = array_merge($result, $res["$index"]);
-//        }
-//    }
-    if (isset($result)) {
-        return $result[$tag];
-    }
-    else {
         return $res;
     }
-}
 
 /**
  * Connects to the IMAP server and returns a resource identifier for use with
@@ -853,9 +835,10 @@
 	return '"' . $what . '"';	/* 4.3 quoted string form */
 }
 
-
 /**
  * Gets the number of messages in the current mailbox.
+ *
+ * OBSOLETE use sqimap_status_messages instead.
  */
 function sqimap_get_num_messages ($imap_stream, $mailbox) {
     $read_ary = sqimap_run_command ($imap_stream, 'EXAMINE ' . \
sqimap_encode_mailbox_name($mailbox), false, $result, $message); @@ -866,176 +849,35 \
@@  }
     return false; //"BUG! Couldn't get number of messages in $mailbox!";
 }
+include_once(SM_PATH . 'functions/rfc822address.php');
 
+/**
+ * OBSOLETE FUNCTION should be removed after mailbox_display,
+ * printMessage function is adapted
+ */
 function parseAddress($address, $max=0) {
-    $aTokens = array();
-    $aAddress = array();
-    $iCnt = strlen($address);
-    $aSpecials = array('(' ,'<' ,',' ,';' ,':');
-    $aReplace =  array(' (',' <',' ,',' ;',' :');
-    $address = str_replace($aSpecials,$aReplace,$address);
-    $i = $iAddrFound = $bGroup = 0;
-    while ($i < $iCnt) {
-        $cChar = $address{$i};
-        switch($cChar)
-        {
-        case '<':
-            $iEnd = strpos($address,'>',$i+1);
-            if (!$iEnd) {
-               $sToken = substr($address,$i);
-               $i = $iCnt;
-            } else {
-               $sToken = substr($address,$i,$iEnd - $i +1);
-               $i = $iEnd;
-            }
-            $sToken = str_replace($aReplace, $aSpecials,$sToken);
-            $aTokens[] = $sToken;
-            break;
-        case '"':
-            $iEnd = strpos($address,$cChar,$i+1);
-            if ($iEnd) {
-               // skip escaped quotes
-               $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};
-                   } else {
-                      $prev_char = false;
-                   }
-               }
-            }
-            if (!$iEnd) {
-                $sToken = substr($address,$i);
-                $i = $iCnt;
-            } else {
-                // also remove the surrounding quotes
-                $sToken = substr($address,$i+1,$iEnd - $i -1);
-                $i = $iEnd;
-            }
-            $sToken = str_replace($aReplace, $aSpecials,$sToken);
-            if ($sToken) $aTokens[] = $sToken;
-            break;
-        case '(':
-            $iEnd = strpos($address,')',$i);
-            if (!$iEnd) {
-                $sToken = substr($address,$i);
-                $i = $iCnt;
-            } else {
-                $sToken = substr($address,$i,$iEnd - $i + 1);
-                $i = $iEnd;
-            }
-            $sToken = str_replace($aReplace, $aSpecials,$sToken);
-            $aTokens[] = $sToken;
-            break;
-        case ',':
-            ++$iAddrFound;
-        case ';':
-            if (!$bGroup) {
-               ++$iAddrFound;
-            } else {
-               $bGroup = false;
-            }
-            if ($max && $max == $iAddrFound) {
-               break 2;
-            } else {
-               $aTokens[] = $cChar;
-               break;
-            }
-        case ':':
-           $bGroup = true;
-        case ' ':
-            $aTokens[] = $cChar;
-            break;
-        default:
-            $iEnd = strpos($address,' ',$i+1);
-            if ($iEnd) {
-                $sToken = trim(substr($address,$i,$iEnd - $i));
-                $i = $iEnd-1;
-            } else {
-                $sToken = trim(substr($address,$i));
-                $i = $iCnt;
-            }
-            if ($sToken) $aTokens[] = $sToken;
-        }
-        ++$i;
-    }
-    $sPersonal = $sEmail = $sComment = $sGroup = '';
-    $aStack = $aComment = array();
-    foreach ($aTokens as $sToken) {
-        if ($max && $max == count($aAddress)) {
-            return $aAddress;
-        }
-        $cChar = $sToken{0};
-        switch ($cChar)
-        {
-          case '=':
-          case '"':
-          case ' ':
-            $aStack[] = $sToken; 
-            break;
-          case '(':
-            $aComment[] = substr($sToken,1,-1);
-            break;
-          case ';':
-            if ($sGroup) {
-                $sEmail = trim(implode(' ',$aStack));
-                $aAddress[] = array($sGroup,$sEmail);
-                $aStack = $aComment = array();
-                $sGroup = '';
-                break;
-            }
-          case ',':
-            if (!$sEmail) {
-                while (count($aStack) && !$sEmail) {
-                    $sEmail = trim(array_pop($aStack));
-                }
-            }
-            if (count($aStack)) {
-                $sPersonal = trim(implode('',$aStack));
-            } else { 
-                $sPersonal = '';
-            }
-            if (!$sPersonal && count($aComment)) {
-                $sComment = implode(' ',$aComment);
-                $sPersonal .= $sComment;
-            }
-            $aAddress[] = array($sEmail,$sPersonal);
-            $sPersonal = $sComment = $sEmail = '';
-            $aStack = $aComment = array();
-            break;
-          case ':': 
-            $sGroup = implode(' ',$aStack); break;
-            $aStack = array();
-            break;
-          case '<':
-            $sEmail = trim(substr($sToken,1,-1));
-            break;
-          case '>':
-            /* skip */
-            break; 
-          default: $aStack[] = $sToken; break;
-        }
-    }
-    /* now do the action again for the last address */
-    if (!$sEmail) {
-        while (count($aStack) && !$sEmail) {
-            $sEmail = trim(array_pop($aStack));
-        }
-    }
-    if (count($aStack)) {
-        $sPersonal = trim(implode('',$aStack));
-    } else {
-        $sPersonal = '';
-    }
-    if (!$sPersonal && count($aComment)) {
-        $sComment = implode(' ',$aComment);
-        $sPersonal .= $sComment;
-    }
-    $aAddress[] = array($sEmail,$sPersonal);
+    $aAddress = parseRFC822Address($address,array('limit'=> $max));
+    /*
+     * Because the expected format of the array element is changed we adapt it now.
+     * This also implies that this function is obsolete and should be removed after \
the +     * rest of the source is adapted. See Rfc822Address.php for the new \
function. +     */
+     array_walk($aAddress, '_adaptAddress');
     return $aAddress;
 } 
 
+/**
+ * OBSOLETE FUNCTION should be removed after mailbox_display,
+ * printMessage function is adapted
+ */
+function _adaptAddress(&$aAddr,$k) {
+   $sPersonal = (isset($aAddr[SQM_ADDR_PERSONAL]) && $aAddr[SQM_ADDR_PERSONAL]) ?
+       $aAddr[SQM_ADDR_PERSONAL] : '';
+   $sEmail = ($aAddr[SQM_ADDR_HOST]) ?
+       $aAddr[SQM_ADDR_HOST] . '@'.$aAddr[SQM_ADDR_HOST] :
+       $aAddr[SQM_ADDR_HOST];
+   $aAddr = array($sEmail,$sPersonal);
+}
 
 /**
  * Returns the number of unseen messages in this folder.



-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. 
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
--
squirrelmail-cvs mailing list
List Address: squirrelmail-cvs@lists.sourceforge.net
List Info: https://lists.sourceforge.net/lists/listinfo/squirrelmail-cvs
http://squirrelmail.org/cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic