X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fleft_main.php;h=76da5f303267b7460c02d881af8d4239d0f77e00;hb=165829a378d4e41c1a47b46be08fdbd20315077f;hp=2c13f745d6624b3be25b35e4dcb757cd65710a02;hpb=e2370222dc6e0e9ec897575778ec5eec6c337ade;p=squirrelmail.git diff --git a/src/left_main.php b/src/left_main.php index 2c13f745..a3f2dfad 100644 --- a/src/left_main.php +++ b/src/left_main.php @@ -1,80 +1,362 @@ - - /** - ** left_main.php - ** - ** This is the code for the left bar. The left bar shows the folders - ** available, and has cookie information. - ** - **/ - - if(!isset($username)) { - echo "You need a valid user and password to access this page!"; - exit; - } -?> - -
- - - - - - include("../config/config.php"); - include("../functions/strings.php"); - include("../functions/imap.php"); - include("../functions/mailbox.php"); - - // open a connection on the imap port (143) - $imapConnection = loginToImapServer($username, $key, $imapServerAddress); - - fputs($imapConnection, "1 list \"\" *\n"); - $str = imapReadData($imapConnection); - - echo ""; - echo "\n";
- for ($i = 0;$i < count($str); $i++) {
- $mailbox = Chop($str[$i]);
- $mailbox = findMailboxName($mailbox);
-
- // find the quote at the begining of the mailbox name.
- // i subtract 1 from the strlen so it doesn't find the quote at the end of the mailbox name.
- $periodCount = countCharInString($mailbox, ".");
-
- // indent the correct number of spaces.
- for ($j = 0;$j < $periodCount;$j++)
- echo " ";
-
- $mailboxURL = urlencode($mailbox);
- echo "";
- echo readShortMailboxName($mailbox, ".");
- if (($move_to_trash == true) && ($mailbox == $trash_folder)) {
- $urlMailbox = urlencode($mailbox);
- selectMailbox($imapConnection, $mailbox, $numNessages);
- echo " (empty)";
- }
- echo "
\n";
- }
- echo "
";
-
- fclose($imapConnection);
-
+ 0) {
+ $unseen_string = "($unseen)";
+ $unseen_found = true;
+ } else if ($unseen_type == 2) {
+ $numMessages = sqimap_get_num_messages($imapConnection, $real_box);
+ $unseen_string = "($unseen/$numMessages)";
+ $unseen_found = true;
+ }
+ }
+
+ $special_color = false;
+ if ($use_special_folder_color) {
+ if ((strtolower($real_box) == 'inbox')
+ || (($real_box == $trash_folder) && ($move_to_trash))
+ || (($real_box == $sent_folder) && ($move_to_sent))
+ || (($real_box == $draft_folder) && ($save_as_draft))) {
+ $special_color = true;
+ }
+ }
+
+ /* Start off with a blank line. */
+ $line = '';
+
+ /* If there are unseen message, bold the line. */
+ if ($unseen > 0) { $line .= ''; }
+
+ /* Crate the link for this folder. */
+ $line .= "";
+ if ($special_color == true)
+ $line .= "";
+ $line .= str_replace(' ',' ',$mailbox);
+ if ($special_color == true)
+ $line .= "";
+ $line .= '';
+
+ /* If there are unseen message, close bolding. */
+ if ($unseen > 0) { $line .= ""; }
+
+ /* Print unseen information. */
+ if (isset($unseen_found) && $unseen_found) {
+ $line .= " $unseen_string";
+ }
+
+ if (($move_to_trash == true) && ($real_box == $trash_folder)) {
+ if (! isset($numMessages)) {
+ $numMessages = sqimap_get_num_messages($imapConnection, $real_box);
+ }
+
+ if ($numMessages > 0) {
+ $urlMailbox = urlencode($real_box);
+ $line .= "\n\n" .
+ " ("._("empty").")" .
+ "\n\n";
+ }
+ }
+
+ /* Return the final product. */
+ return ($line);
+}
+
+/**
+ * Recursive function that computes the collapsed status and parent
+ * (or not parent) status of this box, and the visiblity and collapsed
+ * status and parent (or not parent) status for all children boxes.
+ */
+function compute_folder_children(&$parbox, $boxcount) {
+ global $boxes, $data_dir, $username, $collapse_folders;
+ $nextbox = $parbox + 1;
+
+ /* Retreive the name for the parent box. */
+ $parbox_name = $boxes[$parbox]['unformatted'];
+
+ /* 'Initialize' this parent box to childless. */
+ $boxes[$parbox]['parent'] = false;
+
+ /* Compute the collapse status for this box. */
+ if( isset($collapse_folders) && $collapse_folders ) {
+ $collapse = getPref($data_dir, $username, 'collapse_folder_' . $parbox_name);
+ $collapse = ($collapse == '' ? SM_BOX_UNCOLLAPSED : $collapse);
+ } else {
+ $collapse = SM_BOX_UNCOLLAPSED;
+ }
+ $boxes[$parbox]['collapse'] = $collapse;
+
+ /* Otherwise, get the name of the next box. */
+ if (isset($boxes[$nextbox]['unformatted']))
+ $nextbox_name = $boxes[$nextbox]['unformatted'];
+ else
+ $nextbox_name = '';
+
+ /* Compute any children boxes for this box. */
+ while (($nextbox < $boxcount) &&
+ (is_parent_box($boxes[$nextbox]['unformatted'], $parbox_name))) {
+
+ /* Note that this 'parent' box has at least one child. */
+ $boxes[$parbox]['parent'] = true;
+
+ /* Compute the visiblity of this box. */
+ if ($boxes[$parbox]['visible'] &&
+ ($boxes[$parbox]['collapse'] != SM_BOX_COLLAPSED)) {
+ $boxes[$nextbox]['visible'] = true;
+ } else {
+ $boxes[$nextbox]['visible'] = false;
+ }
+
+ /* Compute the visibility of any child boxes. */
+ compute_folder_children($nextbox, $boxcount);
+ }
+
+ /* Set the parent box to the current next box. */
+ $parbox = $nextbox;
+}
+
+/**
+ * Create the link for a parent folder that will allow that
+ * parent folder to either be collapsed or expaned, as is
+ * currently appropriate.
+ */
+function create_collapse_link($boxnum) {
+ global $boxes;
+ $mailbox = urlencode($boxes[$boxnum]['unformatted']);
+
+ /* Create the link for this collapse link. */
+ $link = '+";
+ } else {
+ $link .= "fold=$mailbox\">-";
+ }
+ $link .= '';
+
+ /* Return the finished product. */
+ return ($link);
+}
+
+/**
+ * This simple function checks if a box is another box's parent.
+ */
+function is_parent_box($curbox_name, $parbox_name) {
+ global $delimiter;
+
+ /* Extract the name of the parent of the current box. */
+ $curparts = explode($delimiter, $curbox_name);
+ $curname = array_pop($curparts);
+ $actual_parname = implode($delimiter, $curparts);
+ $actual_parname = substr($actual_parname,0,strlen($parbox_name));
+
+ /* Compare the actual with the given parent name. */
+ return ($parbox_name == $actual_parname);
+}
+
+
+/* -------------------- MAIN ------------------------ */
+
+global $delimiter, $default_folder_prefix;
+
+// open a connection on the imap port (143)
+$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 10); // the 10 is to hide the output
+
+
+if (isset($left_refresh) && ($left_refresh != 'none') && ($left_refresh != '')) {
+ $xtra = "\n\n" .
+ "\n".
+ "\n";
+} else {
+ $xtra = '';
+}
+
+displayHtmlHeader( 'SquirrelMail', $xtra );
+
+/* If requested and not yet complete, attempt to autocreate folders. */
+if ($auto_create_special && !isset($auto_create_done)) {
+ $autocreate = array( $sent_folder,
+ $trash_folder,
+ $draft_folder );
+ foreach( $autocreate as $folder ) {
+ if ($folder != '' && $folder != 'none') {
+ if ( !sqimap_mailbox_exists($imapConnection, $folder)) {
+ sqimap_mailbox_create($imapConnection, $folder, '');
+ } elseif ( !sqimap_mailbox_is_subscribed($imapConnection, $folder)) {
+ sqimap_subscribe($imapConnection, $folder);
+ }
+ }
+ }
+
+ /* Let the world know that autocreation is complete! Hurrah! */
+ $auto_create_done = true;
+ session_register('auto_create_done');
+}
+
+echo "\n\n";
+
+do_hook('left_main_before');
+
+$boxes = sqimap_mailbox_list($imapConnection);
+
+echo '