コード例 #1
0
 /**
  * Test moving a categories up and down.
  */
 public function test_action_category_movedown_and_moveup()
 {
     global $DB;
     $this->resetAfterTest(true);
     $generator = $this->getDataGenerator();
     $parent = $generator->create_category();
     $cat1 = $generator->create_category(array('parent' => $parent->id, 'name' => 'One'));
     $cat2 = $generator->create_category(array('parent' => $parent->id, 'name' => 'Two'));
     $cat3 = $generator->create_category(array('parent' => $parent->id, 'name' => 'Three'));
     $syscontext = context_system::instance();
     list($user, $roleid) = $this->get_user_objects($generator, $syscontext->id);
     course_capability_assignment::allow(self::CATEGORY_MANAGE, $roleid, $syscontext->id);
     // Check everything is where we expect it to be.
     $this->assertEquals(array('One', 'Two', 'Three'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Move the top category down one.
     $this->assertTrue(\core_course\management\helper::action_category_change_sortorder_down_one($cat1));
     // Reload out objects.
     $cat1 = coursecat::get($cat1->id);
     $cat2 = coursecat::get($cat2->id);
     $cat3 = coursecat::get($cat3->id);
     // Verify that caches were cleared.
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat1->id)), $cat1->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat2->id)), $cat2->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat3->id)), $cat3->sortorder);
     // Verify sorting.
     $this->assertEquals(array('Two', 'One', 'Three'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Move the bottom category up one.
     $this->assertTrue(\core_course\management\helper::action_category_change_sortorder_up_one($cat3));
     // Reload out objects.
     $cat1 = coursecat::get($cat1->id);
     $cat2 = coursecat::get($cat2->id);
     $cat3 = coursecat::get($cat3->id);
     // Verify that caches were cleared.
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat1->id)), $cat1->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat2->id)), $cat2->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat3->id)), $cat3->sortorder);
     // Verify sorting.
     $this->assertEquals(array('Two', 'Three', 'One'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Move the top category down one.
     $this->assertTrue(\core_course\management\helper::action_category_change_sortorder_down_one_by_id($cat2->id));
     $this->assertEquals(array('Three', 'Two', 'One'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Move the top category down one.
     $this->assertTrue(\core_course\management\helper::action_category_change_sortorder_up_one_by_id($cat1->id));
     $this->assertEquals(array('Three', 'One', 'Two'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Reload out objects the above actions will have caused the objects to become stale.
     $cat1 = coursecat::get($cat1->id);
     $cat2 = coursecat::get($cat2->id);
     $cat3 = coursecat::get($cat3->id);
     // Verify that caches were cleared.
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat1->id)), $cat1->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat2->id)), $cat2->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat3->id)), $cat3->sortorder);
     // Verify sorting.
     // Test moving the top category up one. Nothing should change but it should return false.
     $this->assertFalse(\core_course\management\helper::action_category_change_sortorder_up_one($cat3));
     // Reload out objects.
     $cat1 = coursecat::get($cat1->id);
     $cat2 = coursecat::get($cat2->id);
     $cat3 = coursecat::get($cat3->id);
     // Verify that caches were cleared.
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat1->id)), $cat1->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat2->id)), $cat2->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat3->id)), $cat3->sortorder);
     // Verify sorting.
     $this->assertEquals(array('Three', 'One', 'Two'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Test moving the bottom category down one. Nothing should change but it should return false.
     $this->assertFalse(\core_course\management\helper::action_category_change_sortorder_down_one($cat2));
     // Reload out objects.
     $cat1 = coursecat::get($cat1->id);
     $cat2 = coursecat::get($cat2->id);
     $cat3 = coursecat::get($cat3->id);
     // Verify that caches were cleared.
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat1->id)), $cat1->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat2->id)), $cat2->sortorder);
     $this->assertEquals($DB->get_field('course_categories', 'sortorder', array('id' => $cat3->id)), $cat3->sortorder);
     // Verify sorting.
     $this->assertEquals(array('Three', 'One', 'Two'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     // Prevent moving on the parent.
     course_capability_assignment::prevent(self::CATEGORY_MANAGE, $roleid, $parent->get_context()->id);
     try {
         \core_course\management\helper::action_category_change_sortorder_up_one($cat1);
     } catch (moodle_exception $exception) {
         // Check everything is still where it should be.
         $this->assertEquals(array('Three', 'One', 'Two'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     }
     try {
         \core_course\management\helper::action_category_change_sortorder_down_one($cat3);
     } catch (moodle_exception $exception) {
         // Check everything is still where it should be.
         $this->assertEquals(array('Three', 'One', 'Two'), array_keys($DB->get_records('course_categories', array('parent' => $parent->id), 'sortorder', 'name')));
     }
 }
コード例 #2
0
ファイル: management.php プロジェクト: evltuma/moodle
 case 'movecourseafter':
     $courseid = required_param('courseid', PARAM_INT);
     $moveaftercourseid = required_param('moveafter', PARAM_INT);
     $outcome->outcome = \core_course\management\helper::action_course_change_sortorder_after_course($courseid, $moveaftercourseid);
     break;
 case 'hidecourse':
     $courseid = required_param('courseid', PARAM_INT);
     $outcome->outcome = \core_course\management\helper::action_course_hide_by_record($courseid);
     break;
 case 'showcourse':
     $courseid = required_param('courseid', PARAM_INT);
     $outcome->outcome = \core_course\management\helper::action_course_show_by_record($courseid);
     break;
 case 'movecategoryup':
     $categoryid = required_param('categoryid', PARAM_INT);
     $outcome->outcome = \core_course\management\helper::action_category_change_sortorder_up_one_by_id($categoryid);
     break;
 case 'movecategorydown':
     $categoryid = required_param('categoryid', PARAM_INT);
     $outcome->outcome = \core_course\management\helper::action_category_change_sortorder_down_one_by_id($categoryid);
     break;
 case 'hidecategory':
     $categoryid = required_param('categoryid', PARAM_INT);
     $selectedcategoryid = optional_param('selectedcategory', null, PARAM_INT);
     $outcome->outcome = \core_course\management\helper::action_category_hide_by_id($categoryid);
     $outcome->categoryvisibility = \core_course\management\helper::get_category_children_visibility($categoryid);
     $outcome->coursevisibility = \core_course\management\helper::get_category_courses_visibility($categoryid);
     if ($selectedcategoryid !== null) {
         $outcome->coursevisibility = array_merge($outcome->coursevisibility, \core_course\management\helper::get_category_courses_visibility($selectedcategoryid));
     }
     break;