Migrate a phpBB3 forum to Discourse

Есть ли способ обойти это? На многих форумах есть пользователи, которые зарегистрировались с адресами электронной почты, к которым у них больше нет доступа, и они используют пароли короче 10 символов.

1 лайк

Вы можете изменить минимальную длину пароля на 8 в настройках сайта.

Пользователям, которые не могут использовать свой пароль, можно отправить ссылку для входа или ссылку для сброса пароля.

2 лайка

Да, есть настройка сайта migratepassword allow insecure passwords, просто включите её.

Убедитесь, что вы включили это ПОСЛЕ импорта, а не во время импорта.

4 лайка

5 сообщений были перенесены в новую тему: Отсутствуют акцентные символы

rank_mapping:
   trust_level_1: 200
   trust_level_2: 1000
   trust_level_3: 3000

Как именно это работает? Мне нужно создавать пользовательские ранги в phpBB (где я могу установить только разное количество общих сообщений в качестве критерия), или импортер проверяет каждого пользователя на количество общих сообщений и назначает уровень доверия в Discourse на основе этого?

Спасибо! :slight_smile:

1 лайк
# Соответствие рангов уровню доверия
#
# Сопоставление уровней рангов phpBB 3.x с уровнями доверия
# Пользователи с рангом не менее 3000 будут иметь TL3 и т. д.
      trust_level = @settings.trust_level_for_posts(row[:user_posts], trust_level: trust_level)

Таким образом, это просто сопоставление количества созданных пользователем сообщений с различными уровнями доверия. Я склоняюсь к тому, чтобы установить всем TL1 и позволить им пройти уровни доверия Discourse дальше; добраться до TL2 не так уж сложно.

Однако в какой-то момент кто-то, кто мигрировал на Discourse, посчитал важным настроить уровни доверия для своих пользователей, а программист решил, что проще реализовать это в коде, чем спорить с ними. :slight_smile:

4 лайка

Да, вы правы. Я бы тоже предпочёл такой вариант. Я просто хотел убедиться, что правильно понял эту функцию. :slight_smile:

3 лайка

Не устанавливает ruby-bbcode-to-md, как будто IMPORT=1 недействителен.

mike@ubuntu:~/discourse/script/import_scripts$ IMPORT=1 bundle exec ruby phpbb3.rb phpbb3/settings.yml
Traceback (most recent call last):
	40: from phpbb3.rb:13:in `<main>'
	39: from phpbb3.rb:14:in `<module:ImportScripts>'
	38: from phpbb3.rb:15:in `<module:PhpBB3>'
	37: from phpbb3.rb:15:in `require_relative'
	36: from /home/mike/discourse/script/import_scripts/phpbb3/support/settings.rb:5:in `<top (required)>'
	35: from /home/mike/discourse/script/import_scripts/phpbb3/support/settings.rb:5:in `require_relative'
	34: from /home/mike/discourse/script/import_scripts/base.rb:16:in `<top (required)>'
	33: from /home/mike/discourse/script/import_scripts/base.rb:16:in `require_relative'
	32: from /home/mike/discourse/config/environment.rb:7:in `<top (required)>'
	31: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/application.rb:372:in `initialize!'
	30: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:60:in `run_initializers'
	29: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
	28: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
	27: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
	26: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:347:in `call'
	25: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:347:in `each'
	24: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
	23: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
	22: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	21: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
	20: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	19: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:32:in `run'
	18: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/initializable.rb:32:in `instance_exec'
	17: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/railties-7.0.3.1/lib/rails/application/finisher.rb:68:in `block in <module:Finisher>'
	16: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/reloader.rb:88:in `prepare!'
	15: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:106:in `run_callbacks'
	14: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:595:in `invoke_before'
	13: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:595:in `each'
	12: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:595:in `block in invoke_before'
	11: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:200:in `block in halting'
	10: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:686:in `block in default_terminator'
	 9: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:686:in `catch'
	 8: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:687:in `block (2 levels) in default_terminator'
	 7: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
	 6: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:445:in `block in make_lambda'
	 5: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/callbacks.rb:445:in `instance_exec'
	 4: from /home/mike/discourse/config/initializers/002-freedom_patches.rb:9:in `block in <main>'
	 3: from /home/mike/discourse/config/initializers/002-freedom_patches.rb:9:in `each'
	 2: from /home/mike/discourse/config/initializers/002-freedom_patches.rb:11:in `block (2 levels) in <main>'
	 1: from /home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:31:in `require'
/home/mike/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/zeitwerk-2.6.6/lib/zeitwerk/loader/callbacks.rb:25:in `on_file_autoloaded': ожидалось, что файл /home/mike/discourse/lib/freedom_patches/copy_file.rb определит константу FreedomPatches::CopyFile, но этого не произошло (Zeitwerk::NameError)

Просто делаю бесстыдный «ап»… Потому что скоро мне предстоит выполнить две новые миграции phpBB (пропагандирую Discourse насколько могу :partying_face:). Спешить совершенно некуда.
Миграции могут подождать даже несколько месяцев или чуть больше, но если у вас появятся какие-либо новости по этому вопросу, буду рад :slight_smile:

2 лайка

Что ж, 2022 год был полон оптимизма… :blush: Другие задачи вытеснили этот пункт из моего списка дел, но ситуация проясняется, так что что-то обязательно произойдёт в 2023 году. И, надеюсь, чем скорее, тем лучше. :crossed_fingers:

3 лайка

Я только что выполнил импорт phpBB для форума, который, как я полагаю, был версии 3.3. Импорт прошел успешно (за исключением плагина Solved, который они использовали, и некоторых тегов [tex2], которые нужно заменить на $$, но я ожидал, что они не сработают). Если у вас нет огромного форума (25 тысяч пользователей и около 300 тысяч сообщений заняли 17 часов на не слишком быстром оборудовании), вы можете просто попробовать.

4 лайка

Конечно, спасибо за информацию!
Но меня очень интересуют внесённые изменения. Я бы с удовольствием посмотрел код и увидел, как он работает, так как у меня пока нет конкретной даты для миграции :slight_smile:

1 лайк

Привет, я новичок здесь, так что извините за глупый вопрос:

Что именно должен содержать параметр site_name в файле settings.yml? Я не понимаю, что здесь требуется. У меня возникла такая ошибка:

Начинается импорт phpBB3...

/var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:49:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)

      @site_name = import_settings["site_name"]
                                  ^^^^^^^^^^^^^
	from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:11:in `new'
	from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:11:in `load'
	from script/import_scripts/phpbb3.rb:20:in `<module:PhpBB3>'
	from script/import_scripts/phpbb3.rb:16:in `<module:ImportScripts>'
	from script/import_scripts/phpbb3.rb:15:in `<main>'

Я пытаюсь импортировать только один форум (phpBB версии 3.3.8). Когда я оставляю это поле пустым или ввожу что-то вроде ‘first’ или ‘domain.com’ и т.д., ошибка всё равно возникает.
Спасибо за вашу помощь и терпение.

Укажите там что угодно. Даже пустую строку.

Тогда, вероятно, вы где-то указываете значение не в том месте или допустили опечатку.

2 лайка

Спасибо за ваш ответ. Я создал файл settings.yml заново, скопировал исходный код с GitHub, и теперь всё работает как по маслу :+1:

3 лайка

20 сообщений были перенесены в новую тему: Миграция с phpbb (история установленных версий: 3.2.1 - 3.2.8) с базой данных PostgreSQL

Оказалось, что это не так. Планируется ли их переделать в скрипты типа bulk_import? Есть ли у вас новая оценка того, как может выглядеть этот график?

3 лайка

Да, это примерно тот план. К сожалению, я не могу сказать, когда это будет выпущено, так как в данный момент это не является приоритетом номер один, но мы планируем улучшить импорт в ближайшие 6–12 месяцев. Я надеюсь, что к тому времени появится что-то пригодное для использования.

3 лайка

Пулл-реквест с ещё одним простым улучшением. Вложения phpbb имеют текстовый комментарий, который отображается под вложением в сообщении.

Я добавил поддержку этой функции. Теперь в Discourse комментарий отображается курсивом под изображением.

4 лайка