Moodle 中具有灵活访问控制的附加网页
Additional web page with flexible access control in Moodle
在 Moodle 2.6 中,我创建了一个新网页 external.php
并将其复制到服务器上的根文件夹中。该网页包含一个 activity(我自己的 HTML 和 JavaScript),特定课程的参与者必须可以访问该网页。我现在有 3 门课程(我们称它们为 A、B 和 C),我希望网页内容对 A 和 B 的参与者可见,但对 C 的参与者不可见。
到目前为止,我设法通过 isloggedin()
限制了访问,它工作正常,但这只是一种妥协。
所以我的问题是:是否可以将访问此网页(它不是课程的一部分,也无意成为)的参与者限制为课程 A 和 B,但不是 C?
这是我的代码 external.php
:
<?php
require_once('config.php');
// Open the page if the user is logged in
if (isloggedin()) {
$PAGE->set_context(get_system_context());
$PAGE->set_pagelayout('standart');
$PAGE->set_title("Experimental page");
$PAGE->set_heading("External");
$PAGE->set_url($CFG->wwwroot . '/external.php');
// Adding navbar
$PAGE->navbar->ignore_active();
$strHome = "important";
$PAGE->navbar->add($strHome, new moodle_url('external.php'));
echo $OUTPUT->header();
// Variables for the content (html and javascript)
$jscr = ""; // some code
$htmlscr = ""; // some code
// Actual content goes here
echo $htmlscr;
echo $jscr;
echo $OUTPUT->footer();
}
// Else output error message
else {
echo "<h2>Please log in to procede</h2>";
}
?>
非常感谢!
在文档中搜索并询问有经验的人几天后,我找到了解决方案。
我替换了:
if (isloggedin()) {
MY CODE INSIDE
}
与:
if ((is_enrolled(context_course::instance(18), $USER)) or (is_enrolled(context_course::instance(20), $USER)) or is_siteadmin()) {
MY CODE INSIDE
}
此代码允许注册 ID 为 18 和 20 的课程的学生访问 MY CODE INSIDE 以及 管理员.
课程id可以在打开课程主页面的浏览器地址栏中找到。
希望对其他 Moodle 管理员有所帮助。
在 Moodle 2.6 中,我创建了一个新网页 external.php
并将其复制到服务器上的根文件夹中。该网页包含一个 activity(我自己的 HTML 和 JavaScript),特定课程的参与者必须可以访问该网页。我现在有 3 门课程(我们称它们为 A、B 和 C),我希望网页内容对 A 和 B 的参与者可见,但对 C 的参与者不可见。
到目前为止,我设法通过 isloggedin()
限制了访问,它工作正常,但这只是一种妥协。
所以我的问题是:是否可以将访问此网页(它不是课程的一部分,也无意成为)的参与者限制为课程 A 和 B,但不是 C?
这是我的代码 external.php
:
<?php
require_once('config.php');
// Open the page if the user is logged in
if (isloggedin()) {
$PAGE->set_context(get_system_context());
$PAGE->set_pagelayout('standart');
$PAGE->set_title("Experimental page");
$PAGE->set_heading("External");
$PAGE->set_url($CFG->wwwroot . '/external.php');
// Adding navbar
$PAGE->navbar->ignore_active();
$strHome = "important";
$PAGE->navbar->add($strHome, new moodle_url('external.php'));
echo $OUTPUT->header();
// Variables for the content (html and javascript)
$jscr = ""; // some code
$htmlscr = ""; // some code
// Actual content goes here
echo $htmlscr;
echo $jscr;
echo $OUTPUT->footer();
}
// Else output error message
else {
echo "<h2>Please log in to procede</h2>";
}
?>
非常感谢!
在文档中搜索并询问有经验的人几天后,我找到了解决方案。
我替换了:
if (isloggedin()) {
MY CODE INSIDE
}
与:
if ((is_enrolled(context_course::instance(18), $USER)) or (is_enrolled(context_course::instance(20), $USER)) or is_siteadmin()) {
MY CODE INSIDE
}
此代码允许注册 ID 为 18 和 20 的课程的学生访问 MY CODE INSIDE 以及 管理员.
课程id可以在打开课程主页面的浏览器地址栏中找到。
希望对其他 Moodle 管理员有所帮助。