Browse files

MDL-23532 enrol - moved UI enrolment components from core enrol to th…

…eir respective enrolment plugins
  • Loading branch information...
1 parent 4452ed6 commit b69ca6bee44fb7a746ae61de1018a7a127daee55 Sam Hemelryk committed Apr 6, 2011
View
70 enrol/cohort/lib.php
@@ -64,32 +64,40 @@ public function get_instance_name($instance) {
* @return moodle_url page url
*/
public function get_newinstance_link($courseid) {
+ if (!$this->can_add_new_instances($courseid)) {
+ return NULL;
+ }
+ // multiple instances supported - multiple parent courses linked
+ return new moodle_url('/enrol/cohort/addinstance.php', array('id'=>$courseid));
+ }
+
+ /**
+ * Given a courseid this function returns true if the user is able to enrol or configure cohorts
+ * AND there are cohorts that the user can view.
+ *
+ * @param int $courseid
+ * @return bool
+ */
+ protected function can_add_new_instances($courseid) {
global $DB;
$coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
if (!has_capability('moodle/course:enrolconfig', $coursecontext) or !has_capability('enrol/cohort:config', $coursecontext)) {
- return NULL;
+ return false;
}
-
list($sqlparents, $params) = $DB->get_in_or_equal(get_parent_contexts($coursecontext));
$sql = "SELECT id, contextid
FROM {cohort}
WHERE contextid $sqlparents
ORDER BY name ASC";
$cohorts = $DB->get_records_sql($sql, $params);
- $found = false;
foreach ($cohorts as $c) {
$context = get_context_instance_by_id($c->contextid);
if (has_capability('moodle/cohort:view', $context)) {
- $found = true;
- break;
+ return true;
}
}
- if (!$found) {
- return NULL;
- }
- // multiple instances supported - multiple parent courses linked
- return new moodle_url('/enrol/cohort/addinstance.php', array('id'=>$courseid));
+ return false;
}
/**
@@ -129,6 +137,48 @@ public function course_updated($inserted, $course, $data) {
}
}
+
+ /**
+ * Returns a button to enrol a cohort or its users through the manual enrolment plugin.
+ *
+ * This function also adds a quickenrolment JS ui to the page so that users can be enrolled
+ * via AJAX.
+ *
+ * @global moodle_page $PAGE
+ * @param course_enrolment_manager $manager
+ * @return enrol_user_button
+ */
+ public function get_manual_enrol_button(course_enrolment_manager $manager) {
+ global $PAGE;
+
+ $course = $manager->get_course();
+ if (!$this->can_add_new_instances($course->id)) {
+ return false;
+ }
+
+ $cohorturl = new moodle_url('/enrol/cohort/addinstance.php', array('id' => $course->id));
+ $button = new enrol_user_button($cohorturl, get_string('enrolcohort', 'enrol'), 'get');
+ $button->class .= ' enrol_cohort_plugin';
+
+ $button->strings_for_js(array('enrol','synced','enrolcohort','enrolcohortusers'), 'enrol');
+ $button->strings_for_js('assignroles', 'role');
+ $button->strings_for_js('cohort', 'cohort');
+ $button->strings_for_js('users', 'moodle');
+
+ // No point showing this at all if the user cant manually enrol users
+ $hasmanualinstance = has_capability('enrol/manual:manage', $manager->get_context()) && $manager->has_instance('manual');
+
+ $modules = array('moodle-enrol_cohort-quickenrolment', 'moodle-enrol_cohort-quickenrolment-skin');
+ $function = 'M.enrol_cohort.quickenrolment.init';
+ $arguments = array(
+ 'courseid' => $course->id,
+ 'ajaxurl' => '/enrol/ajax.php',
+ 'url' => $PAGE->url->out(false),
+ 'manualEnrolment' => $hasmanualinstance);
+ $button->require_yui_module($modules, $function, array($arguments));
+
+ return $button;
+ }
}
View
0 ...assets/skins/sam/quickcohortenrolment.css → ...lment/assets/skins/sam/quickenrolment.css
File renamed without changes.
View
0 ...hortenrolment/assets/skins/sam/sprite.png → ...uickenrolment/assets/skins/sam/sprite.png
File renamed without changes
View
8 ...ckcohortenrolment/quickcohortenrolment.js → ...hort/yui/quickenrolment/quickenrolment.js
@@ -1,4 +1,4 @@
-YUI.add('moodle-enrol-quickcohortenrolment', function(Y) {
+YUI.add('moodle-enrol_cohort-quickenrolment', function(Y) {
var CONTROLLERNAME = 'Quick cohort enrolment controller',
COHORTNAME = 'Cohort',
@@ -71,7 +71,7 @@ YUI.add('moodle-enrol-quickcohortenrolment', function(Y) {
this.on('defaultcohortroleloaded', this.updateContent, this, panel);
close.on('click', this.hide, this);
- Y.all('.enrolcohortbutton input').each(function(node){
+ Y.all('.enrol_cohort_plugin input').each(function(node){
if (node.getAttribute('type', 'submit')) {
node.on('click', this.show, this);
}
@@ -332,8 +332,8 @@ YUI.add('moodle-enrol-quickcohortenrolment', function(Y) {
});
Y.augment(COHORT, Y.EventTarget);
- M.enrol = M.enrol || {};
- M.enrol.quickcohortenrolment = {
+ M.enrol_cohort = M.enrol || {};
+ M.enrol_cohort.quickenrolment = {
init : function(cfg) {
new CONTROLLER(cfg);
}
View
135 enrol/locallib.php
@@ -986,6 +986,141 @@ public function get_users_for_display(core_enrol_renderer $renderer, moodle_url
}
return $userdetails;
}
+
+ public function get_manual_enrol_buttons() {
+ $plugins = $this->get_enrolment_plugins();
+ $buttons = array();
+ foreach ($plugins as $plugin) {
+ $newbutton = $plugin->get_manual_enrol_button($this);
+ if (is_array($newbutton)) {
+ $buttons += $newbutton;
+ } else if ($newbutton instanceof enrol_user_button) {
+ $buttons[] = $newbutton;
+ }
+ }
+ return $buttons;
+ }
+
+ public function has_instance($enrolpluginname) {
+ // Make sure manual enrolments instance exists
+ foreach ($this->get_enrolment_instances() as $instance) {
+ if ($instance->enrol == $enrolpluginname) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+/**
+ * A button that is used to enrol users in a course
+ *
+ * @copyright 2010 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class enrol_user_button extends single_button {
+
+ /**
+ * An array containing JS YUI modules required by this button
+ * @var array
+ */
+ protected $jsyuimodules = array();
+
+ /**
+ * An array containing JS initialisation calls required by this button
+ * @var array
+ */
+ protected $jsinitcalls = array();
+
+ /**
+ * An array strings required by JS for this button
+ * @var array
+ */
+ protected $jsstrings = array();
+
+ /**
+ * Initialises the new enrol_user_button
+ *
+ * @staticvar int $count The number of enrol user buttons already created
+ * @param moodle_url $url
+ * @param string $label The text to display in the button
+ * @param string $method Either post or get
+ */
+ public function __construct(moodle_url $url, $label, $method = 'post') {
+ static $count = 0;
+ $count ++;
+ parent::__construct($url, $label, $method);
+ $this->class = 'singlebutton enrolusersbutton';
+ $this->formid = 'enrolusersbutton-'.$count;
+ }
+
+ /**
+ * Adds a YUI module call that will be added to the page when the button is used.
+ *
+ * @param string|array $modules One or more modules to require
+ * @param string $function The JS function to call
+ * @param array $arguments An array of arguments to pass to the function
+ * @param string $galleryversion The YUI gallery version of any modules required
+ * @param bool $ondomready If true the call is postponed until the DOM is finished loading
+ */
+ public function require_yui_module($modules, $function, array $arguments = null, $galleryversion = '2010.04.08-12-35', $ondomready = false) {
+ $js = new stdClass;
+ $js->modules = (array)$modules;
+ $js->function = $function;
+ $js->arguments = $arguments;
+ $js->galleryversion = $galleryversion;
+ $js->ondomready = $ondomready;
+ $this->jsyuimodules[] = $js;
+ }
+
+ /**
+ * Adds a JS initialisation call to the page when the button is used.
+ *
+ * @param string $function The function to call
+ * @param array $extraarguments An array of arguments to pass to the function
+ * @param bool $ondomready If true the call is postponed until the DOM is finished loading
+ * @param array $module A module definition
+ */
+ public function require_js_init_call($function, array $extraarguments = null, $ondomready = false, array $module = null) {
+ $js = new stdClass;
+ $js->function = $function;
+ $js->extraarguments = $extraarguments;
+ $js->ondomready = $ondomready;
+ $js->module = $module;
+ $this->jsinitcalls[] = $js;
+ }
+
+ /**
+ * Requires strings for JS that will be loaded when the button is used.
+ *
+ * @param type $identifiers
+ * @param string $component
+ * @param mixed $a
+ */
+ public function strings_for_js($identifiers, $component = 'moodle', $a = null) {
+ $string = new stdClass;
+ $string->identifiers = (array)$identifiers;
+ $string->component = $component;
+ $string->a = $a;
+ $this->jsstrings[] = $string;
+ }
+
+ /**
+ * Initialises the JS that is required by this button
+ *
+ * @param moodle_page $page
+ */
+ public function initialise_js(moodle_page $page) {
+ foreach ($this->jsyuimodules as $js) {
+ $page->requires->yui_module($js->modules, $js->function, $js->arguments, $js->galleryversion, $js->ondomready);
+ }
+ foreach ($this->jsinitcalls as $js) {
+ $page->requires->js_init_call($js->function, $js->extraarguments, $js->ondomready, $js->module);
+ }
+ foreach ($this->jsstrings as $string) {
+ $page->requires->strings_for_js($string->identifiers, $string->component, $string->a);
+ }
+ }
}
class enrol_ajax_exception extends moodle_exception {
View
75 enrol/manual/lib.php
@@ -168,6 +168,81 @@ public function add_instance($course, array $fields = NULL) {
return parent::add_instance($course, $fields);
}
+
+ /**
+ * Returns a button to manually enrol users through the manual enrolment plugin.
+ *
+ * By default the first manual enrolment plugin instance available in the course is used.
+ * If no manual enrolment instances exist within the course then false is returned.
+ *
+ * This function also adds a quickenrolment JS ui to the page so that users can be enrolled
+ * via AJAX.
+ *
+ * @global moodle_page $PAGE
+ * @param course_enrolment_manager $manager
+ * @return enrol_user_button
+ */
+ public function get_manual_enrol_button(course_enrolment_manager $manager) {
+ global $PAGE;
+
+ $instance = null;
+ $instances = array();
+ foreach ($manager->get_enrolment_instances() as $tempinstance) {
+ if ($tempinstance->enrol == 'manual') {
+ if ($instance === null) {
+ $instance = $tempinstance;
+ }
+ $instances[] = array('id' => $tempinstance->id, 'name' => $this->get_instance_name($tempinstance));
+ }
+ }
+ if (empty($instance)) {
+ return false;
+ }
+
+ $button = new enrol_user_button($this->get_manual_enrol_link($instance), get_string('enrolusers', 'enrol_manual'), 'get');
+ $button->class .= ' enrol_manual_plugin';
+
+ $startdate = $manager->get_course()->startdate;
+ $startdateoptions = array();
+ $timeformat = get_string('strftimedatefullshort');
+ if ($startdate > 0) {
+ $today = time();
+ $today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);
+ $startdateoptions[2] = get_string('coursestart') . ' (' . userdate($startdate, $timeformat) . ')';
+ }
+ $startdateoptions[3] = get_string('today') . ' (' . userdate($today, $timeformat) . ')' ;
+
+ $modules = array('moodle-enrol_manual-quickenrolment', 'moodle-enrol_manual-quickenrolment-skin');
+ $arguments = array(
+ 'instances' => $instances,
+ 'courseid' => $instance->courseid,
+ 'ajaxurl' => '/enrol/ajax.php',
+ 'url' => $PAGE->url->out(false),
+ 'optionsStartDate' => $startdateoptions,
+ 'defaultRole' => $instance->roleid
+ );
+ $function = 'M.enrol_manual.quickenrolment.init';
+ $button->require_yui_module($modules, $function, array($arguments));
+ $button->strings_for_js(array(
+ 'ajaxoneuserfound',
+ 'ajaxxusersfound',
+ 'ajaxnext25',
+ 'enrol',
+ 'enrolmentoptions',
+ 'enrolusers',
+ 'errajaxfailedenrol',
+ 'errajaxsearch',
+ 'none',
+ 'usersearch',
+ 'unlimitedduration',
+ 'startdatetoday',
+ 'durationdays',
+ 'enrolperiod'), 'enrol');
+ $button->strings_for_js('assignroles', 'role');
+ $button->strings_for_js('startingfrom', 'moodle');
+
+ return $button;
+ }
}
/**
View
0 ...ger/assets/skins/sam/enrolmentmanager.css → ...lment/assets/skins/sam/quickenrolment.css
File renamed without changes.
View
0 ...olmentmanager/assets/skins/sam/sprite.png → ...uickenrolment/assets/skins/sam/sprite.png
File renamed without changes
View
9 .../yui/enrolmentmanager/enrolmentmanager.js → ...nual/yui/quickenrolment/quickenrolment.js
@@ -1,4 +1,4 @@
-YUI.add('moodle-enrol-enrolmentmanager', function(Y) {
+YUI.add('moodle-enrol_manual-quickenrolment', function(Y) {
var UEP = {
NAME : 'Enrolment Manager',
@@ -116,7 +116,7 @@ YUI.add('moodle-enrol-enrolmentmanager', function(Y) {
);
this.set(UEP.SEARCH, this.get(UEP.BASE).one('#enrolusersearch'));
- Y.all('.enrolusersbutton input').each(function(node){
+ Y.all('.enrol_manual_plugin input').each(function(node){
if (node.getAttribute('type', 'submit')) {
node.on('click', this.show, this);
}
@@ -506,9 +506,8 @@ YUI.add('moodle-enrol-enrolmentmanager', function(Y) {
});
Y.augment(USERENROLLER, Y.EventTarget);
-
- M.enrol = M.enrol || {};
- M.enrol.enrolmentmanager = {
+ M.enrol_manual = M.enrol_manual || {};
+ M.enrol_manual.quickenrolment = {
init : function(cfg) {
new USERENROLLER(cfg);
}
View
241 enrol/renderer.php
@@ -42,31 +42,85 @@ protected function render_course_enrolment_users_table(course_enrolment_users_ta
$table->initialise_javascript();
- $content = '';
- $enrolmentselector = $table->get_enrolment_selector();
- if ($enrolmentselector) {
- $content .= $this->output->render($enrolmentselector);
+ $buttons = $table->get_manual_enrol_buttons();
+ $buttonhtml = '';
+ if (count($buttons) > 0) {
+ $buttonhtml .= html_writer::start_tag('div', array('class' => 'enrol_user_buttons'));
+ foreach ($buttons as $button) {
+ $buttonhtml .= $this->render($button);
+ }
+ $buttonhtml .= html_writer::end_tag('div');
}
- $cohortenroller = $table->get_cohort_enrolment_control();
- if ($cohortenroller) {
- $content .= $this->output->render($cohortenroller);
+
+ $content = '';
+ if (!empty($buttonhtml)) {
+ $content .= $buttonhtml;
}
- $content .= $this->output->render($table->get_enrolment_type_filter());
+ $content .= $this->output->render($table->get_enrolment_type_filter());
$content .= $this->output->render($table->get_paging_bar());
$content .= html_writer::table($table);
$content .= $this->output->render($table->get_paging_bar());
- $enrolmentselector = $table->get_enrolment_selector();
- if ($enrolmentselector) {
- $content .= $this->output->render($enrolmentselector);
- }
- $cohortenroller = $table->get_cohort_enrolment_control();
- if ($cohortenroller) {
- $content .= $this->output->render($cohortenroller);
+ if (!empty($buttonhtml)) {
+ $content .= $buttonhtml;
}
return $content;
}
/**
+ * Renderers the enrol_user_button.
+ *
+ * @param enrol_user_button $button
+ * @return string XHTML
+ */
+ protected function render_enrol_user_button(enrol_user_button $button) {
+ $attributes = array('type' => 'submit',
+ 'value' => $button->label,
+ 'disabled' => $button->disabled ? 'disabled' : null,
+ 'title' => $button->tooltip);
+
+ if ($button->actions) {
+ $id = html_writer::random_id('single_button');
+ $attributes['id'] = $id;
+ foreach ($button->actions as $action) {
+ $this->add_action_handler($action, $id);
+ }
+ }
+ $button->initialise_js($this->page);
+
+ // first the input element
+ $output = html_writer::empty_tag('input', $attributes);
+
+ // then hidden fields
+ $params = $button->url->params();
+ if ($button->method === 'post') {
+ $params['sesskey'] = sesskey();
+ }
+ foreach ($params as $var => $val) {
+ $output .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $var, 'value' => $val));
+ }
+
+ // then div wrapper for xhtml strictness
+ $output = html_writer::tag('div', $output);
+
+ // now the form itself around it
+ if ($button->method === 'get') {
+ $url = $button->url->out_omit_querystring(true); // url without params, the anchor part allowed
+ } else {
+ $url = $button->url->out_omit_querystring(); // url without params, the anchor part not allowed
+ }
+ if ($url === '') {
+ $url = '#'; // there has to be always some action
+ }
+ $attributes = array('method' => $button->method,
+ 'action' => $url,
+ 'id' => $button->formid);
+ $output = html_writer::tag('form', $output, $attributes);
+
+ // and finally one more wrapper with class
+ return html_writer::tag('div', $output, array('class' => $button->class));
+ }
+
+ /**
* Renders a course enrolment table
*
* @param course_enrolment_table $table
@@ -370,6 +424,16 @@ public function __construct(course_enrolment_manager $manager, moodle_page $mood
}
/**
+ * Returns an array of enrol_user_buttons that are created by the different
+ * enrolment plugins available.
+ *
+ * @return array
+ */
+ public function get_manual_enrol_buttons() {
+ return $this->manager->get_manual_enrol_buttons();
+ }
+
+ /**
* Gets the sort direction for a given field
*
* @param string $field
@@ -444,9 +508,6 @@ public function set_total_users($totalusers) {
}
}
/**
-
- */
- /**
* Sets the users for this table
*
* @param array $users
@@ -565,150 +626,6 @@ class course_enrolment_users_table extends course_enrolment_table {
protected static $sortablefields = array('firstname', 'lastname', 'email', 'lastaccess');
/**
- * Returns a button to enrol cohorts or thier users
- *
- * @staticvar int $count
- * @return single_button|false
- */
- public function get_cohort_enrolment_control() {
- static $count = 0;
-
- // First make sure that cohorts is enabled
- $plugins = $this->manager->get_enrolment_plugins();
- if (!array_key_exists('cohort', $plugins)) {
- return false;
- }
- $course = $this->manager->get_course();
- if (!$plugins['cohort']->get_newinstance_link($course->id)) {
- // user can not see any cohort === can not use this
- return false;
- }
- $count ++;
- $cohorturl = new moodle_url('/enrol/cohort/addinstance.php', array('id'=>$course->id));
- $control = new single_button($cohorturl, get_string('enrolcohort', 'enrol'), 'get');
- $control->class = 'singlebutton enrolcohortbutton instance'.$count;
- $control->formid = 'manuallyenrol_single_'+$count;
- if ($count == 1) {
- $this->moodlepage->requires->strings_for_js(array('enrol','synced','enrolcohort','enrolcohortusers'), 'enrol');
- $this->moodlepage->requires->string_for_js('assignroles', 'role');
- $this->moodlepage->requires->string_for_js('cohort', 'cohort');
- $this->moodlepage->requires->string_for_js('users', 'moodle');
-
- $hasmanualinstance = false;
- // No point showing this at all if the user cant manually enrol users
- if (has_capability('enrol/manual:manage', $this->manager->get_context())) {
- // Make sure manual enrolments instance exists
- $instances = $this->manager->get_enrolment_instances();
- foreach ($instances as $instance) {
- if ($instance->enrol == 'manual') {
- $hasmanualinstance = true;
- break;
- }
- }
- }
-
- $modules = array('moodle-enrol-quickcohortenrolment', 'moodle-enrol-quickcohortenrolment-skin');
- $function = 'M.enrol.quickcohortenrolment.init';
- $arguments = array(
- 'courseid'=>$course->id,
- 'ajaxurl'=>'/enrol/ajax.php',
- 'url'=>$this->moodlepage->url->out(false),
- 'manualEnrolment'=>$hasmanualinstance);
- $this->moodlepage->requires->yui_module($modules, $function, array($arguments));
- }
- return $control;
- }
-
- /**
- * Gets the enrolment selector control for this table and initialises its
- * JavaScript
- *
- * @return single_button|url_select
- */
- public function get_enrolment_selector() {
- global $CFG;
- static $count = 0;
-
- $instances = $this->manager->get_enrolment_instances();
- $plugins = $this->manager->get_enrolment_plugins();
- $manuals = array();
- // print enrol link or selection
- $links = array();
- foreach($instances as $instance) {
- $plugin = $plugins[$instance->enrol];
- if ($link = $plugin->get_manual_enrol_link($instance)) {
- $links[$instance->id] = $link;
- $manuals[$instance->id] = $instance;
- }
- }
- if (!empty($links)) {
- $arguments = array();
- $count ++;
- if (count($links) == 1) {
- $control = new single_button(reset($links), get_string('enrolusers', 'enrol_manual'), 'get');
- $control->class = 'singlebutton enrolusersbutton instance'.$count;
- $control->formid = 'manuallyenrol_single_'+$count;
- $arguments[] = array('id'=>key($links), 'name'=>$plugins[$instances[key($links)]->enrol]->get_instance_name($instances[key($links)]));
- } else if (count($links) > 1) {
- $inames = $this->manager->get_enrolment_instance_names();
- $options = array();
- foreach ($links as $i=>$link) {
- $options[$link->out(false)] = $inames[$i];
- $arguments[] = array('id'=>$i, 'name'=>$plugins[$instances[$i]->enrol]->get_instance_name($instances[$i]));
- }
- $control = new url_select($options, '', array(''=>get_string('enrolusers', 'enrol_manual').'...'));
- $control->class = 'singlebutton enrolusersbutton instance'.$count;
- $control->formid = 'manuallyenrol_select_'+$count;
- }
- $course = $this->manager->get_course();
- $timeformat = get_string('strftimedatefullshort');
- $today = time();
- $today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);
- $startdateoptions = array();
- if ($course->startdate > 0) {
- $startdateoptions[2] = get_string('coursestart') . ' (' . userdate($course->startdate, $timeformat) . ')';
- }
- $startdateoptions[3] = get_string('today') . ' (' . userdate($today, $timeformat) . ')' ;
-
- if ($count == 1) {
- $instance = reset($manuals);
- $this->moodlepage->requires->strings_for_js(array(
- 'ajaxoneuserfound',
- 'ajaxxusersfound',
- 'ajaxnext25',
- 'enrol',
- 'enrolmentoptions',
- 'enrolusers',
- 'errajaxfailedenrol',
- 'errajaxsearch',
- 'none',
- 'usersearch',
- 'unlimitedduration',
- 'startdatetoday',
- 'durationdays',
- 'enrolperiod',
- 'finishenrollingusers',
- 'recovergrades'), 'enrol');
- $this->moodlepage->requires->string_for_js('assignroles', 'role');
- $this->moodlepage->requires->string_for_js('startingfrom', 'moodle');
-
- $modules = array('moodle-enrol-enrolmentmanager', 'moodle-enrol-enrolmentmanager-skin');
- $function = 'M.enrol.enrolmentmanager.init';
- $arguments = array(
- 'instances'=>$arguments,
- 'courseid'=>$course->id,
- 'ajaxurl'=>'/enrol/ajax.php',
- 'url'=>$this->moodlepage->url->out(false),
- 'optionsStartDate'=>$startdateoptions,
- 'defaultRole'=>$instance->roleid,
- 'disableGradeHistory'=>$CFG->disablegradehistory);
- $this->moodlepage->requires->yui_module($modules, $function, array($arguments));
- }
- return $control;
- }
- return null;
- }
- /**
* Gets the enrolment type filter control for this table
*
* @return single_select
View
15 lib/enrollib.php
@@ -1517,5 +1517,18 @@ public function user_delete($user) {
}
$rs->close();
}
-}
+ /**
+ * Returns an enrol_user_button that takes the user to a page where they are able to
+ * enrol users into the managers course through this plugin.
+ *
+ * Optional: If the plugin supports manual enrolments it can choose to override this
+ * otherwise it shouldn't
+ *
+ * @param course_enrolment_manager $manager
+ * @return enrol_user_button|false
+ */
+ public function get_manual_enrol_button(course_enrolment_manager $manager) {
+ return false;
+ }
+}

0 comments on commit b69ca6b

Please sign in to comment.