change restore code to use the more efficient get_user_courses_bycap

This commit is contained in:
toyomoyo
2007-09-20 09:16:49 +00:00
parent 3c13c1eacc
commit 05a71b3341
3 changed files with 23 additions and 31 deletions
+12 -2
View File
@@ -235,11 +235,21 @@
}
}
// Non-cached - get accessinfo
if (isset($USER->access)) {
$accessinfo = $USER->access;
} else {
$accessinfo = get_user_access_sitewide($USER->id);
}
$mycourses = get_user_courses_bycap($USER->id, 'moodle/site:restore', $accessinfo, true, 'c.sortorder ASC', array('id', 'fullname', 'shortname', 'visible'));
//Now, select the course if needed
//if (($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id == 0) and get_capability_courses('moodle/site:restore')) {
if (($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id == 0)) {
if (($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id == 0) && count($mycourses) > 1) {
if ($courses = get_courses("all","c.fullname","c.id,c.fullname,c.shortname,c.visible")) {
if ($courses = $mycourses) {
print_heading(get_string("choosecourse"));
print_simple_box_start("center");
foreach ($courses as $course) {
+11 -5
View File
@@ -193,14 +193,20 @@ function selectItemInCheckboxByName(formId, checkName, checked ) {
* if user has course:create in any category, we show
* newcourse
*/
//$mycourses = get_capability_courses('moodle/site:restore');
// Non-cached - get accessinfo
if (isset($USER->access)) {
$accessinfo = $USER->access;
} else {
$accessinfo = get_user_access_sitewide($USER->id);
}
$mycourses = get_user_courses_bycap($USER->id, 'moodle/site:restore', $accessinfo, true);
// if the user can manage 2 or more courses,
// or if the only course the user can manage is not the current course
// we show options for existing courses
if (user_can_create_courses()) { // this is not entirely accurate but much faster
//if (count($mycourses) > 1 || !in_array($id, $mycourses)) {
if (count($mycourses) > 1) {
// if user can manage more than 1 course, or if user can restore to a single different course
$restore_restoreto_options[0] = get_string("existingcoursedeleting");
$restore_restoreto_options[1] = get_string("existingcourseadding");
-24
View File
@@ -2134,30 +2134,6 @@ function xmldb_debug($message, $object) {
debugging($message, DEBUG_DEVELOPER);
}
/**
* Get the lists of courses the current user has $cap capability in
* I am not sure if this is needed, it loops through all courses so
* could cause performance problems.
* If it's not used, we can use a faster function to detect
* capability in restorelib.php
* @param string $cap
* @return array
*/
function get_capability_courses($cap) {
global $USER;
$mycourses = array();
if ($courses = get_records('course')) {
foreach ($courses as $course) {
if (has_capability($cap, get_context_instance(CONTEXT_COURSE, $course->id))) {
$mycourses[] = $course->id;
}
}
}
return $mycourses;
}
/**
* true or false function to see if user can create any courses at all
* @return bool