mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 04:30:15 +01:00
Merge branch 'MDL-44393-master' of git://github.com/ankitagarwal/moodle
This commit is contained in:
commit
35aff62bf7
@ -53,22 +53,27 @@ class tool_task_edit_scheduled_task_form extends moodleform {
|
||||
$mform->addElement('text', 'minute', get_string('taskscheduleminute', 'tool_task'));
|
||||
$mform->setType('minute', PARAM_RAW);
|
||||
$mform->addHelpButton('minute', 'taskscheduleminute', 'tool_task');
|
||||
$mform->addRule('minute', get_string('required'), 'required');
|
||||
|
||||
$mform->addElement('text', 'hour', get_string('taskschedulehour', 'tool_task'));
|
||||
$mform->setType('hour', PARAM_RAW);
|
||||
$mform->addHelpButton('hour', 'taskschedulehour', 'tool_task');
|
||||
$mform->addRule('hour', get_string('required'), 'required');
|
||||
|
||||
$mform->addElement('text', 'day', get_string('taskscheduleday', 'tool_task'));
|
||||
$mform->setType('day', PARAM_RAW);
|
||||
$mform->addHelpButton('day', 'taskscheduleday', 'tool_task');
|
||||
$mform->addRule('day', get_string('required'), 'required');
|
||||
|
||||
$mform->addElement('text', 'month', get_string('taskschedulemonth', 'tool_task'));
|
||||
$mform->setType('month', PARAM_RAW);
|
||||
$mform->addHelpButton('month', 'taskschedulemonth', 'tool_task');
|
||||
$mform->addRule('month', get_string('required'), 'required');
|
||||
|
||||
$mform->addElement('text', 'dayofweek', get_string('taskscheduledayofweek', 'tool_task'));
|
||||
$mform->setType('dayofweek', PARAM_RAW);
|
||||
$mform->addHelpButton('dayofweek', 'taskscheduledayofweek', 'tool_task');
|
||||
$mform->addRule('dayofweek', get_string('required'), 'required');
|
||||
|
||||
$mform->addElement('advcheckbox', 'disabled', get_string('disabled', 'tool_task'));
|
||||
$mform->addHelpButton('disabled', 'disabled', 'tool_task');
|
||||
@ -92,5 +97,63 @@ class tool_task_edit_scheduled_task_form extends moodleform {
|
||||
// Do not use defaults for existing values, the set_data() is the correct way.
|
||||
$this->set_data(\core\task\manager::record_from_scheduled_task($task));
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom validations.
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $files
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function validation($data, $files) {
|
||||
$error = parent::validation($data, $files);
|
||||
$fields = array('minute', 'hour', 'day', 'month', 'dayofweek');
|
||||
foreach ($fields as $field) {
|
||||
if (!self::validate_fields($field, $data[$field])) {
|
||||
$error[$field] = get_string('invaliddata', 'core_error');
|
||||
}
|
||||
}
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function that validates the submitted data.
|
||||
*
|
||||
* Explanation of the regex:-
|
||||
*
|
||||
* \A\*\z - matches *
|
||||
* \A[0-5]?[0-9]\z - matches entries like 23
|
||||
* \A\*\/[0-5]?[0-9]\z - matches entries like * / 5
|
||||
* \A[0-5]?[0-9](,[0-5]?[0-9])*\z - matches entries like 1,2,3
|
||||
* \A[0-5]?[0-9]-[0-5]?[0-9]\z - matches entries like 2-10
|
||||
*
|
||||
* @param string $field field to validate
|
||||
* @param string $value value
|
||||
*
|
||||
* @return bool true if validation passes, false other wise.
|
||||
*/
|
||||
public static function validate_fields($field, $value) {
|
||||
switch ($field) {
|
||||
case 'minute' :
|
||||
case 'hour' :
|
||||
$regex = "/\A\*\z|\A[0-5]?[0-9]\z|\A\*\/[0-5]?[0-9]\z|\A[0-5]?[0-9](,[0-5]?[0-9])*\z|\A[0-5]?[0-9]-[0-5]?[0-9]\z/";
|
||||
break;
|
||||
case 'day':
|
||||
$regex = "/\A\*\z|\A([1-2]?[0-9]|3[0-1])\z|\A\*\/([1-2]?[0-9]|3[0-1])\z|";
|
||||
$regex .= "\A([1-2]?[0-9]|3[0-1])(,([1-2]?[0-9]|3[0-1]))*\z|\A([1-2]?[0-9]|3[0-1])-([1-2]?[0-9]|3[0-1])\z/";
|
||||
break;
|
||||
case 'month':
|
||||
$regex = "/\A\*\z|\A([0-9]|1[0-2])\z|\A\*\/([0-9]|1[0-2])\z|\A([0-9]|1[0-2])(,([0-9]|1[0-2]))*\z|";
|
||||
$regex .= "\A([0-9]|1[0-2])-([0-9]|1[0-2])\z/";
|
||||
break;
|
||||
case 'dayofweek':
|
||||
$regex = "/\A\*\z|\A[0-6]\z|\A\*\/[0-6]\z|\A[0-6](,[0-6])*\z|\A[0-6]-[0-6]\z/";
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return (bool)preg_match($regex, $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
275
admin/tool/task/tests/form_test.php
Normal file
275
admin/tool/task/tests/form_test.php
Normal file
@ -0,0 +1,275 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* File containing tests for the mform class.
|
||||
*
|
||||
* @package tool_task
|
||||
* @copyright 2014 onwards Ankit Agarwal <ankit.agrr@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
global $CFG;
|
||||
|
||||
/**
|
||||
* Mform test class.
|
||||
*
|
||||
* @package tool_task
|
||||
* @copyright 2014 onwards Ankit Agarwal <ankit.agrr@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or late
|
||||
*/
|
||||
class tool_task_form_testcase extends advanced_testcase {
|
||||
|
||||
/**
|
||||
* Test validations for minute field.
|
||||
*/
|
||||
public function test_validate_fields_minute() {
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '*');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '65');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '*/');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '*/1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '*/20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '*/65');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '1,2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '2,20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '20,30,45');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '65,20,30');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '25,75');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '1-2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '2-20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '20-30');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '65-20');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('minute', '25-75');
|
||||
$this->assertFalse($valid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test validations for minute hour.
|
||||
*/
|
||||
public function test_validate_fields_hour() {
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '*');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '65');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '*/');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '*/1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '*/20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '*/65');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '1,2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '2,20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '20,30,45');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '65,20,30');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '25,75');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '1-2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '2-20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '20-30');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '65-20');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('hour', '25-75');
|
||||
$this->assertFalse($valid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test validations for day field.
|
||||
*/
|
||||
public function test_validate_fields_day() {
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '*');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '65');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '*/');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '*/1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '*/20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '*/65');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '*/35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '1,2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '2,20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '20,30,25');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '65,20,30');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '25,35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '1-2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '2-20');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '20-30');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '65-20');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('day', '25-35');
|
||||
$this->assertFalse($valid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test validations for month field.
|
||||
*/
|
||||
public function test_validate_fields_month() {
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '*');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '10');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '13');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '*/');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '*/1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '*/12');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '*/13');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '*/35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '1,2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '2,11');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '2,10,12');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '65,2,13');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '25,35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '1-2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '2-12');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '3-6');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '65-2');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('month', '25-26');
|
||||
$this->assertFalse($valid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test validations for dayofweek field.
|
||||
*/
|
||||
public function test_validate_fields_dayofweek() {
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '*');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '0');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '6');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '7');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '20');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '*/');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '*/1');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '*/6');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '*/13');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '*/35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '1,2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '2,6');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '2,6,3');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '65,2,13');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '25,35');
|
||||
$this->assertFalse($valid);
|
||||
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '1-2');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '2-6');
|
||||
$this->assertTrue($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '65-2');
|
||||
$this->assertFalse($valid);
|
||||
$valid = \tool_task_edit_scheduled_task_form::validate_fields('dayofweek', '3-7');
|
||||
$this->assertFalse($valid);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user