MyBB merge (1.6.10) 不具合

MyBB merge (1.6.10) で見つけた不具合についてのメモ+α。いずれもphpBB 3.0からのマージで起きるもの。

BBcodeのlistが閉じられない

BBcodeで黒丸リスト(番号つきでないリスト、つまり[list])を使っている場合に閉じコードが [/list:u] となってしまい、インポートしたMyBBではリストが正常に表示できない。

原因

phpBBがデータベースに記事を保存する際、BBcodeを内部的に[/list:u]と変換しているが、それをインポート時にMyCodeに変換していないため。正しくは[/list]に置き換えるべき。

対策

merge/boards/phpbb3/bbcode_parser.phpを次のように変更。

ベタ書きURLが勝手にHTMLに書き換わる

原因

記事内にBBcodeを使わずにベタで書かれたURLは、phpBBのデータベースでは次のように置き換えて保存されるているが、インポート時にこれをテキストに戻す際の正規表現に不具合があり、正しく戻せていないため。

本来は次のようにHTMLを取り除いてインポートすべき。

対策

merge/boards/phpbb3/bbcode_parser.phpを次のように変更。

インライン表示した添付ファイルが置き換わらない

原因

phpBBではBBcodeで添付ファイルを指定する際、添付ファイルIDではなく、記事への添付順に0から割り当てる相対IDを使用する。MyCodeでは記事内IDを持たず添付ファイルIDを使用するため、IDを書き換えないと不整合が起きて表示ができない。

対策

これは面倒くさい…。

MyBBのマージツールに手を加える方法だと改造量が大きくなりそうなので、インポート完了後にスクリプトを動かす方法で対処する。

次のPHPスクリプトを作成し、PHPコマンドに食わせて実行する。(データベースにMySQLを使用している場合。MySQLiやSQLiteなど別のデータベースを使っている場合はデータベース関数部分の書き換えが必要。)

ユーザの表示タイトルを所属グループにしたい

勝手にユーザタイトルが設定されているので、これを所属グループに一括変換したい場合。ユーザの表示グループをプライマリグループに変更し、グループの表示タイトルをグループ名にする。

管理者CPのツール&メンテナンス>キャッシュマネージャで、ユーザグループとユーザタイトルのキャッシュを再構築しておく。