Changeset 18815 for branches/version-2_5-dev/data/class/SC_Product.php
- Timestamp:
- 2010/09/20 20:40:27 (14 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18814
- bzr:committer:
- Kentaro Ohkouchi <nanasess@fsm.ne.jp>
- bzr:file-ids:
data/Smarty/templates/default/admin/products/product_class.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fproducts%2Fproduct_class.tpl
data/class/SC_Initial.php 16506@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Initial.php
data/class/SC_Product.php 18277@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2FSC_Product.php
data/class/SC_Query.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Query.php
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php 15123@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fdb%2Fdbfactory%2FSC_DB_DBFactory_MYSQL.php
data/class/helper/SC_Helper_CSV.php 15535@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_CSV.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php 15661@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fcontents%2FLC_Page_Admin_Contents_RecommendSearch.php
data/class/pages/admin/customer/LC_Page_Admin_Customer.php 15568@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fcustomer%2FLC_Page_Admin_Customer.php
data/class/pages/admin/mail/LC_Page_Admin_Mail.php 15640@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fmail%2FLC_Page_Admin_Mail.php
data/class/pages/admin/mail/LC_Page_Admin_Mail_Preview.php 15654@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fmail%2FLC_Page_Admin_Mail_Preview.php
data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php 17293@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_ProductSelect.php
data/class/pages/admin/products/LC_Page_Admin_Products.php 15342@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products.php
data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 15342@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_Product.php
data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php 15559@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_ProductClass.php
data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php 15526@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_ProductRank.php
data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php 15557@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_ProductSelect.php
data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Best5.php 15367@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Ffrontparts%2Fbloc%2FLC_Page_FrontParts_Bloc_Best5.php
data/class/pages/mypage/LC_Page_Mypage_Favorite.php 17162@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2Fpages%2Fmypage%2FLC_Page_Mypage_Favorite.php
data/class/pages/products/LC_Page_Products_Detail.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_Detail.php
data/class/pages/products/LC_Page_Products_List.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_List.php
data/class/pages/rss/LC_Page_Rss_Products.php 16193@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Frss%2FLC_Page_Rss_Products.php
data/class/pages/shopping/LC_Page_Shopping_Complete.php 15223@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fshopping%2FLC_Page_Shopping_Complete.php
data/class/util/SC_Utils.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Futil%2FSC_Utils.php
data/install.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Finstall.php
data/require_classes.php 18500@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fversion-2_4-dev%2Fdata%2Frequire_classes.php
html/admin/require.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Fadmin%2Frequire.php
html/handle_error.php 18500@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fversion-2_4-dev%2Fhtml%2Fhandle_error.php
html/install/index.php 16809@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Findex.php
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
html/install/sql/create_view.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_view.sql
html/install/sql/drop_table.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fdrop_table.sql
html/install/sql/drop_view.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fdrop_view.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
html/require.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Frequire.php
test/class/page/LC_Page_Admin_Products_ProductClass_Test.php lc_page_admin_produc-20100910101923-ux7d8xbbsd4inq1c-1- bzr:mapping-version:
- v4
- bzr:merge:
nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- nanasess@fsm.ne.jp-20100920113958-9zux6qc07fmrp1fp
- bzr:revno:
- 2298
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-parents:
data/Smarty/templates/default/admin/products/product_class.tpl ohkouchi@loop-az.jp-20100614082324-fsyp4ss6t8s1l9hk
data/class/SC_Initial.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18795 ohkouchi@loop-az.jp-20100910102335-0e7jvlwqa13j60hg
data/class/SC_Product.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/class/SC_Query.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18813 ohkouchi@loop-az.jp-20100910102335-0e7jvlwqa13j60hg
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php ohkouchi@loop-az.jp-20100826072347-bdrmnk0g8b3llidi
data/class/helper/SC_Helper_CSV.php ohkouchi@loop-az.jp-20100825073846-mzg8ka4y21o1nk6o
data/class/helper/SC_Helper_DB.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php ohkouchi@loop-az.jp-20100803084717-9sbbuk4o59x5sio4
data/class/pages/admin/customer/LC_Page_Admin_Customer.php ohkouchi@loop-az.jp-20100803084717-9sbbuk4o59x5sio4
data/class/pages/admin/mail/LC_Page_Admin_Mail.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18798 nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/mail/LC_Page_Admin_Mail_Preview.php ohkouchi@loop-az.jp-20100803084717-9sbbuk4o59x5sio4
data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php ohkouchi@loop-az.jp-20100820090626-dkyj2ngdh7vklaow
data/class/pages/admin/products/LC_Page_Admin_Products.php ohkouchi@loop-az.jp-20100826014156-g12l1o38gsj73acs
data/class/pages/admin/products/LC_Page_Admin_Products_Product.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php ohkouchi@loop-az.jp-20100614082857-g3n9wn9zakpc7a0m
data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php ohkouchi@loop-az.jp-20100820090626-dkyj2ngdh7vklaow
data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Best5.php ohkouchi@loop-az.jp-20100614082857-g3n9wn9zakpc7a0m
data/class/pages/mypage/LC_Page_Mypage_Favorite.php ohkouchi@loop-az.jp-20100803050621-j3gswdse0qsqamvw
data/class/pages/products/LC_Page_Products_Detail.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/class/pages/products/LC_Page_Products_List.php ohkouchi@loop-az.jp-20100910102335-0e7jvlwqa13j60hg
data/class/pages/rss/LC_Page_Rss_Products.php ohkouchi@loop-az.jp-20100614082857-g3n9wn9zakpc7a0m
data/class/pages/shopping/LC_Page_Shopping_Complete.php ohkouchi@loop-az.jp-20100819104758-beubop5hq0pwdqhx
data/class/util/SC_Utils.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18812 ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/install.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/require_classes.php ohkouchi@loop-az.jp-20100803111301-u8ph4za35y4il0dh
html/admin/require.php ohkouchi@loop-az.jp-20100917043318-0tabp11gm7myhq3v ohkouchi@loop-az.jp-20100917043051-klyair2x9gha0ike
html/handle_error.php ohkouchi@loop-az.jp-20100917043318-0tabp11gm7myhq3v ohkouchi@loop-az.jp-20100917043051-klyair2x9gha0ike
html/install/index.php ohkouchi@loop-az.jp-20100827013725-2fv0j8mz17eczvmd
html/install/sql/create_table_mysql.sql ohkouchi@loop-az.jp-20100825073846-mzg8ka4y21o1nk6o
html/install/sql/create_table_pgsql.sql ohkouchi@loop-az.jp-20100825073846-mzg8ka4y21o1nk6o
html/install/sql/create_view.sql ohkouchi@loop-az.jp-20100910102335-0e7jvlwqa13j60hg
html/install/sql/drop_table.sql ohkouchi@loop-az.jp-20100825073846-mzg8ka4y21o1nk6o
html/install/sql/drop_view.sql ohkouchi@loop-az.jp-20100818061055-lqje64n4qlsd2ke9
html/install/sql/insert_data.sql ohkouchi@loop-az.jp-20100825073846-mzg8ka4y21o1nk6o
html/require.php ohkouchi@loop-az.jp-20100917043318-0tabp11gm7myhq3v ohkouchi@loop-az.jp-20100917043051-klyair2x9gha0ike- bzr:text-revisions:
data/Smarty/templates/default/admin/products/product_class.tpl ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/class/SC_Product.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/class/helper/SC_Helper_CSV.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/customer/LC_Page_Admin_Customer.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/mail/LC_Page_Admin_Mail_Preview.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/order/LC_Page_Admin_Order_ProductSelect.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/products/LC_Page_Admin_Products.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Best5.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/mypage/LC_Page_Mypage_Favorite.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/products/LC_Page_Products_Detail.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/products/LC_Page_Products_List.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
data/class/pages/rss/LC_Page_Rss_Products.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/class/pages/shopping/LC_Page_Shopping_Complete.php nanasess@fsm.ne.jp-20100920101522-xuj8voqfwpoh4ajv
data/require_classes.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/index.php ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/sql/create_table_mysql.sql ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/sql/create_table_pgsql.sql ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/sql/create_view.sql ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/sql/drop_table.sql ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/sql/drop_view.sql ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
html/install/sql/insert_data.sql ohkouchi@loop-az.jp-20100917110247-1czbf0nui8rcj7ht
test/class/page/LC_Page_Admin_Products_ProductClass_Test.php ohkouchi@loop-az.jp-20100910102335-0e7jvlwqa13j60hg- bzr:timestamp:
- 2010-09-20 20:39:58.994999886 +0900
- bzr:user-agent:
- bzr2.1.1+bzr-svn1.0.2
- svn:original-date:
- 2010-09-20T11:39:58.995000Z
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/SC_Product.php
r18701 r18815 42 42 var $classCat2_find; 43 43 var $classCats1; 44 45 function SC_Product($arrProductId = null) { 46 $objDb = new SC_Helper_DB_Ex(); 47 48 // 規格名一覧 49 $this->arrClassName = $objDb->sfGetIDValueList("dtb_class", "class_id", "name"); 50 // 規格分類名一覧 51 $this->arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); 52 $this->arrClassCatName[''] = '選択してください'; 53 54 if (!is_null($arrProductId)) { 55 $this->setProductId($arrProductId); 56 } 57 } 58 59 function setProductId($arrProductId) { 60 61 // 商品規格情報の取得 62 $rows = $this->lfGetProductsClass($arrProductId); 63 44 45 /** 46 * SC_Queryインスタンスに設定された検索条件をもとに商品IDの配列を取得する. 47 * 48 * 検索条件は, SC_Query::getWhere() 関数で設定しておく必要があります. 49 * 50 * @param SC_Query $objQuery SC_Query インスタンス 51 * @param array $arrVal 検索パラメータの配列 52 * @return array 商品IDの配列 53 */ 54 function findProductIds(&$objQuery, $arrVal = array()) { 55 $table = <<< __EOS__ 56 dtb_products AS alldtl 57 JOIN dtb_product_categories AS T2 58 ON alldtl.product_id = T2.product_id 59 JOIN dtb_category 60 ON T2.category_id = dtb_category.category_id 61 __EOS__; 62 // SC_Query::getCol() ではパフォーマンスが出ない 63 $results = $objQuery->select('alldtl.product_id', $table, "", $arrVal, 64 MDB2_FETCHMODE_ORDERED); 65 foreach ($results as $val) { 66 $resultValues[] = $val[0]; 67 } 68 return array_unique($resultValues); 69 } 70 71 /** 72 * SC_Queryインスタンスに設定された検索条件をもとに商品一覧の配列を取得する. 73 * 74 * 主に SC_Product::findProductIds() で取得した商品IDを検索条件にし, 75 * SC_Query::setOrder() や SC_Query::setLimitOffset() を設定して, 商品一覧 76 * の配列を取得する. 77 * 78 * @param SC_Query $objQuery SC_Query インスタンス 79 * @param array $arrVal 検索パラメータ(ソート条件)の配列 80 * @return array 商品一覧の配列 81 */ 82 function lists(&$objQuery, $arrVal = array()) { 83 $col = <<< __EOS__ 84 product_id 85 ,product_code_min 86 ,product_code_max 87 ,name 88 ,comment1 89 ,comment2 90 ,comment3 91 ,main_list_comment 92 ,main_image 93 ,main_list_image 94 ,price01_min 95 ,price01_max 96 ,price02_min 97 ,price02_max 98 ,stock_min 99 ,stock_max 100 ,stock_unlimited_min 101 ,stock_unlimited_max 102 ,deliv_date_id 103 ,status 104 ,del_flg 105 ,update_date 106 __EOS__; 107 return $objQuery->select($col, $this->alldtlSQL($objQuery->where), 108 "", $arrVal); 109 } 110 111 /** 112 * 商品詳細を取得する. 113 * 114 * @param integer $productId 商品ID 115 * @return array 商品詳細情報の配列 116 */ 117 function getDetail($productId) { 118 $objQuery =& SC_Query::getSingletonInstance(); 119 $result = $objQuery->select("*", $this->alldtlSQL("product_id = ?"), 120 "product_id = ?", 121 array($productId, $productId)); 122 return $result[0]; 123 } 124 125 /** 126 * 商品IDに紐づく商品規格を自分自身に設定する. 127 * 128 * 引数の商品IDの配列に紐づく商品規格を取得し, 自分自身のフィールドに 129 * 設定する. 130 * 131 * @param array $arrProductId 商品ID の配列 132 * @return void 133 */ 134 function setProductsClassByProductIds($arrProductId) { 135 136 foreach ($arrProductId as $productId) { 137 $rows[$productId] = $this->getProductsClassFullByProductId($productId); 138 } 139 64 140 $arrProductsClass = array(); 65 foreach ($rows as $row) { 66 $productId = $row['product_id']; 67 $arrProductsClass[$productId][] = $row; 68 } 69 unset($rows); 70 71 foreach ($arrProductsClass as $productId => $arrProductClass) { 141 foreach ($rows as $productId => $arrProductClass) { 72 142 $classCats1 = array(); 73 143 $classCats1[''] = '選択してください'; 74 144 75 145 // 規格1クラス名 76 146 $this->className1[$productId] = 77 isset($ this->arrClassName[$arrProductClass[0]['class_id1']])78 ? $ this->arrClassName[$arrProductClass[0]['class_id1']]147 isset($arrProductClass[0]['class_name1']) 148 ? $arrProductClass[0]['class_name1'] 79 149 : ''; 80 150 81 151 // 規格2クラス名 82 152 $this->className2[$productId] = 83 isset($ this->arrClassName[$arrProductClass[0]['class_id2']])84 ? $ this->arrClassName[$arrProductClass[0]['class_id2']]153 isset($arrProductClass[0]['class_name2']) 154 ? $arrProductClass[0]['class_name2'] 85 155 : ''; 86 156 87 157 // 規格1が設定されている 88 $this->classCat1_find[$productId] = ( $arrProductClass[0]['classcategory_id1'] != '0');158 $this->classCat1_find[$productId] = (!SC_Utils_Ex::isBlank($arrProductClass[0]['classcategory_id1'])); 89 159 // 規格2が設定されている 90 $this->classCat2_find[$productId] = ( $arrProductClass[0]['classcategory_id2'] != '0');160 $this->classCat2_find[$productId] = (!SC_Utils_Ex::isBlank($arrProductClass[0]['classcategory_id2'])); 91 161 92 162 $this->stock_find[$productId] = false; … … 97 167 $productsClass2 = $productsClass['classcategory_id2']; 98 168 $classCategories[$productsClass1]['']['name'] = '選択してください'; 99 100 169 // 在庫 101 170 $stock_find_class = ($productsClass['stock_unlimited'] || $productsClass['stock'] > 0); 102 103 $classCategories[$productsClass1][$productsClass2]['name'] = $this->arrClassCatName[$productsClass2] 104 . ($stock_find_class ? '' : ' (品切れ中)'); 105 171 172 $classCategories[$productsClass1][$productsClass2]['name'] = $productsClass['name2'] . ($stock_find_class ? '' : ' (品切れ中)'); 173 106 174 $classCategories[$productsClass1][$productsClass2]['stock_find'] = $stock_find_class; 107 175 108 176 if ($stock_find_class) { 109 177 $this->stock_find[$productId] = true; … … 111 179 112 180 if (!in_array($classcat_id1, $classCats1)) { 113 $classCats1[$productsClass1] = $ this->arrClassCatName[$productsClass1]181 $classCats1[$productsClass1] = $productsClass['name1'] 114 182 . ($productsClass2 == 0 && !$stock_find_class ? ' (品切れ中)' : ''); 115 183 } 116 184 117 185 // 価格 118 186 $classCategories[$productsClass1][$productsClass2]['price01'] … … 120 188 ? number_format(SC_Helper_DB_Ex::sfPreTax($productsClass['price01'])) 121 189 : ''; 122 190 123 191 $classCategories[$productsClass1][$productsClass2]['price02'] 124 192 = strlen($productsClass['price02']) 125 193 ? number_format(SC_Helper_DB_Ex::sfPreTax($productsClass['price02'])) 126 194 : ''; 127 195 128 196 // ポイント 129 197 // XXX sfPrePoint() の第4パラメータは、処理にバグがあるため現状省略している。(http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=3540&forum=1&post_id=13853#forumpost13853) 130 198 $classCategories[$productsClass1][$productsClass2]['point'] 131 199 = SC_Utils_Ex::sfPrePoint($productsClass['price02'], $productsClass['point_rate']); 132 200 133 201 // 商品コード 134 202 $classCategories[$productsClass1][$productsClass2]['product_code'] = $productsClass['product_code']; 135 203 } 136 204 137 205 $this->classCategories[$productId] = $classCategories; 138 206 139 207 // 規格1 140 208 $this->classCats1[$productId] = $classCats1; … … 142 210 } 143 211 144 /* 商品規格情報の取得 */ 145 function lfGetProductsClass($arrProductId) { 146 $arrProductId = (Array) $arrProductId; 147 148 if (empty($arrProductId)) { 212 /** 213 * 複数の商品IDに紐づいた, 商品規格を取得する. 214 * 215 * @param array $productIds 商品IDの配列 216 * @return array 商品規格の配列 217 */ 218 function getProductsClassByProductIds($productIds = array()) { 219 if (empty($productIds)) { 149 220 return array(); 150 221 } 151 152 // 商品規格取得 153 $objQuery = new SC_Query(); 154 $col = 'product_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited, price01, price02, point_rate, product_code'; 155 $table = 'vw_product_class AS prdcls'; 156 $where = 'product_id IN (' . implode(', ', array_pad(array(), count($arrProductId), '?')) . ')'; 157 $objQuery->setOrder("product_id, rank1 DESC, rank2 DESC"); 158 $arrRet = $objQuery->select($col, $table, $where, $arrProductId); 159 160 return $arrRet; 222 $objQuery =& SC_Query::getSingletonInstance(); 223 $objQuery->setWhere('product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'); 224 $objQuery->setOrder("T2.level DESC"); 225 // 末端の規格を取得 226 $col = <<< __EOS__ 227 T1.product_id, 228 T1.stock, 229 T1.stock_unlimited, 230 T1.price01, 231 T1.price02, 232 T1.point_rate, 233 T1.product_code, 234 T1.product_class_id, 235 T1.del_flg, 236 T2.class_combination_id, 237 T2.parent_class_combination_id, 238 T2.classcategory_id, 239 T2.level, 240 T3.name, 241 T4.name AS class_name, 242 T4.class_id 243 __EOS__; 244 $table = <<< __EOS__ 245 dtb_products_class T1 246 LEFT JOIN dtb_class_combination T2 247 ON T1.class_combination_id = T2.class_combination_id 248 LEFT JOIN dtb_classcategory T3 249 ON T2.classcategory_id = T3.classcategory_id 250 LEFT JOIN dtb_class T4 251 ON T3.class_id = T4.class_id 252 __EOS__; 253 $arrRet = $objQuery->select($col, $table, "", $productIds); 254 $levels = array(); 255 $parents = array(); 256 257 foreach ($arrRet as $rows) { 258 $levels[] = $rows['level']; 259 $parents[] = $rows['parent_class_combination_id']; 260 } 261 $level = max($levels); 262 $parentsClass = array(); 263 // 階層分の親を取得 264 for ($i = 0; $i < $level -1; $i++) { 265 $objQuery =& SC_Query::getSingletonInstance(); 266 $objQuery->setWhere('T1.class_combination_id IN (' . implode(', ', array_pad(array(), count($parents), '?')) . ')'); 267 268 $col = <<< __EOS__ 269 T1.class_combination_id, 270 T1.classcategory_id, 271 T1.parent_class_combination_id, 272 T1.level, 273 T2.name, 274 T3.name AS class_name, 275 T3.class_id 276 __EOS__; 277 $table = <<< __EOS__ 278 dtb_class_combination T1 279 LEFT JOIN dtb_classcategory T2 280 ON T1.classcategory_id = T2.classcategory_id 281 LEFT JOIN dtb_class T3 282 ON T2.class_id = T3.class_id 283 __EOS__; 284 285 $arrParents = $objQuery->select($col, $table, "", $parents); 286 287 unset($parents); 288 foreach ($arrParents as $rows) { 289 $parents[] = $rows['parent_class_combination_id']; 290 291 foreach ($arrRet as $child) { 292 if ($child['parent_class_combination_id'] 293 == $rows['class_combination_id']) { 294 $rows['product_id'] = $child['product_id']; 295 } 296 } 297 $tmpParents[] = $rows; 298 } 299 $parentsClass = array_merge($parentsClass, $tmpParents); 300 } 301 302 // 末端から枝を作成 303 $tmpClass = array_merge($arrRet, $parentsClass); 304 305 foreach ($tmpClass as $val) { 306 $val['class_id' . $val['level']] = $val['class_id']; 307 $val['class_name' . $val['level']] = $val['class_name']; 308 $val['name' . $val['level']] = $val['name']; 309 $val['classcategory_id' . $val['level']] = $val['classcategory_id']; 310 $arrProductsClass[] = $val; 311 } 312 313 return $arrProductsClass; 314 } 315 316 /** 317 * 商品IDに紐づいた, 商品規格を階層ごとに取得する. 318 * 319 * @param array $productId 商品IDの配列 320 * @return array 階層ごとの商品規格の配列 321 */ 322 function getProductsClassLevelByProductId($productId) { 323 $results = $this->getProductsClassByProductIds(array($productId)); 324 foreach ($results as $row) { 325 $productsClassLevel["level" . $row['level']][] = $row; 326 } 327 return $productsClassLevel; 328 } 329 330 /** 331 * 商品IDに紐づいた, 商品規格をすべての組み合わせごとに取得する. 332 * 333 * @param array $productId 商品IDの配列 334 * @return array すべての組み合わせの商品規格の配列 335 */ 336 function getProductsClassFullByProductId($productId) { 337 $results = $this->getProductsClassLevelByProductId($productId); 338 $productsClass = array(); 339 foreach ($results["level1"] as $level1) { 340 foreach ($results["level2"] as $level2) { 341 if ($level2['parent_class_combination_id'] == $level1['class_combination_id']) { 342 $level1 = array_merge($level1, $level2); 343 } 344 } 345 $productsClass[] = $level1; 346 } 347 return $productsClass; 348 } 349 350 /** 351 * 商品詳細の SQL を取得する. 352 * 353 * @param string $where 商品詳細の WHERE 句 354 * @return string 商品詳細の SQL 355 */ 356 function alldtlSQL($where = "") { 357 $whereCause = ""; 358 if (!SC_Utils_Ex::isBlank($where)) { 359 $whereCause = " WHERE " . $where; 360 } 361 362 $sql = <<< __EOS__ 363 ( 364 SELECT dtb_products.product_id, 365 dtb_products.name, 366 dtb_products.maker_id, 367 dtb_products.rank, 368 dtb_products.status, 369 dtb_products.comment1, 370 dtb_products.comment2, 371 dtb_products.comment3, 372 dtb_products.comment4, 373 dtb_products.comment5, 374 dtb_products.comment6, 375 dtb_products.note, 376 dtb_products.file1, 377 dtb_products.file2, 378 dtb_products.file3, 379 dtb_products.file4, 380 dtb_products.file5, 381 dtb_products.file6, 382 dtb_products.main_list_comment, 383 dtb_products.main_list_image, 384 dtb_products.main_comment, 385 dtb_products.main_image, 386 dtb_products.main_large_image, 387 dtb_products.sub_title1, 388 dtb_products.sub_comment1, 389 dtb_products.sub_image1, 390 dtb_products.sub_large_image1, 391 dtb_products.sub_title2, 392 dtb_products.sub_comment2, 393 dtb_products.sub_image2, 394 dtb_products.sub_large_image2, 395 dtb_products.sub_title3, 396 dtb_products.sub_comment3, 397 dtb_products.sub_image3, 398 dtb_products.sub_large_image3, 399 dtb_products.sub_title4, 400 dtb_products.sub_comment4, 401 dtb_products.sub_image4, 402 dtb_products.sub_large_image4, 403 dtb_products.sub_title5, 404 dtb_products.sub_comment5, 405 dtb_products.sub_image5, 406 dtb_products.sub_large_image5, 407 dtb_products.sub_title6, 408 dtb_products.sub_comment6, 409 dtb_products.sub_image6, 410 dtb_products.sub_large_image6, 411 dtb_products.del_flg, 412 dtb_products.creator_id, 413 dtb_products.create_date, 414 dtb_products.update_date, 415 dtb_products.deliv_date_id, 416 dtb_products.down, 417 dtb_products.down_filename, 418 dtb_products.down_realfilename, 419 T4.product_code_min, 420 T4.product_code_max, 421 T4.price01_min, 422 T4.price01_max, 423 T4.price02_min, 424 T4.price02_max, 425 T4.stock_min, 426 T4.stock_max, 427 T4.stock_unlimited_min, 428 T4.stock_unlimited_max, 429 T4.class_count 430 FROM dtb_products 431 JOIN ( 432 SELECT product_id, 433 MIN(product_code) AS product_code_min, 434 MAX(product_code) AS product_code_max, 435 MIN(price01) AS price01_min, 436 MAX(price01) AS price01_max, 437 MIN(price02) AS price02_min, 438 MAX(price02) AS price02_max, 439 MIN(stock) AS stock_min, 440 MAX(stock) AS stock_max, 441 MIN(stock_unlimited) AS stock_unlimited_min, 442 MAX(stock_unlimited) AS stock_unlimited_max, 443 COUNT(*) as class_count 444 FROM dtb_products_class 445 $whereCause 446 GROUP BY product_id 447 ) AS T4 448 ON dtb_products.product_id = T4.product_id 449 ) AS alldtl 450 __EOS__; 451 return $sql; 161 452 } 162 453 }
Note: See TracChangeset
for help on using the changeset viewer.