WebsiteBaker Support (2.12.x) > Modules

count() in search_modext.php

<< < (2/3) > >>

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