Till Brehm
2016-01-10 96ae77f9f14f3e1381fa3e5405c693b0273ce1d2
Implemented new date validation for autoresponder.
5 files modified
56 ■■■■■ changed files
interface/lib/classes/validate_autoresponder.inc.php 34 ●●●● patch | view | raw | blame | history
interface/web/mail/form/mail_user.tform.php 12 ●●●● patch | view | raw | blame | history
interface/web/mail/lib/lang/en_mail_user.lng 1 ●●●● patch | view | raw | blame | history
interface/web/mail/mail_user_edit.php 6 ●●●● patch | view | raw | blame | history
interface/web/mail/templates/mail_user_autoresponder_edit.htm 3 ●●●● patch | view | raw | blame | history
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 />';
        }
    }
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'),
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.';
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();
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'}&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>