[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 メーリングリストの案内