WebsiteBaker Support (2.13.x) > Modules

Massmail-Probleme

(1/3) > >>

masju:
Hallo liebe Gemeinde,

bitte steinigt mich nicht :wink:, ich versuche ein älteres Modul (massmail) zum Laufen zu bekommen auf der aktuellen WB 2.13.2 r133 unter PHP 8.1. An einer bestimmten Stelle erhalte ich die Fehlermeldung

--- Quote ---There was an uncatched exception
preg_split(): Argument #2 ($subject) must be of type string, int given
in line (307) of (/framework/class.wb.php):
--- End quote ---

Da ich mich nun überhaupt nicht an die Modifikation des Cores wage, traue ich, mal die Frage an die Experten hier zu stellen, was an dieser Stelle in der class.wb.php überhaupt passiert?

--- Code: ---public function is_group_match($mGroupsList1 = '', $mGroupsList2 = '', &$matches = null)
    {

        if ($mGroupsList1 == '' || $mGroupsList2 == '') { return false; }
        if (!\is_null($mGroupsList1) && !\is_array($mGroupsList1)) {
            $mGroupsList1 = \preg_split('/[\s,=+\-\;\:\.\|]+/', $mGroupsList1, -1, PREG_SPLIT_NO_EMPTY);
        }
        if (!\is_null($mGroupsList2) && !\is_array($mGroupsList2)) {
            $mGroupsList2 = \preg_split('/[\s,=+\-\;\:\.\|]+/', $mGroupsList2, -1, PREG_SPLIT_NO_EMPTY);
        }
        $matches = \array_intersect($mGroupsList1, $mGroupsList2);
        return (\sizeof($matches) != 0);
    }
--- End code ---

Viele Grüße
masju

sternchen8875:

--- Quote from: masju on December 20, 2022, 02:18:09 PM ---Da ich mich nun überhaupt nicht an die Modifikation des Cores wage,

--- End quote ---

das wäre auch gut so. Genannte Funktion is_group_match() ist eine der zentralen Core-Funktionen, das heißt u.a., sie wird vom WB-Kern für diverse mögliche Funktionen im Core oder in Modulen zur Verfügung gestellt, damit sie nicht zig-fach neu definiert werden muß.
WB ist wohl OpenSource, aber wer solche zentralen Funktionen ändert, muß sich nicht wundern, wenn diese Installation dann Schrott ist oder (noch schlimmer) durch solche Anpassungen zu einem für Angreifer offenem Scheunentor wird.
Reicht das als Steinigung?  :-P

Zu deiner Frage, was da passiert:

#1 die Fehlermeldung ist nicht komplett, darum sieht man den Auslöser des Problems nicht. Offensichtlich wird aber an anderer Stelle (dein massmail-Modul?) diese Funktion mit zwei Werten aufgerufen. Diese ist dann der Auslöser.
#2 ein Blick in die Kommentare der class.wb.php in die Zeilen vor dieser Funktionsdefinition sollte schon verraten, was da passiert. Verglichen werden zwei Array's oder komma-separierte Listen, die, wie der Name schon sagt, die Gruppenzugehörigkei t betreffen.
Hauptsächlich wird damit geprüft, ob der User aus Liste 1 Mitglied in Gruppe 2 ist, z.b. um dir das Bearbeiten von Beiträgen zu erlauben.

Im Speziellen sagt deine Fehlermeldung, das ein String erwartet wird, aber ein Integer Wert geliefert wurde. Mit der Funktion preg_split() werden dann die dort definierten Zeichen aus dem String entfernt, damit am Ende nur "saubere" Werte verglichen werden können.
In den allermeisten Fällen ist die eigentliche Funktion dann nur das letzte Glied in der Kette. Ich würde hier prüfen, was hier an Werten für diese Funktion übergeben wird

sternchen8875:
Hab mal meine Platte durchsucht und einige ältere Versionen gefunden. Die jüngste davon lief mit PHP 7.4.x, danach wurde die MassMail in diesem Projekt eingestellt, weil man ja immer an der Grenze zum Spam-Mailer sitzt. Und mit der härteren Umsetzung der DSVGO muß man dann noch diverse Umbauten machen, um eine MassMail und dessen Anmeldung abmahnsicher zu gestalten.

In den Versionen, die mir vorliegen, wird solche Abfrage nicht über die erwähnte Funktion is_group_match() ausgeführt. Diese Funktion ist im Modul auch nicht enthalten. Daraus ergeben sich zwei Fragen

#1 Wurde das Modul vielleicht schon umgebaut?

#2 Ist wirklich das Modul "MassMail" der Auslöser für deine Fehlermeldung? Das könnte vielleicht der von mir vermißte erste Teil der Fehlermeldung beantworten.

MassMail selbst ist ja nur das Verwaltungsprogramm für die Mails und braucht auch immer des Newsletter-Modul, um zu funktionieren.
Könntest du die beiden Module mal zur Verfügung stellen (hier oder auch gern per PN)?

Abhängigkeiten von Modulen waren eigentlich schon immer verpöhnt bei WB. Wundert mich, das aus den zwei Modulen nie ein Einziges gemacht wurde.
Der Bedarf ist mittlerweile wohl fast gegen Null.

masju:
Oh super, vielen Dank für die sehr ausführliche Antwort. Ich pfusche natürlich nicht am Core herum  :wink:
Vielleicht ist tatsächlich das Newsletter-Modul der Auslöser.
Es gibt keinen "ersten Teil der Fehlermeldung", sie wird direkt im Backend angezeigt. Aber ich habe gerade im Error-Log (hätte ich ja gleich mal schauen sollen) noch ein paar Einträge gefunden:

--- Quote ---Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[122] from /admin/pages/modify.php:[249] require "Undefined array key """
Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[122] from /admin/pages/modify.php:[249] require "Undefined array key """
Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[122] from /admin/pages/modify.php:[249] require "Undefined array key """
Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[277] from /admin/pages/modify.php:[249] require "Undefined array key "USERS""
Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[277] from /admin/pages/modify.php:[249] require "Trying to access array offset on value of type null"
Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[302] from /admin/pages/modify.php:[249] require "Undefined variable $users_id"
Wed, 21 Dec 2022 10:52:39 +0000 [E_WARNING] /modules/massmail/modify.php:[364] from /admin/pages/modify.php:[249] require "Undefined variable $cc""
--- End quote ---
Sind allerdings nur "Warnings". Ich schicke Dir die beiden verwendeten Module newsletter (v0.21) und massmail (v2.3.7) gerne mal als PN, danke für Dein Hilfsangebot  (Y). Vielleicht sind Deine Module ja aktueller? In der Repo ist nichts mehr zu finden.

Viele Grüße
masju

sternchen8875:
ist angekommen, Danke dafür!!

Kannst du in etwa sagen, wann du diesen is_group_match-Fehler bekommst?
Hab mir beide Module mal installiert mit PHP 8.1.9 und der aktuellsten Testversion. Bis auf die üblichen Korrekturen mit den Templates und der UserId, die die neuen WB-Versionen erfordern, und die Warnings, die auf Abfragen ohne Ergebnis beruhen, der Rest sind undefinierte Werte. Allerdings bin ich in der Testumgebung nur SingleUser, d.h. ich muß mir erst einmal ein paar User anlegen, mit denen ich probieren kann und dann Schritt für Schritt.

Eine neuere Version hab ich leider auch nicht.
Was ich immer schon mal fragen wollte dazu: Macht es Sinn, ältere, bereits verschickte Newsletter-Inhalte auf einer Seite im Frontend anzuzeigen oder dient das eher der internen Übersicht für den Anwender, z.b. auf einer Seite, die den Status "privat" hat?

Navigation

[0] Message Index

[#] Next page

Go to full version