Changeset 20357


Ignore:
Timestamp:
2011/02/23 21:52:41 (13 years ago)
Author:
fukuda
Message:

#963 [管理画面]メルマガ管理リファクタリング

Location:
branches/version-2_5-dev/data
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/Smarty/templates/admin/mail/history.tpl

    r20269 r20357  
    5959            <td> 
    6060                <!--{if $arrDataList[cnt].count_error >= 1 || $arrDataList[cnt].count_unsent >= 1}--> 
    61                     <a href="sendmail.php?mode=now&amp;send_id=<!--{$arrDataList[cnt].send_id|h}-->&amp;retry=yes" onclick="return window.confirm('未配信と配信失敗となった宛先に再送信を試みますか?');">実行</a> 
     61                    <a href="index.php?mode=retry&amp;send_id=<!--{$arrDataList[cnt].send_id|h}-->" onclick="return window.confirm('未配信と配信失敗となった宛先に再送信を試みますか?');">実行</a> 
    6262                <!--{/if}--> 
    6363            </td> 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_Mail.php

    r20306 r20357  
    330330     
    331331    /** 
    332      * 保存されているメールテンプレートの取得 
     332     * 保存されているメルマガテンプレートの取得 
    333333     * @param integer 特定IDのテンプレートを取り出したい時はtemplate_idを指定。未指定時は全件取得 
    334334     * @return array メールテンプレート情報を格納した配列 
    335335     * @todo   表示順も引数で変更できるように 
    336336     */ 
    337     function sfGetMailTemplate($template_id = null){ 
     337    function sfGetMailmagaTemplate($template_id = null){ 
    338338        // 初期化 
    339339        $where = ''; 
     
    357357     
    358358    /** 
    359      * 保存されている送信履歴の取得 
     359     * 保存されているメルマガ送信履歴の取得 
    360360     * @param integer 特定の送信履歴を取り出したい時はsend_idを指定。未指定時は全件取得 
    361361     * @return array 送信履歴情報を格納した配列 
     
    382382        return $arrResults; 
    383383    } 
     384 
     385    /** 
     386     * 指定したIDのメルマガ配送を行う 
     387     *  
     388     * @param integer $send_id dtb_send_history の情報 
     389     * @return boolean true:成功 false:失敗 
     390     */ 
     391    function sfSendMailmagazine($send_id) { 
     392        $objQuery =& SC_Query::getSingletonInstance(); 
     393        $objDb = new SC_Helper_DB_Ex(); 
     394        $objSite = $objDb->sfGetBasisData(); 
     395        $objMail = new SC_SendMail_Ex(); 
     396         
     397        $where = 'del_flg = 0 AND send_id = ?'; 
     398        $arrMail = $objQuery->getRow('*', 'dtb_send_history', $where, array($send_id)); 
     399 
     400        // 対象となる$send_idが見つからない 
     401        if (SC_Utils_Ex::isBlank($arrMail)) return false; 
     402 
     403        // 送信先リストの取得 
     404        $arrDestinationList = $objQuery->select( 
     405            '*', 
     406            'dtb_send_customer', 
     407            'send_id = ? AND (send_flag = 2 OR send_flag IS NULL)', 
     408            array($send_id) 
     409        ); 
     410         
     411        // 現在の配信数 
     412        $complete_count = $arrMail['complete_count']; 
     413        if(SC_Utils_Ex::isBlank($arrMail)) $complete_count = 0; 
     414         
     415        foreach ($arrDestinationList as $arrDestination) { 
     416 
     417            // 顧客名の変換 
     418            $customerName = trim($arrDestination["name"]); 
     419            $subjectBody = ereg_replace("{name}", $customerName, $arrMail["subject"]); 
     420            $mailBody = ereg_replace("{name}", $customerName, $arrMail["body"]); 
     421 
     422            $objMail->setItem( 
     423                $arrDestination["email"], 
     424                $subjectBody, 
     425                $mailBody, 
     426                $objSite->data["email03"],      // 送信元メールアドレス 
     427                $objSite->data["shop_name"],    // 送信元名 
     428                $objSite->data["email03"],      // reply_to 
     429                $objSite->data["email04"],      // return_path 
     430                $objSite->data["email04"]       // errors_to 
     431            ); 
     432 
     433            // テキストメール配信の場合 
     434            if ($arrMail["mail_method"] == 2) { 
     435                $sendResut = $objMail->sendMail(); 
     436            // HTMLメール配信の場合 
     437            } else { 
     438                $sendResut = $objMail->sendHtmlMail(); 
     439            } 
     440 
     441            // 送信完了なら1、失敗なら2をメール送信結果フラグとしてDBに挿入 
     442            if (!$sendResut) { 
     443                $sendFlag = '2'; 
     444            } else { 
     445                // 完了を 1 増やす 
     446                $sendFlag = '1'; 
     447                $complete_count++; 
     448            } 
     449             
     450            // 送信結果情報を更新 
     451            $objQuery->update('dtb_send_customer', 
     452                              array('send_flag'=>$sendFlag), 
     453                              'send_id = ? AND customer_id = ?', 
     454                              array($send_id,$arrDestination["customer_id"])); 
     455        } 
     456 
     457        // メール全件送信完了後の処理 
     458        $completeSql = "UPDATE dtb_send_history SET end_date = now(), complete_count = ? WHERE send_id = ?"; 
     459        $objQuery->query($completeSql, array($complete_count, $send_id)); 
     460 
     461        // 送信完了 報告メール 
     462        $compSubject = date("Y年m月d日H時i分") . "  下記メールの配信が完了しました。"; 
     463        // 管理者宛に変更 
     464        $objMail->setTo($objSite->data["email03"]); 
     465        $objMail->setSubject($compSubject); 
     466 
     467        // テキストメール配信の場合 
     468        if ($arrMail["mail_method"] == 2 ) { 
     469            $sendResut = $objMail->sendMail(); 
     470        // HTMLメール配信の場合 
     471        } else { 
     472            $sendResut = $objMail->sendHtmlMail(); 
     473        } 
     474        return true; 
     475    } 
    384476} 
    385477?> 
  • branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail.php

    r20345 r20357  
    7272         
    7373        // テンプレート一覧設定 
    74         $this->arrTemplate = $this->lfGetMailTemplateList(SC_Helper_Mail_Ex::sfGetMailTemplate()); 
     74        $this->arrTemplate = $this->lfGetMailTemplateList(SC_Helper_Mail_Ex::sfGetMailmagaTemplate()); 
    7575         
    7676        $this->httpCacheControl('nocache'); 
     
    143143            $this->arrErr = $objFormParam->checkError(); 
    144144            if (SC_Utils_Ex::isBlank($this->arrErr)){ 
    145                 $this->lfRegisterData($objFormParam); 
    146145                $this->tpl_mainpage = 'mail/index.tpl'; 
    147                 //SC_Helper_Mail_Ex::hogehoge();  //送信処理 
    148                 $this->tpl_onload = "window.alert('メール送信が完了しました。配信履歴画面から確認してください。');"; 
    149             } 
    150             break; 
    151         // query:配信履歴「確認」 
     146                SC_Helper_Mail_Ex::sfSendMailmagazine($this->lfRegisterData($objFormParam));  // DB登録・送信 
     147                SC_Response_Ex::sendRedirect("./history.php"); 
     148            } 
     149            break; 
     150        // query:配信履歴から「確認」 
    152151        case 'query': 
    153152            if (SC_Utils_Ex::sfIsInt($_GET["send_id"])) { 
     
    156155            $this->setTemplate('mail/query.tpl'); 
    157156            break; 
     157        // query:配信履歴から「再送信」 
     158        case 'retry': 
     159            if (SC_Utils_Ex::sfIsInt($_GET["send_id"])) { 
     160                SC_Helper_Mail_Ex::sfSendMailmagazine($_GET['send_id']);  // DB登録・送信 
     161                SC_Response_Ex::sendRedirect("./history.php"); 
     162            } else { 
     163                $this->tpl_onload = "window.alert('メール送信IDが正しくありません');"; 
     164            } 
    158165        default: 
    159166            break; 
     
    199206     
    200207    /** 
    201      * テンプレート一覧情報の取得 
    202      * 
    203      * @param array $arrTemplate SC_Helper_Mail_Ex::sfGetMailTemplate()の戻り値 
     208     * メルマガテンプレート一覧情報の取得 
     209     * 
     210     * @param array $arrTemplate SC_Helper_Mail_Ex::sfGetMailmagaTemplate()の戻り値 
    204211     * @return array key:template_id value:サブジェクト【配信形式】  
    205212     */ 
     
    231238     * 配信内容と配信リストを書き込む 
    232239     * 
    233      * @return string 登録した行の dtb_send_history.send_id の値 
     240     * @return integer 登録した行の dtb_send_history.send_id の値 
    234241     */ 
    235242    function lfRegisterData(&$objFormParam){ 
     
    263270            } 
    264271        } 
     272        return $send_id; 
    265273    } 
    266274     
  • branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_History.php

    r20345 r20357  
    7070        switch ($this->getMode()) { 
    7171        case 'delete': 
    72             if (SC_Utils_Ex::sfIsInt($send_id)) { 
     72            if (SC_Utils_Ex::sfIsInt($_GET['send_id'])) { 
    7373                // 削除時 
    7474                $this->lfDeleteHistory($_GET['send_id']); 
  • branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_Preview.php

    r20345 r20357  
    6969        case 'template': 
    7070            if (SC_Utils_Ex::sfIsInt($_GET['template_id'])){ 
    71                 $arrMail = $objMailHelper->sfGetMailTemplate($_GET['template_id']); 
     71                $arrMail = $objMailHelper->sfGetMailmagaTemplate($_GET['template_id']); 
    7272                $this->mail = $arrMail[0]; 
    7373            } 
  • branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_Template.php

    r20345 r20357  
    8282            break; 
    8383        } 
    84         $this->arrTemplates = $objMailHelper->sfGetMailTemplate(); 
     84        $this->arrTemplates = $objMailHelper->sfGetMailmagaTemplate(); 
    8585    } 
    8686 
  • branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_TemplateInput.php

    r20345 r20357  
    7676            // 編集 
    7777            if ( SC_Utils_Ex::sfIsInt($_GET['template_id'])===true ){ 
    78                 $arrMail = $objMailHelper->sfGetMailTemplate($_GET['template_id']); 
     78                $arrMail = $objMailHelper->sfGetMailmagaTemplate($_GET['template_id']); 
    7979                $this->arrForm = $arrMail[0]; 
    8080            } 
Note: See TracChangeset for help on using the changeset viewer.