[Svn-src-all:1302] [version-2_5-dev 20191] とりあえず action よりSQLなどの処理を外部に出した
Yammy
admin @ mail.ec-cube.net
2011年 2月 18日 (金) 14:03:46 JST
Subversion committed to /home/svn/open 20191
http://svn.ec-cube.net/open_trac/changeset/20191
┌────────────────────────────┐
│更新者 : Yammy │
│更新日時: 2011-02-18 14:03:46 +0900 (金, 18 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
とりあえず action よりSQLなどの処理を外部に出した
refs #970
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php
変更: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php 2011-02-18 02:16:07 UTC (rev 20190)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductSelect.php 2011-02-18 05:03:46 UTC (rev 20191)
@@ -81,67 +81,7 @@
$this->arrForm = $_POST;
// 入力文字の強制変換
$this->lfConvertParam();
-
- $where = "del_flg = 0";
-
- /* 入力エラーなし */
- foreach ($this->arrForm as $key => $val) {
- if($val == "") {
- continue;
- }
-
- switch ($key) {
- case 'search_name':
- $where .= " AND name ILIKE ?";
- $arrval[] = "%$val%";
- break;
- case 'search_category_id':
- list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($val);
- if($tmp_where != "") {
- $where.= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")";
- $arrval = array_merge((array)$arrval, (array)$tmp_arrval);
- }
- break;
- case 'search_product_code':
- $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code LIKE ? GROUP BY product_id)";
- $arrval[] = "$val%";
- break;
- default:
- break;
- }
- }
-
- $order = "update_date DESC, product_id DESC ";
-
- $objQuery = new SC_Query();
- // 行数の取得
- if (empty($arrval)) {
- $arrval = array();
- }
- $linemax = $objQuery->count("dtb_products", $where, $arrval);
- $this->tpl_linemax = $linemax; // 何件が該当しました。表示用
-
- // ページ送りの処理
- if(isset($_POST['search_page_max'])
- && is_numeric($_POST['search_page_max'])) {
- $page_max = $_POST['search_page_max'];
- } else {
- $page_max = SEARCH_PMAX;
- }
-
- // ページ送りの取得
- $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
- $this->tpl_strnavi = $objNavi->strnavi; // 表示文字列
- $startno = $objNavi->start_row;
-
- // 取得範囲の指定(開始行番号、行数のセット)
- $objQuery->setLimitOffset($page_max, $startno);
- // 表示順序
- $objQuery->setOrder($order);
-
- // 検索結果の取得
- // FIXME 商品コードの表示
- $this->arrProducts = $objQuery->select("*", SC_Product::alldtlSQL(), $where, $arrval);
+ $this->arrProducts = $this->lfGetProducts($objDb);
break;
default:
break;
@@ -181,5 +121,68 @@
}
}
}
+
+ /* 商品検索結果取得 */
+ function lfGetProducts(&$objDb) {
+ $where = "del_flg = 0";
+
+ /* 入力エラーなし */
+ foreach ($this->arrForm AS $key=>$val) {
+ if($val == "") continue;
+
+ switch ($key) {
+ case 'search_name':
+ $where .= " AND name ILIKE ?";
+ $arrval[] = "%$val%";
+ break;
+ case 'search_category_id':
+ list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($val);
+ if($tmp_where != "") {
+ $where.= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")";
+ $arrval = array_merge((array)$arrval, (array)$tmp_arrval);
+ }
+ break;
+ case 'search_product_code':
+ $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code LIKE ? GROUP BY product_id)";
+ $arrval[] = "$val%";
+ break;
+ default:
+ break;
+ }
+ }
+
+ $order = "update_date DESC, product_id DESC ";
+
+ $objQuery = new SC_Query();
+ // 行数の取得
+ if (empty($arrval)) {
+ $arrval = array();
+ }
+ $linemax = $objQuery->count("dtb_products", $where, $arrval);
+ $this->tpl_linemax = $linemax; // 何件が該当しました。表示用
+
+ // ページ送りの処理
+ if(isset($_POST['search_page_max'])
+ && is_numeric($_POST['search_page_max'])) {
+ $page_max = $_POST['search_page_max'];
+ } else {
+ $page_max = SEARCH_PMAX;
+ }
+
+ // ページ送りの取得
+ $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
+ $this->tpl_strnavi = $objNavi->strnavi; // 表示文字列
+ $startno = $objNavi->start_row;
+
+ // 取得範囲の指定(開始行番号、行数のセット)
+ $objQuery->setLimitOffset($page_max, $startno);
+ // 表示順序
+ $objQuery->setOrder($order);
+
+ // 検索結果の取得
+ // FIXME 商品コードの表示
+ $arrProducts = $objQuery->select("*", SC_Product::alldtlSQL(), $where, $arrval);
+ return $arrProducts;
+ }
}
?>
Svn-src-all メーリングリストの案内