본문 바로가기

태터툴즈&인터넷

MT->태터툴(TT)로 전환하는 소스

Mysql DB를 사용하는 MT에서만 적용가능 합니다!

<?
// 사용자 환경 설정

$dbhost = "localhost";
$dbname = "-------";
$dbpassword = "--------";
$dbid = "--------"; // MT의 DB id를 넣어야 합니다!

$outputfile = "./mt.txt"; //출력될 결과 파일.


$fh = fopen ($outputfile, "w");
$connect=mysql_connect($dbhost, $dbid, $dbpassword);
mysql_select_db($dbname);


$result=mysql_query("select * from mt_entry");
while($data=mysql_fetch_array($result)) {


$author = "your nickname"; //자신의 닉네임으로 수정
$title = $data[entry_title];
$date = $data[entry_created_on];
$body = $data[entry_text];
$body=preg_replace("/\r\n|\n|\r/s","\\r\\n",$body);
$no=$data[entry_id];

list($date1,$time)=split(' ',trim($date));
list($year,$month,$day)=split('-',$date1);
list($hours,$mins,$seconds)=split(':',$time);
$unixtime=mktime($hours,$mins,$seconds,$month,$day,$year); // 'yy/mm/dd hh:mm:ss'를 태터툴이 사용하는 unixtime으로 변환

$j=0;

$result1=mysql_query("select * from mt_comment");
while($data2=mysql_fetch_array($result1)) { //코멘트의 갯수를 카운트
$pno=$data2[comment_entry_id];
if($pno==$no){
$j=$j+1;
}
}

fwrite($fh, "insert into t3_tts (no, category1, category2, title, body, user_id, image_file_path1, image_file_path2, regdate, is_public, is_sync, rp_cnt, tb_cnt) values ('$no', '1', '0', '$title', '$body', '$author', '', '', '$unixtime', '1', '0', '$j', '0')\n");
}


$result=mysql_query("select * from mt_comment"); //MT의 코멘트를 긁어오는 부분

$i=0;
while($data=mysql_fetch_array($result)) {
$i=$i+1;
$author = $data[comment_author];
$date = $data[comment_created_on];
$body = $data[comment_text];

list($date1,$time)=split(' ',trim($date));
list($year,$month,$day)=split('-',$date1);
list($hours,$mins,$seconds)=split(':',$time);
$unixtime=mktime($hours,$mins,$seconds,$month,$day,$year);
$pno=$data[comment_entry_id];

$body=preg_replace("/\r\n|\n|\r/s","\\r\\n",$body) ;

fwrite($fh, "insert into t3_tts_reply (no, pno, name, homepage, body, password, regdate, ip) values ('$i', '$pno', '$author', 'http://', '$body', '', '$unixtime', '')\n");
}

fclose ($fh);

echo "finished...<br />";

?>

http://eouia.net/archives/000326.html 의 제로보드->MT 변환 소스에다가 구글(google)신에게 수십번 물어서 만든 MT->태터툴(TT)로의 DB 전환 소스입니다. php 문법은 전혀 모르기 때문에 고생을 좀 했습니다. ;ㅁ;

위의 내용을 '적당한 파일명.php'로 권한이 777인 디렉토리에 저장을 한후 웹브라우저에서 열면 mt.txt란 파일을 남기며 변환이 끝납니다. 위의 변환에서의 문제점은 글쓴이가 한명만 되고 모두다 public, sync off이며 트랙백은 고려하지 않았고 카테고리 하나만, 그 외 답글 비번, 홈페이지 URL은 과감히 생략하였습니다. -_-;

mt.txt를 다운받아 놓고(이전에 꼭 mysql을 백업받아놓고 작업하시길!) TT를 설치한 후에 카테고리를 하나 만든후(이 때 게시물이 만들어져 있으면 다 지움) 환경설정에서 DB를 백업받아 열고 mt.txt의 내용을 복사해서 붙여넣고 저장하고 이걸 복구하면 MT에서 TT로 전환이 끝납니다.

이렇게 해서 전 MT를 차버리고 TT로 전환하였습니다. :)

센스가 있으신 분은 위의 소스를 얼마든지 수정해서 활용할 수 있습니다. 프로그래밍 쪼오오끔이라도 해보신 분은 삘(feel)이 올겁니다. :)



TT의 본문쪽 DB를 보면 insert into t3_tts_reply (no, category1, category2, title, body, user_id, image_file_path1, image_file_path2, regdate, is_public, is_sync, rp_cnt, tb_cnt) values ( ~(생략) 순서로 들어갑니다.

분석해보면 no는 글의 넘버, category1은 대분류 넘버, category2는 소분류 넘버, title은 글의 제목, body는 글의 본문, user_idimage_file_path1, image_file_path2는 이미지 관련, regdate는 글이 등록된 시간, is_public는 퍼블릭 (0은 public off, 1은 public on), is_sync는 sync(0은 sync off, 1은 sync on. 꼭 0으로 해 놓아야 됨), rp_cnt은 코멘트 카운트, tb_cnt는 트랙백 카운트입니다. 트랙백 카운트는 넣질 않았는데 코멘트 카운터처럼 넣으면 됩니다.


TT에서 카테고리의 경우는 no, sortno, label의 순서로 되어 있습니다.

예를 들자면 제 홈페이지에서의 TT의 DB를 보면
insert into t3_tts_ct1 (no, sortno, label) values ('1', '1', '일상의 기록')
insert into t3_tts_ct1 (no, sortno, label) values ('2', '2', '사진과 카메라')
insert into t3_tts_ct1 (no, sortno, label) values ('3', '3', '분류불가(...)')
insert into t3_tts_ct1 (no, sortno, label) values ('4', '4', '밤비와 꼬맹이')

no는 카테고리 넘버이고 sortno는 정렬넘버, label은 보시다시피 카테고리 이름이 들어갑니다. 위의 변환 소스에서는 무조건 카테고리 넘버(category1)가 1번으로 들어가게 해놓았는데 노가다 분류가 싫으신 분은 myphpadmin 같은 것에 접속해서 확인후 추가로 수정을 하면 됩니다. MT에서도 카테고리 분류를 위한 넘버가 있던걸로 기억하는데 백업한 DB에서 카테고리를 수작업(?)으로 넣어도 됩니다.


보낸 트랙백은 insert into t3_tts_tblog (no, pno, regdate, ping_url) values ~ (생략)로 no는 넘버, pno는 트랙백을 보낸 게시물의 넘버, ping_url은 핑을 보낸 URL 주소

insert into t3_tts_tblog (no, pno, regdate, ping_url) values ('1', '268', '1078441284', 'http://interlude.pe.kr/tt/rserver.php?mode=tb&sl=1') 이런 식으로 들어가고


받은 트랙백은 insert into t3_tts_trackback (no, pno, site, url, title, body, regdate, ip) values ~ (생략)이고 분석해보면 site는 트랙백을 보낸 사이트의 url은 핑을 보낸 url, pno는 트랙백이 등록된 게시물 넘버, 타이틀(title), title은 게시물의 제목, body는 내용, ip는 트랙백을 보낸 ip. 예를 들자면

insert into t3_tts_trackback (no, pno, site, url, title, body, regdate, ip) values ('1', '268', '블로그 이름을 입력하세요', 'http://hanl.knu.ac.kr/tt/index.php?pl=268', 'JH님의 새로운 설치형 블로그가 탄생!!!', '한창 유행을 떨치던 Purybbs의 제작자이신 JH님이 (생략)..', '1078441370', 'xxx.xxx.xxx.xxx')


거의 대부분의 항목이 MT DB에 수록이 되어 있습니다. 저도 완전판(?)을 올리고 싶지만 MT DB를 밀어버린 후라서 어렵네요. 다시하자니 귀찮고 -_-;;;

수정하실 분은 적당히 수정하셔서 사용하세요.