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;

Tipp

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);