mod_form 4.1e vs. PHP 7.2

Diskussion zum Formular-Modul für ConPresso 4
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

mod_form 4.1e vs. PHP 7.2

Beitrag von Mr. Magpie »

Ich habe bei mir eine Version 4.1e von mod_form im Einsatz (vgl. http://community.conpresso.de/viewtopic ... 7907#27907). Die enthält in mod_form/includes/actions.inc.php eine Funktion decode_entities():

Code: Alles auswählen

function decode_entities($text) {
  $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #once
  $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #twice
  $text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
  $text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text);  #hex notation
  return $text;
}
Unter PHP 7.2 müsste man - wegen des fehlenden /e-Modifier-Supports - die beiden preg_replace()-Zeilen ersetzen: "preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead"


Außerdem verursacht die Zeile

Code: Alles auswählen

if ($activeModules[$directory]['auto_expire']=="yes")	$data['verfallsdatum']	= date('Y-m-d', time() + $activeModules[$directory]['expire_time']*86400 ) . ' 23:59:59';
unter PHP 7.2 einen Fehler: "A non-numeric value encountered"

Kannst du für die beiden Probleme bitte eine Lösung generieren?
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7109
Registriert: 01.01.1970 02:00
Hat sich bedankt: 102 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

Code: Alles auswählen

function decode_entities($text) {
     $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #once
     $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #twice
     $text= preg_replace_callback('/&#(\d+);/m',function ($m) { return chr($m[1]); },$text); #decimal notation
     $text= preg_replace_callback('/&#x([a-f0-9]+);/mi',function ($m) { return chr("0x".$m[1]); },$text);  #hex notation
     return $text;
}
Wo im zweiten Fall das Problem sein soll sehe ich nicht. Aber seit PHP 7.1 wird da wohl etwas pingelig mit Warnungen gearbeitet, also:

Code: Alles auswählen

if ($activeModules[$directory]['auto_expire']=="yes")	$data['verfallsdatum']	= date('Y-m-d', time() + (int)$activeModules[$directory]['expire_time']*86400 ) . ' 23:59:59';
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
hscha
ConPresso-Experte
Beiträge: 525
Registriert: 22.02.2006 23:00
Wohnort: Berlin
Hat sich bedankt: 199 Mal
Danksagung erhalten: 17 Mal

Beitrag von hscha »

Wo bekomme ich die Version 4.1e her? Bei Conpresso4 gibts immer noch 4.1c

Grüße von Horst
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7109
Registriert: 01.01.1970 02:00
Hat sich bedankt: 102 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

Hallo Horst,

der Download auf conpresso4.de ist seit 2013 die 4.1d. Habe nur die "Anzeige" der Versionsnummer vergessen anzupassen...

Du kannst von mir das Archiv für die 4.1e bekommen, ich will in Kürze noch eine Datei austauschen, weil sich einige Hosting-Server mit der Codierungserkennung schwer tun.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
hscha
ConPresso-Experte
Beiträge: 525
Registriert: 22.02.2006 23:00
Wohnort: Berlin
Hat sich bedankt: 199 Mal
Danksagung erhalten: 17 Mal

Beitrag von hscha »

Sehr gern!
Frohes Fest aus Berlin!