profile_field_base($fieldid, $userid); /// Param 1 for menu type is the options $options = explode("\n", $this->field->param1); $this->options = array(); if ($this->field->required){ $this->options[''] = get_string('choose').'...'; } foreach($options as $key => $option) { $this->options[$key] = format_string($option);//multilang formatting } /// Set the data key if ($this->data !== NULL) { $this->datakey = (int)array_search($this->data, $this->options); } } /** * Create the code snippet for this field instance * Overwrites the base class method * @param object moodleform instance */ function edit_field_add(&$mform) { $mform->addElement('select', $this->inputname, format_string($this->field->name), $this->options); } /** * Set the default value for this field instance * Overwrites the base class method */ function edit_field_set_default(&$mform) { if (FALSE !==array_search($this->field->defaultdata, $this->options)){ $defaultkey = (int)array_search($this->field->defaultdata, $this->options); } else { $defaultkey = ''; } $mform->setDefault($this->inputname, $defaultkey); } /** * The data from the form returns the key. This should be converted to the * respective option string to be saved in database * Overwrites base class accessor method * @param integer the key returned from the select input in the form */ function edit_save_data_preprocess($key) { return isset($this->options[$key]) ? $this->options[$key] : NULL; } /** * When passing the user object to the form class for the edit profile page * we should load the key for the saved data * Overwrites the base class method * @param object user object */ function edit_load_user_data(&$user) { $user->{$this->inputname} = $this->datakey; } /** * HardFreeze the field if locked. * @param object instance of the moodleform class */ function edit_field_set_locked(&$mform) { if (!$mform->elementExists($this->inputname)) { return; } if ($this->is_locked() and !has_capability('moodle/user:update', get_context_instance(CONTEXT_SYSTEM))) { $mform->hardFreeze($this->inputname); $mform->setConstant($this->inputname, $this->datakey); } } }