Happy New Year
[squirrelmail.git] / src / folders.php
index afa2203292e0b306d47e9eb17c938f3af43328ac..e0aab0643ae44be00259b0451bd3c507723834a3 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * folders.php
  *
@@ -7,12 +6,15 @@
  * scripts which do most of the work. Also handles the Special
  * Folders.
  *
- * @copyright &copy; 1999-2006 The SquirrelMail Project Team
+ * @copyright 1999-2018 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
  */
 
+/** This is the folders page */
+define('PAGE_NAME', 'folders');
+
 /**
  * Include the SquirrelMail initialization file.
  */
@@ -23,22 +25,27 @@ require_once(SM_PATH . 'functions/imap_general.php');
 require_once(SM_PATH . 'functions/folder_manip.php');
 require_once(SM_PATH . 'functions/forms.php');
 
-displayPageHeader($color, 'None');
+displayPageHeader($color);
 
 /* get globals we may need */
 sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION);
 sqgetGlobalVar('smaction', $action, SQ_POST);
+sqgetGlobalVar('smtoken', $submitted_token, SQ_POST, '');
 
 /* end of get globals */
 
-$imapConnection = sqimap_login ($username, false, $imapServerAddress, $imapPort, 0);
+global $imap_stream_options; // in case not defined in config
+$imapConnection = sqimap_login ($username, false, $imapServerAddress, $imapPort, 0, $imap_stream_options);
 
 /* switch to the right function based on what the user selected */
 if ( sqgetGlobalVar('smaction', $action, SQ_POST) ) {
-
     switch ($action)
     {
         case 'create':
+
+            // first, validate security token
+            sm_validate_security_token($submitted_token, -1, TRUE);
+
             sqgetGlobalVar('folder_name',  $folder_name,  SQ_POST);
             sqgetGlobalVar('subfolder',    $subfolder,    SQ_POST);
             sqgetGlobalVar('contain_subs', $contain_subs, SQ_POST);
@@ -53,6 +60,10 @@ if ( sqgetGlobalVar('smaction', $action, SQ_POST) ) {
                 sqgetGlobalVar('old_name',    $old_name, SQ_POST);
                 folders_rename_getname($imapConnection, $delimiter, $old_name);
             } else {
+
+                // first, validate security token
+                sm_validate_security_token($submitted_token, -1, TRUE);
+
                 sqgetGlobalVar('orig',        $orig,     SQ_POST);
                 sqgetGlobalVar('old_name',    $old_name, SQ_POST);
                 folders_rename_do($imapConnection, $delimiter, $orig, $old_name, $new_name);
@@ -65,6 +76,10 @@ if ( sqgetGlobalVar('smaction', $action, SQ_POST) ) {
             }
             sqgetGlobalVar('folder_name',  $folder_name,  SQ_POST);
             if ( sqgetGlobalVar('confirmed', $dummy, SQ_POST) ) {
+
+                // first, validate security token
+                sm_validate_security_token($submitted_token, -1, TRUE);
+
                 folders_delete_do($imapConnection, $delimiter, $folder_name);
                 $td_str =  _("Deleted folder successfully.");
             } else {
@@ -72,23 +87,36 @@ if ( sqgetGlobalVar('smaction', $action, SQ_POST) ) {
             }
             break;
         case 'subscribe':
+
+            // first, validate security token
+            sm_validate_security_token($submitted_token, -1, TRUE);
+
             sqgetGlobalVar('folder_names',  $folder_names,  SQ_POST);
             folders_subscribe($imapConnection, $folder_names);
             $td_str =  _("Subscribed successfully.");
             break;
         case 'unsubscribe':
+
+            // first, validate security token
+            sm_validate_security_token($submitted_token, -1, TRUE);
+
             sqgetGlobalVar('folder_names',  $folder_names,  SQ_POST);
             folders_unsubscribe($imapConnection, $folder_names);
             $td_str =  _("Unsubscribed successfully.");
             break;
         default:
-            // TODO: add hook for plugin action processing.
-            $td_str = '';
+// TODO: this is a new hook for plugin action processing that has not been TESTED.
+            $td_str = do_hook('folder_action', $action);
             break;
     }
 
 }
 
+if (isset($td_str)) {
+    $oTemplate->assign('note', sm_encode_html_special_chars($td_str));
+    $oTemplate->display('note.tpl');
+}
+
 $boxes = sqimap_mailbox_list($imapConnection,true);
 
 /** CREATING FOLDERS **/
@@ -146,11 +174,13 @@ foreach ($boxes as $index => $aBoxData) {
 $rendel_folder_list = sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes, NULL, true);
 
 
-$subbox_option_list = '';
+$subbox_option_list = array();
 
 if ($show_only_subscribed_folders && !$no_list_for_subscribe) {
     // FIXME: fix subscription options when top folder is not subscribed and sub folder is subscribed
+
     // TODO: use checkboxes instead of select options.
+    // DONE Steve Brown 2006-08-08
 
     /** SUBSCRIBE TO FOLDERS **/
     $boxes_all = sqimap_mailbox_list_all ($imapConnection);
@@ -159,34 +189,32 @@ if ($show_only_subscribed_folders && !$no_list_for_subscribe) {
     // so we keep only the unsubscribed ones.
     foreach ($boxes_all as $box_a) {
 
-       $use_folder = true;
-       foreach ( $boxes as $box ) {
-           if ($box_a['unformatted'] == $box['unformatted'] ||
-               $box_a['unformatted-dm'] == $folder_prefix ) {
-               $use_folder = false;
-           }
-       }
-
-       if ($use_folder) {
-           $box_enc  = htmlspecialchars($box_a['unformatted-dm']);
-           $box_disp = htmlspecialchars(imap_utf7_decode_local($box_a['unformatted-disp']));
-           $subbox_option_list .= '<option value="' . $box_enc . '">'.$box_disp."</option>\n";
-       }
+       $use_folder = true;
+       foreach ( $boxes as $box ) {
+           if ($box_a['unformatted'] == $box['unformatted'] ||
+               $box_a['unformatted-dm'] == $folder_prefix ) {
+               $use_folder = false;
+           }
+       }
+    
+       if ($use_folder) {
+           $box_enc  = sm_encode_html_special_chars($box_a['unformatted-dm']);
+           $box_disp = sm_encode_html_special_chars(imap_utf7_decode_local($box_a['unformatted-disp']));
+            $subbox_option_list[] = array( 'Value' => $box_enc, 'Display' => $box_disp);
+       }
     }
 }
 
 sqimap_logout($imapConnection);
 
-$oTemplate->assign('td_str', @$td_str);
-$oTemplate->assign('color', $color);
+$oTemplate->assign('show_subfolders_option', $show_contain_subfolders_option);
+$oTemplate->assign('show_only_subscribed_folders', $show_only_subscribed_folders==1);
+$oTemplate->assign('no_list_for_subscribe', $no_list_for_subscribe);
+
 $oTemplate->assign('mbx_option_list', $mbx_option_list);
-$oTemplate->assign('show_contain_subfolders_option', $show_contain_subfolders_option);
-$oTemplate->assign('show_only_subscribed_folders', $show_only_subscribed_folders);
 $oTemplate->assign('rendel_folder_list', $rendel_folder_list);
 $oTemplate->assign('subbox_option_list', $subbox_option_list);
-$oTemplate->assign('no_list_for_subscribe', $no_list_for_subscribe);
 
 $oTemplate->display('folder_manip.tpl');
 
 $oTemplate->display('footer.tpl');
-