X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap.php;h=e0feecfd189d687d8dee43620f4cb10a13c13c0f;hp=c757cf7ac43c52ad56342c492be9ceacfa25f552;hb=de80e95e61d4a179a0d41ac4512c83818f3243ef;hpb=a09387f473293a14a597f6ee0afc9714700fb040 diff --git a/functions/imap.php b/functions/imap.php index c757cf7a..e0feecfd 100644 --- a/functions/imap.php +++ b/functions/imap.php @@ -17,4 +17,81 @@ } return $data; } + + /** Parse the incoming mailbox name and return a string that is the FOLDER.MAILBOX **/ + function findMailboxName($mailbox) { + // start at -2 so that we skip the initial quote at the end of the mailbox name + $i = -2; + $char = substr($mailbox, $i, 1); + while ($char != "\"") { + $i--; + $temp .= $char; + $char = substr($mailbox, $i, 1); + } + return strrev($temp); + } + + // handles logging onto an imap server. + function loginToImapServer($username, $key, $imapServerAddress) { + $imapConnection = fsockopen($imapServerAddress, 143, &$errorNumber, &$errorString); + if (!$imapConnection) { + echo "Error connecting to IMAP Server.
"; + echo "$errorNumber : $errorString
"; + exit; + } + $serverInfo = fgets($imapConnection, 256); + + // login + fputs($imapConnection, "1 login $username $key\n"); + $read = fgets($imapConnection, 1024); + + if (strpos($read, "NO")) { + error_username_password_incorrect(); + exit; + } + + return $imapConnection; + } + + /** must be sent in the form: user.. **/ + function createFolder($imapConnection, $folder) { + fputs($imapConnection, "1 create \"$folder\"\n"); + } + + /** must be sent in the form: user.. **/ + function removeFolder($imapConnection, $folder) { + fputs($imapConnection, "1 delete \"$folder\"\n"); + } + + /** Sends back two arrays, boxesFormatted and boxesUnformatted **/ + function getFolderList($imapConnection, &$boxesFormatted, &$boxesUnformatted) { + fputs($imapConnection, "1 list \"\" *\n"); + $str = imapReadData($imapConnection); + + for ($i = 0;$i < count($str); $i++) { + $mailbox = chop($str[$i]); + $mailbox = findMailboxName($mailbox); + $periodCount = countCharInString($mailbox, "."); + + // indent the correct number of spaces. + for ($j = 0;$j < $periodCount;$j++) + $boxesFormatted[$i] = "$boxesFormatted[$i]  "; + + $boxesFormatted[$i] = $boxesFormatted[$i] . readShortMailboxName($mailbox, "."); + $boxesUnformatted[$i] = $mailbox; + } + } + + function deleteMessages($imapConnection, $a, $b, $numMessages, $trash_folder, $move_to_trash, $auto_expunge, $mailbox) { + /** check if they would like to move it to the trash folder or not */ + if ($move_to_trash == true) { + $success = copyMessages($imapConnection, $a, $b, $trash_folder); + if ($success == true) + setMessageFlag($imapConnection, $a, $b, "Deleted"); + } else { + setMessageFlag($imapConnection, $a, $b, "Deleted"); + } + if ($auto_expunge == true) + expungeBox($imapConnection, $mailbox, $numMessages); + } ?>