Skip to content

Alumni entfernen

(manuell oder automatisch)

Mit diesem Skript werden alle User in der Tabelle gris_user mit dem aktuellen Stand des AD (bzw. Open LDAP) abgeglichen und aus der GRIS-DB gelöscht, falls keine Entsprechung gefunden wurde. Der Status des Personeneintrags wird auf Alumni gesetzt.

Aufruf

Im Web-Browser:

http(s)://[GRIS-SERVER]/tools/update_users.php?key=enmgzirn&debug=on&verbose=on&simulate=on

oder per Cron-Job über die Konsole (Schlüssel als Parameter):

php [GRIS-Pfad]/tools/update_users.php enmgzirn debug verbose simulate

Parameter

In der Browserversion dient als Schalter der Wert „on":

Parameter Funktion
key Sicherheitscode zum Schutz vor Missbrauch
debug Debug-Modus (schaltet in PHP auf E_ALL)
verbose Ausgabe der Personen und Aktionen
simulate Löschen wird nur simuliert

Rechte unter Windows anpassen

Bei der Verwendung des Taskplaners zur Automatisierung müssen unter Windows die Berechtigungen für die Logdatei angepasst werden. Die Datei benötigt Schreibrechte für den Account, der die PHP-Datei ausführt.

SQL-Snippets für Alumni

Die Snippets können verwendet werden, wenn bei der automatischen Entfernung der Alumni aus der Webanzeige Fehler aufgetreten sind. Die können beispielsweise durch einen Abbruch des Scripts entstehen.

Alumni anzeigen

SELECT * FROM `gris_person` WHERE `gris_person_id` NOT IN
  (SELECT `gris_person_id` FROM `gris_user`)
AND `gris_person_is_alumni` != 1;

Alle Personen anzeigen, die nicht als User vorhanden sind und noch nicht auf Alumni gesetzt wurden (z. B. durch einen Fehler bei der Verwendung von update_users.php).

Alumni ändern

UPDATE `gris_person` SET `gris_person_is_alumni`=1
WHERE `gris_person_id` NOT IN (SELECT `gris_person_id` FROM gris_user)
AND `gris_person_is_alumni` != 1;

Alle Personen auf Alumni setzen, die nicht (mehr) als User vorhanden sind.

Prüfen, ob Alumni versehentlich als „extern" markiert sind

Kommt vor allem bei Importen oder manuellen Änderungen in der DB vor.

SELECT * FROM `gris_personname`
WHERE `gris_personname_external` = 1
AND `gris_person_id` IN
(SELECT `gris_person_id` FROM `gris_person` WHERE `gris_person_alumni` = 1);

Alle Personen aus dem Organigramm entfernen, die nicht mehr aktiv sind

Dabei werden die Einträge aus der Tabelle gris_user mit der Tabelle gris_organigram verglichen. Anzeigen

SELECT gris_person_id
FROM gris_model.gris_organigram
WHERE gris_person_id NOT IN
  (SELECT gris_person_id FROM gris_user)
ORDER BY gris_person_id;

::: tip ::: title Tip :::

MySQL-Workbench: Safe Mode muss zum Entfernen deaktiviert sein :::

DELETE FROM gris_model.gris_organigram
WHERE gris_person_id NOT IN
  (SELECT gris_person_id FROM gris_user);