Fixed broken RFC1918 reference in contrib/.htaccess and doc/.htaccess (#2798839).
[squirrelmail.git] / plugins / filters / options.php
index 40bff9c12b9d2fbb02fa293851a5db58b8b98fb1..39b47beec40b9b234a0b4f15081b660584e40a41 100644 (file)
@@ -1,53 +1,26 @@
 <?php
+
 /**
  * Message and Spam Filter Plugin - Filtering Options
  *
- * This plugin filters your inbox into different folders based upon given
- * criteria. It is most useful for people who are subscibed to mailing lists
- * to help organize their messages.  The argument stands that filtering is
- * not the place of the client, which is why this has been made a plugin for
- * SquirrelMail.  You may be better off using products such as Sieve or
- * Procmail to do your filtering so it happens even when SquirrelMail isn't
- * running.
- *
- * If you need help with this, or see improvements that can be made, please
- * email me directly at the address above.  I definately welcome suggestions
- * and comments.  This plugin, as is the case with all SquirrelMail plugins,
- * is not directly supported by the developers.  Please come to me off the
- * mailing list if you have trouble with it.
- *
- * Also view plugins/README.plugins for more information.
- *
- * @version $Id$
- * @copyright (c) 1999-2004 The SquirrelMail Project Team
+ * @copyright &copy; 1999-2009 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
  * @package plugins
  * @subpackage filters
  */
 
 /**
- * Path for SquirrelMail required files.
- * @ignore
+ * Include the SquirrelMail initialization file.
  */
-define('SM_PATH','../../');
-
-/* SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/imap.php');
-require_once(SM_PATH . 'functions/imap_mailbox.php');
-require_once(SM_PATH . 'include/load_prefs.php');
-require_once(SM_PATH . 'functions/forms.php');
-require_once(SM_PATH . 'plugins/filters/filters.php');
-
-global $AllowSpamFilters;
+require('../../include/init.php');
+include_once(SM_PATH . 'functions/imap_general.php');
+include_once(SM_PATH . 'functions/forms.php');
+include_once(SM_PATH . 'plugins/filters/filters.php');
 
-displayPageHeader($color, 'None');
+displayPageHeader($color);
 
 /* get globals */
-sqgetGlobalVar('username', $username, SQ_SESSION);
-sqgetGlobalVar('key', $key, SQ_COOKIE);
-sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION);
 sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION);
 
 sqgetGlobalVar('theid', $theid);
@@ -79,16 +52,23 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
     }
 
     if ($complete_post) {
-        $filter_what = str_replace(',', ' ', $filter_what);
+        $filter_what = str_replace(',', '###COMMA###', $filter_what);
         $filter_what = str_replace("\\\\", "\\", $filter_what);
         $filter_what = str_replace("\\\"", '"', $filter_what);
         $filter_what = str_replace('"', '&quot;', $filter_what);
 
+        if (empty($filter_what)) {
+            do_error(_("WARNING! You must enter something to search for."));
+            $action = 'edit';
+        }
+
         if (($filter_where == 'Header') && (strchr($filter_what,':') == '')) {
             do_error(_("WARNING! Header filters should be of the format &quot;Header: value&quot;"));
             $action = 'edit';
         }
+        if ($action != 'edit') {
         setPref($data_dir, $username, 'filter'.$theid, $filter_where.','.$filter_what.','.$filter_folder);
+        }
         $filters[$theid]['where'] = $filter_where;
         $filters[$theid]['what'] = $filter_what;
         $filters[$theid]['folder'] = $filter_folder;
@@ -102,7 +82,7 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
 } elseif (sqgetGlobalVar('user_submit',$user_submit,SQ_POST)) {
     sqgetGlobalVar('filters_user_scan_set',$filters_user_scan_set,SQ_POST);
     setPref($data_dir, $username, 'filters_user_scan', $filters_user_scan_set);
-    echo '<br /><center><b>'._("Saved Scan type")."</b></center>\n";
+    echo '<br /><div style="text-align: center;"><b>'._("Saved Scan type")."</b></div>\n";
 }
 
    $filters = load_filters();
@@ -111,34 +91,32 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
    echo html_tag( 'table',
             html_tag( 'tr',
                 html_tag( 'td',
-                    '<center><b>' . _("Options") . ' - ' . _("Message Filtering") . '</b></center>' ,
+                    '<div style="text-align: center;"><b>' . _("Options") . ' - ' . _("Message Filtering") . '</b></div>' ,
                     'left', $color[0]
                 )
             ),
             'center', '', 'width="95%" border="0" cellpadding="2" cellspacing="0"'
         ) .
         '<br /><form method="post" action="options.php">'.
-        '<center>'.
-        html_tag( 'table', '', '', '', 'border="0" cellpadding="2" cellspacing="0"' ) .
+        html_tag( 'table', '', 'center', '', 'border="0" cellpadding="2" cellspacing="0"' ) .
             html_tag( 'tr' ) .
-                html_tag( 'th', _("What to Scan:"), 'right', '', 'nowrap' ) .
+                html_tag( 'th', _("What to Scan:"), 'right', '', 'style="white-space: nowrap;"' ) .
                 html_tag( 'td', '', 'left' ) .
             '<select name="filters_user_scan_set">'.
             '<option value=""';
     if ($filters_user_scan == '') {
-        echo ' selected';
+        echo ' selected="selected"';
     }
     echo '>' . _("All messages") . '</option>'.
             '<option value="new"';
     if ($filters_user_scan == 'new') {
-        echo ' selected';
+        echo ' selected="selected"';
     }
     echo '>' . _("Only unread messages") . '</option>' .
             '</select>'.
         '</td>'.
         html_tag( 'td', '<input type="submit" name="user_submit" value="' . _("Save") . '" />', 'left' ) .
         '</table>'.
-        '</center>'.
         '</form>'.
 
         html_tag( 'div', '[<a href="options.php?action=add">' . _("New") .
@@ -147,8 +125,15 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
 
     if (isset($action) && ($action == 'add' || $action == 'edit')) {
 
-        $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
+        $imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0);
         $boxes = sqimap_mailbox_list($imapConnection);
+
+        for ($a = 0, $cnt = count($boxes); $a < $cnt; $a++) {
+            if (strtolower($boxes[$a]['formatted']) == 'inbox') {
+                unset($boxes[$a]);
+            }
+        }
+
         sqimap_logout($imapConnection);
         if ( !isset($theid) ) {
             $theid = count($filters);
@@ -163,23 +148,29 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
 
         $L = isset($filters[$theid]['where']);
 
-        $sel = (($L && $filters[$theid]['where'] == 'From')?'selected':'');
-        echo "<option value=\"From\" $sel>" . _("From") . '</option>';
+        $sel = (($L && $filters[$theid]['where'] == 'From')?' selected="selected"':'');
+        echo "<option value=\"From\"$sel>" . _("From") . '</option>';
+
+        $sel = (($L && $filters[$theid]['where'] == 'To')?' selected="selected"':'');
+        echo "<option value=\"To\"$sel>" . _("To") . '</option>';
 
-        $sel = (($L && $filters[$theid]['where'] == 'To')?'selected':'');
-        echo "<option value=\"To\" $sel>" . _("To") . '</option>';
+        $sel = (($L && $filters[$theid]['where'] == 'Cc')?' selected="selected"':'');
+        echo "<option value=\"Cc\"$sel>" . _("Cc") . '</option>';
 
-        $sel = (($L && $filters[$theid]['where'] == 'Cc')?'selected':'');
-        echo "<option value=\"Cc\" $sel>" . _("Cc") . '</option>';
+        $sel = (($L && $filters[$theid]['where'] == 'To or Cc')?' selected="selected"':'');
+        echo "<option value=\"To or Cc\"$sel>" . _("To or Cc") . '</option>';
 
-        $sel = (($L && $filters[$theid]['where'] == 'To or Cc')?'selected':'');
-        echo "<option value=\"To or Cc\" $sel>" . _("To or Cc") . '</option>';
+        $sel = (($L && $filters[$theid]['where'] == 'Subject')?' selected="selected"':'');
+        echo "<option value=\"Subject\"$sel>" . _("Subject") . '</option>';
 
-        $sel = (($L && $filters[$theid]['where'] == 'Subject')?'selected':'');
-        echo "<option value=\"Subject\" $sel>" . _("Subject") . '</option>';
+        $sel = (($L && $filters[$theid]['where'] == 'Message Body')?' selected="selected"':'');
+        echo "<option value=\"Message Body\"$sel>" . _("Message Body") . '</option>';
 
-        $sel = (($L && $filters[$theid]['where'] == 'Header')?'selected':'');
-        echo "<option value=\"Header\" $sel>" . _("Header") . '</option>';
+        $sel = (($L && $filters[$theid]['where'] == 'Header and Body')?' selected="selected"':'');
+        echo "<option value=\"Header and Body\"$sel>" . _("Header and Body") . '</option>';
+
+        $sel = (($L && $filters[$theid]['where'] == 'Header')?' selected="selected"':'');
+        echo "<option value=\"Header\"$sel>" . _("Header") . '</option>';
 
         echo         '</select>'.
                 '</td>'.
@@ -189,7 +180,7 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
                 html_tag( 'td', '', 'left' ) .
                     '<input type="text" size="32" name="filter_what" value="';
         if (isset($filters[$theid]['what'])) {
-            echo $filters[$theid]['what'];
+            echo htmlspecialchars($filters[$theid]['what']);
         }
         echo '" />'.
                 '</td>'.
@@ -203,8 +194,8 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
         if ( isset($filters[$theid]['folder']) )
           $selected = array(strtolower($filters[$theid]['folder']));
         echo sqimap_mailbox_option_list(0, $selected, 0, $boxes);
-        echo         '</tt>'.
-                    '</select>'.
+        echo        '</select>'.
+                    '</tt>'.
                 '</td>'.
             '</tr>'.
             '</table>'.
@@ -215,6 +206,7 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
 
     }
 
+if (count($filters)) {
     echo html_tag( 'table', '', 'center', '', 'border="0" cellpadding="3" cellspacing="0"' );
 
     for ($i=0, $num = count($filters); $i < $num; $i++) {
@@ -251,15 +243,15 @@ if (sqgetGlobalVar('filter_submit',$filter_submit,SQ_POST)) {
         printf( _("If %s contains %s then move to %s"),
             '<b>'.$filters[$i]['where'].'</b>',
             '<b>'.$filters[$i]['what'].'</b>',
-            '<b>'.imap_utf7_decode_local($fdr).'</b>');
+            '<b>'.htmlspecialchars(imap_utf7_decode_local($fdr)).'</b>');
         echo '</td></tr>';
 
     }
-    echo '</table>'.
-        html_tag( 'table',
+    echo '</table>';
+}
+    echo html_tag( 'table',
             html_tag( 'tr',
                 html_tag( 'td', '&nbsp;', 'left' )
             ) ,
         'center', '', 'width="80%" border="0" cellpadding="2" cellspacing="0"' );
     echo '</body></html>';
-?>