log seats and add position to export table in lectures
re #8 (closed)
Merge request reports
Activity
1 <?php 2 class AddSeatReservationLogAction extends Migration 3 { 4 public function description() 5 { 6 return "Adds a log event action for a seat reservation"; 7 } 8 9 public function up() 10 { 11 DBManager::get()->exec(" 12 INSERT IGNORE INTO log_actions 13 SET action_id = MD5('SEAT_RESERVATION'), 14 name = 'SEAT_RESERVATION', 15 description = 'Nutzer bucht oder gibt einen Sitzplatz zurück', 16 info_template = '%user hat einen Sitzplatz in %sem(%affected) geändert.', Ich denke, hier sollten drei Informationen stehen:
- Wer hat die Aktion ausgelöst?
- Für wen wurde ein Platz reserviert/zurückgegeben?
- Um welche LV geht es?
Besser wären hier auch zwei separate Aktionen - eine für Reservierung, eine für Rückgabe. Und dann so etwas wie:
- %user hat für %user(%coaffected) einen Sitzplatz in %sem(%affected) reserviert.
- %user hat für %user(%coaffected) einen Sitzplatz in %sem(%affected) zurückgegeben.
240 240 $current_member->position = $i; 241 241 $position[$current_member->position] = true; 242 242 $current_member->store(); 243 $membername = $current_member->vorname . " " . $current_member->nachname; 244 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 245 sprintf('%s hat Sitzplatz %s erhalten', $membername, $current_member->position)); 273 276 } 274 277 275 278 foreach ($current_members as $current_member) { 279 $old_position = $current_member->position; 276 280 $current_member->position = 0; 277 281 $current_member->store(); 282 $membername = $current_member->vorname . " " . $current_member->nachname; 283 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 284 sprintf('%s hat Sitzplatz %s zurückgegeben', $membername, $old_position)); 1 <?php 2 class AddSeatReservationLogAction extends Migration 3 { 4 public function description() 5 { 6 return "Adds a log event action for a seat reservation"; 7 } 8 9 public function up() 10 { 11 DBManager::get()->exec(" 12 INSERT IGNORE INTO log_actions 13 SET action_id = MD5('SEAT_RESERVATION'), 14 name = 'SEAT_RESERVATION', 15 description = 'Nutzer bucht oder gibt einen Sitzplatz zurück', 16 info_template = '%user hat einen Sitzplatz in %sem(%affected) geändert.', Ich denke, hier sollten drei Informationen stehen:
- Wer hat die Aktion ausgelöst?
- Für wen wurde ein Platz reserviert/zurückgegeben?
- Um welche LV geht es?
Besser wären hier auch zwei separate Aktionen - eine für Reservierung, eine für Rückgabe. Und dann so etwas wie:
- %user hat für %user(%coaffected) einen Sitzplatz in %sem(%affected) reserviert.
- %user hat für %user(%coaffected) einen Sitzplatz in %sem(%affected) zurückgegeben.
240 240 $current_member->position = $i; 241 241 $position[$current_member->position] = true; 242 242 $current_member->store(); 243 $membername = $current_member->vorname . " " . $current_member->nachname; 244 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 245 sprintf('%s hat Sitzplatz %s erhalten', $membername, $current_member->position)); 273 276 } 274 277 275 278 foreach ($current_members as $current_member) { 279 $old_position = $current_member->position; 276 280 $current_member->position = 0; 277 281 $current_member->store(); 282 $membername = $current_member->vorname . " " . $current_member->nachname; 283 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 284 sprintf('%s hat Sitzplatz %s zurückgegeben', $membername, $old_position)); 1 <?php 2 class AddSeatReservationLogAction extends Migration 3 { 4 public function description() 5 { 6 return "Adds a log event action for a seat reservation"; 7 } 8 9 public function up() 10 { 11 DBManager::get()->exec(" 12 INSERT IGNORE INTO log_actions 13 SET action_id = MD5('SEAT_RESERVATION'), 14 name = 'SEAT_RESERVATION', 15 description = 'Nutzer bucht oder gibt einen Sitzplatz zurück', 16 info_template = '%user hat einen Sitzplatz in %sem(%affected) geändert.', Ich denke, hier sollten drei Informationen stehen:
- Wer hat die Aktion ausgelöst?
- Für wen wurde ein Platz reserviert/zurückgegeben?
- Um welche LV geht es?
Besser wären hier auch zwei separate Aktionen - eine für Reservierung, eine für Rückgabe. Und dann so etwas wie:
- %user hat für %user(%coaffected) einen Sitzplatz in %sem(%affected) reserviert.
- %user hat für %user(%coaffected) einen Sitzplatz in %sem(%affected) zurückgegeben.
Wäre dann vielleicht auch eine dritte Aktion - für Batch-Aktionen - sinnvoll? Sonst gäbe es Probleme mit dem coaffected user Eintrag (wer wird eingetragen, wenn man nur einen Logeintrag anlegt?), und weil die ganze Gruppenliste mit Sitzplätzen geloggt wird, als "aktueller Zustand" sozusagen. Da wäre dann, wenn man doch bei allen betreffenden Nutzern einen Logeintrag erstellt, nur die letzte/aktuellste Liste richtig und man hätte sehr viel unnötiges Logging betrieben, je nachdem wie viele Studenten ein-/um-/ausgetragen werden.
Edited by Viktoria WiebeFür die Sitzplatzreservierung in der Veranstaltung ist das auch so (wenn mehrere Personen ausgetragen werden, wird auch für jede Person ein Log-Eintrag erstellt). Bei Gruppen habe ich mich entschieden, den Log-Eintrag in die Batch-Funktion einzufügen, damit der Gruppenstatus (also alle Gruppenteilnehmer mit Nummer) komplett eingetragen wird, wegen der Problematik mit der sich ändernden Nummerierung. Es würde natürlich gehen, auch da für jeden Nutzer einen Log-Eintrag zu erstellen, die Info wäre aber nicht besonders nützlich, da sich die Nummern vermutlich alle nochmal ändern, bis die letzte Person eingetragen ist. Und die anderen schon eingetragenen Teilnehmernummern stimmen dann natürlich auch nicht mehr und sind nicht mehr aktuell.
240 240 $current_member->position = $i; 241 241 $position[$current_member->position] = true; 242 242 $current_member->store(); 243 $membername = $current_member->vorname . " " . $current_member->nachname; 244 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 245 sprintf('%s hat Sitzplatz %s erhalten', $membername, $current_member->position)); 273 276 } 274 277 275 278 foreach ($current_members as $current_member) { 279 $old_position = $current_member->position; 276 280 $current_member->position = 0; 277 281 $current_member->store(); 282 $membername = $current_member->vorname . " " . $current_member->nachname; 283 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 284 sprintf('%s hat Sitzplatz %s zurückgegeben', $membername, $old_position)); 240 240 $current_member->position = $i; 241 241 $position[$current_member->position] = true; 242 242 $current_member->store(); 243 $membername = $current_member->vorname . " " . $current_member->nachname; 244 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 245 sprintf('%s hat Sitzplatz %s erhalten', $membername, $current_member->position)); 273 276 } 274 277 275 278 foreach ($current_members as $current_member) { 279 $old_position = $current_member->position; 276 280 $current_member->position = 0; 277 281 $current_member->store(); 282 $membername = $current_member->vorname . " " . $current_member->nachname; 283 StudipLog::log('SEAT_RESERVATION', $this->course_id, null, 284 sprintf('%s hat Sitzplatz %s zurückgegeben', $membername, $old_position)); 2054 2057 2055 2058 // Remove from associated status groups 2056 2059 foreach (Statusgruppen::findBySeminar_id($this->id) as $group) { 2057 $group->removeUser($user_id, true); 2060 $removed = $group->removeUser($user_id, true); 2061 // Logging seat reservation by group list number 2062 if (count($group->dates) && $removed) { 2063 $info = 'Sitzplätze in Statusgruppe ' . $group->name . ' zurückgegeben. Aktuelle Sitzplätze: '; 2064 $group->sortMembersAlphabetic(); 2061 // Logging seat reservation by group list number 2062 if (count($group->dates) && $removed) { 2063 $info = 'Sitzplätze in Statusgruppe ' . $group->name . ' zurückgegeben. Aktuelle Sitzplätze: '; 2064 $group->sortMembersAlphabetic(); 2065 $i = 1; 2066 foreach ($group->members as $member) { 2067 $info .= $member->user->getFullName() . ": " . $i++ . "; "; 2068 } 2069 StudipLog::log('SEAT_RESERVATION', $this->id, null, $info); 2070 } 2071 } 2072 2073 if (!$removed && $seat_number) { 2074 StudipLog::log('SEAT_RESERVATION', $this->id, null, 2075 sprintf("%s hat Sitzplatz %s zurückgegeben", 2076 get_fullname($user_id), $seat_number)); 721 723 if ($matrikelnummer != '') { 722 724 $data_object_tmp .= xml_tag('matrikelnummer', $matrikelnummer); 723 725 } 726 727 if ($row['position']) { 728 $data_object_tmp .= xml_tag('sitzplatz', $row['position']); 729 } - Comment on lines +727 to +729
Das exportiert jetzt auch Sitzplatzangaben für Lehrenden/Tutoren. Und so richtig glücklich bin ich mit der Doppelung (Sitzplatz und Position in der Liste) hier auch nicht, zumal wir gerade die Anforderung nach einer stabilen Numerierung auch für die Gruppen haben (was dafür spräche, auch für die Gruppen das Positionsfeld zu nehmen).