minihakuの拡張その4

2007/07/07 | XOOPS

ユーザ情報の編集は以下のファイルから構成される
・include/config.php
・include/edituserhook.php
・templates/minihaku_edituser.html

設定ファイルとテンプレートはよしとして、プログラム本体「edituserhook.php」を見ていく。
ここでまず最初に知っておく必要がある事項についてメモすることにする。
Xoopsでは初回登録時の入力項目と、編集時の項目とは違う。違うというのは正しくないが、編集時には情報を追加できるのだ(もともと登録しておける項目はたくさんあるが、初回登録時は必要最低限の部分のみ)。

変数名 登録時 編集時 適用
uname ユーザ名
name 本名
email メールアドレス
pass パスワード
vpass パスワード確認用
user_icq ICQアカウント
user_aim AOLメッセンジャーアカウント
user_yim Yahooメッセンジャーアカウント
user_msnm MSNメッセンジャーアカウント
user_from 居住地
user_occ 職業
user_interest 趣味
user_sig 署名
url ホームページ
timezone_offset タイムゾーン
user_viewmail メールアドレスの公開
umode コメント表示モード
uorder コメントの並び順
notify_method イベント更新通知メッセージの受け取り方法
notify_mode イベント通知のタイミング
user_mailok 新着情報の受け取り
bio その他
agree_disk 規約への同意

必要なものもあれば、必要ないものもあるし、決まりきっていて入力してもらう必要もないものもある。いずれにしても処理方法を検討する上で、このリストは重要だ。
ただし編集時に入力する「ユーザ名を1年間クッキーに保存する」という設定。これはDBに保存されない。単にクッキーに保存しておくだけ、ということだろう。

さて、プログラムの行数も多くない。がんばって読んでいくことにする。

minihakuの拡張その3

2007/07/06 | XOOPS

registerhook.phpの登録処理ルーチン付近を見てみることにする(「REGISTER STAGE」から下あたり)。
まず最初のif節。登録フォームでsubmitされたときの処理だ。ここでは入力値のチェックがおこなわれている。チェックする項目はユーザ名とメールアドレス、それにパスワードだ。エラーがあると、そのエラーは変数$stop_reasonにセットされる(後で使う)。
次のif節。ここでは実際の登録処理をおこなう。このif節は登録フォームでsubmitされ、かつ上述の$stop_reasonに値がセットされていないときに処理をする(つまり入力内容にエラーがなかったとき)。ここでは$stop_reason_extrasという変数もチェックしているのだが、これはおそらく追加で設定した項目について、独自にエラーチェックルーチンを書け、ということのようだ。
そして粛々と登録処理があり、$member_handler->insertUser($newuser)で登録が完了する。この時点ではデフォルトの項目のみが登録される。
次に追加で設定した項目データの登録となる。上記登録完了でセットされたuidを取得し、データベースを更新、という形式で登録処理が実行される。
次は自動的に所属させるグループの設定。複数のグループに登録させることが出来る。ここの$auto_belong_groupsはconfig.phpで設定された変数だ。
次が$xoopsConfigUser[‘activation_type’]の設定次第で分岐処理。おそらく「0」は確認メールを送る通常処理、「1」は即時登録、「2」は管理者にアクくティベーションのためのメールを送信する処理だ。
そして最後はユーザ登録のnotifyメールの送信処理となる。

とりあえず全部読めた。次はedituserhook.phpを見ていくとしよう。

minihakuの拡張その2

2007/07/05 | XOOPS

minihakuの拡張、まず「登録」から。
基本的にこれは以下の3ファイルから構成されているようだ。
・include/config.php
・include/registerhook.php
・templates/minihaku_register.html

もちろん設定ファイルの読み込み等があるので、別ファイルも関連するがそれは割愛。上記のうちconfig.phpは、登録フォームで追加すべき項目を設定する(config.dist.phpからrenameして使用)。このファイルはもちろん編集でも使用することになる。
結局このファイルでは、入力項目の設定、入力値のチェック、編集時の初期値をDBから取得、なんて処理が書かれている。手動で作業する場合はこれを編集・追記するわけだ。目指すはここの自動化(もちろんテンプレートも自動的に変更されることを目指す)。
registerhook.phpはプログラムの主要部分。今回は最初ということでフォームの表示部分のみを見ることにする。最初のところは受け取りたい変数の初期化だ。ここも自動化する必要がある。途中の大部分は実際の登録処理なので、とりあえず省略(後日検討)。フォームの表示は最後のほうの「FORM STAGE」以下の部分だ。
最初にheaderを読み込む。次にフォームの情報をセットし、またconfig.phpで追加された情報もここでセットされる。そして最後にfooterの読み込み。それだけ。これをDB化すればいいということになる。まぁ、簡単ではあるが、実際作業するのは多少手間であることは間違いない。
あとはテンプレートminihaku_register.htmlを適宜修正する必要がある。ちなみにminihakuでは、項目名は既存の設定ファイルを流用する形になっている。これではまずいのでここもDB化していくことになる。

今回いろいろ試行錯誤していて覚えたXoopsのお作法。テンプレートファイルを編集しても、それでは直接反映されない。いったんXoopsの管理者権限を取得し、モジュールのアップデートを実行することでようやくテンプレートが反映される。これは、Xoopsのモジュールではテンプレートの内容はDBに書き込まれ、それがコンパイルされてtemplates_cディレクトリに保存されているからだ。なんでそんな面倒なことになっているのかわからないけれど・・・。まずは少しめどがついた。
次回は実際の登録ルーチンを見ていくことにする。

minihakuの拡張その1

2007/07/04 | XOOPS

minihakuの中をよくよく検討しているところ。
構成は大変シンプル。私でもよく理解できた。基本的には以下の構造で開発していく予定。

(1) テーブルは設定用とデータ用で2つ(もしくは設定オプション用も含めて3つ)。
(2) 基本的な機能はすべてminihakuを踏襲。
(3) 設定は全て管理画面から。
(4) テンプレートは、管理画面上のデータ項目の設定が自動的に反映されるように。

たったこれだけだ。minihaku自体がとてもシンプルに出来ているので、カスタマイズも簡単そう。minihakuでは設定ファイルでデータ項目を設定するが、これをデータベースに置き換えればうまくいくし、その設定作業の部分をプログラムで操作してやればよさそう。
テンプレートはループで回してやればうまくいくし、フォーム作成のためのクラスもXoopsではデフォルトで用意されているのでこれを使えばいい(class/xoopsform/)。

いろいろ試しててわかった。minihakuではデータベースの設定、テンプレートの設定、設定ファイルの記述を全て手動でおこなう必要があるのだが、Xoops標準のテンプレート・マネージャからはうまく編集できないような感じ。どうもどこかのタグが悪さをしているようだ。とりあえず、このあたりも考慮して、まずはminihakuのテストを継続してみようと思う。

白扇後継モジュール作成宣言!

2007/06/29 | XOOPS

現在Xoopsのユーザ情報関連のモジュールについては、選択肢として、事実上「ミニ白扇」しかない。ミニ白扇とは、白扇のサブセットモジュールで、GUJOE氏作成の白扇代替モジュールだ。既にsuin氏作成の白扇はその配布を終了しており入手は困難。ということでXoopsでユーザ管理情報をカスタマイズするには「ミニ白扇」しかない状況だ。
ミニ白扇は基本センスとして「わかる人だけわかる」ツールだとか。そのセンスは多いに賛成。自分も近頃はすっかりPHPプログラムと化しているが(本来はプログラマって言われるのが大っ嫌いだけど)、そのセンスには先制する。最近はデバッグもできない教えて君が、気軽に「動かないんですけど」みたいに質問するからね。そういう人はまず質問のお作法を勉強することから始めたほうがいいです、ハイ。
白扇の後継モジュールとして長尾さんが「新扇」の開発を宣言していらっしゃるが、これがなかなか状況が見えない。個人的には「頑張ってぇ」とエールを送ってはいるのだが、仕事で使いたい自分としては、気長に待っているわけにもいかなかったりする。
だから決めた。Xoopsユーザ管理カスタマイズ・白扇の後継モジュールを「かおるん」が作成します。でも面倒なのはいやなので「ミニ白扇」をベースにする。たぶんミニ白扇とアンケートASPの「CubeQuery」のフォーム自動生成を組み合わせれば、絶対にうまく出来るはず!。以下、勢いでロードマップ。

■07月01日開発開始
■09月01日ベータ版作成完了
■11月01日バージョン1.0配布

ただしこの間に新扇がでたら開発は即時中止。基本センスは「本家に対して余計な手出しはしない」ということ。こちらの開発の手間も減るし、車輪の再発明は一番いやだしね。

名前決めなきゃね。「箱扇」にする(理由は・・・普通に人にはわからない)。
このプロジェクトにテスターとして参加してくれる人、コメントから連絡ちょうだい。寄付も募集。寄付してくれた人には、豊富な情報を提供。リクエストもいちおう募集。でも最速リリースを最優先。

さぁ、誰か乗る?。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net