[phpBB3.2]Forum und blueimp AJAX Chat

Du hast Probleme beim Installieren oder bei der Benutzung einer Extension? In diesem Forum bist du richtig.
Forumsregeln
Bei Fragen zu einer bestimmten Extension sind Extension-Name und die Downloadquelle der Extension erforderlich. Letztere in Form der URL zum Download.
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von Mahony »

Hallo
Da es ja mit PHP 5.6 funktioniert müsste es doch ansich ein Problem mit PHP 7 sein, hat sich da vielleicht ein Befehl im Code geändert?
Es wird wohl daran liegen, dass ereg in PHP7 nicht mehr existiert.
siehe -->> http://php.net/manual/de/function.ereg.php
Warnung

This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

preg_match()
Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
eumelchen
Mitglied
Beiträge: 671
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von eumelchen »

Danke, Majony,

kann ich denn einfach ereg mit preg match() ersetzen?

Die Zeile sieht ja so aus:

Code: Alles auswählen

$privmsg = ereg('/privmsg', $row['text']);
kann ich das ändern in:

Code: Alles auswählen

$privmsg = preg match('/privmsg', $row['text']);
LG eumelchen
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von Mahony »

Hallo
Evtl so

Code: Alles auswählen

$privmsg = preg match("/privmsg/i", $row['text']);
Das "i" nach der Suchmuster-Begrenzung kennzeichnet eine Suche ohne Berücksichtigung von Groß- und Kleinschreibung.

Das ganze sähe dann so aus

Code: Alles auswählen

    function purgeLogs() {

        $purgeDelay = time();
        if ($purgeDelay < (time() - 3600) || !isset($purgeDelay)) {

        // SQL Query to select messages for purge:
        $sql = 'SELECT
        userName,
        channel AS channelID,
        UNIX_TIMESTAMP(dateTime) AS timeStamp,
        text
        FROM
        '.$this->getDataBaseTable('messages').'
        WHERE
        dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' HOUR)
        ORDER BY
        id;';

        $result = $this->db->sqlQuery($sql);

        // Stop if an error occurs:
        if($result->error()) {
        echo $result->getError();
        die();
        }

        // Store result for logging:
        $logMsg = '';
        while($row = $result->fetch()) {
        $privmsg = preg match("/privmsg/i", $row['text']);
        if ($privmsg == false) {
        $logMsg .= '('.date('r', $row['timeStamp']).') ';
        $logMsg .= $this->decodeSpecialChars($row['userName']).': ';
        $logMsg .= $this->decodeSpecialChars($row['text'])."\n";
        }
        }
        $result->free();

        // Files are rotated every week, labelled by week number, month, and year.
        // File container where all messages are logged:
        $fileContainer = AJAX_CHAT_PATH.'log/'.date("WMY").'.log';
        $fileDirectory = AJAX_CHAT_PATH.'log/';

        // Check to make sure directory is writable:
        if(is_writable($fileDirectory)) {
        // Open the said file:
        $filePointer = fopen($fileContainer,"a");

        // Write log messages to file:
        fputs($filePointer,$logMsg);

        // Close the open said file after writing:
        fclose($filePointer);

        // Delete what has been archived:
        $sql = 'DELETE FROM
        '.$this->getDataBaseTable('messages').'
        WHERE
        dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' HOUR);';

        // Create a new SQL query:
        $result = $this->db->sqlQuery($sql);

        // Stop if an error occurs:
        if($result->error()) {
        echo $result->getError();
        die();
        }
        }

        $purgeDelay = time();
        }
        }
      
Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
eumelchen
Mitglied
Beiträge: 671
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von eumelchen »

Hallo Mahony,

habe ich versucht, wenn ich den Chat aufrufe dann kommt nur eine leere weiße Seite,
aber keine Fehlermeldung.

LG eumelchen
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von Mahony »

Hallo
eumelchen hat geschrieben:habe ich versucht, wenn ich den Chat aufrufe dann kommt nur eine leere weiße Seite,
aber keine Fehlermeldung.
Sorry, da war noch ein Fehler drinnen bei preg match das sollte nämlich preg_match heißen.

So sollte das funktionieren

Code: Alles auswählen

function purgeLogs() {

            $purgeDelay = time();
            if ($purgeDelay < (time() - 36) || !isset($purgeDelay)) {

            // SQL Query to select messages for purge:
            $sql = 'SELECT
            userName,
            channel AS channelID,
            UNIX_TIMESTAMP(dateTime) AS timeStamp,
            text
            FROM
            '.$this->getDataBaseTable('messages').'
            WHERE
            dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' HOUR)
            ORDER BY
            id;';

            $result = $this->db->sqlQuery($sql);

            // Stop if an error occurs:
            if($result->error()) {
            echo $result->getError();
            die();
            }

            // Store result for logging:
            $logMsg = '';
            while($row = $result->fetch()) {
            $privmsg = preg_match('/privmsg/i', $row['text']);
            if ($privmsg == false) {
            $logMsg .= '('.date('r', $row['timeStamp']).') ';
            $logMsg .= $this->decodeSpecialChars($row['userName']).': ';
            $logMsg .= $this->decodeSpecialChars($row['text'])."\n";
            }
            }
            $result->free();

            // Files are rotated every week, labelled by week number, month, and year.
            // File container where all messages are logged:
            $fileContainer = AJAX_CHAT_PATH.'log/'.date("WMY").'.log';
            $fileDirectory = AJAX_CHAT_PATH.'log/';

            // Check to make sure directory is writable:
            if(is_writable($fileDirectory)) {
            // Open the said file:
            $filePointer = fopen($fileContainer,"a");

            // Write log messages to file:
            fputs($filePointer,$logMsg);

            // Close the open said file after writing:
            fclose($filePointer);

            // Delete what has been archived:
            $sql = 'DELETE FROM
            '.$this->getDataBaseTable('messages').'
            WHERE
            dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' HOUR);';

            // Create a new SQL query:
            $result = $this->db->sqlQuery($sql);

            // Stop if an error occurs:
            if($result->error()) {
            echo $result->getError();
            die();
            }
            }

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
eumelchen
Mitglied
Beiträge: 671
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von eumelchen »

Änderung hat leider nichts gebracht, weiterhin nur weiße Seite.
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von Mahony »

Hallo
Das kann eigentlich nicht sein, denn bei mir funktioniert das.

Code: Alles auswählen

        function purgeLogs() {

            $purgeDelay = time();
            if ($purgeDelay < (time() - 3600) || !isset($purgeDelay)) {

            // SQL Query to select messages for purge:
            $sql = 'SELECT
            userName,
            channel AS channelID,
            UNIX_TIMESTAMP(dateTime) AS timeStamp,
            text
            FROM
            '.$this->getDataBaseTable('messages').'
            WHERE
            dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' HOUR)
            ORDER BY
            id;';

            $result = $this->db->sqlQuery($sql);

            // Stop if an error occurs:
            if($result->error()) {
            echo $result->getError();
            die();
            }

            // Store result for logging:
            $logMsg = '';
            while($row = $result->fetch()) {
            $privmsg = preg_match("/privmsg/i", $row['text']);
            if ($privmsg == false) {
            $logMsg .= '('.date('r', $row['timeStamp']).') ';
            $logMsg .= $this->decodeSpecialChars($row['userName']).': ';
            $logMsg .= $this->decodeSpecialChars($row['text'])."\n";
            }
            }
            $result->free();

            // Files are rotated every week, labelled by week number, month, and year.
            // File container where all messages are logged:
            $fileContainer = AJAX_CHAT_PATH.'log/'.date("WMY").'.log';
            $fileDirectory = AJAX_CHAT_PATH.'log/';

            // Check to make sure directory is writable:
            if(is_writable($fileDirectory)) {
            // Open the said file:
            $filePointer = fopen($fileContainer,"a");

            // Write log messages to file:
            fputs($filePointer,$logMsg);

            // Close the open said file after writing:
            fclose($filePointer);

            // Delete what has been archived:
            $sql = 'DELETE FROM
            '.$this->getDataBaseTable('messages').'
            WHERE
            dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' HOUR);';

            // Create a new SQL query:
            $result = $this->db->sqlQuery($sql);

            // Stop if an error occurs:
            if($result->error()) {
            echo $result->getError();
            die();
            }
            }

            $purgeDelay = time();
            }
            }
          
Ob das Logging schon funktioniert habe ich noch nicht getestet, aber es sollte jedenfalls keine weiße Seite erscheinen.


Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
eumelchen
Mitglied
Beiträge: 671
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von eumelchen »

Hast du im letzten Code etwas geändert? Jetzt kommt der Chat wieder wenn ich ihn aufrufe.

Jetzt werde ich mal schauen ob Logs gespeichert werden.

Erst einmal Danke!


LG eumelchen
eumelchen
Mitglied
Beiträge: 671
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von eumelchen »

Hallo Mahony,

wie sieht es denn bei Dir aus? Bei mir wurden leider keine Logs gespeichert.

Ansonsten funktioniert der Chat einwandfrei.


LG eumelchen
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: [phpBB3.2]Forum und blueimp AJAX Chat

Beitrag von Mahony »

Hallo
eumelchen hat geschrieben:wie sieht es denn bei Dir aus? Bei mir wurden leider keine Logs gespeichert.
Bei mir werden auch keine Logs gespeichert. Warum, das weiß ich auch nicht denn es wird nichts im Errorlog gespeichert.

Es scheint so, als ob die Funktion für den Chat überhaupt nicht existiert (obwohl sie ja da ist). Oder aber die Abfrage ergibt immer true und wird deshalb nicht ausgeführt.

Selbst mit dem Snippet zum sofortigen ausführen funktioniert das nicht. --> https://sourceforge.net/p/ajax-chat/dis ... /07870291/
Open lib/class/CustomAJAXChat.php and add

Code: Alles auswählen

function parseCustomCommands($text, $textParts) {
        switch($textParts[0]) {
            case '/makelog':
                $this->purgeLogs();
                return true;
            default:
                return false;
        }
}
then use /makelog to do it.
wobei diese Anleitung so auch nicht ganz korrekt ist, denn man muss die Funktion nicht einfach nur hinzufügen sondern diese Funktion

Code: Alles auswählen

function parseCustomCommands($text, $textParts) {
		return false;
mit der oben genannten ersetzen.

Ich werde dann mal weiter forschen, vielleicht komme ich dem Fehler ja noch auf die Schliche. :D

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Antworten

Zurück zu „Extension Support“