Location: PHPKode > scripts > Admidio > admidio-2.2.9/adm_program/system/forum/phpbb2.php
<?php
/******************************************************************************
 * Klasse fuer das Forum phpBB Version 2.0.x
 *
 * Copyright    : (c) 2004 - 2011 The Admidio Team
 * Homepage     : http://www.admidio.org
 * License      : GNU Public License 2 http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Diese Klasse dient dazu einen Forumsobjekt zu erstellen.
 * Das Forum kann ueber diese Klasse verwaltet werden
 *
 * Das Objekt wird erzeugt durch Aufruf der Factory-Klassenmethode mit Angabe 
 * der entsprechenden Forumschnittstelle:
 * $forum = Forum::createForumObject("phpBB2");
 *
 *
 * Folgende Funktionen stehen nun zur Verfuegung:
 *
 * connect()              - Stellt die Verbindung zur Datenbank her
 * userClear()            - Userdaten und Session_Valid loeschen
 * initialize()           - Die notwendigen Einstellungen des Forums werden eingelesen und die
 *                          Session im Forum registriert.
 * userExists($username)  - Es wird geprueft, ob es den User (Username) schon im Forum gibt.
 *                          $username = Der login_name des Users
 *                          RETURNCODE = TRUE  - Den User gibt es
 *                          RETURNCODE = FALSE - Den User gibt es nicht
 * userLogin($login_name, $password_crypt, $email, $webmaster = 0)
 *                        - Meldet den User (Username) im Forum an.
 *                          $login_name     = Der aktuelle Admidio Login reg_login_name des Users
 *                          $password_crypt = Der aktuelle Admidio Login reg_password Crypt des Users
 *                          $email          = Der aktuelle Admidio email des Users
 *                          $webmaster      = Kennzeichen, ob User ein Admidio-Webmaster ist true/false
 *                                            dann wird er auch im Forum zum Administrator gemacht
 *                          RETURNCODE  = TRUE  - User angemeldet
 *                          RETURNCODE  = FALSE - User nicht angemeldet
 * userLogoff()               - Meldet den aktuellen User im Forum ab.
 *                          RETURNCODE = TRUE  - User abgemeldet
 *                          RETURNCODE = FALSE - User nicht abgemeldet
 * userDaten($username)   - Funktion holt die Userdaten
 *                          $username = Der aktuelle login_name des Users
 * getUserPM($username)   - Funktion prueft auf neue Private Messages (PM) vorliegen und 
 *                          gibt diese als String zurueck
 * setAdmin($username)  - Funktion ueberprueft ob der uebergebene User Admin im Forum ist und 
 *                          passt dies ggf. an
 *                          $username       = Login_name des Webmasters
 * checkPassword($password_admidio, $password_forum, $forum_userid)
 *                        - Funktion ueberprueft ob das Password im Forum ungleich des Admidio Passwords ist.
 *                          Falls ja wird das Admidio Password ins Forum uebernommen.
 *                          $password_admidio   = Crypt Admidio Password
 *                          $password_forum     = Crypt Forum Password 
 *                          $forum_userid       = UserID im Forum
 * userSave($username, $forum_useraktiv, $forum_password, $forum_email, $forum_old_username = "", $set_admin = 0)
 *                        - Funktion speichert die Daten eines Users
 *                          existiert der User noch nicht, wird er angelegt, ansonsten aktualisiert
 * userInsert($username, $forum_useraktiv, $forum_password, $forum_email)
 * userDelete($username)          - Loescht einen User im Forum
 *                          $username  = Der login_name des Users, der geloescht werden soll
 *                          RETURNCODE = TRUE  - User geloescht
 *                          RETURNCODE = FALSE - User nicht geloescht
 * checkSession($admidio_usr_login_name)
 *                        - diese Funktion bekommt den Admidio-Session-Status (eingeloggt ja/nein) uebergeben
 *                          und prueft dann, ob die Session im Forum aktualisiert werden muss
 * session($aktion, $id)  - Kuemmert sich um die Sessions und das Cookie des Forums
 *                          $aktion = "logoff"  Die Session wird abgemeldet
 *                          $aktion = "update"  Die Session wird aktualisiert
 *                          $aktion = "insert"  Die Session wird angemeldet
 *
 *****************************************************************************/

class PhpBB2
{
    // Allgemeine Variablen
    var $session_valid;
    var $session_id;
    var $praefix;
    var $message;
    var $export;

    // Forum DB Daten
    var $forum_db;
    var $new_db_connection;
    
    // Allgemeine Forums Umgebungsdaten
    var $sitename;                  // Name des Forums
    var $url;                       // URL zum Forum abhaengig von der Admidioeinstellung (iFrame oder neues Fenster)
    var $url_intern;                // URL zum Forum
    var $cookie_name;               // Name des Forum Cookies
    var $cookie_path;               // Pfad zum Forum Cookies
    var $cookie_domain;             // Domain des Forum Cookies
    var $cookie_secure;             // Cookie Secure des Forums

    // Forum User Daten
    var $userid;                    // UserID im Forum
    var $user;                      // Username im Forum
    var $password;                  // Password im Forum
    var $neuePM;                    // Nachrichten im Forum

    // Konstruktor
    function PhpBB2()
    {
        $this->forum_db    = new MySqlDB();
    }
    
    function connect($sql_server, $sql_user, $sql_password, $sql_dbname, $admidio_db = NULL)
    {
        // falls die Admidio-DB sich von der Forum-DB unterscheidet, 
        // muss eine neue DB-Verbindung aufgemacht werden
        if(is_null($admidio_db) == false
        && $admidio_db->server   == $this->forum_db->server
        && $admidio_db->user     == $this->forum_db->user
        && $admidio_db->password == $this->forum_db->password
        && $admidio_db->dbname   == $this->forum_db->dbname)
        {
            $new_db_connection = false;
        }
        else
        {
            $new_db_connection = true;
        }
        
        return $this->forum_db->connect($sql_server, $sql_user, $sql_password, $sql_dbname, $new_db_connection);
    }


    // Userdaten und Session_Valid loeschen
    function userClear()
    {
        // Session-Valid und Userdaten loeschen
        $this->session_valid    = false;
        $this->userid           = -1;
        $this->user             = 'Gast';
        $this->password         = '';
        $this->neuePM           = 0;
    }


    // Notwendige Einstellungen des Forums werden eingelesen.
    function initialize($session_id, $table_praefix, $user_export, $link_intern, $admidio_login_name)
    {
        global $g_root_path;

        if($session_id != $this->session_id)
        {
            // pruefen, ob das Praefix richtig gesetzt wurde und die Config-Tabelle gefunden werden kann
            $sql = 'SHOW TABLE STATUS LIKE "'. $table_praefix. '_config" ';
            $this->forum_db->query($sql);
            
            if($this->forum_db->num_rows() == 1)
            {
                $this->session_id = $session_id;
                $this->praefix    = $table_praefix;
                $this->export     = $user_export;
                $server_name      = '';
                $script_path      = '';
                        
                // wichtige Einstellungen des Forums werden eingelesen
                $sql    = 'SELECT config_name, config_value 
                             FROM '. $this->praefix. '_config 
                            WHERE config_name IN ("sitename","cookie_name","cookie_path","cookie_domain",
                                                  "cookie_secure","server_name","script_path") ';
                $result = $this->forum_db->query($sql);
                
                while($row = $this->forum_db->fetch_array($result))
                {
                    switch($row['config_name'])
                    {
                        case 'sitename':
                            $this->sitename = $row['config_value'];
                            break;

                        case 'cookie_name':
                            $this->cookie_name = $row['config_value'];
                            break;

                        case 'cookie_path':
                            $this->cookie_path = $row['config_value'];
                            break;

                        case 'cookie_domain':
                            $this->cookie_domain = $row['config_value'];
                            break;

                        case 'cookie_secure':
                            $this->cookie_secure = $row['config_value'];
                            break;

                        case 'server_name':
                            $server_name = $row['config_value'];
                            break;

                        case 'script_path':
                            $script_path = $row['config_value'];
                            break;
                    }
                }
                
                // URLs zum Forum ermitteln
                $this->url_intern = str_replace('http://', '', admStrToLower($server_name));
                if(strlen($script_path) > 1)
                {
                    $this->url_intern .= '/'. $script_path;
                }
                $this->url_intern = trim(str_replace('//', '/', $this->url_intern. '/index.php'));
                $this->url_intern = 'http://'. $this->url_intern;

                if($link_intern == true)
                {
                    $this->url = $g_root_path.'/adm_program/index_forum.php';
                }
                else
                {
                    $this->url = $this->url_intern;
                }
            }
            else
            {
                return false;
            }
        }
        
        // Forumsession pruefen und aktualisieren
        $this->checkSession($admidio_login_name);
        return true;
    }


    // Funktion ueberprueft, ob der User schon im Forum existiert
    function userExists($username)
    {
        // User im Forum suchen
        $sql    = 'SELECT user_id FROM '. $this->praefix. '_users 
                    WHERE username LIKE "'.$username.'" ';
        $result = $this->forum_db->query($sql);

        // Wenn ein Ergebis groesser 0 vorliegt, existiert der User bereits.
        if($this->forum_db->num_rows($result) > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    // Funktion meldet den aktuellen User im Forum an
    function userLogin($login_name, $password_crypt, $email, $set_admin = 0)
    {
        // Pruefen, ob es den User im Forum gibt, im Nein Fall diesem User ein Forum Account anlegen
        if(!$this->userExists($login_name))
        {
            if($this->export)
            {
                // Export der Admido Daten ins Forum und einen Forum Account erstellen
                $this->userInsert($login_name, 1, $password_crypt, $email);

                $this->message = 'SYS_FORUM_LOGIN_NEW';
                $this->session_valid = TRUE;        
            }
            else
            {
                $this->message = 'SYS_LOGIN_SUCCESSFUL';
                $this->session_valid = FALSE;
            }
        }
        else
        {
            $this->session_valid = TRUE;
        }

        // Falls ein Admidio-Webmaster angemeldet wird, so sollte dieser automatisch im Forum 
        // auch zum Webmaster gemacht werden
        if($set_admin)
        {
            if($this->setAdmin($login_name))
            {
                $this->message = 'SYS_FORUM_LOGIN_ADMIN';
            }
        }
        
        if($this->session_valid)
        {
            // Userdaten holen
            $this->userDaten($login_name);

            // Password Admidio und Forum pruefen, ggf. zuruecksetzen
            if(!($this->checkPassword($password_crypt, $this->password, $this->userid)))
            {
                // Password wurde zurueck gesetzt, Meldung vorbereiten
                $this->message = 'SYS_FORUM_LOGIN_PASSWORD';
            }

            // Session anlegen
            $this->session('insert', $this->userid);

            if($this->message == '')
            {
                // Im Forum und in Admidio angemeldet, Meldung vorbereiten
                $this->message = 'SYS_FORUM_LOGIN_SUCCESSFUL';
            }
        }
    }


    // Funktion meldet den aktuellen User im Forum ab
    function userLogoff()
    {
        if($this->session_valid)
        {
            // Session wird auf logoff gesetzt
            $this->session('logoff', $this->userid);
    
            // Last_Visit fuer das Forum aktualisieren
            $sql    = 'UPDATE '. $this->praefix. '_users 
                       SET user_lastvisit = '. time() . '
                      WHERE user_id = '.$this->userid;
            $result = $this->forum_db->query($sql);
    
            // Session-Valid und Userdaten loeschen
            $this->userClear();
        }
    }


    // Funktion holt die Userdaten
    function userDaten($forum_user)
    {
        $sql    = 'SELECT user_id, username, user_password FROM '. $this->praefix. '_users WHERE username LIKE "'.$forum_user.'" ';
        $result = $this->forum_db->query($sql);
        $row    = $this->forum_db->fetch_array($result);

        $this->userid   = $row[0];
        $this->user     = $row[1];
        $this->password = $row[2];
    }


    // Funktion prueft auf neue PM
    function getUserPM($forum_user)
    {
        $sql    = 'SELECT user_new_privmsg FROM '. $this->praefix. '_users WHERE username LIKE "'.$forum_user.'" ';
        $result = $this->forum_db->query($sql);
        $row    = $this->forum_db->fetch_array($result);

        $this->neuePM = $row[0];
        
        return $this->neuePM;
    }


    // Funktion ueberprueft ob der uebergebene User Admin im Forum ist und passt dies ggf. an
    function setAdmin($username, $admin = true)
    {
        // Administrator nun in Foren-Tabelle suchen und dort das Password, Username & UserID auslesen
        $sql    = 'SELECT user_id 
                     FROM '. $this->praefix. '_users 
                    WHERE username   = "'. $username. '"
                      AND user_level = 1';
        $this->forum_db->query($sql);
        
        if($this->forum_db->num_rows() == 0)
        {
            // Administratorlevel setzen oder zuruecknehmen
            $user_level = 0;
            if($admin)
            {
                $user_level = 1;
            }
            
            $sql    = 'UPDATE '. $this->praefix. '_users 
                          SET user_level = '. $user_level. '
                        WHERE username = "'. $username. '"';
            $this->forum_db->query($sql);

            return true;
        }
        else
        {
            return false;
        }
    }


    // Funktion ueberprueft ob das Password im Forum ungleich des Admidio Passwords ist.
    // Falls ja wird das Admidio Password ins Forum uebernommen.
    function checkPassword($password_admidio, $password_forum, $forum_userid)
    {
        // Passwoerter vergleichen
        if ($password_admidio == $password_forum)
        {
            return TRUE;
        }
        else
        {
            // Password in Foren-Tabelle auf das Password in Admidio setzen
            $sql    = 'UPDATE '. $this->praefix. '_users 
                          SET user_password = "'. $password_admidio .'"
                        WHERE user_id = '.$forum_userid;
            $this->forum_db->query($sql);

            return FALSE;
        }
    }

    // Funktion speichert die Daten eines Users
    // existiert der User noch nicht, wird er angelegt, ansonsten aktualisiert
    function userSave($username, $password, $email, $old_username = "", $usercode = 0, $set_admin = 0)
    {
        // Erst mal schauen ob der User alle Kriterien erfuellt um im Forum aktiv zu sein
        // Voraussetzung ist ein gueltiger Benutzername, eine Email und ein Password
        if(strlen($username) > 0 AND strlen($password) > 0 AND strlen($email) > 0 AND ($usercode == 3 OR strlen($old_username) > 0))
        {
            $user_aktiv = 1;
        }
        else
        {
            $user_aktiv = 0;
        }
        
        if(strlen($old_username) == 0)
        {
            $old_username = $username;
        }

        if($this->userExists($old_username))
        {
            // User im Forum updaten
            $sql    = 'UPDATE '. $this->praefix. '_users
                          SET username      = "'.$username.'"
                            , user_password = "'.$password.'"
                            , user_active   = '.$user_aktiv.'
                            , user_email    = "'.$email.'"
                        WHERE username LIKE "'.$old_username.'" ';
            $this->forum_db->query($sql);
        }
        else
        {
            // User anlegen
            $this->userInsert($username, $user_aktiv, $password, $email);
        }
        
        // Falls ein Admidio-Webmaster angemeldet wird, so sollte dieser automatisch im Forum 
        // auch zum Webmaster gemacht werden
        if($set_admin)
        {
            $this->setAdmin($username);
        }        
    }

    // Funktion legt einen neuen Benutzer im Forum an
    function userInsert($forum_username, $forum_useraktiv, $forum_password, $forum_email)
    {
        // Erst mal schauen ob der User alle Kriterien erfuellt um im Forum aktiv zu sein
        // Voraussetzung ist ein gueltiger Benutzername, eine Email und ein Password
        if(strlen($forum_username) > 0 AND strlen($forum_password) > 0 AND strlen($forum_email) > 0 AND $forum_useraktiv == 1)
        {
            $forum_useraktiv = 1;
        }
        else
        {
            $forum_useraktiv = 0;
        }
            
        // jetzt noch den neuen User ins Forum eintragen, ggf. Fehlermeldung als Standard ausgeben.
        $sql    = 'SELECT MAX(user_id) as anzahl FROM '. $this->praefix. '_users';
        $result = $this->forum_db->query($sql);
        $row    = $this->forum_db->fetch_array($result);
        $new_user_id = $row[0] + 1;

        $sql    = 'INSERT INTO '. $this->praefix. '_users
                  (user_id, user_active, username, user_password, user_regdate, user_timezone,
                  user_style, user_lang, user_viewemail, user_attachsig, user_allowhtml,
                  user_dateformat, user_email, user_notify, user_notify_pm, user_popup_pm, user_avatar)
                  VALUES 
                  ('.$new_user_id.', '.$forum_useraktiv.', "'.$forum_username.'", "'.$forum_password.'", '. time(). ', 1.00,
                  2, "german", 0, 1, 0, "d.m.Y, H:i", "'.$forum_email.'", 0, 1, 1, "") ';
        $result = $this->forum_db->query($sql);

        // Jetzt noch eine neue private Group anlegen
        $sql    = 'SELECT MAX(group_id) as anzahl 
                   FROM '. $this->praefix. '_groups';
        $result = $this->forum_db->query($sql);
        $row    = $this->forum_db->fetch_array($result);
        $new_group_id = $row[0] + 1;

        $sql    = 'INSERT INTO '. $this->praefix. '_groups
                  (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
                  VALUES 
                  ('.$new_group_id.', 1, "", "Personal User", 0, 1) ';
        $result = $this->forum_db->query($sql);

        // und den neuen User dieser Gruppe zuordenen
        $sql    = 'INSERT INTO '. $this->praefix. '_user_group
                  (group_id, user_id, user_pending)
                  VALUES 
                  ('.$new_group_id.', '.$new_user_id.', 0) ';
        $result = $this->forum_db->query($sql);
    }


    // Funktion loescht einen bestehenden User im Forum
    function userDelete($forum_username)
    {
        if(strlen($forum_username) > 0)
        {
            // User_ID des Users holen
            $sql    = 'SELECT user_id FROM '. $this->praefix. '_users WHERE username LIKE "'.$forum_username.'" ';
            $result = $this->forum_db->query($sql);
            $row    = $this->forum_db->fetch_array($result);
            $forum_userid = $row[0];

            if($forum_userid > 0)
            {
                // Gruppen ID des Users holen
                $sql    = 'SELECT g.group_id 
                             FROM '. $this->praefix. '_user_group ug, '. $this->praefix. '_groups g  
                            WHERE ug.user_id = '. $forum_userid .'
                              AND g.group_id = ug.group_id 
                              AND g.group_single_user = 1';
                $result = $this->forum_db->query($sql);
                $row    = $this->forum_db->fetch_array($result);
                $forum_group = $row[0];
    
                // Alle Post des Users mit Gast Username versehen
                $sql = 'UPDATE '. $this->praefix. '_posts
                        SET poster_id = -1, post_username = "'.$forum_username.'" 
                        WHERE poster_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // Alle Topics des User auf geloescht setzten
                $sql = 'UPDATE '. $this->praefix. '_topics
                            SET topic_poster = -1 
                            WHERE topic_poster = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // Alle Votes des Users auf geloescht setzten
                $sql = 'UPDATE '. $this->praefix. '_vote_voters
                        SET vote_user_id = -1
                        WHERE vote_user_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // GroupID der der Group holen, in denen der User Mod Rechte hat
                $sql = 'SELECT group_id
                        FROM '. $this->praefix. '_groups
                        WHERE group_moderator = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                $group_moderator[] = 0;
    
                while ( $row_group = $this->forum_db->fetch_array($result) )
                {
                    $group_moderator[] = $row_group['group_id'];
                }
    
                if ( count($group_moderator) )
                {
                    $update_moderator_id = implode(', ', $group_moderator);
    
                    $sql = 'UPDATE '. $this->praefix. '_groups
                        SET group_moderator = 2
                        WHERE group_moderator IN ('.$update_moderator_id.')';
                        $result = $this->forum_db->query($sql);
                }
    
                // User im Forum loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_users 
                        WHERE user_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // User aus den Gruppen loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_user_group 
                        WHERE user_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // Single User Group loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_groups
                        WHERE group_id = '.$forum_group;
                $result = $this->forum_db->query($sql);
    
                // User aus der Auth Tabelle loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_auth_access
                        WHERE group_id = '.$forum_group;
                $result = $this->forum_db->query($sql);
    
                // User aus den zu beobachteten Topics Tabelle loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_topics_watch
                        WHERE user_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // User aus der Banlist Tabelle loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_banlist
                        WHERE ban_userid = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // Session des Users loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_sessions
                        WHERE session_user_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
    
                // Session_Keys des User loeschen
                $sql = 'DELETE FROM '. $this->praefix. '_sessions_keys
                        WHERE user_id = '.$forum_userid;
                $result = $this->forum_db->query($sql);
                
                return true;
            }
        }
        return false;
    }

    // diese Funktion bekommt den Admidio-Session-Status (eingeloggt ja/nein) uebergeben und
    // prueft dann, ob die Session im Forum aktualisiert werden muss
    function checkSession($admidio_usr_login_name)
    {
        // Forum Session auf Gueltigkeit pruefen
        // Nur wenn die Admidio Session valid ist, wird auf die Forum Session valid sein
        if(strlen($admidio_usr_login_name) > 0)
        {
            // Userdaten holen
            $this->userDaten($admidio_usr_login_name);
            $this->getUserPM($admidio_usr_login_name);
        
            // Wenn die Forum Session bereits valid ist, wird diese Abfrage uebersprungen
            if($this->session_valid != true)
            { 
                $this->session_valid = $this->userExists($this->user);
            }

            // Wenn die Forumssession gueltig ist, Userdaten holen und gueltige Session im Forum updaten. 
            if($this->session_valid)
            {
                // Sofern die Admidio Session gueltig ist, ist auch die Forum Session gueltig
                $this->session('update', $this->userid);
            }
        }
        else
        {
            // Die Admidio Session ist nicht valid, also ist die Forum Session ebenfalls nicht valid
            if($this->session_valid)
            {
                // Admidio Session ist abgelaufen, ungueltig oder ein logoff, also im Forum logoff
                $this->session('logoff', $this->userid);
            }
            $this->session_valid = false;
        }
    }

    // Funktion kuemmert sich um die Sessions und das Cookie des Forums
    function session($aktion, $forum_userid)
    {
        // Daten fuer das Cookie und den Session Eintrag im Forum aufbereiten
        $ip_sep = explode('.', getenv('REMOTE_ADDR'));
        $user_ip = sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
        $current_time = time();

        // Nachschauen, ob dieser User mehrere SessionIDs hat, diese dann bis auf die aktuelle loeschen
        $sql    = 'SELECT session_id FROM '. $this->praefix. '_sessions
                   WHERE session_user_id = '.$forum_userid;
        $result = $this->forum_db->query($sql);

        if($this->forum_db->num_rows($result) > 1)
        {
            $sql    = 'DELETE FROM '. $this->praefix. '_sessions WHERE session_user_id = '.$forum_userid.' AND session_id NOT LIKE "'.$this->session_id.'" ';
            $result = $this->forum_db->query($sql);
        }

        // Pruefen, ob sich die aktuelle Session noch im Session Table des Forums befindet
        $sql    = 'SELECT session_id, session_start, session_time FROM '. $this->praefix. '_sessions
                   WHERE session_id = "'.$this->session_id.'" ';
        $result = $this->forum_db->query($sql);

        if($this->forum_db->num_rows($result))
        {
            if($aktion == 'logoff')
            {
                $sql    = 'UPDATE '. $this->praefix. '_sessions 
                              SET session_time    = '. $current_time .'
                                , session_ip      = "'. $user_ip .'"
                                , session_user_id = '. $forum_userid .',  session_logged_in = 0
                            WHERE session_id      = "'. $this->session_id. '"';
                $this->forum_db->query($sql);
            }
            elseif($aktion == 'update')
            {
                $sql    = 'UPDATE '. $this->praefix. '_sessions
                              SET session_time = '. $current_time .'
                                , session_ip   = "'. $user_ip .'" 
                            WHERE session_id   = "'. $this->session_id. '"';
                $this->forum_db->query($sql);
            }
            elseif($aktion == 'insert')
            {
                $sql    = 'UPDATE '. $this->praefix. '_sessions 
                              SET session_time    = '. $current_time .'
                                , session_start   = '. $current_time .'
                                , session_ip      = "'. $user_ip .'"
                                , session_user_id = '. $forum_userid .',  session_logged_in = 1
                            WHERE session_id      = "'. $this->session_id. '"';
                $this->forum_db->query($sql);
            }
        }
        else
        {
            // Session auf jeden Fall in die Forum DB schreiben, damit der User angemeldet ist
            $sql    = 'INSERT INTO ' .$this->praefix. '_sessions
                      (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, session_admin)
                      VALUES ("'.$this->session_id.'", '.$forum_userid.', '.$current_time.', '.$current_time.', "'.$user_ip.'", 0, 1, 0)';
            $this->forum_db->query($sql);
        }   

        // Cookie des Forums einlesen
        if(isset($_COOKIE[$this->cookie_name.'_sid']))
        {
            $g_cookie_session_id = $_COOKIE[$this->cookie_name.'_sid'];
            if($g_cookie_session_id != $this->session_id)
            {
                // Cookie fuer die Anmeldung im Forum setzen
                setcookie($this->cookie_name.'_sid', $this->session_id, 0, $this->cookie_path, $this->cookie_domain, $this->cookie_secure);
            }
        }
        else
        {
            // Cookie fuer die Anmeldung im Forum setzen
            setcookie($this->cookie_name.'_sid', $this->session_id, 0, $this->cookie_path, $this->cookie_domain, $this->cookie_secure);
        }
    }
}
?>
Return current item: Admidio