Flashchat phpbb3.0.1 und Groups

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
chiana1
Mitglied
Beiträge: 148
Registriert: 30.04.2008 09:23
Wohnort: Wuppertal

Flashchat phpbb3.0.1 und Groups

Beitrag von chiana1 »

Die Datei phpBB307CMS.php im Verzeichnis /chat/inc/cmses holt sich aus der Datenbank von phpbb die Daten und übergibt sie an den Chat. Ist es möglich die Datei so umzuschreiben das sie über die Userid und die Groupid die Gruppenzugehörigkeit abfragt und beispielsweise einem User nur Zugang gewährt wenn er Mitglied in der Gruppe "Chat" ist? Kann mir da jemand helfen? Meine php Kenntnisse sind nicht so toll das ich das selbst könnte...

Die Datei sieht so aus:

Code: Alles auswählen

<?php

   error_reporting(E_ALL ^ E_NOTICE);

   if ( !defined( 'INC_DIR' ) ) {
      die( 'hacking attempt' );
   }

   define('IN_PHPBB', true);

   $phpbb3_root_path  = realpath(dirname(__FILE__) . '/../../../') . '/';

   include($phpbb3_root_path . 'config.php');
   include($phpbb3_root_path . 'includes/functions.php');
   include($phpbb3_root_path . 'includes/constants.php');

class PhpBB30CMS
{
   var $loginStmt;
   var $getPasswordStmt;
   var $getUserStmt;
   var $getUsersStmt;
   var $getPhotoStmt;
   var $getLoggedStmt;
   var $userid;

   function PhpBB30CMS()
   {
      $this->loginStmt       = new Statement("SELECT user_id FROM {$GLOBALS['table_prefix']}users WHERE username=?  LIMIT 1");
      $this->getPasswordStmt   = new Statement("SELECT user_password FROM {$GLOBALS['table_prefix']}users WHERE username=?  LIMIT 1");
      $this->getUserStmt       = new Statement("SELECT u.user_id as id, u.username as login, u.group_id, g.group_name, u.user_type, u.user_rank FROM {$GLOBALS['table_prefix']}users u, {$GLOBALS['table_prefix']}groups g WHERE u.group_id=g.group_id AND u.user_id=? LIMIT 1");
      $this->getUsersStmt    = new Statement("SELECT user_id as id, username as login FROM {$GLOBALS['table_prefix']}users ORDER BY login");
      $this->getPhotoStmt    = new Statement("SELECT config_value FROM {$GLOBALS['table_prefix']}config WHERE config_name='avatar_salt' LIMIT 1");
      $this->getLoggedStmt    = new Statement("SELECT config_value FROM {$GLOBALS['table_prefix']}config WHERE config_name='cookie_name' LIMIT 1");
   }

   function isLoggedIn()
   {
      $rs = $this->getLoggedStmt->process();
      $rl = $rs->next();
      $cookie_name = $rl['config_value'] . '_u';

      if( isset($GLOBALS['_COOKIE'][$cookie_name]) && $GLOBALS['_COOKIE'][$cookie_name] != ANONYMOUS)
      {
         return $GLOBALS['_COOKIE'][$cookie_name];
      }
      return null;
   }

   function login($username, $password)
   {
      $rp  = $this->getPasswordStmt->process($username);
      $rep = $rp->next();

      if($username && $password && ($rs = $this->loginStmt->process($username)) && ($rec = $rs->next()) && (phpbb_check_hash($password, $rep['user_password'])))
      {
         return $rec['user_id'];
      }
      return false;
   }

   function logout()
   {
   }

   function getUser($userid)
   {
      if($userid == SPY_USERID) return null;
      if($userid && ($rs = $this->getUserStmt->process($userid)) && ($rec = $rs->next()))
      {
         switch ($rec['group_name'])
         {
            case 'ADMINISTRATORS':
               $rec['roles'] = $rec['group_id'] = ROLE_ADMIN;
            break;

            case 'GLOBAL_MODERATORS':
               $rec['roles'] = $rec['group_id'] = ROLE_MODERATOR;
            break;

            case 'BOTS':
            break;

            default:
               if ($GLOBALS['fc_config']['liveSupportMode'])
               {
                  $rec['roles'] = $rec['group_id'] = ROLE_CUSTOMER;
               }
               else if ($rec['user_rank'] >= 0)
               {
                  switch ($rec['user_rank'])
                  {
                     case 'USER':
                        $rec['roles'] = $rec['group_id'] = ROLE_USER ;
                     break;
                     case 'GLOBAL_MODERATORS':
                        $rec['roles'] = $rec['group_id'] = ROLE_MODERATOR;
                     break;
                     default:
                        $rec['roles'] = $rec['group_id'] = ROLE_USER;
                     break;
                  }
               }
            break;
            
         }
         return $rec;
      }
      return null;
   }

   function getUsers()
   {
      return $this->getUsersStmt->process();
   }

   function getUserProfile($userid)
   {
      if($user = $this->getUser($userid))
      {
         return "../ucp.php?i=164";
         //return "../memberlist.php?mode=viewprofile&u=$userid";
      }
      return null;
   }

   function getPhoto($userid)
   {
      $rs = $this->getPhotoStmt->process();
      $rl = $rs->next();
      $name = $rl['config_value'] . '_' . $userid . '.jpg';

      return '../images/avatars/upload/' . $name;
   }

   function userInRole($userid, $role)
   {
      if($user = $this->getUser($userid))
      {
         return ($user['roles'] == $role);
      }
      return false;
   }

   function getGender($userid)
   {
        // 'M' for Male, 'F' for Female, NULL for undefined
        return NULL;
    }
}

$GLOBALS['fc_config']['db'] = array(
   'host' => $dbhost,
   'user' => (isset($dbuser) ? $dbuser : $dbuname),
   'pass' => $dbpasswd,
   'base' => $dbname,
   'pref' => $table_prefix . 'fc_',
   );

$GLOBALS['fc_config']['cms'] = new PhpBB30CMS();

foreach($GLOBALS['fc_config']['languages'] as $k => $v)
{
      $GLOBALS['fc_config']['languages'][$k]['dialog']['login']['moderator'] = '';
}

?>


Der relevante Teil ist glaube ich function getUser($userid).
Danke für jede Hilfe.

Chiana
Benutzeravatar
Rudy69
Mitglied
Beiträge: 2
Registriert: 26.08.2008 11:15

Sehr interessant ;)

Beitrag von Rudy69 »

Ja also das würde mich auch mal brennend interessieren! Das könnte ich nämlich auch gut gebrauchen.
Antworten

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