Serendipityのプラグインを作る
仕事でSerendipityを使っている(使い始めた)。しかしまだブログツールの領域は出ていない(ポータルにまでは至らない)。それでも、素人さんのクライアントさんにはこの程度でも十分な場合も多い。
今回Serendipityで作っているサイトに認証機能を導入することになった。正確には、認証そのものは前から必要だった。しかしそれは単に.htaccessからBASIC認証するだけだった。今回はケータイからでも一部閲覧できるようにする必要があり、かつ閲覧ONLY(記事投稿権限なし)な人もいるので、諸般カスタマイズして作ることにした。
SerendipityにはプラグインでBASIC認証を組み込むものが用意されている(HTTP-Authentication)。他にLDAP認証できるプラグインもあるが、別途LDAP環境を構築する必要があるのでこちらはNG。今回はHTTP-Authenticationをカスタマイズして作っていくことにした。
■仕様
○SerendipityのAuthorとは別管理(テーブルを別途作成)
○テーブルに保存するデータ(ユーザ情報)は別機能で作成(こちらはcakePHPで)
○ログイン時に投稿権限があるかどうかチェックし、権限がある場合は自動的にSerendipityのAuthorログイン情報も取得して同時にログイン
つまり別テーブルでユーザ管理し、特定のユーザには別途権限を持たせ、そのユーザがログインしたときには、Serendipityの管理画面にも自動でログインさせる、ということになる。
まだまだ諸般作りこみは必要だが(ソースを修正しないとちょっと無理)、動くレベルにはなってくれた。そこでプラグインを作るときに必要になりそうなことを、現在わかっている範囲でメモしておく(基本的な書式については割愛し、「これ何だろ」と思ったところだけメモ)。
○function introspect()
基本情報(作者とかバージョンとか)をセットするための関数かな。
○function introspect_config_item()
プラグインで、ユーザに情報を登録されその情報に基づいてプラグインを動作させる場合に、管理画面に入力画面を表示させるわけだが、その画面を作成する際に使う。管理画面で入力された情報はデータベース内のserendipity_configというテーブルに書き込まれる。
ちなみに書き込まれた情報を呼び出すときは「$this->get_config(変数名)」などとして取り出す。
これだけを理解できればいいのかな、と思う。後は追加したい機能に類似したプラグインを探し、それをハックするのが手っ取り早い。最初から作る場合は・・・もう少し勉強は必要。