コード例 #1
0
 /**
  * Tests moving a course up and down by one.
  */
 public function test_action_course_movedown_and_moveup()
 {
     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();
     // Update category object from DB so the course count is correct.
     $category = coursecat::get($category->id);
     list($user, $roleid) = $this->get_user_objects($generator, $context->id);
     $caps = course_capability_assignment::allow(self::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));
     // Move a course down.
     $this->assertTrue(\core_course\management\helper::action_course_change_sortorder_down_one(new course_in_list(get_course($course1->id)), $category));
     $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));
     // Move a course up.
     $this->assertTrue(\core_course\management\helper::action_course_change_sortorder_up_one(new course_in_list(get_course($course3->id)), $category));
     $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));
     // Move a course down by record.
     $this->assertTrue(\core_course\management\helper::action_course_change_sortorder_down_one_by_record(get_course($course2->id), $category));
     $courses = $category->get_courses();
     $this->assertInternalType('array', $courses);
     $this->assertEquals(array($course3->id, $course2->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));
     // Move a course up by record.
     $this->assertTrue(\core_course\management\helper::action_course_change_sortorder_up_one_by_record(get_course($course2->id), $category));
     $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));
     // Try move the bottom course down. This should return false and nothing changes.
     $this->assertFalse(\core_course\management\helper::action_course_change_sortorder_down_one(new course_in_list(get_course($course1->id)), $category));
     $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));
     // Try move the top course up. This should return false and nothing changes.
     $this->assertFalse(\core_course\management\helper::action_course_change_sortorder_up_one(new course_in_list(get_course($course2->id)), $category));
     $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));
     // Prohibit the ability to move.
     $caps->assign(CAP_PROHIBIT);
     // Reload the category.
     $category = coursecat::get($category->id);
     try {
         \core_course\management\helper::action_course_change_sortorder_down_one(new course_in_list(get_course($course2->id)), $category);
         $this->fail('Course moved without having the required permissions.');
     } catch (moodle_exception $exception) {
         // Check nothing has changed.
         $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));
     }
 }
コード例 #2
0
ファイル: management.php プロジェクト: evltuma/moodle
require_once $CFG->dirroot . '/course/lib.php';
$action = required_param('action', PARAM_ALPHA);
require_sesskey();
// Gotta have the sesskey.
require_login();
// Gotta be logged in (of course).
$PAGE->set_context(context_system::instance());
// Prepare an outcome object. We always use this.
$outcome = new stdClass();
$outcome->error = false;
$outcome->outcome = false;
echo $OUTPUT->header();
switch ($action) {
    case 'movecourseup':
        $courseid = required_param('courseid', PARAM_INT);
        $outcome->outcome = \core_course\management\helper::action_course_change_sortorder_up_one_by_record($courseid);
        break;
    case 'movecoursedown':
        $courseid = required_param('courseid', PARAM_INT);
        $outcome->outcome = \core_course\management\helper::action_course_change_sortorder_down_one_by_record($courseid);
        break;
    case 'movecourseintocategory':
        $courseid = required_param('courseid', PARAM_INT);
        $categoryid = required_param('categoryid', PARAM_INT);
        $course = get_course($courseid);
        $oldcategory = coursecat::get($course->category);
        $category = coursecat::get($categoryid);
        $outcome->outcome = \core_course\management\helper::move_courses_into_category($category, $courseid);
        $perpage = (int) get_user_preferences('coursecat_management_perpage', $CFG->coursesperpage);
        $totalcourses = $oldcategory->get_courses_count();
        $totalpages = ceil($totalcourses / $perpage);