gunnar: server/kolab-webadmin/kolab-webadmin/lib/KolabAdmin/Sieve Script.php, 1.1, 1.2

cvs at kolab.org cvs at kolab.org
Wed Mar 31 22:21:39 CEST 2010


Author: gunnar

Update of /kolabrepository/server/kolab-webadmin/kolab-webadmin/lib/KolabAdmin/Sieve
In directory doto:/tmp/cvs-serv15533/kolab-webadmin/lib/KolabAdmin/Sieve

Modified Files:
	Script.php 
Log Message:
Import the sieve utility segment from the patch in kolab/issue1446 (Webinterface for setting vacation, email-delivery and forwarding (rt#5033)). Writing/reparsing does not yet work and the script generation may produce broken sieve scripts. We do not yet use this in the front end though and this way we don't throw away information from the patch.

Index: Script.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/lib/KolabAdmin/Sieve/Script.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- Script.php	31 Mar 2010 19:55:10 -0000	1.1
+++ Script.php	31 Mar 2010 20:21:37 -0000	1.2
@@ -92,10 +92,58 @@
   }
 
   /*static*/ function getKeepOnServer( $script ) {
-    return ereg('"; keep;', $script, $regs );    
+    return ereg('"; keep;', $script, $regs ) > 0;
   }
 
-  function createScript( $scriptname ) {
-    // TODO
+  /*static*/ function getScriptInfo($script) {
+	return array('maildomain'        => KolabAdmin_Sieve_Script::getMailDomain($script),
+				 'vacationaddresses' => KolabAdmin_Sieve_Script::getVacationAddresses($script),
+				 'days'              => KolabAdmin_Sieve_Script::getVacationDays($script),
+				 'reacttospam'       => KolabAdmin_Sieve_Script::getReactToSpam($script),
+				 'vacationtext'      => KolabAdmin_Sieve_Script::getVacationText($script),
+				 'vacationenabled'   => KolabAdmin_Sieve_Script::isVacationEnabled($script),
+				 'deliveryfolder'    => KolabAdmin_Sieve_Script::getDeliverFolder($script),
+				 'deliveryenabled'   => KolabAdmin_Sieve_Script::isDeliveryEnabled($script));
+  }
+
+  /*static*/ function isDeliveryEnabled($script) {
+	return ereg('## delivery enabled', $script, $regs )>0;
+  }
+
+  /*static*/ function isVacationEnabled($script) {
+	return ereg('## vacation enabled', $script, $regs )>0;
+  }
+  
+  /*static*/ function createScript($scriptinfo) {
+	$tests = array();
+	if( $scriptinfo['vacationenabled'] ) {
+	  $tests[] = "## vacation enabled\r\ntrue";
+	} else {
+	  $tests[] = "## vacation disabled\r\nnot true";
+	}
+
+	if(!empty($scriptinfo['maildomain'])) {
+	  $tests[] = "address :domain :contains \"From\" \"".$scriptinfo['maildomain']."\"";
+	}
+	if($scriptinfo['reacttospam']) {
+	  $tests[] = "not header :contains \"X-Spam-Flag\" \"YES\"";
+	}
+	$script =
+	  "require \"vacation\";\r\n\r\n".
+	  "require \"fileinto\";\r\n\r\n".
+	  "if allof (".join(",\r\n",$tests).") {\r\n".
+	  "  vacation :addresses [ \"".join('", "', $scriptinfo['vacationaddresses'] )."\" ] :days ".
+	  $scriptinfo['days']." text:\r\n".
+	  KolabAdmin_Sieve_Script::dotstuff(trim($scriptinfo['vacationtext']))."\r\n.\r\n;\r\n}\r\n";
+	if($scriptinfo['deliveryfolder']) {
+	  if($scriptinfo['deliveryenabled']) {
+		$script .= "if allof (true, ## delivery enabled\r\n";
+	  } else {
+		$script .= "if allof (not true, ## delivery disabled\r\n";
+	  }
+	  $script .= "header :contains [\"X-Kolab-Scheduling-Message\"] [\"FALSE\"]) {\r\nfileinto \"INBOX/".
+		$scriptinfo['deliveryfolder']."\";\r\n}\r\n";
+	}
+	return $script;
   }
 };





More information about the commits mailing list