Changeset 20282
- Timestamp:
- 2011/02/21 02:18:18 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/cart/LC_Page_Cart.php
r20116 r20282 48 48 var $arrData; 49 49 50 /** 動作モード */ 51 var $mode; 52 53 50 54 // }}} 51 55 // {{{ functions … … 85 89 $objSiteInfo = $objView->objSiteInfo; 86 90 $objCustomer = new SC_Customer(); 91 92 $objFormParam = $this->lfInitParam($_REQUEST); 93 $this->mode = $this->getMode(); 87 94 88 95 $this->cartKeys = $objCartSess->getKeys(); … … 95 102 $this->cartItems =& $objCartSess->getAllCartList(); 96 103 97 //TODO: 要リファクタリング(MODE switch 2か所で行われている) 98 switch($this->getMode()) { 104 $cart_no = $objFormParam->getValue('cart_no'); 105 $cartKey = $objFormParam->getValue('cartKey'); 106 107 switch($this->mode) { 99 108 case 'confirm': 100 109 // カート内情報の取得 101 $cartKey = $_POST['cartKey'];102 110 $cartList = $objCartSess->getCartList($cartKey); 103 111 // カート商品が1件以上存在する場合 104 112 if(count($cartList) > 0) { 105 // 正常に登録されたことを記録しておく106 $objSiteSess->setRegistFlag();107 $pre_uniqid = $objSiteSess->getUniqId();108 // 注文一時IDの発行109 $objSiteSess->setUniqId();110 $uniqid = $objSiteSess->getUniqId();111 // エラーリトライなどで既にuniqidが存在する場合は、設定を引き継ぐ112 if($pre_uniqid != "") {113 $sqlval['order_temp_id'] = $uniqid;114 $where = "order_temp_id = ?";115 $objQuery = new SC_Query();116 $objQuery->update("dtb_order_temp", $sqlval, $where, array($pre_uniqid));117 }118 113 // カートを購入モードに設定 119 $ objCartSess->saveCurrentCart($uniqid, $cartKey);114 $this->lfSetCurrentCart($objSiteSess,$objCartSess); 120 115 // 購入ページへ 121 116 SC_Response_Ex::sendRedirect(SHOPPING_URL); … … 123 118 } 124 119 break; 125 default: 126 break; 127 } 128 129 // 商品の個数変更、削除処理 130 /* 131 * FIXME モバイルの場合 sfReload() ではなく sendRedirect() を使った方が良いが無限ループしてしまう... 132 */ 133 //TODO: 要リファクタリング(MODE switch 2か所で行われている) 134 switch($this->getMode()) { 135 case 'up': 136 if(Net_UserAgent_Mobile::isMobile() === true) { 137 $objCartSess->upQuantity($_GET['cart_no'], $_GET['cartKey']); 138 SC_Utils_Ex::sfReload(session_name() . "=" . session_id()); 139 } else { 140 $objCartSess->upQuantity($_POST['cart_no'], $_POST['cartKey']); 141 $this->objDisplay->reload(); // PRG pattern 142 } 143 break; 144 case 'down': 145 if(Net_UserAgent_Mobile::isMobile() === true) { 146 $objCartSess->downQuantity($_GET['cart_no'], $_GET['cartKey']); 147 SC_Utils_Ex::sfReload(session_name() . "=" . session_id()); 148 } else { 149 $objCartSess->downQuantity($_POST['cart_no'], $_POST['cartKey']); 150 $this->objDisplay->reload(); // PRG pattern 151 } 152 break; 153 case 'delete': 154 if(Net_UserAgent_Mobile::isMobile() === true) { 155 $objCartSess->delProduct($_GET['cart_no'], $_GET['cartKey']); 156 SC_Utils_Ex::sfReload(session_name() . "=" . session_id()); 157 } else { 158 $objCartSess->delProduct($_POST['cart_no'], $_POST['cartKey']); 159 $this->objDisplay->reload(); // PRG pattern 160 } 120 case 'up'://1個追加 121 $objCartSess->upQuantity($cart_no, $cartKey); 122 //SC_Response_Ex::reload(); 123 $this->lfReload(); 124 break; 125 case 'down'://1個減らす 126 $objCartSess->downQuantity($cart_no, $cartKey); 127 //SC_Response_Ex::reload(); 128 $this->lfReload(); 129 break; 130 case 'delete'://カートから削除 131 $objCartSess->delProduct($cart_no, $cartKey); 132 //SC_Response_Ex::reload(); 133 $this->lfReload(); 161 134 break; 162 135 default: … … 188 161 // 前頁のURLを取得 189 162 // TODO: SC_CartSession::setPrevURL()利用不可。 190 if (!preg_match("/cart/", $_SERVER['HTTP_REFERER'])) { 191 if (!empty($_SESSION['cart_referer_url'])) { 192 $_SESSION['cart_prev_url'] = $_SESSION['cart_referer_url']; 193 unset($_SESSION['cart_referer_url']); 163 $this->lfGetCartPrevUrl($_SESSION,$_SERVER['HTTP_REFERER']); 164 165 $this->tpl_prev_url = (isset($_SESSION['cart_prev_url'])) ? $_SESSION['cart_prev_url'] : ''; 166 } 167 168 /** 169 * デストラクタ. 170 * 171 * @return void 172 */ 173 function destroy() { 174 parent::destroy(); 175 } 176 177 178 /** 179 * ユーザ入力値の処理 180 * 181 * @return object 182 */ 183 function lfInitParam($arrRequest) { 184 $objFormParam = new SC_FormParam(); 185 $objFormParam->addParam("カートキー", "cartKey", INT_LEN, "n", array('NUM_CHECK',"MAX_LENGTH_CHECK")); 186 $objFormParam->addParam("カートナンバー", "cart_no", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK")); 187 // 値の取得 188 $objFormParam->setParam($arrRequest); 189 // 入力値の変換 190 $objFormParam->convParam(); 191 return $objFormParam; 192 } 193 194 /** 195 * order_temp_id の更新 196 * 197 * @return 198 */ 199 function lfUpdateOrderTempid($pre_uniqid,$uniqid){ 200 $sqlval['order_temp_id'] = $uniqid; 201 $where = "order_temp_id = ?"; 202 $objQuery =& SC_Query::getSingletonInstance(); 203 $res = $objQuery->update("dtb_order_temp", $sqlval, $where, array($pre_uniqid)); 204 if($res != 1){ 205 return false; 206 } 207 return true; 208 } 209 210 /** 211 * 前頁のURLを取得 212 * 213 * @return void 214 */ 215 function lfGetCartPrevUrl(&$session,$referer){ 216 if (!preg_match("/cart/", $referer)) { 217 if (!empty($session['cart_referer_url'])) { 218 $session['cart_prev_url'] = $session['cart_referer_url']; 219 unset($session['cart_referer_url']); 194 220 } else { 195 if (preg_match("/entry/", $ _SERVER['HTTP_REFERER'])) {196 $ _SESSION['cart_prev_url'] = HTTPS_URL . 'entry/kiyaku.php';221 if (preg_match("/entry/", $referer)) { 222 $session['cart_prev_url'] = HTTPS_URL . 'entry/kiyaku.php'; 197 223 } else { 198 $ _SESSION['cart_prev_url'] = $_SERVER['HTTP_REFERER'];224 $session['cart_prev_url'] = $referer; 199 225 } 200 226 } 201 227 } 202 228 // 妥当性チェック 203 if (!SC_Utils_Ex::sfIsInternalDomain($_SESSION['cart_prev_url'])) { 204 $_SESSION['cart_prev_url'] = ''; 205 } 206 207 $this->tpl_prev_url = (isset($_SESSION['cart_prev_url'])) ? $_SESSION['cart_prev_url'] : ''; 208 } 209 210 /** 211 * デストラクタ. 212 * 213 * @return void 214 */ 215 function destroy() { 216 parent::destroy(); 229 if (!SC_Utils_Ex::sfIsInternalDomain($session['cart_prev_url'])) { 230 $session['cart_prev_url'] = ''; 231 } 232 } 233 234 /** 235 * カートを購入モードに設定 236 * 237 * @return void 238 */ 239 function lfSetCurrentCart(&$objSiteSess,&$objCartSess){ 240 // 正常に登録されたことを記録しておく 241 $objSiteSess->setRegistFlag(); 242 $pre_uniqid = $objSiteSess->getUniqId(); 243 // 注文一時IDの発行 244 $objSiteSess->setUniqId(); 245 $uniqid = $objSiteSess->getUniqId(); 246 // エラーリトライなどで既にuniqidが存在する場合は、設定を引き継ぐ 247 if($pre_uniqid != "") { 248 $this->lfUpdateOrderTempid($pre_uniqid,$uniqid); 249 } 250 // カートを購入モードに設定 251 $objCartSess->saveCurrentCart($uniqid, $cartKey); 252 } 253 254 /** 255 * 端末ごとのリロード処理 256 * 257 * @return void 258 */ 259 function lfReload(){ 260 //FIXME SC_Response_Ex::reload()だと携帯で無限リダイレクト 261 if(SC_Display::detectDevice() == DEVICE_TYPE_MOBILE){ 262 $_SERVER['REQUEST_URI'] = str_replace("mode=delete","",$_SERVER['REQUEST_URI']); 263 $_SERVER['REQUEST_URI'] = str_replace("mode=up","",$_SERVER['REQUEST_URI']); 264 $_SERVER['REQUEST_URI'] = str_replace("mode=down","",$_SERVER['REQUEST_URI']); 265 $_SERVER['REQUEST_URI'] = str_replace("&&","&",$_SERVER['REQUEST_URI']); 266 $this->objDisplay->reload(); 267 exit; 268 } 269 SC_Response_Ex::reload(); 217 270 } 218 271 }
Note: See TracChangeset
for help on using the changeset viewer.