Здравствуйте!
Занимаюсь реализацией плагина, в одном из элементов которого необходимо записать пользователя в глобальную группу (созданы заранее). Это необходимо для того, чтобы предоставить пользователю возможность доступа к элементу курса (тесту).
Записать на курс удалось, но с добавлением в группу возникли проблемы: вызываю метод add_group_members класса core_group_external, но сталкиваюсь с ошибкой "Вы не можете выполнять функции в контексте курса (id курса:{$a->catid}). Сообщение об ошибке контекста: Обнаружена ошибка кодирования, она должна быть исправлена программистом: Cannot call moodle_page::add_body_class after output has been started."
Пользователь, под учетной записью которого выполняется скрипт, имеет сконфигурированную роль, которой разрешено добавление в группы. Но даже под учётной записью администратора такая же ошибка.
Исключение возникает во фрагменте:
$context = context_course::instance($group->courseid, IGNORE_MISSING);
try {
self::validate_context($context);
} catch (Exception $e) {
$exceptionparam = new stdClass();
$exceptionparam->message = $e->getMessage();
$exceptionparam->courseid = $group->courseid;
throw new moodle_exception('errorcoursecontextnotvalid' , 'webservice', '', $exceptionparam);
}
Насколько я понимаю, проблема в проверке контекста. Пользователь имеет глобальную роль в системе.
Есть ли возможность в такой ситуации добавить пользователя в группу? Может быть, есть другой метод класса или вообще другой способ?