Skip to content
Snippets Groups Projects

log seats and add position to export table in lectures

Closed Viktoria Wiebe requested to merge issue8-seat-logging-and-export into 5.0
17 unresolved threads
Edited by Elmar Ludwig

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
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.
  • Please register or sign in to reply
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • Unable to load the diff
  • Elmar Ludwig
  • 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.
    • Please register or sign in to reply
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • Unable to load the diff
  • Elmar Ludwig
  • 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 Wiebe
    • Der Auslöser der Aktion ist ja immer das Eintragen bzw. Austragen einer bestimmten Person, oder gibt es da auch anderen Fälle?

    • Es geht um die Gruppen und dass die Listenplätze als Sitzplätze gehandhabt werden. Wenn da mehrere Personen eingetragen werden, ist eigentlich nur der Zustand nach der letzten Eintragung relevant, da sich ja die ganze Liste ändern kann, weil sie alphabetisch geordnet ist.

    • Hm, ich hatte jetzt gedacht, das führt zu einem Log-Eintrag pro hinzugefügtem Nutzer. Aber der Code arbeitet vermutlich nicht so und trägt alle auf einmal ein?

    • Fü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.

    • Please register or sign in to reply
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • Unable to load the diff
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • 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();
  • Elmar Ludwig
  • 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));
  • Elmar Ludwig
  • 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).

    • Please register or sign in to reply
  • Irgendwie waren hier noch alte Kommentare am MR, die nicht publiziert waren - ich habe die mal abgesendet.

    Allerdings hat sich der MR aktuell erledigt, da die Uni im kommenden Semester keine Sitzplatzerfassung mehr macht.

  • closed

  • Please register or sign in to reply
    Loading