Author: | Shogo Kawahara <Twitter: @ooharabucyou> |
---|---|
Date: | 2010-12-19 |
OpenPNE3にはメールを受信する機能が備わっています。
今回は、メールを受信する機能を活用して、メールからの投稿を 受け付ける処理を記述しましょう。
メールの受信についての処理は、 mobile_mail_frontend というアプリケーションで取り扱います。
opGenerate:app タスクを利用して、プラグインに mobile_mail_frontend のスケルトンを作成しましょう。
$ cd $openpne_dir
$ php symfony opGenerate:app opSamplePlugin mobile_mail_frontend
mobile_mail_frontend にモジュールのスケルトンも作成します。
$ php symfony opGenerate::module opSamplePlugin mobile_mail_frontend miniDiary
受信したメールを処理するためのアクションを作成します。
mobile_mail_frontend アクションの miniDiary にアクションを記述します。
$your_plugin_dir/apps/mobile_mail_frontend/modules/miniDiary/actions/actions.class.php
<?php
class miniDiaryActions extends sfActions
{
public function executeCreate(sfWebRequest $request)
{
$member = $this->getRoute()->getMember();
if (!$member)
{
return sfView::NONE;
}
// $request->getMailMessage() でメールの本文を取得
$mailMessage = $request->getMailMessage();
$validator = new opValidatorString(array('rtrim' => true));
try
{
$body = $validator->clean($mailMessage->getContent());
}
catch (Exception $e)
{
return sfView::NONE;
}
$miniDiary = new MiniDiary();
$miniDiary->setBody($body0;
$miniDiary->save();
return sfView::NONE;
}
}
OpenPNE3は、メールアドレスを元に、どのアクションを利用するべきかを決定します。
この仕組みは、symfonyのルーティングを活用しています。 routing.yml でメールアドレスのパターンとアクションを対応付けします。
$your_plugin_dir/apps/mobile_mail_frontend/config/routing.yml
mail_mini_diary_create:
url: mini.d # メールアドレスのパターン指定
class: opMailRoute # classにはopMailRouteを指定してください。
param: { module: miniDiary, action: create } # アクションを指定します
op_mail_to() ヘルパー関数を利用します。
<?php echo op_mail_to('mail_mini_diary_create', array(), 'メールから投稿') ?>
明日は、メンバーの設定変更の拡張について取り扱います。