Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submitter/submission (HEAD:SUBM, HEAD:SUBN) is not exported in GEDCOM header, if no Manager is logged in #9

Closed
WeT-Klb opened this issue Sep 21, 2023 · 31 comments
Labels
bug Something isn't working

Comments

@WeT-Klb
Copy link

WeT-Klb commented Sep 21, 2023

Mit "DownloadGedcomWithURL" lasse ich täglich meine GEDCOM-Datei aus Webtrees erzeugen.
Wenn ich diese mit GedcomValidator anschaue, erscheint jedesmal der Hinweis, daß "SUBM" unter "HEAD" fehlen würde.
Erzeuge ich die GEDCOM-Datei im PlugIn manuell, ist dieser Hinweis nicht mehr vorhanden.
Ich habe mal beide Files gesichert, würde sie aber ungern hier in der Öffentlichkeit hochladen.

@Jefferson49
Copy link
Owner

Hi Werner,

eine Erklärung könnte sein, dass es spezielle Zugriffsrechte für Dein Submitter Objekt gibt. Kannst Du das unter HEAD in webtrees anschauen (HEAD in Suchfeld eingeben)?

Bei DownloadGedcomWithURL dann auch die Rechte (privacy level) für den Export prüfen. In URL: &privacy=... und in den Default Settings unter Verwaltung.

image

Grüße

Markus

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 21, 2023 via email

@Jefferson49
Copy link
Owner

Ok, wenn es in der Verwaltung funktioniert, sind die dortigen Einstellungen ok.

Verbleibt noch der Aufruf in der URL.

Ich verstehe aber nicht ganz, was Du mit

In URL: &privacy=... und in den DefaultSettings unter Verwaltung.<<
meinst bzw. wie und wo genau ich da was prüfen soll.

Mit dem Aufruf in der URL kannst die gleichen Einstellungen wie auch in der webtrees Verwaltung beeinflussen. Wenn Du also "&privacy=visitor" in Deine URL einfügst, hat das die gleichen Auswirkungen, wie wenn Du exportieren als "Besucher" im Browser auswählst. Wenn die URL nichts enthält, wird der Default Wert aus der Verwaltung genommen.

Wenn also eine Einstellung in der URL enthalten ist, solltest Du diese vielleicht einfach löschen.

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 21, 2023

Meinen Link zum Download lasse ich täglich so aufrufen:

wget --timeout=60 --tries=1 "https://My-DOMAIN/webtrees/index.php?route=/webtrees/DownloadGedcomWithURL&tree=tree1&key=xxxxxxxxxxxxx&privacy=none&format=gedcom&encoding=UTF-8&line_endings=CRLF&action=save"

Ich habe den kompletten Pfad auch einmal manuell ausgeführt - auch da fehlt die Angabe des SUBM.

Dann habe ich noch
https://My-Domain/webtrees/index.php?route=/webtrees/DownloadGedcomWithURL&tree=tree1&key=xxxxxxxxxxxxx
versucht - auch da fehlt SUBM.

Mit dem "Test-Button" im Modul selbst funktioniert es aber korrekt.

@Jefferson49
Copy link
Owner

Ok, das sieht eigentlich alles vernünftig aus.

Muss erst Mal nachdenken und selber ein paar Versuche starten.

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 21, 2023 via email

@Jefferson49
Copy link
Owner

Habe ein paar Themen angeschaut; bin aber noch nicht weitergekommen.

Habe nun eine Debug-Version für die Datei DownloadGedcomWithURL.php erstellt. Kannst Du diese Datei bei Dir mit der beiliegenden Datei ersetzen und dann jeweils einen Testdownload (in der Verwaltung) und einen URL-Download (https://my-domain/webtrees/index.php?route=/webtrees/DownloadGedcomWithURL&tree=tree1&key=xxxxxxxxxxxxx) durchführen?

Anschließend werden jeweils Debug-Informationen ausgegeben. Gibt es hier einen Unterschied zwischen den beiden Ausgaben?

Die Debug-Version gibt folgende Informationen aus:

Debug info "DownloadGedcomWithURL":
$tree_name: test
$file_name: test
$format: gedcom
$privacy: none
$encoding: UTF-8
$line_endings: CRLF
$gedcom7: false
$gedcom_l: false
$action: save
$time_stamp: none

DownloadGedcomWithURL.zip

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 23, 2023

Hallo,

ich habe die Debug-Version probiert - aber keine Unterschiede festgestellt.
Ich habe beide Screenshots angefügt.

Sicherung per Modul:
Sicherung per Modul

Sicherung per URL:
Sicherung per URL

@Jefferson49
Copy link
Owner

Danke für die Daten. Das ist wirklich sehr merkwürdig. Wenn das Programm jeweils mit den gleichen Daten aufgerufen wird, sollte eigentlich das gleiche passieren.

Beim Aufruf aus der Verwaltung hat man Manager Rechte. Vielleicht resultiert daraus irgendein Unterschied bei der weiteren Verarbeitung innerhalb von webtrees.

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 23, 2023 via email

@Jefferson49
Copy link
Owner

Bei Punkt 1 und 2 fehlt der SUBM-Eintrag, bei 3 und 4 ist er vorhanden.

Ja, das passt zu den bisherigen Erkenntnissen: Immer, wenn der Aufruf über das User Interface von webtrees ausgelöst wird (bei 3 und 4), funktioniert es. Wenn der Aufruf über eine URL erfolgt (Punkt 1 und 2), funktioniert es nicht.

@Jefferson49
Copy link
Owner

Jefferson49 commented Sep 23, 2023

Habe nun eine konkrete Stelle im webtrees Code im Verdacht, dass dort die Ursache liegt. Um das einzugrenzen, habe ich nochmal eine Debug-Version für eine Code-Datei erstellt, siehe Anhang. Es würde mir helfen, wenn Du temporär die webtrees-Datei "\webtrees\app\Services\GedcomExportService" ersetzen könntest und dann nochmal die obigen Versuche startest. Bitte die alte Datei vorher sichern und anschließend wieder zurückspielen.

Es müsste folgende Debug-Information erscheinen:

Debug info from: "GedcomExportService":
$facts_in_header: 8

Im Gutfall sollte $facts_in_header größer Null sein. Im Schlechtfall (Submitter fehlt) sollte $facts_in_header entweder Null sein oder kleiner als im Gutfall.

Anmerkung: Die vorherige Debug-Version für die Datei "DownloadGedcomWithURL.php" kannst Du auch wieder durch die ursprüngliche Datei ersetzen.

GedcomExportService.zip

@Jefferson49
Copy link
Owner

Jefferson49 commented Sep 23, 2023

Parallel wäre es auch hilfreich, wenn Du die beiden Header der Gedcom-Dateien (ganz am Anfang) vergleichen könntest.

Im Gutfall sollte es ca. wie folgt aussehen:

0 HEAD
1 SOUR webtrees
2 NAME webtrees
2 VERS 2.1.17
1 DEST DISKETTE
1 DATE 23 SEP 2023
2 TIME 20:26:47
1 GEDC
2 VERS 5.5.1
2 FORM LINEAGE-LINKED
1 CHAR UTF-8
1 FILE test.ged
1 LANG German
1 SUBM @SUB1@

Im Schlechtfall sollten nach der Zeile "1 FILE ..." keine weiteren Zeilen enthalten sein. Das Fehlen des "1 SUBM ..." Eintrags ist ja der Kern dieses ganzen Themas.

@Jefferson49
Copy link
Owner

Im webtrees Code für Gedcom-Exporte werden "Ausstehende Änderungen" berücksichtigt. Vielleicht gibt es hier eine Wechselwirkung. Kannst Du prüfen, ob Du evtl. ausstehende Änderungen für HEAD bzw. submitter hast?

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 24, 2023

Ausstehende Änderungen habe ich keine anstehen.
Zu Deiner webtrees-Debug-Version:
Ich erhalte beim Export direkt aus webtrees keine Anzeige, so wie Du beschrieben hast.
Bei Aufruf per URL funktioniert die Anzeige aber.

Export aus der Verwaltung von webtrees:
0 HEAD 1 SOUR webtrees 2 NAME webtrees 2 VERS 2.1.17 1 DEST DISKETTE 1 DATE 24 SEP 2023 2 TIME 07:33:35 1 GEDC 2 VERS 5.5.1 2 FORM LINEAGE-LINKED 1 CHAR UTF-8 1 FILE tree1.ged 1 SUBM @X789@ 1 SUBN @X822@

Aufruf per URL:
Aufruf per URL

0 HEAD 1 SOUR webtrees 2 NAME webtrees 2 VERS 2.1.17 1 DEST DISKETTE 1 DATE 24 SEP 2023 2 TIME 07:44:25 1 GEDC 2 VERS 5.5.1 2 FORM LINEAGE-LINKED 1 CHAR UTF-8 1 FILE tree1.ged

Aufruf aus Modul:
Aufruf aus Modul

0 HEAD 1 SOUR webtrees 2 NAME webtrees 2 VERS 2.1.17 1 DEST DISKETTE 1 DATE 24 SEP 2023 2 TIME 07:48:44 1 GEDC 2 VERS 5.5.1 2 FORM LINEAGE-LINKED 1 CHAR UTF-8 1 FILE tree1.ged 1 SUBM @X789@ 1 SUBN @X822@

Interessanterweise kommt bei beiden über DownloadGedcomWithURL als facts_in_header: 7, trotzdem wird bei Aufruf per URL der SUBM nicht angezeigt, bei Aufruf aus dem Modul schon. Auch wir bei Aufruf per URL die Meldung 3x angezeigt - siehe Screenshots.
Ich kriege es nicht gebacken, daß im Code hier die Zeilenumbrüche dargestellt werden.

@Jefferson49
Copy link
Owner

Irgendwie kann man immer mehr Dinge ausschließen und es scheint nicht mehr viel übrig zu bleiben. Anbei nochmal eine erweiterte Debug-Version, welche noch 2 weitere verbleibende Werte aus dem Code anzeigt.

GedcomExportService v2.zip

@Jefferson49
Copy link
Owner

Auch wir bei Aufruf per URL die Meldung 3x angezeigt

Ist das reproduzierbar, d.h. es werden jedes Mal 3 Meldungen angezeigt? Manchmal scheint webtrees auch Meldungen anzuzeigen, die von einem früheren Aufruf stammen und in einem Zwischenspeicher gelandet sind.

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 25, 2023

Ich habe nochmal mit der ersten Debug-Version von GedcomExportService den URL-Aufruf gestartet.
Diesmal kam nur einmal die Meldung - dafür aber mit $facts_in_header: 4
und jetzt wir es lustig:
Wenn ich nun webtrees aufrufe und mich einlogge, sehe ich $facts_in_header: 7

URL-Aufruf ausgeloggt:
URL-Aufruf V1 Pic 1

Die gleiche Seite nach dem Einloggen:
URL-Aufruf V1 Pic 2

Ich glaube, jetzt bin ich einen Schritt weiter:

Wenn ich in webtrees eingeloggt bin und den URL-Aufruf starte, wird SUBM mit ausgegeben.
Wenn ich aus webtrees ausgeloggt bin und den Aufruf URL-Aufruf starte, fehlt der SUBM-Eintrag.

Kannst Du damit was anfangen?
.
.
.
.
.
Bei Debug V2 sehen die Bilder so aus - das Verhalten ist aber gleich:

URL-Aufruf ausgeloggt:
URL-Aufruf V2 Pic 1

Die gleiche Seite nach dem Einloggen:
URL-Aufruf V2 Pic 2

Die Ausgabe der Gedcom-Datei und deren Inhalt hängt also davon ab, ob man in webtrees eingeloggt ist oder nicht!
Macht es einen Unterschied, daß ich SUBM nicht in der Verwaltung unter Stammbaum sondern direkt im HEADER definiert habe?

@Jefferson49
Copy link
Owner

Die Ausgabe der Gedcom-Datei und deren Inhalt hängt also davon ab, ob man in webtrees eingeloggt ist oder nicht!

Das passt ins Bild. Ich hatte schon länger die Vermutung, dass das Verhalten von den Nutzer-Rechten abhängt.

Die Ausgabe von 7 bzw 4 Facts ist nun auch der Beweis, dass es von der vermuteten Code-Zeile abhängt. Werde dort nochmal genauer schauen und ansonsten im Forum nachfragen

@Jefferson49
Copy link
Owner

Macht es einen Unterschied, daß ich SUBM nicht in der Verwaltung unter Stammbaum sondern direkt im HEADER definiert habe?

In dieser Richtung würde ich auch nach einer Erklärung suchen. Habe beim Herumprobieren auch schon festgestellt, dass man zum Editieren von HEAD (über Suchfeld) Adminrechte benötigt. Vielleicht speichert webtrees das dann mit besonderen Zugriffsrechten ab. Wobei es bei mir funktioniert. Es muss also noch eine weitere Bedingung dazu kommen.

@Jefferson49
Copy link
Owner

Jefferson49 commented Sep 25, 2023

Habe bei mir nun auch ein Beispiel erzeugen können, wo der Fehler reproduzierbar auftritt. Das macht Vieles einfacher, da ich nun konkret im Code debuggen kann.

Eine erste Erkenntnis ist, dass die Unterdrückung des Exports an den Datenschutzeinstellungen liegt. Wenn man in der Verwaltung für einen Stammbaum den Datenschutz aufruft, können dort Restriktionen für bestimmte Daten festgelegt werden. Beim Neuanlegen eines Stammbaums legt webtrees offensichtlich standardmäßig eine Restriktion für Übermittler an, siehe Screenshot. Aufgrund dieser Restriktion wird der Übermittler in bestimmten Fällen nicht exportiert. Wenn man als Verwalter angemeldet ist, funktioniert es jedoch.

submitter_visible_for_admin

Ein schneller Workaround wäre, die Restriktion für den Übermittler im Datenschutz zu löschen. Bei mir funktioniert dann der Export auch, wenn kein Verwalter angemeldet ist. Das könnte Dir vielleicht auch kurzfristig weiterhelfen.

Bzgl. einer grundsätzlichen Lösung muss ich noch weiter testen und nachdenken. Kann jetzt aber deutlich länger dauern, da ich in nächster Zeit nicht so viel dazukommen werde.

@Jefferson49
Copy link
Owner

Jefferson49 commented Sep 26, 2023

Webtrees scheint hier tatsächlich einen Fehler zu haben. Beim Export werden für Header-Daten nicht die angeforderte Rechte-Einstellungen sondern die Rechte des eingeloggten Users herangezogen.

Mit dem beiliegenden Patch müsste der Fehler behoben sein. Bei meinen Tests hat es damit funktioniert.

Werde ein Issue bei webtrees melden. Nachdem es auch beim normalen Export aus der Verwaltung heraus ein reproduzierbares Fehlverhalten gibt, stehen die Chancen vmtl. ganz gut, dass es gefixt wird.

GedcomExportService_v3.zip

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 26, 2023

Hallo Markus,

mit der V3 funktioniert der Export tadellos. Vielen Dank dafür.
Mal sehen, ob das in webtrees gefixt wird.
Hast Du einen Link zu diesem Issue in webtrees?

@Jefferson49
Copy link
Owner

Bei webtrees als Issue 4883 gemeldet.

@Jefferson49
Copy link
Owner

Pull Request 4884 mit Vorschlag für Code Änderungen.

@Jefferson49
Copy link
Owner

Auf Basis des Feedbacks zum webtrees Issue anbei ein Update für den Patch.

Änderung: Ein SUBM Eintrag soll immer generiert werden, selbst wenn es den Datenschutz-Regeln widerspricht. Argumentation: Vermeidung eines nicht Standard konformen GEDCOM Exports hat höhere Priorität als Datenschutz.

GedcomExportService_v4.zip

@WeT-Klb
Copy link
Author

WeT-Klb commented Sep 28, 2023

Vielen Dank für die Info und die V4.

@Jefferson49
Copy link
Owner

Da es bei webtrees wohl keine Änderung gibt, habe ich nun den Code von DownloadGedcomWithURL angepasst. Anbei zum Test eine beta Version.

Wichtig:
Da der Bugfix nun im Custom Module enthalten ist, unbedingt wieder die original webtrees Datei für GedcomExportService.php benutzen.

download_gedcom_with_url_v3.2.2beta.zip

@WeT-Klb
Copy link
Author

WeT-Klb commented Oct 7, 2023

Im Moment sieht das super aus - vielen Dank für Dein Engagement.
Nur ein Hinweis: In der "DownloadGedcomWithURL.php" steht noch die Version 3.2.1 anstelle 3.2.2beta.

@Jefferson49 Jefferson49 changed the title Automatisch erzeugtes Gedcom-File unterscheidet sich von manuell erzeugtem Submitter/submission (HEAD:SUBM, HEAD:SUBN) is not exported in GEDCOM header, if no Manager is logged in Oct 8, 2023
@Jefferson49 Jefferson49 added the bug Something isn't working label Oct 8, 2023
@Jefferson49
Copy link
Owner

Habe jetzt eine Version 3.2.2 als Release veröffentlicht.

@WeT-Klb
Copy link
Author

WeT-Klb commented Oct 8, 2023

Super - vielen Dank. Läuft im Moment 1a!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants