1

Тема: Перенос с форума FireBird Joomla на vBulletin 3.8.7

Задача  - перенести форум с компонента Joomla  под названием FireBird на полноценный форум vBulletin 3.8.7.

Поделиться

2

Re: Перенос с форума FireBird Joomla на vBulletin 3.8.7

Импорт с FireBird


<?php
echo "<br>подкл к БД...";
 
$file_ini = file("boris.ini");
$host="localhost";
$user=trim($file_ini[0]);
$pwd=trim($file_ini[1]);
$database_name=trim($file_ini[2]);
$db=mysql_connect($host,$user,$pwd);
echo "<br>   {$database_name} - {$user} - {$pwd} <br>";
mysql_select_db($database_name,$db);

// категории jos_fb_categories  Поля  id-0,parent-1,name-2,description - 20
$sql = mysql_query('SELECT id, parent,name, description  FROM jos_fb_categories');
while ($row = mysql_fetch_array($sql)) {
$id = $row[0];
$parent = $row[1];
$name = $row[2];
$description = $row[3];
echo "id:".$id." parent:".$parent." name:".$name." description:".$description."<br>";

}
echo "<br>";

$maxthread = mysql_fetch_array(mysql_query("SELECT MAX(thread) FROM jos_fb_messages"));
echo $maxthread[0];

for ($i = 0; $i <= $maxthread[0]; $i++) {

$sql = mysql_query( 'SELECT * FROM jos_fb_messages INNER JOIN jos_fb_messages_text ON jos_fb_messages.id=jos_fb_messages_text.mesid WHERE thread='.$i.' ORDER BY thread DESC LIMIT 10' );

//jos_fb_messages_text - посты.  Поля mesid = 1908  номер поста, message - текст поста
//jos_fb_messages. id = mesid, parent - пред пост    , thread - тема, catid - категория, name - имя, subject - назв темы.

$num_rows = mysql_num_rows( $sql);   
if ($num_rows >0){
echo "<br> количество записей:{$num_rows} <br>";

while ($row = mysql_fetch_array($sql)) { // в кажой $row по строчке из массива $sql
//print_r($row);
//echo "<br><br><br>";
$id = $row[0];
$parent = $row[1];
$thread = $row[2];
$catid = $row[3];
$name = $row[4];
$userid = $row[5];
$email = $row[6];
$subject = $row[7];
$message = $row[20];


echo "id:".$id." parent:".$parent." thread:".$thread." catid:".$catid." name:".$name." userid:".$userid." email:".$email." subject:".$subject." message:".$message."<br><br><br>";
}
}
}
mysql_close($db);       
echo "<br>закрыли БД";
                ?>

Поделиться

3

Re: Перенос с форума FireBird Joomla на vBulletin 3.8.7

Экспорт в vBulletin

Таблицы базы форума на vBulletin:

Таблица thread:
   
threadid  - ид темы
title - название темы
prefixid
firstpostid  - ид
lastpostid  - ид
lastpost  - ид
forumid  - ид раздела
pollid
open  - 1
replycount - кол-во ответов
hiddencount
deletedcount
postusername - ник автора
postuserid
lastposter - ник последнего
dateline
views - просмотры
iconid
notes
visible - 1
sticky
votenum
votetotal
attach
similar
taglist

Таблица post:
postid  - ид
threadid  - ид
parentid - ид поста родителя
username - ник
userid  - ид
title
dateline
pagetext - текст поста
allowsmilie -1
showsignature -1
ipaddress
iconid
visible -1
attach
infraction
reportthreadid

Таблица forum - с разделами.
Таблица user:   
userid
username
password
email

Запросы на запись в булку идут такие:

INSERT INTO `zoloto_rusgorod`.`post` (`postid`, `threadid`, `parentid`, `username`, `userid`, `title`, `dateline`, `pagetext`, `allowsmilie`, `showsignature`, `ipaddress`, `iconid`, `visible`, `attach`, `infraction`, `reportthreadid`) VALUES ('246143', '618', '0', 'тест ника', '0', '', '1987649499', 'тест текста сообщения', '1', '1', '', '0', '1', '0', '0', '0');

Поделиться

4

Re: Перенос с форума FireBird Joomla на vBulletin 3.8.7

Подсказка по регулярным выражениям:
http://forum-seo.net/showthread.php?t=12055

Софт для работы с ними: TestRExp

Поделиться

5

Re: Перенос с форума FireBird Joomla на vBulletin 3.8.7

<?php
echo "<br>подкл к БД2...";
 
$file_ini = file("boris2.ini");
$host="localhost";
$user=trim($file_ini[0]);
$pwd=trim($file_ini[1]);
$database_name=trim($file_ini[2]);
$db=mysql_connect($host,$user,$pwd);
echo "<br>   {$database_name} - {$user} - {$pwd} <br>";
mysql_select_db($database_name,$db);

$file_ex = file("_ex.txt");
//echo $file_ex[0];  // список форумов
echo "<br>-------------<br>";
$array = explode("<br>",$file_ex[0]); // первая строка с разделами форума

//echo "<br>array - ".$array[0]."<br>";
foreach ( $array as $value ) {
preg_match("#^id:.*?parent:#i",$value,$arr);
$id = substr($arr[0],3);
$id = substr($id,0,-8);

preg_match("#name:.*?description:#i",$value,$arr);
$title = substr($arr[0],5);
$title = substr($title,0,-12);

preg_match("#description:.*?$#i",$value,$arr);
$description = substr($arr[0],12);

//echo $id. "//" . $title. "//" . $description. "<br>";

//echo $value."<br>";

$parentid=6; // родительский ид
// options - ***91 - раздел открыт, ***89 - раздел закрыт , ***87 - категория  открыта, ***85 - категория  закрыта

//$result = mysql_query("INSERT INTO forum
//(title, title_clean, description, description_clean, options, displayorder, daysprune, parentid, parentlist, childlist, cyb_frules) 
//VALUES   
//('$title', '$title','$description','$description', '16391', '1', '-1', '$parentid', '10,1,-1', '10,-1', '1')")
// or die("Invalid query: " . mysql_error());
}


echo "<br>----импорт разделов - ОК  ---<br>";

// таблица thread - threadid, title, firstpostid, lastpostid, forumid
// таблица post - threadid, parentid, username, userid, dateline, pagetext, visible
// время, unix time stamp транслятор, onlineconversion.com/unix_time.htm
// если указать корректный userid, то username не используется
// посты в теме сортируются только по времени, а не по цепочке parentid постов.

// вставить тему
//$result = mysql_query("INSERT INTO thread
//(threadid, title, firstpostid, forumid, open, dateline, visible)
//VALUES
//('563', 'НАЗВ ТЕМЫ', '1890', '566', '1', '1390054277', '1')")
//or die("Invalid query: " . mysql_error());

// вставить пост
//$result = mysql_query("INSERT INTO post
//(postid, threadid, parentid, username, userid, title, dateline, pagetext, visible)
//VALUES
//('1890', '563', '0', 'Федя', '1', 'title', '1390039200', 'ТЕКСТ ТЕМЫ', '1')")
//or die("Invalid query: " . mysql_error());

//парсим файл  $file_ex
$f = file_get_contents('_ex.txt');
$arr = explode("количество записей:",$f);  // темы с постами
$i=0;
$threadid=100;

foreach ( $arr as $value ) { // value  - одна тема
$tema=0;
$i=$i+1;
if ($i==1) continue; // пропустили разделы форумов
$j=0;
$row_data = explode('<br>id:', $value); // row_data - массив всех постов в каждой теме

foreach ($row_data as $onepost) { // onepost - один пост, причем первый раз - просто цифра.
echo $j."_".$onepost."<br>";
$j=$j+1;
    if ($j>1)  // пропустить кол-во постов в теме
    {
    //echo $onepost."<br>---- пост --------<br>";
    preg_match("#^(.*?)parent:#i",$onepost,$idpost);
    echo $idpost[1]."<br>";
    preg_match("#subject:(.*?)message:#i",$onepost,$threadtitle);  // парсим названия тем
      if ($tema==0){ // в БД пишем тему
      $result = mysql_query("INSERT INTO thread
      (threadid, title, firstpostid, forumid, open, dateline, visible)
      VALUES
      ('$threadid', '$threadtitle[1]', '$idpost[1]', '566', '1', '1390054277', '1')")
      or die("Invalid query: " . mysql_error());
      echo $tema."//".$threadid." ---//".$threadtitle[1]."//<br>";
      $threadid = $threadid+1;
      }
      if ($threadtitle[1]!="") $tema=1; // чтобы только 1 раз записали в БД название темы.
       
     // тут нада записать пост
     
    } // конец $j>1
} // конец foreach onepost
} // конец foreach value с темами


//echo $i;
mysql_close($db);       
echo "<br>закрыли БД";
                ?>

Поделиться