|
|
(177 intermediate revisions by 6 users not shown) |
Line 1: |
Line 1: |
| {{Moodle_2.0}}
| | #REDIRECT [[Adding_a_web_service_to_a_plugin]] |
| First you need to read and execute the administration manual [[Setting_up_a_web_service]]. Now you should be more familiar about how web services are set into Moodle.
| |
| | |
| == Preparation ==
| |
| Identify:
| |
| * core function(s) you need to call (or/and write)
| |
| * the param types that new to be send to your web service function
| |
| * the returned value types
| |
| * the user capabilities (it most of the time the ones logically required by the core functions)
| |
| | |
| == declare your web service functions/services ==
| |
| All web services function should be declare in the db/services.php of each component. Optionally, any larger services built up of several functions.
| |
| | |
| <code php>
| |
| $functions = array(
| |
| 'moodle_user_create_users' => array( //web service name (unique in all Moodle)
| |
| 'classname' => 'moodle_user_external', //class containing the function implementation
| |
| 'methodname' => 'create_users', //name of the function into the class
| |
| 'classpath' => 'user/externallib.php', //file containing the class (only used for core external function, not needed if your file is 'component/externallib.php'),
| |
| 'description' => 'create some users',
| |
| 'type' => 'write'
| |
| )
| |
| );
| |
| | |
| //following is optional
| |
| $services = array(
| |
| 'servicename' => array(
| |
| 'functions' => array ('functionname', 'secondfunctionname'), //web service function name
| |
| 'requiredcapability' => 'some/capability:specified',
| |
| 'restrictedusers' = >1,
| |
| 'enabled'=>0, //used only when installing the services
| |
| )
| |
| );
| |
| </code>
| |
| | |
| The function name is arbitrary, but it must be globally unique so we highly recommend using the component name as prefix (and "moodle" for core functions).
| |
| | |
| The actual param description and description of returned values can be obtained from the same class by static method calls by adding '_parameters' and '_returns' to the methodname value.
| |
| | |
| == define your external functions ==
| |
| This example include a function implementation. It has been extracted from the group/externallib.php. This file is a good example of externallib.php files.
| |
| <code php>
| |
| class moodle_group_external extends external_api { //see following chapter 'function implementation' to have a look to the external_api class
| |
| | |
| ...
| |
| | |
| public static function add_member($groupid, $userid) {
| |
| $params = self::validate_parameters(self::add_member_parameters(), array('groupid'=>$groupid, 'userid'=>$userid));
| |
| | |
| // all the parameter/behavioural checks and security constrainsts go here,
| |
| // throwing exceptions if neeeded and and calling low level (grouplib)
| |
| // add_member() function that will be one in charge of the functionality without
| |
| // further checks.
| |
| | |
| }
| |
| | |
| ...
| |
| | |
| }
| |
| </code>
| |
| | |
| == define your external function description ==
| |
| == test your web service function with default Moodle test client ==
| |
| == create your own client ==
| |
| | |
| ==See also==
| |
| * [[Web services]]
| |
| * [[External services security]]
| |
| * [[External services description]]
| |
| * [[Setting_up_a_web_service]]
| |
| | |
| [[Category:Web Services]]
| |