uhi67 / mdl-getnot
此包的最新版本(dev-master)没有可用的许可信息。
从moodle获取用户通知
dev-master
2021-04-11 21:01 UTC
Requires
- php: >=7.2
- ext-dom: *
- ext-iconv: *
- ext-intl: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-pdo: *
- ext-simplexml: *
- uhi67/envhelper: dev-master
This package is not auto-updated.
Last update: 2024-09-26 08:29:52 UTC
README
使用此API,您可以通过用户名(userName)查询任何用户的收到的通知和新消息(在回话通道)。API需要直接访问Moodle数据库。已测试Moodle v3.9
安装
git clone ...
从git仓库克隆项目运行
composer install
- 使
/web
可供web服务器访问 - 在apache配置文件或 .env 文件中设置环境变量。
环境变量
在apache配置文件或docker-compose.yml中设置环境变量
变量 | 描述 | 默认值或示例 |
---|---|---|
SECRET | 用于计算token的种子 | |
DELTA | 秒级的时间戳超时 | 300 |
DB_USERNAME | "moodle" | |
DB_DSN | "mysql:host=localhost;dbname=moodle" | |
DB_PASSWORD | ||
DB_PREFIX | | "mdl" | ||
DEBUG | 开发时设置为1 | 0 |
用法
使用以下GET参数调用 http://mdl-getnot.test/get_messages.php
- uid: 要查询的用户名(例如eduPersonPrincipalName)
- ts: 查询创建的Unix时间戳(对于delta秒有效)(UTC)
- token: hash('sha512', "$uid,$ts,$secret") 其中secret是配置的共享密钥
返回包含以下字段的JSON对象
- status: 'success' 或 'error'
- error: 只有当状态是 'error' 时存在,错误消息
- notifications: 整数,未读通知的数量
- messages: 整数,未读消息的数量
- requests: 整数,收到的联系请求的数量
示例 1
http://mdl-getnot.test/get_messages.php?uid=uhi@pte.hu&ts=1617994451&token=2264836edb030066264e1f06683c9c1c752ba609275a47cc2b94f7b890a55392f6a488d058c4f86dce189297ba51bd59bdc0789b681b6741babd1f692112e26e
结果
{"status":"succes","notifications":"0","messages":"1","requests":"0"}
示例 2
从另一个SAML认证的php应用程序调用以获取当前登录用户的通知。
$authSource = 'default-ps'; // ... or whatever configured
$saml = new \SimpleSAML\Auth\Simple($authSource); // SimpleSAMLphp SP >= 1.18.8 is required
$uidAttribute = 'eduPersonPrincipalName';
$secret = 'xxxx';
if($saml->isAuthenticated()) {
$attributes = $saml->getAttributes();
if(isset($attributes[$uidAttribute]) {
$uid = $attributes[$uidAttribute];
if(is_array($uid)) $uid = $uid[0];
$ts = time();
$query = [
'uid' => $uid,
'ts' => $ts,
'token' => hash('sha512', "$uid,$ts,$secret"),
];
$mdl_response = json_decode(file_get_contents($this->url.'?'.http_build_query($query)), JSON_OBJECT_AS_ARRAY);
}
}