shyguy
21
软删除的帖子会被导入为普通帖子(并且可见)。这显然是个问题,因为我认为用户默认会软删除,而且已删除的帖子可能包含敏感信息。
相关的列包括:post_delete_user, post_delete_time, post_visibility, post_delete_reason
似乎只有 post_visibility 是相关的——如果帖子被软删除然后恢复,其他列的值不会被清除。正常 = 1,不可见 = 2
我的修复方法是直接丢弃软删除的帖子,因为没人关心。
在迁移之前,在你的源数据库上运行这个:
DELETE FROM phpbb_posts WHERE post_visibility = 2;
1 个赞
shyguy
22
我有一个简陋的“持续迁移”流程。它包含一系列 shell 脚本,用于执行以下任务:
- 从远程服务器拉取 phpbb 数据库、附件等
- 创建/管理 discourse 实例
- 在从模板实例创建 discourse 实例时应用特定的
site_settings
- 备份/恢复它们
- 使用 git 仓库中的特定导入脚本运行迁移
- 执行迁移后任务
基本上,这允许我在迁移前的 discourse dctemplate 实例上进行工作,并对其进行随意调整。我继续调整 discourse 设置以符合我的喜好。
每晚,我都会从现有的实时 phpbb 拉取数据,并在新创建的 discourse 实例(dcstaging)上执行一次新的迁移,该实例是从最新的模板创建的。
当然,这需要几个小时,所以我还在本地运行一个具有非常小数据库的 phpbb,用于测试和改进迁移脚本。我可以在另一个 discourse 实例(dcdev)上进行相对快速的迁移测试。
因此,白天的测试工作流程如下:
在模板上做了一些工作,我很满意当前的状态:
./dc_template_create.sh dctemplate
糟糕,我的模板出错了。将其恢复到以前的状态:
./dc_template_restore.sh dctemplate
进行一次快速迁移以测试一些东西:
# 从 dctemplate 创建一个新实例 dcdev(并为 dcdev 应用特定的 site_settings)
./dc_template_restore.sh dcdev dctemplate
./dc_migrate.sh dcdev # 使用特定于该实例的迁移脚本仓库运行
进行一次从真实的、实时的 phpbb 进行的长时间迁移(过夜):
./dc_template_create.sh dctemplate
./dc_template_restore.sh dcstaging dctemplate
./phpbb_pull.sh
./dc_migrate.sh dcstaging
sleep 300
./dc_rake.sh dcstaging # 额外的迁移后任务,由导入器未处理(创建版主、详细标记、移动某些主题等)
如果有人足够感兴趣,我可以稍微清理一下并分享它。
2 个赞
shyguy
23
Discourse 有标签,因此可以考虑利用标签来移除不必要的子分类。
我原来的子分类下有几个置顶/固顶主题,当它们合并到一个大分类下时,置顶主题就过多,会造成干扰。
我的解决方案是从以下分类结构:
Food
- American
- Chinese
- ...
改为:
Food
- Featured
美式、中式等变成标签,所有置顶主题移至“Featured”(精选)下,并取消置顶。
# 将分类下的所有置顶主题移至子分类
def move_pinned_topics_to_subcategory(category, subcategory_name)
subcategory = Category.where(name: subcategory_name).find_by(parent_category_id: category.id)
topics = Topic.where(category_id: category.id).where.not(pinned_at: nil)
topics.each do |topic|
topic.update(pinned_at: nil, pinned_globally: false, pinned_until: nil,
category_id: subcategory.id) if not topic.title[/关于 .+ 分类/i]
end
Category.update_stats
end
food_cat = Category.find_by(name: 'Food')
move_pinned_topics_to_subcategory(food_cat, 'Featured')
4 个赞
shyguy
24
我的论坛还有一个之前的、已废弃的版本(也是 phpBB),我们有一个它的 wget 站点抓取副本,所以我正在为此开发一个导入器。使用 nokogiri 解析 HTML 文件,将其摄入中间数据库,然后使用导入器基类将行导入 Discourse。
我看到了这个:
我猜这是一个不常见的问题,但如果其他人也面临这个问题,也许我会稍微打磨一下并分享它。请告诉我。
或者如果有人已经做了这个并且想和我分享,那就更好了。我还没有深入这个项目。
2 个赞