Page Top

履歴 anchor.png

  • 2009/05/06 初版公開
Page Top

概要 anchor.png

 XOOPS-JOYFULもどき(YYBBS-0.59改) ・・ 元々、KENT氏によるcgi掲示板を、minahito氏によりxoops用掲示板モジュールにコンバートされたものを、更にhodaka氏が画像アップロード可能なようにハックしたバージョン。 要望があったので、d3forumへのインポートをトライしてみました。

  • アイコンのインポートは未実装です。
  • 画像アップロードハック版ではなく、minahito氏オリジナル版も、インポート可能なはずです。

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

Page Top

特徴 anchor.png

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

  1. d3forumに既にある記事はそのままで、インポート可能
  2. 親記事・レス記事構造の維持
  3. フォーラムの自動作成
     (YYBBSの掲示板名と同名で作成。作成先カテゴリを選択可能。)
  4. トピック(親記事)単位で選択インポート
  5. インポート済みのトピックは自動スキップ
     (このため、同トピックにインポート後に付いた返信は、インポートできません)

などなど。

Page Top

動作環境 anchor.png

PHP5 (PHP4で動くかどうかわかりません)
mysql5  (mysql4.0でも、たぶん動くと思います)
XOOPS_Cube_Legacy-2.1.6 (xoops-2.0.16a-JPでも動くと思います)
d3forum-0.85 (それ以前でも動くと思います)
XOOPS-JOYFULもどき(YYBBS-0.59改)-0.59.9.4

Page Top

準備 anchor.png

Page Top

d3forumモジュール anchor.png

 まず、d3forumの最新版をインストールします。 :-D
当方、d3forum-0.85で動作確認しました。 最新版でなくても動作すると思いますが、未検証です。

 また、最初にカテゴリの作成と権限設定までは行っておいてください。 各フォーラムは、スクリプトによってカテゴリ内に自動的にYYBBSの各トピックと同じ名称で作られます。 (フォーラムの権限はカテゴリの権限を引き継ぎます。)

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

Page Top

スクリプト import_yybbs.php anchor.png

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

ダウンロードはこちら −> fileimport_yybbs_0.1a.zip(zip)

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

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

 また、画像表示の仕方や文字色を反映するかどうかなど、スクリプト中の37〜59行目を編集して下さい。

Page Top

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

Altsysの「テンプレート管理」−「カスタムテンプレート」で、以下のコードを「_custom_yybbs4_d3forum.html」として作成します。

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
52
53
54
55
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<h2>YYBBS −> d3forumインポート</h2>
 
<{* あなたのuid=<{$bl4d3f_uid}><br /> *}>
<{if $bl4d3f_isadmin}>
実行権限:OK
    <form name="MainForm" action="./index.php?page=import_yybbs" method="post">
  <{if $bl4d3f_step==0}>
    <{if count($bl4d3f_bl_topics)>0 }>
        YYBBSの掲示板名:
        <select name="bl_topic_id">
        <{foreach item=topic from=$bl4d3f_bl_topics}>
        <option value=<{$topic.topic_id}>><{$topic.topic_name}></option>
        <{/foreach}>
        </select><br />
    <{/if}>
     <{if count($bl4d3f_categories)>0 }>
        インポート先d3forumカテゴリ
        <select name="cat_id">
        <{foreach item=category from=$bl4d3f_categories}>
        <option value=<{$category.id}>><{$category.title}></option>
        <{/foreach}>
        </select><br />
    <{/if}>
  <{elseif $bl4d3f_step==1}>
    <{if $bl4d3f_forum_created}>
        d3forumのカテゴリ「<{$bl4d3f_cat_title}>」に、フォーラム「<{$bl4d3f_forum_title}>」を作成しました。<br />
    <{else}>
        d3forumのカテゴリ「<{$bl4d3f_cat_title}>」に、既存フォーラム「<{$bl4d3f_forum_title}>」が存在しました。<br />
    <{/if}>
        YYBBSの掲示板名:<{$bl4d3f_forum_title}> から
        d3forumのフォーラム名:<{$bl4d3f_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('bl4d3f_thread')>=0){elements[i].checked=this.checked;}}}" />全選択/解除</th><th align="center">スレッド</th><th align="center">トピ開始日時</th></tr>
        <{foreach key=num item=thread from=$bl4d3f_threads}>
        <tr class="<{cycle values='odd,even'}>"><td align="center"><input type="checkbox" name="bl4d3f_thread[<{$num}>]" value="<{$thread.id}>" /></td><td><{$thread.title}></td><td align="center"><{$thread.inputdate|date_format:"%Y年%m月%d日 %H時%M分"}></td></tr>
        <{/foreach}>
        </table>
        よろしければ「送信」してください。<br />
    <input type=hidden name="cat_title" value=<{$bl4d3f_cat_title}> />
    <input type=hidden name="cat_id" value=<{$bl4d3f_cat_id}> />
    <input type=hidden name="forum_title" value=<{$bl4d3f_forum_title}> />
    <input type=hidden name="forum_id" value=<{$bl4d3f_forum_id}> />
    <input type=hidden name="bl_topic_id" value=<{$bl4d3f_bl_topic_id}> />
  <{elseif $bl4d3f_step==2}>
        インポートが完了しました。<br />
        最初のページに戻るには下のボタンで送信してください。<br />
  <{/if}>
    <input type=hidden name="page" value="import_yybbs" />
    <input type=hidden name="step" value=<{$bl4d3f_step_next}> />
    <input type=submit value="送信" />
    </form>
<br />
<{else}>
実行権限:NG
権限がありません。
<{/if}>
Page Top

実行 anchor.png

Page Top

フォーラム・カテゴリ選択 anchor.png

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

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

下記のようにエクスポート元YYBBSのトピリスト(d3forumで言うフォーラムに当たる)、インポート先d3forumのカテゴリリストが出ますので、それぞれ選択して「送信」を押します。

yybbs2_d3f_1.jpg
Page Top

スレッド選択 anchor.png

 インポート先d3forumのカテゴリにフォーラムが作成されました。(作成済みの場合は新たに作られず、作成済みのフォーラムがこの後のインポート先になります。)

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

yybbs2_d3f_2.jpg
Page Top

インポート完了 anchor.png

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

yybbs2_d3f_3.jpg
Page Top

同期処理 anchor.png

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

Page Top

権限設定 anchor.png

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

Page Top

スクリプトの削除 anchor.png

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

Page Top

結果 anchor.png

 添付画像のサムネイル表示・リンクとも、うまくインポートされているようです。

yybbs2_d3f_4.jpg
Page Top

謝辞 anchor.png

 このスクリプトの作成・公開にあたり、YYBBS、d3forumのコードを参考にさせていただき、ました。 作者のKENT氏、minahito氏、hodaka氏、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: 1686, today: 1, yesterday: 5
Princeps date: 2009-05-06 (Wed) 15:36:04
Last-modified: 2009-05-06 (Wed) 17:22:22 (JST) (1108d) by なーお
OpenIDログイン

mixi Yahoo! JAPAN BIGLOBE Google エキサイト


この記事を共有

メインメニュー