如何使用moodle网站库添加更多的mnet服务


How to add more mnet service using moodle site base

目前,moodle支持4项mnet服务

1. Remote enrolment service 
2. Portfolio services 
3. SSO (Identity Provider)
4. SSO (Service Provider)

要添加更多的mnet服务,我需要手动添加admin/mnet/service.php的代码,然后在mnet/service中添加新的代码(如现有服务mnetservice_enrol)。

我打算为来自mnet peer的检索课程详细信息添加新的服务。get_remote_courses方法只返回课程概述而不是课程详细信息。

我找不到任何关于这是moodle官方网站的文件。这有什么恶意吗?还是专家的建议?

只想在这里发布使用webservice而不是使用mnet获取课程内容的方法。Moodle在Web Service中支持core_course_get_contents获取课程内容。

require_once('../../config.php');
$token = '5733b5401924f1e6dafefd326cafeaca';
$domainname = 'http://192.168.1.252';
$courseid = optional_param('remoteid', 0, PARAM_INT);
require_once($CFG->dirroot . '/lib/zend/Zend/Http/Client.php');
$functionname = 'core_course_get_contents';
$serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname.'&moodlewsrestformat=json';
$client = new Zend_Http_Client($serverurl);
$client->setParameterPost('courseid', $courseid);
$response = $client->request(Zend_Http_Client::POST);
echo $response;

我们可以通过在您的plugin/db中添加mnet.php来添加更多的mnet服务,格式为:

$publishes = array(
    'mnet_enrol' => array(
        'apiversion' => 1,
        'classname'  => 'enrol_mnet_mnetservice_enrol',
        'filename'   => 'enrol.php',
        'methods'    => array(
            'available_courses',
            'user_enrolments',
            'enrol_user',
            'unenrol_user',
            'course_enrolments',
            'category_enrolments'
        ),
    ),
);
$subscribes = array(
    'mnet_enrol' => array(
        'available_courses' => 'enrol/mnet/enrol.php/available_courses',
        'user_enrolments'   => 'enrol/mnet/enrol.php/user_enrolments',
        'enrol_user'        => 'enrol/mnet/enrol.php/enrol_user',
        'unenrol_user'      => 'enrol/mnet/enrol.php/unenrol_user',
        'course_enrolments' => 'enrol/mnet/enrol.php/course_enrolments',
        'category_enrolments'=>'enrol/mnet/enrol.php/category_enrolments'
    ),
);

新的mnet服务功能存储在mnet_remote_rpc表中:

+---------------------+----------------------------------------------+
| functionname        | xmlrpcpath                                   |
+---------------------+----------------------------------------------+
| user_authorise      | auth/mnet/auth.php/user_authorise            |
| keepalive_server    | auth/mnet/auth.php/keepalive_server          |
| kill_children       | auth/mnet/auth.php/kill_children             |
| refresh_log         | auth/mnet/auth.php/refresh_log               |
| fetch_user_image    | auth/mnet/auth.php/fetch_user_image          |
| fetch_theme_info    | auth/mnet/auth.php/fetch_theme_info          |
| update_enrolments   | auth/mnet/auth.php/update_enrolments         |
| keepalive_client    | auth/mnet/auth.php/keepalive_client          |
| kill_child          | auth/mnet/auth.php/kill_child                |
| available_courses   | enrol/mnet/enrol.php/available_courses       |
| user_enrolments     | enrol/mnet/enrol.php/user_enrolments         |
| enrol_user          | enrol/mnet/enrol.php/enrol_user              |
| unenrol_user        | enrol/mnet/enrol.php/unenrol_user            |
| course_enrolments   | enrol/mnet/enrol.php/course_enrolments       |
| send_content_intent | portfolio/mahara/lib.php/send_content_intent |
| send_content_ready  | portfolio/mahara/lib.php/send_content_ready  |
| category_enrolments | enrol/mnet/enrol.php/category_enrolments     |
+---------------------+----------------------------------------------+

添加新的web服务也是如此。要更新新服务,您需要在php.

中增加版本