[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