. /** * Form for managing predefined IP ranges. * * @package availability_ipaddress * @copyright 04/08/2025 LdesignMedia.nl - Luuk Verhoeven * @author Vincent Cornelis * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace availability_ipaddress\form; use availability_ipaddress\helper; defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->libdir . '/formslib.php'); /** * Form for managing predefined IP ranges. * * @package availability_ipaddress * @copyright 04/08/2025 LdesignMedia.nl - Luuk Verhoeven * @author Vincent Cornelis * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class range_form extends \moodleform { /** * Define the form. * * @return void */ protected function definition(): void { $mform = $this->_form; $id = $this->_customdata['id'] ?? 0; // Hidden id field. $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); $mform->setDefault('id', $id); // Name field. $mform->addElement('text', 'name', get_string('range_name', 'availability_ipaddress')); $mform->setType('name', PARAM_TEXT); $mform->addRule('name', null, 'required', null, 'client'); $mform->addHelpButton('name', 'range_name', 'availability_ipaddress'); // IP addresses field. $mform->addElement( 'text', 'ipaddresses', get_string('ipaddresses', 'availability_ipaddress'), ['size' => 100] ); $mform->setType('ipaddresses', PARAM_TEXT); $mform->addRule('ipaddresses', null, 'required', null, 'client'); $mform->addHelpButton('ipaddresses', 'ipaddresses_help', 'availability_ipaddress'); // Description field. $mform->addElement( 'textarea', 'description', get_string('description'), ['rows' => 3, 'cols' => 60] ); $mform->setType('description', PARAM_TEXT); // Enabled field. $mform->addElement('advcheckbox', 'enabled', get_string('enabled', 'availability_ipaddress')); $mform->setDefault('enabled', 1); // Action buttons. $this->add_action_buttons(); } /** * Validate the form data. * * Note: Parameter type declarations cannot be added here as the parent * moodleform::validation() method doesn't have them, and PHP requires * compatibility with parent method signatures when overriding. * * @param array $data * @param array $files * * @return array */ public function validation($data, $files) { $errors = parent::validation($data, $files); // Validate IP addresses, the field is required so an empty value is invalid as well. if (!helper::is_valid_ipaddress_list($data['ipaddresses'] ?? '')) { $errors['ipaddresses'] = get_string('error_ipaddress', 'availability_ipaddress'); } return $errors; } }