Add option to define default vacation interval

pull/280/head
Aleksander Machniak 9 years ago
parent 24f046cf47
commit 3d87a667b1

@ -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

@ -86,5 +86,10 @@ $config['managesieve_domains'] = array();
// 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');

@ -1784,7 +1784,7 @@ class rcube_sieve_engine
$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 .= '&nbsp;<label><input type="radio" name="_action_interval_type['.$id.']" value="days"'

@ -357,7 +357,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine
}
}
$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');
@ -550,6 +550,36 @@ class rcube_sieve_vacation extends rcube_sieve_engine
return $result;
}
/**
* 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)
*/

Loading…
Cancel
Save