Page
[ class tree: Page ] [ index: Page ] [ all elements ]

Source for file LC_Page_Shopping.php

Documentation is available at LC_Page_Shopping.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 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
  25. require_once CLASS_EX_REALDIR 'page_extends/LC_Page_Ex.php';
  26.  
  27. /**
  28.  * ショッピングログインのページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_Shopping.php 21295 2011-10-21 07:18:21Z shutta $
  33.  */
  34. class LC_Page_Shopping extends LC_Page_Ex {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_title 'ログイン';
  47.         $masterData new SC_DB_MasterData();
  48.         $this->arrPref $masterData->getMasterData('mtb_pref');
  49.         $this->arrSex $masterData->getMasterData("mtb_sex");
  50.         $this->arrJob $masterData->getMasterData("mtb_job");
  51.         $this->tpl_onload 'fnCheckInputDeliv();';
  52.  
  53.         $objDate new SC_Date_Ex(BIRTH_YEARdate('Y',strtotime('now')));
  54.         $this->arrYear $objDate->getYear(''START_BIRTH_YEAR'');
  55.         $this->arrMonth $objDate->getMonth(true);
  56.         $this->arrDay $objDate->getDay(true);
  57.  
  58.         $this->httpCacheControl('nocache');
  59.     }
  60.  
  61.     /**
  62.      * Page のプロセス.
  63.      *
  64.      * @return void 
  65.      */
  66.     function process({
  67.         parent::process();
  68.         $this->action();
  69.         $this->sendResponse();
  70.     }
  71.  
  72.     /**
  73.      * Page のプロセス.
  74.      *
  75.      * @return void 
  76.      */
  77.     function action({
  78.         $objSiteSess new SC_SiteSession_Ex();
  79.         $objCartSess new SC_CartSession_Ex();
  80.         $objCustomer new SC_Customer_Ex();
  81.         $objCookie new SC_Cookie_Ex();
  82.         $objPurchase new SC_Helper_Purchase_Ex();
  83.         $objFormParam new SC_FormParam_Ex();
  84.  
  85.         $nonmember_mainpage 'shopping/nonmember_input.tpl';
  86.         $nonmember_title 'お客様情報入力';
  87.  
  88.         $this->tpl_uniqid $objSiteSess->getUniqId();
  89.         $objPurchase->verifyChangeCart($this->tpl_uniqid$objCartSess);
  90.  
  91.         $this->cartKey $objCartSess->getKey();
  92.  
  93.         // ログイン済みの場合は次画面に遷移
  94.         if ($objCustomer->isLoginSuccess(true)) {
  95.             SC_Response_Ex::sendRedirect(
  96.                     $this->getNextlocation($this->cartKey$this->tpl_uniqid,
  97.                                            $objCustomer$objPurchase,
  98.                                            $objSiteSess));
  99.             exit;
  100.         }
  101.         // 非会員かつ, ダウンロード商品の場合はエラー表示
  102.         else {
  103.             if ($this->cartKey == PRODUCT_TYPE_DOWNLOAD{
  104.                 SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG$objSiteSessfalse,
  105.                     "ダウンロード商品を含むお買い物は、会員登録が必要です。<br/>"
  106.                   . "お手数ですが、会員登録をお願いします。");
  107.                 exit;
  108.             }
  109.         }
  110.  
  111.         switch ($this->getMode()) {
  112.         // ログイン実行
  113.         case 'login':
  114.             $this->lfInitLoginFormParam($objFormParam);
  115.             $objFormParam->setParam($_POST);
  116.             $objFormParam->trimParam();
  117.             $objFormParam->convParam();
  118.             $objFormParam->toLower('login_email');
  119.             $this->arrErr $objFormParam->checkError();
  120.  
  121.             // ログイン判定
  122.             if (SC_Utils_Ex::isBlank($this->arrErr)
  123.                 && $this->doLogin($objCustomer,
  124.                                   $objFormParam->getValue('login_email'),
  125.                                   $objFormParam->getValue('login_pass'))) {
  126.  
  127.                 // モバイルサイトで携帯アドレスの登録が無い場合、携帯アドレス登録ページへ遷移
  128.                 if(SC_Display_Ex::detectDevice(== DEVICE_TYPE_MOBILE{
  129.                     if($this->hasEmailMobile($objCustomer== false{
  130.                         SC_Response_Ex::sendRedirectFromUrlPath('entry/email_mobile.php');
  131.                         exit;
  132.                     }
  133.                 }
  134.                 // スマートフォンの場合はログイン成功を返す
  135.                 elseif (SC_Display_Ex::detectDevice(=== DEVICE_TYPE_SMARTPHONE{
  136.                     echo SC_Utils_Ex::jsonEncode(array('success' => 
  137.                                                 $this->getNextLocation($this->cartKey$this->tpl_uniqid,
  138.                                                                        $objCustomer$objPurchase,
  139.                                                                        $objSiteSess)));
  140.                     exit;
  141.                 }
  142.  
  143.                 SC_Response_Ex::sendRedirect(
  144.                         $this->getNextLocation($this->cartKey$this->tpl_uniqid,
  145.                                                $objCustomer$objPurchase,
  146.                                                $objSiteSess));
  147.                 exit;
  148.             }
  149.             // ログインに失敗した場合
  150.             else {
  151.                 // 仮登録の場合
  152.                 if($this->checkTempCustomer($objFormParam->getValue('login_email'))) {
  153.                     if (SC_Display_Ex::detectDevice(=== DEVICE_TYPE_SMARTPHONE{
  154.                         echo $this->lfGetErrorMessage(TEMP_LOGIN_ERROR);
  155.                         exit;
  156.                     else {
  157.                         SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR);
  158.                         exit;
  159.                     }
  160.                 else {
  161.                     if (SC_Display_Ex::detectDevice(=== DEVICE_TYPE_SMARTPHONE{
  162.                         echo $this->lfGetErrorMessage(SITE_LOGIN_ERROR);
  163.                         exit;
  164.                     else {
  165.                         SC_Utils_Ex::sfDispSiteError(SITE_LOGIN_ERROR);
  166.                         exit;
  167.                     }
  168.                 }
  169.             }
  170.             break;
  171.  
  172.         // お客様情報登録
  173.         case 'nonmember_confirm':
  174.             $this->tpl_mainpage $nonmember_mainpage;
  175.             $this->tpl_title $nonmember_title;
  176.             $this->lfInitParam($objFormParam);
  177.             $objFormParam->setParam($_POST);
  178.             $this->arrErr $this->lfCheckError($objFormParam);
  179.  
  180.             if (SC_Utils_Ex::isBlank($this->arrErr)) {
  181.                 $objPurchase->unsetShippingTemp();
  182.                 $this->lfRegistData($this->tpl_uniqid$objPurchase,
  183.                                     $objCustomer$objFormParam);
  184.  
  185.                 $objSiteSess->setRegistFlag();
  186.                 SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
  187.                 exit;
  188.             }
  189.             break;
  190.  
  191.         // 前のページに戻る
  192.         case 'return':
  193.             SC_Response_Ex::sendRedirect(CART_URLPATH);
  194.             exit;
  195.             break;
  196.  
  197.         // 複数配送ページへ遷移
  198.         case 'multiple':
  199.             $this->lfInitParam($objFormParam);
  200.             $objFormParam->setParam($_POST);
  201.             $this->arrErr $this->lfCheckError($objFormParam);
  202.  
  203.             if (SC_Utils_Ex::isBlank($this->arrErr)) {
  204.                 $objPurchase->unsetShippingTemp();
  205.                 $this->lfRegistData($this->tpl_uniqid$objPurchase,
  206.                                     $objCustomer$objFormParamtrue);
  207.  
  208.                 $objSiteSess->setRegistFlag();
  209.                 SC_Response_Ex::sendRedirect(MULTIPLE_URLPATH);
  210.                 exit;
  211.             }
  212.             $this->tpl_mainpage $nonmember_mainpage;
  213.             $this->tpl_title $nonmember_title;
  214.             break;
  215.  
  216.         // お客様情報入力ページの表示
  217.         case 'nonmember':
  218.             $this->tpl_mainpage $nonmember_mainpage;
  219.             $this->tpl_title $nonmember_title;
  220.             $this->lfInitParam($objFormParam);
  221.             // ※breakなし
  222.  
  223.         default:
  224.             // 前のページから戻ってきた場合は, お客様情報入力ページ
  225.             if (isset($_GET['from']&& $_GET['from'== 'nonmember'{
  226.                 $this->tpl_mainpage $nonmember_mainpage;
  227.                 $this->tpl_title $nonmember_title;
  228.                 $this->lfInitParam($objFormParam);
  229.             }
  230.             // 通常はログインページ
  231.             else {
  232.                 $this->lfInitLoginFormParam($objFormParam);
  233.             }
  234.  
  235.             $this->setFormParams($objFormParam$objPurchase$this->tpl_uniqid);
  236.         }
  237.  
  238.         // 記憶したメールアドレスを取得
  239.         $this->tpl_login_email $objCookie->getCookie('login_email');
  240.         if (!SC_Utils_Ex::isBlank($this->tpl_login_email)) {
  241.             $this->tpl_login_memory "1";
  242.         }
  243.  
  244.         // 入力値の取得
  245.         $this->arrForm $objFormParam->getFormParamList();
  246.  
  247.         // 携帯端末IDが一致する会員が存在するかどうかをチェックする。
  248.         if (SC_Display_Ex::detectDevice(=== DEVICE_TYPE_MOBILE{
  249.             $this->tpl_valid_phone_id $objCustomer->checkMobilePhoneId();
  250.         }
  251.     }
  252.  
  253.     /**
  254.      * デストラクタ.
  255.      *
  256.      * @return void 
  257.      */
  258.     function destroy({
  259.         parent::destroy();
  260.     }
  261.  
  262.     /**
  263.      * お客様情報入力時のパラメーター情報の初期化を行う.
  264.      *
  265.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  266.      * @return void 
  267.      */
  268.     function lfInitParam(&$objFormParam{
  269.  
  270.         $objFormParam->addParam("お名前(姓)""order_name01"STEXT_LEN'KVa'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  271.         $objFormParam->addParam("お名前(名)""order_name02"STEXT_LEN'KVa'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  272.         $objFormParam->addParam("お名前(フリガナ・姓)""order_kana01"STEXT_LEN'KVCa'array("EXIST_CHECK""KANA_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  273.         $objFormParam->addParam("お名前(フリガナ・名)""order_kana02"STEXT_LEN'KVCa'array("EXIST_CHECK""KANA_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  274.         $objFormParam->addParam("郵便番号1""order_zip01"ZIP01_LEN'n'array("EXIST_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  275.         $objFormParam->addParam("郵便番号2""order_zip02"ZIP02_LEN'n'array("EXIST_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  276.         $objFormParam->addParam("都道府県""order_pref"INT_LEN'n'array("EXIST_CHECK""MAX_LENGTH_CHECK""NUM_CHECK"));
  277.         $objFormParam->addParam("住所1""order_addr01"MTEXT_LEN'KVa'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  278.         $objFormParam->addParam("住所2""order_addr02"MTEXT_LEN'KVa'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  279.         $objFormParam->addParam("電話番号1""order_tel01"TEL_ITEM_LEN'n'array("EXIST_CHECK""MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  280.         $objFormParam->addParam("電話番号2""order_tel02"TEL_ITEM_LEN'n'array("EXIST_CHECK""MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  281.         $objFormParam->addParam("電話番号3""order_tel03"TEL_ITEM_LEN'n'array("EXIST_CHECK""MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  282.         $objFormParam->addParam("FAX番号1""order_fax01"TEL_ITEM_LEN'n'array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  283.         $objFormParam->addParam("FAX番号2""order_fax02"TEL_ITEM_LEN'n'array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  284.         $objFormParam->addParam("FAX番号3""order_fax03"TEL_ITEM_LEN'n'array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  285.         $objFormParam->addParam("メールアドレス""order_email"null'KVa'array("EXIST_CHECK""SPTAB_CHECK""NO_SPTAB""EMAIL_CHECK""EMAIL_CHAR_CHECK"));
  286.         $objFormParam->addParam("メールアドレス(確認)""order_email02"null'KVa'array("EXIST_CHECK""SPTAB_CHECK""NO_SPTAB""EMAIL_CHECK""EMAIL_CHAR_CHECK")""false);
  287.         $objFormParam->addParam("年"'year'INT_LEN'n'array("MAX_LENGTH_CHECK")""false);
  288.         $objFormParam->addParam("月"'month'INT_LEN'n'array("MAX_LENGTH_CHECK")""false);
  289.         $objFormParam->addParam("日"'day'INT_LEN'n'array("MAX_LENGTH_CHECK")""false);
  290.         $objFormParam->addParam("性別""order_sex"INT_LEN'n'array("EXIST_CHECK""MAX_LENGTH_CHECK""NUM_CHECK"));
  291.         $objFormParam->addParam("職業""order_job"INT_LEN'n'array("MAX_LENGTH_CHECK""NUM_CHECK"));
  292.         $objFormParam->addParam("別のお届け先""deliv_check"INT_LEN'n'array("MAX_LENGTH_CHECK""NUM_CHECK"));
  293.         $objFormParam->addParam("お名前(姓)""shipping_name01"STEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  294.         $objFormParam->addParam("お名前(名)""shipping_name02"STEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  295.         $objFormParam->addParam("お名前(フリガナ・姓)""shipping_kana01"STEXT_LEN'KVCa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  296.         $objFormParam->addParam("お名前(フリガナ・名)""shipping_kana02"STEXT_LEN'KVCa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  297.         $objFormParam->addParam("郵便番号1""shipping_zip01"ZIP01_LEN'n'array("NUM_CHECK""NUM_COUNT_CHECK"));
  298.         $objFormParam->addParam("郵便番号2""shipping_zip02"ZIP02_LEN'n'array("NUM_CHECK""NUM_COUNT_CHECK"));
  299.         $objFormParam->addParam("都道府県""shipping_pref"INT_LEN'n'array("MAX_LENGTH_CHECK""NUM_CHECK"));
  300.         $objFormParam->addParam("住所1""shipping_addr01"MTEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  301.         $objFormParam->addParam("住所2""shipping_addr02"MTEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  302.         $objFormParam->addParam("電話番号1""shipping_tel01"TEL_ITEM_LEN'n'array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  303.         $objFormParam->addParam("電話番号2""shipping_tel02"TEL_ITEM_LEN'n'array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  304.         $objFormParam->addParam("電話番号3""shipping_tel03"TEL_ITEM_LEN'n'array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  305.         $objFormParam->addParam("メールマガジン""mail_flag"INT_LEN'n'array("MAX_LENGTH_CHECK""NUM_CHECK")1);
  306.     }
  307.  
  308.     /**
  309.      * ログイン時のパラメーター情報の初期化を行う.
  310.      *
  311.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  312.      * @return void 
  313.      */
  314.     function lfInitLoginFormParam(&$objFormParam{
  315.         $objFormParam->addParam("記憶する""login_memory"INT_LEN'n'array("MAX_LENGTH_CHECK""NUM_CHECK"));
  316.         $objFormParam->addParam("メールアドレス""login_email"STEXT_LEN'a'array("EXIST_CHECK""MAX_LENGTH_CHECK"));
  317.         $objFormParam->addParam("パスワード""login_pass"PASSWORD_MAX_LEN""array("EXIST_CHECK""MAX_LENGTH_CHECK"));
  318.     }
  319.  
  320.     /**
  321.      * ログイン済みの場合の遷移先を取得する.
  322.      *
  323.      * 商品種別IDが, ダウンロード商品の場合は, 会員情報を受注一時情報に保存し,
  324.      * 支払方法選択画面のパスを返す.
  325.      * それ以外は, お届け先選択画面のパスを返す.
  326.      *
  327.      * @param integer $product_type_id 商品種別ID
  328.      * @param string $uniqid 受注一時テーブルのユニークID
  329.      * @param SC_Customer $objCustomer SC_Customer インスタンス
  330.      * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス
  331.      * @param SC_SiteSession $objSiteSess SC_SiteSession インスタンス
  332.      * @return string 遷移先のパス
  333.      */
  334.     function getNextLocation($product_type_id$uniqid&$objCustomer&$objPurchase&$objSiteSess{
  335.         switch ($product_type_id{
  336.         case PRODUCT_TYPE_DOWNLOAD:
  337.             $objPurchase->saveOrderTemp($uniqidarray()$objCustomer);
  338.             $objSiteSess->setRegistFlag();
  339.             return 'payment.php';
  340.             break;
  341.  
  342.         case PRODUCT_TYPE_NORMAL:
  343.         default:
  344.             return 'deliv.php';
  345.         }
  346.     }
  347.  
  348.     /**
  349.      * データの一時登録を行う.
  350.      *
  351.      * @param integer $uniqid 受注一時テーブルのユニークID
  352.      * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス
  353.      * @param SC_Customer $objCustomer SC_Customer インスタンス
  354.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  355.      * @param boolean $isMultiple 複数配送の場合 true
  356.      */
  357.     function lfRegistData($uniqid&$objPurchase&$objCustomer&$objFormParam,
  358.                           $isMultiple false{
  359.         $arrParams $objFormParam->getHashArray();
  360.         $arrValues $objFormParam->getDbArray();
  361.         // 登録データの作成
  362.         $arrValues['order_birth'SC_Utils_Ex::sfGetTimestamp($arrParams['year']$arrParams['month']$arrParams['day']);
  363.         $arrValues['update_date''CURRENT_TIMESTAMP';
  364.         $arrValues['customer_id''0';
  365.  
  366.         // お届け先を指定しない場合、
  367.         if ($arrParams['deliv_check'!= '1'{
  368.             // order_* を shipping_* へコピー
  369.             $objPurchase->copyFromOrder($arrValues$arrParams);
  370.         }
  371.  
  372.         /*
  373.          * order_* と shipping_* をそれぞれ $_SESSION['shipping'][$shipping_id]
  374.          * に, shipping_* というキーで保存
  375.          */
  376.         foreach ($arrValues as $key => $val{
  377.             if (preg_match('/^order_/'$key)) {
  378.                 $arrOrder['shipping_' str_replace('order_'''$key)$val;
  379.             elseif (preg_match('/^shipping_/'$key)) {
  380.                 $arrShipping[$key$val;
  381.             }
  382.         }
  383.  
  384.         if ($isMultiple{
  385.             $objPurchase->saveShippingTemp($arrOrder0);
  386.             if ($arrParams['deliv_check'== '1'{
  387.                 $objPurchase->saveShippingTemp($arrShipping1);
  388.             }
  389.         else {
  390.             if ($arrParams['deliv_check'== '1'{
  391.                 $objPurchase->saveShippingTemp($arrShipping0);
  392.             else {
  393.                 $objPurchase->saveShippingTemp($arrOrder0);
  394.             }
  395.         }
  396.         $objPurchase->saveOrderTemp($uniqid$arrValues$objCustomer);
  397.     }
  398.  
  399.     /**
  400.      * 入力内容のチェックを行う.
  401.      *
  402.      * 追加の必須チェック, 相関チェックを行うため, SC_CheckError を使用する.
  403.      *
  404.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  405.      * @return array エラー情報の配
  406.      */
  407.     function lfCheckError(&$objFormParam{
  408.         // 入力値の変換
  409.         $objFormParam->convParam();
  410.         $objFormParam->toLower('order_mail');
  411.         $objFormParam->toLower('order_mail_check');
  412.  
  413.         $arrParams $objFormParam->getHashArray();
  414.         $objErr new SC_CheckError_Ex($arrParams);
  415.         $objErr->arrErr $objFormParam->checkError();
  416.  
  417.         // 別のお届け先チェック
  418.         if (isset($arrParams['deliv_check']&& $arrParams['deliv_check'== "1"{
  419.             $objErr->doFunc(array("お名前(姓)""shipping_name01")array("EXIST_CHECK"));
  420.             $objErr->doFunc(array("お名前(名)""shipping_name02")array("EXIST_CHECK"));
  421.             $objErr->doFunc(array("お名前(フリガナ・姓)""shipping_kana01")array("EXIST_CHECK"));
  422.             $objErr->doFunc(array("お名前(フリガナ・名)""shipping_kana02")array("EXIST_CHECK"));
  423.             $objErr->doFunc(array("郵便番号1""shipping_zip01")array("EXIST_CHECK"));
  424.             $objErr->doFunc(array("郵便番号2""shipping_zip02")array("EXIST_CHECK"));
  425.             $objErr->doFunc(array("都道府県""shipping_pref")array("EXIST_CHECK"));
  426.             $objErr->doFunc(array("住所1""shipping_addr01")array("EXIST_CHECK"));
  427.             $objErr->doFunc(array("住所2""shipping_addr02")array("EXIST_CHECK"));
  428.             $objErr->doFunc(array("電話番号1""shipping_tel01")array("EXIST_CHECK"));
  429.             $objErr->doFunc(array("電話番号2""shipping_tel02")array("EXIST_CHECK"));
  430.             $objErr->doFunc(array("電話番号3""shipping_tel03")array("EXIST_CHECK"));
  431.         }
  432.  
  433.         // 複数項目チェック
  434.         $objErr->doFunc(array('TEL'"order_tel01""order_tel02""order_tel03")array("TEL_CHECK"));
  435.         $objErr->doFunc(array('FAX'"order_fax01""order_fax02""order_fax03")array("TEL_CHECK"));
  436.         $objErr->doFunc(array("郵便番号""order_zip01""order_zip02")array("ALL_EXIST_CHECK"));
  437.         $objErr->doFunc(array('TEL'"shipping_tel01""shipping_tel02""shipping_tel03")array("TEL_CHECK"));
  438.         $objErr->doFunc(array("郵便番号""shipping_zip01""shipping_zip02")array("ALL_EXIST_CHECK"));
  439.         $objErr->doFunc(array("生年月日"'year''month''day')array("CHECK_BIRTHDAY"));
  440.         $objErr->doFunc(array("メールアドレス""メールアドレス(確認)""order_email""order_email02")array("EQUAL_CHECK"));
  441.  
  442.         return $objErr->arrErr;
  443.     }
  444.  
  445.     /**
  446.      * 入力済みの購入情報をフォームに設定する.
  447.      *
  448.      * 受注一時テーブル, セッションの配送情報から入力済みの購入情報を取得し,
  449.      * フォームに設定する.
  450.      *
  451.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  452.      * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス
  453.      * @param integer $uniqid 購入一時情報のユニークID
  454.      * @return void 
  455.      */
  456.     function setFormParams(&$objFormParam&$objPurchase$uniqid{
  457.         $arrOrderTemp $objPurchase->getOrderTemp($uniqid);
  458.         if (SC_Utils_Ex::isBlank($arrOrderTemp)) {
  459.             $arrOrderTemp array('order_email' => "",
  460.                                   'order_birth' => "");
  461.         }
  462.         $arrShippingTemp $objPurchase->getShippingTemp();
  463.  
  464.         $objFormParam->setParam($arrOrderTemp);
  465.         /*
  466.          * count($arrShippingTemp) > 1 は複数配送であり,
  467.          * $arrShippingTemp[0] は注文者が格納されている
  468.          */
  469.         if (count($arrShippingTemp1{
  470.             $objFormParam->setParam($arrShippingTemp[1]);
  471.         else {
  472.             $objFormParam->setParam($arrShippingTemp[0]);
  473.         }
  474.         $objFormParam->setValue('order_email02'$arrOrderTemp['order_email']);
  475.         $objFormParam->setDBDate($arrOrderTemp['order_birth']);
  476.     }
  477.  
  478.     /**
  479.      * ログインを実行する.
  480.      *
  481.      * ログインを実行し, 成功した場合はユーザー情報をセッションに格納し,
  482.      * true を返す.
  483.      * モバイル端末の場合は, 携帯端末IDを保存する.
  484.      * ログインに失敗した場合は, false を返す.
  485.      *
  486.      * @param SC_Customer $objCustomer SC_Customer インスタンス
  487.      * @param string $login_email ログインメールアドレス
  488.      * @param string $login_pass ログインパスワード
  489.      * @return boolean ログインに成功した場合 true; 失敗した場合 false
  490.      */
  491.     function doLogin(&$objCustomer$login_email$login_pass{
  492.         switch (SC_Display_Ex::detectDevice()) {
  493.         case DEVICE_TYPE_MOBILE:
  494.             if(!$objCustomer->getCustomerDataFromMobilePhoneIdPass($login_pass&&
  495.                !$objCustomer->getCustomerDataFromEmailPass($login_pass$login_emailtrue)) {
  496.                 return false;
  497.             else {
  498.                 $objCustomer->updateMobilePhoneId();
  499.                 return true;
  500.             }
  501.             break;
  502.  
  503.         case DEVICE_TYPE_SMARTPHONE:
  504.         case DEVICE_TYPE_PC:
  505.         default:
  506.             if(!$objCustomer->getCustomerDataFromEmailPass($login_pass$login_email)) {
  507.                 return false;
  508.             else {
  509.                 return true;
  510.             }
  511.         }
  512.     }
  513.  
  514.     /**
  515.      * ログインした会員の携帯メールアドレス登録があるかどうか
  516.      *
  517.      * ログインした会員の携帯メールアドレスの存在をチェックする
  518.      *
  519.      * @param SC_Customer $objCustomer SC_Customer インスタンス
  520.      * @return boolean 会員の携帯メールアドレス登録がある場合 true
  521.      */
  522.     function hasEmailMobile(&$objCustomer{
  523.         $objMobile new SC_Helper_Mobile_Ex();
  524.         if ($objCustomer->hasValue('email_mobile')) {
  525.             return true;
  526.         }
  527.         return false;
  528.     }
  529.  
  530.     /**
  531.      * 仮会員かどうかを判定する.
  532.      *
  533.      * @param string $login_email メールアドレス
  534.      * @return boolean 仮会員の場合 true
  535.      */
  536.     function checkTempCustomer($login_email{
  537.         $objQuery =SC_Query_Ex::getSingletonInstance();
  538.         $where "email = ? AND status = 1 AND del_flg = 0";
  539.         $count $objQuery->count("dtb_customer"$wherearray($login_email));
  540.         return $count 0;
  541.     }
  542.  
  543.     /**
  544.      * エラーメッセージを JSON 形式で返す.
  545.      *
  546.      * TODO リファクタリング
  547.      * この関数は主にスマートフォンで使用します.
  548.      *
  549.      * @param integer エラーコード
  550.      * @return string JSON 形式のエラーメッセージ
  551.      * @see LC_PageError
  552.      */
  553.     function lfGetErrorMessage($error{
  554.         switch ($error{
  555.             case TEMP_LOGIN_ERROR:
  556.                 $msg "メールアドレスもしくはパスワードが正しくありません。\n本登録がお済みでない場合は、仮登録メールに記載されているURLより本登録を行ってください。";
  557.                 break;
  558.             case SITE_LOGIN_ERROR:
  559.             default:
  560.                 $msg "メールアドレスもしくはパスワードが正しくありません。";
  561.         }
  562.         return SC_Utils_Ex::jsonEncode(array('login_error' => $msg));
  563.     }
  564. }
  565. ?>

Documentation generated on Fri, 24 Feb 2012 14:02:16 +0900 by Seasoft