Seite 2 von 3

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Do 14. Jul 2016, 15:09
von Oldperl
ähm :roll:

nur mal so ein paar Ideen

Code: Alles auswählen

$midcat = $_POST['exidcat'];
$midcat = $midcat + 0; 
sollte man evtl. besser so schreiben

Code: Alles auswählen

$midcat = (isset($_POST['exidcat']))?(int)$_POST['exidcat']:0; 
in der if-Abfrage ist der letzte Teil wohl so nicht richtig

Code: Alles auswählen

if ($_POST['export'] && $midcat > 0 && $midcat > $exlngid) { 
denn warum wird hier die zu exportierende Kategorie-Id mit der Sprach-Id verglichen?

beim holen der Inhalte

Code: Alles auswählen

$m['CMS_HEAD']['1'] = base64_encode($article->getContent('CMS_HEAD', 1)); 
muss man beim Inhalt beachten ob man im Front oder Backend ist. Im Backend wird der Quellcode für den Editor zurück geliefert.

Code: Alles auswählen

$mm = implode(file($pb['importfolder'] . $mmfile));
$mf = unserialize($mm);
hier kann was nicht stimmen, eventuell nochmal das Handling von Arrays und deren Verarbeitung beim Serialisieren nachlesen.

Auch die Verwendung der Funktion conEditFirstTime scheint nicht ganz korrekt zu sein, so ist beispielsweise $idcatnew normalerweise ein Array (kein int wie fälschlicherweise in der phpDoc angegeben).
Soweit nur mal ein paar Punkte die ich beim überfliegen gesehen habe. Wobei ich generell dazu raten würde den RAW-Daten-Export der 4.9 zu nutzen und gegebenenfalls die dabei erstellte xml-Datei beim Import zu verwenden.

Gruß aus Franken

Ortwin

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Do 14. Jul 2016, 15:53
von mattmarr
Hallo Ortwin!

Danke fürs kruze drüberschauen.
Ich werde mir das mal heuteabend bzw morgen nochmal genauer anschauen und entsprechend rückmeldung geben.



Grüße aus den tiefen von Contenido 4.9.9 :)

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Fr 15. Jul 2016, 16:34
von mattmarr
Hi @all!

Ich hab das ganze jetzt nochmal durchgecheckt und sehr viele Tests gemacht.
Egal was ich anstelle. Es wird beim Import, von mehr als ein Artikel/Datei, immer nur der erste korrekt im Contenido eingetragen. Alle weiteren bekommen zwar einen neuen Artikeleintrag im Contenido aber ohne auch nur ein Inhalt.
Ich hab auch mal versucht die Funktion conSaveContentEntry() rekursiv zurück zu verfolgen. Alle Daten kommen Korrekt in conSaveContentEntry() an. Gehen aber in der While-Schleife, ab Zeile 366, verloren. (functions.con2.php - http://api.contenido.org/con491/source- ... ml#341-396) :?



Gruß
Matthias

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Di 19. Jul 2016, 12:44
von mattmarr
*knock* *knock* :roll: :mrgreen:

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Di 19. Jul 2016, 13:25
von homtata
Zur Installation und Fehlersuche fehlt mir echt die Zeit. Daher einfach weiter Fragen, da du das besser eingrenzen kannst durch Dumps:
- Wird denn die while-Schleife überhaupt jedesmal durchlaufen, oder wird die chainIterator-Bedingung ab einem gewissen Durchgang gar nicht mehr erfüllt?
- Falls durchlaufen: verlieren $idartlang usw. in der Schleife WIRKLICH ihren Wert?? Es ist unwahrscheinlich, dass die Variablen wie $idartlang - wenn sie VOR der Schleife Inhalt hatten - innerhalb der while-Schleife ungültig werden aus heiterem Himmel.
- Falls die Schleife jedesmal durchlaufen wird: ist DANACH $value gesetzt oder nicht?

Gelöst?: hat conSaveContentEntry() ein Problem?

Verfasst: Mi 14. Dez 2016, 14:00
von dermicha
Hallo zusammen,

ich kann das Problem bestätigen. Ich habe eine ähnliche Funktion, die Daten aus einem Array in einer Schleife in neu angelegten Artikeln ablegt, die vor gut einem Jahr noch einwandfrei funktionierte.

Jetzt habe ich das gleiche Problem: Nur der erste Artikel wird korrekt angelegt und befüllt, bei allen weiteren fehlen sämtliche Inhalte. Lediglich für für Content Types/Ids, die bisher noch nicht beschrieben wurden, wird Inhalt in der DB abgelegt. Unter Rohdaten sind alle Content Types/Ids angelegt, aber leer.

Die Werte sind unmittelbar vor dem Aufruf von conSaveContentEntry() und unmittelbar danach vorhanden, das habe ich überprüft.

Unmittelbar nach

Code: Alles auswählen

$versioning->prepareContentForSaving($idartlang, $content, $value);
am Ende der Funktion in der functions.con.php ist $value auch befüllt. Ebenso in prepareContentForSaving in der concontentversioning.php nach

Code: Alles auswählen

            case 'disabled':
                if ($content->isLoaded()) {
                    // Update existing entry
                    $content->set('value', $value);
                    $content->set('author', $author);
                    $content->set('lastmodified', date('Y-m-d H:i:s'));
                    $content->store();
Da es in 2015 noch funktionierte: Könnte es eventuell mit Umbauten im Zusammenhang mit der Artikel-Versionierung liegen?

Update:
Nach Ersetzung des vorletzten Parameters in der conSaveContentEntry ca. Zeile 547 von NULL auf $value funktioniert der Import wieder:

Code: Alles auswählen

$content = $contentColl->create($idartlang, $idtype, $typeid, $value, NULL);
http://api.contenido.org/con4911/source ... y.html#547

Das erneute Überschreiben des ursprünglich leeren $value in der contentversioning.php in Zeile 564 scheint da nicht zu funktionieren:

Code: Alles auswählen

$content->set('value', $value);
http://api.contenido.org/latest/source- ... g.html#564

Wäre schön, wenn das geprüft und gegebenenfalls in die nächste Version einfließen würde. Sollte die Änderung das Problem nicht vollständig/korrekt lösen, würde ich mich freuen, wenn es zeitnah einen Patch gäbe...

Viele Grüße
Michael

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Mi 14. Dez 2016, 15:13
von Faar

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Mi 14. Dez 2016, 15:17
von dermicha
Ja, durch die Artikel-Versionierung. Dabei hat sich das wohl eingeschlichen.

Re: Gelöst?: hat conSaveContentEntry() ein Problem?

Verfasst: Mi 14. Dez 2016, 15:21
von Faar
dermicha hat geschrieben: Update:
Nach Ersetzung des vorletzten Parameters in der conSaveContentEntry ca. Zeile 547 von NULL auf $value funktioniert der Import wieder:

Code: Alles auswählen

$content = $contentColl->create($idartlang, $idtype, $typeid, $value, NULL);
http://api.contenido.org/con4911/source ... y.html#547
Das müsste meiner Meinung nach auch der Fehler sein, wenn da NULL statt $value steht.
In der alten Funktion nach Zeile 382 ist $value noch drin und dieses nachfolgende NULL mit 0 gesetzt.
http://api.contenido.org/con491/source- ... y.html#382

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Do 15. Dez 2016, 11:07
von frederic.schneider_4fb
Ich habe dazu ein Ticket angelegt, damit das überprüft wird - ausdrücklich auch die vorgeschlagene Lösung

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Do 15. Dez 2016, 11:26
von dermicha
Vielen Dank!

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Di 10. Jul 2018, 14:55
von mattmarr
Hallo!
frederic.schneider_4fb hat geschrieben:
Do 15. Dez 2016, 11:07
Ich habe dazu ein Ticket angelegt, damit das überprüft wird - ausdrücklich auch die vorgeschlagene Lösung
Gibt es schon infos und einen passenden Link zum Ticket?



Grüße
Matthias

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Do 30. Aug 2018, 08:36
von frederic.schneider_4fb

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Do 30. Aug 2018, 09:07
von mattmarr
Hallo frederic!
frederic.schneider_4fb hat geschrieben:
Do 30. Aug 2018, 08:36
Ja, siehe hier:
https://git.contenido.org/projects/CON/ ... f5a4c44805 :-)
Danke für die Info.

Kannst Du auch bitte mal nebenbei schauen warum ich euer GIT nicht mehr nutzen kann?
Passwort zurücksetzen funktioniert aber das einloggen nicht mehr.



Gruß
Matthias

Re: hat conSaveContentEntry() ein Problem?

Verfasst: Mo 7. Okt 2019, 15:24
von dermicha
Kann es sein, dass das in die 4.10 nicht eingeflossen ist? Oder wurde es anders gelöst?

VG
Michael