Page 1 of 1

Karma unter PHP 8.2

Posted: Sat Nov 25, 2023 9:45 pm
by refilix
Hallo,

das Plugin funktioniert unter PHP 8.1 und 8.2 auch nicht. Sobald man es Installiert ist der Blog nicht mehr zu erreichen.
karma.png
karma.png (111.86 KiB) Viewed 25359 times
mfg refi

Re: Karma unter PHP 8.2

Posted: Sun Nov 26, 2023 11:24 pm
by onli
Hi refi
Das Plugin muss in einem komischen Zustand sein. Ich glaube, wir können es reparieren. Probiere bitte folgendes: Editiere die Datei plugins/serendipity_event_karma/serendipity_event_karma.php und gehe zu Zeile 419. Da steht folgender Code:

Code: Select all

$q   = "CREATE TABLE {$serendipity['dbPrefix']}karma (
            entryid int(11) default null,
            points int(4) default null,
            votes int(4) default null,
            lastvote int(10) {UNSIGNED} NULL,
            visits int(11) default null
        )";
$sql = serendipity_db_schema_import($q);

$q   = "CREATE TABLE {$serendipity['dbPrefix']}karmalog (
            entryid int(11) default null,
            points int(4) default null,
            ip varchar(45),
            user_agent varchar(255),
            votetime int(11) default null
        )";
$sql = serendipity_db_schema_import($q);
Ersetze ihn bitte hiermit:

Code: Select all

$q   = "CREATE TABLE IF NOT EXISTS {$serendipity['dbPrefix']}karma (
            entryid int(11) default null,
            points int(4) default null,
            votes int(4) default null,
            lastvote int(10) {UNSIGNED} NULL,
            visits int(11) default null
        )";
$sql = serendipity_db_schema_import($q);

$q   = "CREATE TABLE IF NOT EXISTS {$serendipity['dbPrefix']}karmalog (
            entryid int(11) default null,
            points int(4) default null,
            ip varchar(45),
            user_agent varchar(255),
            votetime int(11) default null
        )";
$sql = serendipity_db_schema_import($q);
Der Unterschied ist das IF NOT EXISTS. Damit, weil bei dir die Tabelle schon zu existieren scheint, sollte zumindest dieser Teil des Plugincodes wieder funktionieren.

Wahrscheinlich existiert der Index auch schon, der danach erstellt wird, aber ich weiß nicht ob das auch einen Fehler werfen würde. Der Fix dafür wäre schwieriger, zumindest mit MySQL, daher wäre es gut wenn wir das erstmal so testen :)

Re: Karma unter PHP 8.2

Posted: Thu Dec 21, 2023 12:33 pm
by refilix
Hallo,

ich hatte heute mal die Zeit es zu ändern. Hat nichts gebracht.

Fehlermeldung ist weiterhin da.

Grüße Refi

Re: Karma unter PHP 8.2

Posted: Thu Dec 21, 2023 1:48 pm
by onli
Aber das ist doch eine andere Fehlermeldung? Vergleiche sie mal.

Nun ist kfetch das Problem. Man müsste in Zweile 438 noch den Index nur erstellen wenn nötig. Das kann mySQL aber nicht einfach so CREATE INDEX kennt kein IF NOT EXISTS. Stattdessen könnten wir die Exception fangen.

Ab Zeile 437 steht dieser Code:

Code: Select all

$q   = "CREATE INDEX kfetch ON {$serendipity['dbPrefix']}karma (entryid, lastvote);";
$sql = serendipity_db_schema_import($q);

$q   = "CREATE INDEX kentryid ON {$serendipity['dbPrefix']}karma (entryid);";
$sql = serendipity_db_schema_import($q);
Daraus machst du:

Code: Select all

$q   = "CREATE INDEX kfetch ON {$serendipity['dbPrefix']}karma (entryid, lastvote);";
try {
    $sql = serendipity_db_schema_import($q);
} catch (Exception $e) { }

$q   = "CREATE INDEX kentryid ON {$serendipity['dbPrefix']}karma (entryid);";
try {
    $sql = serendipity_db_schema_import($q);
} catch (Exception $e) { }
Das fängt bewusste alle Exceptions, weil im MySQL-Modus zukünftig auch PDO_MYSQL benutzt werden könnte statt mysqli, was die Exception ändern dürfte. Und wir machen nichts mit der gefangenen Exception, weil es nichts zu machen gibt.

Re: Karma unter PHP 8.2

Posted: Thu Dec 21, 2023 2:58 pm
by refilix
Hallo,

ja, kann natürlich sein das es ein anderer Fehler ist. Ich verstehe davon einfach nur nichts. :?

Ich hab die Zeilen angepasst. Dann erscheint wieder ein neuer Fehler: