Ошибка Moodle cohort_add_cohort

Я разрабатываю собственный плагин аутентификации Moodle для Moodle 2.7.

Когда пользователь проходит аутентификацию, я хочу, чтобы он был добавлен в определенную группу. Если эта когорта не существует, мне нужно, чтобы она была создана автоматически. Я использую функцию user_authenticated_hook () в моем плагине аутентификации для достижения этой цели.

Мой код для создания когорты это

$data = new stdClass();
$data->name = 'Name string';
$data->idnumber = 'ID string';
$data->description = 'Description string';
$cohortId = cohort_add_cohort($data);

Я включил cohort / lib.php в файл auth.php и объявил глобальные переменные $ DB, $ CFG и $ SESSION в первой строке функции user_authenticated_hook ().

Аутентификация работает без учета когорт. Но при наличии когортной части аутентификация не проходит, и я перенаправлен на страницу входа.

Название страницы изменено на «Ошибка», но это единственное сообщение об ошибке, которое я получаю.

Что я делаю неправильно? Я надеюсь, что кто-нибудь сможет помочь мне создать когорты и добавить участников.

0

Решение

Это может быть потому, что глобальный объект $ USER еще не существует или еще не заполнен.

У вас включена отладка? config.php?

$CFG->debug = 32767;
$CFG->debugdisplay = 1;

Может быть лучше ответить на событие user_created. Поэтому, если пользователь создан другим методом, он все равно будет добавлен в группу. например:

Создайте локальный плагин, например:

/local/add_cohorts

Создайте events.php

/local/add_cohorts/db/events.php

Который имеет что-то вроде этого

$handlers = array (
'user_created' => array (
'handlerfile'      => '/local/add_cohorts/lib.php',
'handlerfunction'  => 'local_add_cohorts_user_created',
'schedule'         => 'instant',
'internal'         => 1,
),
);

Затем в /local/add_cohorts/lib.php есть

function local_add_cohorts_user_created($user) {
// Do your cohort processing here and add the user
// Use $user->id to add to the cohort members
}

Затем создайте version.php и установите плагин, тогда обработчик событий будет зарегистрирован.

События api — https://docs.moodle.org/dev/Events_API

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]