Zeroboard -> MetaBBS 컨버터Jan 12, 2007
발로 대충 대충 만들었음.
패스워드에 대한 처리는 함수를 따로 만들거나, 필터를 추가해서 플러그인으로 해결해야 함.
PHP:
-
<?php
-
-
require 'lib/config.php';
-
$config = new Config('metabbs.conf.php');
-
-
-
$config->set('force_utf8', 1);
-
$backend = $config->get('backend', 'mysql');
-
-
require 'lib/model.php';
-
require 'lib/backends/' . $backend . '/backend.php';
-
require 'model/board.php';
-
require 'model/category.php';
-
require 'model/post.php';
-
require 'model/comment.php';
-
require 'model/attachment.php';
-
require 'model/user.php';
-
-
require 'lib/user_manager.php';
-
-
$conn = get_conn();
-
-
function toutf8(&$item, $key) {
-
}
-
function unhtmlspecialchars(&$item) {
-
$item = str_replace(array("&",""","<",">"," "), array("&","\"","<",">"," "), $item);
-
}
-
-
class ZeroBoard {
-
function _query($sql, $euckr = true) {
-
return $res;
-
}
-
function process_users() {
-
$res = $this->_query("SELECT user_id, password, name, email, homepage, level FROM ".ZB_TABLE_PREFIX."member_table") or die(mysql_error());
-
-
UserManager::signup($user['user_id'], $user['password'], $user['name'], $user['email'], $user['homepage']);
-
}
-
}
-
function get_boards() {
-
$res = $this->_query("SELECT name,use_pds,use_category FROM ".ZB_TABLE_PREFIX."admin_table");
-
"name" => $board['name'],
-
"use_attachment" => ($board['use_pds']) ? 1 : 0,
-
"use_category" => ($board['use_category']) ? 1 : 0
-
);
-
}
-
return $boards;
-
}
-
function get_categories($category_name) {
-
$res = $this->_query("SELECT name FROM ".ZB_TABLE_PREFIX."board_category_".$category_name);
-
$categories[] = $category['name'];
-
}
-
return $categories;
-
}
-
function get_posts($board) {
-
$res = $this->_query("SELECT no,ismember,category,name,subject,memo,password,reg_date,hit,file_name1,file_name2 FROM ".ZB_TABLE_PREFIX."board_".$board['name']." WHERE depth=0 ORDER BY no ASC");
-
$posts[] = $post;
-
}
-
return $posts;
-
}
-
function get_comments($post, $board) {
-
$post['no'];
-
$res = $this->_query("SELECT ismember,name,memo,reg_date FROM ".ZB_TABLE_PREFIX."board_comment_".$board['name']." WHERE parent='{$post['no']}'");
-
$comments[] = $comment;
-
}
-
return $comments;
-
}
-
function find_post_category($post, $board) {
-
if (!$board->use_category) return 0;
-
-
$category = mysql_fetch_assoc($this->_query("SELECT name FROM ".ZB_TABLE_PREFIX."board_category_".$board->name." WHERE no='{$post['category']}'"));
-
$category = mysql_fetch_assoc($this->_query("SELECT id FROM ".METABBS_TABLE_PREFIX."category WHERE board_id='{$board->id}' AND name='{$category['name']}'"));
-
-
return ($category['id']) ? $category['id'] : 0;
-
}
-
function find_owner($post) {
-
if ($post['ismember'] <1) return false;
-
-
$user = mysql_fetch_assoc($this->_query("SELECT user_id FROM ".ZB_TABLE_PREFIX."member_table WHERE no='{$post['ismember']}'"));
-
$user = mysql_fetch_assoc($this->_query("SELECT id, user, name, password FROM ".METABBS_TABLE_PREFIX."user WHERE user='{$user['user_id']}'", false));
-
-
return $user;
-
}
-
function get_attachments($post) {
-
if ($post['file_name1']) $attachments[] = $post['file_name1'];
-
if ($post['file_name2']) $attachments[] = $post['file_name2'];
-
return $attachments;
-
}
-
}
-
-
$zb = new ZeroBoard();
-
$zb->process_users();
-
foreach ($zb->get_boards() as $zb_board) {
-
$board->use_category = $zb_board['use_category'];
-
$board->use_attachment = $zb_board['use_attachment'];
-
$board->create();
-
$board = Board::find_by_name($zb_board['name']);
-
if ($board->use_category) {
-
foreach ($zb->get_categories($board->name) as $zb_category) {
-
}
-
}
-
-
foreach ($zb->get_posts($zb_board) as $zb_post) {
-
$user = $zb->find_owner($zb_post);
-
"board_id" => $board->id,
-
"user_id" => ($user) ? $user['id'] : 0,
-
"name" => ($user) ? $user['name'] : $zb_post['name'],
-
"category_id" => $zb->find_post_category($zb_post, $board),
-
"title" => $zb_post['subject'],
-
"body" => $zb_post['memo'],
-
"password" => null,
-
"views" => $zb_post['hit'],
-
));
-
$post->create();
-
mysql_query("UPDATE ".METABBS_TABLE_PREFIX."post SET created_at=FROM_UNIXTIME('{$zb_post['reg_date']}') WHERE board_id='{$board->id}' AND id='{$post->id}'");
-
foreach ($zb->get_comments($zb_post, $zb_board) as $zb_comment) {
-
$user = $zb->find_owner($zb_comment);
-
"board_id" => $board->id,
-
"post_id" => $post->id,
-
"user_id" => ($user) ? $user['id'] : 0,
-
"name" => ($user) ? $user['name'] : $zb_comment['name'],
-
"body" => $zb_comment['memo'],
-
"password" => null,
-
));
-
$comment->create();
-
mysql_query("UPDATE ".METABBS_TABLE_PREFIX."comment SET created_at=FROM_UNIXTIME('{$zb_comment['reg_date']}') WHERE board_id='{$board->id}' AND id='{$comment->id}'");
-
}
-
foreach ($zb->get_attachments($zb_post) as $zb_attachment) {
-
$attachment->create();
-
}
-
}
-
}
-
?>
이 컨버터에 대한 좀더 자세한 설명을 해 주실 수 있으신가요? 이걸 metabbs 디렉토리에 zb2meta.php로 저장하고 실행을 해 봤는데, 아무 일도 일어나지 않더군요! 여기든 메타비비에스 포럼이든 메일이든 어느 곳이든 상관없습니다. 미리 감사드립니다.
아무 일도 일어나지 않으면 변환이 되고 있는 겁니다. 그냥 기다리시면 될 듯 합니다.
(물론 ZB_DIR 은 지정해줘야 하고요)
그나저나 성공하신 것 같군요. 답이 늦어서 죄송합니다.