source: branches/feature-module-update/data/class/pages/cart/LC_Page_Cart.php @ 16401

Revision 16401, 9.2 KB checked in by nanasess, 15 years ago (diff)

不要な $tpl_css を削除

  • 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// {{{ requires
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/**
12 * カート のページクラス.
13 *
14 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id:LC_Page_Cart.php 15532 2007-08-31 14:39:46Z nanasess $
17 */
18class LC_Page_Cart extends LC_Page {
19
20    // {{{ properties
21
22    /** セッションの配列 */
23    var $arrSession;
24
25    /** カテゴリの配列 */
26    var $arrProductsClass;
27
28    /** 商品規格情報の配列 */
29    var $arrData;
30
31    // }}}
32    // {{{ functions
33
34    /**
35     * Page を初期化する.
36     *
37     * @return void
38     */
39    function init() {
40        parent::init();
41        $this->tpl_mainpage = 'cart/index.tpl';
42        $this->tpl_column_num = 1;
43        $this->tpl_title = "カゴの中を見る";
44    }
45
46    /**
47     * Page のプロセス.
48     *
49     * @return void
50     */
51    function process() {
52        $objView = new SC_SiteView(false);
53        $objCartSess = new SC_CartSession("", false);
54        $objSiteSess = new SC_SiteSession();
55        $objCampaignSess = new SC_CampaignSession();
56        $objSiteInfo = $objView->objSiteInfo;
57        $objCustomer = new SC_Customer();
58        $db = new SC_Helper_DB_Ex();
59        // 基本情報の取得
60        $arrInfo = $objSiteInfo->data;
61
62        // 商品購入中にカート内容が変更された。
63        if($objCartSess->getCancelPurchase()) {
64            $this->tpl_message = "商品購入中にカート内容が変更されましたので、お手数ですが購入手続きをやり直して下さい。";
65        }
66
67        if (!isset($_POST['mode'])) $_POST['mode'] = "";
68
69        /*
70         * FIXME reload() を使った方が良いが無限ループしてしまう...
71         */
72        switch($_POST['mode']) {
73        case 'up':
74            $objCartSess->upQuantity($_POST['cart_no']);
75            SC_Utils_Ex::sfReload();
76            break;
77        case 'down':
78            $objCartSess->downQuantity($_POST['cart_no']);
79            SC_Utils_Ex::sfReload();
80            break;
81        case 'delete':
82            $objCartSess->delProduct($_POST['cart_no']);
83            SC_Utils_Ex::sfReload();
84            break;
85        case 'confirm':
86            // カート内情報の取得
87            $arrRet = $objCartSess->getCartList();
88            $max = count($arrRet);
89            $cnt = 0;
90            for ($i = 0; $i < $max; $i++) {
91                // 商品規格情報の取得
92                $this->arrData = $db->sfGetProductsClass($arrRet[$i]['id']);
93                // DBに存在する商品
94                if($this->arrData != "") {
95                    $cnt++;
96                }
97            }
98            // カート商品が1件以上存在する場合
99            if($cnt > 0) {
100                // 正常に登録されたことを記録しておく
101                $objSiteSess->setRegistFlag();
102                $pre_uniqid = $objSiteSess->getUniqId();
103                // 注文一時IDの発行
104                $objSiteSess->setUniqId();
105                $uniqid = $objSiteSess->getUniqId();
106                // エラーリトライなどで既にuniqidが存在する場合は、設定を引き継ぐ
107                if($pre_uniqid != "") {
108                    $sqlval['order_temp_id'] = $uniqid;
109                    $where = "order_temp_id = ?";
110                    $objQuery = new SC_Query();
111                    $objQuery->update("dtb_order_temp", $sqlval, $where, array($pre_uniqid));
112                }
113                // カートを購入モードに設定
114                $objCartSess->saveCurrentCart($uniqid);
115                // 購入ページへ
116                $this->sendRedirect(URL_SHOP_TOP);
117            }
118            break;
119        default:
120            break;
121        }
122
123        // カート集計処理
124        $db->sfTotalCart($this, $objCartSess, $arrInfo);
125        $this->arrData = $db->sfTotalConfirm($this->arrData, $this, $objCartSess, $arrInfo, $objCustomer);
126
127        $this->arrInfo = $arrInfo;
128
129        // ログイン判定
130        if($objCustomer->isLoginSuccess()) {
131            $this->tpl_login = true;
132            $this->tpl_user_point = $objCustomer->getValue('point');
133            $this->tpl_name = $objCustomer->getValue('name01');
134        }
135
136        // 送料無料までの金額を計算
137        $this->tpl_deliv_free = $this->arrInfo['free_rule'] - $this->tpl_total_pretax;
138
139        // 前頁のURLを取得
140        $this->tpl_prev_url = $objCartSess->getPrevURL();
141
142        $objView->assignobj($this);
143        // フレームを選択(キャンペーンページから遷移なら変更)
144        $objCampaignSess->pageView($objView);
145    }
146
147    /**
148     * モバイルページを初期化する.
149     *
150     * @return void
151     */
152    function mobileInit() {
153        $this->init();
154    }
155
156    /**
157     * Page のプロセス(モバイル).
158     *
159     * @return void
160     */
161    function mobileProcess() {
162
163        // 買い物を続ける場合
164        if (!isset($_REQUEST['continue'])) $_REQUEST['continue'] = "";
165        if($_REQUEST['continue']) {
166            $this->sendRedirect($this->getLocation(MOBILE_URL_SITE_TOP), true);
167            exit;
168        }
169
170        $objView = new SC_MobileView(false);
171        $objCartSess = new SC_CartSession("", false);
172        $objSiteSess = new SC_SiteSession();
173        $objSiteInfo = $objView->objSiteInfo;
174        $objCustomer = new SC_Customer();
175        $objDb = new SC_Helper_DB_Ex();
176
177        // 基本情報の取得
178        $arrInfo = $objSiteInfo->data;
179
180        // 商品購入中にカート内容が変更された。
181        if($objCartSess->getCancelPurchase()) {
182            $this->tpl_message = "商品購入中にカート内容が変更されましたので、お手数ですが購入手続きをやり直して下さい。";
183        }
184
185        if (!isset($_POST['mode'])) $_POST['mode'] = "";
186
187        switch($_POST['mode']) {
188        case 'confirm':
189            // カート内情報の取得
190            $arrRet = $objCartSess->getCartList();
191            $max = count($arrRet);
192            $cnt = 0;
193            for ($i = 0; $i < $max; $i++) {
194                // 商品規格情報の取得
195                $arrData = $objDb->sfGetProductsClass($arrRet[$i]['id']);
196                // DBに存在する商品
197                if($arrData != "") {
198                    $cnt++;
199                }
200            }
201            // カート商品が1件以上存在する場合
202            if($cnt > 0) {
203                // 正常に登録されたことを記録しておく
204                $objSiteSess->setRegistFlag();
205                $pre_uniqid = $objSiteSess->getUniqId();
206                // 注文一時IDの発行
207                $objSiteSess->setUniqId();
208                $uniqid = $objSiteSess->getUniqId();
209                // エラーリトライなどで既にuniqidが存在する場合は、設定を引き継ぐ
210                if($pre_uniqid != "") {
211                    $sqlval['order_temp_id'] = $uniqid;
212                    $where = "order_temp_id = ?";
213                    $objQuery = new SC_Query();
214                    $objQuery->update("dtb_order_temp", $sqlval, $where, array($pre_uniqid));
215                }
216                // カートを購入モードに設定
217                $objCartSess->saveCurrentCart($uniqid);
218                // 購入ページへ
219                $this->sendRedirect(MOBILE_URL_SHOP_TOP, true);
220                exit;
221            }
222            break;
223        default:
224            break;
225        }
226
227        if (!isset($_GET['mode'])) $_GET['mode'] = "";
228
229        /*
230         * FIXME sendRedirect() を使った方が良いが無限ループしてしまう...
231         */
232        switch($_GET['mode']) {
233        case 'up':
234            $objCartSess->upQuantity($_GET['cart_no']);
235            SC_Utils_Ex::sfReload(session_name() . "=" . session_id());
236            break;
237        case 'down':
238            $objCartSess->downQuantity($_GET['cart_no']);
239            SC_Utils_Ex::sfReload(session_name() . "=" . session_id());
240            break;
241        case 'delete':
242            $objCartSess->delProduct($_GET['cart_no']);
243            SC_Utils_Ex::sfReload(session_name() . "=" . session_id());
244            break;
245        }
246
247        // カート集計処理
248        if (empty($arrData)) {
249            $arrData = array();
250        }
251        $objDb->sfTotalCart($this, $objCartSess, $arrInfo);
252        $this->arrData = $objDb->sfTotalConfirm($arrData, $this, $objCartSess, $arrInfo, $objCustomer);
253
254        $this->arrInfo = $arrInfo;
255
256        // ログイン判定
257        if($objCustomer->isLoginSuccess(true)) {
258            $this->tpl_login = true;
259            $this->tpl_user_point = $objCustomer->getValue('point');
260            $this->tpl_name = $objCustomer->getValue('name01');
261        }
262
263        // 送料無料までの金額を計算
264        $tpl_deliv_free = $this->arrInfo['free_rule'] - $this->tpl_total_pretax;
265        $this->tpl_deliv_free = $tpl_deliv_free;
266
267        // 前頁のURLを取得
268        $this->tpl_prev_url = $objCartSess->getPrevURL();
269
270        $objView->assignobj($this);
271        $objView->display(SITE_FRAME);
272    }
273
274    /**
275     * デストラクタ.
276     *
277     * @return void
278     */
279    function destroy() {
280        parent::destroy();
281    }
282}
283?>
Note: See TracBrowser for help on using the repository browser.