[Svn-src-all:1189] [version-2_5-dev 20077] #983 リファクタリング
yomoro
admin @ mail.ec-cube.net
2011年 2月 3日 (木) 18:41:06 JST
Subversion committed to /home/svn/open 20077
http://svn.ec-cube.net/open_trac/changeset/20077
┌────────────────────────────┐
│更新者 : yomoro │
│更新日時: 2011-02-03 18:41:05 +0900 (木, 03 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#983 リファクタリング
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss.php
U branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss_Products.php
変更: branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss.php 2011-02-03 09:40:05 UTC (rev 20076)
+++ branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss.php 2011-02-03 09:41:05 UTC (rev 20077)
@@ -54,7 +54,7 @@
* @return void
*/
function process() {
- $objQuery = new SC_Query();
+ $objQuery = SC_Query::getSingletonInstance();
$objView = new SC_SiteView(false);
//新着情報を取得
変更: branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss_Products.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss_Products.php 2011-02-03 09:40:05 UTC (rev 20076)
+++ branches/version-2_5-dev/data/class/pages/rss/LC_Page_Rss_Products.php 2011-02-03 09:41:05 UTC (rev 20077)
@@ -54,82 +54,64 @@
* @return void
*/
function process() {
- $objQuery = new SC_Query();
+ $this->action();
+ }
+
+ /**
+ * Page のアクション.
+ *
+ * @return void
+ */
+ function action() {
$objView = new SC_SiteView();
$objSiteInfo = new SC_SiteInfo();
-
+
//店舗情報をセット
$this->arrSiteInfo = $objSiteInfo->data;
-
+
//商品IDを取得
- $product_id = $_GET['product_id'];
- //TODO 要リファクタリング(MODE if利用)
+ if ( isset($_GET['product_id']) && $_GET['product_id'] != '' && is_numeric($_GET['product_id']) ) {
+ $product_id = $_GET['product_id'];
+ } else {
+ $product_id = '';
+ }
+
+ // モードによって分岐
$mode = $this->getMode();
- if(($product_id != "" and is_numeric($product_id)) or $mode == "all"){
- //商品詳細を取得
- ($mode == "all") ? $arrProduct = $this->lfGetProductsDetail($objQuery, $mode) : $arrProduct = $this->lfGetProductsDetail($objQuery, $product_id);
-
- // 値のセットし直し
- foreach($arrProduct as $key => $val){
- //販売価格を税込みに編集
- $arrProduct[$key]["price02"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02"]);
-
- // 画像ファイルのURLセット
- (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_list_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL;
- $arrProduct[$key]["main_list_image"] = $dir . $arrProduct[$key]["main_list_image"];
- (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL;
- $arrProduct[$key]["main_image"] = $dir . $arrProduct[$key]["main_image"];
- (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_large_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL;
- $arrProduct[$key]["main_large_image"] = $dir . $arrProduct[$key]["main_large_image"];
-
- // ポイント計算
- $arrProduct[$key]["point"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]);
-
- // 在庫無制限
- $arrProduct[$key]["stock_unlimited"] = ($arrProduct[$key]["stock_unlimited"] == 1) ? "在庫無制限" : NULL;
+ switch ($mode) {
+ case 'all':
+ $arrProduct = $this->lfGetProductsDetailData($mode, $product_id);
+ break;
+ case 'list':
+ if ( $product_id != '' && is_numeric($product_id) ) {
+ $arrProduct = $this->lfGetProductsDetailData($mode, $product_id);
+ } else {
+ $arrProduct = $this->lfGetProductsListData();
}
- }elseif($mode == "list"){
- //商品一覧を取得
- $arrProduct = $objQuery->getAll("SELECT product_id, name AS product_name FROM dtb_products");
- }else{
- $arrProduct = $this->lfGetProductsAllclass($objQuery);
-
- // 値のセットし直し
- foreach($arrProduct as $key => $val){
- //販売価格を税込みに編集
- $arrProduct[$key]["price02_max"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02_max"]);
- $arrProduct[$key]["price02_min"] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]["price02_min"]);
-
- // 画像ファイルのURLセット
- (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_list_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL;
- $arrProduct[$key]["main_list_image"] = $dir . $arrProduct[$key]["main_list_image"];
- (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL;
- $arrProduct[$key]["main_image"] = $dir . $arrProduct[$key]["main_image"];
- (file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]["main_large_image"])) ? $dir = IMAGE_SAVE_RSS_URL : $dir = IMAGE_TEMP_RSS_URL;
- $arrProduct[$key]["main_large_image"] = $dir . $arrProduct[$key]["main_large_image"];
-
- // ポイント計算
- $arrProduct[$key]["point_max"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_max"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]);
- $arrProduct[$key]["point_min"] = SC_Utils_Ex::sfPrePoint($arrProduct[$key]["price02_min"], $arrProduct[$key]["point_rate"], POINT_RULE, $arrProduct[$key]["product_id"]);
+ break;
+ default:
+ if ( $product_id != '' && is_numeric($product_id) ) {
+ $arrProduct = $this->lfGetProductsDetailData($mode, $product_id);
+ } else {
+ $arrProduct = $this->lfGetProductsAllData();
}
+ break;
}
-
- //商品情報をセット
+
+ // 商品情報をセット
$this->arrProduct = $arrProduct;
- if(is_array(SC_Utils_Ex::sfswaparray($arrProduct))){
- $this->arrProductKeys = array_keys(SC_Utils_Ex::sfswaparray($arrProduct));
- }
-
+ $this->arrProductKeys = $this->lfGetProductKeys($arrProduct);
+
//セットしたデータをテンプレートファイルに出力
$objView->assignobj($this);
-
+
//キャッシュしない(念のため)
header("Pragma: no-cache");
-
+
//XMLテキスト(これがないと正常にRSSとして認識してくれないツールがあるため)
header("Content-type: application/xml");
P_DETAIL_URLPATH;
-
+
//画面表示
$objView->display($this->tpl_mainpage, true);
}
@@ -144,44 +126,182 @@
}
/**
+ * lfGetProductsDetailData.
+ *
+ * @param str $mode モード
+ * @param str $product_id 商品ID
+ * @return array $arrProduct 商品情報の配列を返す
+ */
+ function lfGetProductsDetailData($mode, $product_id) {
+ $objQuery = SC_Query::getSingletonInstance();
+ //商品詳細を取得
+ if ( $mode == 'all' ) {
+ $arrProduct = $this->lfGetProductsDetail($objQuery, $mode);
+ } else {
+ $arrProduct = $this->lfGetProductsDetail($objQuery, $product_id);
+ }
+ // 値の整形
+ foreach ($arrProduct as $key => $val) {
+ //販売価格を税込みに編集
+ $arrProduct[$key]['price02'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02']);
+ // 画像ファイルのURLセット
+ if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image']) ) {
+ $dir = IMAGE_SAVE_RSS_URL;
+ } else {
+ $dir = IMAGE_TEMP_RSS_URL;
+ }
+ $arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image'];
+ if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image']) ){
+ $dir = IMAGE_SAVE_RSS_URL;
+ } else {
+ $dir = IMAGE_TEMP_RSS_URL;
+ }
+ $arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image'];
+ if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image']) ) {
+ $dir = IMAGE_SAVE_RSS_URL;
+ } else {
+ $dir = IMAGE_TEMP_RSS_URL;
+ }
+ $arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image'];
+ // ポイント計算
+ $arrProduct[$key]['point'] = SC_Utils_Ex::sfPrePoint(
+ $arrProduct[$key]['price02'],
+ $arrProduct[$key]['point_rate'],
+ POINT_RULE,
+ $arrProduct[$key]['product_id']
+ );
+ // 在庫無制限
+ if ( $arrProduct[$key]['stock_unlimited'] == 1 ) {
+ $arrProduct[$key]['stock_unlimited'] = '在庫無制限';
+ } else {
+ $arrProduct[$key]['stock_unlimited'] = NULL;
+ }
+ }
+ return $arrProduct;
+ }
+
+ /**
+ * lfGetProductsListData.
+ *
+ * @return array $arrProduct 商品情報の配列を返す
+ */
+ function lfGetProductsListData() {
+ $objQuery = SC_Query::getSingletonInstance();
+ //商品一覧を取得
+ $arrProduct = $objQuery->getAll('SELECT product_id, name AS product_name FROM dtb_products');
+ return $arrProduct;
+ }
+
+ /**
+ * lfGetProductsAllData.
+ *
+ * @return array $arrProduct 商品情報の配列を返す
+ */
+ function lfGetProductsAllData() {
+ $objQuery = SC_Query::getSingletonInstance();
+ //商品情報を取得
+ $arrProduct = $this->lfGetProductsAllclass($objQuery);
+ // 値の整形
+ foreach ($arrProduct as $key => $val) {
+ //販売価格を税込みに編集
+ $arrProduct[$key]['price02_max'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_max']);
+ $arrProduct[$key]['price02_min'] = SC_Helper_DB_Ex::sfCalcIncTax($arrProduct[$key]['price02_min']);
+ // 画像ファイルのURLセット
+ if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_list_image']) ) {
+ $dir = IMAGE_SAVE_RSS_URL;
+ } else {
+ $dir = IMAGE_TEMP_RSS_URL;
+ }
+ $arrProduct[$key]['main_list_image'] = $dir . $arrProduct[$key]['main_list_image'];
+ if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_image']) ) {
+ $dir = IMAGE_SAVE_RSS_URL;
+ } else {
+ $dir = IMAGE_TEMP_RSS_URL;
+ }
+ $arrProduct[$key]['main_image'] = $dir . $arrProduct[$key]['main_image'];
+ if ( file_exists(IMAGE_SAVE_REALDIR . $arrProduct[$key]['main_large_image']) ) {
+ $dir = IMAGE_SAVE_RSS_URL;
+ } else {
+ $dir = IMAGE_TEMP_RSS_URL;
+ }
+ $arrProduct[$key]['main_large_image'] = $dir . $arrProduct[$key]['main_large_image'];
+ // ポイント計算
+ $arrProduct[$key]['point_max'] = SC_Utils_Ex::sfPrePoint(
+ $arrProduct[$key]['price02_max'],
+ $arrProduct[$key]['point_rate'],
+ POINT_RULE,
+ $arrProduct[$key]['product_id']
+ );
+ $arrProduct[$key]['point_min'] = SC_Utils_Ex::sfPrePoint(
+ $arrProduct[$key]['price02_min'],
+ $arrProduct[$key]['point_rate'],
+ POINT_RULE,
+ $arrProduct[$key]['product_id']
+ );
+ }
+ return $arrProduct;
+ }
+
+ /**
* 商品情報を取得する
*
* @param SC_Query $objQuery DB操作クラス
* @param integer $product_id 商品ID
* @return array $arrProduct 取得結果を配列で返す
*/
- function lfGetProductsDetail(&$objQuery, $product_id = "all"){
- $sql = "";
- $sql .= "SELECT ";
- $sql .= " prod.product_id ";
- $sql .= " ,prod.name AS product_name ";
- $sql .= " ,prod.category_id ";
- $sql .= " ,prod.point_rate ";
- $sql .= " ,prod.comment3 ";
- $sql .= " ,prod.main_list_comment ";
- $sql .= " ,prod.main_list_image ";
- $sql .= " ,prod.main_comment ";
- $sql .= " ,prod.main_image ";
- $sql .= " ,prod.main_large_image ";
- $sql .= " ,cls.product_code ";
- $sql .= " ,cls.price01 ";
- $sql .= " ,cls.price02 ";
- $sql .= " ,cls.stock ";
- $sql .= " ,cls.stock_unlimited ";
- $sql .= " ,cls.classcategory_id1 ";
- $sql .= " ,cls.classcategory_id2 ";
- $sql .= " ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id1) AS classcategory_name1 ";
- $sql .= " ,(SELECT name FROM dtb_classcategory AS clscat WHERE clscat.classcategory_id = cls.classcategory_id2) AS classcategory_name2 ";
- $sql .= " ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = prod.category_id) AS category_name";
- $sql .= " ,prod.update_date ";
- $sql .= " FROM dtb_products AS prod, dtb_products_class AS cls";
- $sql .= " WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1";
+ function lfGetProductsDetail(&$objQuery, $product_id = 'all'){
+ $sql = '';
+ $sql .= 'SELECT ';
+ $sql .= ' prod.product_id ';
+ $sql .= ' ,prod.name AS product_name ';
+ $sql .= ' ,prod.category_id ';
+ $sql .= ' ,prod.point_rate ';
+ $sql .= ' ,prod.comment3 ';
+ $sql .= ' ,prod.main_list_comment ';
+ $sql .= ' ,prod.main_list_image ';
+ $sql .= ' ,prod.main_comment ';
+ $sql .= ' ,prod.main_image ';
+ $sql .= ' ,prod.main_large_image ';
+ $sql .= ' ,cls.product_code ';
+ $sql .= ' ,cls.price01 ';
+ $sql .= ' ,cls.price02 ';
+ $sql .= ' ,cls.stock ';
+ $sql .= ' ,cls.stock_unlimited ';
+ $sql .= ' ,cls.classcategory_id1 ';
+ $sql .= ' ,cls.classcategory_id2 ';
+ $sql .= ' ,( ';
+ $sql .= ' SELECT ';
+ $sql .= ' name ';
+ $sql .= ' FROM ';
+ $sql .= ' dtb_classcategory AS clscat ';
+ $sql .= ' WHERE ';
+ $sql .= ' clscat.classcategory_id = cls.classcategory_id1 ';
+ $sql .= ' ) AS classcategory_name1 ';
+ $sql .= ' ,( ';
+ $sql .= ' SELECT ';
+ $sql .= ' name ';
+ $sql .= ' FROM ';
+ $sql .= ' dtb_classcategory AS clscat ';
+ $sql .= ' WHERE ';
+ $sql .= ' clscat.classcategory_id = cls.classcategory_id2 ';
+ $sql .= ' ) AS classcategory_name2 ';
+ $sql .= ' ,( ';
+ $sql .= ' SELECT ';
+ $sql .= ' category_name ';
+ $sql .= ' FROM ';
+ $sql .= ' dtb_category AS cat ';
+ $sql .= ' WHERE ';
+ $sql .= ' cat.category_id = prod.category_id ';
+ $sql .= ' ) AS category_name ';
+ $sql .= ' ,prod.update_date ';
+ $sql .= ' FROM dtb_products AS prod, dtb_products_class AS cls';
+ $sql .= ' WHERE prod.product_id = cls.product_id AND prod.del_flg = 0 AND prod.status = 1';
- if($product_id != "all"){
- $sql .= " AND prod.product_id = ?";
+ if($product_id != 'all'){
+ $sql .= ' AND prod.product_id = ?';
$arrval = array($product_id);
}
- $sql .= " ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2";
+ $sql .= ' ORDER BY prod.product_id, cls.classcategory_id1, cls.classcategory_id2';
$arrProduct = $objQuery->getAll($sql, $arrval);
return $arrProduct;
}
@@ -194,36 +314,68 @@
*/
function lfGetProductsAllclass($objQuery){
// FIXME SC_Product クラスを使用した実装
- $sql = "";
- $sql .= "SELECT
- product_id
- ,name as product_name
- ,category_id
- ,point_rate
- ,comment3
- ,main_list_comment
- ,main_image
- ,main_list_image
- ,product_code_min
- ,product_code_max
- ,price01_min
- ,price01_max
- ,price02_min
- ,price02_max
- ,(SELECT category_name FROM dtb_category AS cat WHERE cat.category_id = allcls.category_id) AS category_name
- ,(SELECT main_large_image FROM dtb_products AS prod WHERE prod.product_id = allcls.product_id) AS main_large_image
- FROM vw_products_allclass as allcls
- WHERE allcls.del_flg = 0 AND allcls.status = 1";
+ $sql = '';
+ $sql .= ' SELECT ';
+ $sql .= ' product_id ';
+ $sql .= ' ,name as product_name ';
+ $sql .= ' ,category_id ';
+ $sql .= ' ,point_rate ';
+ $sql .= ' ,comment3 ';
+ $sql .= ' ,main_list_comment ';
+ $sql .= ' ,main_image ';
+ $sql .= ' ,main_list_image ';
+ $sql .= ' ,product_code_min ';
+ $sql .= ' ,product_code_max ';
+ $sql .= ' ,price01_min ';
+ $sql .= ' ,price01_max ';
+ $sql .= ' ,price02_min ';
+ $sql .= ' ,price02_max ';
+ $sql .= ' ,( ';
+ $sql .= ' SELECT ';
+ $sql .= ' category_name ';
+ $sql .= ' FROM ';
+ $sql .= ' dtb_category AS cat ';
+ $sql .= ' WHERE ';
+ $sql .= ' cat.category_id = allcls.category_id ';
+ $sql .= ' ) AS category_name ';
+ $sql .= ' ,( ';
+ $sql .= ' SELECT ';
+ $sql .= ' main_large_image ';
+ $sql .= ' FROM ';
+ $sql .= ' dtb_products AS prod ';
+ $sql .= ' WHERE ';
+ $sql .= ' prod.product_id = allcls.product_id ';
+ $sql .= ' ) AS main_large_image ';
+ $sql .= ' FROM ';
+ $sql .= ' vw_products_allclass as allcls ';
+ $sql .= ' WHERE ';
+ $sql .= ' allcls.del_flg = 0 AND allcls.status = 1 ';
// 在庫無し商品の非表示
if (NOSTOCK_HIDDEN === true) {
$sql .= ' AND (allcls.stock_max >= 1 OR allcls.stock_unlimited_max = 1)';
}
- $sql .= " ORDER BY allcls.product_id";
+ $sql .= ' ORDER BY allcls.product_id';
$arrProduct = $objQuery->getAll($sql);
return $arrProduct;
}
+
+ /**
+ * lfGetProductKeys.
+ *
+ * @param array $arrProduct 商品データ配列
+ * @return array $arrProductKeys 商品情報のkey配列を返す
+ */
+ function lfGetProductKeys($arrProduct) {
+ $arrProductKeys = array();
+ $arrProduct = SC_Utils_Ex::sfswaparray($arrProduct);
+ if ( is_array($arrProduct) ) {
+ $arrProductKeys = array_keys($arrProduct);
+ }
+ return $arrProductKeys;
+ }
+
}
?>
Svn-src-all メーリングリストの案内