Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Ну а главное-то хотелось бы готовое решение ипорта из пхпбб нюковского, если оно уже существует.
А это разве уже не работает? Я когда-то тоже с Нюка съезжал
http://www.punbb.org/download/contrib/P … -1.4.0.zip
Именно с эти конвертером у меня проблемы... с таблицей юзеров, так как нюка её слила со своей таблицей.
Редактировался graf (2007-04-26 11:22:01)
сделай дамп структуры таблицы, без данных
В общем ничего умного в решении моей проблемы я не нашёл и решил сделать сам. Покапался в постройке таблиц и файле users.php и всё оказалось довольно просто. В общем я протестил, всё получилось. Так что кому интересно решение, то вот оно:
При переезде с phpbb интегрированной в Phpnuke нужно учесть факт, что таблица юзеров форума и портала слиты в одну "users". Если есть префикс, например "nuke_", тогда таблица "nuke_users". По какой-то лишь богу известной причине когда вы указываете префикс свой, то ищется таблица prefixbbusers. Тоесть не users, a bbusers. В этом-то и заключается проблема.
Решается она так, залазите в файл "converters\PhpBB\users.php" и меняете строчки 4,14,19,27:
В этих строчках вам надо удалить вот это
4 - '.$_SESSION['php'].'
14, 19 - '.$_SESSION['php'].$_SESSION['phpnuke'].'
27 - '.$_SESSION['php'].$_SESSION['phpnuke']." а также чуть чуть далее сменить LIMIT 1" на LIMIT 1'
и вместо этого вам лишь нужно подставить свой префикс. Например: nuke_
Вот окончательный код, с учётом что префикс nuke_:
[mono]<?php
// Fetch user info
$res = $fdb->query('SELECT * FROM nuke_users WHERE user_id>'.$start.' ORDER BY user_id LIMIT '.ceil($_SESSION['limit']/5)) or myerror('Unable to get table: users', __FILE__, __LINE__, $fdb->error());
$last_id = -1;
while($ob = $fdb->fetch_assoc($res))
{
$last_id = $ob['user_id'];
echo $ob['username'].' ('.$ob['user_id'].")<br>\n"; flush();
// Rank -> Title
$title = null;
if($ob['user_rank'] != 0){
$res = $fdb->query('SELECT rank_title FROM nuke_ranks WHERE rank_id ='.$ob['user_rank'].' LIMIT 1') or myerror("Unable to get user rank", __FILE__, __LINE__, $fdb->error());
list($title) = $fdb->fetch_row($res);
}
// Last post
$lastresult = $fdb->query('SELECT post_time FROM nuke_posts WHERE poster_id ='.$ob['user_id'].' ORDER BY post_id DESC LIMIT 1') or myerror("Unable to get user indo", __FILE__, __LINE__, $fdb->error());
$last = $fdb->fetch_assoc($lastresult);
$last['post_time'] == 0 ? $last['post_time'] = 'null' : null;
// Check for user/guest collision
if($ob['user_id'] == 1)
{
// Fetch last user id
$last_result = $fdb->query("SELECT user_id FROM nuke_users ORDER BY user_id DESC LIMIT 1") or myerror('Unable to fetch last user id', __FILE__, __LINE__, $fdb->error());
list($last_user_id) = $fdb->fetch_row($last_result);
$ob['user_id'] = ++$last_user_id;
$_SESSION['admin_id'] = $ob['user_id'];
}
// Dataarray
$todb = array(
'id' => $ob['user_id'],
'username' => $ob['username'],
'password' => $ob['user_password'],
'title' => $title,
'url' => $ob['user_website'],
'icq' => $ob['user_icq'],
'msn' => $ob['user_msnm'],
'aim' => $ob['user_aim'],
'yahoo' => $ob['user_yim'],
'num_posts' => $ob['user_posts'],
'last_post' => $last['post_time'],
'location' => $ob['user_from'],
'email_setting'=> !$ob['user_viewemail'],
'timezone' => (int)$ob['user_timezone'],
'last_visit' => $ob['user_lastvisit'],
'signature' => convert_posts($ob['user_sig']),
'email' => $ob['user_email'],
);
// Handle the user registered date
$todb['registered'] = intval($ob['user_regdate']) > 0 ? $ob['user_regdate'] : strtotime($ob['user_regdate']);
if($_SESSION['pun_version'] == '1.1')
$todb['last_action'] = $ob['user_lastvisit'];
// Save data
insertdata('users', $todb, __FILE__, __LINE__);
}
convredirect('user_id', 'users', $last_id);
?>[/mono]
Если будете менять сами в ручную, будьте внимательны со строчкой 27. Там почему-то двойные кавычки под конец. Лучше их поменять на единичные и проблем не будет. Что касается самой конвертации... У меня почти повис комп, так как база данных большая и Opera и IE загоняют всё в свою память, так что Опера у меня съела всю оперативку, еле еле закончил последний шаг. Так что если есть возможность делайте конвертацию на компе помощнее, ежели ваша база данных увесистая.
Ну вот и всё. Удачи вам и если будут проблемы с кодировками, попробуйте следующее:
в header.php добавить 44 строку:
43:header('Pragma: no-cache'); // For HTTP/1.0 compability
44:header("Content-Type: text/html; charset=utf-8");
и в include\dblayer\mysql.php снять коменты с 43 строки:
43:@mysql_query("SET NAMES 'utf8'");
А с 3ей phpbb как быть?
Что, никак из phpBB 3 не перенести?