Ignore:
Timestamp:
2011/02/10 22:19:59 (15 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:20132
bzr:committer:
Kentaro Ohkouchi <[email protected]>
bzr:file-ids:

data/Smarty/templates/admin/order/index.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Forder%2Findex.tpl
data/class/SC_FormParam.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_FormParam.php
data/class/pages/admin/order/LC_Page_Admin_Order.php 15584@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order.php
data/class/util/SC_Utils.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Futil%2FSC_Utils.php
bzr:mapping-version:
v4
bzr:merge:

[email protected]
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
[email protected]
bzr:revno:
2861
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-revisions:

data/Smarty/templates/admin/order/index.tpl [email protected]
data/class/SC_FormParam.php [email protected]
data/class/pages/admin/order/LC_Page_Admin_Order.php [email protected]
bzr:timestamp:
2011-02-10 22:19:56.332000017 +0900
bzr:user-agent:
bzr2.2.1+bzr-svn1.0.4
svn:original-date:
2011-02-10T13:19:56.332000Z
Message:

#975([管理画面]受注管理(受注一覧、登録編集))

  • 受注一覧のリファクタリング
  • SC_Utils クラスの 非推奨の関数に deprecated コメント追加
  • SC_FormParam::getSearchArray() 関数追加
Location:
branches/version-2_5-dev/data/class
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/SC_FormParam.php

    r20127 r20133  
    2626 * 
    2727 * :XXX: addParam と setParam で言う「パラメータ」が用語として競合しているように感じる。(2009/10/17 Seasoft 塚田) 
    28  * TODO 配列の再帰処理 
    2928 * 
    3029 * @package SC 
     
    202201                case 'FILE_NAME_CHECK': 
    203202                case 'MOBILE_EMAIL_CHECK': 
    204                     $this->recursionCheck($this->disp_name[$cnt], $func, 
    205                                           $this->param[$cnt], $objErr->arrErr, 
    206                                           $val, $this->length[$cnt]); 
    207                     break; 
    208203                case 'MAX_LENGTH_CHECK': 
    209204                case 'MIN_LENGTH_CHECK': 
     
    398393    } 
    399394 
    400     function splitCheckBoxes($keyname) { 
    401         $cnt = 0; 
    402         foreach($this->keyname as $val) { 
    403             if($val == $keyname) { 
    404                 $this->param[$cnt] = sfSplitCheckBoxes($this->param[$cnt]); 
    405             } 
    406             $cnt++; 
    407         } 
    408     } 
    409  
     395    /** 
     396     * @deprecated 
     397     */ 
    410398    function splitParamCheckBoxes($keyname) { 
    411399        $cnt = 0; 
     
    450438        } 
    451439    } 
     440 
     441    /** 
     442     * 検索結果引き継ぎ用の連想配列を取得する. 
     443     * 
     444     * 引数で指定した文字列で始まるパラメータ名の入力値を連想配列で取得する. 
     445     * 
     446     * @param string $prefix パラメータ名の接頭辞 
     447     * @return array 検索結果引き継ぎ用の連想配列. 
     448     */ 
     449    function getSearchArray($prefix = 'search_') { 
     450        $cnt = 0; 
     451        $arrResults = array(); 
     452        foreach ($this->keyname as $key) { 
     453            if (preg_match('/^' . $prefix . '/', $key)) { 
     454                $arrResults[$key] = isset($this->param[$cnt]) 
     455                    ? $this->param[$cnt] : ""; 
     456            } 
     457            $cnt++; 
     458        } 
     459        return $arrResults; 
     460    } 
    452461} 
    453462?> 
  • branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order.php

    r20128 r20133  
    2424// {{{ requires 
    2525require_once(CLASS_REALDIR . "pages/admin/LC_Page_Admin.php"); 
    26  
    27 /* ペイジェント決済モジュール連携用 */ 
    28 if (file_exists(MODULE_REALDIR . 'mdl_paygent/include.php') === TRUE) { 
    29     require_once(MODULE_REALDIR . 'mdl_paygent/include.php'); 
    30 } 
    3126 
    3227/** 
     
    6156        $this->arrSex = $masterData->getMasterData("mtb_sex"); 
    6257        $this->arrPageMax = $masterData->getMasterData("mtb_page_max"); 
    63  
    64         /* ペイジェント決済モジュール連携用 */ 
    65         if(function_exists("sfPaygentOrderPage")) { 
    66             $this->arrDispKind = sfPaygentOrderPage(); 
    67         } 
    68         $this->httpCacheControl('nocache'); 
    69     } 
    70  
    71     /** 
    72      * Page のプロセス. 
    73      * 
    74      * @return void 
    75      */ 
    76     function process() { 
    77         $this->action(); 
    78         $this->sendResponse(); 
    79     } 
    80  
    81     /** 
    82      * Page のアクション. 
    83      * 
    84      * @return void 
    85      */ 
    86     function action() { 
    87         $objDb = new SC_Helper_DB_Ex(); 
    88         $objSess = new SC_Session(); 
    89         // パラメータ管理クラス 
    90         $this->objFormParam = new SC_FormParam(); 
    91         // パラメータ情報の初期化 
    92         $this->lfInitParam(); 
    93         $this->objFormParam->setParam($_POST); 
    94  
    95         $this->objFormParam->splitParamCheckBoxes('search_order_sex'); 
    96         $this->objFormParam->splitParamCheckBoxes('search_payment_id'); 
    97  
    98         // 検索ワードの引き継ぎ 
    99         foreach ($_POST as $key => $val) { 
    100             if (ereg("^search_", $key)) { 
    101                 switch($key) { 
    102                     case 'search_order_sex': 
    103                     case 'search_payment_id': 
    104                         $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 
    105                         break; 
    106                     default: 
    107                         $this->arrHidden[$key] = $val; 
    108                         break; 
    109                 } 
    110             } 
    111         } 
    112  
    113         // ページ送り用 
    114         $this->arrHidden['search_pageno'] = 
    115         isset($_POST['search_pageno']) ? $_POST['search_pageno'] : ""; 
    116  
    117         // 認証可否の判定 
    118         SC_Utils_Ex::sfIsSuccess($objSess); 
    119  
    120         if (!isset($arrRet)) $arrRet = array(); 
    121  
    122         switch($this->getMode()) { 
    123             case 'delete': 
    124                 if(SC_Utils_Ex::sfIsInt($_POST['order_id'])) { 
    125                     $objQuery = new SC_Query(); 
    126                     $where = "order_id = ?"; 
    127                     $sqlval['del_flg'] = '1'; 
    128                     $objQuery->update("dtb_order", $sqlval, $where, array($_POST['order_id'])); 
    129                 } 
    130             case 'csv': 
    131             case 'delete_all': 
    132             case 'search': 
    133                 // 入力値の変換 
    134                 $this->objFormParam->convParam(); 
    135                 $this->arrErr = $this->lfCheckError($arrRet); 
    136                 $arrRet = $this->objFormParam->getHashArray(); 
    137                 // 入力なし 
    138                 if (count($this->arrErr) == 0) { 
    139                     $where = "del_flg = 0"; 
    140                     foreach ($arrRet as $key => $val) { 
    141                         if($val == "") { 
    142                             continue; 
    143                         } 
    144  
    145                         $dbFactory = SC_DB_DBFactory::getInstance(); 
    146                         switch ($key) { 
    147  
    148                             case 'search_product_name': 
    149                                     $where .= " AND (SELECT COUNT(*) FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_name ILIKE ?) > 0"; 
    150                                     $nonsp_val = mb_ereg_replace("[  ]+","",$val); 
    151                                     $arrval[] = "%$nonsp_val%"; 
    152                                 break; 
    153                             case 'search_order_name': 
    154                                 $where .= " AND " . $dbFactory->concatColumn(array("order_name01", "order_name02")) . " ILIKE ?"; 
    155                                 $nonsp_val = mb_ereg_replace("[  ]+","",$val); 
    156                                 $arrval[] = "%$nonsp_val%"; 
    157                                 break; 
    158                             case 'search_order_kana': 
    159                                 $where .= " AND " . $dbFactory->concatColumn(array("order_kana01", "order_kana02")) . " ILIKE ?"; 
    160                                 $nonsp_val = mb_ereg_replace("[  ]+","",$val); 
    161                                 $arrval[] = "%$nonsp_val%"; 
    162                                 break; 
    163                             case 'search_order_id1': 
    164                                 $where .= " AND order_id >= ?"; 
    165                                 $arrval[] = $val; 
    166                                 break; 
    167                             case 'search_order_id2': 
    168                                 $where .= " AND order_id <= ?"; 
    169                                 $arrval[] = $val; 
    170                                 break; 
    171                             case 'search_order_sex': 
    172                                 $tmp_where = ""; 
    173                                 foreach($val as $element) { 
    174                                     if($element != "") { 
    175                                         if($tmp_where == "") { 
    176                                             $tmp_where .= " AND (order_sex = ?"; 
    177                                         } else { 
    178                                             $tmp_where .= " OR order_sex = ?"; 
    179                                         } 
    180                                         $arrval[] = $element; 
    181                                     } 
    182                                 } 
    183  
    184                                 if($tmp_where != "") { 
    185                                     $tmp_where .= ")"; 
    186                                     $where .= " $tmp_where "; 
    187                                 } 
    188                                 break; 
    189                             case 'search_order_tel': 
    190                                 $where .= " AND (" . $dbFactory->concatColumn(array("order_tel01", "order_tel02", "order_tel03")) . " ILIKE ?)"; 
    191                                 $nonmark_val = ereg_replace("[()-]+","",$val); 
    192                                 $arrval[] = "%$nonmark_val%"; 
    193                                 break; 
    194                             case 'search_order_email': 
    195                                 $where .= " AND order_email ILIKE ?"; 
    196                                 $arrval[] = "%$val%"; 
    197                                 break; 
    198                             case 'search_payment_id': 
    199                                 $tmp_where = ""; 
    200                                 foreach($val as $element) { 
    201                                     if($element != "") { 
    202                                         if($tmp_where == "") { 
    203                                             $tmp_where .= " AND (payment_id = ?"; 
    204                                         } else { 
    205                                             $tmp_where .= " OR payment_id = ?"; 
    206                                         } 
    207                                         $arrval[] = $element; 
    208                                     } 
    209                                 } 
    210  
    211                                 if($tmp_where != "") { 
    212                                     $tmp_where .= ")"; 
    213                                     $where .= " $tmp_where "; 
    214                                 } 
    215                                 break; 
    216                             case 'search_total1': 
    217                                 $where .= " AND total >= ?"; 
    218                                 $arrval[] = $val; 
    219                                 break; 
    220                             case 'search_total2': 
    221                                 $where .= " AND total <= ?"; 
    222                                 $arrval[] = $val; 
    223                                 break; 
    224                             case 'search_sorderyear': 
    225                                 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sorderyear'], $_POST['search_sordermonth'], $_POST['search_sorderday']); 
    226                                 $where.= " AND create_date >= ?"; 
    227                                 $arrval[] = $date; 
    228                                 break; 
    229                             case 'search_eorderyear': 
    230                                 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eorderyear'], $_POST['search_eordermonth'], $_POST['search_eorderday'], true); 
    231                                 $where.= " AND create_date <= ?"; 
    232                                 $arrval[] = $date; 
    233                                 break; 
    234                             case 'search_supdateyear': 
    235                                 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_supdateyear'], $_POST['search_supdatemonth'], $_POST['search_supdateday']); 
    236                                 $where.= " AND update_date >= ?"; 
    237                                 $arrval[] = $date; 
    238                                 break; 
    239                             case 'search_eupdateyear': 
    240                                 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eupdateyear'], $_POST['search_eupdatemonth'], $_POST['search_eupdateday'], true); 
    241                                 $where.= " AND update_date <= ?"; 
    242                                 $arrval[] = $date; 
    243                                 break; 
    244                             case 'search_sbirthyear': 
    245                                 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sbirthyear'], $_POST['search_sbirthmonth'], $_POST['search_sbirthday']); 
    246                                 $where.= " AND order_birth >= ?"; 
    247                                 $arrval[] = $date; 
    248                                 break; 
    249                             case 'search_ebirthyear': 
    250                                 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_ebirthyear'], $_POST['search_ebirthmonth'], $_POST['search_ebirthday'], true); 
    251                                 $where.= " AND order_birth <= ?"; 
    252                                 $arrval[] = $date; 
    253                                 break; 
    254                             case 'search_order_status': 
    255                                 $where.= " AND status = ?"; 
    256                                 $arrval[] = $val; 
    257                                 break; 
    258                             default: 
    259                                 if (!isset($arrval)) $arrval = array(); 
    260                                 break; 
    261                         } 
    262                     } 
    263  
    264                     $order = "update_date DESC"; 
    265                     //TODO 要リファクタリング(MODE 入れ子switch) 
    266                     switch($this->getMode()) { 
    267                         case 'csv': 
    268  
    269                             require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 
    270                             $objCSV = new SC_Helper_CSV_Ex(); 
    271                             // オプションの指定 
    272                             $option = "ORDER BY $order"; 
    273  
    274                             // CSV出力タイトル行の作成 
    275                             $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput(3, 'status = 1')); 
    276  
    277                             if (count($arrCsvOutput) <= 0) break; 
    278  
    279                             $arrCsvOutputCols = $arrCsvOutput['col']; 
    280                             $arrCsvOutputConvs = $arrCsvOutput['conv']; 
    281                             $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 
    282                             $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle); 
    283                             $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols, $arrCsvOutputConvs); 
    284  
    285                             // CSVを送信する。 
    286                             list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data); 
    287                             $this->sendResponseCSV($fime_name, $data); 
    288                             exit; 
    289                             break; 
    290                         case 'delete_all': 
    291                             // 検索結果をすべて削除 
    292                             $sqlval['del_flg'] = 1; 
    293                             $objQuery = new SC_Query(); 
    294                             $objQuery->update("dtb_order", $sqlval, $where, $arrval); 
    295                             break; 
    296                         default: 
    297                             // 読み込む列とテーブルの指定 
    298                             $col = "*"; 
    299                             $from = "dtb_order"; 
    300  
    301                             $objQuery = new SC_Query(); 
    302                             // 行数の取得 
    303                             $linemax = $objQuery->count($from, $where, $arrval); 
    304                             $this->tpl_linemax = $linemax;               // 何件が該当しました。表示用 
    305                             // ページ送りの処理 
    306                             if(is_numeric($_POST['search_page_max'])) { 
    307                                 $page_max = $_POST['search_page_max']; 
    308                             } else { 
    309                                 $page_max = SEARCH_PMAX; 
    310                             } 
    311  
    312                             // ページ送りの取得 
    313                             $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'], 
    314                             $linemax, $page_max, 
    315                                                "fnNaviSearchPage", NAVI_PMAX); 
    316                             $startno = $objNavi->start_row; 
    317                             $this->arrPagenavi = $objNavi->arrPagenavi; 
    318  
    319                             // 取得範囲の指定(開始行番号、行数のセット) 
    320                             $objQuery->setLimitOffset($page_max, $startno); 
    321                             // 表示順序 
    322                             $objQuery->setOrder($order); 
    323                             // 検索結果の取得 
    324                             $this->arrResults = $objQuery->select($col, $from, $where, $arrval); 
    325                     } 
    326                 } 
    327                 break; 
    328  
    329                         default: 
    330                             break; 
    331         } 
    33258 
    33359        $objDate = new SC_Date(); 
     
    34470        $this->arrDay = $objDate->getDay(); 
    34571 
    346         // 入力値の取得 
    347         $this->arrForm = $this->objFormParam->getFormParamList(); 
    34872        // 支払い方法の取得 
    349         $arrRet = $objDb->sfGetPayment(); 
    350         $this->arrPayment = SC_Utils_Ex::sfArrKeyValue($arrRet, 'payment_id', 'payment_method'); 
     73        $this->arrPayments = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
     74 
     75        $this->httpCacheControl('nocache'); 
     76    } 
     77 
     78    /** 
     79     * Page のプロセス. 
     80     * 
     81     * @return void 
     82     */ 
     83    function process() { 
     84        $this->action(); 
     85        $this->sendResponse(); 
     86    } 
     87 
     88    /** 
     89     * Page のアクション. 
     90     * 
     91     * @return void 
     92     */ 
     93    function action() { 
     94        // 認証可否の判定 
     95        SC_Utils_Ex::sfIsSuccess(new SC_Session()); 
     96 
     97        $objFormParam = new SC_FormParam(); 
     98        $this->lfInitParam($objFormParam); 
     99        $objFormParam->setParam($_POST); 
     100        $this->arrHidden = $objFormParam->getSearchArray(); 
     101        $this->arrForm = $objFormParam->getFormParamList(); 
     102 
     103        switch($this->getMode()) { 
     104        // 削除 
     105        case 'delete': 
     106            $this->doDelete('order_id = ?', 
     107                            array($objFormParam->getValue('order_id'))); 
     108            // 削除後に検索結果を表示するため breakしない 
     109 
     110        // 検索パラメータ生成後に処理実行するため breakしない 
     111        case 'csv': 
     112        case 'delete_all': 
     113 
     114        // 検索パラメータの生成 
     115        case 'search': 
     116            $objFormParam->convParam(); 
     117            $objFormParam->trimParam(); 
     118            $this->arrErr = $this->lfCheckError($objFormParam); 
     119            $arrParam = $objFormParam->getHashArray(); 
     120 
     121            if (count($this->arrErr) == 0) { 
     122                $where = "del_flg = 0"; 
     123                foreach ($arrParam as $key => $val) { 
     124                    if($val == "") { 
     125                        continue; 
     126                    } 
     127                    $this->buildQuery($key, $where, $arrval, $objFormParam); 
     128                } 
     129 
     130                $order = "update_date DESC"; 
     131 
     132                /* ----------------------------------------------- 
     133                 * 処理を実行 
     134                 * ----------------------------------------------- */ 
     135                switch($this->getMode()) { 
     136                // CSVを送信する。 
     137                case 'csv': 
     138                    list($file_name, $data) = $this->getCSV($where, $arrval, 
     139                                                            $order); 
     140                    $this->sendResponseCSV($file_name, $data); 
     141                    exit; 
     142                    break; 
     143 
     144                // 全件削除(ADMIN_MODE) 
     145                case 'delete_all': 
     146                    $this->doDelete($where, $arrval); 
     147                    break; 
     148 
     149                // 検索実行 
     150                default: 
     151                    // 行数の取得 
     152                    $this->tpl_linemax = $this->getNumberOfLines($where, $arrval); 
     153                    // ページ送りの処理 
     154                    $page_max = $this->getPageMax($objFormParam); 
     155                    // ページ送りの取得 
     156                    $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'], 
     157                                               $this->tpl_linemax, $page_max, 
     158                                               "fnNaviSearchPage", NAVI_PMAX); 
     159                    $this->arrPagenavi = $objNavi->arrPagenavi; 
     160 
     161                    // 検索結果の取得 
     162                    $this->arrResults = $this->findOrders($where, $arrval, 
     163                                                          $page_max, $objNavi->start_row, $order); 
     164                } 
     165            } 
     166            break; 
     167        default: 
     168        } 
    351169    } 
    352170 
     
    360178    } 
    361179 
    362     /* パラメータ情報の初期化 */ 
    363     function lfInitParam() { 
    364         $this->objFormParam->addParam("注文番号1", "search_order_id1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    365         $this->objFormParam->addParam("注文番号2", "search_order_id2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    366         $this->objFormParam->addParam("対応状況", "search_order_status", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    367         $this->objFormParam->addParam("顧客名", "search_order_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
    368         $this->objFormParam->addParam("顧客名(カナ)", "search_order_kana", STEXT_LEN, "KVCa", array("KANA_CHECK","MAX_LENGTH_CHECK")); 
    369         $this->objFormParam->addParam("性別", "search_order_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
    370         $this->objFormParam->addParam("年齢1", "search_age1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    371         $this->objFormParam->addParam("年齢2", "search_age2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    372         $this->objFormParam->addParam("メールアドレス", "search_order_email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
    373         $this->objFormParam->addParam("TEL", "search_order_tel", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
    374         $this->objFormParam->addParam("支払い方法", "search_payment_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    375         $this->objFormParam->addParam("購入金額1", "search_total1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    376         $this->objFormParam->addParam("購入金額2", "search_total2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    377         $this->objFormParam->addParam("表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     180    /** 
     181     * パラメータ情報の初期化を行う. 
     182     * 
     183     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     184     * @return void 
     185     */ 
     186    function lfInitParam(&$objFormParam) { 
     187        $objFormParam->addParam("注文番号1", "search_order_id1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     188        $objFormParam->addParam("注文番号2", "search_order_id2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     189        $objFormParam->addParam("対応状況", "search_order_status", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     190        $objFormParam->addParam("顧客名", "search_order_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     191        $objFormParam->addParam("顧客名(カナ)", "search_order_kana", STEXT_LEN, "KVCa", array("KANA_CHECK","MAX_LENGTH_CHECK")); 
     192        $objFormParam->addParam("性別", "search_order_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 
     193        $objFormParam->addParam("年齢1", "search_age1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     194        $objFormParam->addParam("年齢2", "search_age2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     195        $objFormParam->addParam("メールアドレス", "search_order_email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     196        $objFormParam->addParam("TEL", "search_order_tel", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
     197        $objFormParam->addParam("支払い方法", "search_payment_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     198        $objFormParam->addParam("購入金額1", "search_total1", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     199        $objFormParam->addParam("購入金額2", "search_total2", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     200        $objFormParam->addParam("表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    378201        // 受注日 
    379         $this->objFormParam->addParam("開始年", "search_sorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    380         $this->objFormParam->addParam("開始月", "search_sordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    381         $this->objFormParam->addParam("開始日", "search_sorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    382         $this->objFormParam->addParam("終了年", "search_eorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    383         $this->objFormParam->addParam("終了月", "search_eordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    384         $this->objFormParam->addParam("終了日", "search_eorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     202        $objFormParam->addParam("開始年", "search_sorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     203        $objFormParam->addParam("開始月", "search_sordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     204        $objFormParam->addParam("開始日", "search_sorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     205        $objFormParam->addParam("終了年", "search_eorderyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     206        $objFormParam->addParam("終了月", "search_eordermonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     207        $objFormParam->addParam("終了日", "search_eorderday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    385208        // 更新日 
    386         $this->objFormParam->addParam("開始年", "search_supdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    387         $this->objFormParam->addParam("開始月", "search_supdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    388         $this->objFormParam->addParam("開始日", "search_supdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    389         $this->objFormParam->addParam("終了年", "search_eupdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    390         $this->objFormParam->addParam("終了月", "search_eupdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    391         $this->objFormParam->addParam("終了日", "search_eupdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     209        $objFormParam->addParam("開始年", "search_supdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     210        $objFormParam->addParam("開始月", "search_supdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     211        $objFormParam->addParam("開始日", "search_supdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     212        $objFormParam->addParam("終了年", "search_eupdateyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     213        $objFormParam->addParam("終了月", "search_eupdatemonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     214        $objFormParam->addParam("終了日", "search_eupdateday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    392215        // 生年月日 
    393         $this->objFormParam->addParam("開始年", "search_sbirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    394         $this->objFormParam->addParam("開始月", "search_sbirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    395         $this->objFormParam->addParam("開始日", "search_sbirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    396         $this->objFormParam->addParam("終了年", "search_ebirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    397         $this->objFormParam->addParam("終了月", "search_ebirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    398         $this->objFormParam->addParam("終了日", "search_ebirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    399         $this->objFormParam->addParam("購入商品","search_product_name",STEXT_LEN,"KVa",array("MAX_LENGTH_CHECK")); 
    400  
    401     } 
    402  
    403     /* 入力内容のチェック */ 
    404     function lfCheckError() { 
    405         // 入力データを渡す。 
    406         $arrRet =  $this->objFormParam->getHashArray(); 
    407         $objErr = new SC_CheckError($arrRet); 
    408         $objErr->arrErr = $this->objFormParam->checkError(); 
    409  
    410         // 特殊項目チェック 
     216        $objFormParam->addParam("開始年", "search_sbirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     217        $objFormParam->addParam("開始月", "search_sbirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     218        $objFormParam->addParam("開始日", "search_sbirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     219        $objFormParam->addParam("終了年", "search_ebirthyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     220        $objFormParam->addParam("終了月", "search_ebirthmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     221        $objFormParam->addParam("終了日", "search_ebirthday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     222        $objFormParam->addParam("購入商品","search_product_name",STEXT_LEN,"KVa",array("MAX_LENGTH_CHECK")); 
     223        $objFormParam->addParam("ページ送り番号","search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     224        $objFormParam->addParam("受注ID", "order_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
     225    } 
     226 
     227    /** 
     228     * 入力内容のチェックを行う. 
     229     * 
     230     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     231     * @return void 
     232     */ 
     233    function lfCheckError(&$objFormParam) { 
     234        $objErr = new SC_CheckError($objFormParam->getHashArray()); 
     235        $objErr->arrErr = $objFormParam->checkError(); 
     236 
     237        // 相関チェック 
    411238        $objErr->doFunc(array("注文番号1", "注文番号2", "search_order_id1", "search_order_id2"), array("GREATER_CHECK")); 
    412239        $objErr->doFunc(array("年齢1", "年齢2", "search_age1", "search_age2"), array("GREATER_CHECK")); 
     
    428255    } 
    429256 
    430  
     257    /** 
     258     * クエリを構築する. 
     259     * 
     260     * 検索条件のキーに応じた WHERE 句と, クエリパラメータを構築する. 
     261     * クエリパラメータは, SC_FormParam の入力値から取得する. 
     262     * 
     263     * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される. 
     264     * 
     265     * @param string $key 検索条件のキー 
     266     * @param string $where 構築する WHERE 句 
     267     * @param array $arrValues 構築するクエリパラメータ 
     268     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     269     * @return void 
     270     */ 
     271    function buildQuery($key, &$where, &$arrValues, &$objFormParam) { 
     272        $dbFactory = SC_DB_DBFactory::getInstance(); 
     273        switch ($key) { 
     274 
     275        case 'search_product_name': 
     276            $where .= " AND (SELECT COUNT(*) FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_name LIKE ?) > 0"; 
     277            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key)); 
     278            break; 
     279        case 'search_order_name': 
     280            $where .= " AND " . $dbFactory->concatColumn(array("order_name01", "order_name02")) . " LIKE ?"; 
     281            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key)); 
     282            break; 
     283        case 'search_order_kana': 
     284            $where .= " AND " . $dbFactory->concatColumn(array("order_kana01", "order_kana02")) . " LIKE ?"; 
     285            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key)); 
     286            break; 
     287        case 'search_order_id1': 
     288            $where .= " AND order_id >= ?"; 
     289            $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); 
     290            break; 
     291        case 'search_order_id2': 
     292            $where .= " AND order_id <= ?"; 
     293            $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); 
     294            break; 
     295        case 'search_order_sex': 
     296            $tmp_where = ""; 
     297            foreach($objFormParam->getValue($key) as $element) { 
     298                if($element != "") { 
     299                    if(SC_Utils_Ex::isBlank($tmp_where)) { 
     300                        $tmp_where .= " AND (order_sex = ?"; 
     301                    } else { 
     302                        $tmp_where .= " OR order_sex = ?"; 
     303                    } 
     304                    $arrValues[] = $element; 
     305                } 
     306            } 
     307 
     308            if(!SC_Utils_Ex::isBlank($tmp_where)) { 
     309                $tmp_where .= ")"; 
     310                $where .= " $tmp_where "; 
     311            } 
     312            break; 
     313        case 'search_order_tel': 
     314            $where .= " AND (" . $dbFactory->concatColumn(array("order_tel01", "order_tel02", "order_tel03")) . " LIKE ?)"; 
     315            $arrValues[] = sprintf('%%%d%%', preg_replace('/[()-]+/','', $objFormParam->getValue($key))); 
     316            break; 
     317        case 'search_order_email': 
     318            $where .= " AND order_email LIKE ?"; 
     319            $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key)); 
     320            break; 
     321        case 'search_payment_id': 
     322            $tmp_where = ""; 
     323            foreach($objFormParam->getValue($key) as $element) { 
     324                if($element != "") { 
     325                    if($tmp_where == "") { 
     326                        $tmp_where .= " AND (payment_id = ?"; 
     327                    } else { 
     328                        $tmp_where .= " OR payment_id = ?"; 
     329                    } 
     330                    $arrValues[] = $element; 
     331                } 
     332            } 
     333 
     334            if(!SC_Utils_Ex::isBlank($tmp_where)) { 
     335                $tmp_where .= ")"; 
     336                $where .= " $tmp_where "; 
     337            } 
     338            break; 
     339        case 'search_total1': 
     340            $where .= " AND total >= ?"; 
     341            $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); 
     342            break; 
     343        case 'search_total2': 
     344            $where .= " AND total <= ?"; 
     345            $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); 
     346            break; 
     347        case 'search_sorderyear': 
     348            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_sorderyear'), 
     349                                                $objFormParam->getValue('search_sordermonth'), 
     350                                                $objFormParam->getValue('search_sorderday')); 
     351            $where.= " AND create_date >= ?"; 
     352            $arrValues[] = $date; 
     353            break; 
     354        case 'search_eorderyear': 
     355            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_eorderyear'), 
     356                                                $objFormParam->getValue('search_eordermonth'), 
     357                                                $objFormParam->getValue('search_eorderday'), true); 
     358            $where.= " AND create_date <= ?"; 
     359            $arrValues[] = $date; 
     360            break; 
     361        case 'search_supdateyear': 
     362            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_supdateyear'), 
     363                                                $objFormParam->getValue('search_supdatemonth'), 
     364                                                $objFormParam->getValue('search_supdateday')); 
     365            $where.= " AND update_date >= ?"; 
     366            $arrValues[] = $date; 
     367            break; 
     368        case 'search_eupdateyear': 
     369            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_eupdateyear'), 
     370                                                $objFormParam->getValue('search_eupdatemonth'), 
     371                                                $objFormParam->getValue('search_eupdateday'), true); 
     372            $where.= " AND update_date <= ?"; 
     373            $arrValues[] = $date; 
     374            break; 
     375        case 'search_sbirthyear': 
     376            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_sbirthyear'), 
     377                                                $objFormParam->getValue('search_sbirthmonth'), 
     378                                                $objFormParam->getValue('search_sbirthday')); 
     379            $where.= " AND order_birth >= ?"; 
     380            $arrValues[] = $date; 
     381            break; 
     382        case 'search_ebirthyear': 
     383            $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_ebirthyear'), 
     384                                                $objFormParam->getValue('search_ebirthmonth'), 
     385                                                $objFormParam->getValue('search_ebirthday'), true); 
     386            $where.= " AND order_birth <= ?"; 
     387            $arrValues[] = $date; 
     388            break; 
     389        case 'search_order_status': 
     390            $where.= " AND status = ?"; 
     391            $arrValues[] = $objFormParam->getValue($key); 
     392            break; 
     393        default: 
     394        } 
     395    } 
     396 
     397    /** 
     398     * 受注を削除する. 
     399     * 
     400     * @param string $where 削除対象の WHERE 句 
     401     * @param array $arrParam 削除対象の値 
     402     * @return void 
     403     */ 
     404    function doDelete($where, $arrParam = array()) { 
     405        $objQuery =& SC_Query::getSingletonInstance(); 
     406        $objQuery->update("dtb_order", array('del_flg' => 1), $where, 
     407                          $arrParam); 
     408    } 
     409 
     410    /** 
     411     * CSV データを構築して取得する. 
     412     * 
     413     * 構築に成功した場合は, ファイル名と出力内容を配列で返す. 
     414     * 構築に失敗した場合は, false を返す. 
     415     * 
     416     * @param string $where 検索条件の WHERE 句 
     417     * @param array $arrValues 検索条件のパラメータ 
     418     * @param string $order 検索結果の並び順 
     419     * @return array|boolean 構築に成功した場合, ファイルと出力内容の配列; 
     420     *                       失敗した場合 false 
     421     */ 
     422    function getCSV($where, $arrValues, $order) { 
     423        require_once(CLASS_EX_REALDIR . "helper_extends/SC_Helper_CSV_Ex.php"); 
     424        $objCSV = new SC_Helper_CSV_Ex(); 
     425 
     426        $option = "ORDER BY $order"; 
     427 
     428        // CSV出力タイトル行の作成 
     429        $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput(3, 'status = 1')); 
     430 
     431        if (count($arrCsvOutput) <= 0) { 
     432            return false; 
     433        } 
     434 
     435        $arrCsvOutputCols = $arrCsvOutput['col']; 
     436        $arrCsvOutputConvs = $arrCsvOutput['conv']; 
     437        $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 
     438        $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle); 
     439        $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrValues, 
     440                                  $arrCsvOutputCols, $arrCsvOutputConvs); 
     441        return SC_Utils_Ex::sfGetCSVData($head . $data); 
     442    } 
     443 
     444    /** 
     445     * 検索結果の行数を取得する. 
     446     * 
     447     * @param string $where 検索条件の WHERE 句 
     448     * @param array $arrValues 検索条件のパラメータ 
     449     * @return integer 検索結果の行数 
     450     */ 
     451    function getNumberOfLines($where, $arrValues) { 
     452        $objQuery =& SC_Query::getSingletonInstance(); 
     453        return $objQuery->count('dtb_order', $where, $arrValues); 
     454    } 
     455 
     456    /** 
     457     * 最大表示件数を取得する. 
     458     * 
     459     * フォームの入力値から最大表示件数を取得する. 
     460     * 取得できなかった場合は, 定数 SEARCH_PMAX の値を返す. 
     461     * 
     462     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     463     * @return integer 最大表示件数 
     464     */ 
     465    function getPageMax(&$objFormParam) { 
     466        $page_max = $objFormParam->getValue('search_page_max'); 
     467        if(is_numeric($page_max)) { 
     468            return $page_max; 
     469        } else { 
     470            return SEARCH_PMAX; 
     471        } 
     472    } 
     473 
     474    /** 
     475     * 受注を検索する. 
     476     * 
     477     * @param string $where 検索条件の WHERE 句 
     478     * @param array $arrValues 検索条件のパラメータ 
     479     * @param integer $limit 表示件数 
     480     * @param integer $offset 開始件数 
     481     * @param string $order 検索結果の並び順 
     482     * @return array 受注の検索結果 
     483     */ 
     484    function findOrders($where, $arrValues, $limit, $offset, $order) { 
     485        $objQuery =& SC_Query::getSingletonInstance(); 
     486        $objQuery->setLimitOffset($limit, $offset); 
     487        $objQuery->setOrder($order); 
     488        return $objQuery->select('*', 'dtb_order', $where, $arrValues); 
     489    } 
    431490} 
    432491?> 
  • branches/version-2_5-dev/data/class/util/SC_Utils.php

    r20129 r20133  
    417417 
    418418    // チェックボックスの値をマージ 
     419    /** 
     420     * @deprecated 
     421     */ 
    419422    function sfMergeCBValue($keyname, $max) { 
    420423        $conv = ""; 
     
    431434 
    432435    // html_checkboxesの値をマージして2進数形式に変更する。 
     436    /** 
     437     * @deprecated 
     438     */ 
    433439    function sfMergeCheckBoxes($array, $max) { 
    434440        $ret = ""; 
     
    450456 
    451457    // html_checkboxesの値をマージして「-」でつなげる。 
     458    /** 
     459     * @deprecated 
     460     */ 
    452461    function sfMergeParamCheckBoxes($array) { 
    453462        $ret = ''; 
     
    467476 
    468477    // html_checkboxesの値をマージしてSQL検索用に変更する。 
     478    /** 
     479     * @deprecated 
     480     */ 
    469481    function sfSearchCheckBoxes($array) { 
    470482        $max = max($array); 
     
    480492 
    481493    // 2進数形式の値をhtml_checkboxes対応の値に切り替える 
     494    /** 
     495     * @deprecated 
     496     */ 
    482497    function sfSplitCheckBoxes($val) { 
    483498        $arrRet = array(); 
     
    492507 
    493508    // チェックボックスの値をマージ 
     509    /** 
     510     * @deprecated 
     511     */ 
    494512    function sfMergeCBSearchValue($keyname, $max) { 
    495513        $conv = ""; 
     
    506524 
    507525    // チェックボックスの値を分解 
     526    /** 
     527     * @deprecated 
     528     */ 
    508529    function sfSplitCBValue($val, $keyname = "") { 
    509530        $arr = array(); 
Note: See TracChangeset for help on using the changeset viewer.