UNIMOODLE / moodle-mod_certifygen

GNU General Public License v3.0
0 stars 0 forks source link

Borrado de una plantilla con modelos que hacen uso de ella #49

Open tmas0 opened 1 week ago

tmas0 commented 1 week ago

Buenas,

Existe un problema a la hora de eliminar plantillas, dónde se deja borrar aun teniendo modelos asociados. Se debería asegurar la integridad referencial, o bien, no dejando eliminar si hay esa dependencia, o bien, estableciendo algún valor por defecto (no recomendado).

Una vez borrado y vas a ver los modelos generados se genera el correspondiente error de SQL:

Model Manager

Can't find data record in database table tool_certificate_templates.

[More information about this error](https://docs.moodle.org/401/en/error/moodle/invalidrecord)
Debug info: SELECT * FROM {tool_certificate_templates} WHERE id = ?
[array (
0 => 1,
)]
Error code: invalidrecord
Stack trace:

    line 1654 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown
    line 1630 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
    line 460 of /lib/classes/persistent.php: call to moodle_database->get_record()
    line 65 of /lib/classes/persistent.php: call to core\persistent->read()
    line 83 of /mod/certifygen/classes/template.php: call to core\persistent->__construct()
    line 126 of /mod/certifygen/classes/tables/modellist_table.php: call to mod_certifygen\template::instance()
    line 857 of /lib/tablelib.php: call to mod_certifygen\tables\modellist_table->col_template()
    line 2074 of /lib/tablelib.php: call to flexible_table->format_row()
    line 2198 of /lib/tablelib.php: call to table_sql->build_table()
    line 79 of /mod/certifygen/classes/external/getmodellisttable_external.php: call to table_sql->out()
    line 75 of /mod/certifygen/classes/output/views/model_view.php: call to mod_certifygen\external\getmodellisttable_external::getmodellisttable()
    line 84 of /mod/certifygen/classes/output/renderer.php: call to mod_certifygen\output\views\model_view->export_for_template()
    line 495 of /lib/outputrenderers.php: call to mod_certifygen\output\renderer->render_model_view()
    line 53 of /mod/certifygen/modelmanager.php: call to plugin_renderer_base->render()

Un saludo

elena3ip commented 1 week ago

Eso es un fallo del plugin tool_certificate, no de mod_certifygen. Si haces los mismos pasos con el mod_coursecertificate que tambien hace uso de tool_certificate, te va a pasar lo mismo.

jmerinogranizo commented 4 days ago

Podría existir la posibilidad de implementar un observador que en el caso de borrar una plantilla asociado a un modelo, como no podemos impedir eso a nivel del plugin de workplace certificate, al menos: