Detailfragen zur API

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Detailfragen zur API

Beitrag von steffen »

Hi
es ist schon wieder 9 Jahre her (viewtopic.php?f=10&t=1871), seitdem wir unsere Anwesenheitserfassung an Admidio andockten. Das Ganze lief gut und unauffällig, aber nun wird's doch mal höchste Zeit, Admidio selber und die Anwendung auf den neuesten Stand zu hieven (bei uns läuft noch 2.0.9 :oops: )

Ich hab nur bei der alten Version den Fehler gemacht, die Änderungen in der DB einfach als hardcoded SQL in den Quellcode zu hämmern, was natürlich der jetzigen und späteren Aktualisierungen nur Steine in den Weg legt, darum wollte ich jetzt diese Stellen entfernen und stattdessen mit "richtigen" API- Aufrufen ersetzen.

Ich muß aber zugeben, dass ich mit der API-Dokumentation so meine Probleme habe. Die Beschreibung beschreibt zwar hier und da, was passiert ("Das ist ein blaues Licht" "Was macht es?" "Es leuchtet blau.."), aber ich finde bei vielem nicht die Zusammenhänge, wo Eingabewerte herkommen und für was die Ergebnisse dann letztlich dienen sollen..

Dazu zwei konkrete Fragen:
Um die Mitglieder-Profile auf meinem Client offline vor Ort bearbeiten und später wieder hochladen zu können, habe ich heute eine (hardcodete) Routine, die alle User ausliest und in eine XML-Struktur überführt, die dann an den Client übertragen wird.

Nur wie löse ich eine solche Routine
(Pseudocode)

Code: Alles auswählen

for each user in userDB
     print user.firstname
     print user.lastname
korrekt mit den offizellen Möglichkeiten der API?

Frage 2:
An anderer Stelle muß ich ermitteln, ob ein User einer bestimmten Rolle zugeordnet ist. Wenn ich die roleID dieser Rolle kennen würde, könnte ich die Zugehörigkeit über boolean isMemberOfRole($roleID) ermitteln, so hab ich das verstanden. Ich kenne aber nur den Namen der Rolle, nicht ihre ID. Wie kann ich vom Namen auf die ID kommen?


Dies quasi als Einstieg, da werden sicherlich noch mehr Fragen kommen - aber wie gesagt, bei neun Jahre lang hunderte von zufriedenen Admidio- Usern allein in unserem Verein lohnt sich wohl der Update-Anpassungs-Aufwand für die nächsten neun Jahre :-)

Vielen Dank im Voraus für jeden guten Tipp :)

viele Grüße & ruhige Feiertage
Steffen Köhler
Benutzeravatar
fasse
Administrator
Beiträge: 6183
Registriert: 12. Nov 2005, 16:06

Re: Detailfragen zur API

Beitrag von fasse »

Hallo Steffen,

zu deiner ersten Frage:
Hier wäre es sinnvoll, wenn du in deiner Schleife über die User auch die UserId hast, damit könntest du dann ein Objekt von User erstellen würdest. Sobald du dieses Objekt hast, kannst du die alle Felder mittels des internen Feldnames mit folgender Syntax holen:

Code: Alles auswählen

$user = new User($gDb, $gProfileFields, $userId);

print $user->getValue('LAST_NAME');
print $user->getValue('FIRST_NAME');
...
zu deiner 2. Frage:
hier gibt es die Funktion hasRole:

Code: Alles auswählen

if(hasRole('DeinRollenname', $userId)
{
   ...
}
Hilft dir das?

Übrigens noch zu deinem ursprünglichen Post:
Gerne kannst du dein Programm-Code näher an Admidio holen. Gerne als Plugin, welches wir dann auf unserer Seite verlinken.

Viele Grüße
Fasse
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Re: Detailfragen zur API

Beitrag von steffen »

fasse hat geschrieben:Hallo Steffen,

Übrigens noch zu deinem ursprünglichen Post:
Gerne kannst du dein Programm-Code näher an Admidio holen. Gerne als Plugin, welches wir dann auf unserer Seite verlinken.

Viele Grüße
Fasse
Da hätte ich doch gleich zwei Fragen dazu, eine schwerer als die Andere:

Ich hab ja die Bedeutung der Plugins noch nicht richtig verstanden:
Muss so ein Plugin eine bestimmte Grundmenge an (Programm-) Interface bieten, weil das "Hauptprogramm" von Admidio irgendwie auf eine bestimmte Art und Weise direkt mit den Plugins interagiert?
Dann müßte meine Anwesenheitserfassung (genannt Klobs) ja auch diese Interfaces bieten, damit Admidio damit umgehen kann. Derzeit interagiere ich nicht unmittelbar mit Admidio (oder besser gesagt, Admidio in irgendeiner Weise mit mir), sondern ich zapfe quasi nur das System an, um meine Anwesenheits- Tabellen darauf aufzubauen.

Aber es kommt noch besser: Klobs ist ja nur zur Hälfte PHP- Server Code, die andere Hälfte ist Java-Code für den Desktop- Client, den autarken Kartenleser und all so'n Krams. Das würde ja sicher nicht unbedingt alles ins plugin- Verzeichnis gehören - Aber wohin damit, wenn nicht da..?

viele Grüße
Steffen
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Detailfragen zur API

Beitrag von XimeX »

Das jetzige Plugin System baut noch auf keine richtigen Interfaces etc auf. Plugins sind einfach nur zusätzlicher code der ein neues Feature bietet. Ab der v4.0 wird sich aber richtung Interfaces einiges tun
Benutzeravatar
fasse
Administrator
Beiträge: 6183
Registriert: 12. Nov 2005, 16:06

Re: Detailfragen zur API

Beitrag von fasse »

steffen hat geschrieben:Aber es kommt noch besser: Klobs ist ja nur zur Hälfte PHP- Server Code, die andere Hälfte ist Java-Code für den Desktop- Client, den autarken Kartenleser und all so'n Krams. Das würde ja sicher nicht unbedingt alles ins plugin- Verzeichnis gehören - Aber wohin damit, wenn nicht da..?
Hallo Steffen,

in das Plugin-Verzeichnis gehört eigentlich der Server-Code. Das Verzeichnis soll ja dann so auf deinem Server liegen.

Die Desktop-Anwendung ist so gesehen eigentlich ein autarkes Projekt und sollte nicht im Plugin-Verzeichnis liegen. Wenn man es von der Produktlinie sieht, dann sprichst du ja auch 2 Userkreise an. Der Servercode als Plugin ist für den Administrator, der Admidio betreut. Dieser läd es runter und bindet es in Admidio ein. Die Desktop-Anwendung ist für denjenigen, der dies auf seinem Rechner (Client) installieren und nutzen will. Der Kartenleser könnte ggf. noch mal ein gesondertes Projekt sein, da den dann nur derjenige herunterläd, der auch die Hardware hat. Falls aber das Desktopprogramm ohne Kartenleser keinen Sinn macht, kann man es auch zusammen verwalten.

Dies mal so als Vorschlag, hoffe das hilft dir.

Viele Grüße
Fasse
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Re: Detailfragen zur API

Beitrag von steffen »

Hallo Markus,

nachdem ich meine gesehen zu haben, dass externe Plugins sowieso keine "feste" Verlinkung mit dem Haupt- Admidio- Github- Repository haben, sondern "nur" separat als Zip-Dateien hinzu- installiert werden, hat sich meine ganze Problematik damit sowieso in Luft aufgelöst:
Der geneigte Anwender kann sich heute schon mein (GitHub-) Zip direkt in den Module- Ordner entpacken. Da ist zwar viel zu viel drin, aber es würde funktionieren, es besteht aber (u.a. wegen dem nicht existierenden Anwenderkreis) kein aktuter Handlungsbedarf. Ich werde die Installation bei nächster Gelegenheit vom Module- in den Plugin- Pfad verschieben und Server- und Nichtserver-Anteil trennen, und dann passt das doch, oder?

viele Grüße
Steffen
Benutzeravatar
fasse
Administrator
Beiträge: 6183
Registriert: 12. Nov 2005, 16:06

Re: Detailfragen zur API

Beitrag von fasse »

Hallo Steffen,

ja das passt.

Wir können dein Plugin gerne auf unserer Homepage im Plugin-Bereich verlinken, so dass es etwas bekannter wird. Wenn du einen User im Wiki anlegst, kann ich dir die Rechte zum Editieren geben. Du kannst dann entscheiden, ob du einfach nur deine Seite verlinken willst, den Download über uns oder extern machen willst oder oder oder ...

Viele Grüße
Fasse
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Re: Detailfragen zur API

Beitrag von steffen »

fasse hat geschrieben:..

Wir können dein Plugin gerne auf unserer Homepage im Plugin-Bereich verlinken, so dass es etwas bekannter wird. Wenn du einen User im Wiki anlegst, kann ich dir die Rechte zum Editieren geben. Du kannst dann entscheiden, ob du einfach nur deine Seite verlinken willst, den Download über uns oder extern machen willst oder oder oder ...
...
Hallo Markus

passend zum 20igsten Jahrestag der berühmten Trappatoni- Pressekonferenz kann auch ich sagen "Isch abe Fertig!" :)

Ich hab jetzt die Inhalte von Klobs soweit aufgeräumt, dass
  • der Server- Anteil getrennt ist von allem anderen, was nicht auf den Webserver gehört, also dieser ganze Lokaler-Client-Krams
  • die Software jetzt nicht mehr irgendwo im adm_program-Folder rumdüdelt, sondern als adm_plugins/klobs- Plugin zu installieren ist
Es spricht also eigentlich nichts mehr dagegen, dieses Plugin auch auf der Admidio- Plugin-Seite zu erwähnen :-)

Einen eigenen User-Account in Deinem Wiki, damit dort selber (viel) schreiben könnte, ist sicher nicht notwendig, weil ich schon eine eigene Wiki - Dokumentation gemacht hatte.

Vielleicht könntest Du ja einfach die Beschreibung selber eben in dein Wiki in die Plugin- Beschreibungen rein kopieren?

Hier mal gleich in DokuWiki- Syntax:

Code: Alles auswählen

[[https://github.com/stko/kobs/wiki|Klobs - die Anwesenheitsverwaltung]]

Klobs verwaltet die Anwesenheiten und Aktivitäten  der Mitglieder vor Ort. Trainingsorte und -Aktivitäten werden angelegt und können dann jedem Mitglied individuell für spätere Auswertungen zugeordnet werden. Dies geschieht entweder online im Browser oder auch offline mit einem eigenen Java- Client auf dem Laptop vor Ort. Um sich das mühselige Eintippen der Anwesenden zu ersparen, funktioniert der lokale Client auch zusammen mit einem RFID-Card-Reader oder per Webcam als QRCode- Reader, so dass sich jeder Teilnehmer auch selber mit seiner Karte anmelden kann.
Würde das so (oder ähnlich) funktionieren?

viele Grüße
Steffen
Benutzeravatar
fasse
Administrator
Beiträge: 6183
Registriert: 12. Nov 2005, 16:06

Re: Detailfragen zur API

Beitrag von fasse »

Hallo Steffen,

ich hab es in die Liste aufgenommen und direkt auf deine GitHub-Seite verlinkt.

Viele Grüße
Fasse
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Re: Detailfragen zur API

Beitrag von steffen »

fasse hat geschrieben:Hallo Steffen,

ich hab es in die Liste aufgenommen und direkt auf deine GitHub-Seite verlinkt.

Viele Grüße
Fasse
Ich fühle mich geehrt - Danke :-)

Dann bin ich ja mal gespannt, ob sich noch jemand findet, der so eine Anwesenheitsverwaltung gebrauchen kann - schaun wir mal

viele Grüße
Steffen
Hanabi
Beiträge: 130
Registriert: 6. Okt 2014, 19:55
Wohnort: Pirna
Kontaktdaten:

Re: Detailfragen zur API

Beitrag von Hanabi »

Da melde ich mich mal gleich an als "brauche das" für die Anwesenheit beim Training. Unsere Übungsleiter haben aber in den meisten Fällen keinen Laptop zum Training dabei. Es wäre also genial, wenn die Anwesenheitsverwaltung zum Schluss komplett webbasiert laufen könnte.

Hintergrund: Momentan führen wir die Anwesenheitslisten noch über www.kadermanager.de, dort kriege ich aber keinen ADV-Vertrag nach DSGVO. Sämtliche anderen Anbieter von Teamplaner-Software wie Spond, Terminplanbuch, masalis usw. laufen entweder auf Servern in den USA, nicht unter https und sind alle nicht zertifiziert. Bei einer Integration in Admidio würden die Spielerdaten sicher auf unserem Server bei deutschen Hoster liegen, mit dem wir wegen Admidio bereits einen ADV-Vertrag haben.

Ich denke mit dem "Paukenschlag" DSGVO werden noch einige andere Vereine darüber stolpern, dass die tollen Teamplaner-Apps nicht den Datenschutzvorschriften entsprechen und die Daten zurück auf die eigenen Server geholt werden sollten.
Mit sportlichen Grüßen

Thomas
Homepage https://www.hanabi-pirna.de
Admidio-Version 4.0.6 (PHP 7.4) sowie 4.1.12 (PHP 8.0)
Auch aktiv unter https://community.zeta-producer.com
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Re: Detailfragen zur API

Beitrag von steffen »

Hanabi hat geschrieben:Da melde ich mich mal gleich an als "brauche das" für die Anwesenheit beim Training. Unsere Übungsleiter haben aber in den meisten Fällen keinen Laptop zum Training dabei. Es wäre also genial, wenn die Anwesenheitsverwaltung zum Schluss komplett webbasiert laufen könnte.
Die Anwesenheitsverwaltung, also das Klobs- Plugin, läuft auch komplett im Web, die Offline- Laptop- Anbindung stammt noch aus der Zeit, wo es Internet nur zu Hause gab :-)
Ich möchte aber keine falschen Hoffnungen wecken: Weil Anwesenheiten und Trainings-Inhalte bei uns Bedingung für Prüfungen sind, wurde die Software nur dafür geschrieben, um festzuhalten, wer wann wo war und ggf. auch noch, welche Art von Aktivität er dann gemacht hat. Weil wir nur bestimmte Hallen zur Auswahl haben und auch die Menge der möglichen Aktivitäten sich kaum ändert, sind Orte und Aktivitäten in Config- Dateien direkt auf dem Server hinterlegt, weil sich der Aufwand, dies dynamisch änderbar zu machen, nicht gelohnt hat. All das funktioniert gut, mehr als das kann die Erweiterung aber nicht :-) - vielleicht noch mal von dem Gimmick abgesehen, dass sich jeder seine on-the-fly erzeugte eigene Vereins-Mitglieds-Karte als PDF runterladen kann, die dann auch gleich den QRCode beinhaltet, mit dem man sich beim Training an der Laptop-Webcam anmelden kann. Das erspart dann das händische Eintippen, wer denn heute da ist.
Dirk_Maschke
Beiträge: 23
Registriert: 2. Sep 2016, 14:24
Wohnort: Bonn
Kontaktdaten:

Re: Detailfragen zur API

Beitrag von Dirk_Maschke »

Hallo Steffen,

habe das Tool gerade mal bei mir installiert und finde es zumindest im Ansatz sehr interessant.

Ich bin noch nicht ganz durchgestiegen, wie die einzelnen Funktionen funktionieren ... Habe mich aber auch bisher nur ein paar Minuten damit beschäftigt.

Vielleicht wäre es ganz nett, wenn es stärker in die Admidio Struktur eingebunden würde. In einer direkten Einbindung wären die Tabellenerzeugungen bei der Installation des Plugins einbaubar und auch die zusätzlichen Felder ließen sich einpflegen, oder dynamisch zuordnen. Nach einem ersten Blick wäre dies für Schützenvereine, Rettungsorganisationen und ähnliches sehr interessant, wenn Auswertungen über Dienststunden, Forbildungen oder Jahresstatistiken erzeugt werden müssen.

Veranstaltungsorte und Veranstalltungsarten sollten auch in der Datenbank abgelegt werden. Vielleicht wäre es hier sehr gut direkt die Orte der Veranstaltungen aus dem Kalender zu nutzen, dann müsste hier das Rad nicht neu erfunden werden.

Somit müsste nur für die Kategorien eine neue Tabelle angelegt werden.

Vielleicht könnten wir uns hier einmal austauschen.

Gruß

Dirk
steffen
Beiträge: 9
Registriert: 9. Jan 2009, 06:52
Wohnort: Brake

Re: Detailfragen zur API

Beitrag von steffen »

Dirk_Maschke hat geschrieben:Hallo Steffen,

habe das Tool gerade mal bei mir installiert und finde es zumindest im Ansatz sehr interessant.
Ich auch :P
Dirk_Maschke hat geschrieben: Vielleicht könnten wir uns hier einmal austauschen.

Gruß

Dirk
Und wäre ich nicht gerade in einem Internet-Loch gewesen, als Du mir dies geschrieben hattest, hätte ich schon viel früher geantwortet -so hab ich's erst jetzt durch Zufall (wieder-)gefunden..

Ich freue mich, dass es Deinen Vorschlägen nach durchaus noch weitere Anwendungsszenarien gibt - ich werde allerdings, und darum sag ich das auch lieber gleich, aus privaten Umständen heraus nur allerhöchstens als Starthilfe dabei mithelfen können. Falls sich also jemanden finden ließe, der sich der Aufgabe programmiertechnisch annehmen würde, kann ich da als Erklärbär gerne helfen, aber mehr geht da leider nicht :-|
tituzzz
Beiträge: 30
Registriert: 26. Jul 2017, 18:46

Re: Detailfragen zur API

Beitrag von tituzzz »

Hallo hanabi,

ich hab die Sachen für den Verein den ich unterstütze soweit fertig, was die DSGVO betrifft. Habe mir eure Homepage aber mal interessehalber angeschaut bezüglich der DSGVO und mir ist aufgefallen, dass ihr ein Verfahrensverzeichnis erstellt habt.

Nur als kleine Anmerkung für andere Leser, die sich ansonsten vielleicht sehr viel Arbeit damit machen: Man ist nicht verpflichtet, das Verfahrensverzeichnis öffentlich einsehbar zu machen (sollte man auch besser nicht). Es reicht, wenn es erstellt und gepflegt wird (was sich bei Vereinen in Grenzen hält, weil die Tätigkeiten sich wiederholen und zusammengefasst werden können) und im Verein aufbewahrt wird, für den Fall, dass die Aufsichtsbehörde es prüfen möchte/muss.

Bei dem "alten" Verfahrensverzeichnis(sic!) sah das anders aus. In das dürfen Mitglieder Einsicht nehmen. Wobei man auch hierbei nicht verpflichtet ist, es ohne Anfrage auszuhändigen.

Ansonsten Hut ab, da habt ihr euch viel Arbeit gemacht!

VG

tituzzz
Antworten