第1ステップ・単純な組込
まずは、既存PHPプログラムのXOOPSモジュール化の定石である、単純なモジュール化に着手。
1.初期配置
WebSylpheedのディレクトリーを、XOOPSのmodulesディレクトリ下にディレクトリ毎コピーを行う。
2.XOOPSのヘッダーフッターの組み込み。
htmlページをを生成するPHPプログラムソースを以下の手順で修正する。
1)XOOPSヘッダの組み込み。
対象のPHPファイルを開いて、ページに<html>タグが出力されるロジックよりも前に、
include("../../mainfile.php");
include(XOOPS_ROOT_PATH."/header.php");
OpenTable();
を挿入する。
また、</html>タグが出力されるロジックよりも後に、
CloseTable();
include(XOOPS_ROOT_PATH."/footer.php");
を挿入する。
2)html出力部分の修正。
通常、PHPでhtmlを出力するにあたっては、最低限
<html>
<head><title></title></head>
<body>
表示されるコンテンツ本体
</body></html>
という構造で出力を行うが、XOOPSのモジュールは、上記のコンテンツ本体のみを生成して、その他の
出力はXOOPS本体に任せる事となるため。<html></html><body></body>などを出力している部分を削除する。
3. xoops_vesrion.phpの作成
XOOPSモジュールの情報を記述するファイル、xoops_vesrion.phpを作成する。
今回は最低限のモジュール化なので、以下のようになる。
<?php
$modversion['name'] = 'WebSylpheed';
$modversion['version'] = "0.1";
$modversion['description'] = 'WebSylpheedモジュール';
$modversion['official'] = "no";
$modversion['dirname'] = "websylpheed";
// Admin things
$modversion['hasAdmin'] = 0;
$modversion['adminmenu'] = "";
// Menu
$modversion['hasMain'] = 1;
?>
4.インストール&テスト
ここまでで、最低限の作業が完了したので、XOOPSの管理者メニューでモジュールのインストールを行う。
インストールが終わると、メインメニューにWebSylpheedというのが追加されているはずなので
稼働テストを行う。
5.微調整
おそらく、いろいろな制約から、そのままではきちんと稼働しない場合があるので、症状にしたがって、
修正を行う。
今回のWebSylpheedでは、以下の修正を行う事によって、とりあえず一通りの動作がおこなえる様になった。
- ソースの文字コード変換
-
WebSylpheedは、i-modeでも表示が可能なようにソースもShiftJISでエンコードされていたため、
EUCにコード変換を行った。
- Register Global Off対応
-
WebSylpheedは、元々はPHP3の時代に開発された事もあって、Register Global Off対応が
されていなかった。
よって、そのままでは画面間のパラメータの受け渡しがうまくいかなかったので、HTTP_GET_VARSや
HTTP_POST_VARSなどを使って、パラメータを取得するロジックを追加した。
WebSylpheedの場合には、session.inc.php(元々はsession.lib)の中の先頭部分に、以下のロジックを追加
foreach($HTTP_POST_VARS as $key => $value) {
eval("\$"."$key = \"$value\";");
}
foreach($HTTP_GET_VARS as $key => $value) {
eval("\$"."$key = \"$value\";");
}
6.最終確認
上記修正後、再度稼働テストを行う。
以上で、とりあえずXOOPSの中でWebSylpheedがモジュールとして動くようになった。
今後のToDoとしては、
- メールアカウント情報のDBへの投入と管理
- Adminメニューの追加
- アドレス帳の他のモジュールとの共用化
- 新着メールブロック等の追加
- IMAPフォルダーのキャッシュ保存
- 画面推移のシンプル化(携帯用の為画面展開階層が深い)
- 出力HTMLのCSS対応とSmarty Template化
- 添付ファイル、HTMLメール対応
などを予定している。
(何時になったら出来る事やら・・・・・)
これらが、完了する頃には元のプログラムで生きているのはIMAP関連のロジックだけになっていると思うので
もはや、WebSylpheedとは呼べなくなっていると思う。
参考文献