Plugin calendar_xh und PHP 8 - fataler Fehler

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by cmb » Thu Aug 11, 2022 12:35 pm

lck wrote:
Thu Aug 11, 2022 11:04 am
Bei mir liefert der PHP error_log folgendes:
php_error_log wrote:PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in D:\...\xh175\plugins\newsletter\index.php on line 581
In der Zeile steht

Code: Select all

$k[$i]=ord($ky{$i})&0x1F;
ersetze alle Vorkommen von

Code: Select all

{$i}
durch

Code: Select all

[$i]
, es sind insgesamt 3, in den Zeilen 581, 585 und 586. Dann sollte Newsletter zumindest laufen.
Oh, stimmt. Ich glaube das wurde schon einmal im Forum gemeldet/besprochen.
lck wrote:
Thu Aug 11, 2022 11:04 am
Im Backend des Plugins tauchen dann noch ein paar Warnings auf. Christoph, was wäre da zu ändern?
Debug Mode wrote:WARNING: Undefined array key 0
D:\xampp\htdocs\Portable_XH-3.1\www\xh175_test_calendar148\plugins\newsletter\admin.php:335
WARNING: Undefined array key 0
D:\xampp\htdocs\Portable_XH-3.1\www\xh175_test_calendar148\plugins\newsletter\admin.php:336
WARNING: Undefined array key 0
D:\xampp\htdocs\Portable_XH-3.1\www\xh175_test_calendar148\plugins\newsletter\admin.php:338
WARNING: Undefined array key 0
D:\xampp\htdocs\Portable_XH-3.1\www\xh175_test_calendar148\plugins\newsletter\admin.php:355
WARNING: Undefined array key 0
D:\xampp\htdocs\Portable_XH-3.1\www\xh175_test_calendar148\plugins\newsletter\admin.php:356
WARNING: Undefined array key 0
D:\xampp\htdocs\Portable_XH-3.1\www\xh175_test_calendar148\plugins\newsletter\admin.php:379
Zeile 335 bis 338

Code: Select all

		preg_match('/newsletter\(["|\'].*["|\']\)/',$mres[0],$mres);
		if (trim($mres[0]=="")) { /// try {{{PLUGIN:....}}} notification
			preg_match('/{{{[PLUGIN:]*newsletter\(["|\'].*["|\']\).*}}}/i',$i,$mres);
			preg_match('/newsletter\(["|\'].*["|\']\)/',$mres[0],$mres);
Soweit ich es überblicke, ist die Warnung eher harmlos, aber man sollte sich diesen Code trotzdem mal vornehmen. Zum einen sollte man den Rückgabewert von preg_match() prüfen und entsprechend behandeln; dann spart man sich die Warnungen, und auch unnötige Funktionsaufrufe. Und die beiden preg_match() Paare (Zeile 334/335 und 337/338) erscheinen unnötig; das sollte eigentlich mit jeweils einem einzigen preg_match() zu erledigen sein. Wer mag, kann ja mal folgendes ausprobieren (ungetested):

Code: Select all

  	$page[$l[$count]]=$h[$count];
		preg_match('/#cmsimple\s+.*(newsletter\(["|\'].*["|\']\)).*#/i',$i,$mres);
		if (trim($mres[1]=="")) { /// try {{{PLUGIN:....}}} notification
			preg_match('/{{{[PLUGIN:]*(newsletter\(["|\'].*["|\']\)).*}}}/i',$i,$mres);
      /*
			if (trim($mres[0]=="")) { //not found on the page, search hi_pd_scripting for newsletter calls
				if (isset($plugin_cf['hi_pd_scripting']['scripts_max_on_page']) && isset($pd_router) ) { // only if pd_scripting and page_param are installed search through pagedata.php            
					$page_pd = $pd_router -> find_page($count); // get page
					// search for newsletter in hi_pd_scripting fields in pageparam
					for ($pd_i = 1; ($pd_i <= $plugin_cf['hi_pd_scripting']['scripts_max_on_page']); $pd_i++) {
						if ($page_pd['hi_pd_scripting_active'.$pd_i] == '1') {  // activated
							preg_match('/newsletter\(["|\'].*["|\']\)/',trim($page_pd['hi_pd_scripting_code'.$pd_i]),$mres);
							if ($mres[0]!="")
								$pd_i=$plugin_cf['hi_pd_scripting']['scripts_max_on_page']; // found, destroy loop	
						}	
					}
				}
			}
      */
		}
		preg_match('/(["|\'].*["|\'])/',$mres[1],$mres);
		$temp=preg_replace('/["|\']/',"",$mres[0]);
Die erste und letzte Zeile gibt es so ein admin.php. Der Rest dazwischen wurde von mir etwas angepasst. Das dürfte immer noch ein paar Warnungen erzeugen, und sollte wohl noch weiter überarbeitet werden.
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by lck » Thu Aug 11, 2022 4:03 pm

cmb wrote:
Thu Aug 11, 2022 12:35 pm
Das dürfte immer noch ein paar Warnungen erzeugen, und sollte wohl noch weiter überarbeitet werden.
Ja, da sieht es dann so aus:
WARNING: Undefined array key 1
D:\xampp\htdocs\...\xh175\plugins\newsletter\admin.php:336
WARNING: Undefined array key 1
D:\xampp\htdocs\...\xh175\plugins\newsletter\admin.php:354
WARNING: Undefined array key 0
D:\xampp\htdocs\...\xh175\plugins\newsletter\admin.php:355
WARNING: Undefined array key 0
D:\xampp\htdocs\...\xh175\plugins\newsletter\admin.php:367
WARNING: Undefined array key 0
D:\xampp\htdocs\...\xh175\plugins\newsletter\admin.php:379
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

pergachris
Posts: 190
Joined: Fri Aug 31, 2012 9:28 pm
Location: Hemden (NRW)

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by pergachris » Fri Jan 27, 2023 7:39 am

Hallo, vielleicht kann ich mich hier anhängen.

Ich habe auch meine Probleme mit der Umstellung auf PHP8

Genutzt habe ich Calendar 1.4.8

Ich war froh hier die geänderten Zeilen zu finden. Aber irgendwie war das nicht ganz so wie erhofft.

Dann habe ich es mit 1.4.9 versucht.

Der Kalender und die Eventliste wird angezeigt.

Jedoch wenn ich neue Events versuche einzutragen bekomme ich "manchmal" Probleme.

Beim Klick auf speichern

Manchmal erscheint folgendes:
Uncaught TypeError: Unsupported operand types: string - string in /mnt/web520/d0/00/510321500/htdocs/test21/plugins/calendar/includes/editevents.php:233
Stack trace:
#0 /mnt/web520/d0/00/510321500/htdocs/test21/plugins/calendar/index.php(284): include_once()
#1 /mnt/web520/d0/00/510321500/htdocs/test21/plugins/calendar/admin.php(180): editevents()
#2 /mnt/web520/d0/00/510321500/htdocs/test21/cmsimple/cms.php(1123): include('...')
#3 /mnt/web520/d0/00/510321500/htdocs/test21/index.php(6): include('...')
#4 {main}
thrown in /mnt/web520/d0/00/510321500/htdocs/test21/plugins/calendar/includes/editevents.php on line 233
Meistens tritt das Problem auf, wenn ich nur 'ein' Datumsfeld ausfülle. Also nur Startdatum bzw Enddatum.
Wenn ich in beiden Feldern etwas eintrage, dann funktioniert das abspeichern meistens.

Kann das jemand nachvollziehen?

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by cmb » Fri Jan 27, 2023 9:53 am

pergachris wrote:
Fri Jan 27, 2023 7:39 am
Meistens tritt das Problem auf, wenn ich nur 'ein' Datumsfeld ausfülle. Also nur Startdatum bzw Enddatum.
Wenn ich in beiden Feldern etwas eintrage, dann funktioniert das abspeichern meistens.
Siehe https://github.com/cmsimple-xh/calendar/issues/18. Da werde ich wohl am Wochenende Calendar 1.4.10 veröffentlichen. Den Fix könntest du manuell durchführen, und falls dir noch etwas auffällt, dann gib bitte Bescheid (weitere Fixes könnten dann vielleicht noch in 1.4.10 rein).
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by frase » Fri Jan 27, 2023 10:02 am

CMSimple_XH 1.7.5 - original unverändert
xampp (win) mit PHP 8.2.0

Plugin Calendar_XH 1.4.9 in den Plugin-Ordner kopiert.
Ergebnis:
weiße Seite mit Meldung:
Access denied
Erst, wenn ich in der index.php des Plugins den Security check (Zeile 6) auskommentiere, geht es weiter:

Code: Select all

if ((!function_exists('sv')) || preg_match('!calendar/index.php!i', sv('PHP_SELF')))die('Access denied');
Mehr habe ich noch gar nicht gemacht. Es sollte nur mal ein schneller Kalender-Test werden.

pergachris
Posts: 190
Joined: Fri Aug 31, 2012 9:28 pm
Location: Hemden (NRW)

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by pergachris » Fri Jan 27, 2023 10:18 am

cmb wrote:
Fri Jan 27, 2023 9:53 am

Siehe https://github.com/cmsimple-xh/calendar/issues/18. Da werde ich wohl am Wochenende Calendar 1.4.10 veröffentlichen. Den Fix könntest du manuell durchführen, und falls dir noch etwas auffällt, dann gib bitte Bescheid (weitere Fixes könnten dann vielleicht noch in 1.4.10 rein).
Oh,
das war schon bekannt. Tut mir leid, habe ich im Forum nicht entdeckt.

Ich habe nun die Zeile ausgetauscht. Nun funktioniert es. Danke

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by cmb » Fri Jan 27, 2023 11:56 am

frase wrote:
Fri Jan 27, 2023 10:02 am
CMSimple_XH 1.7.5 - original unverändert
xampp (win) mit PHP 8.2.0

Plugin Calendar_XH 1.4.9 in den Plugin-Ordner kopiert.
Ergebnis:
weiße Seite mit Meldung:
Access denied
Erst, wenn ich in der index.php des Plugins den Security check (Zeile 6) auskommentiere, geht es weiter:

Code: Select all

if ((!function_exists('sv')) || preg_match('!calendar/index.php!i', sv('PHP_SELF')))die('Access denied');
Hmm, da hatte ich kürzlich etwas geändert, aber sollte ein Bugfix sein, weil eben PHP_SELF den URL-Pfad zur Datei angeben sollte, nicht aber den Dateipfad (und nur dieser enthält unter Windows Backslashes statt Forwardslashes). Würde es denn bei dir funktionieren, wenn du diese Änderung zurücknimmst?
pergachris wrote:
Fri Jan 27, 2023 10:18 am
Oh,
das war schon bekannt. Tut mir leid, habe ich im Forum nicht entdeckt.
Kein Problem; ist ja wirklich nicht einfach, all die verteilten Infos im Forum zu finden. :)
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by frase » Fri Jan 27, 2023 12:15 pm

cmb wrote:
Fri Jan 27, 2023 11:56 am
Hmm, da hatte ich kürzlich etwas geändert, aber sollte ein Bugfix sein, weil eben PHP_SELF den URL-Pfad zur Datei angeben sollte, nicht aber den Dateipfad (und nur dieser enthält unter Windows Backslashes statt Forwardslashes). Würde es denn bei dir funktionieren, wenn du diese Änderung zurücknimmst?
Ja.
Wenn ich in der index.php Zeile 6 wieder zurücksetze:

Code: Select all

if ((!function_exists('sv')) || preg_match('!calendar'.DIRECTORY_SEPARATOR.'index.php!i', sv('PHP_SELF')))die('Access denied');
… dann funktioniert es wieder.

P.S.
Das Plugin ist dermaßen überfrachtet, mit Konfig-Optionen und Style-Vorgaben, dass ich beinahe den Überblick verliere – und damit auch die Lust auf schnelle Spontan-Tests. :(
Bisher bin ich mit Calendar_XH ausgekommen, oder ich rede mir das nur ein, eben weil mir Svastis „großes“ Kalender-Plugin immer zu kompliziert war.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by frase » Fri Jan 27, 2023 12:28 pm

Was mir noch auffiel:
Auf einer Seite:

Code: Select all

{{{bigcalendar();}}}
Darunter steht dann der Hinweis:
Mouse over date => details
Das kann man in den Sprachdateien ändern wie man will – immer nach irgendwelchen Speichervogängen, steht es wieder in Englisch da.
Das hängt möglicherweise auch mit dem Security-Check zusammen.
Es gibt beim Speichern der Einstellungen auch noch Warnungen für alle Sprachvariablen:
NOTICE: Indirect modification of overloaded element of XH\PluginConfig has no effect
… \plugins\calendar\languages\de.php:3

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Plugin calendar_xh und PHP 8 - fataler Fehler

Post by cmb » Fri Jan 27, 2023 1:11 pm

frase wrote:
Fri Jan 27, 2023 12:15 pm
Wenn ich in der index.php Zeile 6 wieder zurücksetze:

Code: Select all

if ((!function_exists('sv')) || preg_match('!calendar'.DIRECTORY_SEPARATOR.'index.php!i', sv('PHP_SELF')))die('Access denied');
… dann funktioniert es wieder.
Das ist ein Ding! Muss ich mir anschauen; etwas später.
frase wrote:
Fri Jan 27, 2023 12:15 pm
Das Plugin ist dermaßen überfrachtet, mit Konfig-Optionen und Style-Vorgaben, dass ich beinahe den Überblick verliere – und damit auch die Lust auf schnelle Spontan-Tests. :(
Bisher bin ich mit Calendar_XH ausgekommen, oder ich rede mir das nur ein, eben weil mir Svastis „großes“ Kalender-Plugin immer zu kompliziert war.
Ja, genau das ist auch der Grund warum ich Calendar 1.2 geforkt habe, und eben nicht Calendar 1.4. Meiner Meinung nach sind da die Gäule durchgangen; manches ist sicher nett, aber das ist nicht mehr wirklich CMSimple_XH.
frase wrote:
Fri Jan 27, 2023 12:28 pm
Auf einer Seite:

Code: Select all

{{{bigcalendar();}}}
Darunter steht dann der Hinweis:
Mouse over date => details
Das kann man in den Sprachdateien ändern wie man will – immer nach irgendwelchen Speichervogängen, steht es wieder in Englisch da.
Das hängt möglicherweise auch mit dem Security-Check zusammen.
Es gibt beim Speichern der Einstellungen auch noch Warnungen für alle Sprachvariablen:
NOTICE: Indirect modification of overloaded element of XH\PluginConfig has no effect
… \plugins\calendar\languages\de.php:3
Oh, ja, da fehlen zumindest Redirects nach dem Speichern (ich finde es eigentlich keine gute Idee, dass Plugins selbst config.php und die Sprachdateien schreiben; das sollte dem Core überlassen bleiben, aber das möchte ich bei Svastis Plugins nicht ändern; hängt vermutlich zuviel dran). Wenn die Redirects durchgeführt werden, passt es vielleicht auch schon mit der Sprache; vielleicht aber auch nicht. Schau ich später auch noch mal an.
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply