]> git.mjollnir.org Git - moodle.git/commitdiff
restore: MDL-17480 Potentially expensive function user_can_create_courses called...
authortjhunt <tjhunt>
Mon, 1 Dec 2008 06:55:11 +0000 (06:55 +0000)
committertjhunt <tjhunt>
Mon, 1 Dec 2008 06:55:11 +0000 (06:55 +0000)
backup/restore_check.html
backup/restore_form.html
lib/datalib.php

index 17b2357d5947e766f320c1c5b13051db15720e91..2cac66f2bdce66dd8fcce7b7923a11d46c0b7f6b 100644 (file)
     //    2-New course: Create the restore object and launch the execute.
 
     //If the user is a teacher and not a creator or we are restoring from within SITEID
-
-    if (!user_can_create_courses() || $id == SITEID) {
+    $cancreatecourses = user_can_create_courses();
+    if (!$cancreatecourses || $id == SITEID) {
         $restore->course_id = $id;
-        if ($restore->restoreto == 0) {
-            $restore->deleting = true;
-        } else {
-            $restore->deleting = false;
-        }
     }
 
-    //If the user is a creator (or admin)
-    if (user_can_create_courses()) {
-        //Set restore->deleting as needed
-        if ($restore->restoreto == 0) {
-            $restore->deleting = true;
-        } else {
-            $restore->deleting = false;
-        }
+    //Set restore->deleting as needed
+    if ($restore->restoreto == 0) {
+        $restore->deleting = true;
+    } else {
+        $restore->deleting = false;
     }
 
-
-
     // Non-cached - get accessinfo
     if (isset($USER->access)) {
         $accessinfo = $USER->access;
     //Checks everything and execute restore
     } else if ((($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id != 0)) or ($restore->restoreto == 2)) {
         //Final access control check
-        if ($restore->course_id == 0 and !user_can_create_courses()) {
+        if ($restore->course_id == 0 and !$cancreatecourses) {
             print_error("cannotrestoreadminorcreator");
         } else if ($restore->course_id != 0 and !has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $restore->course_id))) {
             print_error("cannotrestoreadminoredit");
index 7bedead23213fd6ccee70faa433b431af45ce5ac..8f806f681ee862759805746f8acc51fa6eb1c310 100644 (file)
         $restore_blogs = 1;
     }
 
+    $cancreatecourses = user_can_create_courses();
     if (!isset($restore_restoreto)) {
-        if (!user_can_create_courses()) {
+        if (!$cancreatecourses) {
             $restore_restoreto = 1;
         } else {
             $restore_restoreto = 2;
@@ -231,7 +232,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) {
     }
 
     // if user can create any course at all, give the option
-    if (user_can_create_courses()) {
+    if ($cancreatecourses) {
         $restore_restoreto_options[2] = get_string("newcourse");
     }
 
@@ -240,7 +241,7 @@ function selectItemInCheckboxByName(formId, checkName, checked ) {
 
     choose_from_menu($restore_restoreto_options, "restore_restoreto", $restore_restoreto, "");
     echo "</td></tr>";
-    if (user_can_create_courses()) {  //display these fields conditionally
+    if ($cancreatecourses) {  //display these fields conditionally
 
         // find the list of cates user can edit
         echo "<tr valign=\"top\" >";
index 03f2676684bd71956a3a3abfabf755c3943eb6e5..5396ae137fc25d3197139544e6ae903d269249a7 100644 (file)
@@ -2255,37 +2255,19 @@ function xmldb_debug($message, $object) {
 }
 
 /**
- * true or false function to see if user can create any courses at all
- * @return bool
+ * @return boolean Whether the user can create courses in any category in the system.
  */
 function user_can_create_courses() {
-    global $USER;
-    // if user has course creation capability at any site or course cat, then return true;
-
-    if (has_capability('moodle/course:create', get_context_instance(CONTEXT_SYSTEM))) {
-        return true;
-    } else {
-        return (bool) count(get_creatable_categories());
-    }
-
-}
-
-/**
- * Get the list of categories the current user can create courses in
- * @return array
- */
-function get_creatable_categories() {
     global $DB;
-
-    $creatablecats = array();
-    if ($cats = $DB->get_records('course_categories')) {
-        foreach ($cats as $cat) {
-            if (has_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $cat->id))) {
-                $creatablecats[$cat->id] = $cat->name;
-            }
+    $catsrs = $DB->get_recordset('course_categories');
+    foreach ($cats as $cat) {
+        if (has_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $cat->id))) {
+            $catsrs->close();
+            return true;
         }
     }
-    return $creatablecats;
+    $catsrs->close();
+    return false;
 }
 
 ?>