Merge branch 'MDL-66733-master' of git://github.com/andrewnicols/moodle
[moodle.git] / user / profile / index_field_form.php
blob39d168c07f396412a9a6b6ef2e87ddea82b79ad5
1 <?php
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.
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/>.
17 /**
18 * This file contains the Field Form used for profile fields.
20 * @package core_user
21 * @copyright 2007 onwards Shane Elliot {@link http://pukunui.com}
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 if (!defined('MOODLE_INTERNAL')) {
26 die('Direct access to this script is forbidden.'); // It must be included from a Moodle page.
29 require_once($CFG->dirroot.'/lib/formslib.php');
31 /**
32 * Class field_form
34 * @copyright 2007 onwards Shane Elliot {@link http://pukunui.com}
35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37 class field_form extends moodleform {
39 /** @var profile_define_base $field */
40 public $field;
42 /**
43 * Define the form
45 public function definition () {
46 global $CFG;
48 $mform = $this->_form;
50 // Everything else is dependant on the data type.
51 $datatype = $this->_customdata;
52 require_once($CFG->dirroot.'/user/profile/field/'.$datatype.'/define.class.php');
53 $newfield = 'profile_define_'.$datatype;
54 $this->field = new $newfield();
56 $strrequired = get_string('required');
58 // Add some extra hidden fields.
59 $mform->addElement('hidden', 'id');
60 $mform->setType('id', PARAM_INT);
61 $mform->addElement('hidden', 'action', 'editfield');
62 $mform->setType('action', PARAM_ALPHANUMEXT);
63 $mform->addElement('hidden', 'datatype', $datatype);
64 $mform->setType('datatype', PARAM_ALPHA);
66 $this->field->define_form($mform);
68 $this->add_action_buttons(true);
72 /**
73 * Alter definition based on existing or submitted data
75 public function definition_after_data () {
76 $mform = $this->_form;
77 $this->field->define_after_data($mform);
81 /**
82 * Perform some moodle validation.
83 * @param array $data
84 * @param array $files
85 * @return array
87 public function validation($data, $files) {
88 return $this->field->define_validate($data, $files);
91 /**
92 * Returns the defined editors for the field.
93 * @return mixed
95 public function editors() {
96 return $this->field->define_editors();