/** * パラメーターのエラーチェック * * 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($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 * @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 FormParamインスタンス * @return array フォームパラメーター配列 */ public function lfGetFormParam_Complete(&$objFormParam) { $arrForm = $objFormParam->getHashArray(); $arrForm['category_id'] = Utils::jsonDecode($arrForm['category_id']); $objFormParam->setValue('category_id', $arrForm['category_id']); return $arrForm; }
/** * 入力チェックを行う. * * @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 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 */ public function lfSetStartEndDate(&$objFormParam) { $arrRet = $objFormParam->getHashArray(); // 月度集計 if ($arrRet['search_form'] == 1) { list($sdate, $edate) = Utils::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); }
/** * 入力内容のチェックを行う. * * @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; }
/** * @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詳細設定情報呼び出し (編集中データがある場合はそれを保持する) * * @param FormParam $objFormParam フォームパラメータークラス * @return mixed 表示用パラメーター */ public function lfGetSqlData(&$objFormParam) { // 編集中データがある場合 if (!Utils::isBlank($objFormParam->getValue('sql_name')) || !Utils::isBlank($objFormParam->getValue('csv_sql'))) { return $objFormParam->getHashArray(); } $sql_id = $objFormParam->getValue('sql_id'); if (!Utils::isBlank($sql_id)) { $arrData = $this->lfGetSqlList('sql_id = ?', array($sql_id)); return $arrData[0]; } return array(); }
/** * * POSTされた値からSQLのWHEREとBINDを配列で返す。 * @return array ('where' => where string, 'bind' => databind array) * @param FormParam $objFormParam * @param DbHelper $objDb */ public function createWhere(&$objFormParam, &$objDb) { $arrForm = $objFormParam->getHashArray(); $where = 'alldtl.del_flg = 0'; $bind = array(); foreach ($arrForm as $key => $val) { if ($val == '') { continue; } switch ($key) { case 'search_name': $where .= ' AND name ILIKE ?'; $bind[] = '%' . $val . '%'; break; case 'search_category_id': list($tmp_where, $tmp_bind) = $objDb->getCatWhere($val); if ($tmp_where != '') { $where .= ' AND alldtl.product_id IN (SELECT product_id FROM dtb_product_categories WHERE ' . $tmp_where . ')'; $bind = array_merge((array) $bind, (array) $tmp_bind); } break; case 'search_product_code': $where .= ' AND alldtl.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code LIKE ? GROUP BY product_id)'; $bind[] = '%' . $val . '%'; break; case 'search_status': $where .= ' AND alldtl.status = ?'; $bind[] = $val; break; default: break; } } return array('where' => $where, 'bind' => $bind); }
/** * エラーチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam, &$arrErr) { $arrParams = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrParams); $objErr->arrErr =& $arrErr; $objErr->doFunc(array('division', 'division', STEXT_LEN), array('EXIST_CHECK')); return $objErr->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 * @param mixed $customer_id * @access private * @return void */ public function lfRegistCustomerData(&$objFormParam, $customer_id) { $arrRet = $objFormParam->getHashArray(); $sqlval = $objFormParam->getDbArray(); $sqlval['birth'] = Utils::sfGetTimestamp($arrRet['year'], $arrRet['month'], $arrRet['day']); Application::alias('eccube.helper.customer')->sfEditCustomerData($sqlval, $customer_id); }
/** * 入力内容のチェックを行う. * * @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 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 インスタンス * @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 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) { // 入力データを渡す。 $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; }
/** * 入力内容のチェックを行う. * * @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 FormParam $objFormParam * @return integer 登録した行の dtb_send_history.send_id の値 */ public function lfRegisterData(&$objFormParam) { $objQuery = Application::alias('eccube.query'); list($linemax, $arrSendCustomer, $objNavi) = Application::alias('eccube.helper.customer')->sfGetSearchData($objFormParam->getHashArray(), 'All'); $send_customer_cnt = count($arrSendCustomer); $send_id = $objQuery->nextVal('dtb_send_history_send_id'); $dtb_send_history = array(); $dtb_send_history['mail_method'] = $objFormParam->getValue('mail_method'); $dtb_send_history['subject'] = $objFormParam->getValue('subject'); $dtb_send_history['body'] = $objFormParam->getValue('body'); $dtb_send_history['start_date'] = 'CURRENT_TIMESTAMP'; $dtb_send_history['creator_id'] = $_SESSION['member_id']; $dtb_send_history['send_count'] = $send_customer_cnt; $dtb_send_history['search_data'] = serialize($objFormParam->getSearchArray()); $dtb_send_history['update_date'] = 'CURRENT_TIMESTAMP'; $dtb_send_history['create_date'] = 'CURRENT_TIMESTAMP'; $dtb_send_history['send_id'] = $send_id; $objQuery->insert('dtb_send_history', $dtb_send_history); // 「配信メールアドレス種別」に携帯メールアドレスが指定されている場合は、携帯メールアドレスに配信 $emailtype = 'email'; $searchmailtype = $objFormParam->getValue('search_mail_type'); if ($searchmailtype == 2 || $searchmailtype == 4) { $emailtype = 'email_mobile'; } if (is_array($arrSendCustomer)) { foreach ($arrSendCustomer as $line) { $dtb_send_customer = array(); $dtb_send_customer['customer_id'] = $line['customer_id']; $dtb_send_customer['send_id'] = $send_id; $dtb_send_customer['email'] = $line[$emailtype]; $dtb_send_customer['name'] = $line['name01'] . ' ' . $line['name02']; $objQuery->insert('dtb_send_customer', $dtb_send_customer); } } return $send_id; }
/** * 入力内容のチェックを行う. * * 追加の必須チェック, 相関チェックを行うため, CheckError を使用する. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラー情報の配 */ public function lfCheckError(&$objFormParam) { $arrParams = $objFormParam->getHashArray(); $objErr = Application::alias('eccube.helper.customer')->sfCustomerCommonErrorCheck($objFormParam, 'order_'); // 別のお届け先チェック if (isset($arrParams['deliv_check']) && $arrParams['deliv_check'] == '1') { $objErr2 = Application::alias('eccube.helper.customer')->sfCustomerCommonErrorCheck($objFormParam, 'shipping_'); $objErr->arrErr = array_merge((array) $objErr->arrErr, (array) $objErr2->arrErr); } else { // shipping系のエラーは無視 foreach ($objErr->arrErr as $key => $val) { if (substr($key, 0, strlen('shipping_')) == 'shipping_') { unset($objErr->arrErr[$key]); } } } // 複数項目チェック $objErr->doFunc(array('生年月日', 'order_year', 'order_month', 'order_day'), array('CHECK_BIRTHDAY')); $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'order_email', 'order_email02'), array('EQUAL_CHECK')); return $objErr->arrErr; }
/** * @param AddressHelper $objAddress * @param FormParam $objFormParam */ public function lfRegistData(AddressHelper $objAddress, FormParam $objFormParam, $customer_id) { $arrRet = $objFormParam->getHashArray(); $sqlval = $objFormParam->getDbArray(); $sqlval['other_deliv_id'] = $arrRet['other_deliv_id']; $sqlval['customer_id'] = $customer_id; if (!$objAddress->registAddress($sqlval)) { Utils::sfDispSiteError(FREE_ERROR_MSG, '', false, '別のお届け先を登録できませんでした。'); Application::alias('eccube.response')->actionExit(); } }
/** * エラーチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam, &$arrErr) { $arrParams = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrParams); $objErr->arrErr =& $arrErr; $objErr->doFunc(array('名称', 'page_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objErr->doFunc(array('URL', 'filename', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); /* * URL チェック * ここでチェックするのは, パスのみなので CheckError::URL_CHECK() * は使用しない */ $valid_url = true; foreach (explode('/', $arrParams['filename']) as $val) { if (!preg_match('/^[a-zA-Z0-9:_~\\.\\-]+$/', $val)) { $valid_url = false; } if ($val == '.' || $val == '..') { $valid_url = false; } } if (!$valid_url) { $objErr->arrErr['filename'] = '※ URLを正しく入力してください。<br />'; } // 同一URLの存在チェック $where = 'page_id <> 0 AND device_type_id = ? AND filename = ?'; $arrValues = array($arrParams['device_type_id'], USER_DIR . $arrParams['filename']); // 変更の場合は自 URL を除外 if (!Utils::isBlank($arrParams['page_id'])) { $where .= ' AND page_id <> ?'; $arrValues[] = $arrParams['page_id']; } $objQuery = Application::alias('eccube.query'); $exists = $objQuery->exists('dtb_pagelayout', $where, $arrValues); if ($exists) { $objErr->arrErr['filename'] = '※ 同じURLのデータが存在しています。別のURLを入力してください。<br />'; } return $objErr->arrErr; }
/** * 会員登録に必要なSQLパラメーターの配列を生成する. * * フォームに入力された情報を元に, SQLパラメーターの配列を生成する. * モバイル端末の場合は, email を email_mobile にコピーし, * mobile_phone_id に携帯端末IDを格納する. * * @param FormParam $objFormParam * @access private * @return $arrResults */ public function lfMakeSqlVal(&$objFormParam) { $arrForm = $objFormParam->getHashArray(); $arrResults = $objFormParam->getDbArray(); // 生年月日の作成 $arrResults['birth'] = Utils::sfGetTimestamp($arrForm['year'], $arrForm['month'], $arrForm['day']); // 仮会員 1 本会員 2 $arrResults['status'] = CUSTOMER_CONFIRM_MAIL == true ? '1' : '2'; /* * secret_keyは、テーブルで重複許可されていない場合があるので、 * 本会員登録では利用されないがセットしておく。 */ $arrResults['secret_key'] = Application::alias('eccube.helper.customer')->sfGetUniqSecretKey(); // 入会時ポイント $CONF = Application::alias('eccube.helper.db')->getBasisData(); $arrResults['point'] = $CONF['welcome_point']; if (Application::alias('eccube.display')->detectDevice() == DEVICE_TYPE_MOBILE) { // 携帯メールアドレス $arrResults['email_mobile'] = $arrResults['email']; // PHONE_IDを取り出す $arrResults['mobile_phone_id'] = MobileUserAgent::getId(); } return $arrResults; }
/** * エラーチェック * * @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 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 FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam, &$arrErr) { $arrParams = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrParams); $objErr->arrErr =& $arrErr; $objErr->doFunc(array('CSSファイル名', 'css_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'FILE_NAME_CHECK_BY_NOUPLOAD')); $css_name = $objFormParam->getValue('css_name'); $old_css_name = $objFormParam->getValue('old_css_name'); $device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC); $is_error = false; // 重複チェック if (Utils::isBlank($objErr->arrErr['css_name'])) { $arrCSSList = $this->getCSSList($this->getCSSDir($device_type_id)); foreach ($arrCSSList as $val) { if ($val['css_name'] == $css_name) { if (Utils::isBlank($old_css_name) || $old_css_name != $css_name) { $is_error = true; } } } if ($is_error) { $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; } } return $objErr->arrErr; }
/** * エラーチェックを行う. * * @param FormParam $objFormParam FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam, &$arrErr, BlocHelper &$objBloc) { $arrParams = $objFormParam->getHashArray(); /* @var $objErr CheckError */ $objErr = Application::alias('eccube.check_error', $arrParams); $objErr->arrErr =& $arrErr; $objErr->doFunc(array('ブロック名', 'bloc_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objErr->doFunc(array('ファイル名', 'filename', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'FILE_NAME_CHECK_BY_NOUPLOAD')); $where = 'filename = ?'; $arrValues = array($arrParams['filename']); // 変更の場合は自ブロックを除外 if (!Utils::isBlank($arrParams['bloc_id'])) { $where .= ' AND bloc_id <> ?'; $arrValues[] = $arrParams['bloc_id']; } $arrBloc = $objBloc->getWhere($where, $arrValues); if (!Utils::isBlank($arrBloc)) { $objErr->arrErr['filename'] = '※ 同じファイル名のデータが存在しています。別のファイル名を入力してください。<br />'; } return $objErr->arrErr; }