Skip to content

Commit 96ae77f

Browse files
author
Till Brehm
committed
Implemented new date validation for autoresponder.
1 parent 7adc6ce commit 96ae77f

File tree

5 files changed

+32
-24
lines changed

5 files changed

+32
-24
lines changed

interface/lib/classes/validate_autoresponder.inc.php

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,14 @@ class validate_autoresponder extends validate_datetime
3333
{
3434
function start_date($field_name, $field_value, $validator)
3535
{
36+
global $app;
37+
3638
// save field value for later use in end_date()
3739
$this->start_date = $field_value;
3840

39-
if ($this->_datetime_selected($field_value)) {
40-
// We just require a start date be set
41-
return;
42-
}
43-
if($_POST['autoresponder'] == 'y') {
44-
return "No start date selected";
41+
if($_POST['autoresponder'] == 'y' && $field_value == '') {
42+
// we need a start date when autoresponder is on
43+
return $app->tform->lng($validator['errmsg']).'<br />';
4544
}
4645
}
4746

@@ -51,17 +50,18 @@ function end_date($field_name, $field_value, $validator)
5150

5251
$start_date = $this->start_date;
5352
//$start_date = $app->tform_actions->dataRecord['autoresponder_start_date'];
54-
55-
$_msg = $this->not_empty('autoresponder_start_date', $start_date, $validator);
56-
if (!$_msg) // Start date set
57-
{
58-
if ( !($_msg = $this->not_empty($field_name, $field_value, $validator)) ) // End date set
59-
{
60-
$validator['compare'] = $this->_get_timestamp_value($start_date);
61-
$_msg = $this->is_greater($field_name, $field_value, $validator);
62-
}
63-
64-
return $_msg;
53+
54+
// Parse date
55+
$start_date_array = date_parse_from_format($app->lng('conf_format_datetime'),$start_date);
56+
$end_date_array = date_parse_from_format($app->lng('conf_format_datetime'),$field_value);
57+
58+
//calculate timestamps
59+
$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']);
60+
$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']);
61+
62+
// End date has to be > start date
63+
if($end_date_tstamp <= $start_date_tstamp) {
64+
return $app->tform->lng($validator['errmsg']).'<br />';
6565
}
6666
}
6767

interface/web/mail/form/mail_user.tform.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,11 @@
311311
'autoresponder_start_date' => array (
312312
'datatype' => 'DATETIME',
313313
'formtype' => 'DATETIME',
314-
'validators'=> array ( 0 => array ( 'type' => 'CUSTOM',
314+
'validators'=> array (
315+
0 => array ( 'type' => 'ISDATETIME',
316+
'allowempty' => 'y',
317+
'errmsg'=> 'autoresponder_start_date_is_no_date'),
318+
1 => array ( 'type' => 'CUSTOM',
315319
'class' => 'validate_autoresponder',
316320
'function' => 'start_date',
317321
'errmsg'=> 'autoresponder_start_date_is_required'),
@@ -320,7 +324,11 @@
320324
'autoresponder_end_date' => array (
321325
'datatype' => 'DATETIME',
322326
'formtype' => 'DATETIME',
323-
'validators'=> array ( 0 => array ( 'type' => 'CUSTOM',
327+
'validators'=> array (
328+
0 => array ( 'type' => 'ISDATETIME',
329+
'allowempty' => 'y',
330+
'errmsg'=> 'autoresponder_end_date_is_no_date'),
331+
1 => array ( 'type' => 'CUSTOM',
324332
'class' => 'validate_autoresponder',
325333
'function' => 'end_date',
326334
'errmsg'=> 'autoresponder_end_date_isgreater'),

interface/web/mail/lib/lang/en_mail_user.lng

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ $wb["autoresponder_start_date_txt"] = 'Start on';
1414
$wb["autoresponder_start_date_ispast"] = 'Start date cannot be in the past.';
1515
$wb["autoresponder_end_date_txt"] = 'End by';
1616
$wb["autoresponder_end_date_isgreater"] = 'End date must be set and be later than start date.';
17+
$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
1718
$wb["no_domain_perm"] = 'You have no permission for this domain.';
1819
$wb["error_no_pwd"] = 'Password is empty.';
1920
$wb["quota_error_isint"] = 'Mailbox size must be a number.';

interface/web/mail/mail_user_edit.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,9 @@ function onSubmit() {
255255
$this->dataRecord["login"] = isset($this->dataRecord["email"]) ? $this->dataRecord["email"] : '';
256256
}
257257
//* if autoresponder checkbox not selected, do not save dates
258-
if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) {
259-
$this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_start_date']);
260-
$this->dataRecord['autoresponder_end_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_end_date']);
258+
if (!isset($_POST['autoresponder'])) {
259+
$this->dataRecord['autoresponder_start_date'] = '';
260+
$this->dataRecord['autoresponder_end_date'] = '';
261261
}
262262

263263
parent::onSubmit();

interface/web/mail/templates/mail_user_autoresponder_edit.htm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ <h1><tmpl_var name="list_head_txt"></h1>
1818
</div>
1919
<div class="form-group">
2020
<label for="autoresponder_start_date" class="col-sm-3 control-label">{tmpl_var name='autoresponder_start_date_txt'}</label>
21-
<div class="col-sm-9">{tmpl_var name='autoresponder_start_date'}&nbsp;
22-
<a href="javascript:AR_SetNow();">{tmpl_var name='now_txt'}</a></div>
21+
<div class="col-sm-9">{tmpl_var name='autoresponder_start_date'}</div>
2322
</div>
2423
<div class="form-group">
2524
<label for="autoresponder_end_date" class="col-sm-3 control-label">{tmpl_var name='autoresponder_end_date_txt'}</label>

0 commit comments

Comments
 (0)