В блок добавил настройки /db/access.php
access.php только добавляет новые разрешения для роли, кот. вы можете управлять на странице редактирования соответствующей роли.
'clonepermissionsfrom' => 'moodle/course:manageactivities'
Это что такое в блоке? В блоке должны «клонироваться только 2 разрешения: moodle/site:manageblocks и/или moodle/my:manageblocks
чтобы блок был доступен для Преподавателей и Администраторов
Для Администратора не нужно ничего настраивать, блок ему и так будет доступен всегда и везде.
С преподавателем сложнее, так как роль преподавателя назначается в контексте курса (модуля), а блок вы хотите использовать в личном кабинете. Это совсем другой контекст системы, тут преподавателей не бывает.
Выбор, кому что и где показывать, осуществляется проверкой наличия у пользователя того или иного права в том или ином контексте.
Т. е., сначала определяете контекст, где находится в данное время пользователь в системе, потом проверяете у него разрешение на необходимое действие, есть разрешение - показываете блок, нет - не показываете.
Попробуйте такой access.php, если блок будете использовать только на домашней странице:
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/record_studio:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'editingteacher' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
);
А в файле block_record_studio.php нужно прописать в выводе содержимого блока (function get_content) проверку права на добавление данного блока на домашнюю страницу:
$context = $this->page->context;
if (has_capability('block/record_studio:myaddinstance', $context)) {
Тут содержимое блока
}
Не забудьте в этом же файле указать, что блок может добавляться только на домашнюю страницу:
public function applicable_formats() {
return array('my' => true);
}