トップ  >  趣味の部屋  >  XOOPSサイト構築  >  インポートScript  >  ImageBoard(1.2) --> d3forum インポート
xoops imageboard d3forum インポート

履歴 anchor.png

  • 2009/04/15 初版公開

概要 anchor.png

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

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

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

特徴 anchor.png

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

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

などなど。

動作環境 anchor.png

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

準備 anchor.png

d3forumモジュール anchor.png

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

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

スクリプト 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 ;

テンプレート _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}>

ログファイル anchor.png

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

実行 anchor.png

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

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

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

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

wf2d3f_1.gif

スレッド選択 anchor.png

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

wf2d3f_2.gif

インポート完了 anchor.png

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

wf2d3f_3.gif

ImgBoardの画像リンク anchor.png

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

imb2d3f_4.jpg

同期処理 anchor.png

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

権限設定 anchor.png

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

スクリプトの削除 anchor.png

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

謝辞 anchor.png

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

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


実体ページ:inc/imgBd_d3f
関連ページ:BluesBB --> d3forum インポートに挑戦
関連ページ:WebForum(cbbs) --?> d3forum インポートに挑戦
関連ページ:YYBBS --> d3forum インポート

プリンタ用画面
投票数:82 平均点:4.63
前
WebForum(cbbs) --> d3forum インポートに挑戦
カテゴリートップ
インポートScript
次
YYBBS --> d3forum インポート

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

ブックマーク