如何从Moodle 1.9获取组/分组ID

时间:2012-11-28 16:19:41

标签: php mysql moodle

我想从Moodle获取一个Group / Grouping ID来定制课程的UI。我需要向特定的组/分组显示资源。我已经设置了Moodle。我已登录,因为不同的用户只能访问分配给该用户组的资源。

我的主题有一个自定义侧边栏菜单,其中包含指向该课程用户的页面,作业和所有其他资源的链接。我需要使用PHP if / else语句向菜单中的用户显示正确的Resources,具体取决于Group / Grouping ID的值。我在Moodle.com上找到了一些文档。我想出了这个破坏我主题的代码。

<?php 
        // Get the course module id from a post or get request.
        $id = required_param('id', PARAM_INT); 

        // Get the course module. 
        $cm = get_coursemodule_from_id('forum', $id, 0, false, MUST_EXIST)

        // Get the current group id.
        $currentgroupingid = groups_get_activity_grouping($cm);


        switch($currentgroupingid) {
            case "1":
                echo "Group 1";
            break;
            case "2":
                echo "Group 2";
            break;
            case "3":
                echo "Group 3";
            break;
            default:
            break;
        }?>

此代码不起作用,我不知道为什么。在文档中有关于如何访问有关组和分组的信息的示例。 Moodle Group API

1 个答案:

答案 0 :(得分:0)

在我的Moodle课程中,有三个不同的小组。我需要能够根据用户的组注册密钥动态更改网页资源上链接的href。这就是我所做的:


<div class="enrolment-key" style="display:none;">
<?php
    // Grab current User's group from Database By ID
    $sqlGROUPMEMBERS = "SELECT * FROM mdl_groups_members WHERE userid='$USER->id'";

    // Put Query in new Varible
    $resultGROUPMEMBERS = mysql_query($sqlGROUPMEMBERS);

    // While $row = group id of user
    while($row = mysql_fetch_array($resultGROUPMEMBERS)){
        $groupID = $row["groupid"];
    }

    // Grab Enrolment Key by the Group ID
    $sqlGROUP = "SELECT * FROM mdl_groups WHERE id=$groupID";

    // Put Query in new Varible
    $resultENROLMENTKEY = mysql_query($sqlGROUP);

    // While $row = group enrolment key for that user
    while($row = mysql_fetch_array($resultENROLMENTKEY)){
        echo $row["enrolmentkey"];
    }
?>
</div>
<script>
$(document).ready(function(){
var baseURL = "https://www.surveymonkey.com/s/";
var endURL = $('.enrolment-key').html();

$(".survey-link").attr("href", baseURL + endURL);
 });
 </script>
<a class="survey-link">Link</a>

可能有一种更好的方法可以做到这一点,但对于像我这样的Noob来说这很好。