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

Get suspended users enrolled in a course via Web Services

    XMLWordPrintable

    Details

    • Testing Instructions:
      Hide
      1. Create a course
        1. Note the ID of the course
      2. Enrol two users as students in the course
      3. Suspend enrolment for one of the students
      4. Enrol another user as a Teacher
      5. Enable the Mobile App from Site admin -> Mobile app -> Mobile settings
      6. Navigate to Site admin -> Plugins -> Web services -> Manage tokens
      7. Create a token for the teacher and note the token
      8. Make a webservice call to retrieve all users. You can do so with a curl request like:

        curl "{ADDRESS_HERE}/webservice/rest/server.php?wstoken={TOKEN_HERE}&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid={COURSEID}" | json_pp -
        

        1. Confirm that all three users were retrieved
      9. Make a webservice call to retrieve only active users 

        curl "[ADDRESS_HERE]/webservice/rest/server.php?wstoken=[TOKEN_HERE]&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid=[COURSEID]&options[1][name]=onlyactive&options[1][value]=true" | json_pp -
        

        1. Confirm that only the two active users were retrieved
      10. Make a webservice call to retrieve only suspended users 

        curl "[ADDRESS_HERE]/webservice/rest/server.php?wstoken=[TOKEN_HERE]&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid=[COURSEID]&options[0][name]=onlysuspended&options[0][value]=true" | json_pp -
        

        1. Confirm that only the one suspended user was retrieved
      11. Make a webservice call that tries to get only active and only suspended at the same time (so two parameters are passed) 

        curl "[ADDRESS_HERE]/webservice/rest/server.php?wstoken=[TOKEN_HERE]&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid=[COURSEID]&options[0][name]=onlysuspended&options[0][value]=true&options[1][name]=onlyactive&options[1][value]=true" | json_pp -
        

        1. Confirm that an exception was thrown 

          Both onlyactive and onlysuspended are set, this is probably not what you want!
          

       

      Show
      Create a course Note the ID of the course Enrol two users as students in the course Suspend enrolment for one of the students Enrol another user as a Teacher Enable the Mobile App from Site admin -> Mobile app -> Mobile settings Navigate to Site admin -> Plugins -> Web services -> Manage tokens Create a token for the teacher and note the token Make a webservice call to retrieve all users. You can do so with a curl request like: curl "{ADDRESS_HERE}/webservice/rest/server.php?wstoken={TOKEN_HERE}&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid={COURSEID}" | json_pp - Confirm that all three users were retrieved Make a webservice call to retrieve only active users  curl "[ADDRESS_HERE]/webservice/rest/server.php?wstoken=[TOKEN_HERE]&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid=[COURSEID]&options[1][name]=onlyactive&options[1][value]=true" | json_pp - Confirm that only the two active users were retrieved Make a webservice call to retrieve only suspended users  curl "[ADDRESS_HERE]/webservice/rest/server.php?wstoken=[TOKEN_HERE]&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid=[COURSEID]&options[0][name]=onlysuspended&options[0][value]=true" | json_pp - Confirm that only the one suspended user was retrieved Make a webservice call that tries to get only active and only suspended at the same time (so two parameters are passed)  curl "[ADDRESS_HERE]/webservice/rest/server.php?wstoken=[TOKEN_HERE]&wsfunction=core_enrol_get_enrolled_users&moodlewsrestformat=json&courseid=[COURSEID]&options[0][name]=onlysuspended&options[0][value]=true&options[1][name]=onlyactive&options[1][value]=true" | json_pp - Confirm that an exception was thrown   Both onlyactive and onlysuspended are set, this is probably not what you want!  
    • Affected Branches:
      MOODLE_38_STABLE
    • Fixed Branches:
      MOODLE_311_STABLE
    • Pull 3.11 Branch:
      MDL-69869-311
    • Pull Master Branch:
      MDL-69869-master
    • Sprint:
      Moppies Kanban

      Description

      I need to retrieve all Moodle suspended users enrolled in a course (participants) via REST web service functions (Moodle 3.8.4).

      Normally, I use the API function core_enrol_get_enrolled_users. Unfortunately, it does not expose the participants suspended field in the response.

      I searched the available web services for a course/participant API function that contains the suspended filed. And indeed, core_enrol_search_users seems to fit the bill (the web service call was added in 3.8, it looks like) however, the suspended property field is marked as an optional response. And here comes the problem: When I call the API function the optional suspended field is not returned (nor any other optional data).
      My first thought was: A permission issue. According to the Site Admin settings->Web Services->Funtions this API call asks for the permission moodle/course:viewparticipants.

      I tried to add it but to no avail. I cannot see how I can add these permissions to my user or role since the API user has already sys admin privileges. This should cover it already, and I can see suspensions in the UI if I browser a course using this user. So, what needs to be done to retrieve the suspended info via web services?

        Attachments

        1. Screenshot_1.jpg
          Screenshot_1.jpg
          62 kB
        2. Screenshot_2.jpg
          Screenshot_2.jpg
          50 kB
        3. Screenshot_3.jpg
          Screenshot_3.jpg
          70 kB

          Activity

            People

            Assignee:
            ilyatregubov Ilya Tregubov
            Reporter:
            floriangrimps Florian Grimps
            Peer reviewer:
            Amaia Anabitarte
            Integrator:
            Andrew Nicols
            Tester:
            Janelle Barcega
            Participants:
            Component watchers:
            Juan Leyva, Amaia Anabitarte, Carlos Escobedo, Ferran Recio, Ilya Tregubov, Sara Arjona (@sarjona)
            Votes:
            2 Vote for this issue
            Watchers:
            8 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:
              Fix Release Date:
              10/May/21

                Time Tracking

                Estimated:
                Original Estimate - 0 minutes
                0m
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 day, 43 minutes
                1d 43m