[Svn-src-all:3237] [version-2_12-dev 22138] #1985 (LC_Page_Admin_Total#lfCheckError バリデーション対象を誤っている)
Seasoft
admin @ mail.ec-cube.net
2012年 12月 15日 (土) 19:08:08 JST
Subversion committed to /home/svn/open 22138
http://svn.ec-cube.net/open_trac/changeset/22138
┌────────────────────────────┐
│更新者 : Seasoft │
│更新日時: 2012-12-15 19:08:08 +0900 (土, 15 12月 2012)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#1985 (LC_Page_Admin_Total#lfCheckError バリデーション対象を誤っている)
#1903 (無駄な処理を改善する)
* ループ処理を使う必要が無いシーンで使って可読性が低くなっていた。
* バリデーションで無駄なチェックを実行していた
* <input name="form"> の渡し忘れがある。自前で複雑なことをして誤りを生んでいる。「search_」を前置して、共通処理で透過的に処理させる。
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_12-dev/data/Smarty/templates/admin/total/index.tpl
U branches/version-2_12-dev/data/class/pages/admin/total/LC_Page_Admin_Total.php
変更: branches/version-2_12-dev/data/Smarty/templates/admin/total/index.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/total/index.tpl 2012-12-15 07:37:33 UTC (rev 22137)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/total/index.tpl 2012-12-15 10:08:08 UTC (rev 22138)
@@ -31,7 +31,7 @@
<form name="search_form1" id="search_form1" method="post" action="?">
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="mode" value="search" />
- <input type="hidden" name="form" value="1" />
+ <input type="hidden" name="search_form" value="1" />
<input type="hidden" name="page" value="<!--{$arrForm.page.value|h}-->" />
<input type="hidden" name="type" value="<!--{$smarty.post.type|h}-->" />
<!--{if $arrErr.search_startyear_m || $arrErr.search_endyear_m}-->
@@ -54,7 +54,7 @@
<form name="search_form2" id="search_form2" method="post" action="?">
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="mode" value="search" />
- <input type="hidden" name="form" value="2" />
+ <input type="hidden" name="search_form" value="2" />
<input type="hidden" name="page" value="<!--{$arrForm.page.value|h}-->" />
<input type="hidden" name="type" value="<!--{$smarty.post.type|h}-->" />
<!--{if $arrErr.search_startyear || $arrErr.search_endyear}-->
@@ -98,7 +98,6 @@
<form name="form1" id="form1" method="post" action="?">
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="mode" value="search" />
- <input type="hidden" name="form" value="<!--{$arrForm.form.value|h}-->" />
<input type="hidden" name="type" value="<!--{$arrForm.type.value|h}-->" />
<input type="hidden" name="page" value="<!--{$arrForm.page.value|h}-->" />
<!--{foreach key=key item=item from=$arrHidden}-->
@@ -116,7 +115,7 @@
<!--{if $install_GD}-->
<div id="graph-image">
<!--{* <img src="<!--{$tpl_image}-->?<!--{$cashtime}-->" alt="グラフ"> *}-->
- <img src="?draw_image=true&type=<!--{$smarty.post.type|h}-->&mode=search&page=<!--{$smarty.post.page|h}-->&search_startyear_m=<!--{$smarty.post.search_startyear_m|h}-->&search_startmonth_m=<!--{$smarty.post.search_startmonth_m|h}-->&search_startyear=<!--{$smarty.post.search_startyear|h}-->&search_startmonth=<!--{$smarty.post.search_startmonth|h}-->&search_startday=<!--{$smarty.post.search_startday|h}-->&search_endyear=<!--{$smarty.post.search_endyear|h}-->&search_endmonth=<!--{$smarty.post.search_endmonth|h}-->&search_endday=<!--{$smarty.post.search_endday|h}-->" alt="グラフ" />
+ <img src="?draw_image=true&type=<!--{$smarty.post.type|h}-->&mode=search&search_form=<!--{$smarty.post.search_form|h}-->&page=<!--{$smarty.post.page|h}-->&search_startyear_m=<!--{$smarty.post.search_startyear_m|h}-->&search_startmonth_m=<!--{$smarty.post.search_startmonth_m|h}-->&search_startyear=<!--{$smarty.post.search_startyear|h}-->&search_startmonth=<!--{$smarty.post.search_startmonth|h}-->&search_startday=<!--{$smarty.post.search_startday|h}-->&search_endyear=<!--{$smarty.post.search_endyear|h}-->&search_endmonth=<!--{$smarty.post.search_endmonth|h}-->&search_endday=<!--{$smarty.post.search_endday|h}-->" alt="グラフ" />
</div>
<!--{/if}-->
<!--{* グラフ表示 *}-->
変更: branches/version-2_12-dev/data/class/pages/admin/total/LC_Page_Admin_Total.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/total/LC_Page_Admin_Total.php 2012-12-15 07:37:33 UTC (rev 22137)
+++ branches/version-2_12-dev/data/class/pages/admin/total/LC_Page_Admin_Total.php 2012-12-15 10:08:08 UTC (rev 22138)
@@ -112,8 +112,7 @@
$objFormParam = new SC_FormParam_Ex();
// パラメーター情報の初期化
$this->lfInitParam($objFormParam);
- $objFormParam->setParam($_POST);
- $objFormParam->setParam($_GET);
+ $objFormParam->setParam($_REQUEST);
// 検索ワードの引き継ぎ
$this->arrHidden = $objFormParam->getSearchArray();
@@ -135,6 +134,7 @@
$type = ($objFormParam->getValue('type')) ? $objFormParam->getValue('type'): 'all';
$this->tpl_page_type = 'total/page_'. $page .'.tpl';
+ // FIXME 可読性が低いので call_user_func_array を使わない (またはメソッド名を1つの定数値とする) 実装に。
list($this->arrResults, $this->tpl_image) = call_user_func_array(array($this, 'lfGetOrder'.$page),
array($type, $sdate, $edate));
if ($this->getMode() == 'csv') {
@@ -206,42 +206,46 @@
$arrList = $this->lfGetDateDefault();
// 月度集計
- $objFormParam->addParam('月度', 'search_startyear_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear_m']);
- $objFormParam->addParam('月度', 'search_startmonth_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth_m']);
+ $objFormParam->addParam('月度(年)', 'search_startyear_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear_m']);
+ $objFormParam->addParam('月度(月)', 'search_startmonth_m', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth_m']);
// 期間集計
- $objFormParam->addParam('開始日', 'search_startyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear']);
- $objFormParam->addParam('開始日', 'search_startmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth']);
- $objFormParam->addParam('開始日', 'search_startday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startday']);
- $objFormParam->addParam('終了日', 'search_endyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endyear']);
- $objFormParam->addParam('終了日', 'search_endmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endmonth']);
- $objFormParam->addParam('終了日', 'search_endday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endday']);
+ $objFormParam->addParam('期間(開始日)', 'search_startyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startyear']);
+ $objFormParam->addParam('期間(開始日)', 'search_startmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startmonth']);
+ $objFormParam->addParam('期間(開始日)', 'search_startday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['startday']);
+ $objFormParam->addParam('期間(終了日)', 'search_endyear', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endyear']);
+ $objFormParam->addParam('期間(終了日)', 'search_endmonth', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endmonth']);
+ $objFormParam->addParam('期間(終了日)', 'search_endday', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), $arrList['endday']);
// hiddenデータの取得用
$objFormParam->addParam('', 'page');
$objFormParam->addParam('', 'type');
$objFormParam->addParam('', 'mode');
- $objFormParam->addParam('', 'form');
+ $objFormParam->addParam('', 'search_form');
}
/* 入力内容のチェック */
function lfCheckError(&$objFormParam) {
$objFormParam->convParam();
- $objErr = new SC_CheckError_Ex();
+ $objErr = new SC_CheckError_Ex($objFormParam->getHashArray());
$objErr->arrErr = $objFormParam->checkError();
// 特殊項目チェック
- if ($objFormParam->getValue('form') == 1) {
- $objErr->doFunc(array('月度', 'search_startyear_m'), array('ONE_EXIST_CHECK'));
+
+ // 月度集計
+ if ($objFormParam->getValue('search_form') == 1) {
+ $objErr->doFunc(array('月度', 'search_startyear_m', 'search_startmonth_m'), array('FULL_EXIST_CHECK'));
}
- if ($objFormParam->getValue('form') == 2) {
- $objErr->doFunc(array('期間', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('FULL_EXIST_CHECK'));
+ // 期間集計
+ if ($objFormParam->getValue('search_form') == 2) {
+ $objErr->doFunc(array('期間(開始日)', 'search_startyear', 'search_startmonth', 'search_startday'), array('FULL_EXIST_CHECK'));
+ $objErr->doFunc(array('期間(終了日)', 'search_endyear', 'search_endmonth', 'search_endday'), array('FULL_EXIST_CHECK'));
+ $objErr->doFunc(array('期間(開始日)', 'search_startyear', 'search_startmonth', 'search_startday'), array('CHECK_DATE'));
+ $objErr->doFunc(array('期間(終了日)', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_DATE'));
+ $objErr->doFunc(array('期間(開始日)', '期間(終了日)', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_SET_TERM'));
}
- $objErr->doFunc(array('月度', 'search_startyear_m', 'search_startmonth_m'), array('ALL_EXIST_CHECK'));
- $objErr->doFunc(array('開始日', 'search_startyear', 'search_startmonth', 'search_startday'), array('CHECK_DATE'));
- $objErr->doFunc(array('終了日', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_DATE'));
- $objErr->doFunc(array('開始日', '終了日', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_SET_TERM'));
+
return $objErr->arrErr;
}
@@ -271,35 +275,19 @@
/* フォームで入力された日付を適切な形にする */
function lfSetStartEndDate(&$objFormParam) {
-
$arrRet = $objFormParam->getHashArray();
- $out_flg = 0;
- foreach ($arrRet as $key => $val) {
- if ($val == '') {
- continue;
- }
- switch ($key) {
- case 'search_startyear':
- $sdate = $objFormParam->getValue('search_startyear') . '/' . $objFormParam->getValue('search_startmonth') . '/' . $objFormParam->getValue('search_startday');
- break;
- case 'search_endyear':
- $edate = $objFormParam->getValue('search_endyear') . '/' . $objFormParam->getValue('search_endmonth') . '/' . $objFormParam->getValue('search_endday');
- break;
- case 'search_startyear_m':
- list($sdate, $edate) = SC_Utils_Ex::sfTermMonth($objFormParam->getValue('search_startyear_m'),
- $objFormParam->getValue('search_startmonth_m'),
- CLOSE_DAY);
- $out_flg = 1;
- break;
- default:
- break;
- }
- // 月度集計の場合に、集計期間が本日日付で上書きされてしまうのを回避するため
- if (($objFormParam->getValue('form') == 1) && ($out_flg == 1)) {
- break;
- }
+ // 月度集計
+ if ($arrRet['search_form'] == 1) {
+ list($sdate, $edate) = SC_Utils_Ex::sfTermMonth($arrRet['search_startyear_m'],
+ $arrRet['search_startmonth_m'],
+ CLOSE_DAY);
}
+ // 期間集計
+ elseif ($arrRet['search_form'] == 2) {
+ $sdate = $arrRet['search_startyear'] . '/' . $arrRet['search_startmonth'] . '/' . $arrRet['search_startday'];
+ $edate = $arrRet['search_endyear'] . '/' . $arrRet['search_endmonth'] . '/' . $arrRet['search_endday'];
+ }
return array($sdate, $edate);
}
Svn-src-all メーリングリストの案内