Skip to content

Commit

Permalink
MDL-12886 more external groups api
Browse files Browse the repository at this point in the history
  • Loading branch information
skodak committed Nov 5, 2009
1 parent c863dc3 commit 4efa248
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 14 deletions.
32 changes: 22 additions & 10 deletions group/externallib.php
Expand Up @@ -336,11 +336,15 @@ public static function get_groupmembers_returns() {
* @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'),
)
)
)
)
);
Expand Down Expand Up @@ -373,6 +377,10 @@ public static function add_groupmembers($members) {
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) {
Expand All @@ -396,11 +404,15 @@ public static function add_groupmembers_returns() {
* @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'),
)
)
)
)
);
Expand Down
4 changes: 2 additions & 2 deletions lib/db/services.php
Expand Up @@ -67,7 +67,7 @@
'description' => 'Returns group members.',
'type' => 'read',
),
/*

'moodle_group_add_groupmembers' => array(
'classname' => 'moodle_group_external',
'methodname' => 'add_groupmembers',
Expand All @@ -83,7 +83,7 @@
'description' => 'Deletes group members.',
'type' => 'delete',
),
*/

// === user related functions ===
/*
'moodle_user_create_users' => array(
Expand Down
2 changes: 1 addition & 1 deletion version.php
Expand Up @@ -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
50 changes: 49 additions & 1 deletion webservice/testclient_forms.php
Expand Up @@ -208,7 +208,6 @@ public function get_params() {
}
}


class moodle_group_get_groupmembers_form extends moodleform {
public function definition() {
global $CFG;
Expand Down Expand Up @@ -257,3 +256,52 @@ public function get_params() {
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;
}
}

0 comments on commit 4efa248

Please sign in to comment.