2016-04-21 49 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提供 –