]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-12886 more external groups api
authorPetr Skoda <skodak@moodle.org>
Thu, 5 Nov 2009 22:06:49 +0000 (22:06 +0000)
committerPetr Skoda <skodak@moodle.org>
Thu, 5 Nov 2009 22:06:49 +0000 (22:06 +0000)
group/externallib.php
lib/db/services.php
version.php
webservice/testclient_forms.php

index c706ecb85eeb29d084215c79124f8be924f2a1d7..99fbf847bbd94fb2c018a9bb260b4959c9b7103d 100644 (file)
@@ -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'),
+                        )
+                    )
                 )
             )
         );
index 8ca0d9b9b9525f4b1bcbc5ef59dfaec1734bcde5..c2ed8f446f2864f7c2c750583967b43af26a94c6 100644 (file)
@@ -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(
index 388db8abc3e90a10f4a0a35a44f4eede00378232..81a3d75af20d0b60b6a6667e0c57ccd1f78604ce 100644 (file)
@@ -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
index 6ce6b6b5727c6a82a5b34bae10f66d77e67c9ff7..e9e64e66faf9599b4b6dbb51466f0cc41be961bf 100644 (file)
@@ -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;
+    }
+}