Seite 4 von 4

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

Verfasst: 18.02.2017 11:56
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

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

Verfasst: 18.02.2017 15:04
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

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

Verfasst: 19.02.2017 17:11
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

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

Verfasst: 19.02.2017 17:34
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

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

Verfasst: 19.02.2017 18:07
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

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

Verfasst: 19.02.2017 18:17
von eumelchen
Änderung hat leider nichts gebracht, weiterhin nur weiße Seite.

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

Verfasst: 19.02.2017 18:33
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

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

Verfasst: 19.02.2017 18:42
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

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

Verfasst: 20.02.2017 20:21
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

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

Verfasst: 20.02.2017 21:08
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