Upload
arata
View
234
Download
1
Embed Size (px)
DESCRIPTION
baserCms勉強会@福岡 vol.12のLTでお話したスライドです。
Citation preview
baserCMS 勉強会
@福岡 vol.12MailSavePrevent プラグインの紹介
2014/08/30 @ arata
■Twitter @ arata■http://www.materializing.net/ の中のひと■ ウェブ制作 ウェブシステム開発に 携わってます。■ 好物は珈琲 ~■D と CMS
http://www.materializing.net/
自己紹介
baserCMSのプラグイン作りがとっても好き ♥
CMS
http://www.materializing.net/
今回やってみたこと
MailSavePreventプラグイン作成
http://www.materializing.net/
※ 読み:メールセーブプリベント
こんな感じ
メールフォームから送信された内容を保存しないようにする。
http://www.materializing.net/
自分に課してみた点
■ メールフォーム別に、 受信データを保存しない設定ができる■ メールフォーム基本設定画面で 設定を切替えることができる■ 設定一覧画面を用意して、 メールフォーム別に、 設定を簡単に切替えることができる
http://www.materializing.net/
自分に課してみた点
■ メールフォーム別に、 受信データを保存しない設定ができる■ メールフォーム基本設定画面で 設定を切替えることができる■ 設定一覧画面を用意して、 メールフォーム別に、 設定を簡単に切替えることができる
http://www.materializing.net/
仕組み
1. ユーザーがメールフォームに入力して 送信する2. 送信された内容は、 メールフォーム別の専用テーブルに 保存される3. 通知メールが送信される
http://www.materializing.net/
仕組み
1. ユーザーがメールフォームに入力して 送信する!!NEW!! ここでイベント処理で保存防止!2. 送信された内容は、 メールフォーム別の専用テーブルに 保存される3. 通知メールが送信される
http://www.materializing.net/
やる事一覧
■CakeEvent : beforeSave() 使って保存しないようにする
/app/Plugin/MailSavePrevent/Event/MailSavePreventModelEventListener.phpに beforeSave() 処理の作成
http://www.materializing.net/
以上の作業で終了
マジ簡単!!勝った!!おらやったどー!
\ (^o^)/
さすが baser やで!!http://www.materializing.net/
動作結果
できませんでしたorz
http://www.materializing.net/
問題点
■CakeEvent : beforeSave() 使って保存しないようにする → 無慈悲なエラー!!
【入力エラーです】入力内容を確認して再度送信してください。
http://www.materializing.net/
(^ ω ^ # )
調査■ /lib/Baser/Plugin/Mail/Controller/MailController.php
if ($this->Message->validates()) {// validation OKif ($this->Message->save(null, false)) {
// 〜省略〜$this->_sendEmail();
} else {$this->setMessage(' 【送信エラーです】 ');// 〜省略〜
}// 〜省略〜
http://www.materializing.net/
調査■ /lib/Baser/Plugin/Mail/Controller/MailController.php
if ($this->Message->validates()) {// validation OKif ($this->Message->save(null, false)) {
// 〜省略〜$this->_sendEmail();
} else {$this->setMessage(' 【送信エラーです】 ');// 〜省略〜
}// 〜省略〜
送信メッセージが保存されない場合エラー扱いになる仕組みとなっている。
http://www.materializing.net/
解決策
■CakeEvent : afterSave() 使って保存された送信データを削除 → これで勝つる!!
丶 ( ゚∀゚ ) ノhttp://www.materializing.net/
動作結果 2
できましたε= \ _○ ノ ヒャッホーウ !!
http://www.materializing.net/
どんな感じ?■/app/Plugin/MailSavePrevent/Event /MailSavePreventModelEventListener.php
public function messageAfterSave(CakeEvent $event) {
$Model = $event->subject();// 直前に登録されたデータの削除$Model->delete($Model->id);
}
実際の内容は github でちぇけら!丶 ( ゚∀゚ )ノ
https://github.com/materializing/MailSavePrevent/blob/master/Event/MailSavePreventModelEventListener.php
http://www.materializing.net/
ドヤ顔で社内に自慢
丶 ( ゚∀゚ ) ノ
「みんなー! メールフォームのデータを保存しない プラグインつくったよー!!! これでプライバシー考慮できるよ!」 → やったどー!!
http://www.materializing.net/
再び問題点
A 「名前がわかりづらい!」B 「ぷりべんとって一般的ですか?」C 「なんて読むの?」D 「うーん、どうでしょう?」
【審議中】 ( ´ ・ ω) (´ ・ ω ・ ) ( ・ ω ・` ) (ω ・` )
http://www.materializing.net/
重大なバグ
大不評※ ネーミングセンス無
し( つ Д ` )
http://www.materializing.net/
畳み掛ける一言
「それ コアに実装予定
だよ」∑( ゚∇゚ |||)
http://www.materializing.net/
プラグイン作りは楽しい
・・・こんな感じで、■ コアに手を入れず動作を変える■ コミュニケーション■ コードレビューの機会■ そもそも作るのすきですしおすし
・・・楽しく作りました。
http://www.materializing.net/
github にて公開中
■ ソースコードhttps://github.com/materializing/MailSavePrevent
http://www.materializing.net/
おしまい
ご清聴ありがとうございました。
http://www.materializing.net/
楽しく作って baser マーケットで公開しましょう!http://barket.jp/