MDL-24955 improved detection of available self enrol plugins
[moodle.git] / lib / enrollib.php
index 0d930a7..8e7741c 100644 (file)
@@ -768,6 +768,33 @@ function enrol_try_internal_enrol($courseid, $userid, $roleid = null, $timestart
     return true;
 }
 
+/**
+ * Is there a chance users might self enrol
+ * @param int $courseid
+ * @return bool
+ */
+function enrol_selfenrol_available($courseid) {
+    $result = false;
+
+    $plugins = enrol_get_plugins(true);
+    $enrolinstances = enrol_get_instances($courseid, true);
+    foreach($enrolinstances as $instance) {
+        if (!isset($plugins[$instance->enrol])) {
+            continue;
+        }
+        if ($instance->enrol === 'guest') {
+            // blacklist known temporary guest plugins
+            continue;
+        }
+        if ($plugins[$instance->enrol]->show_enrolme_link($instance)) {
+            $result = true;
+            break;
+        }
+    }
+
+    return $result;
+}
+
 /**
  * All enrol plugins should be based on this class,
  * this is also the main source of documentation.