Source for file left_main.php
Documentation is available at left_main.php
* This is the code for the left bar. The left bar shows the folders
* available, and has cookie information.
* @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: left_main.php,v 1.154.2.28 2006/04/14 22:27:08 jervfors Exp $
* Path for SquirrelMail required files.
/* SquirrelMail required files. */
require_once(SM_PATH .
'include/validate.php');
require_once(SM_PATH .
'functions/imap.php');
require_once(SM_PATH .
'functions/plugin.php');
require_once(SM_PATH .
'functions/page_header.php');
require_once(SM_PATH .
'functions/html.php');
/* These constants are used for folder stuff. */
define('SM_BOX_UNCOLLAPSED', 0);
define('SM_BOX_COLLAPSED', 1);
/* --------------------- FUNCTIONS ------------------------- */
global $folder_prefix, $trash_folder, $sent_folder,
$color, $move_to_sent, $move_to_trash,
$unseen_notify, $unseen_type, $collapse_folders,
$draft_folder, $save_as_draft,
$real_box =
$box_array['unformatted'];
$mailbox =
str_replace(' ','',$box_array['formatted']);
/* Strip down the mailbox name. */
if (ereg("^( *)([^ ]*)$", $mailbox, $regs)) {
if (($unseen_notify ==
2 &&
$real_box ==
'INBOX') ||
list
($unseen_string, $unseen) =
$status;
/* Start off with a blank line. */
/* If there are unseen message, bold the line. */
if ($unseen >
0) { $line .=
'<b>'; }
/* Create the link for this folder. */
$line .=
'<a href="right_main.php?PG_SHOWALL=0&sort=0&startMessage=1&mailbox='.
$mailboxURL.
'" target="right" style="text-decoration:none">';
$line .=
"<font color=\"$color[11]\">";
if ( $mailbox ==
'INBOX' ) {
$line .=
str_replace(array(' ','<','>'),array(' ','<','>'),$mailbox);
if ($special_color ==
TRUE)
/* If there are unseen message, close bolding. */
if ($unseen >
0) { $line .=
"</b>"; }
/* Print unseen information. */
if ($unseen_string !=
'') {
$line .=
" <small>$unseen_string</small>";
/* If it's the trash folder, show a purge link when needed */
if (($move_to_trash) &&
($real_box ==
$trash_folder)) {
if (! isset
($numMessages)) {
if (($numMessages >
0) or ($box_array['parent'] ==
1)) {
' (<a href="empty_trash.php" style="text-decoration:none">'.
_("Purge").
'</a>)' .
array(isset
($numMessages) ?
$numMessages :
'',
$real_box, $imapConnection));
/* Return the final product. */
* 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.
global $boxes, $data_dir, $username, $collapse_folders;
/* 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);
$boxes[$parbox]['collapse'] =
$collapse;
/* Otherwise, get the name of the next box. */
if (isset
($boxes[$nextbox]['unformatted'])) {
$nextbox_name =
$boxes[$nextbox]['unformatted'];
/* 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. */
$boxes[$nextbox]['visible'] =
($boxes[$parbox]['visible'] &&
/* Compute the visibility of any child boxes. */
/* Set the parent box to the current next box. */
* Create the link for a parent folder that will allow that
* parent folder to either be collapsed or expaned, as is
global $boxes, $imapConnection, $unseen_notify, $color;
$mailbox =
urlencode($boxes[$boxnum]['unformatted']);
/* Create the link for this collapse link. */
$link =
'<a target="left" style="text-decoration:none" ' .
$link .=
"unfold=$mailbox\">+";
$link .=
"fold=$mailbox\">-";
/* Return the finished product. */
* Create unseen and total message count for both this folder and
* @param string $boxName name of the current mailbox
* @param array $boxArray array for the current mailbox
* @param $imapConnection current imap connection in use
* @return array[0] unseen message string (for display)
* @return array[1] unseen message count
global $boxes, $unseen_type, $color, $unseen_cum;
/* Initialize the return value. */
/* Initialize the counts for this folder. */
/* Collect the counts for this box alone. */
$boxUnseenCount =
$status['UNSEEN'];
if ($boxUnseenCount ===
false) {
$boxMessageCount =
$status['MESSAGES'];
/* Initialize the total counts. */
/* Collect the counts for this boxes subfolders. */
$curBoxLength =
strlen($boxName);
$boxCount =
count($boxes);
for ($i =
0; $i <
$boxCount; ++
$i) {
/* Initialize the counts for this subfolder. */
/* Collect the counts for this subfolder. */
if (($boxName !=
$boxes[$i]['unformatted'])
&&
(substr($boxes[$i]['unformatted'], 0, $curBoxLength) ==
$boxName)
&&
!in_array('noselect', $boxes[$i]['flags'])) {
$subUnseenCount =
$status['UNSEEN'];
$subMessageCount =
$status['MESSAGES'];;
/* Add the counts for this subfolder to the total. */
$totalUnseenCount +=
$subUnseenCount;
$totalMessageCount +=
$subMessageCount;
/* Add the counts for all subfolders to that of the box. */
$boxUnseenCount +=
$totalUnseenCount;
$boxMessageCount +=
$totalMessageCount;
/* And create the magic unseen count string. */
/* Really a lot more then just the unseen count. */
if (($unseen_type ==
1) &&
($boxUnseenCount >
0)) {
$result[0] =
"($boxUnseenCount)";
} else if ($unseen_type ==
2) {
$result[0] =
"($boxUnseenCount/$boxMessageCount)";
$result[0] =
"<font color=\"$color[11]\">$result[0]</font>";
/* Set the unseen count to return to the outside world. */
$result[1] =
$boxUnseenCount;
/* Return our happy result. */
* This simple function checks if a box is another box's parent.
/* Extract the name of the parent of the current box. */
$curparts =
explode($delimiter, $curbox_name);
$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 ------------------------ */
// open a connection on the imap port (143)
$imapConnection =
sqimap_login($username, $key, $imapServerAddress, $imapPort, 10); // the 10 is to hide the output
* Using stristr since older preferences may contain "None" and "none".
if (isset
($left_refresh) &&
($left_refresh !=
'') &&
$xtra =
"\n<meta http-equiv=\"Expires\" content=\"Thu, 01 Dec 1994 16:00:00 GMT\" />\n" .
"<meta http-equiv=\"Pragma\" content=\"no-cache\" />\n".
"<meta http-equiv=\"REFRESH\" content=\"$left_refresh;URL=left_main.php\" />\n";
/* If requested and not yet complete, attempt to autocreate folders. */
if ($auto_create_special &&
!$auto_create_done) {
$autocreate =
array($sent_folder, $trash_folder, $draft_folder);
foreach( $autocreate as $folder ) {
if (($folder !=
'') &&
($folder !=
'none')) {
/* Let the world know that autocreation is complete! Hurrah! */
$auto_create_done =
TRUE;
/* retrieve the mailboxlist. We do this at a later stage again but if
the right_frame loads faster then the second call retrieves a cached
version of the mailboxlist without the newly created folders.
The second parameter forces a non cached mailboxlist return.
echo
"\n<body bgcolor=\"$color[3]\" text=\"$color[6]\" link=\"$color[6]\" vlink=\"$color[6]\" alink=\"$color[6]\">\n";
echo
"\n\n" .
html_tag( 'table', '', 'left', '', 'border="0" cellspacing="0" cellpadding="0" width="99%"' ) .
html_tag( 'table', '', '', '', 'border="0" cellspacing="0" cellpadding="0"' ) .
'<font size="4"><b>'.
_("Folders") .
"</b><br /></font>\n\n";
/* First, display the clock. */
$clk =
date('Y-m-d '.
$hr.
' T', time());
echo
'<small><span style="white-space: nowrap;">'
.
":</span><br /><span style=\"white-space: nowrap;\">$clk</span></small><br />";
/* Next, display the refresh button. */
echo
'<small style="white-space: nowrap;">(<a href="../src/left_main.php" target="left">'.
_("Check mail") .
'</a>)</small></td></tr></table><br />';
/* Lastly, display the folder list. */
if ( $collapse_folders ) {
/* If directed, collapse or uncollapse a folder. */
} else if (isset
($unfold)) {
if (!isset
($boxes)) { // auto_create_done
/* Prepare do do out collapsedness and visibility computation. */
$boxcount =
count($boxes);
/* Compute the collapsedness and visibility of each box. */
while ($curbox <
$boxcount) {
$boxes[$curbox]['visible'] =
TRUE;
for ($i =
0; $i <
count($boxes); $i++
) {
if ( $boxes[$i]['visible'] ) {
$mailbox =
$boxes[$i]['formatted'];
// remove folder_prefix using substr so folders aren't indented unnecessarily
/* Create the prefix for the folder name and link. */
if (isset
($collapse_folders) &&
$collapse_folders &&
$boxes[$i]['parent']) {
$line =
"<span style=\"white-space: nowrap;\"><tt>$prefix</tt>";
/* Add the folder name and link. */
if (! isset
($color[15])) {
if (in_array('noselect', $boxes[$i]['flags'])) {
$line .=
"<font color=\"$color[11]\">";
$line .=
"<font color=\"$color[15]\">";
if (ereg("^( *)([^ ]*)", $mailbox, $regs)) {
/* Put the final touches on our folder line. */
$line .=
"</span><br />\n";
/* Output the line for this folder. */
Documentation generated on Sat, 07 Oct 2006 16:32:10 +0300 by phpDocumentor 1.3.0RC6