Ignore:
Timestamp:
2012/12/15 19:08:08 (11 years ago)
Author:
Seasoft
Message:

#1985 (LC_Page_Admin_Total#lfCheckError バリデーション対象を誤っている)
#1903 (無駄な処理を改善する)

  • ループ処理を使う必要が無いシーンで使って可読性が低くなっていた。
  • バリデーションで無駄なチェックを実行していた
  • <input name="form"> の渡し忘れがある。自前で複雑なことをして誤りを生んでいる。「search_」を前置して、共通処理で透過的に処理させる。
Location:
branches/version-2_12-dev/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/Smarty/templates/admin/total/index.tpl

    r22003 r22138  
    3232                    <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 
    3333                    <input type="hidden" name="mode" value="search" /> 
    34                     <input type="hidden" name="form" value="1" /> 
     34                    <input type="hidden" name="search_form" value="1" /> 
    3535                    <input type="hidden" name="page" value="<!--{$arrForm.page.value|h}-->" /> 
    3636                    <input type="hidden" name="type" value="<!--{$smarty.post.type|h}-->" /> 
     
    5555                    <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 
    5656                    <input type="hidden" name="mode" value="search" /> 
    57                     <input type="hidden" name="form" value="2" /> 
     57                    <input type="hidden" name="search_form" value="2" /> 
    5858                    <input type="hidden" name="page" value="<!--{$arrForm.page.value|h}-->" /> 
    5959                    <input type="hidden" name="type" value="<!--{$smarty.post.type|h}-->" /> 
     
    9999        <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 
    100100        <input type="hidden" name="mode" value="search" /> 
    101         <input type="hidden" name="form" value="<!--{$arrForm.form.value|h}-->" /> 
    102101        <input type="hidden" name="type" value="<!--{$arrForm.type.value|h}-->" /> 
    103102        <input type="hidden" name="page" value="<!--{$arrForm.page.value|h}-->" /> 
     
    117116                <div id="graph-image"> 
    118117                    <!--{* <img src="<!--{$tpl_image}-->?<!--{$cashtime}-->" alt="グラフ"> *}--> 
    119                     <img src="?draw_image=true&amp;type=<!--{$smarty.post.type|h}-->&amp;mode=search&amp;page=<!--{$smarty.post.page|h}-->&amp;search_startyear_m=<!--{$smarty.post.search_startyear_m|h}-->&amp;search_startmonth_m=<!--{$smarty.post.search_startmonth_m|h}-->&amp;search_startyear=<!--{$smarty.post.search_startyear|h}-->&amp;search_startmonth=<!--{$smarty.post.search_startmonth|h}-->&amp;search_startday=<!--{$smarty.post.search_startday|h}-->&amp;search_endyear=<!--{$smarty.post.search_endyear|h}-->&amp;search_endmonth=<!--{$smarty.post.search_endmonth|h}-->&amp;search_endday=<!--{$smarty.post.search_endday|h}-->" alt="グラフ" /> 
     118                    <img src="?draw_image=true&amp;type=<!--{$smarty.post.type|h}-->&amp;mode=search&amp;search_form=<!--{$smarty.post.search_form|h}-->&amp;page=<!--{$smarty.post.page|h}-->&amp;search_startyear_m=<!--{$smarty.post.search_startyear_m|h}-->&amp;search_startmonth_m=<!--{$smarty.post.search_startmonth_m|h}-->&amp;search_startyear=<!--{$smarty.post.search_startyear|h}-->&amp;search_startmonth=<!--{$smarty.post.search_startmonth|h}-->&amp;search_startday=<!--{$smarty.post.search_startday|h}-->&amp;search_endyear=<!--{$smarty.post.search_endyear|h}-->&amp;search_endmonth=<!--{$smarty.post.search_endmonth|h}-->&amp;search_endday=<!--{$smarty.post.search_endday|h}-->" alt="グラフ" /> 
    120119                </div> 
    121120                <!--{/if}--> 
  • branches/version-2_12-dev/data/class/pages/admin/total/LC_Page_Admin_Total.php

    r22093 r22138  
    113113        // パラメーター情報の初期化 
    114114        $this->lfInitParam($objFormParam); 
    115         $objFormParam->setParam($_POST); 
    116         $objFormParam->setParam($_GET); 
     115        $objFormParam->setParam($_REQUEST); 
    117116 
    118117        // 検索ワードの引き継ぎ 
     
    136135 
    137136                    $this->tpl_page_type = 'total/page_'. $page .'.tpl'; 
     137                    // FIXME 可読性が低いので call_user_func_array を使わない (またはメソッド名を1つの定数値とする) 実装に。 
    138138                    list($this->arrResults, $this->tpl_image) = call_user_func_array(array($this, 'lfGetOrder'.$page), 
    139139                                                                                     array($type, $sdate, $edate)); 
     
    207207 
    208208        // 月度集計 
    209         $objFormParam->addParam('月度', 'search_startyear_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear_m']); 
    210         $objFormParam->addParam('月度', 'search_startmonth_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth_m']); 
     209        $objFormParam->addParam('月度(年)', 'search_startyear_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear_m']); 
     210        $objFormParam->addParam('月度(月)', 'search_startmonth_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth_m']); 
    211211        // 期間集計 
    212         $objFormParam->addParam('開始日', 'search_startyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear']); 
    213         $objFormParam->addParam('開始日', 'search_startmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth']); 
    214         $objFormParam->addParam('開始日', 'search_startday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startday']); 
    215         $objFormParam->addParam('終了日', 'search_endyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endyear']); 
    216         $objFormParam->addParam('終了日', 'search_endmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endmonth']); 
    217         $objFormParam->addParam('終了日', 'search_endday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endday']); 
     212        $objFormParam->addParam('期間(開始日)', 'search_startyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear']); 
     213        $objFormParam->addParam('期間(開始日)', 'search_startmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth']); 
     214        $objFormParam->addParam('期間(開始日)', 'search_startday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startday']); 
     215        $objFormParam->addParam('期間(終了日)', 'search_endyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endyear']); 
     216        $objFormParam->addParam('期間(終了日)', 'search_endmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endmonth']); 
     217        $objFormParam->addParam('期間(終了日)', 'search_endday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endday']); 
    218218 
    219219        // hiddenデータの取得用 
     
    221221        $objFormParam->addParam('', 'type'); 
    222222        $objFormParam->addParam('', 'mode'); 
    223         $objFormParam->addParam('', 'form'); 
     223        $objFormParam->addParam('', 'search_form'); 
    224224    } 
    225225 
     
    228228 
    229229        $objFormParam->convParam(); 
    230         $objErr         = new SC_CheckError_Ex(); 
     230        $objErr         = new SC_CheckError_Ex($objFormParam->getHashArray()); 
    231231        $objErr->arrErr = $objFormParam->checkError(); 
    232232 
    233233        // 特殊項目チェック 
    234         if ($objFormParam->getValue('form') == 1) { 
    235             $objErr->doFunc(array('月度', 'search_startyear_m'), array('ONE_EXIST_CHECK')); 
    236         } 
    237  
    238         if ($objFormParam->getValue('form') == 2) { 
    239             $objErr->doFunc(array('期間', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('FULL_EXIST_CHECK')); 
    240         } 
    241         $objErr->doFunc(array('月度', 'search_startyear_m', 'search_startmonth_m'), array('ALL_EXIST_CHECK')); 
    242         $objErr->doFunc(array('開始日', 'search_startyear', 'search_startmonth', 'search_startday'), array('CHECK_DATE')); 
    243         $objErr->doFunc(array('終了日', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_DATE')); 
    244         $objErr->doFunc(array('開始日', '終了日', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_SET_TERM')); 
     234 
     235        // 月度集計 
     236        if ($objFormParam->getValue('search_form') == 1) { 
     237            $objErr->doFunc(array('月度', 'search_startyear_m', 'search_startmonth_m'), array('FULL_EXIST_CHECK')); 
     238        } 
     239 
     240        // 期間集計 
     241        if ($objFormParam->getValue('search_form') == 2) { 
     242            $objErr->doFunc(array('期間(開始日)', 'search_startyear', 'search_startmonth', 'search_startday'), array('FULL_EXIST_CHECK')); 
     243            $objErr->doFunc(array('期間(終了日)', 'search_endyear', 'search_endmonth', 'search_endday'), array('FULL_EXIST_CHECK')); 
     244            $objErr->doFunc(array('期間(開始日)', 'search_startyear', 'search_startmonth', 'search_startday'), array('CHECK_DATE')); 
     245            $objErr->doFunc(array('期間(終了日)', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_DATE')); 
     246            $objErr->doFunc(array('期間(開始日)', '期間(終了日)', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_SET_TERM')); 
     247        } 
     248 
    245249        return $objErr->arrErr; 
    246250    } 
     
    272276    /* フォームで入力された日付を適切な形にする */ 
    273277    function lfSetStartEndDate(&$objFormParam) { 
    274  
    275278        $arrRet = $objFormParam->getHashArray(); 
    276         $out_flg = 0; 
    277  
    278         foreach ($arrRet as $key => $val) { 
    279             if ($val == '') { 
    280                 continue; 
    281             } 
    282             switch ($key) { 
    283                 case 'search_startyear': 
    284                     $sdate = $objFormParam->getValue('search_startyear') . '/' . $objFormParam->getValue('search_startmonth') . '/' . $objFormParam->getValue('search_startday'); 
    285                     break; 
    286                 case 'search_endyear': 
    287                     $edate = $objFormParam->getValue('search_endyear') . '/' . $objFormParam->getValue('search_endmonth') . '/' . $objFormParam->getValue('search_endday'); 
    288                     break; 
    289                 case 'search_startyear_m': 
    290                     list($sdate, $edate) = SC_Utils_Ex::sfTermMonth($objFormParam->getValue('search_startyear_m'), 
    291                                                                     $objFormParam->getValue('search_startmonth_m'), 
    292                                                                     CLOSE_DAY); 
    293                     $out_flg = 1; 
    294                     break; 
    295                 default: 
    296                     break; 
    297             } 
    298             // 月度集計の場合に、集計期間が本日日付で上書きされてしまうのを回避するため 
    299             if (($objFormParam->getValue('form') == 1) && ($out_flg == 1)) { 
    300                 break; 
    301             } 
     279 
     280        // 月度集計 
     281        if ($arrRet['search_form'] == 1) { 
     282            list($sdate, $edate) = SC_Utils_Ex::sfTermMonth($arrRet['search_startyear_m'], 
     283                                                            $arrRet['search_startmonth_m'], 
     284                                                            CLOSE_DAY); 
     285        } 
     286        // 期間集計 
     287        elseif ($arrRet['search_form'] == 2) { 
     288            $sdate = $arrRet['search_startyear'] . '/' . $arrRet['search_startmonth'] . '/' . $arrRet['search_startday']; 
     289            $edate = $arrRet['search_endyear'] . '/' . $arrRet['search_endmonth'] . '/' . $arrRet['search_endday']; 
    302290        } 
    303291 
Note: See TracChangeset for help on using the changeset viewer.