Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-26250

Create a web service function that enrols users to a certain course

    Details

    • Testing Instructions:
      Hide

      This web service function is for developer so it needs to be tested by developer.

      In order to test, create a web service client and call the web service function. A good test is to try to to enrol two users in two differents courses.

      Look at http://docs.moodle.org/en/Web_Services for information how to create a web service client.

      Show
      This web service function is for developer so it needs to be tested by developer. In order to test, create a web service client and call the web service function. A good test is to try to to enrol two users in two differents courses. Look at http://docs.moodle.org/en/Web_Services for information how to create a web service client.
    • Affected Branches:
      MOODLE_20_STABLE
    • Fixed Branches:
      MOODLE_20_STABLE
    • Pull from Repository:
      git@github.com:mouneyrac/moodle.git
    • Pull Master Branch:
      MDL-26250-final6

      Description

      Something like that (I'm just writing this on the fly, need to finish):

      moodle_enrol_users:
      ------------------

      public static function enrol_users_parameters() {
              return new external_function_parameters(
                  array(
                      'enrolments' => new external_multiple_structure(
                          new external_single_structure(
                              array(
                                  'roleid'    => new external_value(PARAM_INT, 'Role to assign to the user'),
                                  'userid'    => new external_value(PARAM_INT, 'The user that is going to be enrolled'),
                                  'contextid' => new external_value(PARAM_INT, 'The context to enrol the user role in'),
                              )
                          )
                      )
                  )
              );
          }
       
      /**
           * Manual enrolment of users
           *
           * @param array $enrolments  An array of manual user enrolment
           * @return null
           */
          public static function enrol_users($enrolments) {
              global $DB, $USER;
       
              $params = self::validate_parameters(self::enrol_users_parameters(), array('enrolments'=>$enrolments));
       
              $transaction = $DB->start_delegated_transaction();
       
              foreach ($params['enrolments'] as $enrolment) {
                  // Ensure the current user is allowed to run this function in the enrolment context
                  $context = get_context_instance_by_id($enrolment['contextid']);
                  self::validate_context($context);
                  require_capability('moodle/role:assign', $context); //TODO: there is probably a capability related to enrolment, look for it and check on it it.
       
                  $instance = $DB->get_record('enrol', array('courseid' => $context->instanceid, 'enrol' => 'manual'));
                  $enrol = enrol_get_plugin('manual');
                  $enrol->enrol_user($instance, $enrolment['userid'], $enrolment['roleid']);
       
                  //TODO: maybe return a array of success/fail
              }
       
              $transaction->allow_commit();
          }
       
       /**
           * Returns description of method result value
           * @return external_description
           */
          public static function enrol_users_returns() {
              return null;
          }
       

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              jerome Jérôme Mouneyrac created issue -
              jerome Jérôme Mouneyrac made changes -
              Field Original Value New Value
              Description Something like that (I'm just writing this on the fly, need to finish):

              moodle_enrol_users:
              ------------------

              {code}
              public static function enrol_users_parameters() {
                      return new external_function_parameters(
                          array(
                              'enrolments' => new external_multiple_structure(
                                  new external_single_structure(
                                      array(
                                          'roleid' => new external_value(PARAM_INT, 'Role to assign to the user'),
                                          'userid' => new external_value(PARAM_INT, 'The user that is going to be assigned'),
                                          'contextid' => new external_value(PARAM_INT, 'The context to assign the user role in'),
                                      )
                                  )
                              )
                          )
                      );
                  }

              /**
                   * Manual enrolment of users
                   *
                   * @param array $enrolments An array of manual user enrolment
                   * @return null
                   */
                  public static function enrol_users($enrolments) {
                      global $DB, $USER;

                      $params = self::validate_parameters(self::enrol_users_parameters(), array('enrolments'=>$enrolments));

                      $transaction = $DB->start_delegated_transaction();

                      foreach ($params['enrolments'] as $enrolment) {
                          // Ensure the current user is allowed to run this function in the enrolment context
                          $context = get_context_instance_by_id($enrolment['contextid']);
                          self::validate_context($context);
                          require_capability('moodle/role:assign', $context); //TODO: there is probably a capability related to enrolment, look for it and check on it it.

                          $instance = $DB->get_record('enrol', array('courseid' => $context->instanceid, 'enrol' => 'manual'));
                          $enrol = enrol_get_plugin('manual');
                          $enrol->enrol_user($instance, $enrolment['userid'], $enrolment['roleid']);

                          //TODO: maybe return a array of success/fail
                      }

                      $transaction->allow_commit();
                  }

               /**
                   * Returns description of method result value
                   * @return external_description
                   */
                  public static function role_assign_returns() {
                      return null;
                  }

              {code}
              Something like that (I'm just writing this on the fly, need to finish):

              moodle_enrol_users:
              ------------------

              {code}
              public static function enrol_users_parameters() {
                      return new external_function_parameters(
                          array(
                              'enrolments' => new external_multiple_structure(
                                  new external_single_structure(
                                      array(
                                          'roleid' => new external_value(PARAM_INT, 'Role to assign to the user'),
                                          'userid' => new external_value(PARAM_INT, 'The user that is going to be enrolled'),
                                          'contextid' => new external_value(PARAM_INT, 'The context to enrol the user role in'),
                                      )
                                  )
                              )
                          )
                      );
                  }

              /**
                   * Manual enrolment of users
                   *
                   * @param array $enrolments An array of manual user enrolment
                   * @return null
                   */
                  public static function enrol_users($enrolments) {
                      global $DB, $USER;

                      $params = self::validate_parameters(self::enrol_users_parameters(), array('enrolments'=>$enrolments));

                      $transaction = $DB->start_delegated_transaction();

                      foreach ($params['enrolments'] as $enrolment) {
                          // Ensure the current user is allowed to run this function in the enrolment context
                          $context = get_context_instance_by_id($enrolment['contextid']);
                          self::validate_context($context);
                          require_capability('moodle/role:assign', $context); //TODO: there is probably a capability related to enrolment, look for it and check on it it.

                          $instance = $DB->get_record('enrol', array('courseid' => $context->instanceid, 'enrol' => 'manual'));
                          $enrol = enrol_get_plugin('manual');
                          $enrol->enrol_user($instance, $enrolment['userid'], $enrolment['roleid']);

                          //TODO: maybe return a array of success/fail
                      }

                      $transaction->allow_commit();
                  }

               /**
                   * Returns description of method result value
                   * @return external_description
                   */
                  public static function enrol_users_returns() {
                      return null;
                  }

              {code}
              dougiamas Martin Dougiamas made changes -
              Labels triaged
              Fix Version/s STABLE backlog [ 10463 ]
              dougiamas Martin Dougiamas made changes -
              Fix Version/s STABLE Sprint 6 [ 10535 ]
              Fix Version/s STABLE backlog [ 10463 ]
              jerome Jérôme Mouneyrac made changes -
              Status Open [ 1 ] In Progress [ 3 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue will be resolved by PULL-374 [ PULL-374 ]
              jerome Jérôme Mouneyrac made changes -
              Status In Progress [ 3 ] Ready for review [ 10010 ]
              Resolution Fixed [ 1 ]
              skodak Petr Skoda made changes -
              Resolution Fixed [ 1 ]
              Status Ready for review [ 10010 ] Reopened [ 4 ]
              jerome Jérôme Mouneyrac made changes -
              Status Reopened [ 4 ] In Progress [ 3 ]
              dougiamas Martin Dougiamas made changes -
              Fix Version/s STABLE Sprint 7 [ 10540 ]
              Fix Version/s STABLE Sprint 6 [ 10535 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue will be resolved by PULL-449 [ PULL-449 ]
              jerome Jérôme Mouneyrac made changes -
              Status In Progress [ 3 ] Ready for review [ 10010 ]
              Resolution Fixed [ 1 ]
              skodak Petr Skoda made changes -
              Resolution Fixed [ 1 ]
              Status Ready for review [ 10010 ] Reopened [ 4 ]
              jerome Jérôme Mouneyrac made changes -
              Status Reopened [ 4 ] In Progress [ 3 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue is blocked by MDL-26822 [ MDL-26822 ]
              jerome Jérôme Mouneyrac made changes -
              Status In Progress [ 3 ] Ready for review [ 10010 ]
              Resolution Fixed [ 1 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue will be resolved by PULL-457 [ PULL-457 ]
              skodak Petr Skoda made changes -
              Resolution Fixed [ 1 ]
              Status Ready for review [ 10010 ] Reopened [ 4 ]
              jerome Jérôme Mouneyrac made changes -
              Fix Version/s STABLE Sprint 8 [ 10541 ]
              Fix Version/s STABLE Sprint 7 [ 10540 ]
              jerome Jérôme Mouneyrac made changes -
              Status Reopened [ 4 ] In Progress [ 3 ]
              jerome Jérôme Mouneyrac made changes -
              Status In Progress [ 3 ] Ready for review [ 10010 ]
              Resolution Fixed [ 1 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue will be resolved by PULL-515 [ PULL-515 ]
              jerome Jérôme Mouneyrac made changes -
              Resolution Fixed [ 1 ]
              Status Ready for review [ 10010 ] Reopened [ 4 ]
              jerome Jérôme Mouneyrac made changes -
              Status Reopened [ 4 ] In Progress [ 3 ]
              tsala Helen Foster made changes -
              Fix Version/s STABLE backlog [ 10463 ]
              Fix Version/s STABLE Sprint 8 [ 10541 ]
              moodle.com moodle.com made changes -
              Fix Version/s STABLE Sprint 8 [ 10541 ]
              Fix Version/s STABLE backlog [ 10463 ]
              dougiamas Martin Dougiamas made changes -
              Fix Version/s STABLE Sprint 9 [ 10550 ]
              Fix Version/s STABLE Sprint 8 [ 10541 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue will be resolved by PULL-590 [ PULL-590 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue has been marked as being related by MDL-27229 [ MDL-27229 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue will be resolved by PULL-691 [ PULL-691 ]
              jerome Jérôme Mouneyrac made changes -
              Status In Progress [ 3 ] Ready for review [ 10010 ]
              Resolution Fixed [ 1 ]
              jerome Jérôme Mouneyrac made changes -
              Fix Version/s STABLE Sprint 10 [ 10551 ]
              Fix Version/s STABLE Sprint 9 [ 10550 ]
              dougiamas Martin Dougiamas made changes -
              Workflow MDL Workflow [ 67471 ] MDL Full Workflow [ 76458 ]
              dougiamas Martin Dougiamas made changes -
              Status Waiting for review [ 10010 ] Closed [ 6 ]
              dougiamas Martin Dougiamas made changes -
              Resolution Fixed [ 1 ]
              Status Closed [ 6 ] Reopened [ 4 ]
              jerome Jérôme Mouneyrac made changes -
              Status Reopened [ 4 ] Development in progress [ 3 ]
              jerome Jérôme Mouneyrac made changes -
              Pull Master Diff URL https://github.com/mouneyrac/moodle/commit/c978f59a93358b94404caa94d552e8829e8f0b22
              Pull Master Branch MDL-26250-final5
              Pull from Repository git@github.com:mouneyrac/moodle.git
              jerome Jérôme Mouneyrac made changes -
              Pull 2.0 Diff URL https://github.com/mouneyrac/moodle/commit/c3b6ff99b101ee49542bd8c530435c12ea921fe5
              Pull 2.0 Branch MDL-26250-20STABLE
              Peer reviewer andyjdavis
              jerome Jérôme Mouneyrac made changes -
              Status Development in progress [ 3 ] Waiting for peer review [ 10012 ]
              jerome Jérôme Mouneyrac made changes -
              Testing Instructions This web service function is for developer so it needs to be tested by developer.

              In order to test, create a web service client and call the web service function. A good test is to try to to enrol two users in two differents courses.

              Look at http://docs.moodle.org/en/Web_Services for information how to create a web service client.
              jerome Jérôme Mouneyrac made changes -
              Peer reviewer andyjdavis rwijaya
              jerome Jérôme Mouneyrac made changes -
              Link This issue has a non-specific relationship to MDL-27320 [ MDL-27320 ]
              jerome Jérôme Mouneyrac made changes -
              Link This issue has been marked as being related by MDL-27321 [ MDL-27321 ]
              moodle.com moodle.com made changes -
              Original Estimate 0 minutes [ 0 ]
              Remaining Estimate 0 minutes [ 0 ]
              Status Waiting for peer review [ 10012 ] Development in progress [ 3 ]
              jerome Jérôme Mouneyrac made changes -
              Status Development in progress [ 3 ] Waiting for integration review [ 10010 ]
              samhemelryk Sam Hemelryk made changes -
              Labels triaged ci pullweek-2011-18
              samhemelryk Sam Hemelryk made changes -
              Labels ci pullweek-2011-18
              samhemelryk Sam Hemelryk made changes -
              Labels triaged
              samhemelryk Sam Hemelryk made changes -
              Attachment test.php [ 23771 ]
              samhemelryk Sam Hemelryk made changes -
              Status Waiting for integration review [ 10010 ] Integration review in progress [ 10004 ]
              Integrator samhemelryk
              samhemelryk Sam Hemelryk made changes -
              Status Integration review in progress [ 10004 ] Waiting for testing [ 10005 ]
              samhemelryk Sam Hemelryk made changes -
              Labels triaged ci pullweek-2011-18
              rwijaya Rossiani Wijaya made changes -
              Status Waiting for testing [ 10005 ] Testing in progress [ 10011 ]
              Tester rwijaya
              rwijaya Rossiani Wijaya made changes -
              Status Testing in progress [ 10011 ] Tested [ 10006 ]
              rwijaya Rossiani Wijaya made changes -
              Link This issue has a non-specific relationship to MDL-27388 [ MDL-27388 ]
              stronk7 Eloy Lafuente (stronk7) made changes -
              Labels ci pullweek-2011-18 ci emergencypull pullweek-2011-18
              stronk7 Eloy Lafuente (stronk7) made changes -
              Status Tested [ 10006 ] Closed [ 6 ]
              Fix Version/s 2.0.3 [ 10537 ]
              Resolution Fixed [ 1 ]
              stronk7 Eloy Lafuente (stronk7) made changes -
              Labels ci emergencypull pullweek-2011-18 emergencypull pullweek-2011-18
              stronk7 Eloy Lafuente (stronk7) made changes -
              Integration date 6/May/11
              stronk7 Eloy Lafuente (stronk7) made changes -
              Fix Version/s STABLE Sprint 10 [ 10551 ]

                People

                • Votes:
                  6 Vote for this issue
                  Watchers:
                  9 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    5/May/11