elan-ev / CliqrPlugin

This plugin is a software clicker solution with a strong emphasis on ease of use for lecturers and students.
http://cliqr.de
GNU General Public License v2.0
2 stars 13 forks source link

Call to a member function getTaskIds() on null #141

Open schuettloeffel-elsa opened 1 year ago

schuettloeffel-elsa commented 1 year ago

Beim Aufruf in einer Veranstaltung bekommen wir inzwischen nur folgenden Fehler:

2022/11/22 08:38:29 [error] 2224698#2224698: *891464563 FastCGI sent in stderr: "PHP message: Error: Call to a member function getTaskIds() on null in /srv/studip_git/public/plugins_packages/elan-ev/CliqrPlugin/lib/DB/Assignment.php:224
Stack trace:
#0 /srv/studip_git/public/plugins_packages/elan-ev/CliqrPlugin/app/controllers/app.php(80): Cliqr\DB\Assignment->getTaskGroupJSON()
#1 /srv/studip_git/lib/models/SimpleCollection.class.php(434): Cliqr\AppController->Cliqr\{closure}(Object(Cliqr\DB\Assignment), 2)
#2 /srv/studip_git/public/plugins_packages/elan-ev/CliqrPlugin/app/controllers/app.php(81): SimpleCollection->map(Object(Closure))
#3 /srv/studip_git/public/plugins_packages/elan-ev/CliqrPlugin/app/controllers/app.php(65): Cliqr\AppController->getTaskGroupsJSON(Object(SimpleORMapCollection))
#4 /srv/studip_git/vendor/trails/trails.php(557): Cliqr\AppController->index_action()
#5 /srv/studip_git/app/controllers/studip_controller.php(110): Trails_Controller->perform('')
#6 /srv/studip_git/vendor/trails/trails.php(154): StudipController->perform('')
#7 /srv/studip_git/vendor/" while reading response header from upstream, client: xxx, server: [studip.uni-hannover.de](http://studip.uni-hannover.de/), request: "GET /plugins.php/cliqrplugin/?cid=1e0a31c4ec1baea22fcbf062b3751831 HTTP/2.0", upstream: "[fastcgi://unix:/run/php/php-fpm-studip.sock:](fastcgi://unix/run/php/php-fpm-studip.sock:)", host: "[studip.uni-hannover.de](http://studip.uni-hannover.de/)", referrer: "https://studip.uni-hannover.de/dispatch.php/course/overview?cid=1e0a31c4ec1baea22fcbf062b3751831"
luniki commented 1 year ago

In welcher Version von Stud.IP testet du das? Ich habe das gerade im aktuellen Stand vom main-Branch ausprobiert und erhalte diesen Fehler nicht.

schuettloeffel-elsa commented 1 year ago

Hm ich kann das auch nur in einer bestimmten Veranstaltung reproduzieren, in anderen Veranstaltungen funktioniert es. Version ist 5.1

schuettloeffel-elsa commented 7 months ago

Moin, Fehler tritt bei uns immer noch auf. Habe gerade mal geschaut, offenbar verschwinden irgendwie Einträge aus der Datenbank: SELECT * FROM `etask_assignments` WHERE test_id NOT IN (SELECT id FROM etask_tests)

liefert bei uns 150 Einträge. Hast du eine Idee wie das passieren kann?

schuettloeffel-elsa commented 7 months ago

Inzwischen läuft bei uns die Version 5.3.1

luniki commented 7 months ago

Im Cliqr-Plugin kann das vom Code her nicht passieren. Allerdings habe ich eine Stelle im Stud.IP-Kern-Code gefunden (https://gitlab.studip.de/studip/studip/-/blob/5.3/lib/classes/UserManagement.class.php?ref_type=heads#L1012), in der zwar Tests aber nicht deren Assignments gelöscht werden. Das passiert immer dann, wenn Nutzende gelöscht werden. In dem Fall werden auch alle Tests dieser Nutzenden gelöscht (aber eben nicht deren Assignments).

schuettloeffel-elsa commented 7 months ago

Danke für die Recherche, dann mache ich mal ein Biest dafür auf. Kann ich bei uns gefahrlos die falschen Einträge löschen?

DELETE FROM `etask_assignments` WHERE test_id NOT IN (SELECT id FROM etask_tests)
schuettloeffel-elsa commented 7 months ago

Ah hab dein Ticket schon gefunden

luniki commented 7 months ago

Danke für die Recherche, dann mache ich mal ein Biest dafür auf. Kann ich bei uns gefahrlos die falschen Einträge löschen?

DELETE FROM `etask_assignments` WHERE test_id NOT IN (SELECT id FROM etask_tests)

Ja, das ist an sich korrekt. Das Model gibt das so vor: https://gitlab.studip.de/studip/studip/-/blob/main/lib/models/eTask/Test.php?ref_type=heads#L57

Cliqr hält sich auch an diese Regelung, da aber die Tabellen auch von anderen "Aufgaben-Tools" (z.B. Stud.IP-Umfragen) genutzt wird, kann ich nicht 100% versichern, dass die das auch so sehen.