was bewirkt dieser Teil in der Abfrage überhaupt:
REGEXP '[[:<:]]".$mybb->user['usergroup']."[[:>:]]'
habe ihn gerade mal testweise an allen Stellen raus genommen und das Portal ist da (logisch)
@Exitus
Im Datenbankfeld visible der Tabelle xxxx_portal_blocks stehen die Nummern der Usergruppen, die diesen Block sehen dürfen, durch Komma getrennt, also z.B. 2,3,4,5,6,7,9,13,15,25
@Schnapsnase
Zitat:das z.B. dies -> [[:<:]] durch \b ersetzt werden muss
warum? hast du da mal eine Quelle für mich?
Es kann ja nicht so aufwändig sein, dass mal zu testen.
Ich habe mir das ja auch nicht aus den Fingern gesogen.
Siehe
hier
danke für den Link, Schnapsnase
Portal ist nach Änderung da und herrlich leer, d.h. es werden gar keine Blocks mehr angezeigt; sehr beruhigende Wirkung
Für das Prinzip, was hier mittels RegExp ermöglichen werden soll, gibt es eine eigens dafür vorgesehene SQL-Funktion: FIND_IN_SET()
Probiere:
Code:
[...] AND FIND_IN_SET (".$mybb->user['usergroup'].",b.visible) AND [...]
[ETS]
mein lieber Herr Schnapsnase, ich pflege überhaupt nicht schnell aufzugeben, ich will es nur verstehen, was ich mache. Wäre ich ein Aufgeber, wäre ich schon tot
so, nun funktioniert es, aus
REGEXP '[[:<:]]".$mybb->user['usergroup']."[[:>:]]'
wurde
REGEXP '\\\b".$mybb->user['usergroup']."\\\b'
und das 8 mal in der portal.php und einmal im zugehörigen Plugin inc/plugins/proportalupdate
mal schauen, ob es für die unterschiedlichen Usergruppen auch passt
edit: die Lösung von Exitus funktioniert ebenfalls!
Vielen Dank euch beiden für die Hilfestellung
(16.09.2021, 16:08)bv64 schrieb: [ -> ]so, nun funktioniert es,
Sag ich doch... Mal etwas mit den Backslashes spielen.
Ich kann es ja leider nicht selbst testen.
...und meine kleinen Spitzen auch nicht immer so ernst nehmen...
tu ich nicht
dafür kenn ich dich jetzt lang genug; aber meine auch nicht, bin für meinen bösen Zynismus bekannt
Ich habe (vermutlich) das selbe Problem.
Um den Fehler angezeigt zu bekommen musste ich laut Provider in der portal.php folgendes hinzufügen:
PHP-Code:
ini_set('display_errors', 1);
error_reporting(E_ALL);
Hier der genaue Text der dann angezeigt wird.
Code:
Proportal Fehler:
MyBB has experienced an internal SQL error and cannot continue.
SQL Error:
3685 - Illegal argument to a regular expression.
Query:
SELECT b.*, u.* FROM mybb_portal_blocks b LEFT JOIN mybb_users u ON(u.proportalupdate = b.id) WHERE b.zone='4' AND b.enabled='1' AND b.visible REGEXP '[[:<:]]4[[:>:]]' AND b.id NOT IN (0) ORDER BY b.position
Da ich selbst nichts geändert hatte, scheint es durch eine serverseitige Änderung verursacht.
Wie es scheint ist dieser Fehler tatsächlich das Resultat vom Wechsel zu MySQL 8.
Der Fehler ist hier seit gestern diskutiert und behoben worden. Das wird auch bei dir die Lösung sein.
Es kann doch so schön sein, wenn die Webhoster derartige Änderungen rechtzeitig ankündigen, um vorbereitet zu sein. Dasselbe Theater gab es auch schon unzählige Male bei der spontann Umstellung zu PHP7/8.
Kleiner Hinweis. Deine manuelle Änderung des PHP Log Level (E_ALL) setzt die serverseitge Default-Einstellung außer Kraft. Für einen momentanen Test super, da E_ALL wirklich jeden kleinsten Schluckauf protokolliert. Es wäre vielleicht ratsam, diese Zeilen später wieder zu entfernen.
[ETS]