SerendipityをCMSとして使うためのプラグイン(その1)

2007/03/24 | SNS/CMS/ブログ

最近MovableTypeにはまり気味だが、思いとどまってSerendipityにも少し力を入れてみる。MovableTypeは個人利用では1ライセンス無料で利用できるけど、それ以外は有料。やっぱり余計なところに気を遣わないでいい(ライセンス問題)、オープンソースなSerendipityをうまく活用したい。
ということで、CMS利用で使えそうなプラグイン(および使える)をピックアップしてみることにする。

○アナウンスエントリ一覧(Announce entries)
 更新pingを送信するため。「ping」という言葉が説明にも出てこないので、わかりにくい・・・。
○カテゴリの割り当て(Category Assignment)
 記事に複数のカテゴリを割り当てる。記事を多面的に検索できるので便利。
○Post via XML-RPC
 XML-RPC経由でブログを操作する。外部ライブラリを作る際に便利。
○お問い合わせフォーム(Contact Form)
 メールフォームを設置できる。
○よくある質問と回答(Frequently Asked Question)
 FAQを作成できる。
○GuestBook
 掲示板を設置できる。
○Newsbox
○Start Page Category
 トップページに特定カテゴリの記事一覧を表示できる。

その他、気がついたときに逐次・・・。

metaweblog.newPostでMTにタグを渡す

2007/03/22 | XML

だんだんPHPの話題から遠のきそうなので、XMLに記事を投稿。
MovableTypeにXML-RPCを使って記事を投稿する際に「タグ」も送信できないか、と思案してみた。公式のマニュアルを見ても、そのような記述はないから半ばあきらめてはいたのだが・・・(「追記」や「概要」などは送ることができる)。Perlのソースまで読んでしまった。

そしたらありました「mt_tags」。
これをtitleやdescriptionに追加して送信すればいいみたい。複数のタグを送りたいときはカンマ区切りで。

カスタムValidation(メアドが入力された場合のみ書式チェック)

2007/03/21 | cakePHP

cakePHPに限ったネタではないのだが、メアドの書式チェックについてメモ。
とあるクライアントから入力フォームのメアドは任意入力の項目としてほしい、という依頼があった。単にvalidationをはずしてもいいのだが、後々活用できそうなので、試行錯誤してみた。

cakePHPでは”VALID_EMAIL”と指定することでメールアドレスの書式チェックをしてくれるが、未入力でもエラーになってしまう。よってこれを「未入力はOKで、かつ入力された場合のみ書式チェック」というふうに書き換える。

/(¥¥A(?:^([a-z0-9][a-z0-9_¥¥-¥¥.¥¥+]*)@([a-z0-9][a-z0-9¥¥.¥¥-]{0,63}¥¥.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)¥¥z)/i

デフォルトはこのような正規表現になっている。正規表現は苦手なのだが、なんとなく雰囲気で以下のように書き換えた。

/(¥¥A(?:^([a-z0-9][a-z0-9_¥¥-¥¥.¥¥+]*)@([a-z0-9][a-z0-9¥¥.¥¥-]{0,63}¥¥.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)¥¥z)|(¥¥A¥¥z)/i

うしろに”|(¥¥A¥¥z)”をつけただけ。なんとも安直だが、とりあえずこれで動いているのでよしとする。

validation機能が貧弱

2007/03/20 | cakePHP

ウェブのプログラミングとユーザからの入力は切り離せない。というかプログラミングって「ユーザから与えられたデータを適切に処理する」ということが基本だ(何を今更・・・)。
ユーザから与えられた(例えばフォームで入力された)値をチェックするのは基本中の基本だが、実はcakePHP、バージョン1.1ではこの機能(validationという)が貧弱だ。cakePHPのコード中で関係ある記述は以下の部分のみ。

(cakePHPインストールディレクトリ)/cake/libs/validators.php

ファイルの中身を見れば一目瞭然だが正規表現のみ、だ。しかも設定してあるのは4つだけ。自分で作らなければいけないわけね(例えばメールアドレスのチェックでVALID_EMAILを指定すると、書式のチェックはいいとして、必然的に必須となってしまう)。
ウェブをいろいろあさっていて見つけたが、どうもバージョン1.2からvalidation機能が強化されるらしい。バージョン1.2の機能を1.1に組み込むことにチャレンジしていらっしゃる方もいるようだが、今回はそこまでチャレンジしない。最低限の正規表現だけ、考えてみることにする。

カスタマイズしたとしても、cakePHPのコアファイル(cakeディレクトリ以下)は基本的に変更とか追加とかしたくない。アプリケーション用ディレクトリ(app/)以下に配置したいのだが、こういうのはどこにおけばいいんだろう。お作法がよくわからない。そもそも設定ファイルをおかない、というスタンスがあるせいか、自分で書いたスクリプトに関しても設定ファイル配置のためのお作法というのがどこにも書いてない。
どうせ書くなら、誰が見てもわかるように書きたいのだけれど・・・。お作法がまだまだしっかりしていないのだろうか。まぁ、まだできて間もないものだから、やむをえない面ではあるのだが・・・。

外部と通信する際に設定しておきたい項目

2007/03/19 | PHPの基本

マッシュアップという言葉のせいではないけれど、外部のサービスと連携することが多くなった。また連携する、ということでなくても、外部の情報をとってくる、という機会が多い。そんなときにこの設定は有効だ。

ini_set(‘default_socket_timeout’,10);

これで接続に10秒以上かかれば、通信をやめてくれる。

外部の情報を以下のように取得する場合、

$html=file_get_contents(‘http://www.hoge.com’);

通信状態とか相手のサーバの込み具合にもよるけれど、すぐに応答がない場合がある。そんなときは上記で設定した秒数が過ぎると接続をあきらめてくれる。つまり「できれば取得したいけれど、出来なければやむをえない」というルーチンを組み込む場合には最適な設定だ。


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