summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/lib/imap.inc142
1 files changed, 83 insertions, 59 deletions
diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index e4a3306e7..6ef1e2915 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -57,6 +57,7 @@
* @todo Possibly clean up more CS.
* @todo Split this file into smaller files.
* @todo Refactor code.
+ * @todo Replace echo-debugging (make it adhere to config setting and log)
*/
// changed path to work within roundcube webmail
@@ -562,22 +563,30 @@ function iil_C_DisableCache(&$conn) {
}
function iil_C_LoadCache(&$conn, $folder) {
- if (!$conn->do_cache) return false;
-
- $key = $folder.".imap";
+ if (!$conn->do_cache) {
+ return false;
+ }
+
+ $key = $folder.'.imap';
if (!is_array($conn->cache[$folder])) {
- $conn->cache[$folder] = cache_read($conn->user, $conn->host, $key);
+ $conn->cache[$folder] = cache_read($conn->user, $conn->host, $key);
$conn->cache_dirty[$folder] = false;
}
}
function iil_C_ExpireCachedItems(&$conn, $folder, $message_set) {
- if (!$conn->do_cache) return; //caching disabled
- if (!is_array($conn->cache[$folder])) return; //cache not initialized|empty
- if (count($conn->cache[$folder]) == 0) return; //cache not initialized|empty
-
- $uids = iil_C_FetchHeaderIndex($conn, $folder, $message_set, "UID");
+ if (!$conn->do_cache) {
+ return; //caching disabled
+ }
+ if (!is_array($conn->cache[$folder])) {
+ return; //cache not initialized|empty
+ }
+ if (count($conn->cache[$folder]) == 0) {
+ return; //cache not initialized|empty
+ }
+
+ $uids = iil_C_FetchHeaderIndex($conn, $folder, $message_set, 'UID');
$num_removed = 0;
if (is_array($uids)) {
//echo "<!-- unsetting: ".implode(",",$uids)." //-->\n";
@@ -608,16 +617,19 @@ function iil_C_ExpireCachedItems(&$conn, $folder, $message_set) {
}
function iil_ExplodeQuotedString($delimiter, $string) {
- $quotes=explode("\"", $string);
- while ( list($key, $val) = each($quotes))
- if (($key % 2) == 1)
+ $quotes=explode('"', $string);
+ while ( list($key, $val) = each($quotes)) {
+ if (($key % 2) == 1) {
$quotes[$key] = str_replace($delimiter, "_!@!_", $quotes[$key]);
- $string=implode("\"", $quotes);
+ }
+ }
+ $string=implode('"', $quotes);
$result=explode($delimiter, $string);
- while ( list($key, $val) = each($result) )
- $result[$key] = str_replace("_!@!_", $delimiter, $result[$key]);
-
+ while ( list($key, $val) = each($result) ) {
+ $result[$key] = str_replace('_!@!_', $delimiter, $result[$key]);
+ }
+
return $result;
}
@@ -633,10 +645,10 @@ function iil_CheckForRecent($host, $user, $password, $mailbox) {
do {
$line=chop(iil_ReadLine($fp, 300));
$a=explode(' ', $line);
- if (($a[0] == '*') && (strcasecmp($a[2], "RECENT") == 0)) {
+ if (($a[0] == '*') && (strcasecmp($a[2], 'RECENT') == 0)) {
$result = (int) $a[1];
}
- } while (!iil_StartsWith($a[0],"a002"));
+ } while (!iil_StartsWith($a[0], 'a002'));
fputs($fp, "a003 LOGOUT\r\n");
fclose($fp);
@@ -664,14 +676,18 @@ function iil_C_Select(&$conn, $mailbox) {
$line=chop(iil_ReadLine($fp, 300));
$a=explode(' ', $line);
if (count($a) == 3) {
- if (strcasecmp($a[2], "EXISTS") == 0) $conn->exists=(int)$a[1];
- if (strcasecmp($a[2], "RECENT") == 0) $conn->recent=(int)$a[1];
+ if (strcasecmp($a[2], 'EXISTS') == 0) {
+ $conn->exists = (int) $a[1];
+ }
+ if (strcasecmp($a[2], 'RECENT') == 0) {
+ $conn->recent = (int) $a[1];
+ }
}
- } while (!iil_StartsWith($line, "sel1"));
+ } while (!iil_StartsWith($line, 'sel1'));
$a=explode(' ', $line);
- if (strcasecmp($a[1],"OK") == 0) {
+ if (strcasecmp($a[1], 'OK') == 0) {
$conn->selected = $mailbox;
return true;
}
@@ -726,10 +742,10 @@ function iil_StrToTime($str) {
//replace double spaces with single space
$str = trim($str);
- $str = str_replace(" ", " ", $str);
+ $str = str_replace(' ', ' ', $str);
//strip off day of week
- $pos=strpos($str, " ");
+ $pos=strpos($str, ' ');
if (!is_numeric(substr($str, 0, $pos))) {
$str = substr($str, $pos+1);
}
@@ -743,7 +759,7 @@ function iil_StrToTime($str) {
$time = $a[3];
$tz_str = $a[4];
$tz = substr($tz_str, 0, 3);
- $ta = explode(":",$time);
+ $ta = explode(':', $time);
$hour = (int)$ta[0]-(int)$tz;
$minute = (int)$ta[1];
$second = (int)$ta[2];
@@ -755,7 +771,7 @@ function iil_StrToTime($str) {
}
function iil_C_Sort(&$conn, $mailbox, $field, $add='', $is_uid=FALSE,
- $encoding='US-ASCII') {
+ $encoding = 'US-ASCII') {
/* Do "SELECT" command */
if (!iil_C_Select($conn, $mailbox)) {
return false;
@@ -786,7 +802,9 @@ function iil_C_Sort(&$conn, $mailbox, $field, $add='', $is_uid=FALSE,
}
do {
$line = chop(iil_ReadLine($fp, 1024));
- if (iil_StartsWith($line, '* SORT')) $data.=($data?' ':'').substr($line,7);
+ if (iil_StartsWith($line, '* SORT')) {
+ $data .= ($data?' ':'') . substr($line, 7);
+ }
} while ($line[0]!='s');
if (empty($data)) {
@@ -914,18 +932,21 @@ function iil_C_FetchHeaderIndex(&$conn, $mailbox, $message_set, $index_field,
}
do {
$line=chop(iil_ReadLine($fp, 200));
- if ($line[0]=="*") {
- //original: "* 10 FETCH (INTERNALDATE "31-Jul-2002 09:18:02 -0500")"
- $paren_pos = strpos($line, "(");
- $foo = substr($line, 0, $paren_pos);
- $a = explode(' ', $foo);
- $id = $a[1];
+ if ($line[0] == '*') {
+ /*
+ * original:
+ * "* 10 FETCH (INTERNALDATE "31-Jul-2002 09:18:02 -0500")"
+ */
+ $paren_pos = strpos($line, '(');
+ $foo = substr($line, 0, $paren_pos);
+ $a = explode(' ', $foo);
+ $id = $a[1];
- $open_pos = strpos($line, "\"") + 1;
- $close_pos = strrpos($line, "\"");
+ $open_pos = strpos($line, '"') + 1;
+ $close_pos = strrpos($line, '"');
if ($open_pos && $close_pos) {
- $len = $close_pos - $open_pos;
- $time_str = substr($line, $open_pos, $len);
+ $len = $close_pos - $open_pos;
+ $time_str = substr($line, $open_pos, $len);
$result[$id] = strtotime($time_str);
}
} else {
@@ -1019,9 +1040,12 @@ function iil_CompressMessageSet($message_set) {
foreach ($ids as $id) {
$incr = $id - $prev;
if ($incr>1) { //found a gap
- if ($start==$prev) $result[] = $prev; //push single id
- else $result[] = $start.':'.$prev; //push sequence as start_id:end_id
- $start = $id; //start of new sequence
+ if ($start==$prev) {
+ $result[] = $prev; //push single id
+ } else {
+ $result[] = $start.':'.$prev; //push sequence as start_id:end_id
+ }
+ $start = $id; //start of new sequence
}
$prev = $id;
}
@@ -1058,7 +1082,7 @@ function iil_C_FetchUIDs(&$conn,$mailbox) {
if ($num == 0) {
return array();
}
- $message_set = '1'.($num>1?':'.$num:'');
+ $message_set = '1' . ($num>1?':' . $num:'');
//if cache not enabled, just call iil_C_FetchHeaderIndex on 'UID' field
if (!$conn->do_cache)
@@ -1074,7 +1098,7 @@ function iil_C_FetchUIDs(&$conn,$mailbox) {
}
//was anything cached at all?
- if ($data===false) {
+ if ($data === false) {
$cache_good = -1;
}
@@ -1098,7 +1122,7 @@ function iil_C_FetchUIDs(&$conn,$mailbox) {
}
//otherwise, we need to fetch it
- $data = array('n'=>$num,'d'=>array());
+ $data = array('n' => $num, 'd' => array());
$data['d'] = iil_C_FetchHeaderIndex($conn, $mailbox, $message_set, 'UID');
cache_write($conn->user, $conn->host, $key, $data);
@@ -2099,7 +2123,7 @@ function iil_C_ListMailboxes(&$conn, $ref, $mailbox) {
// is it a container?
$i++;
}
- } while (!iil_StartsWith($line, "lmb"));
+ } while (!iil_StartsWith($line, 'lmb'));
if (is_array($folders)) {
if (!empty($ref)) {
@@ -2167,7 +2191,7 @@ function iil_C_ListSubscribed(&$conn, $ref, $mailbox) {
// is it a container?
$i++;
}
- } while (!iil_StartsWith($line, "lsb"));
+ } while (!iil_StartsWith($line, 'lsb'));
if (is_array($folders)) {
if (!empty($ref)) {
@@ -2266,7 +2290,7 @@ function iil_C_HandlePartBody(&$conn, $mailbox, $id, $part, $mode) {
do {
$line = chop(iil_ReadLine($fp, 1000));
$a = explode(' ', $line);
- } while ($a[2]!="FETCH");
+ } while ($a[2] != 'FETCH');
$len = strlen($line);
if ($line[$len-1] == ')') {
//one line response, get everything between first and last quotes
@@ -2317,7 +2341,7 @@ function iil_C_HandlePartBody(&$conn, $mailbox, $id, $part, $mode) {
}
return false;
} else {
- echo "Select failed.";
+ echo 'Select failed.';
}
if ($mode==1) {
@@ -2340,10 +2364,10 @@ function iil_C_PrintBase64Body(&$conn, $mailbox, $id, $part) {
function iil_C_CreateFolder(&$conn, $folder) {
$fp = $conn->fp;
- if (fputs($fp, "c CREATE \"".$folder."\"\r\n")) {
+ if (fputs($fp, 'c CREATE "' . $folder . '"' . "\r\n")) {
do {
$line=iil_ReadLine($fp, 300);
- } while ($line[0]!="c");
+ } while ($line[0] != 'c');
$conn->error = $line;
return (iil_ParseResult($line) == 0);
}
@@ -2352,7 +2376,7 @@ function iil_C_CreateFolder(&$conn, $folder) {
function iil_C_RenameFolder(&$conn, $from, $to) {
$fp = $conn->fp;
- if (fputs($fp, "r RENAME \"".$from."\" \"".$to."\"\r\n")) {
+ if (fputs($fp, 'r RENAME "' . $from . '" "' . $to . '"' . "\r\n")) {
do {
$line=iil_ReadLine($fp, 300);
} while ($line[0]!="r");
@@ -2363,7 +2387,7 @@ function iil_C_RenameFolder(&$conn, $from, $to) {
function iil_C_DeleteFolder(&$conn, $folder) {
$fp = $conn->fp;
- if (fputs($fp, "d DELETE \"".$folder."\"\r\n")) {
+ if (fputs($fp, 'd DELETE "' . $folder. '"' . "\r\n")) {
do {
$line=iil_ReadLine($fp, 300);
} while ($line[0]!="d");
@@ -2395,7 +2419,7 @@ function iil_C_Append(&$conn, $folder, &$message) {
$result = (iil_ParseResult($line) == 0);
if (!$result) {
- $conn->error .= $line."\n";
+ $conn->error .= $line . "\n";
}
return $result;
@@ -2413,7 +2437,7 @@ function iil_C_AppendFromFile(&$conn, $folder, $path) {
//open message file
$in_fp = false;
if (file_exists(realpath($path))) {
- $in_fp = fopen($path, "r");
+ $in_fp = fopen($path, 'r');
}
if (!$in_fp) {
$conn->error .= "Couldn't open $path for reading\n";
@@ -2449,7 +2473,7 @@ function iil_C_AppendFromFile(&$conn, $folder, $path) {
$result = (iil_ParseResult($line) == 0);
if (!$result) {
- $conn->error .= $line."\n";
+ $conn->error .= $line . "\n";
}
return $result;
@@ -2513,20 +2537,20 @@ function iil_C_GetQuota(&$conn) {
$quota_line = '';
//get line containing quota info
- if (fputs($fp, "QUOT1 GETQUOTAROOT \"INBOX\"\r\n")) {
+ if (fputs($fp, 'QUOT1 GETQUOTAROOT "INBOX"' . "\r\n")) {
do {
$line=chop(iil_ReadLine($fp, 5000));
- if (iil_StartsWith($line, "* QUOTA ")) {
+ if (iil_StartsWith($line, '* QUOTA ')) {
$quota_line = $line;
}
- } while (!iil_StartsWith($line, "QUOT1"));
+ } while (!iil_StartsWith($line, 'QUOT1'));
}
//return false if not found, parse if found
if (!empty($quota_line)) {
- $quota_line = eregi_replace("[()]", '', $quota_line);
+ $quota_line = eregi_replace('[()]', '', $quota_line);
$parts = explode(' ', $quota_line);
- $storage_part = array_search("STORAGE", $parts);
+ $storage_part = array_search('STORAGE', $parts);
if ($storage_part>0) {
$result = array();
$used = $parts[$storage_part+1];