summaryrefslogtreecommitdiff
path: root/plugins/sieverules/importFilters/avelsieve.php
diff options
context:
space:
mode:
authorHugues Hiegel <hugues@hiegel.fr>2013-09-12 11:35:26 +0200
committerHugues Hiegel <root@paranoid>2013-11-08 17:40:16 +0100
commit31de4bc5ebf9556817554ae9630ca06e92fd7218 (patch)
treef98afd42b6f4f818b3f4c489b2e6a7b3912dbb93 /plugins/sieverules/importFilters/avelsieve.php
parentef14bd0d8d58ae0f57aa1969e31a5373aa441dba (diff)
Updates / Plugins
Diffstat (limited to 'plugins/sieverules/importFilters/avelsieve.php')
-rw-r--r--plugins/sieverules/importFilters/avelsieve.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/plugins/sieverules/importFilters/avelsieve.php b/plugins/sieverules/importFilters/avelsieve.php
new file mode 100644
index 000000000..c1e3fef9a
--- /dev/null
+++ b/plugins/sieverules/importFilters/avelsieve.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * SieveRules import filter for Avelsieve
+ *
+ * The class should be named 'srimport_[filename]'
+ * Each import filter must have:
+ * An attribute called name
+ * A pubic function called detector
+ * A pubic function called importer
+ * The importer function can return either a string to be parsed by the SieveRules parser
+ * or an array, similar to the one created by the SieveRules parser
+ */
+class srimport_avelsieve
+{
+ public $name = 'Squirrelmail (Avelsieve)';
+
+ public function detector($script)
+ {
+ return preg_match('/#AVELSIEVE_VERSION.*/', $script) ? True : False;
+ }
+
+ public function importer($script)
+ {
+ $i = 0;
+ $content = '';
+ $name = array();
+
+ // tokenize rules
+ if ($tokens = preg_split('/(#START_SIEVE_RULE.*END_SIEVE_RULE)\n/', $script, -1, PREG_SPLIT_DELIM_CAPTURE)) {
+ foreach($tokens as $token) {
+ if (preg_match('/(require\s+\[.*\];)/i', $token, $matches)) {
+ $content .= $matches[1] . "\n";
+ }
+ elseif (!preg_match('/^#START_SIEVE_RULE.*/', $token, $matches)) {
+ $rulename = "# rule:[";
+ $parts = explode ('"', trim($token));
+
+ for ($i = 1; $i < count($parts); $i+=2)
+ $rulename .= $parts[$i] . " ";
+
+ $rulename .= "]\n";
+ $content .= $rulename;
+
+ $content .= trim($token) . "\n";
+ }
+ }
+ }
+
+ return $content;
+ }
+}
+
+?> \ No newline at end of file