/** * セッションに保持している情報を破棄する. * * 通常、受注処理(completeOrder)完了後に呼び出され、 * セッション情報を破棄する. * * 決済モジュール画面から確認画面に「戻る」場合を考慮し、 * セッション情報を破棄しないカスタマイズを、モジュール側で * 加える機会を与える. * * $orderId が使われていない。 * * @param integer $orderId 注文番号 * @param SC_CartSession $objCartSession カート情報のインスタンス * @param SC_Customer $objCustomer SC_Customer インスタンス * @param integer $cartKey 登録を行うカート情報のキー */ public function cleanupSession($orderId, &$objCartSession, &$objCustomer, $cartKey) { // カートの内容を削除する. $objCartSession->delAllProducts($cartKey); SC_SiteSession_Ex::unsetUniqId(); // セッションの配送情報を破棄する. $this->unsetAllShippingTemp(true); $objCustomer->updateSession(); }
/** * Page のプロセス. * * @return void */ function process() { $objView = new SC_SiteView(); $objCustomer = new SC_Customer(); $objQuery = new SC_Query(); $objDb = new SC_Helper_DB_Ex(); // レイアウトデザインを取得 $helper = new SC_Helper_PageLayout_Ex(); $helper->sfGetPageLayout($this, false, "products/detail.php"); // ログイン中のユーザが商品をお気に入りにいれる処理 if ($objCustomer->isLoginSuccess() === true && strlen($_POST['mode']) > 0 && $_POST['mode'] == "add_favorite" && strlen($_POST['favorite_product_id']) > 0) { // 値の正当性チェック if (!SC_Utils_Ex::sfIsInt($_POST['favorite_product_id']) || !$objDb->sfIsRecord("dtb_products", "product_id", $_POST['favorite_product_id'], "del_flg = 0 AND status = 1")) { SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND); exit; } else { $this->arrErr = $this->lfCheckError(); if (count($this->arrErr) == 0) { $customer_id = $objCustomer->getValue('customer_id'); $this->lfRegistFavoriteProduct($customer_id, $_POST['favorite_product_id']); } } } // パラメータ管理クラス $this->objFormParam = new SC_FormParam(); // パラメータ情報の初期化 $this->lfInitParam(); // POST値の取得 $this->objFormParam->setParam($_POST); // ファイル管理クラス $this->objUpFile = new SC_UploadFile(IMAGE_TEMP_DIR, IMAGE_SAVE_DIR); // ファイル情報の初期化 $this->lfInitFile(); // 管理ページからの確認の場合は、非公開の商品も表示する。 if (isset($_GET['admin']) && $_GET['admin'] == 'on') { SC_Utils_Ex::sfIsSuccess(new SC_Session()); $status = true; $where = "del_flg = 0"; } else { $status = false; $where = "del_flg = 0 AND status = 1"; } if (isset($_POST['mode']) && $_POST['mode'] != "") { $tmp_id = $_POST['product_id']; } else { $tmp_id = $_GET['product_id']; } // 値の正当性チェック if (!SC_Utils_Ex::sfIsInt($_GET['product_id']) || !$objDb->sfIsRecord("dtb_products", "product_id", $tmp_id, $where)) { SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND); } // ログイン判定 if ($objCustomer->isLoginSuccess() === true) { //お気に入りボタン表示 $this->tpl_login = true; /* 閲覧ログ機能は現在未使用 $table = "dtb_customer_reading"; $where = "customer_id = ? "; $arrval[] = $objCustomer->getValue('customer_id'); //顧客の閲覧商品数 $rpcnt = $objQuery->count($table, $where, $arrval); //閲覧数が設定数以下 if ($rpcnt < CUSTOMER_READING_MAX){ //閲覧履歴に新規追加 lfRegistReadingData($tmp_id, $objCustomer->getValue('customer_id')); } else { //閲覧履歴の中で一番古いものを削除して新規追加 $oldsql = "SELECT MIN(update_date) FROM ".$table." WHERE customer_id = ?"; $old = $objQuery->getone($oldsql, array($objCustomer->getValue("customer_id"))); $where = "customer_id = ? AND update_date = ? "; $arrval = array($objCustomer->getValue("customer_id"), $old); //削除 $objQuery->delete($table, $where, $arrval); //追加 lfRegistReadingData($tmp_id, $objCustomer->getValue('customer_id')); } */ } // 規格選択セレクトボックスの作成 $this->lfMakeSelect($tmp_id); // 商品IDをFORM内に保持する。 $this->tpl_product_id = $tmp_id; if (!isset($_POST['mode'])) { $_POST['mode'] = ""; } switch ($_POST['mode']) { case 'cart': // 入力値の変換 $this->objFormParam->convParam(); $this->arrErr = $this->lfCheckError(); if (count($this->arrErr) == 0) { $objCartSess = new SC_CartSession(); $classcategory_id1 = $_POST['classcategory_id1']; $classcategory_id2 = $_POST['classcategory_id2']; if (!empty($_POST['gmo_oneclick'])) { $objCartSess->delAllProducts(); } // 規格1が設定されていない場合 if (!$this->tpl_classcat_find1) { $classcategory_id1 = '0'; } // 規格2が設定されていない場合 if (!$this->tpl_classcat_find2) { $classcategory_id2 = '0'; } $objCartSess->setPrevURL($_SERVER['REQUEST_URI']); $objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); if (!empty($_POST['gmo_oneclick'])) { $objSiteSess = new SC_SiteSession(); $objSiteSess->setRegistFlag(); $objCartSess->saveCurrentCart($objSiteSess->getUniqId()); $this->sendRedirect($this->getLocation(URL_DIR . 'user_data/gmopg_oneclick_confirm.php', array(), true)); exit; } $this->sendRedirect($this->getLocation(URL_CART_TOP)); exit; } break; default: break; } $objQuery = new SC_Query(); // DBから商品情報を取得する。 $arrRet = $objQuery->select("*, (SELECT count(*) FROM dtb_customer_favorite_products WHERE product_id = alldtl.product_id AND customer_id = ?) AS favorite_count", "vw_products_allclass_detail AS alldtl", "product_id = ?", array($objCustomer->getValue('customer_id'), $tmp_id)); $this->arrProduct = $arrRet[0]; // 商品コードの取得 $code_sql = "SELECT product_code FROM dtb_products_class AS prdcls WHERE prdcls.product_id = ? GROUP BY product_code ORDER BY product_code"; $arrProductCode = $objQuery->getall($code_sql, array($tmp_id)); $arrProductCode = SC_Utils_Ex::sfswaparray($arrProductCode); $this->arrProductCode = $arrProductCode["product_code"]; // 購入制限数を取得 if ($this->arrProduct['sale_unlimited'] == 1 || $this->arrProduct['sale_limit'] > SALE_LIMIT_MAX) { $this->tpl_sale_limit = SALE_LIMIT_MAX; } else { $this->tpl_sale_limit = $this->arrProduct['sale_limit']; } // サブタイトルを取得 $arrCategory_id = $objDb->sfGetCategoryId($arrRet[0]['product_id'], '', $status); $arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]); $this->tpl_subtitle = $arrFirstCat['name']; // 関連カテゴリを取得 $this->arrRelativeCat = $objDb->sfGetMultiCatTree($tmp_id); // DBからのデータを引き継ぐ $this->objUpFile->setDBFileList($this->arrProduct); // ファイル表示用配列を渡す $this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL, true); // 支払方法の取得 $this->arrPayment = $this->lfGetPayment(); // 入力情報を渡す $this->arrForm = $this->objFormParam->getFormParamList(); //レビュー情報の取得 $this->arrReview = $this->lfGetReviewData($tmp_id); // トラックバック情報の取得 // トラックバック機能の稼働状況チェック if (SC_Utils_Ex::sfGetSiteControlFlg(SITE_CONTROL_TRACKBACK) != 1) { $this->arrTrackbackView = "OFF"; } else { $this->arrTrackbackView = "ON"; $this->arrTrackback = $this->lfGetTrackbackData($tmp_id); } $this->trackback_url = TRACKBACK_TO_URL . $tmp_id; // タイトルに商品名を入れる $this->tpl_title = "商品詳細 " . $this->arrProduct["name"]; //オススメ商品情報表示 $this->arrRecommend = $this->lfPreGetRecommendProducts($tmp_id); //この商品を買った人はこんな商品も買っています $this->arrRelateProducts = $this->lfGetRelateProducts($tmp_id); $this->lfConvertParam(); $objView->assignobj($this); $objView->display(SITE_FRAME); }