otago/moodle

Moodle Web服务

维护者

详细信息

github.com/otago/moodle

源代码

问题

安装次数: 5,540

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 6

分支: 3

公开问题: 0

类型:silverstripe-vendormodule

v5.0 2024-08-06 22:16 UTC

This package is auto-updated.

Last update: 2024-09-06 22:33:15 UTC


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清单。

location of overview in moodle

Moodle配置摘要

  1. 创建一个用于服务的用户
  2. 为此用户创建一个角色,并授予访问Web服务的权限
  3. 将新角色分配给用户
  4. 创建外部服务 创建外部服务 注意:Moodle 2.5用户必须在数据库中手动设置短名称 使用phpmyadmin设置短名称
  5. 将您要调用的函数添加到外部服务 在“外部服务”页面下添加函数

要求

  1. cURL PHP模块
  2. Moodle 2.2+ 用于 JSON/REST
  3. SilverStripe 3.x

集成测试

  1. 在测试实例上创建MoodleExamplePage
  2. 保存并加载页面
  3. 更新MoodleExamplePage.php到相关用户ID
  4. 使用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