/** * Test course move after course. */ public function test_course_change_sortorder_after_course() { global $DB; $this->resetAfterTest(true); $generator = $this->getDataGenerator(); $category = $generator->create_category(); $course3 = $generator->create_course(array('category' => $category->id)); $course2 = $generator->create_course(array('category' => $category->id)); $course1 = $generator->create_course(array('category' => $category->id)); $context = $category->get_context(); list($user, $roleid) = $this->get_user_objects($generator, $context->id); $caps = course_capability_assignment::allow('moodle/category:manage', $roleid, $context->id); $courses = $category->get_courses(); $this->assertInternalType('array', $courses); $this->assertEquals(array($course1->id, $course2->id, $course3->id), array_keys($courses)); $dbcourses = $DB->get_records('course', array('category' => $category->id), 'sortorder', 'id'); $this->assertEquals(array_keys($dbcourses), array_keys($courses)); // Test moving down. $this->assertTrue(course_change_sortorder_after_course($course1->id, $course3->id)); $courses = $category->get_courses(); $this->assertInternalType('array', $courses); $this->assertEquals(array($course2->id, $course3->id, $course1->id), array_keys($courses)); $dbcourses = $DB->get_records('course', array('category' => $category->id), 'sortorder', 'id'); $this->assertEquals(array_keys($dbcourses), array_keys($courses)); // Test moving up. $this->assertTrue(course_change_sortorder_after_course($course1->id, $course2->id)); $courses = $category->get_courses(); $this->assertInternalType('array', $courses); $this->assertEquals(array($course2->id, $course1->id, $course3->id), array_keys($courses)); $dbcourses = $DB->get_records('course', array('category' => $category->id), 'sortorder', 'id'); $this->assertEquals(array_keys($dbcourses), array_keys($courses)); // Test moving to the top. $this->assertTrue(course_change_sortorder_after_course($course1->id, 0)); $courses = $category->get_courses(); $this->assertInternalType('array', $courses); $this->assertEquals(array($course1->id, $course2->id, $course3->id), array_keys($courses)); $dbcourses = $DB->get_records('course', array('category' => $category->id), 'sortorder', 'id'); $this->assertEquals(array_keys($dbcourses), array_keys($courses)); }
/** * Changes the sort order so that the first course appears after the second course. * * @param int|\stdClass $courserecordorid * @param int $moveaftercourseid * @return bool * @throws \moodle_exception */ public static function action_course_change_sortorder_after_course($courserecordorid, $moveaftercourseid) { $course = \get_course($courserecordorid); $category = \coursecat::get($course->category); if (!$category->can_resort_courses()) { $url = '/course/management.php?categoryid=' . $course->category; throw new \moodle_exception('nopermissions', 'error', $url, \get_string('resortcourses', 'moodle')); } return \course_change_sortorder_after_course($course, $moveaftercourseid); }