Вот подход, который должен работать:
- Включение отслеживания завершения в настройках курса
- Настройка завершения операций для действий в курсе, которые должны быть включены в расчет прогресса
- Используйте функцию
core_completion_get_activities_completion_status
WS, чтобы получить статус завершения каждого действия.Это использует основную функцию get_activities_completion_status
для возврата массива, включающего каждое действие и статус его завершения. - Пройдите по возвращенному массиву, чтобы рассчитать прогресс на основе выполненных действий.
Ваш вычисленный результат должен соответствовать% прогресса, сообщенному для каждого курса в панели мониторинга, которая появляется при использовании Boost и многих других тем.
Один случай, когда это может не дать ожидаемого результата.(будь то использование веб-сервисов или в основных отчетах о завершении / продвижении Moodle), если ваш курс включает в себя такие действия, как пакеты SCORM, где можно отслеживать прогресс в рамках действия.
Например, если ваш курс включает 5 действий / пакетов SCORM, и каждое из них выполнено на 50%, но правила завершения действий для каждого действия SCORM требуют наличия статуса «завершен» или «пройден» для пакета,Ход выполнения курса, скорее всего, будет отображаться как 0% (0 из 5) в Moodle или в данных, возвращаемых функцией WS, поскольку все пакеты еще выполняются.Вы можете рассчитать прогресс, используя прогресс в рамках действия, но обычно требуется немного настроек, чтобы вернуть то, что вы ожидаете.
Удачи с этим!