- }
- return $r[1];
- }
- if ($auto_expunge) {
- fputs ($imap_stream, "a001 EXPUNGE\r\n");
- $tmp = sqimap_read_data($imap_stream, "a001", false, $a, $b);
- }
- }
-
-
-
- /******************************************************************************
- ** Creates a folder
- ******************************************************************************/
- function sqimap_mailbox_create ($imap_stream, $mailbox, $type) {
- if (strtolower($type) == "noselect") {
- $dm = sqimap_get_delimiter($imap_stream);
- $mailbox = $mailbox.$dm;
- }
- fputs ($imap_stream, "a001 CREATE \"$mailbox\"\r\n");
- $read_ary = sqimap_read_data($imap_stream, "a001", true, $response, $message);
-
- sqimap_subscribe ($imap_stream, $mailbox);
- }
-
-
-
- /******************************************************************************
- ** Subscribes to an existing folder
- ******************************************************************************/
- function sqimap_subscribe ($imap_stream, $mailbox) {
- fputs ($imap_stream, "a001 SUBSCRIBE \"$mailbox\"\r\n");
- $read_ary = sqimap_read_data($imap_stream, "a001", true, $response, $message);
- }
-
-
-
-
- /******************************************************************************
- ** Unsubscribes to an existing folder
- ******************************************************************************/
- function sqimap_unsubscribe ($imap_stream, $mailbox) {
- global $imap_server_type;
-
- fputs ($imap_stream, "a001 UNSUBSCRIBE \"$mailbox\"\r\n");
- $read_ary = sqimap_read_data($imap_stream, "a001", true, $response, $message);
- }
-
-
-
-
- /******************************************************************************
- ** This function simply deletes the given folder
- ******************************************************************************/
- function sqimap_mailbox_delete ($imap_stream, $mailbox) {
- fputs ($imap_stream, "a001 DELETE \"$mailbox\"\r\n");
- $read_ary = sqimap_read_data($imap_stream, "a001", true, $response, $message);
- sqimap_unsubscribe ($imap_stream, $mailbox);
- }
-
-
- /******************************************************************************
- ** Formats a mailbox into 4 parts for the $boxes array
- **
- ** The four parts are:
- **
- ** raw - Raw LIST/LSUB response from the IMAP server
- ** formatted - nicely formatted folder name
- ** unformatted - unformatted, but with delimiter at end removed
- ** unformatted-dm - folder name as it appears in raw response
- ** unformatted-disp - unformatted without $folder_prefix
- **
- ******************************************************************************/
- function sqimap_mailbox_parse ($line, $line_lsub, $dm) {
- global $folder_prefix;
-
- // Process each folder line
- for ($g=0; $g < count($line); $g++) {
-
- // Store the raw IMAP reply
- $boxes[$g]["raw"] = $line[$g];
-
- // Count number of delimiters ($dm) in folder name
- $mailbox = trim($line_lsub[$g]);
- $dm_count = countCharInString($mailbox, $dm);
- if (substr($mailbox, -1) == $dm)
- $dm_count--; // If name ends in delimiter - decrement count by one
-
- // Format folder name, but only if it's a INBOX.* or have
- // a parent.
- $boxesbyname[$mailbox] = $g;
- $parentfolder = readMailboxParent($mailbox, $dm);
- if((eregi("^inbox".quotemeta($dm), $mailbox)) ||
- (ereg("^".$folder_prefix, $mailbox)) ||
- ( isset($boxesbyname[$parentfolder]) && (strlen($parentfolder) > 0) ) ) {
- $indent = $dm_count - (countCharInString($folder_prefix, $dm));
- if ($indent)
+ }
+ return $r[1];
+ }
+ if ($auto_expunge) {
+ fputs ($imap_stream, sqimap_session_id() . " EXPUNGE\r\n");
+ $tmp = sqimap_read_data($imap_stream, sqimap_session_id(),
+ false, $a, $b);
+ }
+}
+
+
+
+/******************************************************************************
+ ** Creates a folder
+ ******************************************************************************/
+function sqimap_mailbox_create ($imap_stream, $mailbox, $type)
+{
+ global $delimiter;
+ if (strtolower($type) == 'noselect') {
+ $mailbox = $mailbox.$delimiter;
+ }
+ fputs ($imap_stream, sqimap_session_id() . " CREATE \"$mailbox\"\r\n");
+ $read_ary = sqimap_read_data($imap_stream, sqimap_session_id(),
+ true, $response, $message);
+
+ sqimap_subscribe ($imap_stream, $mailbox);
+}
+
+
+
+/******************************************************************************
+ ** Subscribes to an existing folder
+ ******************************************************************************/
+function sqimap_subscribe ($imap_stream, $mailbox)
+{
+ fputs ($imap_stream, sqimap_session_id() . " SUBSCRIBE \"$mailbox\"\r\n");
+ $read_ary = sqimap_read_data($imap_stream, sqimap_session_id(),
+ true, $response, $message);
+}
+
+
+
+/******************************************************************************
+ ** Unsubscribes to an existing folder
+ ******************************************************************************/
+function sqimap_unsubscribe ($imap_stream, $mailbox)
+{
+ global $imap_server_type;
+
+ fputs ($imap_stream, sqimap_session_id() . " UNSUBSCRIBE \"$mailbox\"\r\n");
+ $read_ary = sqimap_read_data($imap_stream, sqimap_session_id(),
+ true, $response, $message);
+}
+
+
+
+/******************************************************************************
+ ** This function simply deletes the given folder
+ ******************************************************************************/
+function sqimap_mailbox_delete ($imap_stream, $mailbox)
+{
+ fputs ($imap_stream, sqimap_session_id() . " DELETE \"$mailbox\"\r\n");
+ $read_ary = sqimap_read_data($imap_stream, sqimap_session_id(),
+ true, $response, $message);
+ sqimap_unsubscribe ($imap_stream, $mailbox);
+}
+
+/***********************************************************************
+ ** Determines if the user is subscribed to the folder or not
+ **********************************************************************/
+function sqimap_mailbox_is_subscribed($imap_stream, $folder)
+{
+ $boxes = sqimap_mailbox_list ($imap_stream);
+ foreach ($boxes as $ref) {
+ if ($ref['unformatted'] == $folder) {
+ return true;
+ }
+ }
+ return false;
+}
+
+
+
+/******************************************************************************
+ ** Formats a mailbox into 4 parts for the $boxes array
+ **
+ ** The four parts are:
+ **
+ ** raw - Raw LIST/LSUB response from the IMAP server
+ ** formatted - nicely formatted folder name
+ ** unformatted - unformatted, but with delimiter at end removed
+ ** unformatted-dm - folder name as it appears in raw response
+ ** unformatted-disp - unformatted without $folder_prefix
+ **
+ ******************************************************************************/
+function sqimap_mailbox_parse ($line, $line_lsub)
+{
+ global $folder_prefix, $delimiter;
+
+ /* Process each folder line */
+ for ($g=0; $g < count($line); $g++) {
+
+ /* Store the raw IMAP reply */
+ if (isset($line[$g])) {
+ $boxes[$g]["raw"] = $line[$g];
+ }
+ else {
+ $boxes[$g]["raw"] = "";
+ }
+
+
+ /* Count number of delimiters ($delimiter) in folder name */
+ $mailbox = trim($line_lsub[$g]);
+ $dm_count = countCharInString($mailbox, $delimiter);
+ if (substr($mailbox, -1) == $delimiter) {
+ /* If name ends in delimiter - decrement count by one */
+ $dm_count--;
+ }
+
+ /* Format folder name, but only if it's a INBOX.* or have */
+ /* a parent. */
+ $boxesbyname[$mailbox] = $g;
+ $parentfolder = readMailboxParent($mailbox, $delimiter);
+ if ( (strtolower(substr($mailbox, 0, 5)) == "inbox") ||
+ (substr($mailbox, 0, strlen($folder_prefix)) == $folder_prefix) ||
+ ( isset($boxesbyname[$parentfolder]) &&
+ (strlen($parentfolder) > 0) ) ) {
+ $indent = $dm_count - (countCharInString($folder_prefix, $delimiter));
+ if ($indent > 0) {