Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建高级报告-Moodle_Php_Reporting_Moodle - Fatal编程技术网

Php 创建高级报告-Moodle

Php 创建高级报告-Moodle,php,reporting,moodle,Php,Reporting,Moodle,我真的是Moodle的新手,我已经拥有了这个高级功能,可以尽快为客户的Moodle站点构建。我已经通过Moodle的文档和我能找到的任何其他在线资源阅读了很多关于Moodle的信息,但是我也想到了从这里的专家那里得到一些帮助 我期待着建立一个高级报告功能,不同的角色用户有权查看高级报告高层、概述级、个人和他们的层次结构 报告数据将基于组织层次结构,即经理可以查看部门报告,在部门内他可以选择任何部门,在部门内,他可以选择任何区域,最终选择该区域内的任何个人 我需要为此编写一个单独的插件,以便将来的

我真的是Moodle的新手,我已经拥有了这个高级功能,可以尽快为客户的Moodle站点构建。我已经通过Moodle的文档和我能找到的任何其他在线资源阅读了很多关于Moodle的信息,但是我也想到了从这里的专家那里得到一些帮助

我期待着建立一个高级报告功能,不同的角色用户有权查看高级报告高层、概述级、个人和他们的层次结构

报告数据将基于组织层次结构,即经理可以查看部门报告,在部门内他可以选择任何部门,在部门内,他可以选择任何区域,最终选择该区域内的任何个人


我需要为此编写一个单独的插件,以便将来的升级不会过度使用这些更改。有谁能给我一个出发点,告诉我怎么做?任何链接、指针或建议都会很有用,因为我现在对Moodle完全陌生?

您需要将此插件放入/local文件夹,并通过添加到主导航块的链接提供对其页面的访问。这是通过将以下函数放入/local/myplugin/lib.php来完成的,该函数将自动拾取:

myplugin_extends_navigation(global_navigation $navigation) {
    // Read the docs for get_context_instance and look at other uses to see what params you need
    $usercontext = get_context_instance(CONTEXT_USER, $USER->id, MUST_EXIST);

    // You will need to define some capabilities or use existing ones. If the user is allowed, they see the link below
    if (has_capability('whatevercapability', $context)) {

        // Adds a link
        $node_schedule = $nodecoursework->add('Submission Schedule',
                                              new moodle_url('/local/myplugin/sub.php'),
                                              navigation_node::TYPE_CUSTOM,
                                              'Submission Schedule',
                                              'Submission Schedule');
    }
}
在本例中,报告页面作为单独的文件sub.php放置在文件夹中。寻找html_表类来生成报告,以及它基于sql的子类


制作本地插件的文档是,您可以看到一个示例。

哦,谢谢您的回复。首先,我创建了一个层次结构,ppl可以在这个层次结构中创建新的部门、部门和区域,并相互分配。最后将用户放入dis逻辑组。我在dis中通过在/blocks/folder中创建一个插件计算用户层次结构,并在/report/folder中创建一个插件,将这些层次结构考虑在内,让不同级别的用户查看不同的报告。迪斯韦也对吗?也许未来会有太多复杂的事情发生,所以我不会这么做。听起来很合理,虽然/报告是非标准的,所以很多零碎的东西,比如导航链接,运行单元测试等,都不会扫描它,这可能是一个缺点。你是如何建立层次结构的?角色/上下文系统应该已经为您提供了这些内容。您能理解吗?你所说的角色/上下文是什么意思?正如我前面提到的,我已经创建了一个新的插件,包含部门、部门、区域的表,以及一个单独的表,该表将部门映射到部门,将区域映射到部门。现在剩下的是将用户放入这些层次结构中,并根据其层次结构设置权限。完成后,我将开始我的报告插件。我的意思是,如果你建立课程类别的层次结构,并将其命名为部门、分区、区域等,那么你可以为用户分配角色,例如教师、学生、系主任。你也可以设置自己的角色,并说明他们在这些类别中拥有哪些权限。每个类别都是一个上下文,其中可以有角色中的用户,也可以覆盖某些权限,例如,某个人可以是a部门的教师,但您已将其设置为该部门的教师不能标记文章,只能查看它们。您也可以为个人用户这样做。权限是层叠的,因此a系的教师也将是其下所有部分和区域的教师,除非您在较低的上下文中重写其角色。这里的更多信息假设你在2.x上,查看站点管理->用户->权限->定义角色,在站点管理->课程->添加/编辑课程中创建层次分类,然后单击其中一个并在旁边的块中查找设置->分配角色。我强烈建议使用这个系统,而不是重新发明轮子