WE 8.1 - über php ein vorhandenes Dokument auslesen

Fragen und Infos zur Installation & Update von webEdition.
micha_sop
Member
Beiträge: 41
Registriert: Mi 4. Mai 2016, 13:53

WE 8.1 - über php ein vorhandenes Dokument auslesen

Beitragvon micha_sop » Mo 25. Mai 2020, 18:31

Hallo zusammen,

ich hoffe ihr könnt mir weiterhelfen.
Folgendes Problem:
Ich versuche über php auf die Daten einiger we-Dokumente zuzugreifen, um aus diesen dann Werte auszulesen.
Bislang (bis we 7.x) habe ich dies immer über folgenden Weg gemacht:

Code: Alles auswählen

include_once($_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/conf/we_conf.inc.php');
include_once $_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/we.inc.php';
include_once $_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/we_classes/we_webEditionDocument.inc.php';
$doc = new we_webEditionDocument();
$doc->initByID($docId);

Nach einem Update auf jetzt 8.1 funktioniert dies aber nicht mehr.
Ich habe die includes geändert (da es ja einige der Dateien nicht mehr gibt) und nutze nun die autload-Datei

Code: Alles auswählen

include_once($_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/we_autoload.inc.php');
Wenn ich dann aber ein Dokument-Objekt erstelle und es mit ->initByID() befüllen möchte, hängen die Skripte.

Code: Alles auswählen

$doc = new we_webEditionDocument();
$doc->initByID(12);
Ich habe das ganze versucht zu analysieren und bin bis zur we_db_tools.inc.php gekommen.
Hier taucht der Fehler "Call to a member function getHash() on null" auf - Zeile 33

Code: Alles auswählen

$h = $DB_WE->getHash($query, MYSQLI_ASSOC);
Warum geht das ganze nicht? Ist dies ein Bug?
Oder gibt es mittlerweile einen anderen Weg über php auf Dokument-Werte zuzugreifen?
Geht das überhaupt noch in irgend einer Weise?

Bin für jeden Hinweis dankbar.

Viele Grüße
Michael Böttger

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: WE 8.1 - über php ein vorhandenes Dokument auslesen

Beitragvon NilSole » Mo 25. Mai 2020, 20:05

Hallo,

wenn ich das richtig verstehe, möchtest du mit einem externen PHP Skript auf die Datenbank zugreifen? Wenn ja, müsstest du anstatt des Autoloaders

Code: Alles auswählen

include_once $_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/we.inc.php';
includen (das included den Autoloader gleich mit und initialisiert die Tablenames).

Innerhalb von webEdition Vorlagen kann man mit PHP auch auf die Dokumente zugreifen. Das wäre vielleicht etwas zuverlässiger. Eventuell kann man da auch etwas mit einer Listview machen.

Schöne Grüße
Nils

micha_sop
Member
Beiträge: 41
Registriert: Mi 4. Mai 2016, 13:53

Re: WE 8.1 - über php ein vorhandenes Dokument auslesen

Beitragvon micha_sop » Di 26. Mai 2020, 09:47

Hallo NilSole,

erstmal danke für deine Antwort.
Ich habe die Autoloader- mit der inc-Datei ersetzt.
Leider besteht dieser Fehler immer noch, d.h. die Funktion initByID() hängt sich immer noch an der gleichen Stelle auf..

Der Weg über webEdition ist hier leider keine gute Alternative. Dafür müsste zuviel umgestellt werden.
Dies ist ein Skript, das die eigentliche Download-quelle verschleiert.
Man kann also über we z.B. pdf-Dateien einpflegen und diese dann mittels des Skriptes abrufen ohne die direkte Url des Dokumentes zu kennen.
Da dies in früheren we-Versionen, wenn es überhaupt, nur sehr schwer möglich war, habe ich den Weg über ein externes Skript gewählt.

Bislang hat dieser Weg auch gut funktioniert. Nur leider seit einem Update nicht mehr - seit wann genau, kann ich nicht sagen.

Grüße
Michael

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: WE 8.1 - über php ein vorhandenes Dokument auslesen

Beitragvon mokraemer » Di 26. Mai 2020, 13:46

ich kann nicht nachvollziehen warum hier viel umgestellt werden müßte, nur weil man PHP Kode in ein Template schreibt. Damit ist WE zumindest korrekt intialisiert und man muß nicht drumherum bauen.
Die Variante ein Dokument per Hand zu initialisieren um an Werte zu kommen braucht man auch nicht. Man kann das eigentlich ganz sauber mittels
https://www.webedition.org/de/dokumenta ... e-document
Und dort die ID als id="$ID" übergeben, dann die Werte innerhalb der LV auslesen oder an Vars übergeben.
webEdition-Kern-Entwickler

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: WE 8.1 - über php ein vorhandenes Dokument auslesen

Beitragvon NilSole » Di 26. Mai 2020, 22:33

Hallo,

@Michael
sicher, dass das nicht funktioniert? Ich hatte die selbe Fehlermeldung auf meinem Testserver, und nachdem ich die we.inc.php included habe, hat initById funktioniert. (ist aber die nightly)
Andernfalls könntest du vielleicht das externe Skript innerhalb eines Templates includen und damit ein PHP Dokument erstellen, das sollte dann ja auch die genaue Herkunft verschleiern. Das habe ich eben auch getestet, läuft reibungslos.

@mokraemer
Ja, so dachte ich mir das auch.


Zurück zu „webEdition Installation & Update“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 29 Gäste