山论网

 找回密码
 这里注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 102|回复: 0

[前沿资讯] Discuz! X3.4 转 Discuz! Q

[复制链接]
10000
性别
保密
帖子
1215
阅读权限
200
注册时间
2020-6-10
 楼主| 发表于 2020-12-24 09:57:18 | 显示全部楼层 |阅读模式
一、介绍
本程序为 Discuz! X3.4 转 Discuz! Q 程序,通过运行转换命令可以将 Discuz! X3.4 包括用户、版块、普通主题、回复、附件图片等数据转换至 Discuz! Q,该程序脚本可以放到任意目录。在转换程序开始前,请保证 Discuz! Q 数据库为全新安装,或者只通过本程序转换过数据。具体详见下载包中的Readme。
#二、环境要求
  • 服务器环境要求为: PHP 7.2.5+
#三、程序下载
请点击这里下载

Discuz! X3.4 转 Discuz! Q 程序
⼀、介绍
本程序为 Discuz! X3.4 转 Discuz! Q 程序,通过运⾏转换命令可以将 Discuz! X3.4 包括⽤户、版块、普
通主题、回复、附件图⽚等数据转换⾄ Discuz! Q,该程序脚本可以放到任意⽬录。在转换程序开始前,
请保证 Discuz! Q 数据库为全新安装,或者只通过本程序转换过数据。
⼆、环境要求
服务器环境要求为: PHP 7.2.5+
三、配置与使⽤
1、配置
a).数据库链接参数修改
在 config/database.php ⽂件中配置好数据库, 其中 discuzq 为 Discuz! Q 数据库连接信息, discuzx
为 Discuz! X3.4数据库连接信息。
注:若Discuz! X3.4为 gbk 编码,数据库连接信息中的 X数据编码 和 X数据库字符集 保持现有默认配置
即可。
b).测试数据库连接
打开命令⾏窗⼝,在程序根⽬录运⾏ php discoa app:test 命令测试数据库能否正常连接。
c).运⾏ SQL
在 Discuz! Q 数据库运⾏ sql (注意修改表格前缀,如果没有前缀,去掉 pre_ 即可):
d).转换模式选择
转换模式配置,打开 config/config.php ⽂件,配置 “breakpoint_continuation” 。
当breakpoint_continuation的值为 true 时,表示开启断点续转模式,在此模式下执⾏转换命令,
程序会忽略之前转换过的数据;
当breakpoint_continuation的值为 false 时,程序会先检查Q⽬标表是否有多余数据,如果有则停
⽌执⾏对应的转换任务;
ALTER TABLE `pre_users` ADD `salt` CHAR(6) NULL AFTER `password`;
ALTER TABLE `pre_posts` CHANGE `content` `content` MEDIUMTEXT CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '内容';e).修改 Discuz! Q ⽂件
更新 Discuz! Q 登陆验证⽂件(后期每次Discuz! Q 升级后都需要⼿动添加)。找到 Discuz! Q 程序
⽂件 app/Listeners/User/CheckLogin.php (72⾏ 附近)
前添加如下代码:
在程序⽂件最后⼀个⼤括号}前,给本⽂件添加如下代码:
将转换程序⾥的⽂件 app/Formatter/CustomerConfigurator.php 复制到 Discuz! Q程序
app/Formatter⽬录下,并在 Discuz! Q 程序⽂件 app/Formatter/Formatter.php 中 38⾏ 左右找
到:
在其后添加如下代码:
删除 Discuz! Q 程序 storage/Formatter ⽬录下的所有缓存⽂件。
if ($event->password !== '' && !$event->user->checkPassword($event->password))
{
$this->checkSaltPassword($event);
/**
* @param $event
* Discuz! X3.4 密码转换
*/
private function checkSaltPassword($event) {
if (!empty($event->user->salt) && !empty($event->password)) {
$passwordmd5 = preg_match('/^\w{32}$/', $event->password) ? $event-
>password : md5($event->password);
$passwordmd5 = md5($passwordmd5 . $event->user->salt);
if ($event->user->password == $passwordmd5) {
$event->user->password = $event->password;
$event->user->salt = '';
$event->user->save();
}
}
}
parent::confTopic($configurator);
CustomerConfigurator::Customer($configurator);f).上传附件
将 Discuz! X3.4 ⽬录 uc_server/data/avatar 中的所有⽂件上传⾄ Discuz! Q ⽬录
storage/app/public/avatars,如果 avatars 不存在,请⾃⾏创建该⽬录。
将 Discuz! X3.4 ⽬录 data/attachment/forum 中的所有⽂件上传⾄ Discuz! Q ⽬录
storage/app/public/attachments,如果 attachments 不存在,请⾃⾏创建该⽬录。
将 Discuz! X3.4 ⽬录 data/attachment/commom ⽂件夹上传⾄ Discuz! Q ⽬录
storage/app/public/attachments。
将 Discuz! X3.4 ⽬录 static/image/smiley ⽂件夹中的⽂件夹上传⾄ Discuz! Q ⽬录 public/emoji
⽬录。
2、使⽤
Discuz! X3.4 转换 Discuz! Q 命令
a).⼀键转换:
命令⾏模式下,在转换程序根⽬录运⾏ php discoa app:xtq 命令,将完成所有本程序定义过的数据的转
换,包含:⽤户数据、版块数据、主题数据、回复数据、附件数据、表情数据。
b).选择转换:
您可以⾃由选择要转换的数据。您可以使⽤ php discoa app:xtq --option 命令,⾃由选择您需要转换的
数据,--option 有以下可使的⽤参数:
user : ⽤户信息转换。
category : 版块信息转换。
thread : 主题信息转换。
post : 回复信息转换。
attachment : 附件信息转换。
emoji : 表情转换。
count :主题、帖⼦、⽤户信息统计更新。
例如:
php discoa app:xtq user 表示只转换⽤户信息。
php discoa app:xtq thread 表示只转换主题信息。
注意:
若采⽤选择转换,⽤户数据和版块信息⼀定要在主题、回复信息之前进⾏操作。
辅助命令
您可以使⽤ php discoa app:clean cleanDatabase --option 命令清理 Discuz! Q 中数据表数据。您可以
选择以下 --option 参数:
user : 清理⽤户数据。
userWallet : 清理⽤户钱包数据。
category : 清理板块。thread : 清理主题。
post : 清理回帖。
emoji: 清理转换来的表情。
attachment : 清理附件数据。
不填写 option 参数时,程序将清理以上所有数据。
例如:
php discoa app:clean cleanDatabase 表示清理所有数据。
php discoa app:clean cleanDatabase user 表示清理⽤户数据。

您需要登录后才可以回帖 登录 | 这里注册

本版积分规则

山论网|关于我们|网站声明|联系我们|广告合作|友情链接

版权所有:© 2016-2020 山论网 版权所有 举报邮箱:[email protected]

本网站仅提供存储服务;如存在侵权问题,请权利人与本网站联系删除!

网站标识 鲁ICP备16020116号 鲁公网安备16020116号

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