有没有办法只使用“教师”级别的访问权限来获取 Moodle 网站的版本信息?似乎此功能在 1.9.7 及更高版本中已删除。我正在尝试自动化上传测试的过程并且拥有版本信息会非常方便。
7 回答
为了查看moodle的当前版本,你只需要阅读这个文件: http://yourmoodlesite/lib/upgrade.txt
以下是有关它的更多信息: https ://github.com/moodle/moodle/blob/MOODLE_29_STABLE/lib/upgrade.txt
抱歉,这些说明可能看起来有些晦涩难懂,但这是我能找到的获得只有“教师”级别访问权限的 Moodle 版本的唯一方法。
作为一名教师,您应该能够创建任何课程的备份(尽管此功能可能已在您使用的 Moodle 中删除)。备份只是 zip 文件,但具有 .mbz 扩展名。如果将此扩展名更改为 .zip,您将能够提取 zip。解压缩 zip 后,打开“moodle_backup.xml”,在那里您应该在顶部附近的某处找到“moodle_release”项目,为您提供用于创建备份的 Moodle 版本。
当没有管理员或文件访问权限时,最肮脏的做法是与版本之间的公共文件不同。例如,index.php 文件在 v1.x 上可以是 1024Kb 长度,在 1.2 版本上可以是 1033Kb 长度。
此外,检查一组文件的存在/不存在是一种常用方法(css、html、js、图标等)
如果我找到特定的解决方案,我将再次编辑。
第一次编辑:对于 19 或更高版本,您可以直接从https://github.com/moodle/moodle/blob/MOODLE_19_STABLE/README.txt 的 readme.txt 文件中检查版本
作为一名助教,我不想搞乱备份,这听起来很奇怪,但考虑到我独特的位置,合理(对我来说)。
在我使用的具有 TA 权限的 moodle 的实现中,页面底部有一个指向 moodle 文档的链接,如果您打开此链接,它会将您带到带有moodle_url/moodle_version/___
.
也许这是我的系统所特有的,但我相信这是默认设置。
如果您甚至没有实例上的帐户,您仍然可以找到版本。API 中的任何身份验证错误都将返回以下形式的错误消息:
[{
"error":true,
"exception":{
"message":"Course or activity not accessible.",
"errorcode":"requireloginerror",
"link":"https:\/\/moodle.example.com\/",
"moreinfourl":"http:\/\/docs.moodle.org\/36\/en\/error\/moodle\/requireloginerror"
}
}]
moreinfourl 包含一个近似的版本号(在本例中为 3.6)。对我来说,当我访问实例的登录页面时请求了这个页面 - 一个 POST 请求
https://moodle.example.com/lib/ajax/service.php?sesskey=JQrdIcgMn4&info=core_fetch_notifications
我的辅助函数在这里: https ://gist.github.com/tigusigalpa/af051a9112512b1b0369572b5dbea2fd
function checkMoodleVersion($version, $checkfor = 'all', $compare = '<=') {
global $CFG;
$versions = [
'3.1' => [
'version' => '2016052300',
'release' => '3.1'
],
'3.2' => [
'version' => '2016120500',
'release' => '3.2'
],
'3.3' => [
'version' => '2017051500',
'release' => '3.3'
],
'3.4' => [
'version' => '2017111300',
'release' => '3.4'
],
'3.5' => [
'version' => '2018051700',
'release' => '3.5'
],
'3.6' => [
'version' => '2018120300',
'release' => '3.6'
]
];
switch ($checkfor) {
case 'all':
if (isset($versions[$version]['version'])) {
return version_compare($versions[$version]['version'], $CFG->version, $compare) &&
version_compare($version, $CFG->release, $compare);
}
break;
case 'version':
case 'release':
if (isset($versions[$version][$checkfor])) {
return version_compare($versions[$version][$checkfor], $CFG->$checkfor, $compare);
}
break;
}
return false;
}
默认情况下不是,因为这可用于收集过时的 Moodle 站点。
您可以创建一个脚本来相当容易地做到这一点,例如:
<?php
require_once('config.php');
echo 'Version: '.$CFG->version;
echo 'Humand readable release: '.$CFG->release;