Hallo rmb,
vielen Dank für deine sehr ausführliche Antwort. Ich bin wirklich begeistert von Admidio und seinen Möglichkeiten. Und dass sich die Entwickler in diesem Forum so rege beteiligen, setzt dem Ganzen noch eine Krone auf: Super!
Aber zurück zu meinen Problemen mit den SQL-Fehlermeldungen: Ich habe herausgefunden, was die Ursachen sind und wie man sie beheben kann. An einer Stelle bin ich mir nicht sicher, ob es ein Bug im Plugin ist. Daher beschreibe ich nachfolgend, was ich genau gemacht habe.
Ausgangssituation (wie im ersten Beitrag dieses Threads beschrieben):
a) In Organisation 2 (nachfolgend Org2) sind nach Aufruf des Moduls alle Felder bis auf das Feld
Sequenztyp vorhanden. Wenn ich dann auf
Weiter klicke, erscheint die Fehlermeldung
Duplicate entry 'SEQUENCETYPE2' ....
b) In Organisation 1 (nachfolgend Org1) sind nach Aufruf des Moduls alle Felder bis auf die Felder
Mitgliedsnummer und
Sequenztyp vorhanden. Wenn ich dann auf
Weiter klicke, erscheint die Fehlermeldung
Duplicate entry 'MEMBERNUMBER' ...
Fehlerbehebung Mitgliedsnummer
Die Mitgliedsnummer ist in Org2 in einer Kategorie eingeordnet, die nur dort sichtbar ist: Option "Eintrag für mehrere Organisationen sichtbar" = abgeschaltet. (Habe ich wohl in Unkenntnis der Zusammenhänge beim Umsortieren der Profilfelder vermurkst... ) In Org1 wird das Profilfeld vom Plugin daher nicht gefunden. Beim Versuch, das Feld anzulegen, kommt es zur Kollision mit dem in Org2 bereits vorhandenen Profilfeld und hieraus resultiert die Fehlermeldung.
Ich habe in Org2 die Mitgliedsnummer in eine Kategorie verschoben, die für alle Organisationen sichtbar ist. Danach wurde sie in Org1 gefunden und die Fehlermeldung von SQL änderte sich in "Duplicate entry 'SEQUENCETYPE1' ...".
Fehlerbehebung Sequenztyp
Die Fehlermeldungen weisen darauf hin, dass es beim Anlegen des Profilfelds "Sequenztyp" durch das Plugin zu einer Kollision kommt. Da es offenbar in Org1 das Profilfeld SEQUENCETYPE1 und in Org2 das Profilfeld SEQUENZTYPE2 (interne Namen) schon gibt. Tatsächlich wird aber in der Ansicht
Profilfelder in keiner der beiden Organisationen ein entsprechendes Feld angezeigt!
In der Datenbank findet man dann aber in der Tabelle
user_fields tatsächlich zwei Einträge:
Diese Einträge haben eine Kategorie-ID von 0, sind dadurch offenbar vorhanden, aber nicht sichtbar. Und damit wahrscheinlich Ursache der Kollision. Beide Einträge werden direkt in der Datenbank gelöscht.
Beim Aufruf des Plugins in Org1 kommt erwartungsgemäß der Hinweis, dass das Feld "Sequenztyp" fehlt. Auf
Weiter klicken und (überraschenderweise) nochmal die gleiche Anzeige, dass "Sequenztyp" fehlt. Nochmal auf
Weiter klicken. Und... wieder die gleiche Fehlermeldung: "Duplicate entry 'SEQUENCETYPE1' ...".
Ein Blick in die Datenbank zeigt, dass dort wieder ein Eintrag, wie oben gezeigt, für SEQUENCETYPE1 angelegt wurde. (Und hier frage ich mich, ob das nicht ein Bug in
Mitgliedsbeitrag ist. Also das Anlegen des Profilfelds
mit Kategorie-ID 0.) Diesen Eintrag wieder gelöscht.
Nun ein anderer Versuch: In Admidio in Org1 ein neues Profilfeld anlegen:
- Name = "sequencetype1" (der interne Name erhält hierdurch die gleiche Bezeichnung)
- Kategorie = irgendeine Kategorie, die nur für Org1 sichtbar ist
- Datentyp = Text(50)
- Feld nicht für alle Benutzer sichtbar
Danach den Namen nochmal editieren und in PMB_SEQUENCETYPE ändern. Das ganze in Org2 wiederholen und dabei ein neues Profilfeld "sequencetype2" anlegen.
Danach in Org1 das Plugin aufrufen. Diesmal werden alle Felder gefunden. Auf
Weiter klicken. Nun wird der zweite Durchgang angezeigt (SOLL-IST-Vergleich). Auf
Weiter klicken. Die gleichen Schritte in Org2 durchführen: Plugin aufrufen, alle Felder werden gefunden, auf
Weiter klicken, zweiter Durchgang wird angezeigt (SOLL-IST-Vergleich), auf
Weiter klicken.
FERTIG! Das Plugin zeigt nun beim Aufruf in beiden Organisationen seine Einstellmöglichkeiten an und stellt z. B. die Versionsnummer dar (alle Versuche wurden übrigens mit 3.3.4 durchgeführt). Weitere Tests habe ich mangels Kenntnis der genauen SEPA-Funktionsweise noch nicht durchgeführt (ich arbeite mit Admidio erst seit ein paar Wochen und war bisher hauptsächlich mit dem Aufbau der Datenbank beschäftigt).
rmb, vielleicht kannst du ja bei Gelegenheit nochmal prüfen, ob meine Beobachtungen dem von dir beabsichtigten Verhalten entsprechen. Speziell beim Erzeugen der Sequenztyp-Felder mit Kategorie-ID 0 bin ich mir nicht so sicher.
Ansonsten ist aber mein anfängliches Problem verstanden und gelöst. Zukünftig werde ich mit Änderungen an Profilfeldern etwas vorsichtiger sein...
Viele Grüße,
fiwad