Minor cleanups

This commit is contained in:
Fredrik Jervfors 2004-08-24 22:00:05 +00:00
parent ea21e88ad2
commit b9788abcfa

View file

@ -16,13 +16,13 @@
/** /**
* copy a set of messages ($id) to another mailbox ($mailbox) * Copy a set of messages ($id) to another mailbox ($mailbox)
* @param int $imap_stream The resource ID for the IMAP socket * @param int $imap_stream The resource ID for the IMAP socket
* @param string $id The list of messages to copy * @param string $id The list of messages to copy
* @param string $mailbox The destination to copy to * @param string $mailbox The destination to copy to
* @return void * @return bool
*/ */
function sqimap_msgs_list_copy ($imap_stream, $id, $mailbox) { function sqimap_msgs_list_copy($imap_stream, $id, $mailbox) {
$msgs_id = sqimap_message_list_squisher($id); $msgs_id = sqimap_message_list_squisher($id);
$read = sqimap_run_command ($imap_stream, "COPY $msgs_id " . sqimap_encode_mailbox_name($mailbox), true, $response, $message, TRUE); $read = sqimap_run_command ($imap_stream, "COPY $msgs_id " . sqimap_encode_mailbox_name($mailbox), true, $response, $message, TRUE);
if ($response == 'OK') { if ($response == 'OK') {
@ -32,14 +32,15 @@ function sqimap_msgs_list_copy ($imap_stream, $id, $mailbox) {
} }
} }
/** /**
* move a set of messages ($id) to another mailbox. Deletes the originals. * Move a set of messages ($id) to another mailbox. Deletes the originals.
* @param int $imap_stream The resource ID for the IMAP socket * @param int $imap_stream The resource ID for the IMAP socket
* @param string $id The list of messages to move * @param string $id The list of messages to move
* @param string $mailbox The destination to move to * @param string $mailbox The destination to move to
* @return void * @return void
*/ */
function sqimap_msgs_list_move ($imap_stream, $id, $mailbox) { function sqimap_msgs_list_move($imap_stream, $id, $mailbox) {
$msgs_id = sqimap_message_list_squisher($id); $msgs_id = sqimap_message_list_squisher($id);
if (sqimap_msgs_list_copy ($imap_stream, $id, $mailbox)) { if (sqimap_msgs_list_copy ($imap_stream, $id, $mailbox)) {
return sqimap_toggle_flag($imap_stream, $id, '\\Deleted', true, true); return sqimap_toggle_flag($imap_stream, $id, '\\Deleted', true, true);
@ -57,7 +58,7 @@ function sqimap_msgs_list_move ($imap_stream, $id, $mailbox) {
* @param bool $bypass_trash skip copy to trash * @param bool $bypass_trash skip copy to trash
* @return array $aMessageList array with messages containing the new flags and UID @see parseFetch * @return array $aMessageList array with messages containing the new flags and UID @see parseFetch
*/ */
function sqimap_msgs_list_delete ($imap_stream, $mailbox, $id, $bypass_trash=false) { function sqimap_msgs_list_delete($imap_stream, $mailbox, $id, $bypass_trash=false) {
// FIX ME, remove globals by introducing an associative array with properties // FIX ME, remove globals by introducing an associative array with properties
// as 4th argument as replacement for the bypass_trash var // as 4th argument as replacement for the bypass_trash var
global $move_to_trash, $trash_folder; global $move_to_trash, $trash_folder;
@ -74,7 +75,6 @@ function sqimap_msgs_list_delete ($imap_stream, $mailbox, $id, $bypass_trash=fal
} }
/** /**
* Set a flag on the provided uid list * Set a flag on the provided uid list
* @param resource imap connection * @param resource imap connection
@ -92,6 +92,7 @@ function sqimap_toggle_flag($imap_stream, $id, $flag, $set, $handle_errors) {
return parseFetch($aResponse); return parseFetch($aResponse);
} }
/** /**
* Sort the message list and crunch to be as small as possible * Sort the message list and crunch to be as small as possible
* (overflow could happen, so make it small if possible) * (overflow could happen, so make it small if possible)
@ -120,15 +121,16 @@ function sqimap_message_list_squisher($messages_array) {
return $msgs_str; return $msgs_str;
} }
/** /**
* Retrieves an array with a sorted uid list. Sorting is done on the imap server * Retrieves an array with a sorted uid list. Sorting is done on the imap server
* @link http://www.ietf.org/internet-drafts/draft-ietf-imapext-sort-17.txt * @link http://www.ietf.org/internet-drafts/draft-ietf-imapext-sort-17.txt
* @param resource $imap_stream IMAP socket connection * @param resource $imap_stream IMAP socket connection
* @param string $sSortField Field to sort on * @param string $sSortField Field to sort on
* @param bool $reverse Reverse order search * @param bool $reverse Reverse order search
* @return array $id sorted uid list * @return array $id sorted uid list
*/ */
function sqimap_get_sort_order ($imap_stream, $sSortField, $reverse, $search='ALL') { function sqimap_get_sort_order($imap_stream, $sSortField, $reverse, $search='ALL') {
global $default_charset, global $default_charset,
$sent_folder; $sent_folder;
@ -159,11 +161,11 @@ function sqimap_get_sort_order ($imap_stream, $sSortField, $reverse, $search='AL
/** /**
* Parses a UID list returned on a SORT or SEARCH request * Parses a UID list returned on a SORT or SEARCH request
* @param array $aData imap response * @param array $aData imap response
* @param string $sCommand issued imap command (SEARCH or SORT) * @param string $sCommand issued imap command (SEARCH or SORT)
* @return array $aUid uid list * @return array $aUid uid list
*/ */
function parseUidList($aData,$sCommand) { function parseUidList($aData,$sCommand) {
$aUid = array(); $aUid = array();
if (isset($aData) && count($aData)) { if (isset($aData) && count($aData)) {
@ -185,7 +187,7 @@ function parseUidList($aData,$sCommand) {
* @param array $aUid limit the search to the provided array with uid's default sqimap_get_small_headers uses 1:* * @param array $aUid limit the search to the provided array with uid's default sqimap_get_small_headers uses 1:*
* @return array $aUid sorted uid list * @return array $aUid sorted uid list
*/ */
function get_squirrel_sort ($imap_stream, $sSortField, $reverse = false, $aUid = NULL) { function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid = NULL) {
if ($sSortField != 'RFC822.SIZE' && $sSortField != 'INTERNALDATE') { if ($sSortField != 'RFC822.SIZE' && $sSortField != 'INTERNALDATE') {
$msgs = sqimap_get_small_header_list($imap_stream, $aUid, $msgs = sqimap_get_small_header_list($imap_stream, $aUid,
array($sSortField), array()); array($sSortField), array());
@ -266,6 +268,7 @@ function get_squirrel_sort ($imap_stream, $sSortField, $reverse = false, $aUid =
return $aUid; return $aUid;
} }
/** /**
* Returns an indent array for printMessageinfo() * Returns an indent array for printMessageinfo()
* This represents the amount of indent needed (value), * This represents the amount of indent needed (value),
@ -292,7 +295,7 @@ function get_squirrel_sort ($imap_stream, $sSortField, $reverse = false, $aUid =
* \-4 par = 3, level = 2, flag = 1 + 2 + 4 = 7 (haschildren, isfirst, islast) * \-4 par = 3, level = 2, flag = 1 + 2 + 4 = 7 (haschildren, isfirst, islast)
* \-5 par = 4, level = 3, flag = 0 + 2 + 4 = 6 (hasnochildren, isfirst, islast) * \-5 par = 4, level = 3, flag = 0 + 2 + 4 = 6 (hasnochildren, isfirst, islast)
*/ */
function get_parent_level ($thread_new) { function get_parent_level($thread_new) {
$parent = ''; $parent = '';
$child = ''; $child = '';
$cutoff = 0; $cutoff = 0;
@ -392,7 +395,7 @@ function get_parent_level ($thread_new) {
* message-thread as returned by the IMAP server. * message-thread as returned by the IMAP server.
* @link http://www.ietf.org/internet-drafts/draft-ietf-imapext-sort-13.txt * @link http://www.ietf.org/internet-drafts/draft-ietf-imapext-sort-13.txt
*/ */
function get_thread_sort ($imap_stream, $search='ALL') { function get_thread_sort($imap_stream, $search='ALL') {
global $thread_new, $sort_by_ref, $default_charset, $server_sort_array, $indent_array; global $thread_new, $sort_by_ref, $default_charset, $server_sort_array, $indent_array;
$thread_temp = array (); $thread_temp = array ();
@ -445,10 +448,10 @@ function get_thread_sort ($imap_stream, $search='ALL') {
*/ */
for ($i=0,$iCnt=count($thread_temp);$i<$iCnt;$i++) { for ($i=0,$iCnt=count($thread_temp);$i<$iCnt;$i++) {
if ($thread_temp[$i] != ')' && $thread_temp[$i] != '(') { if ($thread_temp[$i] != ')' && $thread_temp[$i] != '(') {
$thread_new[$k] = $thread_new[$k] . $thread_temp[$i]; $thread_new[$k] = $thread_new[$k] . $thread_temp[$i];
} elseif ($thread_temp[$i] == '(') { } elseif ($thread_temp[$i] == '(') {
$thread_new[$k] .= $thread_temp[$i]; $thread_new[$k] .= $thread_temp[$i];
$counter++; $counter++;
} elseif ($thread_temp[$i] == ')') { } elseif ($thread_temp[$i] == ')') {
if ($counter > 1) { if ($counter > 1) {
$thread_new[$k] .= $thread_temp[$i]; $thread_new[$k] .= $thread_temp[$i];
@ -481,6 +484,7 @@ function elapsedTime($start) {
return $timepassed; return $timepassed;
} }
/** /**
* Parses a string in an imap response. String starts with " or { which means it * Parses a string in an imap response. String starts with " or { which means it
* can handle double quoted strings and literal strings * can handle double quoted strings and literal strings
@ -497,29 +501,29 @@ function parseString($read,&$i) {
while (true) { while (true) {
$iPos = strpos($read,'"',$iPos); $iPos = strpos($read,'"',$iPos);
if (!$iPos) break; if (!$iPos) break;
if ($iPos && $read{$iPos -1} != '\\') { if ($iPos && $read{$iPos -1} != '\\') {
$s = substr($read,$i,($iPos-$i)); $s = substr($read,$i,($iPos-$i));
$i = $iPos; $i = $iPos;
break; break;
} }
$iPos++; $iPos++;
if ($iPos > strlen($read)) { if ($iPos > strlen($read)) {
break; break;
} }
} }
} else if ($char == '{') { } else if ($char == '{') {
$lit_cnt = ''; $lit_cnt = '';
++$i; ++$i;
$iPos = strpos($read,'}',$i); $iPos = strpos($read,'}',$i);
if ($iPos) { if ($iPos) {
$lit_cnt = substr($read, $i, $iPos - $i); $lit_cnt = substr($read, $i, $iPos - $i);
$i += strlen($lit_cnt) + 3; /* skip } + \r + \n */ $i += strlen($lit_cnt) + 3; /* skip } + \r + \n */
/* Now read the literal */ /* Now read the literal */
$s = ($lit_cnt ? substr($read,$i,$lit_cnt): ''); $s = ($lit_cnt ? substr($read,$i,$lit_cnt): '');
$i += $lit_cnt; $i += $lit_cnt;
/* temp bugfix (SM 1.5 will have a working clean version) /* temp bugfix (SM 1.5 will have a working clean version)
too much work to implement that version right now */ too much work to implement that version right now */
--$i; --$i;
} else { /* should never happen */ } else { /* should never happen */
$i += 3; /* } + \r + \n */ $i += 3; /* } + \r + \n */
$s = ''; $s = '';
@ -531,6 +535,7 @@ function parseString($read,&$i) {
return $s; return $s;
} }
/** /**
* Parses a string containing an array from an imap response. String starts with ( and end with ) * Parses a string containing an array from an imap response. String starts with ( and end with )
* *
@ -550,6 +555,8 @@ function parseArray($read,&$i) {
return false; return false;
} }
} }
/** /**
* Retrieves a list with headers, flags, size or internaldate from the imap server * Retrieves a list with headers, flags, size or internaldate from the imap server
* @param resource $imap_stream imap connection * @param resource $imap_stream imap connection
@ -558,7 +565,7 @@ function parseArray($read,&$i) {
* @param array $aFetchItems requested other fetch items like FLAGS, RFC822.SIZE * @param array $aFetchItems requested other fetch items like FLAGS, RFC822.SIZE
* @return array $aMessages associative array with messages. Key is the UID, value is an associative array * @return array $aMessages associative array with messages. Key is the UID, value is an associative array
*/ */
function sqimap_get_small_header_list ($imap_stream, $msg_list, function sqimap_get_small_header_list($imap_stream, $msg_list,
$aHeaderFields = array('Date', 'To', 'Cc', 'From', 'Subject', 'X-Priority', 'Content-Type'), $aHeaderFields = array('Date', 'To', 'Cc', 'From', 'Subject', 'X-Priority', 'Content-Type'),
$aFetchItems = array('FLAGS', 'RFC822.SIZE', 'INTERNALDATE')) { $aFetchItems = array('FLAGS', 'RFC822.SIZE', 'INTERNALDATE')) {
@ -605,6 +612,7 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list,
return $aMessages; return $aMessages;
} }
/** /**
* Parses a fetch response, currently it can hande FLAGS, HEADERS, RFC822.SIZE, INTERNALDATE and UID * Parses a fetch response, currently it can hande FLAGS, HEADERS, RFC822.SIZE, INTERNALDATE and UID
* @param array $aResponse Imap response * @param array $aResponse Imap response
@ -620,8 +628,8 @@ function parseFetch($aResponse,$aMessageList = array()) {
$read = implode('',$r); $read = implode('',$r);
/* /*
* #id<space>FETCH<space>( * #id<space>FETCH<space>(
*/ */
/* extract the message id */ /* extract the message id */
$i_space = strpos($read,' ',2); $i_space = strpos($read,' ',2);
@ -756,6 +764,7 @@ function parseFetch($aResponse,$aMessageList = array()) {
return $aMessageList; return $aMessageList;
} }
/** /**
* Work in process * Work in process
* @private * @private
@ -836,6 +845,7 @@ function sqimap_parse_envelope($read, &$i, &$msg) {
} }
} }
/** /**
* Work in process * Work in process
* @private * @private
@ -873,6 +883,7 @@ function sqimap_parse_address($read, &$i) {
return $adr; return $adr;
} }
/** /**
* Returns a message array with all the information about a message. * Returns a message array with all the information about a message.
* See the documentation folder for more information about this array. * See the documentation folder for more information about this array.
@ -882,11 +893,11 @@ function sqimap_parse_address($read, &$i) {
* @param string $mailbox used for error handling, can be removed because we should return an error code and generate the message elsewhere * @param string $mailbox used for error handling, can be removed because we should return an error code and generate the message elsewhere
* @return Message Message object * @return Message Message object
*/ */
function sqimap_get_message ($imap_stream, $id, $mailbox) { function sqimap_get_message($imap_stream, $id, $mailbox) {
// typecast to int to prohibit 1:* msgs sets // typecast to int to prohibit 1:* msgs sets
$id = (int) $id; $id = (int) $id;
$flags = array(); $flags = array();
$read = sqimap_run_command ($imap_stream, "FETCH $id (FLAGS BODYSTRUCTURE)", true, $response, $message, TRUE); $read = sqimap_run_command($imap_stream, "FETCH $id (FLAGS BODYSTRUCTURE)", true, $response, $message, TRUE);
if ($read) { if ($read) {
if (preg_match('/.+FLAGS\s\((.*)\)\s/AUi',$read[0],$regs)) { if (preg_match('/.+FLAGS\s\((.*)\)\s/AUi',$read[0],$regs)) {
if (trim($regs[1])) { if (trim($regs[1])) {
@ -905,24 +916,26 @@ function sqimap_get_message ($imap_stream, $id, $mailbox) {
} }
$bodystructure = implode('',$read); $bodystructure = implode('',$read);
$msg = mime_structure($bodystructure,$flags); $msg = mime_structure($bodystructure,$flags);
$read = sqimap_run_command ($imap_stream, "FETCH $id BODY[HEADER]", true, $response, $message, TRUE); $read = sqimap_run_command($imap_stream, "FETCH $id BODY[HEADER]", true, $response, $message, TRUE);
$rfc822_header = new Rfc822Header(); $rfc822_header = new Rfc822Header();
$rfc822_header->parseHeader($read); $rfc822_header->parseHeader($read);
$msg->rfc822_header = $rfc822_header; $msg->rfc822_header = $rfc822_header;
return $msg; return $msg;
} }
/** /**
* Depricated !!!!!!! DO NOT USE THIS, use sqimap_msgs_list_copy instead * Deprecated !!!!!!! DO NOT USE THIS, use sqimap_msgs_list_copy instead
*/ */
function sqimap_messages_copy ($imap_stream, $start, $end, $mailbox) { function sqimap_messages_copy($imap_stream, $start, $end, $mailbox) {
$read = sqimap_run_command ($imap_stream, "COPY $start:$end " . sqimap_encode_mailbox_name($mailbox), true, $response, $message, TRUE); $read = sqimap_run_command ($imap_stream, "COPY $start:$end " . sqimap_encode_mailbox_name($mailbox), true, $response, $message, TRUE);
} }
/** /**
* Depricated !!!!!!! DO NOT USE THIS, use sqimap_msgs_list_delete instead * Deprecated !!!!!!! DO NOT USE THIS, use sqimap_msgs_list_delete instead
*/ */
function sqimap_messages_delete ($imap_stream, $start, $end, $mailbox, $bypass_trash=false) { function sqimap_messages_delete($imap_stream, $start, $end, $mailbox, $bypass_trash=false) {
global $move_to_trash, $trash_folder, $auto_expunge; global $move_to_trash, $trash_folder, $auto_expunge;
if (($move_to_trash == true) && ($bypass_trash != true) && if (($move_to_trash == true) && ($bypass_trash != true) &&
@ -932,19 +945,23 @@ function sqimap_messages_delete ($imap_stream, $start, $end, $mailbox, $bypass_t
sqimap_messages_flag ($imap_stream, $start, $end, "Deleted", true); sqimap_messages_flag ($imap_stream, $start, $end, "Deleted", true);
} }
/** /**
* Depricated !!!!!!! DO NOT USE THIS, use sqimap_toggle_flag instead * Deprecated !!!!!!! DO NOT USE THIS, use sqimap_toggle_flag instead
* Set a flag on the provided uid list * Set a flag on the provided uid list
* @param resource imap connection * @param resource imap connection
*/ */
function sqimap_messages_flag ($imap_stream, $start, $end, $flag, $handle_errors) { function sqimap_messages_flag($imap_stream, $start, $end, $flag, $handle_errors) {
$read = sqimap_run_command ($imap_stream, "STORE $start:$end +FLAGS (\\$flag)", $handle_errors, $response, $message, TRUE); $read = sqimap_run_command ($imap_stream, "STORE $start:$end +FLAGS (\\$flag)", $handle_errors, $response, $message, TRUE);
} }
/** @deprecated */
function sqimap_get_small_header ($imap_stream, $id, $sent) { /**
* @deprecated
*/
function sqimap_get_small_header($imap_stream, $id, $sent) {
$res = sqimap_get_small_header_list($imap_stream, $id, $sent); $res = sqimap_get_small_header_list($imap_stream, $id, $sent);
return $res[0]; return $res[0];
} }
?> ?>