[BUG-002] Error Fatal: Attempt to assign property "sortorder" on null (Moodle Gradebook) bugs (Bug Tracker)
Página: [BUG-002] Error 500: Exception - Attempt to assign property "sortorder" on null
Estado: 🟢 Corregido (Hotfix aplicado)
Severidad: Crítica (P0/P1) - Bloquea la visualización del libro de calificaciones.
Módulo: Moodle Core / Gradebook (Libro de Calificaciones)
🔍 Descripción
Se reportó un error que impedía el acceso a secciones del curso tras eliminar una categoría en el libro de calificaciones. El sistema intentaba asignar un orden de prioridad (sortorder) a un objeto que ya no existía en la base de datos, resultando en el mensaje: Exception - Attempt to assign property "sortorder" on null.
👣 Pasos para Reproducir (Origen)
-
Acceder a la configuración del Libro de Calificaciones.
-
Eliminar una Categoría de calificación existente.
-
El sistema no elimina correctamente la referencia en la tabla de ítems, dejando un registro "huérfano".
-
Intentar cargar la página de calificaciones del curso backend/frontend
🛠️ Datos Técnicos
-
Error:
Attempt to assign property "sortorder" on null -
Causa: Un ítem en
mdl_grade_itemsde tipocategoryapuntaba a uniteminstanceque ya no existía enmdl_grade_categories. -
ID de Curso afectado: 204.
✅ Resolución (Hotfix de Base de Datos)
Para corregir la inconsistencia de datos, se siguieron estos pasos:
1. Localización del registro huérfano: Se ejecutó el siguiente SQL para encontrar ítems de categoría que no tienen una categoría real asociada:
SELECT id, courseid, itemname, itemtype, categoryid, iteminstance
FROM mdl_grade_items
WHERE itemtype = 'category'
AND iteminstance NOT IN (SELECT id FROM mdl_grade_categories);
Resultado: Se identificó el ID 5,467 como el registro conflictivo.
2. Acción correctiva: Se procedió a eliminar manualmente el registro huérfano de la tabla de ítems:
DELETE FROM mdl_grade_items WHERE id = 5467;
Prevención futura: Si este error es recurrente, se debe revisar si hay algún plugin de terceros interfiriendo con el borrado estándar de Moodle o ejecutar un script de limpieza de base de datos (admin/cli/check_database_schema.php).
