Wann werden Dateien beim Upload in die DB eingetragen?

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
dermicha
Beiträge: 88
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von dermicha » Mo 9. Sep 2019, 18:31

Hallo zusammen,

ich programmiere gerade an einer Chain include.chain.upload.uploadpostprocess, die beim Upload die IPTC-Daten einer JPG-Datei ausliest und in die Metadaten der Dateiverwaltung schreibt.

Bei existierenden Dateien funktioniert das auch sehr gut (erneuter Upload mit Überschreiben), bei neuen Dateien, scheint die hochgeladene Datei beim Aufruf der Chain aber noch nicht in der Datenbank eingetragen zu sein, da die idupl über cApiUpload noch nicht ermittelt werden kann (ergibt 0). Ohne idupl ist es aber leider nicht möglich, einen neuen Metadaten-Eintrag mit dem Upload zu verknüpfen.

Leider konnte ich auch nicht finden, wann und wo der DB-Eintrag in der con_upl für die neue Datei erzeugt wird. Nach dem Upload ist der Eintrag in der Datenbank vorhanden, beim Aufruf der Chain aber scheinbar noch nicht.

Oder gibt es irgendeine Idee, wie man dieses Problem umschiffen kann oder ob es eine andere sinnvolle Stelle für diesen Vorgang gibt?

Vielen Dank und viele Grüße

Michael

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von Faar » Mo 9. Sep 2019, 19:54

hm, in der Chain-Beschreibung steht auch nur, dass die Datei an ihrer Position gespeichert ist, aber nicht unbedingt schon die Datenbank-Daten.
https://docs.contenido.org/display/CONDEVE/Chain
Vermutlich wird erst nach der Speicherung der Datei (der betreffende Hook) auch die Datenbank befüllt, also nach dem Hook (Chain).
Wenn das so ist, kommst du zwar an die Daten des Bildes aber nicht an den Datenbankeintrag.

Da gibts aber auch noch die Contenido.Upl_edit. -Chains, wie die .save: This chain is called everytime when upl-details is saved.
Da wird doch auch beim Öffnen des Dateimanagers ein programm getriggert, das die Dateien einliest, die man z.B. mit FTP hochgeladen hat.
Ob man sich da einklinken kann?

Also, wenn es dumm läuft, müsste man an sogar einen Cronjob denken, der nachts die Upload-Dateien durch geht und die IPTC-Einträge ausliest und in die DB schreibt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

dermicha
Beiträge: 88
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von dermicha » Di 10. Sep 2019, 11:41

Die Chain Contenido.Upl_edit.SaveRows ist die Lösung, Sie war mir nur nicht aufgefallen, weil ich nur nach 'Upload'-Chains gesucht habe. Vielen Dank dafür!

Lediglich, wenn bei erneut hochgeladenen Dateien (Überschreiben) die Daten aktualisiert werden sollen, braucht man auch die andere Chain, da Contenido.Upl_edit.SaveRows hier gar nicht aufgerufen wird.

Was ich tatsächlich immer noch nicht gefunden habe (ist aber zur Lösung auch nicht nötig) ist, wo der DB-Eintrag in der con_upl für neu hochgeladene Dateien angelegt wird...

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von Faar » Di 10. Sep 2019, 19:09

Letzteres würde mich auch noch interessieren.
Vermutlich irgendeine Klasse die das bereit stellt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

dermicha
Beiträge: 88
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von dermicha » Mi 11. Sep 2019, 16:49

Die Funktion ist eigentlich create() in der Klasse cApiUploadCollection, ich konnte aber nicht herausfinden, wo/wann Sie bei einem initialen Upload einer Datei aufgerufen wird.

homtata
Beiträge: 1050
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von homtata » Mi 11. Sep 2019, 18:09

Ich vermute mal, das geht eher über die function sync) in class.upload.php. Wenn ich das richtig verstehe, wird der function ein Dateinamen und ein Verzeichnis übergeben, und wenn diese Datei aber nicht in der DB gefunden werden kann, wird über create() ein Eintrag für die con_upl erzeugt. Ihr müsst also eher suchen, wo sync() aufgerufen wird nach einem Upload.. aber wie gesagt: eher ein Schuss ins Blaue.

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von Faar » Do 12. Sep 2019, 08:49

Ich glaube, diese Funktion hier ist es: https://api.contenido.org/latest/source ... y.html#200
scheint auf den ersten Blick gleich mit der hier zu sein:
https://api.contenido.org/latest/source ... S.html#200
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

dermicha
Beiträge: 88
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von dermicha » Do 12. Sep 2019, 09:07

Die Frage ist nur, wo der Aufruf einer entsprechenden Funktion in
contenido/includes/include.upl_files_overview.php
erfolgt. Das konnte ich bisher nicht ausfindig machen...

homtata
Beiträge: 1050
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von homtata » Do 12. Sep 2019, 09:26

Zeile 523:

Code: Alles auswählen

uplSyncDirectory($path);

dermicha
Beiträge: 88
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von dermicha » Do 12. Sep 2019, 09:33

Vieln Dank! Jetzt habe ich die Struktur verstanden :-)

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von Faar » Do 12. Sep 2019, 10:00

homtata hat geschrieben:
Do 12. Sep 2019, 09:26
Zeile 523:

Code: Alles auswählen

uplSyncDirectory($path);
Irgendwie dürftig und schäbig, den Funktionsaufruf einfach so leer dahin zu stellen ohne einen Kommentar darüber :?
Generationen später rätseln die Leute darüber, was der Aufruf bewirkt und warum der in dem Code so da steht.
Nur weil eine Kommentarzeile fehlt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

dermicha
Beiträge: 88
Registriert: Mi 9. Dez 2009, 17:57
Kontaktdaten:

Re: Wann werden Dateien beim Upload in die DB eingetragen?

Beitrag von dermicha » Do 12. Sep 2019, 10:03

So habe ich wenigstens eine Ausrede :wink:

Antworten