Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[转换] 雷傲論壇 LeoBBS X => Discuz! 5.0.0 轉換程序(最後更新2006年11月11日)

[复制链接]
 楼主| unrealx2 发表于 2006-11-2 20:02:13 | 显示全部楼层
原帖由 xp13 于 2006-11-2 02:10 发表
转换的时候用户如果超过10万以上,会超时。
我有40万注册用户。没转换成功。最多转了7万就超时了。


40萬...
真多用戶阿~
原先的設計上沒考慮到論壇用戶有這麼多的情況,關於這點我會嘗試修改的。
回复

使用道具 举报

xp13 发表于 2006-11-2 20:13:12 | 显示全部楼层

回复 #11 unrealx2 的帖子

期待你的新作品。

■ 注册会员总数: 408479 人
■ 论坛主题总数: 103570 篇
■ 论坛回复总数: 1132085 篇
回复

使用道具 举报

rchench 发表于 2006-11-3 07:08:42 | 显示全部楼层

转换的问题

首先谢谢你的程序,很好用。不过有两个地方有问题:

1. 新版的leobbs附件无法转换,转换后的文本中显示[[UploadFileDisp=XXX],并不显示图片或附件。

2. 签名档中的UBB代码不解释。也就是说签名档中的图片链接等都已文字形式显示,比如:

  1. 时尚秀为你打造时尚完美女人!! msn:xxx@hotmail.com 点击进入时尚秀网店 [url=http://www.xxx.be/][img]http://www.xxx.be/media/banner.jpg[/img][/url]时尚秀为你打造时尚完美女人!! msn:xxx@hotmail.com 点击进入时尚秀网店 document.body.clientWidth-333)this.width=document.body.clientWidth-333">
复制代码


我的临时解决办法:

1. 我参照 http://www.ubbs.net/Soft/zhsj/luntanzhuanhua/200604/20060411203412.html 修改了Discuz代码,并手动整理了附件目录结构。比较复杂,所以具体方法就不贴了,感兴趣的可以来信探讨。

2. 没啥办法,只有让会员自己手工重新撰写签名档。

请问楼主你有没有更好的办法?谢谢。

[ 本帖最后由 rchench 于 2006-11-3 07:11 编辑 ]
回复

使用道具 举报

 楼主| unrealx2 发表于 2006-11-3 20:08:45 | 显示全部楼层
原帖由 rchench 于 2006-11-3 07:08 发表
首先谢谢你的程序,很好用。不过有两个地方有问题:

1. 新版的leobbs附件无法转换,转换后的文本中显示,并不显示图片或附件。

2. 签名档中的UBB代码不解释。也就是说签名档中的图片链接等都已文字形式显 ...


關於第一個問題我在剛剛又重新測試一次,確定附件是可已轉換的,請查明您在轉換時是否有其他因素存在,在轉換完後是否有將附件依照指定方式移至規定的目錄,在不然可否列出更多的相關訊息,以便我做問題的查證!至於第二個問題,在程式發佈前就已經知道,不過問題影響的並不大,只要讓會員重新存檔個人資料就好了。
回复

使用道具 举报

 楼主| unrealx2 发表于 2006-11-3 20:47:29 | 显示全部楼层
原帖由 xp13 于 2006-11-2 20:13 发表
期待你的新作品。

■ 注册会员总数: 408479 人
■ 论坛主题总数: 103570 篇
■ 论坛回复总数: 1132085 篇


已針對會員數據轉換的部份進行了修改,使轉換過程採分頁方式轉換,如此一來可以將會員資料分批轉換,這樣因該就可以避免掉處理逾時的可能了!
不過因為本人沒有像您一樣有四十萬多的會員數據可供轉換測試,所以高達如此多數的數據仍不是很能確定可以完整轉換,因此實際的情況希望您能在轉換後回報。

[ 本帖最后由 unrealx2 于 2006-11-3 20:48 编辑 ]
回复

使用道具 举报

xp13 发表于 2006-11-5 14:49:40 | 显示全部楼层
结果分析:共有 会员 数据 408648 条,转换成功 408327 条,失败 321 条,成功率:99.921448288013%。
结果分析:共有 主题 数据 104056 条,转换成功 103200 条,失败 856 条,成功率:99.177366033674%。
共有 帖子 数据 1265370 条,转换成功 1259081 条,失败 6289 条,成功率:99.502991219959%。
共有 附件 数据 50681 条,转换成功 50246 条,失败 435 条,成功率:99.141690179752%。
结果分析:共有 短消息 数据 33411 条,转换成功 33411 条,失败 0 条,成功率:100%。
结果分析:共有 好友 数据 7135 条,转换成功 7135 条,失败 0 条,成功率:100%。

花了30个小时
回复

使用道具 举报

WitQQ 发表于 2006-11-5 15:28:16 | 显示全部楼层
斑竹呢?为何不给个说道?精华吧
回复

使用道具 举报

xp13 发表于 2006-11-5 15:45:32 | 显示全部楼层
转换成功。
非常感谢楼主。

[ 本帖最后由 xp13 于 2006-11-5 20:18 编辑 ]
回复

使用道具 举报

rchench 发表于 2006-11-9 20:52:55 | 显示全部楼层
原帖由 unrealx2 于 2006-11-3 20:08 发表


關於第一個問題我在剛剛又重新測試一次,確定附件是可已轉換的,請查明您在轉換時是否有其他因素存在,在轉換完後是否有將附件依照指定方式移至規定的目錄,在不然可否列出更多的相關訊息,以便我做問題的查 ...


我前几天出去玩了,所以今天才看贴,我的leo的版本是LeoBBS X Build051231。

我看了一下你的代码,觉得转换失败原因是这样的。

  1.                                 if(preg_match_all("/\[UploadFile=([\w\-]+\.[\w]{1,5})\]/is", $message, $attachfilearray)) {

  2.                                         $haveattach = 1;
  3.                                         $attachdir = $lb_attach.'/'.$fid.'/';
复制代码


首先新版的LeoBBS(从05的某个版开始)里的附件的BBCODE是[UploadFileDisp=XXX]而不是[UploadFile=XXX],所以你的转换程序转换不了这些代码。同时我看了leobss的后几个版本的代码,用的BB代码也是UploadFileDisp,所以我认为其他版的也不会好用。

再则附件不是直接存在$lb_attach/$fid里/,而是存在$lb_attach/$fid/$xid/里,这个$xid是什么我也不确定,只知道范围是1-99,也许是时间、序号之类的去掉百位以上。

所以我的办法是修改discuzcode.func.php代码,在如下代码前

  1.         for($i = 0; $i <= $discuzcodes['pcodecount']; $i++) {
  2.                 $message = str_replace("[\tDISCUZ_CODE_$i\t]", $discuzcodes['codehtml'][$i], $message);
  3.         }
复制代码


加上

  1. //LB转换数据后专用 $tid是你主题的最大id
  2.         global $fid;
  3.         if ($tid < 19766) {
  4.                 $lbfilepath = './attachments/old/';
  5.                 $message = preg_replace(array(
  6.                                 "/\[UploadFileDisp=([^\[]+?)\.(gif|jpg|png|bmp|jpeg)\]/ies",
  7.                                 "/\[UploadFileDisp=(.*)\]/ies"),
  8.                                 array(
  9.                                 "bbcodeurl('\\1', '<center><img src="".$lbfilepath.$fid."/\\1.\\2" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=\'Click here to open new window\';}" onmouseover="if(this.resized) this.style.cursor=\'hand\';" onclick="if(this.resized) {window.open(\'".$lbfilepath.$fid."/\\1.\\2\');}"></center><br>')",
  10.                                 "bbcodeurl('\\1', '【<a href="".$lbfilepath.$fid."/\\1" target="_blank" style="color:#0000FF;font-weight:bold">点击下载文件</a>】')"),
  11.                                 $message);
  12.         }
  13.         unset($fid,$tid,$lbfilepath);
  14. //LB转换数据后专用
复制代码


然后再做了小程序,移动所有附件子目录中的文件到上级目录。
  1. $lbfilepath = '/var/www/html/non-cgi/usr07135747'; //后面不加"/"
  2. $discuzfilepath = '/var/www/html/attachments/lbupfile/'; //后加/

  3. if (!file_exists($lbfilepath)) {
  4.         echo '变量 $lbfilepath 指定的目录不存在:'.$lbfilepath.'<br>';
  5. }
  6. if (!file_exists($discuzfilepath)) {
  7.         echo '变量 $discuzfilepath 指定的目录不存在:'.$discuzfilepath;
  8.         exit;
  9. }
  10. read_dir($lbfilepath);
  11. function read_dir($dir='') {
  12.         $dh  = opendir($dir);
  13.         while (false !== ($filename = readdir($dh))) {
  14.                 if ($filename != 'index.html' && $filename != '.' && $filename != '..') {
  15.                         $dir2 = $dir.'/'.$filename;
  16.                         if (is_dir($dir2)) {
  17.                                 read_dir($dir2);
  18.                         } else {
  19.                                 if (@rename($dir2,$discuzfilepath.$filename)) {
  20.                                         echo $discuzfilepath.$filename.'<br>';
  21.                                 } else {
  22.                                         echo '不能移动文件:'.$discuzfilepath.$filename.'<br>';
  23.                                 }
  24.                         }
  25.                 }
  26.         }
  27. }
复制代码

这样比较麻烦,但还算奏效。

另,我把我的leo中的code.cgi发上来,供你参考。看看你能不能在你的转换程序中加上这个逻辑判断,解决这个问题。我可以协助你测试。

[ 本帖最后由 rchench 于 2006-11-9 21:09 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| unrealx2 发表于 2006-11-11 00:32:52 | 显示全部楼层
原帖由 rchench 于 2006-11-9 20:52 发表


我前几天出去玩了,所以今天才看贴,我的leo的版本是LeoBBS X Build051231。

我看了一下你的代码,觉得转换失败原因是这样的。

                                if(preg_match_all("/\+\.{1,5} ...


非常謝謝您的技術指教!
關於附件存放目錄的問題,很感謝您寫的小程式。
剛剛看了一下您所提供的code.cgi,才發現原來LeoBBS的附件代碼竟然可以是[UploadFilexxxxxx=*],x的部份是可以隨便為任何英文子母或數字的,也就是說LeoBBS的附件代碼根本是可以沒有固定規格的。
然而針對此項代碼不同而無法轉換的問題,我會盡快做修正的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 07:11 , Processed in 0.025985 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表