Changeset 19826
- Timestamp:
- 2011/01/05 17:38:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_Detail.php
r19805 r19826 92 92 $product_id = $this->lfCheckProductId(); 93 93 94 // XXX 削除可能か、SC_SiteViewクラスコンストラクタ内の処理を要確認 94 95 $objView = new SC_SiteView(strlen($_POST['mode']) == 0); 96 95 97 $objCustomer = new SC_Customer(); 96 $objQuery = new SC_Query();97 98 $objDb = new SC_Helper_DB_Ex(); 99 $objProduct = new SC_Product(); 98 100 99 101 // ログイン中のユーザが商品をお気に入りにいれる処理 … … 131 133 132 134 // 規格選択セレクトボックスの作成 133 $this->lfMakeSelect($product_id); 134 135 $objProduct = new SC_Product(); 136 $objProduct->setProductsClassByProductIds(array($product_id)); 137 138 // 規格1クラス名 139 $this->tpl_class_name1 = $objProduct->className1[$product_id]; 140 141 // 規格2クラス名 142 $this->tpl_class_name2 = $objProduct->className2[$product_id]; 143 144 // 規格1 145 $this->arrClassCat1 = $objProduct->classCats1[$product_id]; 146 147 // 規格1が設定されている 148 $this->tpl_classcat_find1 = $objProduct->classCat1_find[$product_id]; 149 // 規格2が設定されている 150 $this->tpl_classcat_find2 = $objProduct->classCat2_find[$product_id]; 151 152 $this->tpl_stock_find = $objProduct->stock_find[$product_id]; 153 $this->tpl_product_class_id = $objProduct->classCategories[$product_id]['']['']['product_class_id']; 154 $this->tpl_product_type = $objProduct->classCategories[$product_id]['']['']['product_type']; 155 156 $objJson = new Services_JSON(); 157 $this->tpl_javascript .= 'classCategories = ' . $objJson->encode($objProduct->classCategories[$product_id]) . ';'; 158 $this->tpl_javascript .= 'function lnOnLoad(){' . $this->js_lnOnload . '}'; 159 $this->tpl_onload .= 'lnOnLoad();'; 160 161 // 商品IDをFORM内に保持する。 135 if(Net_UserAgent_Mobile::isMobile() === true) { 136 $this->lfMakeSelectMobile($this, $product_id); 137 } else { 138 $this->lfMakeSelect($product_id); 139 140 $objProduct->setProductsClassByProductIds(array($product_id)); 141 142 // 規格1クラス名 143 $this->tpl_class_name1 = $objProduct->className1[$product_id]; 144 145 // 規格2クラス名 146 $this->tpl_class_name2 = $objProduct->className2[$product_id]; 147 148 // 規格1 149 $this->arrClassCat1 = $objProduct->classCats1[$product_id]; 150 151 // 規格1が設定されている 152 $this->tpl_classcat_find1 = $objProduct->classCat1_find[$product_id]; 153 // 規格2が設定されている 154 $this->tpl_classcat_find2 = $objProduct->classCat2_find[$product_id]; 155 156 $this->tpl_stock_find = $objProduct->stock_find[$product_id]; 157 $this->tpl_product_class_id = $objProduct->classCategories[$product_id]['']['']['product_class_id']; 158 $this->tpl_product_type = $objProduct->classCategories[$product_id]['']['']['product_type']; 159 160 $objJson = new Services_JSON(); 161 $this->tpl_javascript .= 'classCategories = ' . $objJson->encode($objProduct->classCategories[$product_id]) . ';'; 162 $this->tpl_javascript .= 'function lnOnLoad(){' . $this->js_lnOnload . '}'; 163 $this->tpl_onload .= 'lnOnLoad();'; 164 } 165 166 // 商品IDをFORM内に保持する 162 167 $this->tpl_product_id = $product_id; 163 168 169 // POSTされるmodeにより処理切り替え 164 170 if (!isset($_POST['mode'])) $_POST['mode'] = ""; 171 if(Net_UserAgent_Mobile::isMobile() === true) { 172 $this->lfPostActionMobile(); 173 } else { 174 $this->arrErr = $this->lfPostAction(); 175 } 176 177 // 商品詳細を取得 178 $this->arrProduct = $objProduct->getDetail($product_id); 179 180 // サブタイトルを取得 181 $this->tpl_subtitle = $this->arrProduct['name']; 182 183 // 関連カテゴリを取得 184 $this->arrRelativeCat = $objDb->sfGetMultiCatTree($product_id); 185 186 // 商品ステータスを取得 187 $this->productStatus = $objProduct->getProductStatus($product_id); 188 189 // 画像ファイル指定がない場合の置換処理 190 $this->arrProduct['main_image'] 191 = SC_Utils_Ex::sfNoImageMain($this->arrProduct['main_image']); 192 193 $this->lfSetFile(); 194 // 支払方法の取得 195 $this->arrPayment = $this->lfGetPayment(); 196 // 入力情報を渡す 197 $this->arrForm = $this->objFormParam->getFormParamList(); 198 //レビュー情報の取得 199 $this->arrReview = $this->lfGetReviewData($product_id); 200 // トラックバック情報の取得 201 202 // トラックバック機能の稼働状況チェック 203 if (SC_Utils_Ex::sfGetSiteControlFlg(SITE_CONTROL_TRACKBACK) != 1) { 204 $this->arrTrackbackView = "OFF"; 205 } else { 206 $this->arrTrackbackView = "ON"; 207 $this->arrTrackback = $this->lfGetTrackbackData($product_id); 208 } 209 $this->trackback_url = TRACKBACK_TO_URL . $product_id; 210 //関連商品情報表示 211 $this->arrRecommend = $this->lfPreGetRecommendProducts($product_id); 212 213 $this->lfConvertParam(); 214 } 215 216 /** 217 * デストラクタ. 218 * 219 * @return void 220 */ 221 function destroy() { 222 parent::destroy(); 223 } 224 225 /** 226 * POSTされるmodeにより処理切り替え 227 * 228 * @return array Error messages. 229 */ 230 function lfPostAction() { 165 231 $arrErr = array(); 166 232 167 233 switch($_POST['mode']) { 168 234 case 'cart': … … 210 276 break; 211 277 } 212 $this->arrErr = $arrErr; 213 214 // 商品詳細を取得 215 $this->arrProduct = $objProduct->getDetail($product_id); 216 217 // サブタイトルを取得 218 $this->tpl_subtitle = $this->arrProduct['name']; 219 220 // 関連カテゴリを取得 221 $this->arrRelativeCat = $objDb->sfGetMultiCatTree($product_id); 222 223 // 商品ステータスを取得 224 $this->productStatus = $objProduct->getProductStatus($product_id); 225 226 // 画像ファイル指定がない場合の置換処理 227 $this->arrProduct['main_image'] 228 = SC_Utils_Ex::sfNoImageMain($this->arrProduct['main_image']); 229 230 $this->lfSetFile(); 231 // 支払方法の取得 232 $this->arrPayment = $this->lfGetPayment(); 233 // 入力情報を渡す 234 $this->arrForm = $this->objFormParam->getFormParamList(); 235 //レビュー情報の取得 236 $this->arrReview = $this->lfGetReviewData($product_id); 237 // トラックバック情報の取得 238 239 // トラックバック機能の稼働状況チェック 240 if (SC_Utils_Ex::sfGetSiteControlFlg(SITE_CONTROL_TRACKBACK) != 1) { 241 $this->arrTrackbackView = "OFF"; 242 } else { 243 $this->arrTrackbackView = "ON"; 244 $this->arrTrackback = $this->lfGetTrackbackData($product_id); 245 } 246 $this->trackback_url = TRACKBACK_TO_URL . $product_id; 247 //関連商品情報表示 248 $this->arrRecommend = $this->lfPreGetRecommendProducts($product_id); 249 250 $this->lfConvertParam(); 251 252 //$objView->assignobj($this); 253 //$objView->display(SITE_FRAME); 278 279 return $arrErr; 254 280 } 255 281 256 282 /** 257 * デストラクタ.283 * POSTされるmodeにより処理切り替え(モバイル) 258 284 * 259 285 * @return void 260 286 */ 261 function destroy() { 262 parent::destroy(); 263 } 264 265 /** 266 * モバイルページを初期化する. 267 * 268 * @return void 269 */ 270 function mobileInit() { 271 $this->init(); 272 $this->tpl_mainpage = "products/detail.tpl"; 273 } 274 275 /** 276 * Page のプロセス(モバイル). 277 * @return void 278 */ 279 function mobileProcess() { 280 parent::mobileProcess(); 281 $this->mobileAction(); 282 $this->sendResponse(); 283 } 284 285 /** 286 * Page のAction(モバイル). 287 * 288 * FIXME 要リファクタリング 289 * 290 * @return void 291 */ 292 function mobileAction() { 293 // プロダクトIDの正当性チェック 294 $product_id = $this->lfCheckProductId(); 295 296 //$objView = new SC_MobileView(); 297 $objCustomer = new SC_Customer(); 298 $objQuery = new SC_Query(); 299 $objDb = new SC_Helper_DB_Ex(); 300 301 // パラメータ管理クラス 302 $this->objFormParam = new SC_FormParam(); 303 // パラメータ情報の初期化 304 $this->lfInitParam(); 305 // POST値の取得 306 $this->objFormParam->setParam($_POST); 307 308 // ファイル管理クラス 309 $this->objUpFile = new SC_UploadFile(IMAGE_TEMP_REALDIR, IMAGE_SAVE_REALDIR); 310 // ファイル情報の初期化 311 $this->lfInitFile(); 312 313 // ログイン判定 314 if($objCustomer->isLoginSuccess(true)) { 315 //お気に入りボタン表示 316 $this->tpl_login = true; 317 } 318 319 // 規格選択セレクトボックスの作成 320 $this->lfMakeSelectMobile($this, $product_id); 321 322 // 商品IDをFORM内に保持する。 323 $this->tpl_product_id = $product_id; 324 287 function lfPostActionMobile() { 325 288 switch($_POST['mode']) { 326 case 'select': 327 // 規格1が設定されている場合 328 if($this->tpl_classcat_find1) { 329 // templateの変更 330 $this->tpl_mainpage = "products/select_find1.tpl"; 289 case 'select': 290 // 規格1が設定されている場合 291 if($this->tpl_classcat_find1) { 292 // templateの変更 293 $this->tpl_mainpage = "products/select_find1.tpl"; 294 break; 295 } 296 297 case 'select2': 298 $this->arrErr = $this->lfCheckError(); 299 300 // 規格1が設定されている場合 301 if($this->tpl_classcat_find1 and $this->arrErr['classcategory_id1']) { 302 // templateの変更 303 $this->tpl_mainpage = "products/select_find1.tpl"; 304 break; 305 } 306 307 // 規格2が設定されている場合 308 if($this->tpl_classcat_find2) { 309 $this->arrErr = array(); 310 311 $this->tpl_mainpage = "products/select_find2.tpl"; 312 break; 313 } 314 315 case 'selectItem': 316 $this->arrErr = $this->lfCheckError(); 317 318 // 規格1が設定されている場合 319 if($this->tpl_classcat_find2 and $this->arrErr['classcategory_id2']) { 320 // templateの変更 321 $this->tpl_mainpage = "products/select_find2.tpl"; 322 break; 323 } 324 // 商品数の選択を行う 325 $this->tpl_mainpage = "products/select_item.tpl"; 331 326 break; 332 } 333 334 case 'select2': 335 $this->arrErr = $this->lfCheckError(); 336 337 // 規格1が設定されている場合 338 if($this->tpl_classcat_find1 and $this->arrErr['classcategory_id1']) { 339 // templateの変更 340 $this->tpl_mainpage = "products/select_find1.tpl"; 327 328 case 'cart': 329 // 入力値の変換 330 $this->objFormParam->convParam(); 331 $this->arrErr = $this->lfCheckError(); 332 if(count($this->arrErr) == 0) { 333 $objCartSess = new SC_CartSession(); 334 $product_class_id = $_POST['product_class_id']; 335 $classcategory_id1 = $_POST['classcategory_id1']; 336 $classcategory_id2 = $_POST['classcategory_id2']; 337 338 // 規格1が設定されていない場合 339 if(!$this->tpl_classcat_find1) { 340 $classcategory_id1 = '0'; 341 } 342 343 // 規格2が設定されていない場合 344 if(!$this->tpl_classcat_find2) { 345 $classcategory_id2 = '0'; 346 } 347 348 $objCartSess->addProduct(array($_POST['product_id'], $product_class_id, $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); 349 $this->objDisplay->redirect($this->getLocation(URL_CART_TOP)); 350 exit; 351 } 341 352 break; 342 } 343 344 // 規格2が設定されている場合 345 if($this->tpl_classcat_find2) { 346 $this->arrErr = array(); 347 348 $this->tpl_mainpage = "products/select_find2.tpl"; 353 354 default: 355 $this->tpl_mainpage = "products/detail.tpl"; 349 356 break; 350 } 351 352 case 'selectItem': 353 $this->arrErr = $this->lfCheckError(); 354 355 // 規格1が設定されている場合 356 if($this->tpl_classcat_find2 and $this->arrErr['classcategory_id2']) { 357 // templateの変更 358 $this->tpl_mainpage = "products/select_find2.tpl"; 359 break; 360 } 361 // 商品数の選択を行う 362 $this->tpl_mainpage = "products/select_item.tpl"; 363 break; 364 365 case 'cart': 366 // 入力値の変換 367 $this->objFormParam->convParam(); 368 $this->arrErr = $this->lfCheckError(); 369 if(count($this->arrErr) == 0) { 370 $objCartSess = new SC_CartSession(); 371 $product_class_id = $_POST['product_class_id']; 372 $classcategory_id1 = $_POST['classcategory_id1']; 373 $classcategory_id2 = $_POST['classcategory_id2']; 374 375 // 規格1が設定されていない場合 376 if(!$this->tpl_classcat_find1) { 377 $classcategory_id1 = '0'; 378 } 379 380 // 規格2が設定されていない場合 381 if(!$this->tpl_classcat_find2) { 382 $classcategory_id2 = '0'; 383 } 384 385 $objCartSess->addProduct(array($_POST['product_id'], $product_class_id, $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); 386 $this->objDisplay->redirect($this->getLocation(MOBILE_URL_CART_TOP)); 387 exit; 388 } 389 break; 390 391 default: 392 break; 393 } 394 395 // 商品詳細を取得 396 $objProduct = new SC_Product(); 397 $this->arrProduct = $objProduct->getDetail($product_id); 398 399 // サブタイトルを取得 400 $this->tpl_subtitle = $this->arrProduct["name"]; 401 402 // 画像ファイル指定がない場合の置換処理 403 $this->arrProduct['main_image'] 404 = SC_Utils_Ex::sfNoImageMain($this->arrProduct['main_image']); 405 406 // ファイル情報のセット 407 $this->lfSetFile(); 408 // 支払方法の取得 409 $this->arrPayment = $this->lfGetPayment(); 410 // 入力情報を渡す 411 $this->arrForm = $this->objFormParam->getFormParamList(); 412 //レビュー情報の取得 413 $this->arrReview = $this->lfGetReviewData($product_id); 414 // タイトルに商品名を入れる 415 $this->tpl_title = "商品詳細 ". $this->arrProduct["name"]; 416 //関連商品情報表示 417 $this->arrRecommend = $this->lfPreGetRecommendProducts($product_id); 418 419 //$objView->assignobj($this); 420 //$objView->display(SITE_FRAME); 357 } 421 358 } 422 359 … … 484 421 } 485 422 486 /* 規格選択セレクトボックスの作成 487 * FIXME 要リファクタリング 488 */ 423 /* 規格選択セレクトボックスの作成(モバイル) */ 489 424 function lfMakeSelectMobile(&$objPage, $product_id) { 490 425 … … 569 504 /* 商品規格情報の取得 */ 570 505 function lfGetProductsClass($product_id) { 571 $arrRet = array(); 572 if(SC_Utils_Ex::sfIsInt($product_id)) { 573 // 商品規格取得 574 $objQuery = new SC_Query(); 575 $col = "product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited"; 576 $table = "vw_product_class AS prdcls"; 577 $where = "product_id = ?"; 578 $objQuery->setOrder("rank1 DESC, rank2 DESC"); 579 $arrRet = $objQuery->select($col, $table, $where, array($product_id)); 580 } 581 return $arrRet; 506 $objProduct = new SC_Product(); 507 return $objProduct->getProductsClassFullByProductId($product_id); 582 508 } 583 509
Note: See TracChangeset
for help on using the changeset viewer.