X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap.php;h=090f078e7b4c5190c1fc889024171367a8143bf2;hp=c757cf7ac43c52ad56342c492be9ceacfa25f552;hb=dd88d31f69c41238a0adb6ba699d4ae1e043dfb0;hpb=a09387f473293a14a597f6ee0afc9714700fb040
diff --git a/functions/imap.php b/functions/imap.php
index c757cf7a..090f078e 100644
--- a/functions/imap.php
+++ b/functions/imap.php
@@ -17,4 +17,69 @@
}
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;
+ }
+ }
+
?>