0: - no date -  |
現: 2026-08-13 (木) 08:56:06 なーお  |
| | + | * ImageBoard(v.1.2) --> d3forum インポートに挑戦! [#t26e056a] |
| | | | |
| | + | ** 履歴 [#t479e868] |
| | + | - 2009/04/15 初版公開 |
| | + | |
| | + | ** 概要 [#c0738c49] |
| | + | |
| | + | 「ImageBoard」 ・・ Perlで書かれたツリー表示式のcgi掲示板で、[[特報くらぶダウンロードセンター>http://www.big.or.jp/~talk/t-club/soft/mini_r6/]]で配布されている。 |
| | + | |
| | + | 古いログ形式(レスできないやつ)しかインポートできませんが、一応公開しておきます。 |
| | + | |
| | + | なお、毎度のお約束ですが、小生のスキルはそれほど高くありませんので、不具合が出る可能性があります。 &font(Red){いきなり本番環境で実行するのはもってのほか};。私でもやりません(笑) まずはテスト環境で実行してみて、続いて本番環境に d3forumの複製フォーラムを作ってそこにインポートしてみるなどして、問題なければ本番モジュールで実行して下さい。 |
| | + | |
| | + | *** 特徴 [#j1cbeb6f] |
| | + | 特徴というほどでもありませんが、 |
| | + | + d3forumに既にある記事はそのままで、インポート可能 |
| | + | + 取り込み先フォーラムの選択 |
| | + | + 投稿者名でツリーを自動作成、選択インポート |
| | + | 同一ツリーには最大10件の投稿まで。 それ以降は別ツリーになります。 |
| | + | + インポート済みのツリーは自動スキップ |
| | + | (このため、同トピックにインポート後に付いた返信は、インポートできません) |
| | + | + ImageBoard用は画像の自動リンクを維持 |
| | + | |
| | + | などなど。 |
| | + | |
| | + | *** 動作環境 [#b04ecbdb] |
| | + | PHP5 (PHP4で動くかどうかわかりません) |
| | + | mysql5 (mysql4で動くかどうかわかりません) |
| | + | xoops-2.0.16a-JP、 XOOPS_Cube_Legacy-2.1.6 (それ以前でも動くと思います) |
| | + | d3forum-0.85 (それ以前でも動くと思います) |
| | + | ImageBoard(v.1.2)のログ。 |
| | + | 以降のバージョンではログ形式が変わっているため、おそらく使えないと思います。 |
| | + | |
| | + | ** 準備 [#s1c45344] |
| | + | |
| | + | *** d3forumモジュール [#idf66e54] |
| | + | |
| | + | まず、d3forumの最新版をインストールします。 :-D |
| | + | 当方、d3forum-0.85で動作確認しました。 最新版でなくても動作すると思いますが、未検証です。 また、最初にカテゴリの作成と権限設定、取り込み先フォーラムの作成と権限設定までは行っておいてください。 |
| | + | |
| | + | 続いて、スクリプト1つと、 カスタムテンプレート1つを準備します。 |
| | + | |
| | + | *** スクリプト import_imgboard.php [#fcdcf87c] |
| | + | |
| | + | 以下のzipファイルをダウンロードし、解凍後、(trust_path)/modules/d3forum/main/ ディレクトリ内にアップロードします。 文字コード「EUC-JP」で保存してありますので、UTF-8などで運用中の方は、ファイルの文字コード変換を行ってください。(コメントだけなので、変換しなくても動作するかもしれません。) &font(Green){変換先の文字コード設定と、元記事の記事番号を追記するかどうかの設定};が、スクリプトの冒頭にありますので、必要に応じて設定します。 |
| | + | |
| | + | |ダンロードはこちら -> &ref(import_imgboard.zip);(zip)| |
| | + | |
| | + | なお、サーバー負荷の上昇を抑えるため、記事単位でインポート直後のトピック同期処理は初期設定では「不使用」としていて、インポート後に管理画面で同期が必要です。 サーバー能力に余裕があって大丈夫と判断する場合は、import_imgboard.php 内の冒頭の、以下の記述を変更することで、記事1件ごとにsync動作が入るようになります。(お勧めはできません) |
| | + | |
| | + | #code(php,1-){{ |
| | + | $sync_each_post = false ; |
| | + | // ↓ 書き換え |
| | + | $sync_each_post = true ; |
| | + | }} |
| | + | |
| | + | *** テンプレート _custom_webforum2_d3forum.html [#r65b29e2] |
| | + | Altsysの「テンプレート管理」-「カスタムテンプレート」で、以下のコードを「_custom_webforum2_d3forum.html」として作成します。 (テンプレート中「webforum」となっている部分は、気になる場合は適宜書き換えて下さい。 そのままでも動作上は問題ありません。 なお、テンプレート名を変更してはいけません。) |
| | + | |
| | + | #code(html,1-){{ |
| | + | <h2>webforumログ -> d3forumインポート</h2> |
| | + | |
| | + | <{* あなたのuid=<{$wf2d3f_uid}><br /> *}> |
| | + | <{if $wf2d3f_isadmin}> |
| | + | 実行権限:OK |
| | + | <form name="MainForm" action="./index.php?page=<{$wf2d3f_actionname}>" method="post"> |
| | + | <{if $wf2d3f_step==0}> |
| | + | <{if count($wf2d3f_logfiles)>0 }> |
| | + | インポート元:wforumのログファイル名: |
| | + | <select name="wf_fileid"> |
| | + | <{foreach item=logfile from=$wf2d3f_logfiles}> |
| | + | <option value=<{$logfile.num}>><{$logfile.filename}></option> |
| | + | <{/foreach}> |
| | + | </select><br /> |
| | + | <{/if}> |
| | + | <{if count($wf2d3f_forums)>0 }> |
| | + | インポート先:d3forumフォーラム: |
| | + | <select name="forum_id"> |
| | + | <{foreach item=forum from=$wf2d3f_forums}> |
| | + | <option value=<{$forum.forum_id}>><{$forum.forum_title}></option> |
| | + | <{/foreach}> |
| | + | </select><br /> |
| | + | <{/if}> |
| | + | <{elseif $wf2d3f_step==1}> |
| | + | webforumのログファイル名:<{$wf2d3f_wf_filename}> から |
| | + | d3forumのフォーラム名:<{$wf2d3f_forum_title}> に、以下の中から選択スレッドをインポートします。<br /> |
| | + | <table class="outer"> |
| | + | <tbody border="1"><tr><th align="center">選択<br /><input type='checkbox' title='この縦一列のチェックボックスすべてをON/OFFします' onclick="with(document.MainForm){for(i=0;i<length;i++){if(elements[i].type=='checkbox'&&elements[i].name.indexOf('wf2d3f_thread')>=0){elements[i].checked=this.checked;}}}" />全選択/解除</th> |
| | + | <th align="center">No</th><th align="center">スレッド</th><th align="center">トピ開始日時</th></tr> |
| | + | <{foreach key=num item=thread from=$wf2d3f_threads}> |
| | + | <tr class="<{cycle values='odd,even'}>"><td align="center"><input type="checkbox" name="wf2d3f_thread[<{$num}>]" value="<{$thread.thread_id}>" /></td><td><{$thread.thread_id}></td><td><{$thread.title}></td><td align="center"><{$thread.post_time|date_format:"%Y年%m月%d日 %H時%M分"}></td></tr> |
| | + | <{/foreach}> |
| | + | </table> |
| | + | よろしければ「送信」してください。<br /> |
| | + | <input type=hidden name="forum_title" value=<{$wf2d3f_forum_title}> /> |
| | + | <input type=hidden name="forum_id" value=<{$wf2d3f_forum_id}> /> |
| | + | <input type=hidden name="wf_topic_id" value=<{$wf2d3f_wf_topic_id}> /> |
| | + | <input type=hidden name="wf_fileid" value=<{$wf2d3f_file_id}> /> |
| | + | <{elseif $wf2d3f_step==2}> |
| | + | インポートが完了しました。<br /> |
| | + | 最初のページに戻るには下のボタンで送信してください。<br /> |
| | + | <{/if}> |
| | + | <input type=hidden name="page" value="<{$wf2d3f_actionname}>" /> |
| | + | <input type=hidden name="step" value="<{$wf2d3f_step_next}>" /> |
| | + | <input type=submit value="送信" /> |
| | + | </form> |
| | + | <br /> |
| | + | <{else}> |
| | + | 実行権限:NG |
| | + | 権限がありません。 |
| | + | <{/if}> |
| | + | }} |
| | + | |
| | + | *** ログファイル [#ndb2cda0] |
| | + | インポートするログファイルは、サーバーの文字コードに変換するなりして、 (trust_path)/modules/d3forum/main/log/ フォルダを作成して、その中に放り込みます。 このフォルダを変更する場合は、スクリプト内の記述も変更してください。 |
| | + | |
| | + | ** 実行 [#j571e4f9] |
| | + | *** ログファイル・フォーラム選択 [#yd3a8586] |
| | + | 管理者でログインし、以下のアドレス(実際のサイトに応じて読み替え)にアクセスします。 |
| | + | |
| | + | /modules/(d3forum)/index.php?page=import_imgboard |
| | + | |
| | + | 下記のようにインポート元ログファイルと、先d3forumのフォーラムリストが出ますので、それぞれ選択して「送信」を押します。 |
| | + | |
| | + | |&ref(wf2d3f_1.gif,mw:300,mh:300);| |
| | + | |
| | + | *** スレッド選択 [#y7c22c1a] |
| | + | 続いて、選択したログから、投稿者別のスレッド一覧(d3forumで言うトピックに当たる)が表示されます。 「全て」選択すると、記事数によってはサーバーにかなりの負荷がかかりますので、適宜様子を見ながら、少しずつインポートすることをお勧めします。 選択後、「送信」ボタンで実際にインポートが行われます。 |
| | + | |
| | + | |&ref(wf2d3f_2.gif,mw:300,mh:300);| |
| | + | |
| | + | *** インポート完了 [#g63e208a] |
| | + | インポートが完了しました。 「送信」を押すと、最初の画面に戻ります。 |
| | + | |&ref(wf2d3f_3.gif,mw:300,mh:300);| |
| | + | |
| | + | *** ImgBoardの画像リンク [#f0c363ae] |
| | + | 以下のように画像への自動リンクも維持されます。 投稿者名毎にツリーが作られます。 |
| | + | |
| | + | |&ref(imb2d3f_4.jpg,mw:300,mh:300);| |
| | + | |
| | + | *** 同期処理 [#k47bb9b8] |
| | + | 全てのインポートが終了したら、管理画面に入り、d3forumの「冗長情報の同期」の「トピック」を実行してください。 その後、念のため「フォーラム」「カテゴリ」も同期処理を行ってください。 |
| | + | |
| | + | *** 権限設定 [#ub1f61be] |
| | + | 各掲示板の権限設定など、必要に応じて行ってください。 |
| | + | |
| | + | *** スクリプトの削除 [#c3ebc53b] |
| | + | インポート作業が完了したら、セキュリティホールになりえるかも知れませんので&font(Red){、必ずサーバー上からスクリプトを削除してください};。 |
| | + | |
| | + | ** 謝辞 [#q7219937] |
| | + | このスクリプトの作成・公開にあたり、d3forumのコードを参考にさせていただき、ました。 作者のGIJOE氏に、御礼申し上げます。 |
| | + | |
| | + | 特に、d3forumのほうは一部「transact_functions.php」などのソースincludeさせていただきました。 この中の「d3forum_sync_topic」プロシジャが無かったら、すんなり行かなかったと思います。 |