WebsiteBaker Support (2.12.x) > Modules
count() in search_modext.php
jacobi22:
macht ja nix ;-)
Dietmar weiß sicher Bescheid, wenn er "count()" liest - nur wissen muß er es
Luisehahne:
--- Quote from: jacobi22 on December 19, 2018, 11:41:08 AM ---
--- Quote ---[E_WARNING] /search/search_modext.php:[104] from /modules/guestbook/search.php:[68] print_excerpt2 "count(): Parameter must be an array or an object that implements Countable"
--- End quote ---
Stackoverflow meint: vorher abfragen, ob $excerpt_array auch ein Array ist (is_array()), wenn nicht, auf 1 setzen - 1 muß es ja sein, weil er sonst nicht in die while-Schleife geht
bitte mal checken und wenn bestätigt, ins Projekt aufnehmen
--- End quote ---
Ursache liegt an einer falschen Deklaration. Werde es für die 2.12.2 fixen. Meldung wird sein
--- Quote ---bug fixed wrong array declaration in function get_excerpts line 82 in file /search/search_modext.php
--- End quote ---
das FALSE ändern in [], das sollte es gewesen sein. Bitte mal vorab testen und Bescheid geben, dann übernehme ich es ins Project
Dietmar
jacobi22:
bin noch dabei, die Bedingungen zu analysieren, unter denen der o.g. Fehler auftritt.
Die Lösung ist für dich und mich wohl verständlich, aber ich hätte den Fehler gern vorher einmal provoziert
Wie gesagt, kommt die Meldung aus der Benutzung der Suche auch im Gästebuch. Die Suche dort generiert aus den Beiträgen u.a. den Content und alle Daten, die im Gästebuch genutzt werden, eben auch Name, EMail
Daraus erhalte ich minimum einen Treffer, sonst wäre $result == false (in der search.php des Moduls) und die search_modext.php springt garnicht erst an.
Diese search_modext.php soll nun in der get_excerpts() die Treffer suchen, den Suchbegriff markieren, doppelte aussortieren usw. aber auch Treffer mit einer Mailadresse drin wieder ausfiltern (Zeile 102ff)
--- Code: ---if(!preg_match('/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\./', $match)) // skip excerpts with email-addresses
$excerpt_array[] = trim($match);
--- End code ---
Das bedeutet (für mich): wenn mein Treffer ($match) eine EMail-Adresse enthält, fliegt der raus und damit wäre $except_array immer noch false (aus Zeile 82) und in Zeile 104 beim count() kein Array, weil ja nicht als solcher deklariert, was deine Korrektur dann ändern würde.
So rein theoretisch braucht es auch kein Gästebuch dazu, ein Wysiwyg mit Mailadresse im Treffersatz sollte reichen, um den Fehler ohne Korrektur zu provozieren, oder?
Luisehahne:
Das Problem ist eben halt, dass php7 immer stricter wird. Da fallen irgendwann mal alle Module durchs Raster. Demnächst sind alle Variablen vor Benutzung type mäßig zu deklarien. Ist vorbei, einer Variable verschieden Typen zu zuweisen, wie das bisher möglich war. Da kommt doch richtig Freude auf. :|
Ganz zu schweigen von MySql, CSP und mehr. Habe einen großenTeil für die kommende 2.13.x bereits umgesetzt, und musste danach erstmal unsere eigene Plugins im CKeditor wieder lauffähig bekommen.
Da passierne Ding, da bekommst du Alpträume :-P
Dietmar
jacobi22:
Für Harald zum Nachstellen und testen:
wie oben angenommen, reicht ein einfacher Text mit einer korrekten EMail-Adresse und einem Suchwort, das eher selten auf den Seiten zu finden ist. Damit es funktioniert, wären zwei Sectionen nicht verkehrt. Einmal mit, einmal ohne Mailadresse
als Beispiel zwei Wysiwyg's
1. Section - Text: Automobil mail@mail.com
2. Section - Text: Automobil
Suchbegriff: Automobil
die erste Section wird wg der Mailadresse raus gefiltert, die zweite bringt den Treffer
mit Originalcode in der Datei search/search_modext.php - Zeile 82
--- Code: ---$excerpt_array =false;
--- End code ---
bekommst du die Fehlermeldung
Mit Dietmar's Fix
--- Code: ---$excerpt_array = [];
--- End code ---
nicht mehr
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version