RRZE-Webteam / rrze-faudir

Plugin zur Darstellung des Personen- und Einrichtungsverzeichnis der FAU in Websites
GNU General Public License v3.0
0 stars 0 forks source link

API-Anbindung UnivIS zur Abwärtscompatibilität #23

Open xwolfde opened 2 months ago

xwolfde commented 2 months ago

Um die Abwärtscompatibilität zu gewährleisten zu dem bisherigen Kontakteplugin https://github.com/RRZE-Webteam/fau-person soll folgendes Prozedere eingebaut werden:

  1. Bei der Aktivierung des Plugins wird zunächst geprüft, ob die Site in den Options get_options("_fau_person") Einträge existieren und/oder das FAU-Person Plugin aktiv ist.
  2. Es wird geprüft, ob es vorhandene Post-Typ Einträge mit den Namen person existieren. Wenn ja, werden alle EInträge durchgegangen und geprüft, ob in den jeweiligen Einträgen eine Post-Meta existiert mit einem UnivIS-ID: $univisid = get_post_meta($post_id, 'fau_person_univis_id', true);
  3. Sollten Einträge vom Post-Type person existieren die einen Einträg mit einem Wert in $univisid haben, der nicht empty ist, dann wird über die UnivIS-API eine Abfrage nach dieser ID gemacht. Und zwar in dieser Form: http://univis.uni-erlangen.de/prg?search=persons&id=$univisid&show=json. Beispiel: http://univis.uni-erlangen.de/prg?search=persons&id=40014582&show=json
  4. Auf Basis der hier ermittelten Daten wird als nächstes über die DIP-API #22 versucht, die IdM-Id zu ermitteln. Die UnivIS-API liefert hierzu mehrere Werte, die bei der Suche zum Einsatz kommen können. Da nicht alle Werte belegt sind, muss hier ggf. ein Fallback auf andere Werte erfolgen, wenn die Werte mit denen man suchen will im JSON von UnivIS nicht existieren bzw. leer sind.
    • Sinnvoll ist als erstes das UnivIS-Feld "idm_id" zu verwenden. Dieses sollte die IdM-Kennung enthalten, die man als Query für DIP API nutzen kann.
    • Wenn "idm_id" leer ist, wird als zweite Wahl nach der Mailadresse gesucht, die unter dem UnivIS-JSON unter location->email angegeben ist.
    • Wenn auch die E-Mail-Angabe leer ist, dann wird zuletzt nach Vorname und Nachname aus den UnivIS-JSON Felder "firstname" und "lastname" gesucht.
    • Wenn die Query auf die DIP API einen öffentlichen Eintrag zurückliefert, wird dessen API-Person-Identifier (Feld "identifier") , sowie die weiteren öffentlichen Daten übernommen und hiermit ein neuer Kontakteintrag angelegt, sofern nicht bereits ein Kontakteintrag mit diesem Identifier existiert.

Dieses Verfahren soll entweder einmalig bei der Aktivierung des FAUDir-Plugins starten oder/und aber auch später auf Kommando im Backend durch einen Administrator gestartet werden.

Sofern sinnvoll und möglich, wäre es erlaubt, wenn das FAUdir Plugin nach einer erfolgreichen Übernahme von Personen aus dem FAU-Person post-Type in dem jeweiligen Posts einen neuen Post-Meta-Eintrag ablegt (z.B. fau_person_faudir_synced mit dem Value des identifier) , der über das Import informiert und die IdM identifier hinterlegt. In diesem Fall könnte ein erneutes Starten des o.g. Ablaufs zusätzlich schauen, ob es so einen Meta-Wert bereits gibt; In dem Fall können die API-Abfragen ausbleiben und der ABlauf bei dieser Person stoppen.

xwolfde commented 2 months ago

Dieses Konzept setzt voraus, dass ein eigener Custom POst Type angelegt wird mit Personendaten.

Dieses ist aber noch zu überdenken, da dies auch wieder bedeutet, dass Personen im IdM sich nicht selbst wieder depublizieren können.