diff --git a/course/search.php b/course/search.php index ffc0ca31fcb..bc9f3c1dcd3 100644 --- a/course/search.php +++ b/course/search.php @@ -146,23 +146,21 @@ // get list of courses containing modules if required elseif (!empty($modulelist) and confirm_sesskey()) { $modulename = $modulelist; - if (!$modules = $DB->get_records($modulename)) { - print_error('invalidmodulename', '', '', $modulename); - } + $sql = "SELECT DISTINCT c.id FROM {$CFG->prefix}".$modulelist." module,{$CFG->prefix}course as c" + ." WHERE module.course=c.id"; - // run through modules and get (unique) courses - $courses = array(); - foreach ($modules as $module) { - $courseid = $module->course; - if ($courseid==0) { - continue; + $courseids = $DB->get_records_sql($sql); + + $firstcourse = $page*$perpage; + $lastcourse = $page*$perpage + $perpage -1; + $i = 0; + foreach ($courseids as $courseid) { + if ($i>= $firstcourse && $i<=$lastcourse) { + $courses[$courseid->id] = $DB->get_record('course', array('id'=> $courseid->id)); } - if (!$course = $DB->get_record('course', array('id'=>$courseid))) { - print_error('invalidcourseid', '', '', $courseid); - } - $courses[$courseid] = $course; + $i++; } - $totalcount = count($courses); + $totalcount = count($courseids); } else { $courses = get_courses_search($searchterms, "fullname ASC", @@ -190,13 +188,14 @@ print_heading("$strsearchresults: $totalcount"); $encodedsearch = urlencode($search); - print_paging_bar($totalcount, $page, $perpage, "search.php?search=$encodedsearch&perpage=$perpage&",'page',($perpage == 99999)); - - if ($perpage != 99999 && $totalcount > $perpage) { - echo "
"; - echo "".get_string("showall", "", $totalcount).""; - echo "
"; - echo "".get_string("showall", "", $totalcount).""; - echo "
"; + echo "".get_string("showall", "", $totalcount).""; + echo "