'; $end = ''; $collapse = false; $unseen_found = false; $unseen = 0; $mailbox = $boxes->mailboxname_full; $leader = ''; $leader .= str_repeat('  ',$j); $mailboxURL = urlencode($mailbox); /* get unseen/total messages information */ /* Only need to display info when option is set */ if (isset($unseen_notify) && ($unseen_notify > 1) && (($boxes->unseen !== false) || ($boxes->total !== false))) { if ($boxes->unseen !== false) $unseen = $boxes->unseen; /* Should only display unseen info if the folder is inbox or you set the option for all folders */ if ((strtolower($mailbox) == 'inbox') || ($unseen_notify == 3)) { $unseen_string = $unseen; /* If users requests, display message count too */ if (isset($unseen_type) && ($unseen_type == 2) && ($boxes->total !== false)) { $unseen_string .= '/' . $boxes->total; } $unseen_string = "($unseen_string)"; /* Finally allow the script to display the values by setting a boolean. This can only occur if the unseen count is great than 0 (if you have unseen count only), or you have the message count too. */ if (($unseen > 0) || (isset($unseen_type) && ($unseen_type ==2))) { $unseen_found = true; } } } if (isset($boxes->mbxs[0]) && $collapse_folders) { $collapse = getPref($data_dir, $username, 'collapse_folder_' . $mailbox); $collapse = ($collapse == '' ? SM_BOX_UNCOLLAPSED : $collapse); $link = '$leader '; } else { $link .= "unfold=$mailboxURL\">$leader+ "; } } else { if ($use_icons && $icon_theme != 'none') { $link .= "fold=$mailboxURL\">$leader '; } else { $link .= "fold=$mailboxURL\">$leader- "; } } $link .= ''; $pre .= $link; } else { $pre.= $leader . '  '; } /* If there are unseen message, bold the line. */ if (($move_to_trash) && ($mailbox == $trash_folder)) { if (! isset($boxes->total)) { $boxes->total = sqimap_status_messages($imapConnection, $mailbox); } $pre .= ""; if ($unseen > 0) { $pre .= ''; $end .= ''; } $end .= ''; if ($boxes->total > 0) { /* Print unseen information. */ if ($unseen_found) { $end .= " $unseen_string"; } $end .= "\n\t" . '  ['._("Purge").']'. ''; } } else { if (!$boxes->is_noselect) { $pre .= ""; if ($unseen > 0) { $pre .= ''; $end .= ''; } $end .= ''; } /* Print unseen information. */ if ($unseen_found) { $end .= " $unseen_string"; } } $font = ''; $fontend = ''; if ($use_special_folder_color && $boxes->is_special) { $font = ""; $fontend = ""; } elseif ( $boxes->is_noselect ) { $font = ""; $fontend = ''; } // let plugins fiddle with end of line $end .= concat_hook_function('left_main_after_each_folder', array(isset($numMessages) ? $numMessages : '', $boxes->mailboxname_full, $imapConnection)); $end .= ''; if (!$boxes->is_root) { echo "" . $pre .$font. str_replace( array(' ','<','>'), array(' ','<','>'), $boxes->mailboxname_sub) . $fontend . $end. '
' . "\n"; $j++; } if (!$collapse || $boxes->is_root) { for ($i = 0; $i mbxs); $i++) { ListBoxes($boxes->mbxs[$i],$j); } } } function ListAdvancedBoxes ($boxes, $mbx, $j='ID.0000' ) { global $data_dir, $username, $color, $unseen_notify, $unseen_type, $move_to_trash, $trash_folder, $collapse_folders, $use_special_folder_color; if (empty($boxes)) { return; } /* use_folder_images only works if the images exist in ../images */ $use_folder_images = true; $pre = ''; $end = ''; $collapse = false; $unseen_found = false; $unseen = 0; $mailbox = $boxes->mailboxname_full; $mailboxURL = urlencode($mailbox); /* get unseen/total messages information */ /* Only need to display info when option is set */ if (isset($unseen_notify) && ($unseen_notify > 1) && (($boxes->unseen !== false) || ($boxes->total !== false))) { if ($boxes->unseen !== false) $unseen = $boxes->unseen; /* Should only display unseen info if the folder is inbox or you set the option for all folders */ if ((strtolower($mailbox) == 'inbox') || ($unseen_notify == 3)) { $unseen_string = $unseen; /* If users requests, display message count too */ if (isset($unseen_type) && ($unseen_type == 2) && ($boxes->total !== false)) { $unseen_string .= '/' . $boxes->total; } $unseen_string = "($unseen_string)"; /* Finally allow the script to display the values by setting a boolean. This can only occur if the unseen count is great than 0 (if you have unseen count only), or you have the message count too. */ if (($unseen > 0) || (isset($unseen_type) && ($unseen_type ==2))) { $unseen_found = true; } } } /* If there are unseen message, bold the line. */ if ($unseen > 0) { $pre .= ''; } /* color special boxes */ if ($use_special_folder_color && $boxes->is_special) { $pre .= ""; $end .= ''; } /* If there are unseen message, close bolding. */ if ($unseen > 0) { $end .= ''; } /* Print unseen information. */ if ($unseen_found) { $end .= " $unseen_string"; } if (($move_to_trash) && ($mailbox == $trash_folder)) { $pre = "" . $pre; $end .= ''; $end .= "\n\n" . '  ['._("Purge").']'. ''; } else { if (!$boxes->is_noselect) { /* \Noselect boxes can't be selected */ $pre = "" . $pre; $end .= ''; } } // let plugins fiddle with end of line global $imapConnection; $end .= concat_hook_function('left_main_after_each_folder', array(isset($numMessages) ? $numMessages : '', $boxes->mailboxname_full, $imapConnection)); if (!$boxes->is_root) { if ($use_folder_images) { if ($boxes->is_inbox) { $folder_img = '../images/inbox.png'; } else if ($boxes->is_sent) { $folder_img = '../images/senti.png'; } else if ($boxes->is_trash) { $folder_img = '../images/delitem.png'; } else if ($boxes->is_draft) { $folder_img = '../images/draft.png'; } else if ($boxes->is_noinferiors) { $folder_img = '../images/folder_noinf.png'; } else { $folder_img = '../images/folder.png'; } $folder_img = '  '; } else { $folder_img = ''; } if (!isset($boxes->mbxs[0])) { echo ' ' . html_tag( 'div', ''. $pre . $folder_img . '' . str_replace( array(' ','<','>'), array(' ','<','>'), $boxes->mailboxname_sub) . $end, 'left', '', 'class="mbx_sub" id="' .$j. '"' ) . "\n"; } else { /* get collapse information */ if ($collapse_folders) { $form_entry = $j.'F'; if (isset($mbx) && isset($mbx[$form_entry])) { $collapse = $mbx[$form_entry]; setPref($data_dir, $username, 'collapse_folder_'.$boxes->mailboxname_full , $collapse ? SM_BOX_COLLAPSED : SM_BOX_UNCOLLAPSED); } else { $collapse = getPref($data_dir, $username, 'collapse_folder_' . $mailbox); $collapse = ($collapse == '' ? SM_BOX_UNCOLLAPSED : $collapse); } $img_src = ($collapse ? '../images/plus.png' : '../images/minus.png'); $collapse_link = '' . " "; } else { $collapse_link=''; } echo ' ' . html_tag( 'div', $collapse_link . $pre . $folder_img . ' '. $boxes->mailboxname_sub . $end , 'left', '', 'class="mbx_par" id="' .$j. 'P"' ) . "\n"; echo ' '."\n"; } } $visible = ($collapse ? ' style="display:none"' : ' style="display:block"'); if (isset($boxes->mbxs[0]) && !$boxes->is_root) /* mailbox contains childs */ echo html_tag( 'div', '', 'left', '', 'class="par_area" id='.$j.'.0000 '. $visible ) . "\n"; if ($j !='ID.0000') { $j = $j .'.0000'; } for ($i = 0; $i mbxs); $i++) { $j++; ListAdvancedBoxes($boxes->mbxs[$i],$mbx,$j); } if (isset($boxes->mbxs[0]) && !$boxes->is_root) { echo ''."\n\n"; } } /* -------------------- MAIN ------------------------ */ /* get globals */ sqgetGlobalVar('username', $username, SQ_SESSION); sqgetGlobalVar('key', $key, SQ_COOKIE); sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION); sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION); sqgetGlobalVar('fold', $fold, SQ_GET); sqgetGlobalVar('unfold', $unfold, SQ_GET); /* end globals */ // open a connection on the imap port (143) // why hide the output? $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, true); /** * Using stristr since very old preferences may contain "None" and "none". */ if (!empty($left_refresh) && !stristr($left_refresh, 'none')){ $xtra = "\n\n" . "\n". "\n"; } else { $xtra = ''; } /** * $advanced_tree and is a boolean var which is default set to default * SM behaviour. * Setting $advanced tree to true causes SM to display a experimental * mailbox-tree with dhtml behaviour. * It only works on browsers which supports css and javascript. The used * javascript is experimental and doesn't support all browsers. * It has been tested on IE6 an Konquerer 3.0.0-2. * It is now tested and working on: (please test and update this list) * Windows: IE 5.5 SP2, IE 6 SP1, Gecko based (Mozilla, Firebird) and Opera7 * XWindow: ? * Mac: ? * In the function ListAdvancedBoxes there is another var $use_folder_images. * setting this to true is only usefull if the images exists in ../images. * * Feel free to experiment with the code and report bugs and enhancements **/ /* set this to true if you want to see a nicer mailboxtree */ if (empty($advanced_tree)) { $advanced_tree=false; } if ($advanced_tree) { $xtra .= ''."\n"; /* style definitions */ $xtra .= ''."\n"; } displayHtmlHeader( 'SquirrelMail', $xtra ); sqgetGlobalVar('auto_create_done',$auto_create_done,SQ_SESSION); /* 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, ''); } else { // check for subscription is useless and expensive, just // surpress the NO response. Unless we're on Mecury, which // will just subscribe a folder again if it's already // subscribed. if ( strtolower($imap_server_type) != 'mercury32' || !sqimap_mailbox_is_subscribed($imapConnection, $folder) ) { sqimap_subscribe($imapConnection, $folder, false); } } } } /* Let the world know that autocreation is complete! Hurrah! */ $auto_create_done = TRUE; sqsession_register($auto_create_done, 'auto_create_done'); } if ($advanced_tree) { echo "\n\n"; } else { echo "\n\n"; } do_hook('left_main_before'); if ($advanced_tree) { /* nice future feature, needs layout !! volunteers? */ $right_pos = $left_size - 20; /* echo '
'; echo ''; echo ''; echo '
'; echo '


';*/ } echo "\n\n" . '
'. _("Folders") . "
\n\n"; if ($date_format != 6) { /* First, display the clock. */ if ($hour_format == 1) { $hr = 'H:i'; if ($date_format == 4) { $hr .= ':s'; } } else { if ($date_format == 4) { $hr = 'g:i:s a'; } else { $hr = 'g:i a'; } } switch( $date_format ) { case 0: $clk = date('Y-m-d '.$hr. ' T', time()); break; case 1: $clk = date('m/d/y '.$hr, time()); break; case 2: $clk = date('d/m/y '.$hr, time()); break; case 4: case 5: $clk = date($hr, time()); break; default: $clk = getDayAbrv( date( 'w', time() ) ) . date( ', ' . $hr, time() ); } $clk = str_replace(' ',' ',$clk); echo '' . str_replace(' ', ' ', _("Last Refresh")) . ":
$clk

\n"; } /* Next, display the refresh button. */ echo '

\n\n"; /* Lastly, display the folder list. */ if ( $collapse_folders ) { /* If directed, collapse or uncollapse a folder. */ if (isset($fold)) { setPref($data_dir, $username, 'collapse_folder_' . $fold, SM_BOX_COLLAPSED); } else if (isset($unfold)) { setPref($data_dir, $username, 'collapse_folder_' . $unfold, SM_BOX_UNCOLLAPSED); } } /* Get unseen/total display prefs */ $unseen_type = getPref( $data_dir , $username , 'unseen_type' ); $unseen_notify = getPref( $data_dir , $username , 'unseen_notify' ); if (empty($unseen_type)) { if (!empty($default_unseen_type)) { $unseen_type = $default_unseen_type; } else { $unseen_type = 1; } } if (empty($unseen_notify)) { if (!empty($default_unseen_notify)) { $unseen_notify = $default_unseen_notify; } else { $unseen_notify = 0; } } $boxes = sqimap_mailbox_tree($imapConnection); if (isset($advanced_tree) && $advanced_tree) { echo '
'; echo '

'; echo '
'."\n\n"; sqgetGlobalVar('mbx', $mbx, SQ_POST); if (!isset($mbx)) $mbx=NULL; ListAdvancedBoxes($boxes, $mbx); echo '
'; echo ''; echo '
'."\n"; } else { ListBoxes($boxes); } do_hook('left_main_after'); sqimap_logout($imapConnection); ?>