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