在Moodle 2.6中,我创建了一个新的网页external.php
并将其复制到服务器上的根文件夹中。该网页包含一个活动(我自己的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>";
}
?>
非常感谢!
答案 0 :(得分:0)
经过几天的文档搜索并询问有经验的人我可以找到解决方案。
我换了:
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 的课程的学生以及管理员访问我的代码。 / p>
课程主页打开时,可以在浏览器地址栏中找到课程ID。
我希望它对其他Moodle管理员有所帮助。