AJAX Chat AFK Command

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Todi
Mitglied
Beiträge: 56
Registriert: 14.04.2013 16:50

AJAX Chat AFK Command

Beitrag von Todi »

Hallo,

Ich habe nun den AFK - Command eingebaut - Die Hilfe dazu habe ich von https://github.com/Frug/AJAX-Chat/wiki/Mod-away-command bekommen :)
Nun wollte ich Fragen, ob es möglich ist den AFK - Befehl so anzupassen damit man folgendes tun kann:

Code: Alles auswählen

/afk Text
Dieser "Text" sollte dann rechts im "Online-Benutzer" aufscheinen (Direkt dortstehen oder wenn man mit dir Maus drüber fährt ?).
Ist dies möglich?

PS: Bin kein Progger ich suche mir einfach über Google was soweit etwas zur Verfügung steht, aber leider habe ich dazu noch ncihts gefunden.
Todi
Mitglied
Beiträge: 56
Registriert: 14.04.2013 16:50

Re: AJAX Chat AFK Command

Beitrag von Todi »

Habe nun einen Code gefunden --> http://core.zapto.org/blogs-news/entert ... status-mod.
Habe das originale File "CustomAJAXChat.php" vom Ajax Chat hochgeladen --> Chat funktioniert.

Kopiere dann nach der Anleitung von core.zapto den Teil damit der Befehl /afk funktioniert. Die fertige Datei hochgeladen (fertige Datei - pastebin.

Danach wird mir folgender Fehler ausgepuckt:

Code: Alles auswählen

Parse error: syntax error, unexpected T_STRING in /home/www/web21/html/chat/lib/class/CustomAJAXChat.php on line 210
Was mir Google bis jetzt ausspuckt, ist diese Fehlermeldung eine, die leicht zu beheben ist - aber ich finde den Fehler nicht! :(

Hilfe :)
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: AJAX Chat AFK Command

Beitrag von HabNurNeFrage »

Hi,

ist das Script stand-alone?

In der Zeile werden Variablen und Funktionen aufgerufen, die es nicht gibt...
Die Funktion insertChatBotMessage (...) z.B.

Aber er stolpert bestimmt schon über $textParts - eine nicht definierte Variable.
Es ist einfach kein $textParts existent, also kann auch keine Verarbeitung erfolgen.
Tue etwas mit nichts quasi...

Dies scheint die Ausgangsbasis zu sein: https://github.com/Frug/AJAX-Chat/blob/ ... AXChat.php
Da soll zumindest der Code, den Du eingebaut hast, integriert werden, der dann diese vordefinierte Zeile einfügt "has went away from keyboard" - wenn man /afk eingibt.

LG

PS: Irgendwie ist Dein Script unvollständig...
Zuletzt geändert von HabNurNeFrage am 08.05.2013 22:29, insgesamt 1-mal geändert.
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: AJAX Chat AFK Command

Beitrag von Miriam »

Finde in Deinem neuen Code (2x):
  • Code: Alles auswählen

    if(count($textParts) insertChatBotMessage($this->getChannel()
    tausche aus gegen:

    Code: Alles auswählen

    if(count($textParts) { insertChatBotMessage($this->getChannel()
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Todi
Mitglied
Beiträge: 56
Registriert: 14.04.2013 16:50

Re: AJAX Chat AFK Command

Beitrag von Todi »

@miriam
die beiden Zeilen ausgetauscht - funktioniert immer noch nicht
Edit: kommt übrigens diese Meldung wenn ich die Klammer einfüge

Code: Alles auswählen

Parse error: syntax error, unexpected '{' in /home/www/web21/html/chat/lib/class/CustomAJAXChat.php on line 210
@habnurnefrage:
Ich bin wie folgt vorgegangen:
1) originales lib/class/CustomAJAXChat.php auf dem Server --> Chat funktioniert aber ohne /afk Command
2) Die Anleitung bzgl. Befehl /afk Message von http://core.zapto.org/blogs-news/entert ... status-mod hergenommen
3) Da meine Datei unverändert ist habe ich natürlich die BASIC INSTALLATION INSTRUCTIONS genommen weil:

Code: Alles auswählen

function parseCustomCommands($text, $textParts) {
    switch($textParts[0]) {
nicht vorhanden ist.

4) Somit habe ich den geänderten Code von der Anleitung vor
}
?>
eingefügt.

und schwubst die FEhlermeldung ist da. Entweder ist die Anleitung falsch oder die originale .php File ist akuteller?!

Weitere Probleme wie Klammer gesetzt, oder ; (strichpunkt) in der IF-schleife rausgenommen usw. aber selbe Problem!
Todi
Mitglied
Beiträge: 56
Registriert: 14.04.2013 16:50

Re: AJAX Chat AFK Command

Beitrag von Todi »

Problem behoben + weitere Anpassungen - aber am Code war was falsch von der Anleitung!

Nun kann man zb.:

Code: Alles auswählen

/afk test
Ausgaben:

Code: Alles auswählen

has went away from keyboard (with Status: test)
Gesamte Datei:

Code: Alles auswählen

<?php
/*
 * @package AJAX_Chat
 * @author Sebastian Tschan
 * @copyright (c) Sebastian Tschan
 * @license GNU Affero General Public License
 * @link https://blueimp.net/ajax/
 * 
 * phpBB3 integration:
 * http://www.phpbb.com/
 */

class CustomAJAXChat extends AJAXChat {

    // Initialize custom configuration settings
    function initCustomConfig() {
        global $db;
        
        // Use the existing phpBB database connection:
        $this->setConfig('dbConnection', 'link', $db->db_connect_id);
    }

    // Initialize custom request variables:
    function initCustomRequestVars() {
        global $user;

        // Auto-login phpBB users:
        if(!$this->getRequestVar('logout') && ($user->data['user_id'] != ANONYMOUS)) {
            $this->setRequestVar('login', true);
        }
    }

    // Replace custom template tags:
    function replaceCustomTemplateTags($tag, $tagContent) {
        global $user;
        
        switch($tag) {

            case 'FORUM_LOGIN_URL':
                if($user->data['is_registered']) {
                    return ($this->getRequestVar('view') == 'logs') ? './?view=logs' : './';
                } else {
                    return $this->htmlEncode(generate_board_url().'/ucp.php?mode=login');
                }
                
            case 'REDIRECT_URL':
                if($user->data['is_registered']) {
                    return '';
                } else {
                    return $this->htmlEncode($this->getRequestVar('view') == 'logs' ? $this->getChatURL().'?view=logs' : $this->getChatURL());
                }
            
            default:
                return null;
        }
    }

    // Returns true if the userID of the logged in user is identical to the userID of the authentication system
    // or the user is authenticated as guest in the chat and the authentication system
    function revalidateUserID() {
        global $user;
        
        if($this->getUserRole() === AJAX_CHAT_GUEST && $user->data['user_id'] == ANONYMOUS || ($this->getUserID() === $user->data['user_id'])) {
            return true;
        }
        return false;
    }

    // Returns an associative array containing userName, userID and userRole
    // Returns null if login is invalid
    function getValidLoginUserData() {
        global $auth,$user;
        
        // Return false if given user is a bot:
        if($user->data['is_bot']) {
            return false;
        }
        
        // Check if we have a valid registered user:
        if($user->data['is_registered']) {
            $userData = array();
            $userData['userID'] = $user->data['user_id'];

            $userData['userName'] = $this->trimUserName($user->data['username']);
            
            if($auth->acl_get('a_'))
                $userData['userRole'] = AJAX_CHAT_ADMIN;
            elseif($auth->acl_get('m_'))
                $userData['userRole'] = AJAX_CHAT_MODERATOR;
            else
                $userData['userRole'] = AJAX_CHAT_USER;

            return $userData;
            
        } else {
            // Guest users:
            return $this->getGuestUser();
        }
    }

    // Store the channels the current user has access to
    // Make sure channel names don't contain any whitespace
    function &getChannels() {
        if($this->_channels === null) {
            global $auth;

            $this->_channels = array();

            $allChannels = $this->getAllChannels();

            foreach($allChannels as $key=>$value) {
                // Check if we have to limit the available channels:
                if($this->getConfig('limitChannelList') && !in_array($value, $this->getConfig('limitChannelList'))) {
                    continue;
                }

                // Add the valid channels to the channel list (the defaultChannelID is always valid):
                if($value == $this->getConfig('defaultChannelID') || $auth->acl_get('f_read', $value)) {
                    $this->_channels[$key] = $value;
                }
            }
        }
        return $this->_channels;
    }

    // Store all existing channels
    // Make sure channel names don't contain any whitespace
    function &getAllChannels() {
        if($this->_allChannels === null) {
            global $db;

            $this->_allChannels = array();

            // Get valid phpBB forums:
            $sql = 'SELECT
                            forum_id,
                            forum_name
                        FROM
                            '.FORUMS_TABLE.'
                        WHERE
                            forum_type=1
                        AND
                            forum_password=\'\';';
            $result = $db->sql_query($sql);

            $defaultChannelFound = false;

            while ($row = $db->sql_fetchrow($result)) {
                $forumName = $this->trimChannelName($row['forum_name']);

                $this->_allChannels[$forumName] = $row['forum_id'];

                if(!$defaultChannelFound && $row['forum_id'] == $this->getConfig('defaultChannelID')) {
                    $defaultChannelFound = true;
                }
            }
            $db->sql_freeresult($result);

            if(!$defaultChannelFound) {
                // Add the default channel as first array element to the channel list:
                $this->_allChannels = array_merge(
                    array(
                        $this->trimChannelName($this->getConfig('defaultChannelName'))=>$this->getConfig('defaultChannelID')
                    ),
                    $this->_allChannels
                );
            }
        }
        return $this->_allChannels;
    }

    // Method to set the style cookie depending on the phpBB user style
    function setStyle() {
        global $config,$user,$db;
        
        if(isset($_COOKIE[$this->getConfig('sessionName').'_style']) && in_array($_COOKIE[$this->getConfig('sessionName').'_style'], $this->getConfig('styleAvailable')))
            return;
        
        $styleID = (!$config['override_user_style'] && $user->data['user_id'] != ANONYMOUS) ? $user->data['user_style'] : $config['default_style'];
        $sql = 'SELECT
                        style_name
                    FROM
                        '.STYLES_TABLE.'
                    WHERE
                        style_id = \''.$db->sql_escape($styleID).'\';';
        $result = $db->sql_query($sql);
        $styleName = $db->sql_fetchfield('style_name');
        $db->sql_freeresult($result);
        
        if(!in_array($styleName, $this->getConfig('styleAvailable'))) {
            $styleName = $this->getConfig('styleDefault');
        }
        
        setcookie(
            $this->getConfig('sessionName').'_style',
            $styleName,
            time()+60*60*24*$this->getConfig('sessionCookieLifeTime'),
            $this->getConfig('sessionCookiePath'),
            $this->getConfig('sessionCookieDomain'),
            $this->getConfig('sessionCookieSecure')
        );
        return;
    }
// ~cXc~ Custom Commands
  function parseCustomCommands($text, $textParts) {
    switch($textParts[0]) {
  // ~cXc~ AFK Status Mod  Part 1of2
      case '/afk':         
      case '/away':
        if(count($textParts)==1)
        { 
          $this->insertChatBotMessage($this->getChannel(), $this->getLoginUserName().' has went away from keyboard');
        } else {
          $this->insertChatBotMessage($this->getChannel(), $this->getLoginUserName().'has went away from keyboard  (with Status: [b]'.implode(' ', array_slice($textParts, 1)).'[/b])');
        }
        $this->setUserName($this->getLoginUserName().' - AFK');
        $this->updateOnlineList();
        $this->addInfoMessage($this->getUserName(), 'userName');
        $this->setSessionVar('BusyAFK', true);
        return true;
      case '/bck':
      case '/back':
        if(count($textParts)==1)
        {
          $this->insertChatBotMessage($this->getChannel(), $this->getLoginUserName().' has returned :)');
        } else {
          $this->insertChatBotMessage($this->getChannel(), $this->getLoginUserName().' is back (with Status: [b]'.implode(' ', array_slice($textParts, 1))."[/b])");
        }
        $this->setUserName($this->getLoginUserName());
        $this->updateOnlineList();
        $this->addInfoMessage($this->getUserName(), 'userName');
        $this->setSessionVar('BusyAFK', false);
        return true;
  // end ~cXc~ AFK Status Mod  Part 1of2              
    // now close function parseCustomCommands($text, $textParts)
    }
  }
// end ~cXc~ Custom Commands
// ~cXc~ Better AFK Status Mod Part 2of2
  function onNewMessage($text) {
    // Reset AFK status on first inserted message:
    if($this->getSessionVar('BusyAFK')) {
      $this->setUserName($this->getLoginUserName());
      $this->updateOnlineList();
      $this->addInfoMessage($this->getUserName(), 'userName');
      $this->setSessionVar('BusyAFK', false);
    }
    return true;
  }
// end ~cXc~ Better AFK Status Mod Part 2of2
}
?>
Ist somit erledigt
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“