Skip to content
Snippets Groups Projects
Commit 96ae77f9 authored by Till Brehm's avatar Till Brehm
Browse files

Implemented new date validation for autoresponder.

parent 7adc6cee
No related branches found
No related tags found
No related merge requests found
......@@ -33,15 +33,14 @@ class validate_autoresponder extends validate_datetime
{
function start_date($field_name, $field_value, $validator)
{
global $app;
// save field value for later use in end_date()
$this->start_date = $field_value;
if ($this->_datetime_selected($field_value)) {
// We just require a start date be set
return;
}
if($_POST['autoresponder'] == 'y') {
return "No start date selected";
if($_POST['autoresponder'] == 'y' && $field_value == '') {
// we need a start date when autoresponder is on
return $app->tform->lng($validator['errmsg']).'<br />';
}
}
......@@ -51,17 +50,18 @@ class validate_autoresponder extends validate_datetime
$start_date = $this->start_date;
//$start_date = $app->tform_actions->dataRecord['autoresponder_start_date'];
$_msg = $this->not_empty('autoresponder_start_date', $start_date, $validator);
if (!$_msg) // Start date set
{
if ( !($_msg = $this->not_empty($field_name, $field_value, $validator)) ) // End date set
{
$validator['compare'] = $this->_get_timestamp_value($start_date);
$_msg = $this->is_greater($field_name, $field_value, $validator);
}
return $_msg;
// Parse date
$start_date_array = date_parse_from_format($app->lng('conf_format_datetime'),$start_date);
$end_date_array = date_parse_from_format($app->lng('conf_format_datetime'),$field_value);
//calculate timestamps
$start_date_tstamp = mktime($start_date_array['hour'], $start_date_array['minute'], $start_date_array['second'], $start_date_array['month'], $start_date_array['day'], $start_date_array['year']);
$end_date_tstamp = mktime($end_date_array['hour'], $end_date_array['minute'], $end_date_array['second'], $end_date_array['month'], $end_date_array['day'], $end_date_array['year']);
// End date has to be > start date
if($end_date_tstamp <= $start_date_tstamp) {
return $app->tform->lng($validator['errmsg']).'<br />';
}
}
......
......@@ -311,7 +311,11 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') {
'autoresponder_start_date' => array (
'datatype' => 'DATETIME',
'formtype' => 'DATETIME',
'validators'=> array ( 0 => array ( 'type' => 'CUSTOM',
'validators'=> array (
0 => array ( 'type' => 'ISDATETIME',
'allowempty' => 'y',
'errmsg'=> 'autoresponder_start_date_is_no_date'),
1 => array ( 'type' => 'CUSTOM',
'class' => 'validate_autoresponder',
'function' => 'start_date',
'errmsg'=> 'autoresponder_start_date_is_required'),
......@@ -320,7 +324,11 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') {
'autoresponder_end_date' => array (
'datatype' => 'DATETIME',
'formtype' => 'DATETIME',
'validators'=> array ( 0 => array ( 'type' => 'CUSTOM',
'validators'=> array (
0 => array ( 'type' => 'ISDATETIME',
'allowempty' => 'y',
'errmsg'=> 'autoresponder_end_date_is_no_date'),
1 => array ( 'type' => 'CUSTOM',
'class' => 'validate_autoresponder',
'function' => 'end_date',
'errmsg'=> 'autoresponder_end_date_isgreater'),
......
......@@ -14,6 +14,7 @@ $wb["autoresponder_start_date_txt"] = 'Start on';
$wb["autoresponder_start_date_ispast"] = 'Start date cannot be in the past.';
$wb["autoresponder_end_date_txt"] = 'End by';
$wb["autoresponder_end_date_isgreater"] = 'End date must be set and be later than start date.';
$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
$wb["no_domain_perm"] = 'You have no permission for this domain.';
$wb["error_no_pwd"] = 'Password is empty.';
$wb["quota_error_isint"] = 'Mailbox size must be a number.';
......
......@@ -255,9 +255,9 @@ class page_action extends tform_actions {
$this->dataRecord["login"] = isset($this->dataRecord["email"]) ? $this->dataRecord["email"] : '';
}
//* if autoresponder checkbox not selected, do not save dates
if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) {
$this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_start_date']);
$this->dataRecord['autoresponder_end_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_end_date']);
if (!isset($_POST['autoresponder'])) {
$this->dataRecord['autoresponder_start_date'] = '';
$this->dataRecord['autoresponder_end_date'] = '';
}
parent::onSubmit();
......
......@@ -18,8 +18,7 @@
</div>
<div class="form-group">
<label for="autoresponder_start_date" class="col-sm-3 control-label">{tmpl_var name='autoresponder_start_date_txt'}</label>
<div class="col-sm-9">{tmpl_var name='autoresponder_start_date'}&nbsp;
<a href="javascript:AR_SetNow();">{tmpl_var name='now_txt'}</a></div>
<div class="col-sm-9">{tmpl_var name='autoresponder_start_date'}</div>
</div>
<div class="form-group">
<label for="autoresponder_end_date" class="col-sm-3 control-label">{tmpl_var name='autoresponder_end_date_txt'}</label>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment