Example #1
0
 /**
  * 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));
 }
Example #2
0
 /**
  * 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);
 }