| | |
| | | $iil_error = ''; |
| | | $iil_errornum = 0; |
| | | |
| | | // set some imap options |
| | | // set options |
| | | if (is_array($options)) { |
| | | foreach($options as $optkey => $optval) { |
| | | if ($optkey == 'auth_method') { |
| | | $auth_method = strtoupper($optval); |
| | | } else if ($optkey == 'rootdir') { |
| | | $my_prefs['rootdir'] = $optval; |
| | | } else if ($optkey == 'delimiter') { |
| | | $my_prefs['delimiter'] = $optval; |
| | | } else if ($optkey == 'debug_mode') { |
| | | $my_prefs['debug_mode'] = $optval; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (empty($auth_method)) |
| | | $my_prefs = $options; |
| | | } |
| | | // set auth method |
| | | if (!empty($my_prefs['auth_method'])) { |
| | | $auth_method = strtoupper($my_prefs['auth_method']); |
| | | } else { |
| | | $auth_method = 'CHECK'; |
| | | |
| | | } |
| | | |
| | | $message = "INITIAL: $auth_method\n"; |
| | | |
| | | |
| | | $result = false; |
| | | |
| | | // initialize connection |
| | |
| | | $conn->selected = ''; |
| | | $conn->user = $user; |
| | | $conn->host = $host; |
| | | |
| | | |
| | | if ($my_prefs['sort_field'] == 'INTERNALDATE') { |
| | | $IMAP_USE_INTERNAL_DATE = true; |
| | | } else if ($my_prefs['sort_field'] == 'DATE') { |
| | | $IMAP_USE_INTERNAL_DATE = false; |
| | | } |
| | | |
| | | |
| | | //check input |
| | | if (empty($host)) { |
| | | $iil_error = "Empty host"; |
| | |
| | | } |
| | | |
| | | if (is_resource($result)) { |
| | | if ($my_prefs['force_caps']) { |
| | | iil_C_ClearCapability($conn); |
| | | } |
| | | iil_C_Namespace($conn); |
| | | return $conn; |
| | | } else { |
| | |
| | | return false; |
| | | } |
| | | |
| | | function iil_C_FetchUIDs(&$conn,$mailbox) { |
| | | function iil_C_FetchUIDs(&$conn, $mailbox, $message_set=null) { |
| | | global $clock; |
| | | |
| | | if (is_array($message_set)) |
| | | $message_set = join(',', $message_set); |
| | | else if (empty($message_set)) |
| | | $message_set = '1:*'; |
| | | |
| | | $num = iil_C_CountMessages($conn, $mailbox); |
| | | if ($num == 0) { |
| | | return array(); |
| | | } |
| | | $message_set = '1' . ($num>1?':' . $num:''); |
| | | |
| | | return iil_C_FetchHeaderIndex($conn, $mailbox, $message_set, 'UID'); |
| | | return iil_C_FetchHeaderIndex($conn, $mailbox, $message_set, 'UID', false); |
| | | } |
| | | |
| | | function iil_C_FetchHeaders(&$conn, $mailbox, $message_set, $uidfetch=false, $bodystr=false, $add='') |
| | |
| | | |
| | | iil_PutLine($conn->fp, "exp1 $command"); |
| | | do { |
| | | $line=chop(iil_ReadLine($conn->fp, 100)); |
| | | $line = iil_ReadLine($conn->fp, 100); |
| | | if ($line[0] == '*') { |
| | | $c++; |
| | | } |
| | | $c++; |
| | | } |
| | | } while (!iil_StartsWith($line, 'exp1', true)); |
| | | |
| | | if (iil_ParseResult($line) == 0) { |
| | |
| | | return -1; |
| | | } |
| | | |
| | | $fp = $conn->fp; |
| | | $flags = $GLOBALS['IMAP_FLAGS']; |
| | | |
| | | $flag = strtoupper($flag); |
| | | $flag = $flags[$flag]; |
| | | $flag = $flags[strtoupper($flag)]; |
| | | |
| | | if (iil_C_Select($conn, $mailbox)) { |
| | | $c = 0; |
| | | iil_PutLine($fp, "flg UID STORE $messages " . $mod . "FLAGS (" . $flag . ")"); |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 100)); |
| | | if ($line[0] == '*') { |
| | | $c++; |
| | | } |
| | | } while (!iil_StartsWith($line, 'flg', true)); |
| | | |
| | | if (iil_ParseResult($line) == 0) { |
| | | return $c; |
| | | } |
| | | $conn->error = $line; |
| | | return -1; |
| | | if (!iil_C_Select($conn, $mailbox)) { |
| | | return -1; |
| | | } |
| | | $conn->error = 'Select failed'; |
| | | |
| | | $c = 0; |
| | | iil_PutLine($conn->fp, "flg UID STORE $messages " . $mod . "FLAGS (" . $flag . ")"); |
| | | do { |
| | | $line = iil_ReadLine($conn->fp, 1000); |
| | | if ($line[0] == '*') { |
| | | $c++; |
| | | } |
| | | } while (!iil_StartsWith($line, 'flg', true)); |
| | | |
| | | if (iil_ParseResult($line) == 0) { |
| | | return $c; |
| | | } |
| | | |
| | | $conn->error = $line; |
| | | return -1; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | function iil_C_Copy(&$conn, $messages, $from, $to) { |
| | | $fp = $conn->fp; |
| | | |
| | | if (empty($from) || empty($to)) { |
| | | return -1; |
| | | } |
| | | |
| | | if (iil_C_Select($conn, $from)) { |
| | | $c=0; |
| | | |
| | | iil_PutLine($fp, "cpy1 UID COPY $messages \"".iil_Escape($to)."\""); |
| | | $line = iil_ReadReply($fp); |
| | | return iil_ParseResult($line); |
| | | } else { |
| | | return -1; |
| | | if (!iil_C_Select($conn, $from)) { |
| | | return -1; |
| | | } |
| | | |
| | | iil_PutLine($conn->fp, "cpy1 UID COPY $messages \"".iil_Escape($to)."\""); |
| | | $line = iil_ReadReply($conn->fp); |
| | | return iil_ParseResult($line); |
| | | } |
| | | |
| | | function iil_C_CountUnseen(&$conn, $folder) { |
| | | $index = iil_C_Search($conn, $folder, 'ALL UNSEEN'); |
| | | if (is_array($index)) |
| | | return count($index); |
| | | return false; |
| | | $index = iil_C_Search($conn, $folder, 'ALL UNSEEN'); |
| | | if (is_array($index)) |
| | | return count($index); |
| | | return false; |
| | | } |
| | | |
| | | function iil_C_UID2ID(&$conn, $folder, $uid) { |
| | |
| | | } |
| | | |
| | | function iil_C_ListMailboxes(&$conn, $ref, $mailbox) { |
| | | global $IGNORE_FOLDERS; |
| | | |
| | | $ignore = $IGNORE_FOLDERS[strtolower($conn->host)]; |
| | | |
| | | $fp = $conn->fp; |
| | | |
| | |
| | | // split one line |
| | | $a = iil_ExplodeQuotedString(' ', $line); |
| | | // last string is folder name |
| | | $folder = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1])); |
| | | |
| | | if (empty($ignore) || (!empty($ignore) |
| | | && !preg_match('/'.preg_quote(ignore, '/').'/i', $folder))) { |
| | | $folders[$i] = $folder; |
| | | } |
| | | $folders[$i] = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1])); |
| | | |
| | | // second from last is delimiter |
| | | $delim = trim($a[count($a)-2], '"'); |
| | |
| | | } |
| | | |
| | | function iil_C_ListSubscribed(&$conn, $ref, $mailbox) { |
| | | global $IGNORE_FOLDERS; |
| | | |
| | | $ignore = $IGNORE_FOLDERS[strtolower($conn->host)]; |
| | | |
| | | $fp = $conn->fp; |
| | | if (empty($mailbox)) { |
| | |
| | | $a = iil_ExplodeQuotedString(' ', $line); |
| | | // last string is folder name |
| | | $folder = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1])); |
| | | |
| | | if ((!in_array($folder, $folders)) && (empty($ignore) |
| | | || (!empty($ignore) && !preg_match('/'.preg_quote(ignore, '/').'/i', $folder)))) { |
| | | |
| | | // @TODO: do we need this check??? |
| | | if (!in_array($folder, $folders)) { |
| | | $folders[$i] = $folder; |
| | | } |
| | | |