<?php
- /**
- ** imap.php
- **
- ** This implements all functions that do general imap functions.
- **
- ** $Id$
- **/
-
- if (defined ('imap_general_php'))
- return;
- define ('imap_general_php', true);
-
-global $imap_general_debug;
-$imap_general_debug = false;
- /******************************************************************************
- ** Sets an unique session id in order to avoid simultanous sessions crash.
- ******************************************************************************/
+ /**
+ * imap.php
+ *
+ * Copyright (c) 1999-2001 The Squirrelmail Development Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * This implements all functions that do general imap functions.
+ *
+ * $Id$
+ */
+
+ /**
+ * Unique SessionId
+ *
+ * Sets an unique session id in order to avoid simultanous sessions crash.
+ *
+ * @return string a 4 chars unique string
+ */
+ function sqimap_session_id() {
+
+ global $data_dir, $username;
+
+ $IMAPSessionID = substr(session_id(), -4);
+ if( $IMAPSessionID == '' ) {
+ $IMAPSessionID = str_pad( dechex( getPref( $data_dir, $username, 'counter', 0 ) ),
+ 4, '0', STR_PAD_LEFT);
+ }
- function sqimap_session_id() {
- return( substr( session_id(), -4 ) );
+ return( $IMAPSessionID );
}
function sqimap_read_data_list ($imap_stream, $pre, $handle_errors,
&$response, &$message) {
global $color, $squirrelmail_language;
- global $imap_general_debug;
$read = '';
$resultlist = array();
-
+
$more_msgs = true;
while ($more_msgs) {
$data = array();
$size = $regs[1];
} else if (ereg("^\\* [0-9]+ FETCH", $read, $regs)) {
// Sizeless response, probably single-line
-
- // For debugging purposes
- if ($imap_general_debug) {
- echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
- flush();
- }
-
- $size = 0;
+ $size = -1;
$data[] = $read;
$read = fgets($imap_stream, 9096);
} else {
- $size = 0;
+ $size = -1;
}
while (1) {
while (strpos($read, "\n") === false) {
$read .= fgets($imap_stream, 9096);
}
-
- // For debugging purposes
- if ($imap_general_debug) {
- echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
- flush();
- }
-
// If we know the size, no need to look at the end parameters
if ($size > 0) {
if ($total_size == $size) {
$total_size += strlen($read);
} else {
if (ereg("^$pre (OK|BAD|NO)(.*)", $read, $regs) ||
- ereg("^\\* [0-9]+ FETCH.*", $read, $regs)) {
+ (($size == -1) && ereg("^\\* [0-9]+ FETCH.*", $read, $regs))) {
break;
} else {
$data[] = $read;
$response = $regs[1];
$message = trim($regs[2]);
- if ($imap_general_debug) { echo '--<br>'; }
if ($handle_errors == false) { return $resultlist; }
if ($response == 'NO') {
** will be displayed. This function returns the imap connection handle.
******************************************************************************/
function sqimap_login ($username, $password, $imap_server_address, $imap_port, $hide) {
+
global $color, $squirrelmail_language, $HTTP_ACCEPT_LANGUAGE, $onetimepad;
- $imap_stream = fsockopen ($imap_server_address, $imap_port,
- $error_number, $error_string, 15);
+ $imap_stream = fsockopen ( $imap_server_address, $imap_port,
+ $error_number, $error_string, 15);
$server_info = fgets ($imap_stream, 1024);
-
+
// Decrypt the password
$password = OneTimePadDecrypt($password, $onetimepad);
function sqimap_capability($imap_stream, $capability) {
global $sqimap_capabilities;
-global $imap_general_debug;
if (!is_array($sqimap_capabilities)) {
fputs ($imap_stream, sqimap_session_id() . " CAPABILITY\r\n");
** Returns the delimeter between mailboxes: INBOX/Test, or INBOX.Test...
******************************************************************************/
function sqimap_get_delimiter ($imap_stream = false) {
-global $imap_general_debug;
+
global $sqimap_delimiter;
global $optional_delimiter;