Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#26 2007-04-24 08:31:59

Serge
Гость

Re: Миграция с phpBB на PunBB

graf пишет:

Ну а главное-то хотелось бы готовое решение ипорта из пхпбб нюковского, если оно уже существует.

А это разве уже не работает? Я когда-то тоже с Нюка съезжал
http://www.punbb.org/download/contrib/P … -1.4.0.zip

#27 2007-04-26 10:57:36

graf
Гость

Re: Миграция с phpBB на PunBB

Именно с эти конвертером у меня проблемы... с таблицей юзеров, так как нюка её слила со своей таблицей.

Редактировался graf (2007-04-26 11:22:01)

#28 2007-04-26 12:50:01

hcs
Гость

Re: Миграция с phpBB на PunBB

сделай дамп структуры таблицы, без данных

#29 2007-07-18 00:29:31

graf
Гость

Re: Миграция с phpBB на PunBB

В общем ничего умного в решении моей проблемы я не нашёл и решил сделать сам. Покапался в постройке таблиц и файле 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'");

#30 2008-01-19 15:00:29

Brimus
Гость

Re: Миграция с phpBB на PunBB

А с 3ей phpbb как быть?

#31 2008-01-21 15:57:11

Brimus
Гость

Re: Миграция с phpBB на PunBB

Что, никак из phpBB 3 не перенести?

Подвал доски

Под управлением FluxBB. Хостинг Hostens