function imap_test($imap_stream, $string) { global $default_charset; $message = ''; $responses = array(); $sid = sqimap_session_id(); $results = array(); $query = "{$sid} " . trim($string) . "\r\n"; print "<tr><td>" . htmlspecialchars($query) . "</td></tr>"; fputs($imap_stream, $query); $response = sqimap_read_data_list($imap_stream, $sid, false, $responses, $message); array_push($response, $message); return $response; }
function sqimap_read_data($imap_stream, $pre, $handle_errors, &$response, &$message, $query = '') { $res = sqimap_read_data_list($imap_stream, $pre, $handle_errors, $response, $message, $query); /* sqimap_read_data should be called for one response but since it just calls sqimap_read_data_list 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; } else { return $res[0]; } }
function sqimap_read_data($imap_stream, $tag_uid, $handle_errors, &$response, &$message, $query = '', $filter = false, $outputstream = false, $no_return = false) { $res = sqimap_read_data_list($imap_stream, $tag_uid, $handle_errors, $response, $message, $query, $filter, $outputstream, $no_return); /* sqimap_read_data should be called for one response but since it just calls sqimap_read_data_list 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"]); // } // } return $res[0]; }
function sqimap_get_headerfield($imap_stream, $field) { $sid = sqimap_session_id(false); $results = array(); $read_list = array(); $query = "{$sid} FETCH 1:* (UID BODY.PEEK[HEADER.FIELDS ({$field})])\r\n"; fputs($imap_stream, $query); $readin_list = sqimap_read_data_list($imap_stream, $sid, false, $response, $message); $i = 0; foreach ($readin_list as $r) { $r = implode('', $r); /* first we unfold the header */ $r = str_replace(array("\r\n\t", "\r\n\\s"), array('', ''), $r); /* * now we can make a new header array with each element representing * a headerline */ $r = explode("\r\n", $r); if (!$uid_support) { if (!preg_match("/^\\*\\s+([0-9]+)\\s+FETCH/iAU", $r[0], $regs)) { set_up_language($squirrelmail_language); echo '<br><b><font color=$color[2]>' . _("ERROR : Could not complete request.") . '</b><br>' . _("Unknown response from IMAP server: ") . ' 1.' . $r[0] . "</font><br>\n"; } else { $id = $regs[1]; } } else { if (!preg_match("/^\\*\\s+([0-9]+)\\s+FETCH.*UID\\s+([0-9]+)\\s+/iAU", $r[0], $regs)) { set_up_language($squirrelmail_language); echo '<br><b><font color=$color[2]>' . _("ERROR : Could not complete request.") . '</b><br>' . _("Unknown response from IMAP server: ") . ' 1.' . $r[0] . "</font><br>\n"; } else { $id = $regs[2]; } } $field = $r[1]; $field = substr($field, strlen($field) + 2); $result[] = array($id, $field); } return $result; }
function sqimap_read_data($imap_stream, $tag_uid, $handle_errors, &$response, &$message, $query = '', $filter = false, $outputstream = false, $no_return = false) { $res = sqimap_read_data_list($imap_stream, $tag_uid, $handle_errors, $response, $message, $query, $filter, $outputstream, $no_return); return $res[0]; }