Source for file LC_Page_Shopping_Confirm.php

Documentation is available at LC_Page_Shopping_Confirm.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2007 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_PATH "pages/LC_Page.php");
  26.  
  27. /**
  28.  * 入力内容確認のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id:LC_Page_Shopping_Confirm.php 15532 2007-08-31 14:39:46Z nanasess $
  33.  */
  34. class LC_Page_Shopping_Confirm extends LC_Page {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_mainpage = 'shopping/confirm.tpl';
  47.         $this->tpl_column_num = 1;
  48.         $this->tpl_css = URL_DIR.'css/layout/shopping/confirm.css';
  49.         $this->tpl_title = "ご入力内容のご確認";
  50.         $masterData new SC_DB_MasterData();
  51.         $this->arrPref $masterData->getMasterData("mtb_pref"array("pref_id""pref_name""rank"));
  52.         $this->arrSex $masterData->getMasterData("mtb_sex");
  53.         $this->arrMAILMAGATYPE $masterData->getMasterData("mtb_mail_magazine_type");
  54.         $this->arrReminder $masterData->getMasterData("mtb_reminder");
  55.  
  56.         $this->allowClientCache();
  57.     }
  58.  
  59.     /**
  60.      * Page のプロセス.
  61.      *
  62.      * @return void 
  63.      */
  64.     function process({
  65.         global $objCampaignSess;
  66.  
  67.         $objView new SC_SiteView();
  68.         $objCartSess new SC_CartSession();
  69.         $objSiteInfo $objView->objSiteInfo;
  70.         $objSiteSess new SC_SiteSession();
  71.         $objCampaignSess new SC_CampaignSession();
  72.         $objCustomer new SC_Customer();
  73.         $arrInfo $objSiteInfo->data;
  74.         $objQuery new SC_Query();
  75.         $objDb new SC_Helper_DB_Ex();
  76.  
  77.         // 前のページで正しく登録手続きが行われた記録があるか判定
  78.         SC_Utils_Ex::sfIsPrePage($objSiteSess);
  79.  
  80.         // ユーザユニークIDの取得と購入状態の正当性をチェック
  81.         $uniqid SC_Utils_Ex::sfCheckNormalAccess($objSiteSess$objCartSess);
  82.         $this->tpl_uniqid $uniqid;
  83.  
  84.         // カート集計処理
  85.         $objDb->sfTotalCart($this$objCartSess$arrInfo);
  86.         // 一時受注テーブルの読込
  87.         $arrData $objDb->sfGetOrderTemp($uniqid);
  88.         // カート集計を元に最終計算
  89.         $arrData $objDb->sfTotalConfirm($arrData$this$objCartSess$arrInfo$objCustomer$objCampaignSess);
  90.         // キャンペーンからの遷移で送料が無料だった場合の処理
  91.         if($objCampaignSess->getIsCampaign()) {
  92.             $deliv_free_flg $objQuery->get("dtb_campaign""deliv_free_flg""campaign_id = ?"array($objCampaignSess->getCampaignId()));
  93.             // 送料無料が設定されていた場合
  94.             if($deliv_free_flg{
  95.                 $arrData['payment_total'-= $arrData['deliv_fee'];
  96.                 $arrData['deliv_fee'0;
  97.             }
  98.         }
  99.  
  100.  
  101.         // カート内の商品の売り切れチェック
  102.         $objCartSess->chkSoldOut($objCartSess->getCartList());
  103.  
  104.         // 会員ログインチェック
  105.         if($objCustomer->isLoginSuccess()) {
  106.             $this->tpl_login '1';
  107.             $this->tpl_user_point $objCustomer->getValue('point');
  108.         }
  109.  
  110.         // 決済区分を取得する
  111.         $payment_type "";
  112.         if($objDb->sfColumnExists("dtb_payment""memo01")){
  113.             // MEMO03に値が入っている場合には、モジュール追加されたものとみなす
  114.             $sql "SELECT memo03 FROM dtb_payment WHERE payment_id = ?";
  115.             $arrPayment $objQuery->getall($sqlarray($arrData['payment_id']));
  116.             $payment_type $arrPayment[0]["memo03"];
  117.         }
  118.         $this->payment_type $payment_type;
  119.  
  120.         if (!isset($_POST['mode'])) $_POST['mode'"";
  121.  
  122.         switch($_POST['mode']{
  123.         // 前のページに戻る
  124.         case 'return':
  125.             // 正常な推移であることを記録しておく
  126.             $objSiteSess->setRegistFlag();
  127.             $this->sendRedirect($this->getLocation(URL_SHOP_PAYMENT));
  128.             exit;
  129.             break;
  130.         case 'confirm':
  131.             // この時点でオーダーIDを確保しておく(クレジット、コンビニ決済で必要なため)
  132.             // postgresqlとmysqlとで処理を分ける
  133.             if (DB_TYPE == "pgsql"{
  134.                 $order_id $objQuery->nextval("dtb_order","order_id");
  135.             }elseif (DB_TYPE == "mysql"{
  136.                 $order_id $objQuery->get_auto_increment("dtb_order");
  137.             }
  138.             $arrData["order_id"$order_id;
  139.  
  140.             // セッション情報を保持
  141.             $arrData['session'serialize($_SESSION);
  142.  
  143.             // 集計結果を受注一時テーブルに反映
  144.             $objDb->sfRegistTempOrder($uniqid$arrData);
  145.             // 正常に登録されたことを記録しておく
  146.             $objSiteSess->setRegistFlag();
  147.  
  148.             // 決済方法により画面切替
  149.             if($payment_type != ""{
  150.                 // TODO 決済方法のモジュールは Plugin として実装したい
  151.                 $_SESSION["payment_id"$arrData['payment_id'];
  152.                 $this->sendRedirect($this->getLocation(URL_SHOP_MODULE));
  153.             }else{
  154.                 $this->sendRedirect($this->getLocation(URL_SHOP_COMPLETE));
  155.             }
  156.             exit;
  157.             break;
  158.         default:
  159.             break;
  160.         }
  161.  
  162.         $this->arrData $arrData;
  163.         $this->arrInfo $arrInfo;
  164.         $objView->assignobj($this);
  165.         // フレームを選択(キャンペーンページから遷移なら変更)
  166.         $objCampaignSess->pageView($objView);
  167.     }
  168.  
  169.     /**
  170.      * モバイルページを初期化する.
  171.      *
  172.      * @return void 
  173.      */
  174.     function mobileInit({
  175.         $this->init();
  176.     }
  177.  
  178.     /**
  179.      * Page のプロセス(モバイル).
  180.      *
  181.      * @return void 
  182.      */
  183.     function mobileProcess({
  184.         $objView new SC_MobileView();
  185.         $objCartSess new SC_CartSession();
  186.         $objSiteInfo $objView->objSiteInfo;
  187.         $objSiteSess new SC_SiteSession();
  188.         $objCustomer new SC_Customer();
  189.         $arrInfo $objSiteInfo->data;
  190.         $objQuery new SC_Query();
  191.         $objDb new SC_Helper_DB_Ex();
  192.  
  193.         // 前のページで正しく登録手続きが行われた記録があるか判定
  194.         SC_Utils_Ex::sfIsPrePage($objSiteSesstrue);
  195.  
  196.         // ユーザユニークIDの取得と購入状態の正当性をチェック
  197.         $uniqid SC_Utils_Ex::sfCheckNormalAccess($objSiteSess$objCartSess);
  198.         $this->tpl_uniqid $uniqid;
  199.  
  200.         // カート集計処理
  201.         $objDb->sfTotalCart($this$objCartSess$arrInfo);
  202.         // 一時受注テーブルの読込
  203.         $arrData $objDb->sfGetOrderTemp($uniqid);
  204.         // カート集計を元に最終計算
  205.         $arrData $objDb->sfTotalConfirm($arrData$this$objCartSess$arrInfo$objCustomer);
  206.  
  207.         // カート内の商品の売り切れチェック
  208.         $objCartSess->chkSoldOut($objCartSess->getCartList());
  209.  
  210.         // 会員ログインチェック
  211.         if($objCustomer->isLoginSuccess(true)) {
  212.             $this->tpl_login '1';
  213.             $this->tpl_user_point $objCustomer->getValue('point');
  214.         }
  215.  
  216.         // 決済区分を取得する
  217.         $payment_type "";
  218.         if($objDb->sfColumnExists("dtb_payment""memo01")){
  219.             // MEMO03に値が入っている場合には、モジュール追加されたものとみなす
  220.             $sql "SELECT memo03 FROM dtb_payment WHERE payment_id = ?";
  221.             $arrPayment $objQuery->getall($sqlarray($arrData['payment_id']));
  222.             $payment_type $arrPayment[0]["memo03"];
  223.         }
  224.         $this->payment_type $payment_type;
  225.  
  226.         if (!isset($_POST['mode'])) $_POST['mode'"";
  227.  
  228.         switch($_POST['mode']{
  229.             // 前のページに戻る
  230.         case 'return':
  231.             // 正常な推移であることを記録しておく
  232.             $objSiteSess->setRegistFlag();
  233.             $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_PAYMENT)true);
  234.             exit;
  235.             break;
  236.         case 'confirm':
  237.             // この時点でオーダーIDを確保しておく(クレジット、コンビニ決済で必要なため)
  238.             // postgresqlとmysqlとで処理を分ける
  239.             if (DB_TYPE == "pgsql"{
  240.                 $order_id $objQuery->nextval("dtb_order","order_id");
  241.             }elseif (DB_TYPE == "mysql"{
  242.                 $order_id $objQuery->get_auto_increment("dtb_order");
  243.             }
  244.             $arrData["order_id"$order_id;
  245.  
  246.             // セッション情報を保持
  247.             $arrData['session'serialize($_SESSION);
  248.  
  249.             // 集計結果を受注一時テーブルに反映
  250.             $objDb->sfRegistTempOrder($uniqid$arrData);
  251.             // 正常に登録されたことを記録しておく
  252.             $objSiteSess->setRegistFlag();
  253.  
  254.             // 決済方法により画面切替
  255.             if($payment_type != ""{
  256.                 $_SESSION["payment_id"$arrData['payment_id'];
  257.                 $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_MODULE)true);
  258.             }else{
  259.                 $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_COMPLETE)true);
  260.             }
  261.             exit;
  262.             break;
  263.         default:
  264.             break;
  265.         }
  266.         $this->arrData $arrData;
  267.         $this->arrInfo $arrInfo;
  268.         $objView->assignobj($this);
  269.         $objView->display(SITE_FRAME);
  270.     }
  271.  
  272.     /**
  273.      * デストラクタ.
  274.      *
  275.      * @return void 
  276.      */
  277.     function destroy({
  278.         parent::destroy();
  279.     }
  280. }
  281. ?>

Documentation generated on Tue, 28 Apr 2009 18:12:54 +0900 by phpDocumentor 1.4.2