Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 12. September 2018 07:16

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 610

[GELÖST] AdvancedContent und PHP7.x

Hallo zusammen,
immer mehr Anbieter schalten ja demnächst PHP5.6 und teilweise sogar 7.0 ab. Da ich noch einige Seiten mit CMSms 1.12.2 betreue und fast immer AdvancedContent einsetze wird das wohl nicht reibungslos klappen.
In der Regel läuft das Frontend auf Anhieb oder nach ein paar kleinen Anpassungen. Aber die Seitenbearbeitung mit installiertem AdvancedContent bleibt schlicht weiß.
Gibt es für dieses Modul schon entsprechende Anpassungen? Ich habe nichts dazu gefunden.
Teilweise kann ich schlicht nicht auf CMSms 2 umstellen, da Module verwendet werden, die es dafür nicht mehr gibt und für die ich auch noch keine Alternativen gefunden habe (z.B. EventsManager).
Bin für jeden Tipp dankbar ...

Offline

#2 12. September 2018 15:10

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: [GELÖST] AdvancedContent und PHP7.x

Ich arbeite dran.
Und dabei versuche ich auch gleich alle Fehler in CMSms/Smarty/ADOdb/Xajax ... etc. zu beseitigen.

Aber die Seitenbearbeitung mit installiertem AdvancedContent bleibt schlicht weiß.

Zumindest das passiert bei mir (lokal) unter PHP 7.1.9 nicht mehr.

Kannst Du mir ein "Testszenario" zusammenbasteln? Wenn ich nur die Standardsachen teste, die mir so auf die Schnelle einfallen, übersehe ich die Hälfte.
Ich bräuchte wenigstens die AC Einstellungen, Beispieltemplates mit allen verwendeten AC Blocktypen und diverse Smarty-Eigenkreationen.

Offline

#3 12. September 2018 15:19

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 610

Re: [GELÖST] AdvancedContent und PHP7.x

Hallo NaN,
das klingt ja richtig gut! Meinst Du Zugriff auf eine entsprechende CMSms-Installation?
Ich nutze auch nicht alle Features von AC, aber da kann ich Dir gerne etwas (für mich) repräsentatives aufsetzen.

Offline

#4 12. September 2018 15:25

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: [GELÖST] AdvancedContent und PHP7.x

Zugriff brauch ich nicht unbedingt.
Seiten-Templates dürften ausreichen.
Ich muss einfach wissen, was alles schiefgehen kann.
Ich hatte irgendwo mal ein Monster-Template, in dem zu Testzwecken so ziemlich alle möglichen Konstellationen verwendet wurden, die mit AC möglich sind. Der Rechner existiert aber leider nicht mehr :-(

Offline

#5 12. September 2018 15:35

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 610

Re: [GELÖST] AdvancedContent und PHP7.x

Ok, das bekomme ich hin :-) Müsste ich morgen schaffen.
Danke schon mal :-)

Offline

#6 12. September 2018 16:09

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: [GELÖST] AdvancedContent und PHP7.x

Wenn Du es richtig drauf hast, dann kannst Du parallel dazu ja mal die SVN-Version testen (die im trunk-Verzeichnis).

Offline

#7 12. September 2018 16:12

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 610

Re: [GELÖST] AdvancedContent und PHP7.x

Das mache ich gerne - habe vor ein paar Tagen schon mal reingeschaut, aber da war noch der alte Stand.
Ob ich es drauf habe, wird sich dann zeigen :-)

Offline

#8 12. September 2018 16:35

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: [GELÖST] AdvancedContent und PHP7.x

Hab heute erst was eingecheckt.

Aber einige Fehler hängen mit SMARTY zusammen.

Denn der eine fatal-Error im Backend hatte nichts mit AC zu tun, sondern mit Smarty. Und zwar liegt es daran, dass der PHP-Parser Sachen wie

return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);

jetzt anders interpretiert als früher. D.h. früher wurde der Wert von $function[1] als Funktionsname verwendet. Jetzt nicht mehr. Jetzt wird zuerst versucht $function aufzulösen - was dann in der Fehlermeldung "Array to String conversion" endet - und daraus wird dann

return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->"Array"[1]($new_args, $this);

Was in etwa soviel wie

return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->r($new_args, $this);

bedeutet. Und diese Funktion wollte man an der Stelle garnicht aufrufen, vor allem weil es die nicht gibt.

Und dann gibt es so winzig kleine Tippfehler, die einem erst nach Umschreiben des Codes auffallen (z.B. $x = $y | $z; was eigentlich lauten müsste $x = $y || $z;  roll ).

Offline

#9 21. September 2018 09:38

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 610

Re: [GELÖST] AdvancedContent und PHP7.x

Erstens kommt es anders, zweitens als man denkt ... habe nun doch einige Projekte manuell auf CMSms 2.2.8 aktualisiert.
Aber habe auch folgendes herausgefunden. Wenn ich in der lib/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php in den Zeilen 402, 474, 514, 563

[== PHP ==]
return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);

durch

[== PHP ==]
return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->{$function[1]}($new_args, $this);

ersetze, kommt kein Fehler mehr - selbst bei PHP 7.2.
Keine Ahnung, ob ich damit nur an der Oberfläche kratze oder wirklich die Wurzel getroffen habe. Aber normale Inhaltstypen wie Text, Dropdown und Checkbox funktionieren nun.
Da ja eh schon ein paar Dateien vom Core angefasst werden müssen, um PHP7-Kompatibilität zu schaffen, war mir das jetzt auch egal :-)

Beitrag geändert von jeff1980 (21. September 2018 09:39)

Offline

#10 21. September 2018 10:26

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: [GELÖST] AdvancedContent und PHP7.x

Das ist genau die Stelle, die ich meinte. Deswegen hatte AC nicht funktioniert.

Offline

#11 21. September 2018 10:44

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 610

Re: [GELÖST] AdvancedContent und PHP7.x

Meinst Du denn, dass die Anpassung so ok ist oder "blende" ich damit das eigentliche Problem nur aus?

Offline

#12 21. September 2018 10:52

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: [GELÖST] AdvancedContent und PHP7.x

Nö, ich denke schon, dass das eine echte Lösung ist.
Meine Lösung sah zwar anders aus, läuft aber auf's gleiche hinaus:

$func = $function[1];
return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->$func($new_args, $this);

Im Grunde geht es doch nur darum, dass man PHP nur sagen muss, dass "$function" und "[1]" zusammengehören. Ob man das nun mit einer Variable löst oder mit geschweiften Klammern, ist eigentlich egal. Hauptsache der Interpreter weiß, was er wie zu tun hat. (Ich glaube Letzteres ist nicht abwärtskompatibel zu irgendeiner Uralt-PHP-Version, ist hier aber vollstens zu vernachlässigen.)

Offline