【问题标题】:Getting moodle version info, no admin access获取moodle版本信息,没有管理员权限
【发布时间】:2012-07-18 18:39:15
【问题描述】:

有没有办法只使用“教师”级别的访问权限来获取 Moodle 网站的版本信息?似乎此功能在 1.9.7 及更高版本中已删除。我正在尝试自动化上传测试的过程,并且拥有版本信息会很方便。

【问题讨论】:

    标签: moodle


    【解决方案1】:

    要查看当前版本的moodle,您只需阅读以下文件: http://yourmoodlesite/lib/upgrade.txt

    以下是有关它的更多信息: https://github.com/moodle/moodle/blob/MOODLE_29_STABLE/lib/upgrade.txt

    【讨论】:

    • 这帮助我轻松找到了版本。可以轻松将 GitHub 上的 upgrade.txt 内容与网站上的内容进行比较,谢谢!
    • 这不会为每次升级获取条目,例如不适用于 3.8.7 和 3.8.8。
    【解决方案2】:

    抱歉,这些说明可能看起来有些晦涩难懂,但这是我能找到的获得只有“教师”级别访问权限的 Moodle 版本的唯一方法。

    作为教师,您应该能够为您的任何课程创建备份(尽管您正在使用的 Moodle 中可能已删除此功能)。备份只是 zip 文件,但具有 .mbz 扩展名。如果将此扩展名更改为 .zip,您将能够提取 zip。解压缩 zip 后,打开“moodle_backup.xml”,您应该会在其中找到靠近顶部的某个位置的“moodle_release”项目,为您提供用于创建备份的 Moodle 版本。

    【讨论】:

    • 这种方法适用于我迄今为止测试过的所有版本的 Moodle 2.0+。一个很好的解决方法,谢谢!
    • 请注意,现在存档是.tar.gz,因此解压时请改用此扩展名。
    【解决方案3】:

    当没有管理员或文件访问权限时,最肮脏的做法是与版本之间的公共文件不同。例如,index.php 文件在 v1.x 上可以是 1024Kb 长度,在 1.2 版本上可以是 1033Kb 长度。

    此外,检查一组文件的存在/不存在是一种常用方法(css、html、js、图标等)

    如果我找到特定的解决方案,我会再次编辑。

    第一次编辑: 对于 19 或更高版本,您可以直接从 https://github.com/moodle/moodle/blob/MOODLE_19_STABLE/README.txthttps://github.com/moodle/moodle/blob/MOODLE_19_STABLE/README.txt 的 readme.txt 文件中查看版本

    【讨论】:

    • 但是index.php文件不会被用户修改吗?
    • 我不知道你问题的重点。任何文件都可以由其所有者更改,因此,检查 index.php 文件大小不是最好的主意,因为它很明显。这就是为什么我们必须挖掘一些细节。如我所见,moddle 已停止编辑非重要文件的版本以避免版本检测。
    【解决方案4】:

    作为一名 TA,我不想搞乱备份,这听起来很奇怪,但考虑到我的独特职位,这很合理(对我来说)。

    在我使用具有 TA 权限的 moodle 实现时,页面底部会显示一个 moodle 文档的链接,如果您打开此链接,它会将您带到带有 moodle_url/moodle_version/___ 的 moodle 文档页面。

    也许这是我的系统所特有的,但我相信这是默认设置。

    【讨论】:

      【解决方案5】:

      如果您甚至没有实例帐户,您仍然可以找到版本。 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
      

      【讨论】:

        【解决方案6】:

        我的辅助函数在这里: 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;
        

        }

        【讨论】:

          【解决方案7】:

          默认情况下不是这样,因为这可以用来收集过时的 Moodle 网站。

          您可以创建一个脚本来相当容易地执行此操作,例如:

          <?php
          require_once('config.php');
          echo 'Version: '.$CFG->version;
          echo 'Humand readable release: '.$CFG->release;
          

          【讨论】:

          • 要使该脚本正常工作,我不需要“管理员”访问权限吗?我不认为 config.php 对教师级别的用户可用。
          • 此脚本需要文件访问权限,而不仅仅是用户权限。对打开的 config.php 文件没有区别然后查看它...作为该评论的额外内容,对于其他类似情况,您可以根据公共文件/路径获取版本。只需在 GIT/SVN 了解版本之间的更改:D
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-15
          • 1970-01-01
          • 1970-01-01
          • 2013-04-20
          相关资源
          最近更新 更多