Details

    • Type: Task
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.0
    • Fix Version/s: 2.0
    • Component/s: Web Services
    • Labels:
      None
    • Affected Branches:
      MOODLE_20_STABLE
    • Fixed Branches:
      MOODLE_20_STABLE

      Description

      Delete one or more users

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              Hide
              dcastro David Castro added a comment -

              We have implemented this functionality only by userid .

              If we want delete some users by different criteria, we could do some functions like delete_users_by_id, delete_users_by_idnumber, delete_users_by_email, etc.

              Or do it in a function delete_users ($array, $criteria);
              where $criteria is a string

              {id, idnumber or email}

              and $array is the array with values for specified criteria.

              Show
              dcastro David Castro added a comment - We have implemented this functionality only by userid . If we want delete some users by different criteria, we could do some functions like delete_users_by_id, delete_users_by_idnumber, delete_users_by_email, etc. Or do it in a function delete_users ($array, $criteria); where $criteria is a string {id, idnumber or email} and $array is the array with values for specified criteria.
              Hide
              granludo Ludo ( Marc Alier) added a comment -

              This is a general problem that we will find in all the API.
              Shall we have just one funcion with complex parameters or do we want a looong list of functions.
              Anyway : Maintenance is the issue.
              IMO we should have only one function to do the actual work (so it can be modified when needed): The currently implemented delete_user(id) or similar.
              The we can have a set of functions (or just one with complex parameters) that using this one allows more functionality.

              Insigths?

              Show
              granludo Ludo ( Marc Alier) added a comment - This is a general problem that we will find in all the API. Shall we have just one funcion with complex parameters or do we want a looong list of functions. Anyway : Maintenance is the issue. IMO we should have only one function to do the actual work (so it can be modified when needed): The currently implemented delete_user(id) or similar. The we can have a set of functions (or just one with complex parameters) that using this one allows more functionality. Insigths?
              Hide
              jerome Jérôme Mouneyrac added a comment - - edited

              Hi David, hi ludo,
              I read the specification (http://docs.moodle.org/en/Development:Web_services) and there is one delete_users() function with an array as parameter. Is that your question?

              Show
              jerome Jérôme Mouneyrac added a comment - - edited Hi David, hi ludo, I read the specification ( http://docs.moodle.org/en/Development:Web_services ) and there is one delete_users() function with an array as parameter. Is that your question?
              Hide
              granludo Ludo ( Marc Alier) added a comment -

              According to current spec: The function receives and array with

              idnumber or
              email or
              id or
              login

              OK; NOW how do I know WHAT IS a value in the array ?
              This is the question...

              Show
              granludo Ludo ( Marc Alier) added a comment - According to current spec: The function receives and array with – idnumber or email or id or login – OK; NOW how do I know WHAT IS a value in the array ? This is the question...
              Hide
              dcastro David Castro added a comment -

              Hi,

              We think that the easiest way to solve this functionality is deleting only by id or idnumber, because all of them are unique on Moodle.

              Show
              dcastro David Castro added a comment - Hi, We think that the easiest way to solve this functionality is deleting only by id or idnumber, because all of them are unique on Moodle.
              Hide
              pigui Jordi Piguillem Poch added a comment -

              Some more PHPDoc from spec

              /**

              • Deletes an user
              • User is marked as deleted
              • All it's role assignments are destroyed
              • @private ?
              • @param string $field Possible values:
              • <ul>
              • <li>id</li>
              • <li>idnumber</li>
              • <li>login</li>
              • <li>email</li>
              • </ul>
              • @param string $value
              • @return boolean
                */
                function delete_user($field, $values){
                }

              /**

              • Deletes several users
              • Users are marked as deleted
              • All their role assignments are destroyed
              • @param string $field Possible values:
              • <ul>
              • <li>id</li>
              • <li>idnumber</li>
              • <li>login</li>
              • <li>email</li>
              • </ul>
              • @param array $values
              • @uses delete_user
                *
              • @return boolean
                */
                function delete_users($field, $values){
                }
              Show
              pigui Jordi Piguillem Poch added a comment - Some more PHPDoc from spec /** Deletes an user User is marked as deleted All it's role assignments are destroyed @private ? @param string $field Possible values: <ul> <li>id</li> <li>idnumber</li> <li>login</li> <li>email</li> </ul> @param string $value @return boolean */ function delete_user($field, $values){ } /** Deletes several users Users are marked as deleted All their role assignments are destroyed @param string $field Possible values: <ul> <li>id</li> <li>idnumber</li> <li>login</li> <li>email</li> </ul> @param array $values @uses delete_user * @return boolean */ function delete_users($field, $values){ }
              Hide
              tusefomal Tusefomal added a comment -

              I've just added in the CVS the add_user function working with an associative array as it's suggested. It can be find here:

              http://cvs.moodle.org/contrib/patches/dfws/webservice/apis/user.lib.php?revision=1.4&view=markup

              The name of the function is:

              array mdl_user_delete_instances($userids, $idtype='idnumber')

              The particles of the name are explained here: http://tracker.moodle.org/browse/MDL-13126?focusedCommentId=56209#action_56209

              The function gets one mandatory param and am optional one, and returns an associative array of identifier=>boolean. The hot point of this function is that users can be identified by several fields:

              -username
              -email
              -internal id
              -idnumber (in my point of view is the best way)

              So, to implement this function we decided to allow all of them. The default is 'idnumber' but, you can pass an array of internal ids, usernames or emails too, just by specify it in the second parameter.

              Show
              tusefomal Tusefomal added a comment - I've just added in the CVS the add_user function working with an associative array as it's suggested. It can be find here: http://cvs.moodle.org/contrib/patches/dfws/webservice/apis/user.lib.php?revision=1.4&view=markup The name of the function is: array mdl_user_delete_instances($userids, $idtype='idnumber') The particles of the name are explained here: http://tracker.moodle.org/browse/MDL-13126?focusedCommentId=56209#action_56209 The function gets one mandatory param and am optional one, and returns an associative array of identifier=>boolean. The hot point of this function is that users can be identified by several fields: -username -email -internal id -idnumber (in my point of view is the best way) So, to implement this function we decided to allow all of them. The default is 'idnumber' but, you can pass an array of internal ids, usernames or emails too, just by specify it in the second parameter.
              Hide
              tusefomal Tusefomal added a comment -

              As Martin wants (and Pigui remember me), in delete_users the first param will be a criteria and the second an array of users. This makes default value impossible, but it's may be more polite. New code can be found threre:

              http://cvs.moodle.org/contrib/patches/dfws/webservice/apis/user.lib.php?revision=1.5&view=markup

              Show
              tusefomal Tusefomal added a comment - As Martin wants (and Pigui remember me), in delete_users the first param will be a criteria and the second an array of users. This makes default value impossible, but it's may be more polite. New code can be found threre: http://cvs.moodle.org/contrib/patches/dfws/webservice/apis/user.lib.php?revision=1.5&view=markup
              Hide
              dcastro David Castro added a comment -

              Implemented and finished on CVS.

              Show
              dcastro David Castro added a comment - Implemented and finished on CVS.

                People

                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    24/Nov/10