Fixing variable not parsed through PHP. Thanks to Scott Venier for the patch.
[squirrelmail.git] / templates / default / left_main.tpl
index 242e7780684d317c75dbce81385b33cd3c41a537..27fada32e99638b8a2c02ae5363c503a25cf0d49 100644 (file)
@@ -2,38 +2,32 @@
 /**
  * left_main.tpl
  *
- * Basic template to the left main window.  The following variables are
- * avilable in this template:
+ * Basic template to the left main window.  
+ * 
+ * The following variables are avilable in this template:
  *      $clock           - formatted string containing last refresh
- *      $mailbox_listing - string containing HTML to display default mailbox
- *                         tree
- *      $location_of_bar - string "left" or "right" indicating where the frame
- *                         is located.  Currently only used in
- *                         left_main_advanced.tpl
- *      $left_size       - width of left column in pixels. Currently
- *                         only used in left_main_advanced. tpl
- *      $imapConnection  - IMAP connection handle. Needed to allow plugins to
- *                         read the mailbox.
- *      $icon_theme_path - Path to the desired icon theme.  If the user/admin
- *                         has disabled icons, this will be NULL.
- *
- *      $unread_notification_enabled - Boolean TRUE if the user wants to see
- *                         unread message count on mailboxes
- *      $unread_notification_cummulative - Boolean TRUE if the user has enabled
- *                         cummulative message counts.
- *      $unread_notification_allFolders - Boolean TRUE if the user wants to see
- *                         unread message count on ALL folders or just the
- *                         mailbox.
- *      $unread_notification_displayTotal - Boolean TRUE if the user wants to
- *                         see the total number of messages in addition to the
- *                         unread message count.
- *      $collapsable_folders_enabled - Boolean TRUE if the user has enabled
- *                         collapsable folders.
- *      $use_special_folder_color - Boolean TRUE if the use has chosen to tag
- *                         "Special" folders in a different color.
- *      $message_recycling_enabled - Boolean TRUE if messages that get deleted
- *                         go to the Trash folder.  FALSE if they are
- *                         permanently deleted.
+ *      $settings        - Array containing user perferences needed by this
+ *                         template.  Indexes are as follows:
+ *          $settings['templateID'] - contains the ID of the current
+ *                         template set.  This may be needed by third
+ *                         party packages that don't integrate easily.
+ *          $settings['unreadNotificationEnabled'] - Boolean TRUE if the user
+ *                         wants to see unread message count on mailboxes
+ *          $settings['unreadNotificationCummulative'] - Boolean TRUE if the
+ *                         user has enabled cummulative message counts.
+ *          $settings['unreadNotificationAllFolders'] - Boolean TRUE if the
+ *                         user wants to see unread message count on ALL
+ *                         folders or just the Inbox.
+ *          $settings['unreadNotificationDisplayTotal'] - Boolean TRUE if the
+ *                         user wants to see the total number of messages in
+ *                         addition to the unread message count.
+ *          $settings['collapsableFoldersEnabled'] - Boolean TRUE if the user
+ *                         has enabled collapsable folders.
+ *          $settings['useSpecialFolderColor'] - Boolean TRUE if the use has
+ *                         chosen to tag "Special" folders in a different color
+ *          $settings['messageRecyclingEnabled'] - Boolean TRUE if messages
+ *                         that get deleted go to the Trash folder.  FALSE if
+ *                          they are permanently deleted.
  *
  *      $mailboxes       - Associative array of current mailbox structure.
  *                         Provided so template authors know what they have to
  *                                mailbox.  Elements are:
  *                                  'Target' = target frame for link
  *                                  'URL'    = target URL for link
- *          $a['IsRecent']      = boolean TRUE if mailbox is tagged "recent"
- *          $a['IsSpecial']     = boolean TRUE if mailbox is tagged "special"
- *          $a['IsRoot']        = boolean TRUE if mailbox is the root mailbox
- *          $a['IsNoSelect']    = boolean TRUE if mailbox is tagged "noselect"
- *          $a['IsInbox']       = boolean TRUE if mailbox is the Inbox.
- *          $a['IsSent']        = boolean TRUE if mailbox is the Sent box
- *          $a['IsTrash']       = boolean TRUE if mailbox is the Trash box
- *          $a['IsDraft']       = boolean TRUE if mailbox is the Draft box
- *          $a['IsNoInferiors'] = boolean TRUE of mailbox is tagged "no
- *                                inferiors"  
- *          $a['IsCollapsed']   = boolean TRUE if the mailbox is currently
- *                                collapsed 
- * 
- *          $a['CollapseLink']  = array containg elements needed to 
- *                                expand/collapse the mailbox.  Elements are:
- *                                      'Target' = target frame for link
- *                                      'URL'    = target URL for link
- *                                      'Icon'   = the icon to use, based on
- *                                                 user prefs
+ *          $a['IsRecent']      = boolean TRUE if the mailbox is tagged "recent"
+ *          $a['IsSpecial']     = boolean TRUE if the mailbox is tagged "special"
+ *          $a['IsRoot']        = boolean TRUE if the mailbox is the root mailbox
+ *          $a['IsNoSelect']    = boolean TRUE if the mailbox is tagged "noselect"
+ *          $a['IsCollapsed']   = boolean TRUE if the mailbox is currently collapsed
+ *          $a['CollapseLink']  = array containg elements needed to expand/collapse
+ *                                the mailbox.  Elements are:
+ *                                  'Target' = target frame for link
+ *                                  'URL'    = target URL for link
+ *                                  'Icon'   = the icon to use, based on user prefs
  *          $a['ChildBoxes']    = array containing this same data structure for
- *                                each child folder/mailbox.
- *          $a ['CummulativeMessageCount'] = integer of total messages in all
- *                                folders in this mailbox, exlcuding trash
- *                                folders.
- *          $a ['CummulativeUnreadCount'] = integer of total unseen messages
- *                                in all folders in this mailbox, excluding
- *                                trash folders.
+ *                                each child folder/mailbox of the current
+ *                                mailbox.
+ *          $a['CummulativeMessageCount']   = integer of total messages in all
+ *                                            folders in this mailbox, exlcuding
+ *                                            trash folders.
+ *          $a['CummulativeUnreadCount']    = integer of total unseen messages
+ *                                            in all folders in this mailbox,
+ *                                            excluding trash folders.
  *
  * @copyright © 1999-2006 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
  * @subpackage templates
+ * @author Steve Brown
  */
 
-// include required files
-include_once(SM_PATH . 'templates/util_global.php');
 
 /*
  * Recursively parse the mailbox structure to build the navigation tree.
  *
  * @since 1.5.2
  */
-function buildMailboxTree ($box, $settings, $indent_factor=0) {
+function buildMailboxTree ($box, $settings, $icon_theme_path, $indent_factor=0) {
     // stop condition
     if (empty($box)) {
         return '';
@@ -112,7 +97,7 @@ function buildMailboxTree ($box, $settings, $indent_factor=0) {
                             $box['CummulativeUnreadCount'] :
                             $box['UnreadCount'];
             
-            if ($unseen > 0) {
+            if (!$box['IsNoSelect'] && ($unseen > 0 || $settings['unreadNotificationDisplayTotal'])) {
                 $unseen_str = $unseen;
     
                 // Add the total messages if desired
@@ -152,25 +137,25 @@ function buildMailboxTree ($box, $settings, $indent_factor=0) {
      * image based on whatever logic they see fit here.
      */
     $folder_icon = '';
-    if (!is_null($settings['iconThemePath'])) {
+    if (!is_null($icon_theme_path)) {
         switch (true) {
             case $box['IsInbox']:
-                $folder_icon = getIcon($settings['iconThemePath'], 'inbox.png', '', $box['MailboxName']);
+                $folder_icon = getIcon($icon_theme_path, 'inbox.png', '', $box['MailboxName']);
                 break; 
             case $box['IsSent']:
-                $folder_icon = getIcon($settings['iconThemePath'], 'senti.png', '', $box['MailboxName']);
+                $folder_icon = getIcon($icon_theme_path, 'senti.png', '', $box['MailboxName']);
                 break; 
             case $box['IsTrash']:
-                $folder_icon = getIcon($settings['iconThemePath'], 'delitem.png', '', $box['MailboxName']);
+                $folder_icon = getIcon($icon_theme_path, 'delitem.png', '', $box['MailboxName']);
                 break; 
             case $box['IsDraft']:
-                $folder_icon = getIcon($settings['iconThemePath'], 'draft.png', '', $box['MailboxName']);
+                $folder_icon = getIcon($icon_theme_path, 'draft.png', '', $box['MailboxName']);
                 break; 
             case $box['IsNoInferiors']:
-                $folder_icon = getIcon($settings['iconThemePath'], 'folder_noinf.png', '', $box['MailboxName']);
+                $folder_icon = getIcon($icon_theme_path, 'folder_noinf.png', '', $box['MailboxName']);
                 break;
             default: 
-                $folder_icon = getIcon($settings['iconThemePath'], 'folder.png', '', $box['MailboxName']);
+                $folder_icon = getIcon($icon_theme_path, 'folder.png', '', $box['MailboxName']);
                 break;
         }
         $folder_icon .= ' ';
@@ -197,7 +182,7 @@ function buildMailboxTree ($box, $settings, $indent_factor=0) {
         $end .= '</a>';
 
         // Print unread info
-        if ($box['UnreadCount'] > 0) {
+        if ($box['MessageCount'] > 0 || count($box['ChildBoxes'])) {
             if (!empty($unseen_str)) {
                 $end .= '&nbsp;<small>('.$unseen_str.')</small>';
             }
@@ -234,10 +219,21 @@ function buildMailboxTree ($box, $settings, $indent_factor=0) {
         $spanend = '</span>';
     }
 
+/********
+ * Pulling imapConnection due to segfaults that cannot be tracked down.  Best
+ * we can determine, it's some combination of this var and >= 4 plugins enabled.
+ * No further clue from anyone.
+ ********
+ * Update: syntax of this hook call changed a bit, so if the error is so anomalous,
+ * it might be worth trying this again to see if it is still segfaulting
+ ********
+    
     // let plugins fiddle with end of line
+// FIXME: no hooks in templates! Although note that I'm not sure we can avoid it here because the context of which folder we are displaying is important to the hook, unless we preemptively iterate through all folders and collect the output from the hook call for that and give that to the template.... seems like overkill; I say this hook remains
     $end .= concat_hook_function('left_main_after_each_folder',
-            array(isset($numMessages) ? $numMessages : '',
-            $box['MailboxFullName'], $settings['imapConnection']));
+            $temp=array(isset($numMessages) ? &$numMessages : '',
+            &$box['MailboxFullName'], &$settings['imapConnection']));
+*/
 
     $end .= '</span>';
 
@@ -254,7 +250,7 @@ function buildMailboxTree ($box, $settings, $indent_factor=0) {
 
     if (!$box['IsCollapsed'] || $box['IsRoot']) {
         for ($i = 0; $i<sizeof($box['ChildBoxes']); $i++) {
-            $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $indent_factor);
+            $out .= buildMailboxTree($box['ChildBoxes'][$i], $settings, $icon_theme_path, $indent_factor);
         }
     }
 
@@ -264,25 +260,10 @@ function buildMailboxTree ($box, $settings, $indent_factor=0) {
 // Retrieve the template vars
 extract($t);
 
-/*
- * Build an array to pass user prefs to the function that builds the tree in
- * order to avoid using globals, which are dirty, filthy things in templates. :)
- */
-$settings = array();
-$settings['imapConnection'] = $imapConnection;
-$settings['iconThemePath'] = $icon_theme_path;
-$settings['unreadNotificationEnabled'] = $unread_notification_enabled;
-$settings['unreadNotificationAllFolders'] = $unread_notification_allFolders;
-$settings['unreadNotificationDisplayTotal'] = $unread_notification_displayTotal;
-$settings['unreadNotificationCummulative'] = $unread_notification_cummulative;
-$settings['useSpecialFolderColor'] = $use_special_folder_color;
-$settings['messageRecyclingEnabled'] = $message_recycling_enabled;
-$settings['collapsableFoldersEnabled'] = $collapsable_folders_enabled;
-
 ?>
 <body class="sqm_leftMain">
 <div class="sqm_leftMain">
-<?php do_hook('left_main_before'); ?>
+<?php if (!empty($plugin_output['left_main_before'])) echo $plugin_output['left_main_before']; ?>
 <table class="sqm_wrapperTable" cellspacing="0">
  <tr>
   <td>
@@ -296,9 +277,9 @@ $settings['collapsableFoldersEnabled'] = $collapsable_folders_enabled;
     </tr>
    </table>
    <br />
-   <?php echo buildMailboxTree($mailboxes, $settings); ?>
-  </tr>
- </td>
-</table>   
-<?php do_hook('left_main_after'); ?>
-</div>
\ No newline at end of file
+   <?php echo buildMailboxTree($mailboxes, $settings, $icon_theme_path); ?>
+  </td>
+ </tr>
+</table>
+<?php if (!empty($plugin_output['left_main_after'])) echo $plugin_output['left_main_after']; ?>
+</div>