<?php
 /*
 * Project:     EQdkp-Plus
 * License:     Creative Commons - Attribution-Noncommercial-Share Alike 3.0 Unported
 * Link:		http://creativecommons.org/licenses/by-nc-sa/3.0/
 * -----------------------------------------------------------------------
 * Began:       2008
 * Date:        $Date: 2008-11-05 12:02:29 +0100 (Mi, 05 Nov 2008) $
 * -----------------------------------------------------------------------
 * @author      $Author: ghoschdi $
 * @copyright   2006-2008 Corgan - Stefan Knaak | Wallenium & the EQdkp-Plus Developer Team
 * @link        http://eqdkp-plus.com
 * @package     eqdkp-plus
 * @version     $Rev: 2987 $
 * 
 * $Id: ipb2.bridge.php 1 2009-12-015 16:02:29Z iandarken $
 * modyfied from ipb2.bridge.php (ghoschdi)
 * 
 */
 
if ( !defined('EQDKP_INC') )
{
    header('HTTP/1.0 404 Not Found');
    exit;
}
class User extends UserSkel {

   
   function login($username, $password, $auto_login)
   {

            global $eqdkp, $db, $cms_host, $cms_db, $cms_user, $cms_pass, $cms_tableprefix, $cms_group,$sql_db;
            $db_cms = new $sql_db();
            $db_cms->sql_connect($cms_host,$cms_db,$cms_user,$cms_pass,false); 

            if ( !$db_cms->link_id )
                    {
                    message_die('Could not connect to the database.');
                    }
            $a_username = $username;
            $group_ids = $cms_group;
            $sql = "SELECT user_id, username, user_password, user_email FROM `".$db->dbname."`." . USERS_TABLE . " WHERE username='" . $a_username . "'";
            $local_users_table = $db->query($sql);

            $sql = "SHOW TABLE STATUS FROM `".$db_cms->dbname."` LIKE '".$cms_tableprefix."members'"; //<<--В IPB таблица юзеров зовется 'members'
            if ($res = $db_cms->query($sql))
            {
               if ( $row = $db_cms->fetch_record($res) )
            	{
            		$sql = "SELECT user_id, user_password, user_email FROM ".$db_cms->dbname.".nukel_users WHERE username='" . $a_username . "'"; //<<--Вместо "nukel_" надо подставить префикс своей БД от ЦМСки. Вообще тут должно быть обращение к таблице, в которой хранятся логины и пароли юзеров на форуме, но в IPB в таблице юзеров их нету.

            		$remote_users_table = $db_cms->query($sql); 
            		$rut_row = $db_cms->fetch_record($remote_users_table);
            	}
            }
            if ($rut_row)
            {

                $db_cms->free_result($remote_users_table);
                $db_cms->free_result($remote_groups_table);
                $sql = "SELECT mgroup FROM ".$db_cms->dbname.".".$cms_tableprefix."members WHERE name='" . $a_username . "'"; //<<--В IPB колонка с номером группы - "mrgoup". Причем выборка ведется не по id, а по юзернейму. Потому что оказалось, что в таблицах ЦМС и форума у одного юзера разные id.
                $remote_groups_table = $db_cms->query($sql);
				$rgt_row = $db_cms->fetch_record($remote_groups_table);

                $approved = false;
                if($rgt_row['mgroup'] == $group_ids) {  //Тут проверяется та группа, которая указана в настройках самого eqdpk
                $approved = true;
				}
                if($rgt_row['mgroup'] == 6) { //А тут - еще 2 группы, у нас на форуме - офицеры и еще одна с похожими правами.
                $approved = true;
				}
                if($rgt_row['mgroup'] == 8) {
                $approved = true;
				}
                if ( (md5($password) == $rut_row['user_password']) && $approved) 
                {
				//В итоге таблица с форума открывается только 1 раз - узнать номер группы юзера. Авторизационные данные типа логина-пароля и т.д. берутся из таблицы ЦМС
                    if ($lut_row = $db->fetch_record($local_users_table))
                    {
                        $sql = "UPDATE `".$db->dbname."`." . USERS_TABLE . " SET user_password='" . md5($password) ."',user_email='".$rut_row['user_email']."' WHERE username='" . $a_username . "'";
                        $db->query($sql); 
                        $userid = $lut_row['user_id'];
                    }
                    else
                    {
                          $sql = "INSERT into `".$db->dbname."`." . USERS_TABLE . " SET username='".$a_username."', user_password='".md5($password)."', user_email='".$rut_row['user_email']."', user_active='1', user_style='".$eqdkp->config['default_style']."', user_lang='".$eqdkp->config['default_lang']."'";
                        $db->query($sql); 
                        $userid = $db->insert_id();
                        $sql = "SELECT auth_id, auth_default FROM `".$db->dbname."`." . AUTH_OPTIONS_TABLE . " ORDER BY auth_id";
                        $result = $db->query($sql); 
                        while ( $row = $db->fetch_record($result) )
                        {
                            $sql = "INSERT INTO `".$db->dbname."`." . AUTH_USERS_TABLE . " (user_id, auth_id, auth_setting) VALUES ('" . $userid . "','" . $row['auth_id'] . "','" . $row['auth_default'] . "')";
                            $db->query($sql);             
                        }
                        $db->free_result($result);
                    }
                    $db->free_result($local_users_table);
                    $auto_login = ( !empty($auto_login) ) ? md5($password) : '';
                    return $this->create($userid, $auto_login, true); n
                } else {
                    return false;
                }
            }
            return UserSkel::login($username,$password,$auto_login);
        }
}
?>