2015-11-03 3 views
0

У меня есть 2 courses с различными видами деятельности в них, где все мои users: enrolled.Удаленный пользователь в Moodle все еще отображается в таблице завершения курса

После того как я полностью delete, некоторые пользователи, данные для завершения курса пользователя по-прежнему находятся в таблице mdl_course_completions.

Пользователи не отображаются в курсе, ни оценки не хранятся, а только данные завершения.

Я не хочу каждый раз удалять пользователей вручную с mdl_course_completionstable в database. Есть ли обходной путь в коде?

ответ

1

Вы удаляете пользователей напрямую через SQL-запрос? Я бы предложил всегда использовать основные методы (например, вызывать скрипт, который вызывает delete_user ($ user)), чтобы плагины могли удалять оставшиеся данные из соответствующих таблиц.

В зависимости от того, как вы удаляете пользователей и вашу версию Moodle следующее может быть полезным:

Если вы имеете в виду, что пользователи будут удалены через передний конец, то вы можете быть в состоянии внедриться в ядро событий API для выполнения дополнительных задач очистки

Events API documentation

в частности есть событие для «user_deleted», которые вы можете использовать. Вам нужно будет установить наблюдатель, который устанавливает обратный вызов пользовательского сценария, т.е.

$observers = array(

    array(
     'eventname' => '\core\event\user_deleted', 
     'includefile' => '/path/to/file', 
     'callback' => 'delete_cleanup', 
    ), 

); 

More information on event observers