diff --git a/enrol/self/classes/empty_form.php b/enrol/self/classes/empty_form.php new file mode 100644 index 00000000000..a54d70de1bc --- /dev/null +++ b/enrol/self/classes/empty_form.php @@ -0,0 +1,41 @@ +. + +/** + * Empty enrol_self form. + * + * Useful to mimic valid enrol instances UI when the enrolment instance is not available. + * + * @package enrol_self + * @copyright 2015 David MonllaĆ³ + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +require_once($CFG->libdir.'/formslib.php'); + +class enrol_self_empty_form extends moodleform { + + /** + * Form definition. + * @return void + */ + public function definition() { + $this->_form->addElement('header', 'selfheader', $this->_customdata->header); + $this->_form->addElement('static', 'info', '', $this->_customdata->info); + } +} diff --git a/enrol/self/lib.php b/enrol/self/lib.php index 5c668ef8682..6dca20b70cf 100644 --- a/enrol/self/lib.php +++ b/enrol/self/lib.php @@ -234,8 +234,8 @@ class enrol_self_plugin extends enrol_plugin { $enrolstatus = $this->can_self_enrol($instance); - // Don't show enrolment instance form, if user can't enrol using it. if (true === $enrolstatus) { + // This user can self enrol using this instance. $form = new enrol_self_enrol_form(NULL, $instance); $instanceid = optional_param('instance', 0, PARAM_INT); if ($instance->id == $instanceid) { @@ -243,14 +243,19 @@ class enrol_self_plugin extends enrol_plugin { $this->enrol_self($instance, $data); } } - - ob_start(); - $form->display(); - $output = ob_get_clean(); - return $OUTPUT->box($output); } else { - return $OUTPUT->box($enrolstatus); + // This user can not self enrol using this instance. Using an empty form to keep + // the UI consistent with other enrolment plugins that returns a form. + $data = new stdClass(); + $data->header = $this->get_instance_name($instance); + $data->info = $enrolstatus; + $form = new enrol_self_empty_form(null, $data); } + + ob_start(); + $form->display(); + $output = ob_get_clean(); + return $OUTPUT->box($output); } /**