Karma unter PHP 8.2

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
refilix
Regular
Posts: 329
Joined: Sat Aug 01, 2009 12:39 am
Location: Berlin
Contact:

Karma unter PHP 8.2

Post 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 24843 times
mfg refi
Das Leben ist ein scheiss Spiel! Nur die Grafik ist geil!
onli
Regular
Posts: 2830
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Karma unter PHP 8.2

Post 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 :)
refilix
Regular
Posts: 329
Joined: Sat Aug 01, 2009 12:39 am
Location: Berlin
Contact:

Re: Karma unter PHP 8.2

Post by refilix »

Hallo,

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

Fehlermeldung ist weiterhin da.

Grüße Refi
Attachments
karma3.png
karma3.png (77.8 KiB) Viewed 22868 times
karma2.png
karma2.png (169.88 KiB) Viewed 22869 times
Das Leben ist ein scheiss Spiel! Nur die Grafik ist geil!
onli
Regular
Posts: 2830
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Karma unter PHP 8.2

Post 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.
refilix
Regular
Posts: 329
Joined: Sat Aug 01, 2009 12:39 am
Location: Berlin
Contact:

Re: Karma unter PHP 8.2

Post 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:
Attachments
karma4.png
karma4.png (166.95 KiB) Viewed 22851 times
Das Leben ist ein scheiss Spiel! Nur die Grafik ist geil!
Post Reply