こんなのにしてみました。
(1)受注登録編集画面
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
function lfCheckError(&$objFormParam) {
// added
$arrParams = $objFormParam->getHashArray();
// added
$objProduct = new SC_Product_Ex();
$arrErr = $objFormParam->checkError();
// added
$objError = new SC_CheckError_Ex($arrParams);
$objError->doFunc(array('お届け日', 'shipping_date_year', 'shipping_date_month', 'shipping_date_day'), array('CHECK_DATE'));
$arrErr = array_merge($arrErr, $objError->arrErr);
// added
(2)日付チェック
data/class/SC_CheckError.php
function CHECK_DATE($value) {
if (isset($this->arrErr[$value[1]])) {
return;
}
$this->createParam($value);
// added
// 日付が連想配列になっているか。(例:お届け日)
if (is_array($this->arrParam[$value[1]])) {
foreach ($this->arrParam[$value[1]] as $key_index => $year) {
// 少なくともどれか一つが入力されている。
// $year = $this->arrParam[$value[1]][$key_index];
$month = $this->arrParam[$value[2]][$key_index];
$day = $this->arrParam[$value[3]][$key_index];
if ($year > 0 || $month > 0 || $day > 0) {
// 年月日のどれかが入力されていない。
if (!(strlen($year) > 0 && strlen($month) > 0 && strlen($day) > 0)) {
$this->arrErr[$value[1]][$key_index] = '※ ' . $value[0] . 'はすべての項目を入力して下さい。<br />';
} else if (! checkdate($month, $day, $year)) {
$this->arrErr[$value[1]][$key_index] = '※ ' . $value[0] . 'が正しくありません。<br />';
}
}
}
} else {
// added
// 少なくともどれか一つが入力されている。
if ($this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]] > 0 || $this->arrParam[$value[3]] > 0) {
// 年月日のどれかが入力されていない。
if (!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0)) {
$this->arrErr[$value[1]] = '※ ' . $value[0] . 'はすべての項目を入力して下さい。<br />';
} else if (! checkdate($this->arrParam[$value[2]], $this->arrParam[$value[3]], $this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] = '※ ' . $value[0] . 'が正しくありません。<br />';
}
}
// added
}
// added
}
6/11 修正方法を変更しました。
お届け先ごとに、お届け日を実在日チェックするようにしました。
そのため、(2)に修正は加えません。
(1)受注登録編集画面
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
function lfCheckError(&$objFormParam) {
// added
$arrParams = $objFormParam->getHashArray();
// added
$objProduct = new SC_Product_Ex();
$arrErr = $objFormParam->checkError();
// added
$arrErrDate = array();
foreach ($arrParams['shipping_date_year'] as $key_index => $year) {
// $year = $arrParams['shipping_date_year'][$key_index];
$month = $arrParams['shipping_date_month'][$key_index];
$day = $arrParams['shipping_date_day'][$key_index];
$objError = new SC_CheckError_Ex(array('shipping_date_year' => $year,
'shipping_date_month' => $month,
'shipping_date_day' => $day));
$objError->doFunc(array('お届け日', 'shipping_date_year', 'shipping_date_month', 'shipping_date_day'), array('CHECK_DATE'));
$arrErrDate['shipping_date_year'][$key_index] = $objError->arrErr['shipping_date_year'];
}
$arrErr = array_merge($arrErr, $arrErrDate);
// added
(2)日付チェック
data/class/SC_CheckError.php
変更を取り消します。(修正しません。)