Skip to main content

[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)

  1. Acceder a la configuración del Libro de Calificaciones.

  2. Eliminar una Categoría de calificación existente.

  3. El sistema no elimina correctamente la referencia en la tabla de ítems, dejando un registro "huérfano".

  4. 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_items de tipo category apuntaba a un iteminstance que ya no existía en mdl_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:

SQL
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:

SQL
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).