Asistentes de finalización
Leer y cambiar el progreso de un estudiante.
Leer el progreso
pom_lms_get_course_completion( int $course_id ): int
Devuelve el porcentaje de finalización del usuario actual para un curso, de 0 a 100.
$percent = pom_lms_get_course_completion( $course_id );
Los visitantes no registrados siempre obtienen 0: el progreso pertenece a las cuentas.
Cómo se calcula el porcentaje
completed lessons ÷ every lesson attached to the course × 100
redondeado a un número entero.
De ello se derivan dos comportamientos, y ambos sorprenden a la gente:
- El denominador incluye las lecciones sin sección, que no aparecen en el esquema. Un curso con lecciones huérfanas nunca podrá alcanzar el 100 %.
- El denominador es dinámico. Añadir una lección reduce de inmediato el porcentaje de todos los estudiantes; eliminar una lo aumenta.
Si estás creando una visualización de progreso, no almacenes el número en caché entre solicitudes: puede cambiar sin que el estudiante haga nada.
Cambiar el progreso
pom_lms_check_lesson( int $course_id, int $lesson_id, bool $status = true )
Marca una lección como completada para el usuario actual o, con false, la marca como incompleta. Devuelve el conjunto actualizado de lecciones completadas para ese curso.
pom_lms_check_lesson( $course_id, $lesson_id ); // complete
pom_lms_check_lesson( $course_id, $lesson_id, false ); // not complete
Los visitantes no registrados se ignoran: la llamada no hace nada.
Pasa el curso correcto
El progreso se guarda por curso. Pasar un curso al que la lección no pertenece registra una finalización que ningún porcentaje contará jamás.
Resuelve el curso adjunto de la lección en lugar de asumirlo.
Cuándo lo llama el propio plugin
Según el modo de finalización global del sitio, abrir una lección la marca como completada o el estudiante la marca en el esquema.
Si tu integración también marca lecciones como completadas, ten en cuenta que en el modo automático el plugin probablemente ya lo ha hecho. Marcar una lección como completada dos veces es inofensivo (el conjunto se deduplica), pero una función que marca lecciones como completadas en modo manual anula el propósito de ese ajuste.
Comprueba el modo antes de crear cualquier cosa que complete lecciones en nombre del estudiante.
Comprueba el acceso antes de completar
Marcar una lección como completada para un estudiante que no puede abrirla produce un progreso que no se ha ganado, en un curso que no puede ver.
if ( pom_lms_user_can_access_lesson( $lesson_id, $course_id ) ) {
pom_lms_check_lesson( $course_id, $lesson_id );
}
Lo que la finalización no hace
- No desbloquea nada. No hay bloqueo secuencial en POM LMS.
- No dispara ningún evento. No hay ningún hook para «lección completada» ni «curso completado»; si necesitas uno, llama a tu propio código junto a
pom_lms_check_lesson(). - No caduca ni se restablece.
- No afecta al acceso en ninguno de los dos sentidos.
Lo que no se registra
Sin marcas de tiempo, sin recuentos de intentos, sin tiempo empleado, sin historial por lección. El registro es el conjunto de lecciones completadas y nada más.
Una función que necesite saber «¿cuándo terminaron?» necesita su propio almacenamiento.
Informes
No hay ningún informe integrado ni ninguna forma compatible de leer el progreso de otro usuario. pom_lms_get_course_completion() responde para el usuario actual.
Una integración que necesite informes por cohorte debe registrar sus propios eventos a medida que los estudiantes progresan, en la propia solicitud del estudiante, en lugar de intentar leer el progreso fuera de banda.