%PDF- %PDF-
Direktori : /home2/vacivi36/ava/user/classes/form/ |
Current File : //home2/vacivi36/ava/user/classes/form/profile_category_form.php |
<?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/>. namespace core_user\form; use context; use core_form\dynamic_form; use moodle_url; /** * Modal form to edit profile category * * @package core_user * @copyright 2021 Marina Glancy * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class profile_category_form extends dynamic_form { /** * Form definition */ protected function definition() { $mform = $this->_form; $strrequired = get_string('required'); // Add some extra hidden fields. $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); $mform->addElement('hidden', 'action', 'editcategory'); $mform->setType('action', PARAM_ALPHANUMEXT); $mform->addElement('text', 'name', get_string('profilecategoryname', 'admin'), 'maxlength="255" size="30"'); $mform->setType('name', PARAM_TEXT); $mform->addRule('name', $strrequired, 'required', null, 'client'); } /** * Perform some moodle validation. * * @param array $data * @param array $files * @return array */ public function validation($data, $files) { global $DB; $errors = parent::validation($data, $files); $duplicate = $DB->get_field('user_info_category', 'id', ['name' => $data['name']]); // Check the name is unique. if (!empty($data['id'])) { // We are editing an existing record. $olddata = $DB->get_record('user_info_category', ['id' => $data['id']]); // Name has changed, new name in use, new name in use by another record. $dupfound = (($olddata->name !== $data['name']) && $duplicate && ($data['id'] != $duplicate)); } else { // New profile category. $dupfound = $duplicate; } if ($dupfound ) { $errors['name'] = get_string('profilecategorynamenotunique', 'admin'); } return $errors; } /** * Returns context where this form is used * * @return context */ protected function get_context_for_dynamic_submission(): context { return \context_system::instance(); } /** * Checks if current user has access to this form, otherwise throws exception */ protected function check_access_for_dynamic_submission(): void { require_capability('moodle/site:config', $this->get_context_for_dynamic_submission()); } /** * Process the form submission, used if form was submitted via AJAX */ public function process_dynamic_submission() { global $CFG; require_once($CFG->dirroot.'/user/profile/definelib.php'); profile_save_category($this->get_data()); } /** * Load in existing data as form defaults */ public function set_data_for_dynamic_submission(): void { global $DB; if ($id = $this->optional_param('id', 0, PARAM_INT)) { $this->set_data($DB->get_record('user_info_category', ['id' => $id], '*', MUST_EXIST)); } } /** * Returns url to set in $PAGE->set_url() when form is being rendered or submitted via AJAX * * @return moodle_url */ protected function get_page_url_for_dynamic_submission(): moodle_url { $id = $this->optional_param('id', 0, PARAM_INT); return new moodle_url('/user/profile/index.php', ['action' => 'editcategory', 'id' => $id]); } }