From 96ae77f9f14f3e1381fa3e5405c693b0273ce1d2 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Sun, 10 Jan 2016 11:15:52 -0500
Subject: [PATCH] Implemented new date validation for autoresponder.
---
interface/web/mail/lib/lang/en_mail_user.lng | 1 +
interface/web/mail/form/mail_user.tform.php | 12 ++++++++++--
interface/lib/classes/validate_autoresponder.inc.php | 34 +++++++++++++++++-----------------
interface/web/mail/mail_user_edit.php | 6 +++---
interface/web/mail/templates/mail_user_autoresponder_edit.htm | 3 +--
5 files changed, 32 insertions(+), 24 deletions(-)
diff --git a/interface/lib/classes/validate_autoresponder.inc.php b/interface/lib/classes/validate_autoresponder.inc.php
index fa29b7e..ad0ee47 100755
--- a/interface/lib/classes/validate_autoresponder.inc.php
+++ b/interface/lib/classes/validate_autoresponder.inc.php
@@ -33,15 +33,14 @@
{
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 @@
$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 />';
}
}
diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index 8d5b625..8b80dea 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -311,7 +311,11 @@
'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 @@
'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'),
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index 86c5b12..ba4fdd4 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -14,6 +14,7 @@
$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.';
diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php
index ab980ca..e1e05d3 100644
--- a/interface/web/mail/mail_user_edit.php
+++ b/interface/web/mail/mail_user_edit.php
@@ -255,9 +255,9 @@
$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();
diff --git a/interface/web/mail/templates/mail_user_autoresponder_edit.htm b/interface/web/mail/templates/mail_user_autoresponder_edit.htm
index afefb79..c5fc584 100644
--- a/interface/web/mail/templates/mail_user_autoresponder_edit.htm
+++ b/interface/web/mail/templates/mail_user_autoresponder_edit.htm
@@ -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'}
- <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>
--
Gitblit v1.9.1