summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/managesieve/lib/rcube_sieve_script.php6
-rw-r--r--plugins/managesieve/tests/src/parser_notify_a16
-rw-r--r--plugins/managesieve/tests/src/parser_notify_b15
3 files changed, 35 insertions, 2 deletions
diff --git a/plugins/managesieve/lib/rcube_sieve_script.php b/plugins/managesieve/lib/rcube_sieve_script.php
index 66bedb52b..3e418edd3 100644
--- a/plugins/managesieve/lib/rcube_sieve_script.php
+++ b/plugins/managesieve/lib/rcube_sieve_script.php
@@ -868,13 +868,15 @@ class rcube_sieve_script
if ($method_components['scheme'] == 'mailto') {
$notify['address'] = $method_components['path'];
$method_params = array();
- parse_str($method_components['query'], $method_params);
+ if (array_key_exists('query', $method_components)) {
+ parse_str($method_components['query'], $method_params);
+ }
$method_params = array_change_key_case($method_params, CASE_LOWER);
/* magic_quotes_gpc and magic_quotes_sybase affect the output of parse_str */
if (ini_get('magic_quotes_gpc') || ini_get('magic_quotes_sybase')) {
array_map('stripslashes', $method_params);
}
- $notify['body'] = $method_params['body'];
+ $notify['body'] = (array_key_exists('body', $method_params)) ? $method_params['body'] : '';
}
$result[] = $notify;
diff --git a/plugins/managesieve/tests/src/parser_notify_a b/plugins/managesieve/tests/src/parser_notify_a
new file mode 100644
index 000000000..324805ad4
--- /dev/null
+++ b/plugins/managesieve/tests/src/parser_notify_a
@@ -0,0 +1,16 @@
+require ["enotify","variables"];
+if header :contains "from" "boss@example.org"
+{
+ notify :importance "1" :message "This is probably very important" "mailto:alm@example.com";
+ stop;
+}
+if header :matches "Subject" "*"
+{
+ set "subject" "${1}";
+}
+if header :matches "From" "*"
+{
+ set "from" "${1}";
+}
+notify :importance "3" :message "${from}: ${subject}" "mailto:alm@example.com";
+
diff --git a/plugins/managesieve/tests/src/parser_notify_b b/plugins/managesieve/tests/src/parser_notify_b
new file mode 100644
index 000000000..537898567
--- /dev/null
+++ b/plugins/managesieve/tests/src/parser_notify_b
@@ -0,0 +1,15 @@
+require ["envelope","variables","enotify"];
+if envelope :all :matches "from" "*"
+{
+ set "env_from" " [really: ${1}]";
+}
+if header :matches "Subject" "*"
+{
+ set "subject" "${1}";
+}
+if address :all :matches "from" "*"
+{
+ set "from_addr" "${1}";
+}
+notify :message "${from_addr}${env_from}: ${subject}" "mailto:alm@example.com";
+