LoginSignup
1
0

More than 5 years have passed since last update.

EC-CUBE 2.13.5で、会員が登録内容を変更した時にメール送信するカスタマイズを書いてみた

Last updated at Posted at 2015-12-01

あらまし

ユーザが会員登録情報を変更した時に、確認の意味も込めて完了メールを送りたい。
ついでに会員登録情報が変更されたことを管理者側で検知したい。

ぐぐってみたところ情報が古い上に怪しく、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}--> 様

オケオケオッケー
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0