/** * 入力内容のチェックを行なう. * * @param FormParam $objFormParam FormParam インスタンス * @return array 入力チェック結果の配列 */ public function lfCheckError(&$objFormParam) { // 入力データを渡す。 $arrForm = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrForm); $objErr->arrErr = $objFormParam->checkError(); $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'email', 'email02'), array('EQUAL_CHECK')); return $objErr->arrErr; }
/** * @param FormParam $objFormParam */ public function lfCheckError($post, $objFormParam, PaymentHelper $objPayment) { // DBのデータを取得 $arrPaymentData = $objPayment->get($post['payment_id']); // 手数料を設定できない場合には、手数料を0にする if ($arrPaymentData['charge_flg'] == 2) { $objFormParam->setValue('charge', '0'); } // 入力データを渡す。 $arrRet = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrRet); $objErr->arrErr = $objFormParam->checkError(); // 利用条件(下限)チェック if ($arrRet['rule_max'] < $arrPaymentData['rule_min'] and $arrPaymentData['rule_min'] != '') { $objErr->arrErr['rule'] = '利用条件(下限)は' . $arrPaymentData['rule_min'] . '円以上にしてください。<br>'; } // 利用条件(上限)チェック if ($arrRet['upper_rule'] > $arrPaymentData['upper_rule_max'] and $arrPaymentData['upper_rule_max'] != '') { $objErr->arrErr['upper_rule'] = '利用条件(上限)は' . $arrPaymentData['upper_rule_max'] . '円以下にしてください。<br>'; } // 利用条件チェック $objErr->doFunc(array('利用条件(~円以上)', '利用条件(~円以下)', 'rule_max', 'upper_rule'), array('GREATER_CHECK')); return $objErr->arrErr; }
/** * 入力内容のチェック * @var FormParam * @param FormParam $objFormParam */ public function lfCheckError(&$objFormParam) { // 入力データを渡す。 $arrParams = $objFormParam->getHashArray(); $arrErr = $objFormParam->checkError(); /* @var $objErr CheckError */ $objError = Application::alias('eccube.check_error', $arrParams); $year = $objFormParam->getValue('year'); if (!is_numeric($year)) { $arrErr['year'] = '発行年は数値で入力してください。'; } $month = $objFormParam->getValue('month'); if (!is_numeric($month)) { $arrErr['month'] = '発行月は数値で入力してください。'; } elseif (0 >= $month && 12 < $month) { $arrErr['month'] = '発行月は1〜12の間で入力してください。'; } $day = $objFormParam->getValue('day'); if (!is_numeric($day)) { $arrErr['day'] = '発行日は数値で入力してください。'; } elseif (0 >= $day && 31 < $day) { $arrErr['day'] = '発行日は1〜31の間で入力してください。'; } $objError->doFunc(array('発行日', 'year', 'month', 'day'), array('CHECK_DATE')); $arrErr = array_merge($arrErr, $objError->arrErr); return $arrErr; }
/** * 入力内容のチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return void */ public function lfCheckError(&$objFormParam) { /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray()); $objErr->arrErr = $objFormParam->checkError(); $objErr->doFunc(array('開始日', '終了日', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_SET_TERM')); return $objErr->arrErr; }
/** * 入力エラーチェック * * @param string $mode * @param FormParam $objFormParam * @return array */ public function lfCheckError($mode, &$objFormParam) { $arrErr = array(); switch ($mode) { case 'delete': case 'up': case 'down': $objFormParam->addParam('配送業者ID', 'deliv_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->convParam(); $arrErr = $objFormParam->checkError(); break; default: break; } return $arrErr; }
/** * 入力チェックを行う. * * @param FormParam $objFormParam * @return array */ public function lfCheckError(FormParam &$objFormParam) { // 入力データを渡す。 $arrRet = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrRet); $objErr->arrErr = $objFormParam->checkError(false); // HTMLタグチェックの実行 foreach ($this->arrTagCheckItem as $item) { $objErr->doFunc(array($item['disp_name'], $item['col'], $this->arrAllowedTag), array('HTML_TAG_CHECK')); } // このフォーム特有の複雑系のエラーチェックを行う if (count($objErr->arrErr) == 0) { $objErr->arrErr = $this->lfCheckErrorDetail($arrRet, $objErr->arrErr); } return $objErr->arrErr; }
/** * 入力エラーチェック * * @param KiyakuHelper $objKiyaku * @param FormParam $objFormParam * @return array */ public function lfCheckError($objFormParam, KiyakuHelper &$objKiyaku) { $arrErr = $objFormParam->checkError(); $arrForm = $objFormParam->getHashArray(); $isTitleExist = $objKiyaku->isTitleExist($arrForm['kiyaku_title'], $arrForm['kiyaku_id']); // 編集中のレコード以外に同じ名称が存在する場合 if ($isTitleExist) { $arrErr['name'] = '※ 既に同じ内容の登録が存在します。<br />'; } return $arrErr; }
/** * @param FormParam $objFormParam */ public function lfCheckError(&$objFormParam) { $arrErr = $objFormParam->checkError(); $post = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $post); $objErr->doFunc(array('郵便番号', 'zip01', 'zip02'), array('ALL_EXIST_CHECK')); // 電話番号チェック $objErr->doFunc(array('TEL', 'tel01', 'tel02', 'tel03'), array('TEL_CHECK')); $objErr->doFunc(array('FAX', 'fax01', 'fax02', 'fax03'), array('TEL_CHECK')); return array_merge((array) $arrErr, (array) $objErr->arrErr); }
/** * SQL設定 CSV出力エラーチェック * * @param FormParam $objFormParam フォームパラメータークラス * @return array エラー配列 */ public function lfCheckOutputError(&$objFormParam) { // パラメーターの基本チェック $arrErr = $objFormParam->checkError(); // 拡張エラーチェック /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray()); $objErr->doFunc(array('CSV出力対象SQL ID', 'csv_output_id'), array('EXIST_CHECK')); if (!Utils::isBlank($objErr->arrErr)) { $arrErr = array_merge($arrErr, $objErr->arrErr); } return $arrErr; }
/** * 入力エラーチェック. * * @param FormParam $objFormParam * @return array $objErr->arrErr エラー内容 */ public function lfCheckError(&$objFormParam, TaxRuleHelper &$objTaxRule) { $arrErr = $objFormParam->checkError(); $arrForm = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrForm); // tax_rule_id の正当性チェック if (!empty($arrForm['tax_rule_id'])) { if (!Utils::sfIsInt($arrForm['tax_rule_id']) || !$objTaxRule->getTaxRuleData($arrForm['tax_rule_id'])) { // tax_rule_idが指定されていて、且つその値が不正と思われる場合はエラー $arrErr['tax_rule_id'] = '※ 税規約IDが不正です<br />'; } } // 適用日時チェック $objErr->doFunc(array('適用日時', 'apply_date_year', 'apply_date_month', 'apply_date_day'), array('CHECK_DATE')); if (Utils::isBlank($objErr->arrErr['apply_date_year']) && $arrForm['tax_rule_id'] != '0') { $apply_date = Utils::sfGetTimestampistime($arrForm['apply_date_year'], sprintf("%02d", $arrForm['apply_date_month']), sprintf("%02d", $arrForm['apply_date_day']), sprintf("%02d", $arrForm['apply_date_hour']), sprintf("%02d", $arrForm['apply_date_minutes'])); // 税規約情報読み込み $arrTaxRuleByTime = $objTaxRule->getTaxRuleByTime($apply_date); // 編集中のレコード以外に同じ消費税率、課税規則が存在する場合 if (!Utils::isBlank($arrTaxRuleByTime) && $arrTaxRuleByTime['tax_rule_id'] != $arrForm['tax_rule_id'] && $arrTaxRuleByTime['apply_date'] == $apply_date) { $arrErr['apply_date'] = '※ 既に同じ適用日時で登録が存在します。<br />'; } } if (!Utils::isBlank($objErr->arrErr)) { $arrErr = array_merge($arrErr, $objErr->arrErr); } return $arrErr; }
/** * 入力されたパラメーターのエラーチェックを行う。 * @param FormParam $objFormParam * @return Array エラー内容 */ public function lfCheckError(&$objFormParam) { /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray()); $objErr->arrErr = $objFormParam->checkError(); return $objErr->arrErr; }
/** * パラメーターのエラーチェック * * TODO: ブルートフォースアタック対策チェックの実装 * * @param FormParam $objFormParam フォームパラメータークラス * @return array $arrErr エラー配列 */ public function lfCheckError(&$objFormParam) { // 書式チェック $arrErr = $objFormParam->checkError(); if (Utils::isBlank($arrErr)) { $arrForm = $objFormParam->getHashArray(); // ログインチェック if (!$this->lfIsLoginMember($arrForm['login_id'], $arrForm['password'])) { $arrErr['password'] = '******'; $this->lfSetIncorrectData($arrForm['login_id']); } } return $arrErr; }
/** * @param FormParam $objFormParam */ public function lfCheckError(&$objFormParam) { // 入力データを渡す。 $arrRet = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrRet); $objErr->arrErr = $objFormParam->checkError(); // 電話番号チェック $objErr->doFunc(array('TEL', 'law_tel01', 'law_tel02', 'law_tel03'), array('TEL_CHECK')); $objErr->doFunc(array('FAX', 'law_fax01', 'law_fax02', 'law_fax03'), array('TEL_CHECK')); $objErr->doFunc(array('郵便番号', 'law_zip01', 'law_zip02'), array('ALL_EXIST_CHECK')); return $objErr->arrErr; }
/** * 入力内容のチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return void */ public function lfCheckError(&$objFormParam) { /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $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')); // 受注日 $objErr->doFunc(array('開始', 'search_sorderyear', 'search_sordermonth', 'search_sorderday'), array('CHECK_DATE')); $objErr->doFunc(array('終了', 'search_eorderyear', 'search_eordermonth', 'search_eorderday'), array('CHECK_DATE')); $objErr->doFunc(array('開始', '終了', 'search_sorderyear', 'search_sordermonth', 'search_sorderday', 'search_eorderyear', 'search_eordermonth', 'search_eorderday'), array('CHECK_SET_TERM')); // 更新日 $objErr->doFunc(array('開始', 'search_supdateyear', 'search_supdatemonth', 'search_supdateday'), array('CHECK_DATE')); $objErr->doFunc(array('終了', 'search_eupdateyear', 'search_eupdatemonth', 'search_eupdateday'), array('CHECK_DATE')); $objErr->doFunc(array('開始', '終了', 'search_supdateyear', 'search_supdatemonth', 'search_supdateday', 'search_eupdateyear', 'search_eupdatemonth', 'search_eupdateday'), array('CHECK_SET_TERM')); // 生年月日 $objErr->doFunc(array('開始', 'search_sbirthyear', 'search_sbirthmonth', 'search_sbirthday'), array('CHECK_DATE')); $objErr->doFunc(array('終了', 'search_ebirthyear', 'search_ebirthmonth', 'search_ebirthday'), array('CHECK_DATE')); $objErr->doFunc(array('開始', '終了', 'search_sbirthyear', 'search_sbirthmonth', 'search_sbirthday', 'search_ebirthyear', 'search_ebirthmonth', 'search_ebirthday'), array('CHECK_SET_TERM')); return $objErr->arrErr; }
/** * 入力内容のチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam) { /* @var $objProduct Product */ $objProduct = Application::alias('eccube.product'); $arrValues = $objFormParam->getHashArray(); $arrErr = array(); $arrErrTemp = $objFormParam->checkError(); $arrErrDate = array(); foreach ($arrValues['shipping_date_year'] as $key_index => $year) { $month = $arrValues['shipping_date_month'][$key_index]; $day = $arrValues['shipping_date_day'][$key_index]; /* @var $objError CheckError */ $objError = Application::alias('eccube.check_error', 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']; } $arrErrTemp = array_merge($arrErrTemp, $arrErrDate); // 複数項目チェック $year = $arrValues['order_birth_year']; $month = $arrValues['order_birth_month']; $day = $arrValues['order_birth_day']; /* @var $objError CheckError */ $objError = Application::alias('eccube.check_error', array('order_birth_year' => $year, 'order_birth_month' => $month, 'order_birth_day' => $day)); $objError->doFunc(array('生年月日', 'order_birth_year', 'order_birth_month', 'order_birth_day'), array('CHECK_BIRTHDAY')); $arrErrTemp['order_birth_year'] = $objError->arrErr['order_birth_year']; // 商品の種類数 $max = count($arrValues['quantity']); $subtotal = 0; $totalpoint = 0; $totaltax = 0; for ($i = 0; $i < $max; $i++) { // 小計の計算 $subtotal += Application::alias('eccube.helper.db')->calcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; // 小計の計算 $totaltax += Utils::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; // 加算ポイントの計算 $totalpoint += Utils::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; // 在庫数のチェック $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); // 編集前の値と比較するため受注詳細を取得 /* @var $objPurchase PurchaseHelper */ $objPurchase = Application::alias('eccube.helper.purchase'); $arrOrderDetail = Utils::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); if ($arrProduct['stock_unlimited'] != '1' && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) { $class_name1 = $arrValues['classcategory_name1'][$i]; $class_name1 = Utils::isBlank($class_name1) ? 'なし' : $class_name1; $class_name2 = $arrValues['classcategory_name2'][$i]; $class_name2 = Utils::isBlank($class_name2) ? 'なし' : $class_name2; $arrErr['quantity'][$i] .= $arrValues['product_name'][$i] . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; } } // 消費税 $arrValues['tax'] = $totaltax; // 小計 $arrValues['subtotal'] = $subtotal; // 合計 $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; // お支払い合計 $arrValues['payment_total'] = $arrValues['total'] - $arrValues['use_point'] * POINT_VALUE; // 加算ポイント $arrValues['add_point'] = Application::alias('eccube.helper.db')->getAddPoint($totalpoint, $arrValues['use_point']) + $arrValues['birth_point']; // 最終保持ポイント $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; if ($arrValues['total'] < 0) { $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; } if ($arrValues['payment_total'] < 0) { $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; } if ($arrValues['total_point'] < 0) { $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; } $objFormParam->setParam($arrValues); $arrErr = array_merge($arrErr, $arrErrTemp); return $arrErr; }
/** * @param FormParam $objFormParam */ public function lfCheckError(&$objFormParam) { $objFormParam->convParam(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray()); $objErr->arrErr = $objFormParam->checkError(); // 特殊項目チェック // 月度集計 if ($objFormParam->getValue('search_form') == 1) { $objErr->doFunc(array('月度', 'search_startyear_m', 'search_startmonth_m'), 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')); } return $objErr->arrErr; }
/** * @param string $mode * @param boolean $tpl_classcat_find1 * @param boolean $tpl_classcat_find2 */ public function lfCheckError($mode, FormParam &$objFormParam, $tpl_classcat_find1 = null, $tpl_classcat_find2 = null) { switch ($mode) { case 'add_favorite_sphone': case 'add_favorite': /* @var $objCustomer Customer */ $objCustomer = Application::alias('eccube.customer'); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error'); $customer_id = $objCustomer->getValue('customer_id'); $favorite_product_id = $objFormParam->getValue('favorite_product_id'); if (Application::alias('eccube.helper.db')->dataExists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($customer_id, $favorite_product_id))) { $objErr->arrErr['add_favorite' . $favorite_product_id] = '※ この商品は既にお気に入りに追加されています。<br />'; } break; default: // 入力データを渡す。 $arrRet = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrRet); $objErr->arrErr = $objFormParam->checkError(); // 複数項目チェック if ($tpl_classcat_find1) { $objErr->doFunc(array('規格1', 'classcategory_id1'), array('EXIST_CHECK')); } if ($tpl_classcat_find2) { $objErr->doFunc(array('規格2', 'classcategory_id2'), array('EXIST_CHECK')); } break; } return $objErr->arrErr; }
/** * 入力内容のチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(FormParam &$objFormParam) { $arrErr = $objFormParam->checkError(); if (REVIEW_ALLOW_URL == false) { /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray()); // コメント欄へのURLの入力を禁止 $objErr->doFunc(array('URL', 'comment', $this->arrReviewDenyURL), array('PROHIBITED_STR_CHECK')); $arrErr += $objErr->arrErr; } return $arrErr; }
/** * APIのリクエスト基本パラメーターのチェック * * @param FormParam $objFormParam * @return array $arrErr */ protected function checkParam($objFormParam) { $arrErr = $objFormParam->checkError(); if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Operation')) && !Utils::isBlank($objFormParam->getValue('Operation'))) { $arrErr['ECCUBE.Operation.ParamError'] = 'Operationの値が不正です。'; } if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Service')) && !Utils::isBlank($objFormParam->getValue('Service'))) { $arrErr['ECCUBE.Service.ParamError'] = 'Serviceの値が不正です。'; } if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Style')) && !Utils::isBlank($objFormParam->getValue('Style'))) { $arrErr['ECCUBE.Style.ParamError'] = 'Styleの値が不正です。'; } if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Validate')) && !Utils::isBlank($objFormParam->getValue('Validate'))) { $arrErr['ECCUBE.Validate.ParamError'] = 'Validateの値が不正です。'; } if (!preg_match("/^[a-zA-Z0-9\\-\\_\\.]+\$/", $objFormParam->getValue('Version')) && !Utils::isBlank($objFormParam->getValue('Version'))) { $arrErr['ECCUBE.Version.ParamError'] = 'Versionの値が不正です。'; } return $arrErr; }
/** * 入力内容のチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return void */ public function lfCheckError(&$objFormParam) { // 入力データを渡す。 $arrRet = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrRet); $objErr->arrErr = $objFormParam->checkError(); switch ($this->getMode()) { case 'search': $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')); break; case 'complete': $objErr->doFunc(array('おすすめレベル', 'recommend_level'), array('SELECT_CHECK')); $objErr->doFunc(array('タイトル', 'title', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objErr->doFunc(array('コメント', 'comment', LTEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); break; default: break; } return $objErr->arrErr; }
/** * 入力エラーチェック * * @param FormParam $objFormParam * @param HolidayHelper $objHoliday * @return array */ public function lfCheckError(&$objFormParam, HolidayHelper &$objHoliday) { $arrErr = $objFormParam->checkError(); $arrForm = $objFormParam->getHashArray(); // 日付の妥当性チェック // 閏年への対応. if ($arrForm['month'] == 2 && $arrForm['day'] == 29) { $valid_date = true; } else { $valid_date = checkdate($arrForm['month'], $arrForm['day'], date('Y')); } if (!$valid_date) { $arrErr['date'] = '※ 妥当な日付ではありません。<br />'; } // 編集中のレコード以外に同じ日付が存在する場合 if ($objHoliday->isDateExist($arrForm['month'], $arrForm['day'], $arrForm['holiday_id'])) { $arrErr['date'] = '※ 既に同じ日付の登録が存在します。<br />'; } return $arrErr; }
/** * 入力内容のチェックを行なう. * * @param FormParam $objFormParam FormParam インスタンス * @param integer $subtotal 購入金額の小計 * @param integer $max_point 会員の保持ポイント * @return array 入力チェック結果の配列 */ public function lfCheckError(&$objFormParam, $subtotal, $max_point) { // 入力データを渡す。 $arrForm = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrForm); $objErr->arrErr = $objFormParam->checkError(); if (USE_POINT === false) { return $objErr->arrErr; } $objErr->doFunc(array('ポイントを使用する', 'point_check'), array('EXIST_CHECK')); if ($arrForm['point_check'] == '1' && Utils::isBlank($objErr->arrErr['use_point'])) { $objErr->doFunc(array('ポイント', 'use_point'), array('EXIST_CHECK')); if ($max_point == '') { $max_point = 0; } // FIXME mobile 互換のため br は閉じない... if ($arrForm['use_point'] > $max_point) { $objErr->arrErr['use_point'] = '※ ご利用ポイントが所持ポイントを超えています。<br>'; } if ($arrForm['use_point'] * POINT_VALUE > $subtotal) { $objErr->arrErr['use_point'] = '※ ご利用ポイントがご購入金額を超えています。<br>'; } // ポイント差し引き後のお支払い方法チェック /* @var $objPayment PaymentHelper */ $objPayment = Application::alias('eccube.helper.payment'); $arrPayments = $objPayment->get($arrForm['payment_id']); if ($arrPayments['rule_max'] > $subtotal - $arrForm['use_point'] * POINT_VALUE) { $objErr->arrErr['use_point'] = '※ 選択したお支払い方法では、ポイントは' . ($subtotal - $arrPayments['rule_max']) . 'ポイントまでご利用いただけます。<br>'; } } return $objErr->arrErr; }
/** * 入力されたパラメーターのエラーチェックを行う。 * @param FormParam $objFormParam * @return Array エラー内容 */ public function lfCheckError(&$objFormParam) { /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray()); $objErr->arrErr = $objFormParam->checkError(); $objErr->doFunc(array('日付', 'year', 'month', 'day'), array('CHECK_DATE')); return $objErr->arrErr; }
/** * @param FormParam $objFormParam */ public function lfCheckError($objFormParam) { // 入力データを渡す。 $arrForm = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrForm); $objErr->arrErr = $objFormParam->checkError(); // 動的チェック if ($this->tpl_classcat_find1[$arrForm['product_id']]) { $objErr->doFunc(array('規格1', 'classcategory_id1'), array('EXIST_CHECK')); } if ($this->tpl_classcat_find2[$arrForm['product_id']]) { $objErr->doFunc(array('規格2', 'classcategory_id2'), array('EXIST_CHECK')); } return $objErr->arrErr; }
/** * uploadモードのパラメーター検証を行う. * * @param FormParam $objFormParam FormParamのインスタンス * @param UploadFile $objUpFile UploadFileのインスタンス * @return array エラー情報を格納した連想配列, エラーが無ければ(多分)nullを返す */ public function lfCheckError(&$objFormParam, &$objUpFile) { $arrErr = $objFormParam->checkError(); $template_code = $objFormParam->getValue('template_code'); // 同名のフォルダが存在する場合はエラー if (file_exists(USER_TEMPLATE_REALDIR . $template_code) && $template_code != "") { $arrErr['template_code'] = '※ 同名のファイルがすでに存在します。<br/>'; } // 登録不可の文字列チェック $arrIgnoreCode = array('admin', MOBILE_DEFAULT_TEMPLATE_NAME, SMARTPHONE_DEFAULT_TEMPLATE_NAME, DEFAULT_TEMPLATE_NAME); if (in_array($template_code, $arrIgnoreCode)) { $arrErr['template_code'] = '※ このテンプレートコードは使用できません。<br/>'; } // DBにすでに登録されていないかチェック $objQuery = Application::alias('eccube.query'); $exists = $objQuery->exists('dtb_templates', 'template_code = ?', array($template_code)); if ($exists) { $arrErr['template_code'] = '※ すでに登録されているテンプレートコードです。<br/>'; } /* * ファイル形式チェック * ファイルが壊れていることも考慮して, 展開可能かチェックする. */ $tar = new Archive_Tar($_FILES['template_file']['tmp_name'], true); $arrArchive = $tar->listContent(); if (!is_array($arrArchive)) { $arrErr['template_file'] = '※ テンプレートファイルが解凍できません。許可されている形式は、tar/tar.gzです。<br />'; } else { $make_temp_error = $objUpFile->makeTempFile('template_file', false); if (!Utils::isBlank($make_temp_error)) { $arrErr['template_file'] = $make_temp_error; } } return $arrErr; }
/** * 入力チェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラー情報の配列 */ public function lfCheckError(FormParam &$objFormParam, &$arrCartItem) { /* @var $objCartSess CartSession */ $objCartSess = Application::alias('eccube.cart_session'); $objFormParam->setValue('quantity', $objFormParam->getValue('quantity', 0)); $arrErr = $objFormParam->checkError(); $arrParams = $objFormParam->getSwapArray(); if (empty($arrErr)) { $arrTarget = array('product_class_id', 'quantity', 'shipping'); $arrParams = $objFormParam->getSwapArray($arrTarget); foreach ($arrParams as $index => $arrParam) { // 数量0で、お届け先を選択している場合 if ($arrParam['quantity'] == 0 && !Utils::isBlank($arrParam['shipping'])) { $arrErr['shipping'][$index] = '※ 数量が0の場合、お届け先を入力できません。<br />'; } // 数量の入力があり、お届け先を選択していない場合 if ($arrParam['quantity'] > 0 && Utils::isBlank($arrParam['shipping'])) { $arrErr['shipping'][$index] = '※ お届け先が入力されていません。<br />'; } } } // 入力エラーが無い場合、カゴの中身との数量の整合を確認 if (empty($arrErr)) { $arrQuantity = array(); // 入力内容を集計 foreach ($arrParams as $arrParam) { $product_class_id = $arrParam['product_class_id']; $arrQuantity[$product_class_id] += $arrParam['quantity']; } // カゴの中身と突き合わせ foreach ($arrCartItem as $item) { $product_class_id = $item['id']; // 差異がある場合、エラーを記録 if ($item['quantity'] != $arrQuantity[$product_class_id]) { foreach ($arrParams as $index => $arrParam) { if ($arrParam['product_class_id'] == $product_class_id) { $arrErr['line_of_num'][$product_class_id] = "※ 数量合計を「{$item['quantity']}」にしてください。<br />"; } } } } } return $arrErr; }
/** * エラーチェック * * @param FormParam $objFormParam フォームパラメータークラス * @return array エラー配列 */ public function lfCheckError(&$objFormParam) { $objQuery = Application::alias('eccube.query'); $arrForm = $objFormParam->getHashArray(); // パラメーターの基本チェック $arrErr = $objFormParam->checkError(); if (!Utils::isBlank($arrErr)) { return $arrErr; } else { $arrForm = $objFormParam->getHashArray(); } $where = 'del_flg = 0 AND name = ?'; $arrClass = $objQuery->select('class_id, name', 'dtb_class', $where, array($arrForm['name'])); // 編集中のレコード以外に同じ名称が存在する場合 if ($arrClass[0]['class_id'] != $arrForm['class_id'] && $arrClass[0]['name'] == $arrForm['name']) { $arrErr['name'] = '※ 既に同じ内容の登録が存在します。<br>'; } return $arrErr; }
/** * エラーチェックする * * @param FormParam $objFormParam * @access private * @return array エラー情報の配列 */ public function lfCheckError(&$objFormParam) { $objFormParam->convParam(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error'); $objErr->arrErr = $objFormParam->checkError(); // FIXME: lfInitParam() で設定すれば良いように感じる $objErr->doFunc(array('メールアドレス', 'email_mobile'), array('CHECK_REGIST_CUSTOMER_EMAIL')); return $objErr->arrErr; }
/** * パラメーターの妥当性検証を行う. * * @param void * @param string|null $mode * @param FormParam $objFormParam * @return array エラー情報の連想配列 */ public function validateData(&$objFormParam, &$arrParams, $mode) { $arrErr = $objFormParam->checkError(); if (isset($arrErr) && count($arrErr) > 0) { return $arrErr; } // ログインID・パスワードの文字数チェック /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error'); if ($mode == 'new') { $objErr->doFunc(array('パスワード', 'password', ID_MIN_LEN, ID_MAX_LEN), array('NUM_RANGE_CHECK')); $objErr->doFunc(array('ログインID', 'login_id', ID_MIN_LEN, ID_MAX_LEN), array('NUM_RANGE_CHECK')); } elseif ($mode == 'edit') { $objErr->doFunc(array('パスワード', 'password', ID_MIN_LEN, ID_MAX_LEN), array('SPTAB_CHECK', 'NUM_RANGE_CHECK')); $objErr->doFunc(array('ログインID', 'login_id', ID_MIN_LEN, ID_MAX_LEN), array('SPTAB_CHECK', 'NUM_RANGE_CHECK')); } $objErr->doFunc(array('パスワード', 'パスワード(確認)', 'password', 'password02'), array('EQUAL_CHECK')); $arrErr = $objErr->arrErr; switch ($mode) { case 'new': // 管理者名が登録済みでないか if ($this->memberDataExists('name = ? AND del_flg = 0', $arrParams['name'])) { $arrErr['name'] = '既に登録されている名前なので利用できません。<br>'; } // ログインIDが登録済みでないか if ($this->memberDataExists('login_id = ? AND del_flg = 0', $arrParams['login_id'])) { $arrErr['login_id'] = '既に登録されているIDなので利用できません。<br>'; } break; case 'edit': // ログインIDが変更されている場合はチェックする。 if ($arrParams['login_id'] != $arrParams['old_login_id']) { // ログインIDが登録済みでないか if ($this->memberDataExists('login_id = ? AND del_flg = 0', $arrParams['login_id'])) { $arrErr['login_id'] = '既に登録されているIDなので利用できません。<br>'; } } break; } return $arrErr; }
/** * 入力エラーチェック. * * @param FormParam $objFormParam * @return array $objErr->arrErr エラー内容 */ public function lfCheckError(&$objFormParam, MakerHelper &$objMaker) { $arrErr = $objFormParam->checkError(); $arrForm = $objFormParam->getHashArray(); // maker_id の正当性チェック if (!empty($arrForm['maker_id'])) { if (!Utils::sfIsInt($arrForm['maker_id']) || Utils::sfIsZeroFilling($arrForm['maker_id']) || !$objMaker->getMaker($arrForm['maker_id'])) { // maker_idが指定されていて、且つその値が不正と思われる場合はエラー $arrErr['maker_id'] = '※ メーカーIDが不正です<br />'; } } if (!isset($arrErr['name'])) { $arrMaker = $objMaker->getByName($arrForm['name']); // 編集中のレコード以外に同じ名称が存在する場合 if (!Utils::isBlank($arrMaker) && $arrMaker['maker_id'] != $arrForm['maker_id'] && $arrMaker['name'] == $arrForm['name']) { $arrErr['name'] = '※ 既に同じ内容の登録が存在します。<br />'; } } return $arrErr; }