PEAK XOOPS - Duplicatable V3 in englishin japanese

Archive | RSS |
XOOPS
XOOPS : Duplicatable V3
Poster : GIJOE on 2006-05-13 06:13:40 (19037 reads)

in englishin japanese
最初はTinyDという形で、自由にディレクトリ名を決められる、複数インストールができる、という特徴をひっさげて登場したDuplicatable技術ですが、今や一般的になってきました。

ただ、Duplicatable V2.1 は、以下のような弱点を持っています。

1. ディレクトリ名の最後に数字をつける必要がある
モジュール番号を認識するために必要なのですが、このために本当の意味で、「自由なディレクトリ名」とはなっていませんでした。

2. アップデートが大変
複数インストールできる、ということで、TinyDを10も20も入れているサイトがあるようですが、これらのサイトに対して、TinyDをアップデートするとなったら大変です。
すべてのインスタンスについてアップデートしないと、おそらく動作がおかしくなります。


Duplicatable V2.1後、その派生もいくつか出ていて、例えば、templates/やsql/を書き換え可能として、自動的に書き換える、なんてやり方もあります。これであれば、1は解決できますが、今度は2がもっと酷くなります。


ここで登場するのが、Duplicatable V3です。(実はこれ、拙著Customizing XOOPSで、構想は出来ている、とか書いておいたのですが、まったく実装せずに1年も経ってしまいました。)

Duplicatalbe V3 自体、まだ製作途中なのですが、現時点で決まっているのは以下の仕様です。

(1) DocumentRoot外のXOOPS_TRUST_PATHを利用する
(2) XOOPS_ROOT_PATH/modules/下のモジュールディレクトリには基本的にラッパーしか置かない
(3) テンプレートやCREATE TABLEは、onInstallで面倒見る。(XOOPSコアには任せない)
(4) onUpdateで、テンプレートの面倒を見る。
(5) onUninstallで、DROP TABLEを行う。
(6) 管理画面は、?mode=admin という形で処理する


テンプレートやCREATE TABLEを、コアに任せないことで、モジュール番号といった識別子を利用する必要がなくなりました。XOOPS_ROOT_PATH/modules/下に、好きな名前で置くだけです。

複数のモジュールインスタンスが置かれるのは、modules/だけで、しかもここには基本的に中身はありませんから($mydirnameを取得してXOOPS_TRUST_PATH下のメイン処理に渡すだけ)、ほとんど更新の機会がありません。つまり、Duplicatable V3モジュールを10個インストールしていようが、100個インストールしていようが、アップデートするのは、XOOPS_TRUST_PATH内のファイルだけ、となります。

さらにXOOPS_TRUST_PATHを利用することで、直アクセスを想定していないファイルをDocumentRoot外に持ち出すことになります。これはセキュリティ保持上、とても重要です。

これからは、各ファイルの先頭に、


if( ! defined( 'XOOPS_ROOT_PATH' ) ) exit ;

などと書かなくて良いのです!

とりあえず、Duplicatable V3モジュールのサンプルとして、wrapsというモジュールを作ってみました。これはページラップ専用モジュールです。一見すると某au*hと同じ動作ですが、Duplicatable V3モジュールとはどういうものかの良きサンプルになるでしょう。
(一応、XOOPS検索モジュールにだけ対応しておきました)
wraps

なお、上にも書いた通り、Duplicatable V3自体、まだ製作途中であり、ブロック・コメント・コンフィグ・イベント通知・言語ファイルの扱いなどは、ほとんど何も決まっていません。おそらく、これらについては、必要とするモジュールを作る時に同時に実装していくと思います。

また、myblocksadminやmytplsadminなどについても、XOOPS_TRUST_PATHに対応していくことになるでしょう。

ともあれ、今後は、私の手によるモジュールはすべて、このDuplicatable V3に移行していく、という宣言だけしておきます。


Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2006/5/16 16:06
I've just written
kurak_bu  Posted on 2006/5/15 1:41
plz try to write sth in english
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!