otago / moodle
Moodle Web服务
v5.0
2024-08-06 22:16 UTC
Requires
README
通过REST API轻松将Moodle连接到SilverStripe。
项目设置
- 将moodle/文件夹放入您的SilverStripe目录或使用composer require otago/moodle
- 创建_config/moodle.yml
- 运行/dev/build?flush=all
您已安装此模块!文件examples/MoodleExamplePage.php.example包含三个示例Web服务请求,以帮助您开始。
您需要使用由Moodle提供的密码/用户名或令牌配置moodle.yml。(在网站管理 > 高级功能 > 插件 > Web服务 > 管理令牌下)
示例moodle.yml文件
---
Name: MoodleWebservice
---
OP\MoodleWebservice:
authentication:
username: my_moodle_username
password: my_password
service: webservice_name
statictoken:
locationTest: http://moodle.yourtertiaryaddress.com/
locationDev: http://moodle.yourtertiaryaddress.com/
locationLive: http://moodle.yourtertiaryaddress.com/
您的Moodle实例需要配置以接受Web服务请求。
示例调用
/**
* returns a user's profile
* @return \Dataobject|null
*/
public function getUserProfile() {
// connect to moodle
$moodle = MoodleWebservice::connect();
if(!$moodle) {
return Debug::message('Failed to connect to Moodle Webservice');
}
// create a user list containing one generic user
$params = array('userlist' => array(
(object) array(
'userid'=>'2',
'courseid' => '1'
)
));
// call the function core_user_get_course_user_profiles
$userprofile = $moodle->call ('core_user_get_course_user_profiles', $params);
// return it
return $userprofile->Data();
}
示例 2:获取用户的课程列表
$moodle = MoodleWebservice::connect();
if(!$moodle) {
return Debug::message('Failed to connect to Moodle Webservice');
}
// find programmes belonging to this user
$params = array('userid' => '2');
$courselist = $moodle->call ('core_enrol_get_users_courses', $params);
return $courselist->Data();
示例 3:通过电子邮件地址查找用户
$moodle = MoodleWebservice::connect();
if(!$moodle) {
return Debug::message('Failed to connect to Moodle Webservice');
}
$params = array('values' => array('email@op.ac.nz'), 'field' => 'email');
$userdata = $moodle->call ('core_user_get_users_by_field', $params);
return $userdata->Data();
配置Moodle
对于此模块而言,最困难的集成任务是配置您的Moodle实例以允许Web服务请求。网上有许多资源解释如何进行此操作,但最有帮助的是在网站管理 > 高级功能 > 插件 > Web服务 > 概述下的Moodle清单。
Moodle配置摘要
要求
- cURL PHP模块
- Moodle 2.2+ 用于 JSON/REST
- SilverStripe 3.x
集成测试
- 在测试实例上创建MoodleExamplePage
- 保存并加载页面
- 更新MoodleExamplePage.php到相关用户ID
- 使用
Debug::show();查看从$moodle->call()的输出中的原始输出
故障排除 & 有用工具
我建议使用Google Chrome的Advanced REST Client进行调试。
调试moodleWebService
- 确保您的$params与API文档匹配(在网站管理 > 高级功能 > 插件 > Web服务 > API文档下)
- Moodle的API文档可能难以阅读,请确保您仔细检查您使用的变量
Debug::show()您的call()die(print_r($url, true));在MoodleWebservice->call()内部- 使用Advanced REST Client确保它正常工作
常见错误
- 检测到无效参数值 - 将您的参数与Moodle Web服务客户端文档匹配
- 不允许访问 XXXXXX() 函数。 - 将此函数添加到外部服务中(参见项目设置)
- 函数返回空值 - 启用调试模式,您将看到调试信息。
贡献更改
- 在 git 上派生
- 提出问题
许可证
BSD



