summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2011-02-10 08:10:03 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2011-02-10 08:10:03 +0000
commitb40c338186679c086d25ed5d43553d3216d7190a (patch)
treee0133cc6293aa814810008f9230db8ccfad5b2ac /plugins
parent468ae4f98dee203feac6a6f39fdada5dd14fac9b (diff)
- Added :regex and :matches support (#1487746)
git-svn-id: https://svn.roundcube.net/trunk@4521 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'plugins')
-rw-r--r--plugins/managesieve/Changelog1
-rw-r--r--plugins/managesieve/lib/rcube_sieve.php8
-rw-r--r--plugins/managesieve/localization/en_US.inc4
-rw-r--r--plugins/managesieve/localization/pl_PL.inc4
-rw-r--r--plugins/managesieve/managesieve.php8
5 files changed, 20 insertions, 5 deletions
diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog
index a634815a4..1a8d3df61 100644
--- a/plugins/managesieve/Changelog
+++ b/plugins/managesieve/Changelog
@@ -1,4 +1,5 @@
- Fix STARTTLS for timsieved < 2.3.10
+- Added :regex and :matches support (#1487746)
* version 3.0 [2011-02-01]
-----------------------------------------------------------
diff --git a/plugins/managesieve/lib/rcube_sieve.php b/plugins/managesieve/lib/rcube_sieve.php
index 1f0b21bb6..1ed0da9ab 100644
--- a/plugins/managesieve/lib/rcube_sieve.php
+++ b/plugins/managesieve/lib/rcube_sieve.php
@@ -405,7 +405,8 @@ class rcube_sieve_script
'copy', // RFC3894
'vacation', // RFC5230
'relational', // RFC3431
- // TODO: (most wanted first) body, imapflags, notify, regex
+ 'regex', // draft-ietf-sieve-regex-01
+ // TODO: (most wanted first) body, imapflags, notify
);
/**
@@ -533,8 +534,9 @@ class rcube_sieve_script
array_push($exts, 'comparator-i;ascii-numeric');
$tests[$i] .= 'header :' . $m[1] . ' "' . $m[2] . '" :comparator "i;ascii-numeric"';
}
- else
+ else {
$tests[$i] .= 'header :' . $test['type'];
+ }
$tests[$i] .= ' ' . self::escape_string($test['arg1']);
$tests[$i] .= ' ' . self::escape_string($test['arg2']);
@@ -749,7 +751,7 @@ class rcube_sieve_script
else if (!is_array($tokens[$i]) && preg_match('/^:(count|value)$/i', $tokens[$i])) {
$header['type'] = strtolower(substr($tokens[$i], 1)) . '-' . $tokens[++$i];
}
- else if (!is_array($tokens[$i]) && preg_match('/^:(is|contains|matches)$/i', $tokens[$i])) {
+ else if (!is_array($tokens[$i]) && preg_match('/^:(is|contains|matches|regex)$/i', $tokens[$i])) {
$header['type'] = strtolower(substr($tokens[$i], 1));
}
else {
diff --git a/plugins/managesieve/localization/en_US.inc b/plugins/managesieve/localization/en_US.inc
index 1bfc88d8c..3da594f8a 100644
--- a/plugins/managesieve/localization/en_US.inc
+++ b/plugins/managesieve/localization/en_US.inc
@@ -17,6 +17,10 @@ $labels['filteris'] = 'is equal to';
$labels['filterisnot'] = 'is not equal to';
$labels['filterexists'] = 'exists';
$labels['filternotexists'] = 'not exists';
+$labels['filtermatches'] = 'matches expression';
+$labels['filternotmatches'] = 'not matches expression';
+$labels['filterregex'] = 'matches regular expression';
+$labels['filternotregex'] = 'not matches regular expression';
$labels['filterunder'] = 'under';
$labels['filterover'] = 'over';
$labels['addrule'] = 'Add rule';
diff --git a/plugins/managesieve/localization/pl_PL.inc b/plugins/managesieve/localization/pl_PL.inc
index e530619a4..f988d8f0b 100644
--- a/plugins/managesieve/localization/pl_PL.inc
+++ b/plugins/managesieve/localization/pl_PL.inc
@@ -18,6 +18,10 @@ $labels['filteris'] = 'jest równe';
$labels['filterisnot'] = 'nie jest równe';
$labels['filterexists'] = 'istnieje';
$labels['filternotexists'] = 'nie istnieje';
+$labels['filtermatches'] = 'pasuje do wyrażenia';
+$labels['filternotmatches'] = 'nie pasuje do wyrażenia';
+$labels['filterregex'] = 'pasuje do wyrażenia regularnego';
+$labels['filternotregex'] = 'nie pasuje do wyrażenia regularnego';
$labels['filterunder'] = 'poniżej';
$labels['filterover'] = 'ponad';
$labels['addrule'] = 'Dodaj regułę';
diff --git a/plugins/managesieve/managesieve.php b/plugins/managesieve/managesieve.php
index 96e6ebcce..d986141cd 100644
--- a/plugins/managesieve/managesieve.php
+++ b/plugins/managesieve/managesieve.php
@@ -893,8 +893,12 @@ class managesieve extends rcube_plugin
$select_op->add(Q($this->gettext('filterisnot')), 'notis');
$select_op->add(Q($this->gettext('filterexists')), 'exists');
$select_op->add(Q($this->gettext('filternotexists')), 'notexists');
-// $select_op->add(Q($this->gettext('filtermatches')), 'matches');
-// $select_op->add(Q($this->gettext('filternotmatches')), 'notmatches');
+ $select_op->add(Q($this->gettext('filtermatches')), 'matches');
+ $select_op->add(Q($this->gettext('filternotmatches')), 'notmatches');
+ if (in_array('regex', $this->exts)) {
+ $select_op->add(Q($this->gettext('filterregex')), 'regex');
+ $select_op->add(Q($this->gettext('filternotregex')), 'notregex');
+ }
if (in_array('relational', $this->exts)) {
$select_op->add(Q($this->gettext('countisgreaterthan')), 'count-gt');
$select_op->add(Q($this->gettext('countisgreaterthanequal')), 'count-ge');