- Timestamp:
- 2011/02/03 18:41:05 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss_Products.php
r20044 r20077 55 55 */ 56 56 function process() { 57 $objQuery = new SC_Query(); 57 $this->action(); 58 } 59 60 /** 61 * Page のアクション. 62 * 63 * @return void 64 */ 65 function action() { 58 66 $objView = new SC_SiteView(); 59 67 $objSiteInfo = new SC_SiteInfo(); 60 68 61 69 //店舗情報をセット 62 70 $this->arrSiteInfo = $objSiteInfo->data; 63 71 64 72 //商品IDを取得 65 $product_id = $_GET['product_id']; 66 //TODO 要リファクタリング(MODE if利用) 73 if ( isset($_GET['product_id']) && $_GET['product_id'] != '' && is_numeric($_GET['product_id']) ) { 74 $product_id = $_GET['product_id']; 75 } else { 76 $product_id = ''; 77 } 78 79 // モードによって分岐 67 80 $mode = $this->getMode(); 68 if(($product_id != "" and is_numeric($product_id)) or $mode == "all"){ 69 //商品詳細を取得 70 ($mode == "all") ? $arrProduct = $this->lfGetProductsDetail($objQuery, $mode) : $arrProduct = $this->lfGetProductsDetail($objQuery, $product_id); 71 72 // 値のセットし直し 73 foreach($arrProduct as $key => $val){ 74 //販売価格を税込みに編集 75 $arrProduct[$key]["price02"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02"]); 76 77 // 画像ファイルのURLセット 78 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_list_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 79 $arrProduct[$key]["main_list_image"] = $dir . $arrProduct[$key]["main_list_image"]; 80 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 81 $arrProduct[$key]["main_image"] = $dir . $arrProduct[$key]["main_image"]; 82 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_large_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 83 $arrProduct[$key]["main_large_image"] = $dir . $arrProduct[$key]["main_large_image"]; 84 85 // ポイント計算 86 $arrProduct[$key]["point"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]); 87 88 // 在庫無制限 89 $arrProduct[$key]["stock_unlimited"] = ($arrProduct[$key]["stock_unlimited"] == 1) ? "在庫無制限" : NULL; 90 } 91 }elseif($mode == "list"){ 92 //商品一覧を取得 93 $arrProduct = $objQuery->getAll("SELECT product_id, name AS product_name FROM dtb_products"); 94 }else{ 95 $arrProduct = $this->lfGetProductsAllclass($objQuery); 96 97 // 値のセットし直し 98 foreach($arrProduct as $key => $val){ 99 //販売価格を税込みに編集 100 $arrProduct[$key]["price02_max"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02_max"]); 101 $arrProduct[$key]["price02_min"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02_min"]); 102 103 // 画像ファイルのURLセット 104 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_list_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 105 $arrProduct[$key]["main_list_image"] = $dir . $arrProduct[$key]["main_list_image"]; 106 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 107 $arrProduct[$key]["main_image"] = $dir . $arrProduct[$key]["main_image"]; 108 (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_large_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL; 109 $arrProduct[$key]["main_large_image"] = $dir . $arrProduct[$key]["main_large_image"]; 110 111 // ポイント計算 112 $arrProduct[$key]["point_max"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_max"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]); 113 $arrProduct[$key]["point_min"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_min"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]); 114 } 115 } 116 117 //商品情報をセット 81 switch ($mode) { 82 case 'all': 83 $arrProduct = $this->lfGetProductsDetailData($mode, $product_id); 84 break; 85 case 'list': 86 if ( $product_id != '' && is_numeric($product_id) ) { 87 $arrProduct = $this->lfGetProductsDetailData($mode, $product_id); 88 } else { 89 $arrProduct = $this->lfGetProductsListData(); 90 } 91 break; 92 default: 93 if ( $product_id != '' && is_numeric($product_id) ) { 94 $arrProduct = $this->lfGetProductsDetailData($mode, $product_id); 95 } else { 96 $arrProduct = $this->lfGetProductsAllData(); 97 } 98 break; 99 } 100 101 // 商品情報をセット 118 102 $this->arrProduct = $arrProduct; 119 if(is_array(SC_Utils_Ex::sfswaparray($arrProduct))){ 120 $this->arrProductKeys = array_keys(SC_Utils_Ex::sfswaparray($arrProduct)); 121 } 122 103 $this->arrProductKeys = $this->lfGetProductKeys($arrProduct); 104 123 105 //セットしたデータをテンプレートファイルに出力 124 106 $objView->assignobj($this); 125 107 126 108 //キャッシュしない(念のため) 127 109 header("Pragma: no-cache"); 128 110 129 111 //XMLテキスト(これがないと正常にRSSとして認識してくれないツールがあるため) 130 112 header("Content-type: application/xml"); 131 113 P_DETAIL_URLPATH; 132 114 133 115 //画面表示 134 116 $objView->display($this->tpl_mainpage, true); … … 142 124 function destroy() { 143 125 parent::destroy(); 126 } 127 128 /** 129 * lfGetProductsDetailData. 130 * 131 * @param str $mode モード 132 * @param str $product_id 商品ID 133 * @return array $arrProduct 商品情報の配列を返す 134 */ 135 function lfGetProductsDetailData($mode, $product_id) { 136 $objQuery = SC_Query::getSingletonInstance(); 137 //商品詳細を取得 138 if ( $mode == 'all' ) { 139 $arrProduct = $this->lfGetProductsDetail($objQuery, $mode); 140 } else { 141 $arrProduct = $this->lfGetProductsDetail($objQuery, $product_id); 142 } 143 // 値の整形 144 foreach ($arrProduct as $key => $val) { 145 //販売価格を税込みに編集 146 $arrProduct[$key]['price02'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02']); 147 // 画像ファイルのURLセット 148 if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image']) ) { 149 $dir = IMAGE_SAVE_RSS_URL; 150 } else { 151 $dir = IMAGE_TEMP_RSS_URL; 152 } 153 $arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image']; 154 if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image']) ){ 155 $dir = IMAGE_SAVE_RSS_URL; 156 } else { 157 $dir = IMAGE_TEMP_RSS_URL; 158 } 159 $arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image']; 160 if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image']) ) { 161 $dir = IMAGE_SAVE_RSS_URL; 162 } else { 163 $dir = IMAGE_TEMP_RSS_URL; 164 } 165 $arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image']; 166 // ポイント計算 167 $arrProduct[$key]['point'] = SC_Utils_Ex::sfPrePoint( 168 $arrProduct[$key]['price02'], 169 $arrProduct[$key]['point_rate'], 170 POINT_RULE, 171 $arrProduct[$key]['product_id'] 172 ); 173 // 在庫無制限 174 if ( $arrProduct[$key]['stock_unlimited'] == 1 ) { 175 $arrProduct[$key]['stock_unlimited'] = '在庫無制限'; 176 } else { 177 $arrProduct[$key]['stock_unlimited'] = NULL; 178 } 179 } 180 return $arrProduct; 181 } 182 183 /** 184 * lfGetProductsListData. 185 * 186 * @return array $arrProduct 商品情報の配列を返す 187 */ 188 function lfGetProductsListData() { 189 $objQuery = SC_Query::getSingletonInstance(); 190 //商品一覧を取得 191 $arrProduct = $objQuery->getAll('SELECT product_id, name AS product_name FROM dtb_products'); 192 return $arrProduct; 193 } 194 195 /** 196 * lfGetProductsAllData. 197 * 198 * @return array $arrProduct 商品情報の配列を返す 199 */ 200 function lfGetProductsAllData() { 201 $objQuery = SC_Query::getSingletonInstance(); 202 //商品情報を取得 203 $arrProduct = $this->lfGetProductsAllclass($objQuery); 204 // 値の整形 205 foreach ($arrProduct as $key => $val) { 206 //販売価格を税込みに編集 207 $arrProduct[$key]['price02_max'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_max']); 208 $arrProduct[$key]['price02_min'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_min']); 209 // 画像ファイルのURLセット 210 if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image']) ) { 211 $dir = IMAGE_SAVE_RSS_URL; 212 } else { 213 $dir = IMAGE_TEMP_RSS_URL; 214 } 215 $arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image']; 216 if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image']) ) { 217 $dir = IMAGE_SAVE_RSS_URL; 218 } else { 219 $dir = IMAGE_TEMP_RSS_URL; 220 } 221 $arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image']; 222 if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image']) ) { 223 $dir = IMAGE_SAVE_RSS_URL; 224 } else { 225 $dir = IMAGE_TEMP_RSS_URL; 226 } 227 $arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image']; 228 // ポイント計算 229 $arrProduct[$key]['point_max'] = SC_Utils_Ex::sfPrePoint( 230 $arrProduct[$key]['price02_max'], 231 $arrProduct[$key]['point_rate'], 232 POINT_RULE, 233 $arrProduct[$key]['product_id'] 234 ); 235 $arrProduct[$key]['point_min'] = SC_Utils_Ex::sfPrePoint( 236 $arrProduct[$key]['price02_min'], 237 $arrProduct[$key]['point_rate'], 238 POINT_RULE, 239 $arrProduct[$key]['product_id'] 240 ); 241 } 242 return $arrProduct; 144 243 } 145 244 … … 151 250 * @return array $arrProduct 取得結果を配列で返す 152 251 */ 153 function lfGetProductsDetail(&$objQuery, $product_id = "all"){ 154 $sql = ""; 155 $sql .= "SELECT "; 156 $sql .= " prod.product_id "; 157 $sql .= " ,prod.name AS product_name "; 158 $sql .= " ,prod.category_id "; 159 $sql .= " ,prod.point_rate "; 160 $sql .= " ,prod.comment3 "; 161 $sql .= " ,prod.main_list_comment "; 162 $sql .= " ,prod.main_list_image "; 163 $sql .= " ,prod.main_comment "; 164 $sql .= " ,prod.main_image "; 165 $sql .= " ,prod.main_large_image "; 166 $sql .= " ,cls.product_code "; 167 $sql .= " ,cls.price01 "; 168 $sql .= " ,cls.price02 "; 169 $sql .= " ,cls.stock "; 170 $sql .= " ,cls.stock_unlimited "; 171 $sql .= " ,cls.classcategory_id1 "; 172 $sql .= " ,cls.classcategory_id2 "; 173 $sql .= " ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id1) AS classcategory_name1 "; 174 $sql .= " ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id2) AS classcategory_name2 "; 175 $sql .= " ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = prod.category_id) AS category_name"; 176 $sql .= " ,prod.update_date "; 177 $sql .= " FROM dtb_products AS prod, dtb_products_class AS cls"; 178 $sql .= " WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1"; 179 180 if($product_id != "all"){ 181 $sql .= " AND prod.product_id = ?"; 252 function lfGetProductsDetail(&$objQuery, $product_id = 'all'){ 253 $sql = ''; 254 $sql .= 'SELECT '; 255 $sql .= ' prod.product_id '; 256 $sql .= ' ,prod.name AS product_name '; 257 $sql .= ' ,prod.category_id '; 258 $sql .= ' ,prod.point_rate '; 259 $sql .= ' ,prod.comment3 '; 260 $sql .= ' ,prod.main_list_comment '; 261 $sql .= ' ,prod.main_list_image '; 262 $sql .= ' ,prod.main_comment '; 263 $sql .= ' ,prod.main_image '; 264 $sql .= ' ,prod.main_large_image '; 265 $sql .= ' ,cls.product_code '; 266 $sql .= ' ,cls.price01 '; 267 $sql .= ' ,cls.price02 '; 268 $sql .= ' ,cls.stock '; 269 $sql .= ' ,cls.stock_unlimited '; 270 $sql .= ' ,cls.classcategory_id1 '; 271 $sql .= ' ,cls.classcategory_id2 '; 272 $sql .= ' ,( '; 273 $sql .= ' SELECT '; 274 $sql .= ' name '; 275 $sql .= ' FROM '; 276 $sql .= ' dtb_classcategory AS clscat '; 277 $sql .= ' WHERE '; 278 $sql .= ' clscat.classcategory_id = cls.classcategory_id1 '; 279 $sql .= ' ) AS classcategory_name1 '; 280 $sql .= ' ,( '; 281 $sql .= ' SELECT '; 282 $sql .= ' name '; 283 $sql .= ' FROM '; 284 $sql .= ' dtb_classcategory AS clscat '; 285 $sql .= ' WHERE '; 286 $sql .= ' clscat.classcategory_id = cls.classcategory_id2 '; 287 $sql .= ' ) AS classcategory_name2 '; 288 $sql .= ' ,( '; 289 $sql .= ' SELECT '; 290 $sql .= ' category_name '; 291 $sql .= ' FROM '; 292 $sql .= ' dtb_category AS cat '; 293 $sql .= ' WHERE '; 294 $sql .= ' cat.category_id = prod.category_id '; 295 $sql .= ' ) AS category_name '; 296 $sql .= ' ,prod.update_date '; 297 $sql .= ' FROM dtb_products AS prod, dtb_products_class AS cls'; 298 $sql .= ' WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1'; 299 300 if($product_id != 'all'){ 301 $sql .= ' AND prod.product_id = ?'; 182 302 $arrval = array($product_id); 183 303 } 184 $sql .= " ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2";304 $sql .= ' ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2'; 185 305 $arrProduct = $objQuery->getAll($sql, $arrval); 186 306 return $arrProduct; … … 195 315 function lfGetProductsAllclass($objQuery){ 196 316 // FIXME SC_Product クラスを使用した実装 197 $sql = ""; 198 $sql .= "SELECT 199 product_id 200 ,name as product_name 201 ,category_id 202 ,point_rate 203 ,comment3 204 ,main_list_comment 205 ,main_image 206 ,main_list_image 207 ,product_code_min 208 ,product_code_max 209 ,price01_min 210 ,price01_max 211 ,price02_min 212 ,price02_max 213 ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = allcls.category_id) AS category_name 214 ,(SELECT main_large_image FROM dtb_products AS prod WHERE prod.product_id = allcls.product_id) AS main_large_image 215 FROM vw_products_allclass as allcls 216 WHERE allcls.del_flg = 0 AND allcls.status = 1"; 317 $sql = ''; 318 $sql .= ' SELECT '; 319 $sql .= ' product_id '; 320 $sql .= ' ,name as product_name '; 321 $sql .= ' ,category_id '; 322 $sql .= ' ,point_rate '; 323 $sql .= ' ,comment3 '; 324 $sql .= ' ,main_list_comment '; 325 $sql .= ' ,main_image '; 326 $sql .= ' ,main_list_image '; 327 $sql .= ' ,product_code_min '; 328 $sql .= ' ,product_code_max '; 329 $sql .= ' ,price01_min '; 330 $sql .= ' ,price01_max '; 331 $sql .= ' ,price02_min '; 332 $sql .= ' ,price02_max '; 333 $sql .= ' ,( '; 334 $sql .= ' SELECT '; 335 $sql .= ' category_name '; 336 $sql .= ' FROM '; 337 $sql .= ' dtb_category AS cat '; 338 $sql .= ' WHERE '; 339 $sql .= ' cat.category_id = allcls.category_id '; 340 $sql .= ' ) AS category_name '; 341 $sql .= ' ,( '; 342 $sql .= ' SELECT '; 343 $sql .= ' main_large_image '; 344 $sql .= ' FROM '; 345 $sql .= ' dtb_products AS prod '; 346 $sql .= ' WHERE '; 347 $sql .= ' prod.product_id = allcls.product_id '; 348 $sql .= ' ) AS main_large_image '; 349 $sql .= ' FROM '; 350 $sql .= ' vw_products_allclass as allcls '; 351 $sql .= ' WHERE '; 352 $sql .= ' allcls.del_flg = 0 AND allcls.status = 1 '; 217 353 218 354 // 在庫無し商品の非表示 … … 221 357 } 222 358 223 $sql .= " ORDER BY allcls.product_id";359 $sql .= ' ORDER BY allcls.product_id'; 224 360 225 361 $arrProduct = $objQuery->getAll($sql); 226 362 return $arrProduct; 227 363 } 364 365 /** 366 * lfGetProductKeys. 367 * 368 * @param array $arrProduct 商品データ配列 369 * @return array $arrProductKeys 商品情報のkey配列を返す 370 */ 371 function lfGetProductKeys($arrProduct) { 372 $arrProductKeys = array(); 373 $arrProduct = SC_Utils_Ex::sfswaparray($arrProduct); 374 if ( is_array($arrProduct) ) { 375 $arrProductKeys = array_keys($arrProduct); 376 } 377 return $arrProductKeys; 378 } 379 228 380 } 229 381 ?>
Note: See TracChangeset
for help on using the changeset viewer.