[Svn] r2553 - trunk/roundcubemail/plugins/managesieve

trac at roundcube.net trac at roundcube.net
Wed May 27 20:45:55 CEST 2009


Author: alec
Date: 2009-05-27 13:45:55 -0500 (Wed, 27 May 2009)
New Revision: 2553

Modified:
   trunk/roundcubemail/plugins/managesieve/Changelog
   trunk/roundcubemail/plugins/managesieve/managesieve.php
Log:
- Added support for headers lists (coma-separated) in rules


Modified: trunk/roundcubemail/plugins/managesieve/Changelog
===================================================================
--- trunk/roundcubemail/plugins/managesieve/Changelog	2009-05-27 16:13:53 UTC (rev 2552)
+++ trunk/roundcubemail/plugins/managesieve/Changelog	2009-05-27 18:45:55 UTC (rev 2553)
@@ -1,59 +1,65 @@
-*  version 1.0 [2009-05-21]
+* version 1.1 [2009-05-27]
 -----------------------------------------------------------    
-Rewritten using plugin API
-Added hu_HU localization (Tamas Tevesz)
+- Added new icons
+- Added support for headers lists (coma-separated) in rules
+- Added de_CH localization
 
-*  version beta7 (svn-r2300) [2009-03-01]
+* version 1.0 [2009-05-21]
 -----------------------------------------------------------    
-Added SquirrelMail script auto-import (Jonathan Ernst)
-Added 'vacation' support (Jonathan Ernst & alec)
-Added 'stop' support (Jonathan Ernst)
-Added option for extensions disabling (Jonathan Ernst & alec)
-Added fi_FI, nl_NL, bg_BG localization
-Small style fixes
+- Rewritten using plugin API
+- Added hu_HU localization (Tamas Tevesz)
 
+* version beta7 (svn-r2300) [2009-03-01]
+-----------------------------------------------------------    
+- Added SquirrelMail script auto-import (Jonathan Ernst)
+- Added 'vacation' support (Jonathan Ernst & alec)
+- Added 'stop' support (Jonathan Ernst)
+- Added option for extensions disabling (Jonathan Ernst & alec)
+- Added fi_FI, nl_NL, bg_BG localization
+- Small style fixes
+
 * version 0.2-stable1 (svn-r2205) [2009-01-03]
 -----------------------------------------------------------    
-Fix moving down filter row
-Fixes for compressed js files in stable release package
-Created patch for svn version r2205
+- Fix moving down filter row
+- Fixes for compressed js files in stable release package
+- Created patch for svn version r2205
 
 * version 0.2-stable [2008-12-31]
 -----------------------------------------------------------    
-Added ru_RU, fr_FR, zh_CN translation
-Fixes for Roundcube 0.2-stable
+- Added ru_RU, fr_FR, zh_CN translation
+- Fixes for Roundcube 0.2-stable
 
 * version rc0.2beta [2008-09-21]
 -----------------------------------------------------------    
-Small css fixes for IE
-Fixes for Roundcube 0.2-beta
+- Small css fixes for IE
+- Fixes for Roundcube 0.2-beta
 
 * version beta6 [2008-08-08]
 -----------------------------------------------------------    
-Added de_DE translation
-Fix for Roundcube r1634
+- Added de_DE translation
+- Fix for Roundcube r1634
 
 * version beta5 [2008-06-10]
 -----------------------------------------------------------    
-Fixed 'exists' operators
-Fixed 'not*' operators for custom headers
-Fixed filters deleting
+- Fixed 'exists' operators
+- Fixed 'not*' operators for custom headers
+- Fixed filters deleting
 
 * version beta4 [2008-06-09]
 -----------------------------------------------------------    
-Fix for Roundcube r1490
+- Fix for Roundcube r1490
 
 * version beta3 [2008-05-22]
 -----------------------------------------------------------    
-Fixed textarea error class setting
-Added pagetitle setting
-Added option 'managesieve_replace_delimiter'
-Fixed errors on IE (still need some css fixes)
+- Fixed textarea error class setting
+- Added pagetitle setting
+- Added option 'managesieve_replace_delimiter'
+- Fixed errors on IE (still need some css fixes)
     
 * version beta2 [2008-05-20]
 -----------------------------------------------------------    
-Use 'if' only for first filter and 'elsif' for the rest
+- Use 'if' only for first filter and 'elsif' for the rest
 
 * version beta1 [2008-05-15]
 -----------------------------------------------------------    
-Initial version for Roundcube r1388.
+- Initial version for Roundcube r1388.

Modified: trunk/roundcubemail/plugins/managesieve/managesieve.php
===================================================================
--- trunk/roundcubemail/plugins/managesieve/managesieve.php	2009-05-27 16:13:53 UTC (rev 2552)
+++ trunk/roundcubemail/plugins/managesieve/managesieve.php	2009-05-27 18:45:55 UTC (rev 2553)
@@ -7,7 +7,7 @@
  * It's clickable interface which operates on text scripts and communicates
  * with server using managesieve protocol. Adds Filters tab in Settings.
  *
- * @version 1.0
+ * @version 1.1
  * @author Aleksander 'A.L.E.C' Machniak <alec at alec.pl>
  *
  * Configuration (main.inc.php):
@@ -308,7 +308,7 @@
 		$this->errors['tests'][$i]['sizetarget'] = $this->gettext('wrongformat');
 	      break;
 	    case '...':
-              $cust_header = $this->strip_value($cust_headers[$idx]);
+              $cust_header = $headers = $this->strip_value($cust_headers[$idx]);
 
               if(preg_match('/^not/', $op))
 		$this->form['tests'][$i]['not'] = true;
@@ -316,10 +316,22 @@
 
               if ($cust_header == '')
     		$this->errors['tests'][$i]['header'] = $this->gettext('cannotbeempty');
-              elseif (!preg_match('/^[a-z0-9-]+$/i', $cust_header))
-    		$this->errors['tests'][$i]['header'] = $this->gettext('forbiddenchars');
-
-              if ($type == 'exists')
+              else {
+	        $headers = preg_split('/[\s,]+/', $cust_header, -1, PREG_SPLIT_NO_EMPTY);
+	        
+		if (!count($headers))
+    		  $this->errors['tests'][$i]['header'] = $this->gettext('cannotbeempty');
+		else {
+		  foreach ($headers as $hr)
+		    if (!preg_match('/^[a-z0-9-]+$/i', $hr))
+    		      $this->errors['tests'][$i]['header'] = $this->gettext('forbiddenchars');
+	        }
+	      }
+	      
+	      if (empty($this->errors['tests'][$i]['header']))
+		$cust_header = $headers;
+              
+	      if ($type == 'exists')
     	      {
 		$this->form['tests'][$i]['test'] = 'exists';
     		$this->form['tests'][$i]['arg'] = $cust_header;
@@ -599,9 +611,11 @@
 
     // TODO: list arguments
 
-    if ((isset($rule['test']) && $rule['test'] == 'header') && in_array($rule['arg1'], $this->headers))
+    if ((isset($rule['test']) && $rule['test'] == 'header')
+	&& !is_array($rule['arg1']) && in_array($rule['arg1'], $this->headers))
       $out .= $select_header->show($rule['arg1']);
-    elseif ((isset($rule['test']) && $rule['test'] == 'exists') && in_array($rule['arg'], $this->headers))
+    elseif ((isset($rule['test']) && $rule['test'] == 'exists')
+	&& !is_array($rule['arg']) && in_array($rule['arg'], $this->headers))
       $out .= $select_header->show($rule['arg']);
     elseif (isset($rule['test']) && $rule['test'] == 'size')
       $out .= $select_header->show('size');
@@ -612,10 +626,12 @@
 
     $out .= '</td><td class="rowtargets">';
 
-    if ((isset($rule['test']) && $rule['test'] == 'header') && !in_array($rule['arg1'], $this->headers))
-      $custom = $rule['arg1'];
-    elseif ((isset($rule['test']) && $rule['test'] == 'exists') && !in_array($rule['arg'], $this->headers))
-      $custom = $rule['arg'];
+    if ((isset($rule['test']) && $rule['test'] == 'header')
+	&& (is_array($rule['arg1']) || !in_array($rule['arg1'], $this->headers)))
+      $custom = is_array($rule['arg1']) ? implode(', ', $rule['arg1']) : $rule['arg1'];
+    elseif ((isset($rule['test']) && $rule['test'] == 'exists')
+	&& (is_array($rule['arg']) || !in_array($rule['arg'], $this->headers)))
+      $custom = is_array($rule['arg']) ? implode(', ', $rule['arg']) : $rule['arg'];
     
     $out .= '<div id="custom_header' .$id. '" style="display:' .(isset($custom) ? 'inline' : 'none'). '">
 	<input type="text" name="_custom_header[]" '. $this->error_class($id, 'test', 'header')

_______________________________________________
http://lists.roundcube.net/mailman/listinfo/svn



More information about the Svn mailing list