From fa857716e66f73f979e4a798a8c4e91c7612a7d1 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Tue, 14 Apr 2015 05:24:43 -0400 Subject: [PATCH] Add option to define default vacation interval --- plugins/managesieve/config.inc.php.dist | 5 +++++ plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php | 2 +- plugins/managesieve/Changelog | 2 ++ plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php | 32 +++++++++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog index 0aa48d2..dba0be2 100644 --- a/plugins/managesieve/Changelog +++ b/plugins/managesieve/Changelog @@ -1,3 +1,5 @@ +- Add option to define default vacation interval + * version 8.3 [2015-03-12] ----------------------------------------------------------- - Fix PHP fatal error when visiting Vacation interface and there's no sieve script yet diff --git a/plugins/managesieve/config.inc.php.dist b/plugins/managesieve/config.inc.php.dist index b9f9a50..08b9828 100644 --- a/plugins/managesieve/config.inc.php.dist +++ b/plugins/managesieve/config.inc.php.dist @@ -86,5 +86,10 @@ // 2 - add Vacation section, but hide Filters section $config['managesieve_vacation'] = 0; +// Default vacation interval (in days). +// Note: If server supports vacation-seconds extension it is possible +// to define interval in seconds here (as a string), e.g. "3600s". +$config['managesieve_vacation_interval'] = 0; + // Supported methods of notify extension. Default: 'mailto' $config['managesieve_notify_methods'] = array('mailto'); diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php index 282ffa9..b8af037 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php @@ -1784,7 +1784,7 @@ $this->error_class($id, 'action', 'addresses', 'action_addresses'), 30); $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext($vsec ? 'vacationinterval' : 'vacationdays')) . '</span><br />' .'<input type="text" name="_action_interval['.$id.']" id="action_interval'.$id.'" ' - .'value="' .rcube::Q(isset($action['seconds']) ? $action['seconds'] : $action['days'], 'strict', false) . '" size="2" ' + .'value="' .rcube::Q(rcube_sieve_vacation::vacation_interval($action), 'strict', false) . '" size="2" ' . $this->error_class($id, 'action', 'interval', 'action_interval') .' />'; if ($vsec) { $out .= ' <label><input type="radio" name="_action_interval_type['.$id.']" value="days"' diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php index 8d86500..419989e 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php @@ -357,7 +357,7 @@ } } - $interval_txt = $interval->show(isset($this->vacation['seconds']) ? $this->vacation['seconds'] : $this->vacation['days']); + $interval_txt = $interval->show(self::vacation_interval($this->vacation)); if ($seconds_extension) { $interval_select = new html_select(array('name' => 'vacation_interval_type')); $interval_select->add($this->plugin->gettext('days'), 'days'); @@ -551,6 +551,36 @@ } /** + * Get current vacation interval + */ + public static function vacation_interval(&$vacation) + { + $rcube = rcube::get_instance(); + + if (isset($vacation['seconds'])) { + $interval = $vacation['seconds']; + } + else if (isset($vacation['days'])) { + $interval = $vacation['days']; + } + else if ($interval_cfg = $rcube->config->get('managesieve_vacation_interval')) { + if (preg_match('/^([0-9]+)s$/', $interval_cfg, $m)) { + if ($seconds_extension) { + $vacation['seconds'] = ($interval = intval($m[1])) ? $interval : null; + } + else { + $vacation['days'] = $interval = ceil(intval($m[1])/86400); + } + } + else { + $vacation['days'] = $interval = intval($interval_cfg); + } + } + + return $interval ? $interval : ''; + } + + /** * Saves vacation script (adding some variables) */ protected function save_vacation_script($rule) -- Gitblit v1.9.1