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