| | |
| | | function iil_PutLine($fp, $string, $endln=true) { |
| | | global $my_prefs; |
| | | |
| | | if(!empty($my_prefs['debug_mode'])) |
| | | if (!empty($my_prefs['debug_mode'])) |
| | | write_log('imap', 'C: '. rtrim($string)); |
| | | |
| | | return fputs($fp, $string . ($endln ? "\r\n" : '')); |
| | |
| | | if ($buffer === false) { |
| | | break; |
| | | } |
| | | if(!empty($my_prefs['debug_mode'])) |
| | | if (!empty($my_prefs['debug_mode'])) |
| | | write_log('imap', 'S: '. chop($buffer)); |
| | | $line .= $buffer; |
| | | } while ($buffer[strlen($buffer)-1] != "\n"); |
| | |
| | | $len = 0; |
| | | do { |
| | | $d = fread($fp, $bytes-$len); |
| | | if (!empty($my_prefs['debug_mode'])) |
| | | write_log('imap', 'S: '. $d); |
| | | $data .= $d; |
| | | if ($len == strlen($data)) { |
| | | $data_len = strlen($data); |
| | | if ($len == $data_len) { |
| | | break; //nothing was read -> exit to avoid apache lockups |
| | | } |
| | | if(!empty($my_prefs['debug_mode'])) |
| | | write_log('imap', 'S: '. $d); |
| | | $len = strlen($data); |
| | | $len = $data_len; |
| | | } while ($len < $bytes); |
| | | |
| | | return $data; |
| | |
| | | return false; |
| | | } |
| | | |
| | | function iil_StartsWithI($string, $match, $bye=false) { |
| | | function iil_StartsWithI($string, $match, $error=false) { |
| | | $len = strlen($match); |
| | | if ($len == 0) { |
| | | return false; |
| | |
| | | if (strncasecmp($string, $match, $len) == 0) { |
| | | return true; |
| | | } |
| | | if ($bye && strncmp($string, '* BYE ', 6) == 0) { |
| | | if ($error && preg_match('/^\* (BYE|BAD) /i', $string)) { |
| | | return true; |
| | | |
| | | } |
| | |
| | | if (strcasecmp($a[2], 'EXISTS') == 0) { |
| | | $conn->exists = (int) $a[1]; |
| | | } |
| | | if (strcasecmp($a[2], 'RECENT') == 0) { |
| | | else if (strcasecmp($a[2], 'RECENT') == 0) { |
| | | $conn->recent = (int) $a[1]; |
| | | } |
| | | } |
| | |
| | | $command = 's ' . $is_uid . 'SORT (' . $field . ') '; |
| | | $command .= $encoding . ' ALL' . $add; |
| | | $line = $data = ''; |
| | | |
| | | |
| | | if (!iil_PutLineC($conn->fp, $command)) { |
| | | return false; |
| | | } |
| | |
| | | $sizeStr = substr($line, $from, $len); |
| | | $bytes = (int)$sizeStr; |
| | | $prev = ''; |
| | | |
| | | |
| | | while ($bytes > 0) { |
| | | $line = iil_ReadLine($fp, 1024); |
| | | $len = strlen($line); |
| | | |
| | | if ($len > $bytes) { |
| | | $line = substr($line, 0, $bytes); |
| | | $len = strlen($line); |
| | | } |
| | | $bytes -= strlen($line); |
| | | $bytes -= $len; |
| | | |
| | | if ($mode == 1) { |
| | | $line = rtrim($line, "\t\r\n\0\x0B"); |
| | |
| | | do { |
| | | $line=iil_ReadLine($fp, 300); |
| | | } while ($line[0] != 'c'); |
| | | $conn->error = $line; |
| | | return (iil_ParseResult($line) == 0); |
| | | } |
| | | return false; |
| | |
| | | } while ($line[0] != 'd'); |
| | | return (iil_ParseResult($line) == 0); |
| | | } |
| | | $conn->error = "Couldn't send command\n"; |
| | | return false; |
| | | } |
| | | |