PHP добавление пользователей в глобальные группы add_group_members

Re: PHP добавление пользователей в глобальные группы add_group_members

от tsit ucp -
Количество ответов: 0
Спасибо!
Я всё перепутал: мне нужно было всё-таки в локальные группы курсов записывать, а не в глобальные.

Проверил запись в глобальные группы: при наличии прав с помощью метода core_cohort_external::add_cohort_members(array($cohort)) происходит запись в группу и на тот курс, в котором есть элементы, у которых указана данная группа в качестве ограничения доступа к элементу (тесту в моём случае).

РЕШЕНО:

В чём была ошибка - я пытался вызвать метод на странице, на которой вначале присутствует вывод шапки (echo $OUTPUT->header();).
Как и указывалось в исключении: "Cannot call moodle_page::add_body_class after output has been started."

Если вызывать метод до первого использования $OUTPUT или на станице, на которой он вообще не используется, то пользователь/пользователи успешно добавляются в группы.

Рабочий пример:

require("$CFG->dirroot/group/externallib.php");

core_group_external::add_group_members([
    'members' => [
        'groupid' => 1075,
        'userid' => 12487,
    ]
]);

или

require("$CFG->dirroot/group/externallib.php");

$members = Array(
'members' => [
        'groupid' => 1075,
        'userid' => 12487,
    ],
    [
        'groupid' => 1075,
        'userid' => 12488,
    ],
);

core_group_external::add_group_members($members);

Причём, если пользователь уже записан в группу, ошибок при выполнении не возникает.