Интеграция DLE+IPB Требования ipb от 2.3.2 и dle 7.5. 1. Делаем архивные копии: бд ipb и dle. 2. Открыть dle/engine/modules/register.php Найти: Code <code>require_once ENGINE_DIR . '/classes/parse.class.php';</code> Добавить: Code <code>// интеграция DLE и IPB, версия 1я // 11 марта, 2009 // redrat, icq 709056, admin-club.ru
# Сообщение об ошибке: Данное имя уже используется
$ipb_dle_lan[0] = "Данное имя уже используется на форуме.";
# Параметры БД
$db_ipb_user = "root";
$db_ipb_password = "";
$db_ipb_namedb = "56";
$db_ipb_local = "localhost";
$db_ipb_error = 1; // 1 - показывать ошмбки в соединении с бд форума, 0 - нет
$db_prefix_ipb = "ibf";
#---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #1 $ipb = new db; $ipb->connect($db_ipb_user, $db_ipb_password, $db_ipb_namedb, $db_ipb_local, $db_ipb_error); #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb;</code> Не забудьте указать параметры подключения к бд форума. Найти: Code <code>global $lang, $db, $banned_info;</code> Заменить на: Code <code> global $lang, $db, $banned_info #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #3 # global + , $ipb, $ipb_dle_lan, $db_prefix_ipb #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====- ---: dle + ipb; ;</code> Найти: Code <code>$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '$email' OR LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' OR name = '$name'" );</code> Добавить ниже: Code <code>#---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #2 $ipb_test_name = $ipb->super_query ("SELECT COUNT(*) as count FROM {$db_prefix_ipb}_members where name = '".strtolower($name)."'"); if ($ipb_test_name ['count'] > 0) $stop .= $ipb_dle_lan[0]; #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb;</code> Найти: Code <code>$add_time = time() + ($config['date_adjust'] * 60); $_IP = $db->safesql( $_SERVER['REMOTE_ADDR'] ); if( intval( $config['reg_group'] ) < 3 ) $config['reg_group'] = 4;
$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" ); $id = $db->insert_id();</code> Добавить ниже: Code <code>#---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #6 $ipb_dle = new ipb_dle; $salt = $ipb_dle->generate_password_salt(5); $ph = $ipb_dle->generate_compiled_passhash($salt, md5($_POST['password1']) );
$ipb->query("INSERT INTO `{$db_prefix_ipb}_members_converge` ( `converge_email` , `converge_joined` , `converge_pass_hash` , `converge_pass_salt` ) VALUES ( '$email', '".time()."', '$ph', '".$ipb->safesql(str_replace( '\\', "\\\\", $salt))."' )");
$insert_ipb = $ipb->insert_id(); //ид вставки
$ipb->query("INSERT INTO `{$db_prefix_ipb}_members` ( id, name, members_l_username, members_display_name, members_l_display_name, member_login_key, member_login_key_expire, email, mgr oup, joined, ip_address, time_offset
) VALUES ( $insert_ipb, '$name', '".strtolower($name)."', '$name', '".strtolower($name)."', '".$ipb_dle->generate_auto_log_in_key()."', '0', ' $email', '3', '".time()."', '$_IP', 3
)");
$ipb->query("INSERT INTO `{$db_prefix_ipb}_member_extra` ( id , vdirs , interests , signature ) VALUES ( $insert_ipb, 'in:Входящие|sent:Отправленные', '','' )");
$ipb_st = $ipb->super_query("select * from {$db_prefix_ipb}_cache_store where cs_key = 'stats'"); $st_arr = unserialize($ipb_st['cs_value']);
$st_arr['mem_count']++; $st_arr['last_mem_name'] = $name; $st_arr['last_mem_id'] = $insert_ipb;
$st_arr2 = serialize($st_arr);
$ipb->query("UPDATE {$db_prefix_ipb}_cache_store set cs_value = '$st_arr2' where cs_key = 'stats'"); #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb; </code> а так же, перед : Вставить выше: Code <code> #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #7 class ipb_dle { function generate_password_salt($len=5) { $salt = '';
for ( $i = 0; $i < $len; $i++ ) { $num = rand(33, 126);
if ( $num == '92' ) { $num = 93; }
$salt .= chr( $num ); }
return $salt; }
function generate_compiled_passhash($salt, $md5_once_password) { return md5( md5( $salt ) . $md5_once_password ); }
function generate_auto_log_in_key($len=60) { $pass = $this->generate_password_salt( $len );
return md5($pass); }
} #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb;</code> Сохранить изменения в файле. 3. открыть файл dle/engine/ajax/registration.php Найти: Code <code> $db->query ("SELECT name FROM " . USERPREFIX . "_users WHERE LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' OR name = '$name'");
if ($db->num_rows() > 0) { $stop .= $lang['reg_err_20']; } </code> Добавить ниже: Code <code>// интеграция DLE и IPB, версия 1я // 11 марта, 2009 // redrat, icq 709056, admin-club.ru
# Сообщение об ошибке: Данное имя уже используется
$ipb_dle_lan[0] = "Данное имя уже используется на форуме.";
# Параметры БД
$db_ipb_user = "root";
$db_ipb_password = "";
$db_ipb_namedb = "56";
$db_ipb_local = "localhost";
$db_ipb_error = 1; // 1 - показывать ошмбки в соединении с бд форума, 0 - нет
$db_prefix_ipb = "ibf";
#---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #5 $ipb = new db; $ipb->connect($db_ipb_user, $db_ipb_password, $db_ipb_namedb, $db_ipb_local, $db_ipb_error); #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb; #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb : #4 $ipb_test_name = $ipb->super_query ("SELECT COUNT(*) as count FROM {$db_prefix_ipb}_members where name = '".strtolower($name)."'"); if ($ipb_test_name ['count'] > 0) $stop .= $ipb_dle_lan[0]; #---=-=-=-=-===---====--=---=-------==-==-=----=-=-===----=====----: dle + ipb;</code> Форму Параметры БД, конечно, обязательно заполнить. Сохранить, закрыть нажав на красный крестик мышкой. )) 4. Качаем файл ipb_member_sync.php и ложим его в ipb/modules/ipb_member_sync.php. 5. В файле, над которым вы колдовали в шаге выше, нужно указать параметры подключения к базе данных DLE: Code <code>$db_dle_user = "root"; $db_dle_name = "g"; $db_dle_password = ""; $db_dle_local = "localhost"; $db_dle_prefix = "dle";</code> 6. Все. Кому лень вручную вписывать коды, просто скачайте файлы и замените их. Скачать файлы: http://cms-helper.ru/load/ipb_member_sync.php http://cms-helper.ru/load/register.php http://cms-helper.ru/load/registration.php Файлы в одном архиве: http://cms-helper.ru/load/download.rar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Проверено на DLE 7.5 и IPB 2.3.6. Работает, просьба сначала во всем разобраться, перед тем как задавать вопрос. Источник: Admin-club.ru(это не первоисточник, так как тема всегда дорабатывается под новые версии движков)
Моя подпись некого не волнует.
|