2016-04-21 27 views
0

我是Moodle中的新成员,我有一项任务是创建具有课程管理员角色的本地插件。在我的系统中,我有大量的用户在特定的课程中,他们是不同角色的类别。其中一些与学生有关系,其余都是经理。对于我的情况,我收到了客户的请求,要求创建一个本地插件,用于根据学生记录生成多个报告。我已经成功制作了插件,但条件是这个插件只能访问那些已经作为经理注册的人。我试着用下面的代码,我在下面分享你,但没有成功。现在只有管理员可以访问本地插件的其余部分收到来自moodle状态的错误消息。本地插件权限问题不适用于课程管理器 - Moodle

["Sorry, but you do not currently have permissions to do that Project view "]

不知道它将如何解决。

请指教。

本地/项目/ DB/access.php

defined('MOODLE_INTERNAL') || die(); 

$capabilities = array(

    'local/project:view' => array(
     'riskbitmask' => RISK_PERSONAL, 
     'captype' => 'read', 
     'contextlevel' => CONTEXT_SYSTEM, 
     'archetypes' => array(
      'manager' => CAP_ALLOW 
     ), 
    'local/project:manage' => array(
     'captype' => 'write', 
     'contextlevel' => CONTEXT_SYSTEM, 
     'archetypes' => array(
      'manager' => CAP_ALLOW 
     ) 
    ) 
    ) 
); 

本地/项目/ header.php文件

require(dirname(__FILE__).'/../../config.php'); 
global $DB; 
//Get the system context 
$url = new moodle_url('/local/project/index.php'); 

require_login(); 
require_capability('local/project:view', context_system::instance()); 

回答

0

我已经成功实现了针对moodle权限的目标。我已使用has_capability方法与课程上下文并检查与require_capability真实性。以下程序仅与adminmanager一起使用,其他人只有在他们从网站管理中获得完整权限时才能访问。

本地/项目/ DB/access.php

defined('MOODLE_INTERNAL') || die(); 

$capabilities = array(

    'local/project:view' => array(
     'riskbitmask' => RISK_SPAM, 
     'captype' => 'write', 
     'contextlevel' => CONTEXT_COURSE, 
     'archetypes' => array(
      'manager' => CAP_ALLOW, 
     ), 
    ) 
); 

本地/项目/ header.php文件

require(dirname(__FILE__).'/../../config.php'); 
require_login(); 

//Get the system context 
$context = context_course::instance($course_id); 

if (!has_capability('local/project:view', $context)) { 
    require_capability('local/project:view', $context); 
} 
1

没有所谓的 '课程管理' 标准的Moodle的作用。

有一个叫'经理'('经理')和另一个叫'课程创建者'('coursecreator')的角色。

如果您启用了debugging,那么如果代码有任何问题(例如,如果您尚未运行安装/升级过程来创建功能,或者您未增加插件版本号),则可能会收到一些额外的警告消息在创建能力之后)。

+0

我多了一个解决方案,但它的定制我直接检查用户权限与数据库的为我工作,因为我需要但问题是这种方法不提供我的错误功能,显示像moodle错误消息。你可以请指教我怎么可以显示相同的错误消息,这些消息的Moodle使用 '如果(计数($ resposne)== 0){ \t回声“很抱歉,您目前没有权限做项目”; \t exit(); }' –

+0

如果您不得不手动检查数据库中的权限,那么您的能力定义或能力检查有问题。在我为Moodle开发的这些年里,require_capability()和has_capability()对我来说正确工作了几千次。 – davosmith

+0

我的情况如何使用能力与require_capability()和has_capability()...有没有解决方案提供的Moodle提供 –