zuoguang 发表于 2010-12-13 09:48
回复 mccad 的帖子
欢迎分享下方法 呵呵!
分类是手工方式,因为我旧博客里的分类太多,不太适用,新博客进行了简化,只有9个分类,所以直接oblog_log表中加入catid列,并按照新的分类手工填入。
另外,由于新博客已经有人发表了内容,所以旧博客的ID必须变动填入,不然新博客的数据就必须清空。
程序分成两部分,也是依样画葫芦,下面是转oblog_log和oblog_comment内容程序:- <?php
- /*
- pre_home_blog
- pre_home_blogfield
- pre_home_comment
- */
- if($start <= 1) {
- //truncatetable('home_blog');
- //truncatetable('home_blogfield');
- //truncatetable('home_comment');
- }
- $query = "SELECT * FROM {$source_tablepre}log WHERE logid BETWEEN $start AND $end";
- $rs = $db['source']->execute($query);
- $fieldarray = array('logid', 'userid', 'author', 'topic', 'catid', 'subjectid', 'iis', 'addtime', 'logtext');
- while (!$rs->EOF) {
- foreach($fieldarray AS $field) {
- $dvt[$field] = daddslashes($rs->fields[$field]->value);
- }
- //pre_home_blog
- $mainid = $dvt['logid'];
- $userid = $dvt['userid'];
- $username = cutstr(htmlspecialchars(trim($dvt['author'])), 15);
- $uid = getuid($username);
- $subject = cutstr(htmlspecialchars(trim(@strip_tags($dvt['topic']))), 78);
- $catid = $dvt['catid'];
- $viewnum = $dvt['iis'];
- $replynum = 0;
- $dateline = timetounix($dvt['addtime']);
- //pre_home_blogfield
- $tag = '';
- $message = $dvt['logtext'] ;
- $field1 = array('uid','username','subject','catid','viewnum','replynum','dateline');
- $query1 = getinsertsql("{$discuz_tablepre}home_blog", $field1);
- if($db['discuz']->query($query1)){
- $blogid = $db['discuz']->insert_id();
- $field2 = array('blogid','uid','tag','message');
- $query2 = getinsertsql("{$discuz_tablepre}home_blogfield", $field2);
- if($db['discuz']->query($query2)){
- $db['discuz']->query("UPDATE {$discuz_tablepre}common_member_count SET blogs=blogs + 1 WHERE uid='$uid'");
- $query3 = "SELECT * FROM {$source_tablepre}comment WHERE mainid = $mainid";
- $rs3 = $db['source']->execute($query3);
- $fieldarray3 = array('commentid','userid','mainid','comment_user','addip','addtime','comment','commenttopic','isguest');
- while (!$rs3->EOF) {
- foreach($fieldarray3 AS $field3) {
- $dvt3[$field3] = daddslashes($rs3->fields[$field3]->value);
- }
- //$uid;
- $id = $blogid;
- $idtype = 'blogid';
- $author = $dvt3['comment_user'];
- $authorid = getuid($author);
- $ip = $dvt3['addip'];
- $dateline = timetounix($dvt3['addtime']);
- $message = $dvt3['comment'];
- $message = str_ireplace('<p>','<DIV>',$message);
- $message = str_ireplace('</p>','</DIV>',$message);
- $message = convertbbcode($message);
- if (!(stripos('1'.$dvt3['commenttopic'],'回复:')>0 || stripos('1'.$dvt3['commenttopic'],'Re:')>0)) {
- $message = '<DIV>' . $dvt3['commenttopic'] . '</DIV>' . $message;
- }
-
-
- $field4 = array('uid','id','idtype','authorid','author','ip','dateline','message');
- $query4 = getinsertsql("{$discuz_tablepre}home_comment", $field4);
- if ($db['discuz']->query($query4)) {
- $db['discuz']->query("UPDATE {$discuz_tablepre}home_blog SET replynum=replynum + 1 WHERE blogid='$blogid'");
- };
- $rs3->Movenext();
- }
- $rs3->close();
- }
-
- $convertedrows ++;
- } else {
- reportlog("无法转换主题 tid = $tid subject = '$subject',SQL 语句如下 :<br><textarea rows="3" style="width: 100%;">".$query1."</textarea>");
- }
- */
- $converted = 1;
- $totalrows ++;
- $rs->Movenext();
- }
- $rs->close();
- ?>
复制代码 下面是转oblog_message留言部分:- <?php
- /*
- pre_home_comment
- */
- $query5 = "SELECT * FROM {$source_tablepre}message";
- $rs5 = $db['source']->execute($query5);
- $fieldarray5 = array('messageid','userid','message_user','addip','addtime','message','messagetopic','isguest');
- while (!$rs5->EOF) {
- foreach($fieldarray5 AS $field5) {
- $dvt5[$field5] = daddslashes($rs5->fields[$field5]->value);
- }
- //$uid;
- $id = $uid = getbloguid($dvt5['userid']);
- $idtype = 'uid';
- $author = $dvt5['message_user'];
- $authorid = getuid($author);
- $ip = $dvt5['addip'];
- $dateline = timetounix($dvt5['addtime']);
- $message = $dvt5['message'];
- $message = str_ireplace('<p>','<DIV>',$message);
- $message = str_ireplace('</p>','</DIV>',$message);
- $message = convertbbcode($message);
- $message = '<DIV>' . $dvt5['messagetopic'] . '</DIV>' . $message;
-
- $field6 = array('uid','id','idtype','authorid','author','ip','dateline','message');
- $query6 = getinsertsql("{$discuz_tablepre}home_comment", $field6);
- $db['discuz']->query($query6);
- $convertedrows ++;
-
- $rs5->Movenext();
- }
- $rs5->close();
- function getbloguid($id) {
- global $db, $discuz_tablepre, $source_tablepre, $config_type;
- $sql = '';
- $sql = "SELECT TOP 1 username FROM {$source_tablepre}user WHERE userid = $id";
- $rs = $db['source']->execute($sql);
- $username= $rs->fields['username']->value;
- $sql = "SELECT uid FROM {$discuz_tablepre}".($config_type == 'x' ? "common_member" : "members")." WHERE username='$username' LIMIT 1";
- return $username ? $db['discuz']->result($db['discuz']->query($sql), 0) : 0;
-
- }
- ?>
复制代码 相册没转,因为我原来本身是N久前的版本(估计是3.1版),个人分类没转,博客文章中的图片没转(因为我只有几个图片,手工编辑就算了)。
估计对你的作用不大。
转换过程中,主要问题是,博客的用户ID与论坛的用户ID是不同的,我是通过用户名来对应,这跟我原来博客的设置有关。不知你是否也可以这样走。 |