basercms勉強会@福岡 vol.12

25
baserCMS 勉勉勉 勉勉 vol.12 MailSavePrevent ププププププ ププ 2014/08/30 arata

Upload: arata

Post on 12-Jun-2015

232 views

Category:

Software


1 download

DESCRIPTION

baserCms勉強会@福岡 vol.12のLTでお話したスライドです。

TRANSCRIPT

Page 1: baserCms勉強会@福岡 vol.12

baserCMS 勉強会

@福岡 vol.12MailSavePrevent プラグインの紹介

2014/08/30  @ arata

Page 2: baserCms勉強会@福岡 vol.12

■Twitter @ arata■http://www.materializing.net/  の中のひと■ ウェブ制作 ウェブシステム開発に 携わってます。■ 好物は珈琲 ~■D と CMS

http://www.materializing.net/

自己紹介

Page 3: baserCms勉強会@福岡 vol.12

baserCMSのプラグイン作りがとっても好き &#9829

CMS

http://www.materializing.net/

Page 4: baserCms勉強会@福岡 vol.12

今回やってみたこと

MailSavePreventプラグイン作成

http://www.materializing.net/

※ 読み:メールセーブプリベント

Page 5: baserCms勉強会@福岡 vol.12

こんな感じ

メールフォームから送信された内容を保存しないようにする。

http://www.materializing.net/

Page 6: baserCms勉強会@福岡 vol.12

自分に課してみた点

■ メールフォーム別に、 受信データを保存しない設定ができる■ メールフォーム基本設定画面で 設定を切替えることができる■ 設定一覧画面を用意して、 メールフォーム別に、 設定を簡単に切替えることができる

http://www.materializing.net/

Page 7: baserCms勉強会@福岡 vol.12

自分に課してみた点

■ メールフォーム別に、 受信データを保存しない設定ができる■ メールフォーム基本設定画面で 設定を切替えることができる■ 設定一覧画面を用意して、 メールフォーム別に、 設定を簡単に切替えることができる

http://www.materializing.net/

Page 8: baserCms勉強会@福岡 vol.12

仕組み

1. ユーザーがメールフォームに入力して 送信する2. 送信された内容は、 メールフォーム別の専用テーブルに 保存される3. 通知メールが送信される

http://www.materializing.net/

Page 9: baserCms勉強会@福岡 vol.12

仕組み

1. ユーザーがメールフォームに入力して 送信する!!NEW!! ここでイベント処理で保存防止!2. 送信された内容は、 メールフォーム別の専用テーブルに 保存される3. 通知メールが送信される

http://www.materializing.net/

Page 10: baserCms勉強会@福岡 vol.12

やる事一覧

■CakeEvent : beforeSave() 使って保存しないようにする

/app/Plugin/MailSavePrevent/Event/MailSavePreventModelEventListener.phpに beforeSave() 処理の作成

http://www.materializing.net/

Page 11: baserCms勉強会@福岡 vol.12

以上の作業で終了

マジ簡単!!勝った!!おらやったどー!

\ (^o^)/

さすが baser やで!!http://www.materializing.net/

Page 12: baserCms勉強会@福岡 vol.12

動作結果

できませんでしたorz

http://www.materializing.net/

Page 13: baserCms勉強会@福岡 vol.12

問題点

■CakeEvent : beforeSave() 使って保存しないようにする → 無慈悲なエラー!!

【入力エラーです】入力内容を確認して再度送信してください。

http://www.materializing.net/

(^ ω ^ # )

Page 14: baserCms勉強会@福岡 vol.12

調査■ /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/

Page 15: baserCms勉強会@福岡 vol.12

調査■ /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/

Page 16: baserCms勉強会@福岡 vol.12

解決策

■CakeEvent : afterSave() 使って保存された送信データを削除 → これで勝つる!!

丶 ( ゚∀゚ ) ノhttp://www.materializing.net/

Page 17: baserCms勉強会@福岡 vol.12

動作結果 2

できましたε= \ _○ ノ ヒャッホーウ !!

http://www.materializing.net/

Page 18: baserCms勉強会@福岡 vol.12

どんな感じ?■/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/

Page 19: baserCms勉強会@福岡 vol.12

ドヤ顔で社内に自慢

丶 ( ゚∀゚ ) ノ

「みんなー! メールフォームのデータを保存しない プラグインつくったよー!!! これでプライバシー考慮できるよ!」 → やったどー!!

http://www.materializing.net/

Page 20: baserCms勉強会@福岡 vol.12

再び問題点

A 「名前がわかりづらい!」B 「ぷりべんとって一般的ですか?」C 「なんて読むの?」D 「うーん、どうでしょう?」

【審議中】 ( ´ ・ ω) (´ ・ ω ・ ) ( ・ ω ・` ) (ω ・` )

http://www.materializing.net/

Page 21: baserCms勉強会@福岡 vol.12

重大なバグ

大不評※ ネーミングセンス無

し( つ Д ` )

http://www.materializing.net/

Page 22: baserCms勉強会@福岡 vol.12

畳み掛ける一言

「それ コアに実装予定

 だよ」∑( ゚∇゚ |||)

http://www.materializing.net/

Page 23: baserCms勉強会@福岡 vol.12

プラグイン作りは楽しい

・・・こんな感じで、■ コアに手を入れず動作を変える■ コミュニケーション■ コードレビューの機会■ そもそも作るのすきですしおすし

・・・楽しく作りました。

http://www.materializing.net/

Page 24: baserCms勉強会@福岡 vol.12

github にて公開中

■ ソースコードhttps://github.com/materializing/MailSavePrevent

http://www.materializing.net/

Page 25: baserCms勉強会@福岡 vol.12

おしまい

ご清聴ありがとうございました。

http://www.materializing.net/

楽しく作って baser マーケットで公開しましょう!http://barket.jp/