あらまし
ユーザが会員登録情報を変更した時に、確認の意味も込めて完了メールを送りたい。
ついでに会員登録情報が変更されたことを管理者側で検知したい。
ぐぐってみたところ情報が古い上に怪しく、EC-CUBEの挙動を参考に書くことに。
当方の環境ではカスタマイズする可能性のあるものを
全てgit管理している(上に深く考えていない、merge上等)為、
差分が見やすいLC_Page_Mypage_Change.php に直接記述している。
人or運用ルールによっては、下記を編集する方がいいだろう。
{root}/data/class_extends/page_extends/mypage/LC_Page_Mypage_Change_Ex.php
追加
{root}/data/class/pages/mypage/LC_Page_Mypage_Change.php
130行目に以下。
class LC_Page_Mypage_Change の function action()の処理にて、
後述する自作関数lfSendChangeMailに渡す。
// 会員登録と完了画面
case 'complete':
$this->arrErr = SC_Helper_Customer_Ex::sfCustomerMypageErrorCheck($objFormParam);
// 入力エラーなし
if (empty($this->arrErr)) {
// 会員情報の登録
$this->lfRegistCustomerData($objFormParam, $customer_id);
/** ここから追加 **/
// 関数に渡す情報を揃える
$objDb = new SC_Helper_DB_Ex();
$CONF = $objDb->sfGetBasisData();
$c_name = filter_input(INPUT_POST, 'name01') . filter_input(INPUT_POST, 'name02');
// 会員情報変更のお知らせを送信
// 他の処理ではPOSTをfilter_inputでラップしてないあたり修羅の国やでぇ
$this->lfSendChangeMail($CONF, filter_input(INPUT_POST, 'email'), $c_name);
/** ここまで追加 **/
//セッション情報を最新の状態に更新する
$objCustomer->updateSession();
// 完了ページに移動させる。
SC_Response_Ex::sendRedirect('change_complete.php');
}
break;
同じく、194行目に以下。
class LC_Page_Mypage_Changeの末尾に関数を追加。
/**
* 登録内容変更お知らせメールを送信する。
*
* @param array $CONF 店舗基本情報の配列
* @param string $email 送信先メールアドレス
* @param string $customer_name 送信先氏名
* @return void
*
*/
public function lfSendChangeMail(&$CONF, $email, $customer_name)
{
// 変更お知らせメール送信
$objMailText = new SC_SiteView_Ex(false);
$objMailText->setPage($this);
$objMailText->assign('customer_name', $customer_name);
$toCustomerMail = $objMailText->fetch('mail_templates/mypage_change.tpl');
$objHelperMail = new SC_Helper_Mail_Ex();
$objHelperMail->setPage($this);
// メール送信オブジェクトによる送信処理
$objMail = new SC_SendMail_Ex();
$objMail->setItem(
'', //宛先
$objHelperMail->sfMakeSubject('登録内容を変更するのもアイカツ!だね!'),
$toCustomerMail, //本文
$CONF['email03'], //配送元アドレス
$CONF['shop_name'], // 配送元名
$CONF['email03'], // reply to
$CONF['email04'], //return_path
$CONF['email04'], // errors_to
$CONF['email01'] // Bcc
);
$objMail->setTo($email, $customer_name . ' 様');
$objMail->sendMail();
return;
}
{使用中のテンプレートパス}/mail_templates/mypage_change.tpl を作成。
<!--{$customer_name}--> 様
オケオケオッケー