Commit | Line | Data |
---|---|---|
aeb15530 | 1 | <?php |
aa9bdbe3 TH |
2 | // This file is part of Moodle - http://moodle.org/ |
3 | // | |
4 | // Moodle is free software: you can redistribute it and/or modify | |
5 | // it under the terms of the GNU General Public License as published by | |
6 | // the Free Software Foundation, either version 3 of the License, or | |
7 | // (at your option) any later version. | |
8 | // | |
9 | // Moodle is distributed in the hope that it will be useful, | |
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | // GNU General Public License for more details. | |
13 | // | |
14 | // You should have received a copy of the GNU General Public License | |
15 | // along with Moodle. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
17 | /** | |
18 | * Defines the form for editing question categories. | |
19 | * | |
20 | * @package moodlecore | |
21 | * @subpackage questionbank | |
22 | * @copyright 2007 Jamie Pratt me@jamiep.org | |
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
24 | */ | |
25 | ||
26 | ||
a17b297d | 27 | defined('MOODLE_INTERNAL') || die(); |
bfebaf64 | 28 | |
515ed4c3 | 29 | require_once($CFG->libdir.'/formslib.php'); |
30 | ||
aa9bdbe3 TH |
31 | |
32 | /** | |
33 | * Form for editing qusetions categories (name, description, etc.) | |
34 | * | |
35 | * @copyright 2007 Jamie Pratt me@jamiep.org | |
36 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
37 | */ | |
515ed4c3 | 38 | class question_category_edit_form extends moodleform { |
39 | ||
c7df5006 | 40 | protected function definition() { |
aa9bdbe3 | 41 | $mform = $this->_form; |
515ed4c3 | 42 | |
43 | $contexts = $this->_customdata['contexts']; | |
44 | $currentcat = $this->_customdata['currentcat']; | |
42663bb7 | 45 | |
5e8a85aa | 46 | $mform->addElement('header', 'categoryheader', get_string('addcategory', 'question')); |
515ed4c3 | 47 | |
9275220d SR |
48 | $mform->addElement('questioncategory', 'parent', get_string('parentcategory', 'question'), |
49 | array('contexts' => $contexts, 'top' => true, 'currentcat' => $currentcat, 'nochildrenof' => $currentcat)); | |
515ed4c3 | 50 | $mform->setType('parent', PARAM_SEQUENCE); |
9275220d | 51 | if (question_is_only_child_of_top_category_in_context($currentcat)) { |
515ed4c3 | 52 | $mform->hardFreeze('parent'); |
53 | } | |
5fcefc97 | 54 | $mform->addHelpButton('parent', 'parentcategory', 'question'); |
515ed4c3 | 55 | |
42663bb7 | 56 | $mform->addElement('text', 'name', get_string('name'),'maxlength="254" size="50"'); |
515ed4c3 | 57 | $mform->setDefault('name', ''); |
5e8a85aa | 58 | $mform->addRule('name', get_string('categorynamecantbeblank', 'question'), 'required', null, 'client'); |
071e68f9 | 59 | $mform->setType('name', PARAM_TEXT); |
515ed4c3 | 60 | |
fa5c608c TH |
61 | $mform->addElement('editor', 'info', get_string('categoryinfo', 'question'), |
62 | array('rows' => 10), array('noclean' => 1)); | |
515ed4c3 | 63 | $mform->setDefault('info', ''); |
fa5c608c | 64 | $mform->setType('info', PARAM_RAW); |
42663bb7 | 65 | |
6189fda4 JB |
66 | $mform->addElement('text', 'idnumber', get_string('idnumber', 'question'), 'maxlength="100" size="10"'); |
67 | $mform->addHelpButton('idnumber', 'idnumber', 'question'); | |
68 | $mform->setType('idnumber', PARAM_RAW); | |
69 | ||
5e8a85aa | 70 | $this->add_action_buttons(false, get_string('addcategory', 'question')); |
42663bb7 | 71 | |
515ed4c3 | 72 | $mform->addElement('hidden', 'id', 0); |
73 | $mform->setType('id', PARAM_INT); | |
74 | } | |
aeb15530 | 75 | |
fa5c608c TH |
76 | public function set_data($current) { |
77 | if (is_object($current)) { | |
78 | $current = (array) $current; | |
79 | } | |
80 | if (!empty($current['info'])) { | |
81 | $current['info'] = array('text' => $current['info'], | |
82 | 'infoformat' => $current['infoformat']); | |
83 | } else { | |
84 | $current['info'] = array('text' => '', 'infoformat' => FORMAT_HTML); | |
85 | } | |
86 | parent::set_data($current); | |
87 | } | |
6189fda4 JB |
88 | |
89 | /** | |
90 | * Validation. | |
91 | * | |
92 | * @param array $data | |
93 | * @param array $files | |
94 | * @return array the errors that were found | |
95 | */ | |
96 | public function validation($data, $files) { | |
97 | global $DB; | |
98 | ||
99 | $errors = parent::validation($data, $files); | |
100 | ||
101 | // Add field validation check for duplicate idnumber. | |
102 | list($parentid, $contextid) = explode(',', $data['parent']); | |
103 | if (((string) $data['idnumber'] !== '') && !empty($contextid)) { | |
104 | $conditions = 'contextid = ? AND idnumber = ?'; | |
105 | $params = [$contextid, $data['idnumber']]; | |
106 | if (!empty($data['id'])) { | |
107 | $conditions .= ' AND id <> ?'; | |
108 | $params[] = $data['id']; | |
109 | } | |
110 | if ($DB->record_exists_select('question_categories', $conditions, $params)) { | |
111 | $errors['idnumber'] = get_string('idnumbertaken', 'error'); | |
112 | } | |
113 | } | |
114 | ||
115 | return $errors; | |
116 | } | |
fa5c608c | 117 | } |