/**
  * Returns description of method result value
  *
  * @return external_description
  * @since Moodle 2.0
  * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
  * @see core_group_external::delete_group_members_returns()
  */
 public static function delete_groupmembers_returns()
 {
     return core_group_external::delete_group_members_returns();
 }
 /**
  * Test get_groupings
  */
 public function test_get_groupings()
 {
     global $DB;
     $this->resetAfterTest(true);
     $course = self::getDataGenerator()->create_course();
     $groupingdata = array();
     $groupingdata['courseid'] = $course->id;
     $groupingdata['name'] = 'Grouping Test';
     $groupingdata['description'] = 'Grouping Test description';
     $groupingdata['descriptionformat'] = FORMAT_MOODLE;
     $grouping = self::getDataGenerator()->create_grouping($groupingdata);
     // Set the required capabilities by the external function.
     $context = context_course::instance($course->id);
     $roleid = $this->assignUserCapability('moodle/course:managegroups', $context->id);
     $this->assignUserCapability('moodle/course:view', $context->id, $roleid);
     // Call the external function without specifying the optional parameter.
     $groupings = core_group_external::get_groupings(array($grouping->id));
     // We need to execute the return values cleaning process to simulate the web service server.
     $groupings = external_api::clean_returnvalue(core_group_external::get_groupings_returns(), $groupings);
     $this->assertEquals(1, count($groupings));
     $group1data = array();
     $group1data['courseid'] = $course->id;
     $group1data['name'] = 'Group Test 1';
     $group1data['description'] = 'Group Test 1 description';
     $group1data['descriptionformat'] = FORMAT_MOODLE;
     $group2data = array();
     $group2data['courseid'] = $course->id;
     $group2data['name'] = 'Group Test 2';
     $group2data['description'] = 'Group Test 2 description';
     $group2data['descriptionformat'] = FORMAT_MOODLE;
     $group1 = self::getDataGenerator()->create_group($group1data);
     $group2 = self::getDataGenerator()->create_group($group2data);
     groups_assign_grouping($grouping->id, $group1->id);
     groups_assign_grouping($grouping->id, $group2->id);
     // Call the external function specifying that groups are returned.
     $groupings = core_group_external::get_groupings(array($grouping->id), true);
     // We need to execute the return values cleaning process to simulate the web service server.
     $groupings = external_api::clean_returnvalue(core_group_external::get_groupings_returns(), $groupings);
     $this->assertEquals(1, count($groupings));
     $this->assertEquals(2, count($groupings[0]['groups']));
     foreach ($groupings[0]['groups'] as $group) {
         $dbgroup = $DB->get_record('groups', array('id' => $group['id']), '*', MUST_EXIST);
         $dbgroupinggroups = $DB->get_record('groupings_groups', array('groupingid' => $groupings[0]['id'], 'groupid' => $group['id']), '*', MUST_EXIST);
         switch ($dbgroup->name) {
             case $group1->name:
                 $groupdescription = $group1->description;
                 $groupcourseid = $group1->courseid;
                 break;
             case $group2->name:
                 $groupdescription = $group2->description;
                 $groupcourseid = $group2->courseid;
                 break;
             default:
                 throw new moodle_exception('unknowgroupname');
                 break;
         }
         $this->assertEquals($dbgroup->description, $groupdescription);
         $this->assertEquals($dbgroup->courseid, $groupcourseid);
     }
 }
示例#3
0
 /**
  * Test delete_groups
  */
 public function test_delete_groups()
 {
     global $DB;
     $this->resetAfterTest(true);
     $course = self::getDataGenerator()->create_course();
     $group1data = array();
     $group1data['courseid'] = $course->id;
     $group1data['name'] = 'Group Test 1';
     $group1data['description'] = 'Group Test 1 description';
     $group1data['descriptionformat'] = FORMAT_MOODLE;
     $group1data['enrolmentkey'] = 'Test group enrol secret phrase';
     $group2data = array();
     $group2data['courseid'] = $course->id;
     $group2data['name'] = 'Group Test 2';
     $group2data['description'] = 'Group Test 2 description';
     $group3data['courseid'] = $course->id;
     $group3data['name'] = 'Group Test 3';
     $group3data['description'] = 'Group Test 3 description';
     $group1 = self::getDataGenerator()->create_group($group1data);
     $group2 = self::getDataGenerator()->create_group($group2data);
     $group3 = self::getDataGenerator()->create_group($group3data);
     // Set the required capabilities by the external function
     $context = context_course::instance($course->id);
     $roleid = $this->assignUserCapability('moodle/course:managegroups', $context->id);
     $this->assignUserCapability('moodle/course:view', $context->id, $roleid);
     // Checks against DB values
     $groupstotal = $DB->count_records('groups', array());
     $this->assertEquals(3, $groupstotal);
     // Call the external function.
     core_group_external::delete_groups(array($group1->id, $group2->id));
     // Checks against DB values
     $groupstotal = $DB->count_records('groups', array());
     $this->assertEquals(1, $groupstotal);
     // Call without required capability
     $this->unassignUserCapability('moodle/course:managegroups', $context->id, $roleid);
     $this->setExpectedException('required_capability_exception');
     $froups = core_group_external::delete_groups(array($group3->id));
 }
示例#4
0
 /**
  * Test get_groups
  */
 public function test_get_course_user_groups()
 {
     global $DB;
     $this->resetAfterTest(true);
     $student1 = self::getDataGenerator()->create_user();
     $student2 = self::getDataGenerator()->create_user();
     $teacher = self::getDataGenerator()->create_user();
     $course = self::getDataGenerator()->create_course();
     $emptycourse = self::getDataGenerator()->create_course();
     $studentrole = $DB->get_record('role', array('shortname' => 'student'));
     $this->getDataGenerator()->enrol_user($student1->id, $course->id, $studentrole->id);
     $this->getDataGenerator()->enrol_user($student2->id, $course->id, $studentrole->id);
     $teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher'));
     $this->getDataGenerator()->enrol_user($teacher->id, $course->id, $teacherrole->id);
     $this->getDataGenerator()->enrol_user($teacher->id, $emptycourse->id, $teacherrole->id);
     $group1data = array();
     $group1data['courseid'] = $course->id;
     $group1data['name'] = 'Group Test 1';
     $group1data['description'] = 'Group Test 1 description';
     $group1data['idnumber'] = 'TEST1';
     $group2data = array();
     $group2data['courseid'] = $course->id;
     $group2data['name'] = 'Group Test 2';
     $group2data['description'] = 'Group Test 2 description';
     $group1 = self::getDataGenerator()->create_group($group1data);
     $group2 = self::getDataGenerator()->create_group($group2data);
     groups_add_member($group1->id, $student1->id);
     groups_add_member($group1->id, $student2->id);
     groups_add_member($group2->id, $student1->id);
     $this->setUser($student1);
     $groups = core_group_external::get_course_user_groups($course->id, $student1->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that I see my groups.
     $this->assertCount(2, $groups['groups']);
     $this->setUser($student2);
     $groups = core_group_external::get_course_user_groups($course->id, $student2->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that I see my groups.
     $this->assertCount(1, $groups['groups']);
     $this->assertEquals($group1data['name'], $groups['groups'][0]['name']);
     $this->assertEquals($group1data['description'], $groups['groups'][0]['description']);
     $this->assertEquals($group1data['idnumber'], $groups['groups'][0]['idnumber']);
     $this->setUser($teacher);
     $groups = core_group_external::get_course_user_groups($course->id, $student1->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that a teacher can see student groups.
     $this->assertCount(2, $groups['groups']);
     $groups = core_group_external::get_course_user_groups($course->id, $student2->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that a teacher can see student groups.
     $this->assertCount(1, $groups['groups']);
     // Check permissions.
     $this->setUser($student1);
     try {
         $groups = core_group_external::get_course_user_groups($course->id, $student2->id);
     } catch (moodle_exception $e) {
         $this->assertEquals('accessdenied', $e->errorcode);
     }
     try {
         $groups = core_group_external::get_course_user_groups($emptycourse->id, $student2->id);
     } catch (moodle_exception $e) {
         $this->assertEquals('requireloginerror', $e->errorcode);
     }
     $this->setUser($teacher);
     // Check warnings.
     $groups = core_group_external::get_course_user_groups($emptycourse->id, $student1->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     $this->assertCount(1, $groups['warnings']);
 }
示例#5
0
 /**
  * Test get_activity_groupmode
  */
 public function test_get_activity_groupmode()
 {
     global $DB;
     $this->resetAfterTest(true);
     $generator = self::getDataGenerator();
     $student = $generator->create_user();
     $course = $generator->create_course();
     $othercourse = $generator->create_course();
     $studentrole = $DB->get_record('role', array('shortname' => 'student'));
     $generator->enrol_user($student->id, $course->id, $studentrole->id);
     $forum1 = $generator->create_module("forum", array('course' => $course->id), array('groupmode' => VISIBLEGROUPS));
     $forum2 = $generator->create_module("forum", array('course' => $othercourse->id));
     $forum3 = $generator->create_module("forum", array('course' => $course->id), array('visible' => 0));
     // Request data for tests.
     $cm1 = get_coursemodule_from_instance("forum", $forum1->id);
     $cm2 = get_coursemodule_from_instance("forum", $forum2->id);
     $cm3 = get_coursemodule_from_instance("forum", $forum3->id);
     $this->setUser($student);
     $data = core_group_external::get_activity_groupmode($cm1->id);
     $data = external_api::clean_returnvalue(core_group_external::get_activity_groupmode_returns(), $data);
     $this->assertEquals(VISIBLEGROUPS, $data['groupmode']);
     try {
         $data = core_group_external::get_activity_groupmode($cm2->id);
     } catch (moodle_exception $e) {
         $this->assertEquals('requireloginerror', $e->errorcode);
     }
     try {
         $data = core_group_external::get_activity_groupmode($cm3->id);
     } catch (moodle_exception $e) {
         $this->assertEquals('requireloginerror', $e->errorcode);
     }
 }