source: branches/feature-module-update/data/class/helper/SC_Helper_Mail.php @ 16322

Revision 16322, 8.2 KB checked in by naka, 17 years ago (diff)

GC_SendMail→SC_SendMail名称変更

  • Property svn:keywords set to "Id Revision Date"
  • Property svn:mime-type set to text/x-httpd-php; charset=utf-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8/**
9 * メール関連 のヘルパークラス.
10 *
11 * @package Helper
12 * @author LOCKON CO.,LTD.
13 * @version $Id$
14 */
15class SC_Helper_Mail {
16
17    /** メールテンプレートのパス */
18    var $arrMAILTPLPATH;
19
20    /**
21     * コンストラクタ.
22     */
23    function SC_Helper_Mail() {
24        $masterData = new SC_DB_MasterData_Ex();
25        $this->arrMAILTPLPATH =  $masterData->getMasterData("mtb_mail_tpl_path");
26        $this->arrPref = $masterData->getMasterData("mtb_pref",
27                                 array("pref_id", "pref_name", "rank"));
28    }
29
30    /* DBに登録されたテンプレートメールの送信 */
31    function sfSendTemplateMail($to, $to_name, $template_id, &$objPage) {
32
33        $objQuery = new SC_Query();
34        // メールテンプレート情報の取得
35        $where = "template_id = ?";
36        $arrRet = $objQuery->select("subject, header, footer", "dtb_mailtemplate", $where, array($template_id));
37        $objPage->tpl_header = $arrRet[0]['header'];
38        $objPage->tpl_footer = $arrRet[0]['footer'];
39        $tmp_subject = $arrRet[0]['subject'];
40
41        $objSiteInfo = new SC_SiteInfo();
42        $arrInfo = $objSiteInfo->data;
43
44        $objMailView = new SC_SiteView();
45        // メール本文の取得
46        $objMailView->assignobj($objPage);
47        $body = $objMailView->fetch($this->arrMAILTPLPATH[$template_id]);
48
49        // メール送信処理
50        $objSendMail = new SC_SendMail();
51        $from = $arrInfo['email03'];
52        $error = $arrInfo['email04'];
53        $tosubject = $tmp_subject;
54        $objSendMail->setItem('', $tosubject, $body, $from, $arrInfo['shop_name'], $from, $error, $error);
55        $objSendMail->setTo($to, $to_name);
56        $objSendMail->sendMail();    // メール送信
57    }
58
59    /* 受注完了メール送信 */
60    function sfSendOrderMail($order_id, $template_id, $subject = "", $header = "", $footer = "", $send = true) {
61
62        $objPage = new LC_Page();
63        $objSiteInfo = new SC_SiteInfo();
64        $arrInfo = $objSiteInfo->data;
65        $objPage->arrInfo = $arrInfo;
66
67        $objQuery = new SC_Query();
68
69        if($subject == "" && $header == "" && $footer == "") {
70            // メールテンプレート情報の取得
71            $where = "template_id = ?";
72            $arrRet = $objQuery->select("subject, header, footer", "dtb_mailtemplate", $where, array('1'));
73            $objPage->tpl_header = $arrRet[0]['header'];
74            $objPage->tpl_footer = $arrRet[0]['footer'];
75            $tmp_subject = $arrRet[0]['subject'];
76        } else {
77            $objPage->tpl_header = $header;
78            $objPage->tpl_footer = $footer;
79            $tmp_subject = $subject;
80        }
81
82        // 受注情報の取得
83        $where = "order_id = ?";
84        $arrRet = $objQuery->select("*", "dtb_order", $where, array($order_id));
85        $arrOrder = $arrRet[0];
86        $arrOrderDetail = $objQuery->select("*", "dtb_order_detail", $where, array($order_id));
87
88        $objPage->Message_tmp = $arrOrder['message'];
89
90        // 顧客情報の取得
91        $customer_id = $arrOrder['customer_id'];
92        $arrRet = $objQuery->select("point", "dtb_customer", "customer_id = ?", array($customer_id));
93        $arrCustomer = isset($arrRet[0]) ? $arrRet[0] : "";
94
95        $objPage->arrCustomer = $arrCustomer;
96        $objPage->arrOrder = $arrOrder;
97
98        //その他決済情報
99        if($arrOrder['memo02'] != "") {
100            $arrOther = unserialize($arrOrder['memo02']);
101
102            foreach($arrOther as $other_key => $other_val){
103                if(sfTrim($other_val["value"]) == ""){
104                    $arrOther[$other_key]["value"] = "";
105                }
106            }
107
108            $objPage->arrOther = $arrOther;
109        }
110
111        // 都道府県変換
112        $objPage->arrOrder['deliv_pref'] = $this->arrPref[$objPage->arrOrder['deliv_pref']];
113
114        $objPage->arrOrderDetail = $arrOrderDetail;
115
116        $objCustomer = new SC_Customer();
117        $objPage->tpl_user_point = $objCustomer->getValue('point');
118
119        $objMailView = new SC_SiteView();
120        // メール本文の取得
121        $objMailView->assignobj($objPage);
122        $body = $objMailView->fetch($this->arrMAILTPLPATH[$template_id]);
123
124        // メール送信処理
125        $objSendMail = new SC_SendMail();
126        $bcc = $arrInfo['email01'];
127        $from = $arrInfo['email03'];
128        $error = $arrInfo['email04'];
129
130        $tosubject = $this->sfMakeSubject($objQuery, $objMailView,
131                                             $objPage, $tmp_subject);
132
133        $objSendMail->setItem('', $tosubject, $body, $from, $arrInfo['shop_name'], $from, $error, $error, $bcc);
134        $objSendMail->setTo($arrOrder["order_email"], $arrOrder["order_name01"] . " ". $arrOrder["order_name02"] ." 様");
135
136
137        // 送信フラグ:trueの場合は、送信する。
138        if($send) {
139            if ($objSendMail->sendMail()) {
140                $this->sfSaveMailHistory($order_id, $template_id, $tosubject, $body);
141            }
142        }
143
144        return $objSendMail;
145    }
146
147    // テンプレートを使用したメールの送信
148    function sfSendTplMail($to, $subject, $tplpath, &$objPage) {
149        $objMailView = new SC_SiteView();
150        $objSiteInfo = new SC_SiteInfo();
151        $arrInfo = $objSiteInfo->data;
152        // メール本文の取得
153        $objPage->tpl_shopname=$arrInfo['shop_name'];
154        $objPage->tpl_infoemail = $arrInfo['email02'];
155        $objMailView->assignobj($objPage);
156        $body = $objMailView->fetch($tplpath);
157        // メール送信処理
158        $objSendMail = new SC_SendMail();
159        $to = mb_encode_mimeheader($to);
160        $bcc = $arrInfo['email01'];
161        $from = $arrInfo['email03'];
162        $error = $arrInfo['email04'];
163        $objSendMail->setItem($to, $subject, $body, $from, $arrInfo['shop_name'], $from, $error, $error, $bcc);
164        $objSendMail->sendMail();
165    }
166
167    // 通常のメール送信
168    function sfSendMail($to, $subject, $body) {
169        $objSiteInfo = new SC_SiteInfo();
170        $arrInfo = $objSiteInfo->data;
171        // メール送信処理
172        $objSendMail = new SC_SendMail();
173        $bcc = $arrInfo['email01'];
174        $from = $arrInfo['email03'];
175        $error = $arrInfo['email04'];
176        $objSendMail->setItem($to, $subject, $body, $from, $arrInfo['shop_name'], $from, $error, $error, $bcc);
177        $objSendMail->sendMail();
178    }
179
180    //件名にテンプレートを用いる
181    function sfMakeSubject(&$objQuery, &$objMailView, &$objPage, $subject){
182
183        $arrInfo = $objQuery->select("*","dtb_baseinfo");
184        $arrInfo = $arrInfo[0];
185        $objPage->tpl_shopname=$arrInfo['shop_name'];
186        $objPage->tpl_infoemail=$subject;
187        $objMailView->assignobj($objPage);
188        $mailtitle = $objMailView->fetch('mail_templates/mail_title.tpl');
189        $ret = $mailtitle.$subject;
190        return $ret;
191    }
192
193    // メール配信履歴への登録
194    function sfSaveMailHistory($order_id, $template_id, $subject, $body) {
195        $sqlval['subject'] = $subject;
196        $sqlval['order_id'] = $order_id;
197        $sqlval['template_id'] = $template_id;
198        $sqlval['send_date'] = "Now()";
199        if($_SESSION['member_id'] != "") {
200            $sqlval['creator_id'] = $_SESSION['member_id'];
201        } else {
202            $sqlval['creator_id'] = '0';
203        }
204        $sqlval['mail_body'] = $body;
205
206        $objQuery = new SC_Query();
207        $objQuery->insert("dtb_mail_history", $sqlval);
208    }
209
210    /* 会員のメルマガ登録があるかどうかのチェック(仮会員を含まない) */
211    function sfCheckCustomerMailMaga($email) {
212        $col = "email, mailmaga_flg, customer_id";
213        $from = "dtb_customer";
214        /*
215         * FIXME 会員を削除しても登録済と扱われてしまう?
216         */
217        //$where = "email = ? AND status = 2";
218        $where = "email = ? AND status = 2 AND del_flg = 0";
219        $objQuery = new SC_Query();
220        $arrRet = $objQuery->select($col, $from, $where, array($email));
221        // 会員のメールアドレスが登録されている
222        if(!empty($arrRet[0]['customer_id'])) {
223            return true;
224        }
225        return false;
226    }
227}
228?>
Note: See TracBrowser for help on using the repository browser.