Markdown также должен работать, но, думаю, использование <strong> может обойти ещё больше крайних случаев. Обратите внимание, что смешивание HTML и Markdown тоже имеет свои подводные камни… Вот простое решение на Markdown:
**multiline\
\
text**
Мне интересно, из какой версии phpBB вы импортируете? Конвертация BBCode в Markdown значительно лучше в версии 3.2 по сравнению с предыдущими. В идеале вы больше не должны видеть [b] в импортированных сообщениях.
Я думал об этом в самом начале, но… я ненавижу компьютерные дела
Я плохо знаком с phpBB и не хотел брать на себя ответственность за любые ошибки, которые могли бы возникнуть при обновлении с такой старой версии.
Поскольку скрипт миграции в Discourse совместим с phpBB 3.0, я решил не обновлять phpBB…
Возможно, некоторые проблемы с bbcode, с которыми я столкнулся, удалось бы избежать при обновлении phpBB. Такие вещи, как вложенные списки, [b] с переносами строк и т. д…
Но так как я начал работу над импортом в декабре, я уже почти добился успешного импорта (в идеале новый форум будет запущен примерно через две недели…), и я не уверен, что хочу сейчас экспериментировать с обновлением phpBB, особенно если мне придётся пересматривать все мои кастомные исправления импорта, чтобы проверить, справляется ли импортер phpBB 3.2 с этими вещами лучше . Это займёт много времени.
Тем не менее… я мог бы поэкспериментировать с этим в выходные во второй половине дня, если мне будет достаточно скучно!
edit: Я попробовал; переезд на новый сервер и последующее обновление до phpBB 3.2 — это сплошная головная боль. Проблемы с HTTPS. Проблемы с кэшем. Другие проблемы. Запутанные и раздражающие процедуры. Официальная инструкция рекомендует использовать инструменты, требующие устаревшей версии PHP (эй, PHP 5, давно не виделись…). Похоже, иногда мне бывает скучно, но не до безумия — по крайней мере, не настолько, чтобы заниматься подобными вещами.
Герхард! Ты вводишь в заблуждение! Обновление до 3.2 — это не одолжение!
Но хватит говорить о самом phpBB… И восславим одношаговое обновление в Discourse.
Я пытаюсь мигрировать пользователей WordPress в Discourse. Мне удалось следовать инструкциям по подключению к нашей базе данных WordPress и импортировать пользователей в контейнере Docker. Я хочу убедиться, что во время или после миграции не будут отправляться письма, так как мы используем плагин SSO для WordPress.
Я добавил префикс «import_» к адресам электронной почты, чтобы пользователи не получали письма в случае фоновых задач, отправляющих подтверждение по электронной почте после завершения миграции.
Я вижу, что после миграции установлен столбец last_emailed_at:
Я знаю, что он устанавливается с помощью opts[:last_emailed_at] = opts.fetch(:last_emailed_at, Time.now) в функции ImportScripts::Base::create_user().
Существует ли аналогичная функция для admin.email_tokens.update_all(confirmed: true), используемая в ImportScripts::Base::create_admin, которая подтверждает электронную почту?
Я не вижу никаких записей в логах о том, что письма были отправлены. Были ли письма действительно отправлены? Будет ли Discourse пытаться отправлять письма после того, как я изменю адреса на действительные?
Это оффтопик, так как тема посвящена миграции phpBB3…
Если вы хотите гарантировать, что некоторые пользователи никогда не получат письма, рекомендую использовать домен .invalid (например, foo@mywpimport.invalid). Однако, если ваша цель — просто отключить исходящую рассылку до момента готовности, лучший вариант — установить параметр сайта disable_emails в значение «yes» или «non-staff»!
Исходящие письма автоматически отключаются во время импорта. Значения атрибута last_emailed_at, вероятно, возникли из-за попыток Discourse отправить письмо до того, как система обнаружила, что это запрещено.
После завершения миграции Discourse обязательно попытается отправить письма.
Спасибо. Сначала я попробовал пустую строку для поля электронной почты, и базовый класс ImportScript сгенерировал поддельные адреса с недопустимым доменом. У них также установлен атрибут last_emailed_at.
Получается, что как только я исправлю электронную почту в базе данных, Discourse попытается отправить письмо? Но обычный вход через WordPress с аутентификацией не требует подтверждения по электронной почте. Нет ли способа обойти это с помощью ImportScript?
Я сталкиваюсь с этой проблемой во многих постах. Есть ли у вас идея, как исправить это глобально?
Как и на многих старых форумах, ссылки на Imageshack уже давно и навсегда перестали работать. Однако некоторые ссылки теперь отображают флаг Украины вместо пустоты:
Я открыт для любых идей, но администратор форума имеет статическую резервную копию всего форума на старом жестком диске, где большинство старых изображений корректны (поскольку они были загружены и сохранены локально). Я думаю, что в будущем могу написать скрипт, который заменит все «мертвые» ссылки Imageshack на корректные изображения из статической копии. Это кажется очень сложной задачей, но именно поэтому я не уверен, что хочу просто удалить все ссылки Imageshack с форума, заменив их на пустую строку или что-то подобное.
Думаю, проблема именно в переносе строки. Вам нужно перенастроить эти BB-коды, чтобы убрать перенос строки. Статья Replace a string in all posts может помочь.
Может быть, пока преобразовать их в HTML-комментарии? Позже их можно будет заменить на сохранённые изображения.
Да, отличная идея! То есть, по сути, заменять строки (из темы, на которую вы дали ссылку) с помощью регулярных выражений, чтобы нацеливаться только на ссылки Imageshack, верно?
Я попробовал перекомпилировать сообщение с битыми изображениями (которые корректно отображаются в предпросмотре сообщения, см. моё предыдущее сообщение), но это ничего не исправило.
Насколько мне известно, исходное содержимое обоих сообщений абсолютно одинаково.
Это происходило в режиме safe-mode, когда все темы и плагины были отключены, но в этом блоке кода на первой строке упоминается: plugins/discourse-chat/lib/guardian_extensions.rb:71:in 'can_rebake?'
Предупреждение:
Failed to handle exception in exception app middleware : ArgumentError : wrong number of arguments (given 0, expected 1)
Помогут ли эти данные?
Я делаю всё возможное, чтобы попытаться исправить эти сообщения, но начинаю полагать, что проблема связана с самим Discourse, а не с моими настройками?
edit: см. автоматически связанное сообщение ниже.
Проблема решена:
Теперь мне осталось только пересобрать все мои сообщения.
Ещё одно редактирование:
Это наверняка могло бы сработать, и сработает для изображений, у которых всё ещё есть старые прямые URL-адреса, но:
Поскольку все старые нерабочие ссылки на Imageshack были заменены действительными изображениями с флагом Украины, которые отображаются самим Imageshack, они были автоматически загружены в Discourse, изменив свой URL на локальную ссылку на изображение в формате Markdown.
К счастью, все эти флаги были загружены в Discourse с идентичными ссылками ( в моём случае — отличное поведение Discourse, кстати ), что означает, что их будет очень легко найти и удалить/заменить чем-то другим.
Я просто пишу это, чтобы проинформировать людей, которые столкнутся с той же проблемой, что и я, после миграции.
Похоже, значение poll_option_total иногда некорректно. Я вижу больше неанонимных голосов за вариант, чем значение poll_option_total. И все эти пользователи существуют.
Использование GREATEST(..., 0) исправляет это. По крайней мере, теперь это не вызывает сбоев.
SELECT o.poll_option_id, o.poll_option_text, o.poll_option_total AS total_votes,
GREATEST(CAST(o.poll_option_total AS SIGNED) - (
SELECT COUNT(DISTINCT v.vote_user_id)
FROM #{@table_prefix}poll_votes v
JOIN #{@table_prefix}users u ON (v.vote_user_id = u.user_id)
JOIN #{@table_prefix}topics t ON (v.topic_id = t.topic_id)
WHERE v.poll_option_id = o.poll_option_id AND v.topic_id = o.topic_id
),0) AS anonymous_votes
FROM #{@table_prefix}poll_options o
WHERE o.topic_id = #{topic_id}
ORDER BY o.poll_option_id
Если мне стоит создать новую тему для этого, приношу извинения заранее.
У меня есть phpBB-форум в подпапке:
thedomain.com/forum/
Я планирую использовать скрипт импорта для миграции с phpBB на Discourse в поддомене, то есть:
forum.thedomain.com
Похоже, всё, что мне нужно будет сделать для домена и постоянных ссылок, — это установить следующее в settings.yml, используя HTTPS на новом сайте:
site_prefix:
# это необходимо для переписывания внутренних ссылок в постах
original: thdomain.com/forum # без http(s)://
new: https://forum.thedomain.com # с http:// или https://
# Включите это, если хотите перенаправлять старые ссылки форума на новые места.
permalinks:
categories: true # перенаправление /viewforum.php?f=1 на /c/category-name
topics: true # перенаправление /viewtopic.php?f=6&t=43 на /t/topic-name/81
posts: true # перенаправление /viewtopic.php?p=2455#p2455 на /t/topic-name/81/4
# Добавьте префикс к каждому типу ссылки, например 'forum', чтобы перенаправлять /forum/viewtopic.php?f=6&t=43 на /t/topic-name/81
# Оставьте пустым, если ваш форум был установлен не в подпапке.
prefix: forum
А затем на исходном сервере, где работает Apache, в файле .htaccess, где RewriteEngine уже включён, мне понадобится:
Если всё действительно так просто, этот скрипт — просто супер!
У меня есть ещё несколько дополнительных вопросов:
В настройках постоянных ссылок для постов установлено значение “false”. Я знаю, что в интернете есть ссылки на конкретные посты, поэтому хотел бы, чтобы они тоже имели постоянные ссылки. Есть ли какая-то причина не устанавливать их в true, например, проблемы с производительностью или что-то подобное?
Подходит ли префикс без одинарных кавычек, или его следует заключить в кавычки, как в комментарии?
Я столкнулся с трудностью при подготовке к этому импорту.
Форум phpBB, который я планирую мигрировать, использует кастомный BB-код, который создаёт HTML-теги <img> для изображений, хранящихся в папках по годам в директории вне phpBB, но на той же учётной записи сервера. Формат BB-кода следующий:
Здесь {NUMBER1} и {NUMBER2} — целые числа, обозначающие ширину и высоту изображения соответственно. {NUMBER3} — целое число, указывающее на папку года, в которой находится изображение, а {SIMPLETEXT} — имя файла изображения. Замена этого BB-кода на HTML выглядит так:
Мне нужно понять, как обработать этот кастомный BB-код в скрипте миграции: как преобразовать его в формат, понятный Discourse, и где разместить файлы изображений в файловой структуре для импорта.
Я изучил библиотеку Ruby-BBcode-to-MD, которая, как утверждается, «позволяет легко расширять этот набор кастомными тегами, редактируя файл tags.rb». Я посмотрел на tags.rb, но поскольку это мой первый опыт работы с кодом на Ruby, я не знаю, как справиться с моим кастомным BB-кодом, так как его формат с разделителями в виде вертикальных черт отличается от любого официального BB-кода, включённого в файл tags.rb, который мог бы послужить мне ориентиром.
У меня ещё не загружен файл templates/import/phpbb3.template.yml, поэтому я предполагаю, что именно он добавляет gem Ruby BBcode to MD?
Итак, у меня есть вопросы:
Какой лучший способ обработать этот кастомный BB-код при миграции? Стоит ли редактировать файл tags.rb? (Если да, то я проведу исследование по программированию на Ruby и, возможно, регулярным выражениям, но любые подсказки будут приветствоваться!)
Где лучше всего разместить файлы изображений для этой галереи в файловой структуре импорта, чтобы они были сохранены в Discourse и отображались в импортированных сообщениях?