Page Top

履歴 anchor.png

  • 2009/04/15 初版公開
Page Top

概要 anchor.png

 「ImageBoard」 ・・ Perlで書かれたツリー表示式のcgi掲示板で、特報くらぶダウンロードセンターで配布されている。

 古いログ形式(レスできないやつ)しかインポートできませんが、一応公開しておきます。

 なお、毎度のお約束ですが、小生のスキルはそれほど高くありませんので、不具合が出る可能性があります。 いきなり本番環境で実行するのはもってのほか。私でもやりません(笑) まずはテスト環境で実行してみて、続いて本番環境に d3forumの複製フォーラムを作ってそこにインポートしてみるなどして、問題なければ本番モジュールで実行して下さい。

Page Top

特徴 anchor.png

特徴というほどでもありませんが、

  1. d3forumに既にある記事はそのままで、インポート可能
  2. 取り込み先フォーラムの選択
  3. 投稿者名でツリーを自動作成、選択インポート
     同一ツリーには最大10件の投稿まで。 それ以降は別ツリーになります。
  4. インポート済みのツリーは自動スキップ
     (このため、同トピックにインポート後に付いた返信は、インポートできません)
  5. ImageBoard用は画像の自動リンクを維持

などなど。

Page Top

動作環境 anchor.png

PHP5 (PHP4で動くかどうかわかりません)
mysql5  (mysql4で動くかどうかわかりません)
xoops-2.0.16a-JP、 XOOPS_Cube_Legacy-2.1.6 (それ以前でも動くと思います)
d3forum-0.85 (それ以前でも動くと思います)
ImageBoard(v.1.2)のログ。
 以降のバージョンではログ形式が変わっているため、おそらく使えないと思います。

Page Top

準備 anchor.png

Page Top

d3forumモジュール anchor.png

 まず、d3forumの最新版をインストールします。 :-D
当方、d3forum-0.85で動作確認しました。 最新版でなくても動作すると思いますが、未検証です。 また、最初にカテゴリの作成と権限設定、取り込み先フォーラムの作成と権限設定までは行っておいてください。

続いて、スクリプト1つと、 カスタムテンプレート1つを準備します。

Page Top

スクリプト import_imgboard.php anchor.png

 以下のzipファイルをダウンロードし、解凍後、(trust_path)/modules/d3forum/main/ ディレクトリ内にアップロードします。 文字コード「EUC-JP」で保存してありますので、UTF-8などで運用中の方は、ファイルの文字コード変換を行ってください。(コメントだけなので、変換しなくても動作するかもしれません。) 変換先の文字コード設定と、元記事の記事番号を追記するかどうかの設定が、スクリプトの冒頭にありますので、必要に応じて設定します。

ダンロードはこちら -> fileimport_imgboard.zip(zip)

 なお、サーバー負荷の上昇を抑えるため、記事単位でインポート直後のトピック同期処理は初期設定では「不使用」としていて、インポート後に管理画面で同期が必要です。  サーバー能力に余裕があって大丈夫と判断する場合は、import_imgboard.php 内の冒頭の、以下の記述を変更することで、記事1件ごとにsync動作が入るようになります。(お勧めはできません)

1
2
3
$sync_each_post = false ;
// ↓ 書き換え
$sync_each_post = true ;
Page Top

テンプレート _custom_webforum2_d3forum.html anchor.png

Altsysの「テンプレート管理」-「カスタムテンプレート」で、以下のコードを「_custom_webforum2_d3forum.html」として作成します。 (テンプレート中「webforum」となっている部分は、気になる場合は適宜書き換えて下さい。 そのままでも動作上は問題ありません。 なお、テンプレート名を変更してはいけません。)

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<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}>
Page Top

ログファイル anchor.png

 インポートするログファイルは、サーバーの文字コードに変換するなりして、 (trust_path)/modules/d3forum/main/log/ フォルダを作成して、その中に放り込みます。 このフォルダを変更する場合は、スクリプト内の記述も変更してください。

Page Top

実行 anchor.png

Page Top

ログファイル・フォーラム選択 anchor.png

管理者でログインし、以下のアドレス(実際のサイトに応じて読み替え)にアクセスします。

/modules/(d3forum)/index.php?page=import_imgboard

下記のようにインポート元ログファイルと、先d3forumのフォーラムリストが出ますので、それぞれ選択して「送信」を押します。

wf2d3f_1.gif
Page Top

スレッド選択 anchor.png

 続いて、選択したログから、投稿者別のスレッド一覧(d3forumで言うトピックに当たる)が表示されます。 「全て」選択すると、記事数によってはサーバーにかなりの負荷がかかりますので、適宜様子を見ながら、少しずつインポートすることをお勧めします。 選択後、「送信」ボタンで実際にインポートが行われます。

wf2d3f_2.gif
Page Top

インポート完了 anchor.png

 インポートが完了しました。 「送信」を押すと、最初の画面に戻ります。

wf2d3f_3.gif
Page Top

ImgBoardの画像リンク anchor.png

 以下のように画像への自動リンクも維持されます。 投稿者名毎にツリーが作られます。

imb2d3f_4.jpg
Page Top

同期処理 anchor.png

 全てのインポートが終了したら、管理画面に入り、d3forumの「冗長情報の同期」の「トピック」を実行してください。 その後、念のため「フォーラム」「カテゴリ」も同期処理を行ってください。

Page Top

権限設定 anchor.png

 各掲示板の権限設定など、必要に応じて行ってください。

Page Top

スクリプトの削除 anchor.png

 インポート作業が完了したら、セキュリティホールになりえるかも知れませんので、必ずサーバー上からスクリプトを削除してください

Page Top

謝辞 anchor.png

 このスクリプトの作成・公開にあたり、d3forumのコードを参考にさせていただき、ました。 作者のGIJOE氏に、御礼申し上げます。

 特に、d3forumのほうは一部「transact_functions.php」などのソースincludeさせていただきました。 この中の「d3forum_sync_topic」プロシジャが無かったら、すんなり行かなかったと思います。


Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1234, today: 1, yesterday: 0
Princeps date: 2009-04-15 (Wed) 18:47:04
Last-modified: 2009-04-15 (Wed) 18:53:57 (JST) (23d) by naao