-Version 0.3pre1 -- Development
+Version 0.3pre2 -- Development
------------------------------
+- Rewrote all IMAP functions from scratch
+
+Version 0.3pre1 -- February 17, 2000
+------------------------------------
- Added user-specific preferences including:
Full Name (for outbound messages)
Reply-to address
+
Version 0.2.1 -- January 05, 2000
---------------------------------
- Rewrote how MULTIPART messages were handled and made it recursive
+
Version 0.1.2 -- December 20, 1999
-----------------------------------
- Date translation to local time
--- /dev/null
+<h2>SquirrelMail Documentation</h2>
+<p>
+Sorry for the lack of cohesion in the SquirrelMail documentation, but here is a conglomeration
+of all the docs that we have accumulated so far. Maybe some time in the future we will put
+together a good documentation system. This is just meant to get you up and running. If you find
+mistakes, please email them to <a href="lehresma@css.tayloru.edu">lehresma@css.tayloru.edu</a>.
+</p>
+
+
+<ul>
+ <a href="message_array.html">Message Array Format</a>
+ <ul>
+ When reading in a message from a mailbox, SquirrelMail shoves all the infomation into a
+ large array. I have attempted to map out that array. I have done my best to make this
+ accurate, but there probably are some inacuracies somewhere.
+ </ul>
+</ul>
+
+<ul>
+ <a href="sqimap.php3">SquirrelMail IMAP Functions</a>
+ <ul>
+ These are a collection of functions designed to replace the PHP imap functions so that you
+ don't have to compile in the UW IMAP server into your PHP distrobution.
+ </ul>
+</ul>
+
+<ul>
+ Basic documentation that comes with distrbution:
+ <ul>
+ <a href="../AUTHORS">AUTHORS</a><br>
+ <a href="../INSTALL">INSTALL</a><br>
+ <a href="../README">README</a><br>
+ <a href="../COPYING">COPYING</a><br>
+ <a href="../ChangeLog">ChangeLog</a><br>
+ </ul>
+</ul>
+<p>
Here is a map of the message array that contains all the information about
a message. A single part message is handled the same as a multipart message,
except in the "ENTITIES" part, there would only be one entry (0).
+</p>
+<pre>
$message ["HEADER"] (array)
["TO"] (array)
["CC"] (array)
["CHARSET"] "us-ascii"
["BOUNDARY"] ""
["PRIORITY"] 20
- ["BODY"] "<B>This is just a test to see</B><BR>"
- "<FONT FACE="Arial,Helvetica">how this will handle a message"
- "for this example</FONT>"
+ ["BODY"] "<B>This is just a test to see</B><BR>"
+ "<FONT FACE="Arial,Helvetica">how this will handle a message"
+ "for this example</FONT>"
+</pre>
--- /dev/null
+<a name="top"></a>
+<h1>SquirrelMail IMAP functions</h1>
+<?
+ include ("sqimap_config.php3");
+
+ echo "<ul>\n";
+ for ($i = 0; $i < count($name); $i++) {
+ echo "<ul>\n";
+ echo " <a href=\"#$name[$i]\">sqimap_$name[$i]</a> $params[$i]\n";
+ echo "</ul>\n";
+ }
+ echo "</ul>\n";
+
+ for ($i = 0; $i < count($name); $i++) {
+ ?>
+ <br>
+ <hr>
+ <a name="<? echo $name[$i] ?>"></a>
+ <h2>sqimap_<? echo $name[$i] ?></h2>
+ <a href="#top">go to top</a>
+ <ul>
+ Implementation:
+ <ul>
+ <code>
+ sqimap_<? echo $name[$i] ?> <? echo $params[$i] ?>
+ </code>
+ </ul>
+ Explanation:
+ <ul>
+ <? echo $explain[$i] ?><br>
+ <br>
+ <?
+ for ($p = 0; $p < count($params_desc[$i]); $p++) {
+ echo "<li><b>" . $params_desc[$i][$p]["name"] . "</b> - (".$params_desc[$i][$p]["type"].") " . $params_desc[$i][$p]["desc"] . "</li>\n";
+ }
+ ?>
+ </ul>
+ Example:
+ <ul>
+ <code>
+ <? echo $example[$i] ?>
+ </code>
+ </ul>
+ </ul>
+
+ <br>
+ <?
+ }
+?>
--- /dev/null
+<?
+$imap_stream_def = "The imap stream returned from <a href=\"#login\">sqimap_login</a>";
+
+$name[0] = "read_data";
+$params[0] = "(\$imap_stream, \$pre, \$handle_errors, &\$response, &\$message)";
+$explain[0] = "This is used to read information from the imap server. This handles error correction, error notification, etc. It will return an array of strings that contains the output for your use.";
+$params_desc[0][0]["name"] = "imap_stream";
+$params_desc[0][0]["desc"] = $imap_stream_def;
+$params_desc[0][0]["type"] = "int";
+$params_desc[0][1]["name"] = "pre";
+$params_desc[0][1]["desc"] = "The string that goes before any commands. In the example below, it is a001.";
+$params_desc[0][1]["type"] = "string";
+$params_desc[0][2]["name"] = "handle_errors";
+$params_desc[0][2]["desc"] = "Whether or not to handle all error messages for you";
+$params_desc[0][2]["type"] = "boolean";
+$params_desc[0][3]["name"] = "respone";
+$params_desc[0][3]["desc"] = "Returned if handle_errors is false. It is the server's response";
+$params_desc[0][3]["type"] = "string";
+$params_desc[0][4]["name"] = "message";
+$params_desc[0][4]["desc"] = "Returned if handle_errors is false. It is the error message";
+$params_desc[0][4]["type"] = "string";
+$example[0] = "fputs (\$imap_stream, \"a001 SELECT INBOX\\n\");<br>";
+$example[0] .="\$read_ary = sqimap_read_data(\$imap_stream, \"a001\", true, $response, $message);<br>";
+$example[0] .="for (\$i = 0; \$i < count(\$read_ary); \$i++) {<br>";
+$example[0] .=" echo \$read_ary[\$i];<br>";
+$example[0] .="}<br>";
+
+
+$name[1] = "login";
+$params[1] = "(\$username, \$password, \$imap_server_address, \$hide)";
+$explain[1] = "This function simply logs the specified user into the imap server.";
+$params_desc[1][0]["name"] = "username";
+$params_desc[1][0]["type"] = "string";
+$params_desc[1][0]["desc"] = "The user who you wish to log in.";
+$params_desc[1][1]["name"] = "password";
+$params_desc[1][1]["type"] = "string";
+$params_desc[1][1]["desc"] = "The password for the user.";
+$params_desc[1][2]["name"] = "imap_server_address";
+$params_desc[1][2]["type"] = "string";
+$params_desc[1][2]["desc"] = "Address of the IMAP server.";
+$params_desc[1][3]["name"] = "hide";
+$params_desc[1][3]["type"] = "boolean";
+$params_desc[1][3]["desc"] = "If set, this will hide all error messages from the login session.";
+$example[1] = "sqimap_login (\"luke\", \"lkajskw\", \"mail.luke.com\", false);";
+
+
+$name[2] = "logout";
+$params[2] = "(\$imap_stream)";
+$explain[2] = "This simply logs out whoever is logged into the \$imap_stream.";
+$params_desc[2][0]["name"] = "imap_stream";
+$params_desc[2][0]["type"] = "int";
+$params_desc[2][0]["desc"] = $imap_stream_def;
+$example[2] = "sqimap_logout (\$imap_stream);";
+
+
+$name[3] = "get_delimiter";
+$params[3] = "(\$imap_stream)";
+$explain[3] = "Each mailbox is delimited differently between IMAP servers. Some would look like \"INBOX.Folder\", but others might look like \"INBOX/Folder\". This function returns what the delimiter is so you can create mailboxes of your own.";
+$params_desc[3][0]["name"] = "imap_stream";
+$params_desc[3][0]["type"] = "int";
+$params_desc[3][0]["desc"] = $imap_stream_def;
+$example[3] = "\$dm = sqimap_get_delimiter(\$imap_stream);";
+
+
+$name[4] = "get_num_messages";
+$params[4] = "(\$imap_stream, \$mailbox)";
+$explain[4] = "Returns the number of messages in the specified folder.";
+$params_desc[4][0]["name"] = "imap_stream";
+$params_desc[4][0]["type"] = "int";
+$params_desc[4][0]["desc"] = $imap_stream_def;
+$params_desc[4][1]["name"] = "mailbox";
+$params_desc[4][1]["type"] = "string";
+$params_desc[4][1]["desc"] = "The mailbox that you wish to check out.";
+$example[4] = "$num = sqimap_get_num_messages (\$imap_stream, \"INBOX\");";
+
+/*
+$name[1] = "";
+$params[1] = "";
+$explain[1] = "";
+$params_desc[1][0]["name"] = "";
+$params_desc[1][0]["type"] = "";
+$params_desc[1][0]["desc"] = "";
+$params_desc[1][1]["name"] = "";
+$params_desc[1][1]["type"] = "";
+$params_desc[1][1]["desc"] = "";
+$params_desc[1][2]["name"] = "";
+$params_desc[1][2]["type"] = "";
+$params_desc[1][2]["desc"] = "";
+$params_desc[1][3]["name"] = "";
+$params_desc[1][3]["type"] = "";
+$params_desc[1][3]["desc"] = "";
+$example[0] = "";
+*/
+?>
return $unseen;
}
-?>
+?>
** The array returned looks like this:
******************************************************************************/
function sqimap_mailbox_list ($imap_stream) {
+ global $special_folders, $list_special_folders_first;
+
if (!function_exists ("ary_sort"))
include ("../functions/array.php");
}
$original = $boxes;
+
+ /** Get the folders into lower case so sorting is not case sensative */
+ for ($i = 0; $i < count($original); $i++) {
+ $boxes[$i]["unformatted"] = strtolower($boxes[$i]["unformatted"]);
+ }
+
+ /** Sort them **/
$boxes = ary_sort($boxes, "unformatted", 1);
-
+
+ /** Get them back from the original array, still sorted by the id **/
for ($i = 0; $i < count($boxes); $i++) {
for ($j = 0; $j < count($original); $j++) {
if ($boxes[$i]["id"] == $original[$j]["id"]) {
}
}
+
for ($i = 0; $i < count($boxes); $i++) {
if ($boxes[$i]["unformatted"] == $special_folders[0]) {
$boxesnew[0] = $boxes[$i];
+ $boxes[$i]["used"] = true;
}
}
+
if ($list_special_folders_first == true) {
for ($i = 0; $i < count($boxes); $i++) {
for ($j = 1; $j < count($special_folders); $j++) {
}
}
}
+
for ($i = 0; $i < count($boxes); $i++) {
if (($boxes[$i]["unformatted"] != $special_folders[0]) &&
($boxes[$i]["used"] == false)) {
}
}
- return $boxes;
+ return $boxesnew;
}
-?>
+?>
$body = $bodytmp;
return decodeMime($body, $bound, $type0, $type1);
}
-?>
+?>