From: Petr Skoda Date: Thu, 5 Nov 2009 22:06:49 +0000 (+0000) Subject: MDL-12886 more external groups api X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=4efa24839919a02f51a02c1ba9af24145bc26d83;p=moodle.git MDL-12886 more external groups api --- diff --git a/group/externallib.php b/group/externallib.php index c706ecb85e..99fbf847bb 100644 --- a/group/externallib.php +++ b/group/externallib.php @@ -336,11 +336,15 @@ class moodle_group_external extends external_api { * @return external_function_parameters */ public static function add_groupmembers_parameters() { - return new external_multiple_structure( - new external_single_structure( - array( - 'groupid' => new external_value(PARAM_INT, 'group record id'), - 'userid' => new external_value(PARAM_INT, 'user id'), + return new external_function_parameters( + array( + 'members'=> new external_multiple_structure( + new external_single_structure( + array( + 'groupid' => new external_value(PARAM_INT, 'group record id'), + 'userid' => new external_value(PARAM_INT, 'user id'), + ) + ) ) ) ); @@ -373,6 +377,10 @@ class moodle_group_external extends external_api { self::validate_context($context); require_capability('moodle/course:managegroups', $context); + // now make sure user is enrolled in course - this is mandatory requirement, + // unfortunately this is extermely slow + require_capability('moodle/course:view', $context, $userid, false); + groups_add_member($group, $user); } } catch (Exception $ex) { @@ -396,11 +404,15 @@ class moodle_group_external extends external_api { * @return external_function_parameters */ public static function delete_groupmembers_parameters() { - return new external_multiple_structure( - new external_single_structure( - array( - 'groupid' => new external_value(PARAM_INT, 'group record id'), - 'userid' => new external_value(PARAM_INT, 'user id'), + return new external_function_parameters( + array( + 'members'=> new external_multiple_structure( + new external_single_structure( + array( + 'groupid' => new external_value(PARAM_INT, 'group record id'), + 'userid' => new external_value(PARAM_INT, 'user id'), + ) + ) ) ) ); diff --git a/lib/db/services.php b/lib/db/services.php index 8ca0d9b9b9..c2ed8f446f 100644 --- a/lib/db/services.php +++ b/lib/db/services.php @@ -67,7 +67,7 @@ $functions = array( 'description' => 'Returns group members.', 'type' => 'read', ), -/* + 'moodle_group_add_groupmembers' => array( 'classname' => 'moodle_group_external', 'methodname' => 'add_groupmembers', @@ -83,7 +83,7 @@ $functions = array( 'description' => 'Deletes group members.', 'type' => 'delete', ), -*/ + // === user related functions === /* 'moodle_user_create_users' => array( diff --git a/version.php b/version.php index 388db8abc3..81a3d75af2 100644 --- a/version.php +++ b/version.php @@ -6,7 +6,7 @@ // This is compared against the values stored in the database to determine // whether upgrades should be performed (see lib/db/*.php) - $version = 2009110500; // YYYYMMDD = date of the last version bump + $version = 2009110501; // YYYYMMDD = date of the last version bump // XX = daily increments $release = '2.0 dev (Build: 20091105)'; // Human-friendly version name diff --git a/webservice/testclient_forms.php b/webservice/testclient_forms.php index 6ce6b6b572..e9e64e66fa 100644 --- a/webservice/testclient_forms.php +++ b/webservice/testclient_forms.php @@ -208,7 +208,6 @@ class moodle_group_delete_groups_form extends moodleform { } } - class moodle_group_get_groupmembers_form extends moodleform { public function definition() { global $CFG; @@ -257,3 +256,52 @@ class moodle_group_get_groupmembers_form extends moodleform { return $params; } } + +class moodle_group_add_groupmembers_form extends moodleform { + public function definition() { + global $CFG; + + $mform = $this->_form; + + $mform->addElement('header', 'wstestclienthdr', get_string('testclient', 'webservice')); + + //note: these values are intentionally PARAM_RAW - we want users to test any rubbish as parameters + $mform->addElement('text', 'wsusername', 'wsusername'); + $mform->addElement('text', 'wspassword', 'wspassword'); + $mform->addElement('text', 'userid[0]', 'userid[0]'); + $mform->addElement('text', 'groupid[0]', 'groupid[0]'); + $mform->addElement('text', 'userid[1]', 'userid[1]'); + $mform->addElement('text', 'groupid[1]', 'groupid[1]'); + + $mform->addElement('hidden', 'function'); + $mform->setType('function', PARAM_SAFEDIR); + + $mform->addElement('hidden', 'protocol'); + $mform->setType('protocol', PARAM_SAFEDIR); + + $this->add_action_buttons(true, get_string('execute', 'webservice')); + } + + public function get_params() { + if (!$data = $this->get_data()) { + return null; + } + // remove unused from form data + unset($data->submitbutton); + unset($data->protocol); + unset($data->function); + unset($data->wsusername); + unset($data->wspassword); + + $params = array(); + $params['members'] = array(); + for ($i=0; $i<10; $i++) { + if (empty($data->groupid[$i]) or empty($data->userid[$i])) { + continue; + } + $params['members'][] = array('userid'=>$data->userid[$i], 'groupid'=>$data->groupid[$i]); + } + + return $params; + } +}