source: branches/version-2_5-dev/data/class/pages/contact/LC_Page_Contact.php @ 19713

Revision 19713, 9.9 KB checked in by nanasess, 13 years ago (diff)
  • #748(モバイルのデザイン管理機能)
    • dtb_pagelayout, dtb_bloc, dtb_blocposition のデータを追加
    • dtb_blocposition.filename を削除
    • dtb_bloc.filename を device_type_id と filename のユニークキーへ変更
  • #787(スマートフォン対応)
    • data/install.php のモバイル関連の定数を data/class/SC_Initial.php へ移動
    • テンプレート, PHPファイル追加
  • #832 SC_Helper_PageLayout#sfGetPageLayout()) の呼び出しを1ヶ所に集約
  • #820 フラグ, マスタIDの値を定数にする
    • mtb_target の値を定数化
  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
6 *
7 * http://www.lockon.co.jp/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 */
23
24// {{{ requires
25require_once(CLASS_PATH . "pages/LC_Page.php");
26
27/**
28 * お問い合わせ のページクラス.
29 *
30 * @package Page
31 * @author LOCKON CO.,LTD.
32 * @version $Id:LC_Page_Contact.php 15532 2007-08-31 14:39:46Z nanasess $
33 */
34class LC_Page_Contact extends LC_Page {
35
36    // }}}
37    // {{{ functions
38
39    /**
40     * フォーム値変換用カラム
41     *
42     *
43     */
44    var $arrConvertColumn = array(
45        array("column" => "name01",    "convert" => "aKV"),
46        array("column" => "name02",    "convert" => "aKV"),
47        array("column" => "kana01",    "convert" => "CKV"),
48        array("column" => "kana02",    "convert" => "CKV"),
49        array("column" => "zip01",     "convert" => "n"),
50        array("column" => "zip02",     "convert" => "n"),
51        array("column" => "pref",      "convert" => "n"),
52        array("column" => "addr01",    "convert" => "aKV"),
53        array("column" => "addr02",    "convert" => "aKV"),
54        array("column" => "email",     "convert" => "a"),
55        array("column" => "email02",   "convert" => "a"),
56        array("column" => "tel01",     "convert" => "n"),
57        array("column" => "tel02",     "convert" => "n"),
58        array("column" => "tel03",     "convert" => "n"),
59        array("column" => "contents",  "convert" => "aKV"),
60    );
61
62    /**
63     * Page を初期化する.
64     *
65     * @return void
66     */
67    function init() {
68        parent::init();
69        $this->tpl_mainpage = 'contact/index.tpl';
70        $this->tpl_title = 'お問い合わせ(入力ページ)';
71        $this->tpl_page_category = 'contact';
72        $this->httpCacheControl('nocache');
73
74        $masterData = new SC_DB_MasterData_Ex();
75        $this->arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
76    }
77
78    /**
79     * Page のプロセス.
80     *
81     * @return void
82     */
83    function process() {
84        $this->action();
85        $this->sendResponse();
86    }
87
88    /**
89     * Page のアクション.
90     *
91     * @return void
92     */
93    function action() {
94        $objDb = new SC_Helper_DB_Ex();
95        $CONF = $objDb->sfGetBasisData();           // 店舗基本情報
96
97        $objCustomer = new SC_Customer();
98
99        $this->arrData = isset($_SESSION['customer']) ? $_SESSION['customer'] : "";
100
101        if (!isset($_POST['mode'])) $_POST['mode'] = "";
102
103        switch ($_POST['mode']) {
104            case 'confirm':
105              $this->lfContactConfirm();
106              break;
107
108            case 'return':
109              $this->lfContactReturn();
110              break;
111
112            case 'complete':
113              $this->lfContactComplete();
114              break;
115
116            default:
117              break;
118        }
119    }
120
121    /**
122     * モバイルページを初期化する.
123     *
124     * @return void
125     */
126    function mobileInit() {
127        $this->init();
128    }
129
130    /**
131     * Page のプロセス(モバイル).
132     *
133     * @return void
134     */
135    function mobileProcess() {
136        $this->mobileAction();
137        $this->sendResponse();
138    }
139
140    /**
141     * Page のアクション(モバイル).
142     *
143     * @return void
144     */
145    function mobileAction() {
146        $objDb = new SC_Helper_DB_Ex();
147        $this->CONF = $objDb->sfGetBasisData();         // 店舗基本情報
148    }
149
150    /**
151     * デストラクタ.
152     *
153     * @return void
154     */
155    function destroy() {
156        parent::destroy();
157    }
158
159    // }}}
160    // {{{ protected functions
161
162    /**
163     * 確認画面
164     *
165     * @return void
166     */
167    function lfContactConfirm() {
168        // エラーチェック
169        $arrForm = $_POST;
170        $arrForm['email'] = strtolower($_POST['email']);
171        $this->arrForm = $this->lfConvertParam($arrForm, $this->arrConvertColumn);
172        $this->arrErr = $this->lfErrorCheck($this->arrForm);
173        if ( ! $this->arrErr ){
174            // エラー無しで完了画面
175            $this->tpl_mainpage = 'contact/confirm.tpl';
176            $this->tpl_title = 'お問い合わせ(確認ページ)';
177        }
178    }
179
180    /**
181     * 前に戻る
182     *
183     * @return void
184     */
185    function lfContactReturn() {
186        $this->arrForm = $_POST;
187    }
188
189    /**
190     * 完了ページへ
191     *
192     * @return void
193     */
194    function lfContactComplete() {
195        $arrForm = $_POST;
196        $arrForm['email']   = isset($_POST['email']) ? strtolower($_POST['email']) : '';
197        $arrForm['email02'] = isset($_POST['email02']) ? strtolower($_POST['email02']) : '';
198        $this->arrForm = $this->lfConvertParam($arrForm, $this->arrConvertColumn);
199        $this->arrErr = $this->lfErrorCheck($this->arrForm);
200        if(!$this->arrErr) {
201            $this->lfSendMail($this);
202            // 完了ページへ移動する
203            $this->objDisplay->redirect($this->getLocation("./complete.php", array(), true));
204            exit;
205        } else {
206            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
207        }
208    }
209
210    //エラーチェック処理部
211    function lfErrorCheck($array) {
212        $objErr = new SC_CheckError($array);
213        $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
214        $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
215        $objErr->doFunc(array("お名前(フリガナ・姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "KANA_CHECK"));
216        $objErr->doFunc(array("お名前(フリガナ・名)", 'kana02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "KANA_CHECK"));
217        $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
218        $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
219        $objErr->doFunc(array("住所1", "addr01", MTEXT_LEN), array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
220        $objErr->doFunc(array("住所2", "addr02", MTEXT_LEN), array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
221        $objErr->doFunc(array("お問い合わせ内容", "contents", MLTEXT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
222        $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
223        $objErr->doFunc(array('メールアドレス(確認)', "email02", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
224        $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK"));
225        $objErr->doFunc(array("お電話番号1", 'tel01', TEL_ITEM_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK"));
226        $objErr->doFunc(array("お電話番号2", 'tel02', TEL_ITEM_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK"));
227        $objErr->doFunc(array("お電話番号3", 'tel03', TEL_ITEM_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK"));
228
229        if (REVIEW_ALLOW_URL == false) {
230            // URLの入力を禁止
231            $masterData = new SC_DB_MasterData_Ex();
232            $objErr->doFunc(array("URL", "contents", $masterData->getMasterData("mtb_review_deny_url")), array("PROHIBITED_STR_CHECK"));
233        }
234
235        return $objErr->arrErr;
236    }
237
238    //---- 取得文字列の変換
239    function lfConvertParam($array, $arrConvertColumn) {
240        /*
241         *  文字列の変換
242         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
243         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
244         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
245         *  n :  「全角」数字を「半角(ハンカク)」に変換
246         *  a :  全角英数字を半角英数字に変換する
247         */
248        // カラム名とコンバート情報
249        foreach ($arrConvertColumn as $data) {
250            $arrConvList[ $data["column"] ] = $data["convert"];
251        }
252
253        // 文字変換
254        foreach ($arrConvList as $key => $val) {
255            // POSTされてきた値のみ変換する。
256            if(strlen(($array[$key])) > 0) {
257                $array[$key] = mb_convert_kana($array[$key] ,$val);
258            }
259        }
260        return $array;
261    }
262
263    // ------------  メール送信 ------------
264
265    function lfSendMail(&$objPage){
266        $objDb = new SC_Helper_DB_Ex();
267        $CONF = $objDb->sfGetBasisData();           // 店舗基本情報
268        $objQuery = new SC_Query();
269        $objSiteInfo = $this->objView->objSiteInfo;
270        $arrInfo = $objSiteInfo->data;
271        $objPage->tpl_shopname = $arrInfo['shop_name'];
272        $objPage->tpl_infoemail = $arrInfo['email02'];
273
274        $fromMail_name = $objPage->arrForm['name01'] ." 様";
275        $fromMail_address = $objPage->arrForm['email'];
276
277        $helperMail = new SC_Helper_Mail_Ex();
278        $helperMail->sfSendTemplateMail($CONF["email02"], $CONF["shop_name"], "5", $objPage, $fromMail_address, $fromMail_name, $fromMail_address);
279        $helperMail->sfSendTemplateMail($objPage->arrForm['email'], $objPage->arrForm['name01'] ." 様", "5", $objPage, $CONF["email03"], $CONF["shop_name"], $CONF["email02"]);
280    }
281}
282?>
Note: See TracBrowser for help on using the repository browser.