[Svn-src-all:1244] [version-2_5-dev 20133] #975([管理画面]受注管理(受注一覧、登録編集))

nanasess admin @ mail.ec-cube.net
2011年 2月 10日 (木) 22:19:59 JST


Subversion committed to /home/svn/open 20133
http://svn.ec-cube.net/open_trac/changeset/20133
┌────────────────────────────┐
│更新者 :  nanasess                                     │
│更新日時:  2011-02-10 22:19:59 +0900 (木, 10  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#975([管理画面]受注管理(受注一覧、登録編集))
 * 受注一覧のリファクタリング
 * SC_Utils クラスの 非推奨の関数に deprecated コメント追加
 * SC_FormParam::getSearchArray() 関数追加


Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/Smarty/templates/admin/order/index.tpl
U   branches/version-2_5-dev/data/class/SC_FormParam.php
U   branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order.php
U   branches/version-2_5-dev/data/class/util/SC_Utils.php

変更: branches/version-2_5-dev/data/Smarty/templates/admin/order/index.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/order/index.tpl	2011-02-10 07:59:35 UTC (rev 20132)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/order/index.tpl	2011-02-10 13:19:59 UTC (rev 20133)
@@ -175,7 +175,7 @@
             <td colspan="3">
             <!--{assign var=key value="search_payment_id"}-->
             <span class="attention"><!--{$arrErr[$key]|h}--></span>
-            <!--{html_checkboxes name="$key" options=$arrPayment|escape selected=$arrForm[$key].value}-->
+            <!--{html_checkboxes name="$key" options=$arrPayments selected=$arrForm[$key].value}-->
             </td>
         </tr>
         <tr>
@@ -339,7 +339,7 @@
             <td class="center"><!--{$arrResults[cnt].order_id}--></td>
             <td><!--{$arrResults[cnt].order_name01|h}--> <!--{$arrResults[cnt].order_name02|h}--></td>
             <!--{assign var=payment_id value="`$arrResults[cnt].payment_id`"}-->
-            <td class="center"><!--{$arrPayment[$payment_id]}--></td>
+            <td class="center"><!--{$arrPayments[$payment_id]}--></td>
             <td class="right"><!--{$arrResults[cnt].total|number_format}--></td>
             <td class="center"><!--{$arrResults[cnt].commit_date|sfDispDBDate|default:"未発送"}--></td>
             <td class="center"><!--{$arrORDERSTATUS[$status]}--></td>

変更: branches/version-2_5-dev/data/class/SC_FormParam.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_FormParam.php	2011-02-10 07:59:35 UTC (rev 20132)
+++ branches/version-2_5-dev/data/class/SC_FormParam.php	2011-02-10 13:19:59 UTC (rev 20133)
@@ -25,7 +25,6 @@
  * パラメータ管理クラス
  *
  * :XXX: addParam と setParam で言う「パラメータ」が用語として競合しているように感じる。(2009/10/17 Seasoft 塚田)
- * TODO 配列の再帰処理
  *
  * @package SC
  * @author LOCKON CO.,LTD.
@@ -201,10 +200,6 @@
                 case 'DOMAIN_CHECK':
                 case 'FILE_NAME_CHECK':
                 case 'MOBILE_EMAIL_CHECK':
-                    $this->recursionCheck($this->disp_name[$cnt], $func,
-                                          $this->param[$cnt], $objErr->arrErr,
-                                          $val, $this->length[$cnt]);
-                    break;
                 case 'MAX_LENGTH_CHECK':
                 case 'MIN_LENGTH_CHECK':
                 case 'NUM_COUNT_CHECK':
@@ -397,16 +392,9 @@
         return $ret;
     }
 
-    function splitCheckBoxes($keyname) {
-        $cnt = 0;
-        foreach($this->keyname as $val) {
-            if($val == $keyname) {
-                $this->param[$cnt] = sfSplitCheckBoxes($this->param[$cnt]);
-            }
-            $cnt++;
-        }
-    }
-
+    /**
+     * @deprecated
+     */
     function splitParamCheckBoxes($keyname) {
         $cnt = 0;
         foreach($this->keyname as $val) {
@@ -449,5 +437,26 @@
             $cnt++;
         }
     }
+
+    /**
+     * 検索結果引き継ぎ用の連想配列を取得する.
+     *
+     * 引数で指定した文字列で始まるパラメータ名の入力値を連想配列で取得する.
+     *
+     * @param string $prefix パラメータ名の接頭辞
+     * @return array 検索結果引き継ぎ用の連想配列.
+     */
+    function getSearchArray($prefix = 'search_') {
+        $cnt = 0;
+        $arrResults = array();
+        foreach ($this->keyname as $key) {
+            if (preg_match('/^' . $prefix . '/', $key)) {
+                $arrResults[$key] = isset($this->param[$cnt])
+                    ? $this->param[$cnt] : "";
+            }
+            $cnt++;
+        }
+        return $arrResults;
+    }
 }
 ?>

変更: branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order.php	2011-02-10 07:59:35 UTC (rev 20132)
+++ branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order.php	2011-02-10 13:19:59 UTC (rev 20133)
@@ -24,11 +24,6 @@
 // {{{ requires
 require_once(CLASS_REALDIR . "pages/admin/LC_Page_Admin.php");
 
-/* ペイジェント決済モジュール連携用 */
-if (file_exists(MODULE_REALDIR . 'mdl_paygent/include.php') === TRUE) {
-    require_once(MODULE_REALDIR . 'mdl_paygent/include.php');
-}
-
 /**
  * 受注管理 のページクラス
  *
@@ -61,10 +56,22 @@
         $this->arrSex = $masterData->getMasterData("mtb_sex");
         $this->arrPageMax = $masterData->getMasterData("mtb_page_max");
 
-        /* ペイジェント決済モジュール連携用 */
-        if(function_exists("sfPaygentOrderPage")) {
-            $this->arrDispKind = sfPaygentOrderPage();
-        }
+        $objDate = new SC_Date();
+        // 登録・更新日検索用
+        $objDate->setStartYear(RELEASE_YEAR);
+        $objDate->setEndYear(DATE("Y"));
+        $this->arrRegistYear = $objDate->getYear();
+        // 生年月日検索用
+        $objDate->setStartYear(BIRTH_YEAR);
+        $objDate->setEndYear(DATE("Y"));
+        $this->arrBirthYear = $objDate->getYear();
+        // 月日の設定
+        $this->arrMonth = $objDate->getMonth();
+        $this->arrDay = $objDate->getDay();
+
+        // 支払い方法の取得
+        $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
+
         $this->httpCacheControl('nocache');
     }
 
@@ -84,270 +91,81 @@
      * @return void
      */
     function action() {
-        $objDb = new SC_Helper_DB_Ex();
-        $objSess = new SC_Session();
-        // パラメータ管理クラス
-        $this->objFormParam = new SC_FormParam();
-        // パラメータ情報の初期化
-        $this->lfInitParam();
-        $this->objFormParam->setParam($_POST);
-
-        $this->objFormParam->splitParamCheckBoxes('search_order_sex');
-        $this->objFormParam->splitParamCheckBoxes('search_payment_id');
-
-        // 検索ワードの引き継ぎ
-        foreach ($_POST as $key => $val) {
-            if (ereg("^search_", $key)) {
-                switch($key) {
-                    case 'search_order_sex':
-                    case 'search_payment_id':
-                        $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val);
-                        break;
-                    default:
-                        $this->arrHidden[$key] = $val;
-                        break;
-                }
-            }
-        }
-
-        // ページ送り用
-        $this->arrHidden['search_pageno'] =
-        isset($_POST['search_pageno']) ? $_POST['search_pageno'] : "";
-
         // 認証可否の判定
-        SC_Utils_Ex::sfIsSuccess($objSess);
+        SC_Utils_Ex::sfIsSuccess(new SC_Session());
 
-        if (!isset($arrRet)) $arrRet = array();
+        $objFormParam = new SC_FormParam();
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $this->arrHidden = $objFormParam->getSearchArray();
+        $this->arrForm = $objFormParam->getFormParamList();
 
         switch($this->getMode()) {
-            case 'delete':
-                if(SC_Utils_Ex::sfIsInt($_POST['order_id'])) {
-                    $objQuery = new SC_Query();
-                    $where = "order_id = ?";
-                    $sqlval['del_flg'] = '1';
-                    $objQuery->update("dtb_order", $sqlval, $where, array($_POST['order_id']));
-                }
-            case 'csv':
-            case 'delete_all':
-            case 'search':
-                // 入力値の変換
-                $this->objFormParam->convParam();
-                $this->arrErr = $this->lfCheckError($arrRet);
-                $arrRet = $this->objFormParam->getHashArray();
-                // 入力なし
-                if (count($this->arrErr) == 0) {
-                    $where = "del_flg = 0";
-                    foreach ($arrRet as $key => $val) {
-                        if($val == "") {
-                            continue;
-                        }
+        // 削除
+        case 'delete':
+            $this->doDelete('order_id = ?',
+                            array($objFormParam->getValue('order_id')));
+            // 削除後に検索結果を表示するため breakしない
 
-                        $dbFactory = SC_DB_DBFactory::getInstance();
-                        switch ($key) {
+        // 検索パラメータ生成後に処理実行するため breakしない
+        case 'csv':
+        case 'delete_all':
 
-                            case 'search_product_name':
-                                    $where .= " AND (SELECT COUNT(*) FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_name ILIKE ?) > 0";
-                                    $nonsp_val = mb_ereg_replace("[  ]+","",$val);
-                                    $arrval[] = "%$nonsp_val%";
-                                break;
-                            case 'search_order_name':
-                                $where .= " AND " . $dbFactory->concatColumn(array("order_name01", "order_name02")) . " ILIKE ?";
-                                $nonsp_val = mb_ereg_replace("[  ]+","",$val);
-                                $arrval[] = "%$nonsp_val%";
-                                break;
-                            case 'search_order_kana':
-                                $where .= " AND " . $dbFactory->concatColumn(array("order_kana01", "order_kana02")) . " ILIKE ?";
-                                $nonsp_val = mb_ereg_replace("[  ]+","",$val);
-                                $arrval[] = "%$nonsp_val%";
-                                break;
-                            case 'search_order_id1':
-                                $where .= " AND order_id >= ?";
-                                $arrval[] = $val;
-                                break;
-                            case 'search_order_id2':
-                                $where .= " AND order_id <= ?";
-                                $arrval[] = $val;
-                                break;
-                            case 'search_order_sex':
-                                $tmp_where = "";
-                                foreach($val as $element) {
-                                    if($element != "") {
-                                        if($tmp_where == "") {
-                                            $tmp_where .= " AND (order_sex = ?";
-                                        } else {
-                                            $tmp_where .= " OR order_sex = ?";
-                                        }
-                                        $arrval[] = $element;
-                                    }
-                                }
+        // 検索パラメータの生成
+        case 'search':
+            $objFormParam->convParam();
+            $objFormParam->trimParam();
+            $this->arrErr = $this->lfCheckError($objFormParam);
+            $arrParam = $objFormParam->getHashArray();
 
-                                if($tmp_where != "") {
-                                    $tmp_where .= ")";
-                                    $where .= " $tmp_where ";
-                                }
-                                break;
-                            case 'search_order_tel':
-                                $where .= " AND (" . $dbFactory->concatColumn(array("order_tel01", "order_tel02", "order_tel03")) . " ILIKE ?)";
-                                $nonmark_val = ereg_replace("[()-]+","",$val);
-                                $arrval[] = "%$nonmark_val%";
-                                break;
-                            case 'search_order_email':
-                                $where .= " AND order_email ILIKE ?";
-                                $arrval[] = "%$val%";
-                                break;
-                            case 'search_payment_id':
-                                $tmp_where = "";
-                                foreach($val as $element) {
-                                    if($element != "") {
-                                        if($tmp_where == "") {
-                                            $tmp_where .= " AND (payment_id = ?";
-                                        } else {
-                                            $tmp_where .= " OR payment_id = ?";
-                                        }
-                                        $arrval[] = $element;
-                                    }
-                                }
-
-                                if($tmp_where != "") {
-                                    $tmp_where .= ")";
-                                    $where .= " $tmp_where ";
-                                }
-                                break;
-                            case 'search_total1':
-                                $where .= " AND total >= ?";
-                                $arrval[] = $val;
-                                break;
-                            case 'search_total2':
-                                $where .= " AND total <= ?";
-                                $arrval[] = $val;
-                                break;
-                            case 'search_sorderyear':
-                                $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sorderyear'], $_POST['search_sordermonth'], $_POST['search_sorderday']);
-                                $where.= " AND create_date >= ?";
-                                $arrval[] = $date;
-                                break;
-                            case 'search_eorderyear':
-                                $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eorderyear'], $_POST['search_eordermonth'], $_POST['search_eorderday'], true);
-                                $where.= " AND create_date <= ?";
-                                $arrval[] = $date;
-                                break;
-                            case 'search_supdateyear':
-                                $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_supdateyear'], $_POST['search_supdatemonth'], $_POST['search_supdateday']);
-                                $where.= " AND update_date >= ?";
-                                $arrval[] = $date;
-                                break;
-                            case 'search_eupdateyear':
-                                $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eupdateyear'], $_POST['search_eupdatemonth'], $_POST['search_eupdateday'], true);
-                                $where.= " AND update_date <= ?";
-                                $arrval[] = $date;
-                                break;
-                            case 'search_sbirthyear':
-                                $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sbirthyear'], $_POST['search_sbirthmonth'], $_POST['search_sbirthday']);
-                                $where.= " AND order_birth >= ?";
-                                $arrval[] = $date;
-                                break;
-                            case 'search_ebirthyear':
-                                $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_ebirthyear'], $_POST['search_ebirthmonth'], $_POST['search_ebirthday'], true);
-                                $where.= " AND order_birth <= ?";
-                                $arrval[] = $date;
-                                break;
-                            case 'search_order_status':
-                                $where.= " AND status = ?";
-                                $arrval[] = $val;
-                                break;
-                            default:
-                                if (!isset($arrval)) $arrval = array();
-                                break;
-                        }
+            if (count($this->arrErr) == 0) {
+                $where = "del_flg = 0";
+                foreach ($arrParam as $key => $val) {
+                    if($val == "") {
+                        continue;
                     }
+                    $this->buildQuery($key, $where, $arrval, $objFormParam);
+                }
 
-                    $order = "update_date DESC";
-                    //TODO 要リファクタリング(MODE 入れ子switch)
-                    switch($this->getMode()) {
-                        case 'csv':
+                $order = "update_date DESC";
 
-                            require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php");
-                            $objCSV = new SC_Helper_CSV_Ex();
-                            // オプションの指定
-                            $option = "ORDER BY $order";
+                /* -----------------------------------------------
+                 * 処理を実行
+                 * ----------------------------------------------- */
+                switch($this->getMode()) {
+                // CSVを送信する。
+                case 'csv':
+                    list($file_name, $data) = $this->getCSV($where, $arrval,
+                                                            $order);
+                    $this->sendResponseCSV($file_name, $data);
+                    exit;
+                    break;
 
-                            // CSV出力タイトル行の作成
-                            $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput(3, 'status = 1'));
+                // 全件削除(ADMIN_MODE)
+                case 'delete_all':
+                    $this->doDelete($where, $arrval);
+                    break;
 
-                            if (count($arrCsvOutput) <= 0) break;
-
-                            $arrCsvOutputCols = $arrCsvOutput['col'];
-                            $arrCsvOutputConvs = $arrCsvOutput['conv'];
-                            $arrCsvOutputTitle = $arrCsvOutput['disp_name'];
-                            $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle);
-                            $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols, $arrCsvOutputConvs);
-
-                            // CSVを送信する。
-                            list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data);
-                            $this->sendResponseCSV($fime_name, $data);
-                            exit;
-                            break;
-                        case 'delete_all':
-                            // 検索結果をすべて削除
-                            $sqlval['del_flg'] = 1;
-                            $objQuery = new SC_Query();
-                            $objQuery->update("dtb_order", $sqlval, $where, $arrval);
-                            break;
-                        default:
-                            // 読み込む列とテーブルの指定
-                            $col = "*";
-                            $from = "dtb_order";
-
-                            $objQuery = new SC_Query();
-                            // 行数の取得
-                            $linemax = $objQuery->count($from, $where, $arrval);
-                            $this->tpl_linemax = $linemax;               // 何件が該当しました。表示用
-                            // ページ送りの処理
-                            if(is_numeric($_POST['search_page_max'])) {
-                                $page_max = $_POST['search_page_max'];
-                            } else {
-                                $page_max = SEARCH_PMAX;
-                            }
-
-                            // ページ送りの取得
-                            $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'],
-                            $linemax, $page_max,
+                // 検索実行
+                default:
+                    // 行数の取得
+                    $this->tpl_linemax = $this->getNumberOfLines($where, $arrval);
+                    // ページ送りの処理
+                    $page_max = $this->getPageMax($objFormParam);
+                    // ページ送りの取得
+                    $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'],
+                                               $this->tpl_linemax, $page_max,
                                                "fnNaviSearchPage", NAVI_PMAX);
-                            $startno = $objNavi->start_row;
-                            $this->arrPagenavi = $objNavi->arrPagenavi;
+                    $this->arrPagenavi = $objNavi->arrPagenavi;
 
-                            // 取得範囲の指定(開始行番号、行数のセット)
-                            $objQuery->setLimitOffset($page_max, $startno);
-                            // 表示順序
-                            $objQuery->setOrder($order);
-                            // 検索結果の取得
-                            $this->arrResults = $objQuery->select($col, $from, $where, $arrval);
-                    }
+                    // 検索結果の取得
+                    $this->arrResults = $this->findOrders($where, $arrval,
+                                                          $page_max, $objNavi->start_row, $order);
                 }
-                break;
-
-                        default:
-                            break;
+            }
+            break;
+        default:
         }
-
-        $objDate = new SC_Date();
-        // 登録・更新日検索用
-        $objDate->setStartYear(RELEASE_YEAR);
-        $objDate->setEndYear(DATE("Y"));
-        $this->arrRegistYear = $objDate->getYear();
-        // 生年月日検索用
-        $objDate->setStartYear(BIRTH_YEAR);
-        $objDate->setEndYear(DATE("Y"));
-        $this->arrBirthYear = $objDate->getYear();
-        // 月日の設定
-        $this->arrMonth = $objDate->getMonth();
-        $this->arrDay = $objDate->getDay();
-
-        // 入力値の取得
-        $this->arrForm = $this->objFormParam->getFormParamList();
-        // 支払い方法の取得
-        $arrRet = $objDb->sfGetPayment();
-        $this->arrPayment = SC_Utils_Ex::sfArrKeyValue($arrRet, 'payment_id', 'payment_method');
     }
 
     /**
@@ -359,55 +177,64 @@
         parent::destroy();
     }
 
-    /* パラメータ情報の初期化 */
-    function lfInitParam() {
-        $this->objFormParam->addParam("注文番号1", "search_order_id1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("注文番号2", "search_order_id2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("対応状況", "search_order_status", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("顧客名", "search_order_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("顧客名(カナ)", "search_order_kana", STEXT_LEN, "KVCa", array("KANA_CHECK","MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("性別", "search_order_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("年齢1", "search_age1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("年齢2", "search_age2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("メールアドレス", "search_order_email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("TEL", "search_order_tel", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("支払い方法", "search_payment_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("購入金額1", "search_total1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("購入金額2", "search_total2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+    /**
+     * パラメータ情報の初期化を行う.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
+     */
+    function lfInitParam(&$objFormParam) {
+        $objFormParam->addParam("注文番号1", "search_order_id1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("注文番号2", "search_order_id2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("対応状況", "search_order_status", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("顧客名", "search_order_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("顧客名(カナ)", "search_order_kana", STEXT_LEN, "KVCa", array("KANA_CHECK","MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("性別", "search_order_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("年齢1", "search_age1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("年齢2", "search_age2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("メールアドレス", "search_order_email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("TEL", "search_order_tel", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("支払い方法", "search_payment_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("購入金額1", "search_total1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("購入金額2", "search_total2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
         // 受注日
-        $this->objFormParam->addParam("開始年", "search_sorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("開始月", "search_sordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("開始日", "search_sorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了年", "search_eorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了月", "search_eordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了日", "search_eorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始年", "search_sorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始月", "search_sordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始日", "search_sorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了年", "search_eorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了月", "search_eordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了日", "search_eorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
         // 更新日
-        $this->objFormParam->addParam("開始年", "search_supdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("開始月", "search_supdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("開始日", "search_supdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了年", "search_eupdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了月", "search_eupdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了日", "search_eupdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始年", "search_supdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始月", "search_supdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始日", "search_supdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了年", "search_eupdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了月", "search_eupdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了日", "search_eupdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
         // 生年月日
-        $this->objFormParam->addParam("開始年", "search_sbirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("開始月", "search_sbirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("開始日", "search_sbirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了年", "search_ebirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了月", "search_ebirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("終了日", "search_ebirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("購入商品","search_product_name",STEXT_LEN,"KVa",array("MAX_LENGTH_CHECK"));
-
+        $objFormParam->addParam("開始年", "search_sbirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始月", "search_sbirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("開始日", "search_sbirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了年", "search_ebirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了月", "search_ebirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("終了日", "search_ebirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("購入商品","search_product_name",STEXT_LEN,"KVa",array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("ページ送り番号","search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("受注ID", "order_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
     }
 
-    /* 入力内容のチェック */
-    function lfCheckError() {
-        // 入力データを渡す。
-        $arrRet =  $this->objFormParam->getHashArray();
-        $objErr = new SC_CheckError($arrRet);
-        $objErr->arrErr = $this->objFormParam->checkError();
+    /**
+     * 入力内容のチェックを行う.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
+     */
+    function lfCheckError(&$objFormParam) {
+        $objErr = new SC_CheckError($objFormParam->getHashArray());
+        $objErr->arrErr = $objFormParam->checkError();
 
-        // 特殊項目チェック
+        // 相関チェック
         $objErr->doFunc(array("注文番号1", "注文番号2", "search_order_id1", "search_order_id2"), array("GREATER_CHECK"));
         $objErr->doFunc(array("年齢1", "年齢2", "search_age1", "search_age2"), array("GREATER_CHECK"));
         $objErr->doFunc(array("購入金額1", "購入金額2", "search_total1", "search_total2"), array("GREATER_CHECK"));
@@ -427,6 +254,238 @@
         return $objErr->arrErr;
     }
 
+    /**
+     * クエリを構築する.
+     *
+     * 検索条件のキーに応じた WHERE 句と, クエリパラメータを構築する.
+     * クエリパラメータは, SC_FormParam の入力値から取得する.
+     *
+     * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される.
+     *
+     * @param string $key 検索条件のキー
+     * @param string $where 構築する WHERE 句
+     * @param array $arrValues 構築するクエリパラメータ
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
+     */
+    function buildQuery($key, &$where, &$arrValues, &$objFormParam) {
+        $dbFactory = SC_DB_DBFactory::getInstance();
+        switch ($key) {
 
+        case 'search_product_name':
+            $where .= " AND (SELECT COUNT(*) FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_name LIKE ?) > 0";
+            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
+            break;
+        case 'search_order_name':
+            $where .= " AND " . $dbFactory->concatColumn(array("order_name01", "order_name02")) . " LIKE ?";
+            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
+            break;
+        case 'search_order_kana':
+            $where .= " AND " . $dbFactory->concatColumn(array("order_kana01", "order_kana02")) . " LIKE ?";
+            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
+            break;
+        case 'search_order_id1':
+            $where .= " AND order_id >= ?";
+            $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
+            break;
+        case 'search_order_id2':
+            $where .= " AND order_id <= ?";
+            $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
+            break;
+        case 'search_order_sex':
+            $tmp_where = "";
+            foreach($objFormParam->getValue($key) as $element) {
+                if($element != "") {
+                    if(SC_Utils_Ex::isBlank($tmp_where)) {
+                        $tmp_where .= " AND (order_sex = ?";
+                    } else {
+                        $tmp_where .= " OR order_sex = ?";
+                    }
+                    $arrValues[] = $element;
+                }
+            }
+
+            if(!SC_Utils_Ex::isBlank($tmp_where)) {
+                $tmp_where .= ")";
+                $where .= " $tmp_where ";
+            }
+            break;
+        case 'search_order_tel':
+            $where .= " AND (" . $dbFactory->concatColumn(array("order_tel01", "order_tel02", "order_tel03")) . " LIKE ?)";
+            $arrValues[] = sprintf('%%%d%%', preg_replace('/[()-]+/','', $objFormParam->getValue($key)));
+            break;
+        case 'search_order_email':
+            $where .= " AND order_email LIKE ?";
+            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
+            break;
+        case 'search_payment_id':
+            $tmp_where = "";
+            foreach($objFormParam->getValue($key) as $element) {
+                if($element != "") {
+                    if($tmp_where == "") {
+                        $tmp_where .= " AND (payment_id = ?";
+                    } else {
+                        $tmp_where .= " OR payment_id = ?";
+                    }
+                    $arrValues[] = $element;
+                }
+            }
+
+            if(!SC_Utils_Ex::isBlank($tmp_where)) {
+                $tmp_where .= ")";
+                $where .= " $tmp_where ";
+            }
+            break;
+        case 'search_total1':
+            $where .= " AND total >= ?";
+            $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
+            break;
+        case 'search_total2':
+            $where .= " AND total <= ?";
+            $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
+            break;
+        case 'search_sorderyear':
+            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_sorderyear'),
+                                                $objFormParam->getValue('search_sordermonth'),
+                                                $objFormParam->getValue('search_sorderday'));
+            $where.= " AND create_date >= ?";
+            $arrValues[] = $date;
+            break;
+        case 'search_eorderyear':
+            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_eorderyear'),
+                                                $objFormParam->getValue('search_eordermonth'),
+                                                $objFormParam->getValue('search_eorderday'), true);
+            $where.= " AND create_date <= ?";
+            $arrValues[] = $date;
+            break;
+        case 'search_supdateyear':
+            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_supdateyear'),
+                                                $objFormParam->getValue('search_supdatemonth'),
+                                                $objFormParam->getValue('search_supdateday'));
+            $where.= " AND update_date >= ?";
+            $arrValues[] = $date;
+            break;
+        case 'search_eupdateyear':
+            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_eupdateyear'),
+                                                $objFormParam->getValue('search_eupdatemonth'),
+                                                $objFormParam->getValue('search_eupdateday'), true);
+            $where.= " AND update_date <= ?";
+            $arrValues[] = $date;
+            break;
+        case 'search_sbirthyear':
+            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_sbirthyear'),
+                                                $objFormParam->getValue('search_sbirthmonth'),
+                                                $objFormParam->getValue('search_sbirthday'));
+            $where.= " AND order_birth >= ?";
+            $arrValues[] = $date;
+            break;
+        case 'search_ebirthyear':
+            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_ebirthyear'),
+                                                $objFormParam->getValue('search_ebirthmonth'),
+                                                $objFormParam->getValue('search_ebirthday'), true);
+            $where.= " AND order_birth <= ?";
+            $arrValues[] = $date;
+            break;
+        case 'search_order_status':
+            $where.= " AND status = ?";
+            $arrValues[] = $objFormParam->getValue($key);
+            break;
+        default:
+        }
+    }
+
+    /**
+     * 受注を削除する.
+     *
+     * @param string $where 削除対象の WHERE 句
+     * @param array $arrParam 削除対象の値
+     * @return void
+     */
+    function doDelete($where, $arrParam = array()) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $objQuery->update("dtb_order", array('del_flg' => 1), $where,
+                          $arrParam);
+    }
+
+    /**
+     * CSV データを構築して取得する.
+     *
+     * 構築に成功した場合は, ファイル名と出力内容を配列で返す.
+     * 構築に失敗した場合は, false を返す.
+     *
+     * @param string $where 検索条件の WHERE 句
+     * @param array $arrValues 検索条件のパラメータ
+     * @param string $order 検索結果の並び順
+     * @return array|boolean 構築に成功した場合, ファイルと出力内容の配列;
+     *                       失敗した場合 false
+     */
+    function getCSV($where, $arrValues, $order) {
+        require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php");
+        $objCSV = new SC_Helper_CSV_Ex();
+
+        $option = "ORDER BY $order";
+
+        // CSV出力タイトル行の作成
+        $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput(3, 'status = 1'));
+
+        if (count($arrCsvOutput) <= 0) {
+            return false;
+        }
+
+        $arrCsvOutputCols = $arrCsvOutput['col'];
+        $arrCsvOutputConvs = $arrCsvOutput['conv'];
+        $arrCsvOutputTitle = $arrCsvOutput['disp_name'];
+        $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle);
+        $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrValues,
+                                  $arrCsvOutputCols, $arrCsvOutputConvs);
+        return SC_Utils_Ex::sfGetCSVData($head . $data);
+    }
+
+    /**
+     * 検索結果の行数を取得する.
+     *
+     * @param string $where 検索条件の WHERE 句
+     * @param array $arrValues 検索条件のパラメータ
+     * @return integer 検索結果の行数
+     */
+    function getNumberOfLines($where, $arrValues) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        return $objQuery->count('dtb_order', $where, $arrValues);
+    }
+
+    /**
+     * 最大表示件数を取得する.
+     *
+     * フォームの入力値から最大表示件数を取得する.
+     * 取得できなかった場合は, 定数 SEARCH_PMAX の値を返す.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return integer 最大表示件数
+     */
+    function getPageMax(&$objFormParam) {
+        $page_max = $objFormParam->getValue('search_page_max');
+        if(is_numeric($page_max)) {
+            return $page_max;
+        } else {
+            return SEARCH_PMAX;
+        }
+    }
+
+    /**
+     * 受注を検索する.
+     *
+     * @param string $where 検索条件の WHERE 句
+     * @param array $arrValues 検索条件のパラメータ
+     * @param integer $limit 表示件数
+     * @param integer $offset 開始件数
+     * @param string $order 検索結果の並び順
+     * @return array 受注の検索結果
+     */
+    function findOrders($where, $arrValues, $limit, $offset, $order) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $objQuery->setLimitOffset($limit, $offset);
+        $objQuery->setOrder($order);
+        return $objQuery->select('*', 'dtb_order', $where, $arrValues);
+    }
 }
 ?>

変更: branches/version-2_5-dev/data/class/util/SC_Utils.php
===================================================================
--- branches/version-2_5-dev/data/class/util/SC_Utils.php	2011-02-10 07:59:35 UTC (rev 20132)
+++ branches/version-2_5-dev/data/class/util/SC_Utils.php	2011-02-10 13:19:59 UTC (rev 20133)
@@ -416,6 +416,9 @@
     }
 
     // チェックボックスの値をマージ
+    /**
+     * @deprecated
+     */
     function sfMergeCBValue($keyname, $max) {
         $conv = "";
         $cnt = 1;
@@ -430,6 +433,9 @@
     }
 
     // html_checkboxesの値をマージして2進数形式に変更する。
+    /**
+     * @deprecated
+     */
     function sfMergeCheckBoxes($array, $max) {
         $ret = "";
         if(is_array($array)) {
@@ -449,6 +455,9 @@
 
 
     // html_checkboxesの値をマージして「-」でつなげる。
+    /**
+     * @deprecated
+     */
     function sfMergeParamCheckBoxes($array) {
         $ret = '';
         if(is_array($array)) {
@@ -466,6 +475,9 @@
     }
 
     // html_checkboxesの値をマージしてSQL検索用に変更する。
+    /**
+     * @deprecated
+     */
     function sfSearchCheckBoxes($array) {
         $max = max($array);
         $ret = '';
@@ -479,6 +491,9 @@
     }
 
     // 2進数形式の値をhtml_checkboxes対応の値に切り替える
+    /**
+     * @deprecated
+     */
     function sfSplitCheckBoxes($val) {
         $arrRet = array();
         $len = strlen($val);
@@ -491,6 +506,9 @@
     }
 
     // チェックボックスの値をマージ
+    /**
+     * @deprecated
+     */
     function sfMergeCBSearchValue($keyname, $max) {
         $conv = "";
         $cnt = 1;
@@ -505,6 +523,9 @@
     }
 
     // チェックボックスの値を分解
+    /**
+     * @deprecated
+     */
     function sfSplitCBValue($val, $keyname = "") {
         $arr = array();
         $len = strlen($val);




Svn-src-all メーリングリストの案内