Я новичок в Moodle, и у меня есть задача создать локальный плагин с ролью менеджера курсов. В моей системе у меня большая часть пользователей в определенном курсе, и они являются категориями в разных ролях. Некоторые из них связаны со студентами, а остальные - менеджерами. В моем случае я получил запрос от клиента, чтобы создать локальный плагин, который генерирует несколько отчетов против записей учащихся. Я успешно сделал плагин, но условие в том, что этот плагин может получить доступ только к тем, кто поступил в курс в качестве Менеджера. Я пытаюсь использовать следующий код, который я разделяю ниже, но не добился успеха. прямо сейчас только администратор может получить доступ к локальному плагину, остальные получают сообщения об ошибках из состояния moodle.Проблема с локальным подключением плагина не применяется в менеджере курсов специально - Moodle
["Sorry, but you do not currently have permissions to do that Project view "]
Не знаю, как она будет решена.
Просьба сообщить.
местный/проект/дб/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());
У меня есть еще одно решение, но его заказ я проверил разрешение пользователя непосредственно с базой данных ее работал для меня, поскольку мне нужно, но проблема заключается в том, что этот подход не предоставляет мне функцию ошибки, которая отображается как сообщения об ошибках moodle. не могли бы вы посоветовать, как я могу отображать те же сообщения об ошибках, которые используют moodle. 'if (count ($ resposne) == 0) { \t echo 'Извините, но у вас нет прав для этого проекта'; \t exit(); } ' –
Если вам необходимо вручную проверить разрешение в базе данных, то есть что-то не так с вашим определением возможностей или проверкой возможностей. require_capability() и has_capability() работали правильно для меня тысячи раз за годы, которые я разрабатывал для Moodle. – davosmith
для моего случая, как я могу использовать возможности с require_capability() и has_capability() ... нет никакого аспекта решения moodle –