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

Source for file LC_Page_Mypage_DeliveryAddr.php

Documentation is available at LC_Page_Mypage_DeliveryAddr.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_Mypage_DeliveryAddr.php 21012 2011-07-04 05:46:12Z shutta $
  33.  */
  34. class LC_Page_Mypage_DeliveryAddr 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_Ex();
  48.         $this->arrPref      $masterData->getMasterData('mtb_pref');
  49.         $this->httpCacheControl('nocache');
  50.         $this->validUrl array(MYPAGE_DELIVADDR_URLPATH,
  51.                                 DELIV_URLPATH,
  52.                                 MULTIPLE_URLPATH);
  53.     }
  54.  
  55.     /**
  56.      * Page のプロセス.
  57.      *
  58.      * @return void 
  59.      */
  60.     function process({
  61.         parent::process();
  62.         $this->action();
  63.         $this->sendResponse();
  64.     }
  65.  
  66.     /**
  67.      * Page のAction.
  68.      *
  69.      * @return void 
  70.      */
  71.     function action({
  72.         $objCustomer new SC_Customer_Ex();
  73.         $ParentPage  MYPAGE_DELIVADDR_URLPATH;
  74.  
  75.         // GETでページを指定されている場合には指定ページに戻す
  76.         if (isset($_GET['page'])) {
  77.             $ParentPage htmlspecialchars($_GET['page']ENT_QUOTES);
  78.         else if (isset($_POST['ParentPage'])) {
  79.             $ParentPage htmlspecialchars($_POST['ParentPage']ENT_QUOTES);
  80.         }
  81.         $this->ParentPage $ParentPage;
  82.  
  83.         /*
  84.          * ログイン判定 及び 退会判定
  85.          * 未ログインでも, 複数配送設定ページからのアクセスの場合は表示する
  86.          *
  87.          * TODO 購入遷移とMyPageで別クラスにすべき
  88.          */
  89.         if (!$objCustomer->isLoginSuccess(true&& $ParentPage != MULTIPLE_URLPATH){
  90.             $this->tpl_onload "fnUpdateParent('"$this->getLocation($_POST['ParentPage']."'); window.close();";
  91.         }
  92.  
  93.         // other_deliv_id のあるなしで追加か編集か判定しているらしい
  94.         $_SESSION['other_deliv_id'$_REQUEST['other_deliv_id'];
  95.  
  96.         // パラメーター管理クラス,パラメーター情報の初期化
  97.         $objFormParam   new SC_FormParam_Ex();
  98.         SC_Helper_Customer_Ex::sfCustomerOtherDelivParam($objFormParam);
  99.         $objFormParam->setParam($_POST);
  100.         $this->arrForm  $objFormParam->getHashArray();
  101.  
  102.         switch ($this->getMode()) {
  103.             // 入力は必ずedit
  104.             case 'edit':
  105.                 $this->arrErr SC_Helper_Customer_Ex::sfCustomerOtherDelivErrorCheck($objFormParam);
  106.                 // 入力エラーなし
  107.                 if(empty($this->arrErr)) {
  108.  
  109.                     // TODO ここでやるべきではない
  110.                     if (in_array($_POST['ParentPage']$this->validUrl)) {
  111.                         $this->tpl_onload "fnUpdateParent('"$this->getLocation($_POST['ParentPage']."'); window.close();";
  112.                     else {
  113.                         SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
  114.                     }
  115.  
  116.                     if ($objCustomer->isLoginSuccess(true)) {
  117.                         $this->lfRegistData($objFormParam$objCustomer->getValue("customer_id"));
  118.                     else {
  119.                         $this->lfRegistDataNonMember($objFormParam);
  120.                     }
  121.  
  122.                     if(SC_Display_Ex::detectDevice(=== DEVICE_TYPE_MOBILE{
  123.                         // モバイルの場合、元のページに遷移
  124.                         SC_Response_Ex::sendRedirect($this->getLocation($_POST['ParentPage']));
  125.                         exit;
  126.                     }
  127.                 }
  128.                 break;
  129.             case 'multiple':
  130.                 // 複数配送先用
  131.                 break;
  132.             default :
  133.  
  134.                 if ($_GET['other_deliv_id'!= ""){
  135.                     $arrOtherDeliv $this->lfGetOtherDeliv($objCustomer->getValue("customer_id")$_SESSION['other_deliv_id']);
  136.  
  137.                     //不正アクセス判定
  138.                     if (!$objCustomer->isLoginSuccess(true)
  139.                         || count($arrOtherDeliv== 0){
  140.                         SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
  141.                     }
  142.  
  143.                     //別のお届け先情報取得
  144.                     $this->arrForm $arrOtherDeliv[0];
  145.                 }
  146.                 break;
  147.         }
  148.  
  149.         if (SC_Display_Ex::detectDevice(=== DEVICE_TYPE_MOBILE{
  150.             $this->tpl_mainpage 'mypage/delivery_addr.tpl';
  151.         else {
  152.             $this->setTemplate('mypage/delivery_addr.tpl');
  153.         }
  154.     }
  155.  
  156.     /**
  157.      * デストラクタ.
  158.      *
  159.      * @return void 
  160.      */
  161.     function destroy({
  162.         parent::destroy();
  163.     }
  164.  
  165.     /**
  166.      * ほかのお届け先を取得する
  167.      *
  168.      * @param mixed $customer_id 
  169.      * @param mixed $other_deliv_id 
  170.      * @access private
  171.      * @return array() 
  172.      */
  173.     function lfGetOtherDeliv($customer_id$other_deliv_id{
  174.         $objQuery =SC_Query_Ex::getSingletonInstance();
  175.         return $objQuery->select("*""dtb_other_deliv""customer_id = ? AND other_deliv_id = ?"array($customer_id$other_deliv_id));
  176.  
  177.          $arrOtherDeliv[0];
  178.     }
  179.  
  180.     /* 登録実行 */
  181.     function lfRegistData($objFormParam$customer_id{
  182.         $objQuery   =SC_Query_Ex::getSingletonInstance();
  183.  
  184.         $arrRet     $objFormParam->getHashArray();
  185.         $sqlval     $objFormParam->getDbArray();
  186.  
  187.         $sqlval['customer_id'$customer_id;
  188.  
  189.         // 追加
  190.         if (strlen($arrRet['other_deliv_id'== 0)) {
  191.             // 別のお届け先登録数の取得
  192.             $deliv_count $objQuery->count("dtb_other_deliv""customer_id = ?"array($customer_id));
  193.             // 別のお届け先最大登録数に達している場合、エラー
  194.             if ($deliv_count >= DELIV_ADDR_MAX{
  195.                 SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG""false'別のお届け先最大登録数に達しています。');
  196.             }
  197.  
  198.             // 実行
  199.             $sqlval['other_deliv_id'$objQuery->nextVal('dtb_other_deliv_other_deliv_id');
  200.             $objQuery->insert("dtb_other_deliv"$sqlval);
  201.  
  202.         // 変更
  203.         else {
  204.             $deliv_count $objQuery->count("dtb_other_deliv","customer_id = ? AND other_deliv_id = ?" ,array($customer_id$arrRet['other_deliv_id']));
  205.             if ($deliv_count != 1{
  206.                 SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG""false'一致する別のお届け先がありません。');
  207.             }
  208.  
  209.             // 実行
  210.             $objQuery->update("dtb_other_deliv"$sqlval"other_deliv_id = ?"array($arrRet['other_deliv_id']));
  211.         }
  212.     }
  213.  
  214.     function lfRegistDataNonMember($objFormParam{
  215.         $arrRegistColumn $objFormParam->getDbArray();
  216.         foreach ($arrRegistColumn as $key => $val{
  217.             $arrRegist['shipping_' $key $val;
  218.         }
  219.         if (count($_SESSION['shipping']>= DELIV_ADDR_MAX{
  220.             SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG""false'別のお届け先最大登録数に達しています。');
  221.         else {
  222.             $_SESSION['shipping'][$arrRegist;
  223.         }
  224.     }
  225. }
  226. ?>

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