/** * フォームパラメータ初期化 * * @return void */ function initForm() { $objForm = new SC_FormParam(); $objForm->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK')); $objForm->setParam($_GET); $this->objForm = $objForm; }
function initParam() { $objForm = new SC_FormParam(); $objForm->addParam('pageno', 'pageno', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK', 'EXIST_CHECK')); $objForm->addParam('id', 'id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objForm->setParam($_GET); $this->objForm = $objForm; }
/** * 受注データを取得して, SC_FormParam へ設定する. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param integer $order_id 取得元の受注ID * @return void */ function setOrderToFormParam(&$objFormParam, $order_id) { $objPurchase = new SC_Helper_Purchase_Ex(); // 受注詳細を設定 $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); $arrShippingsTmp = $objPurchase->getShippings($order_id); $arrShippings = array(); foreach ($arrShippingsTmp as $row) { // お届け日の処理 if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { $ts = strtotime($row['shipping_date']); $row['shipping_date_year'] = date('Y', $ts); $row['shipping_date_month'] = date('n', $ts); $row['shipping_date_day'] = date('j', $ts); } $arrShippings[$row['shipping_id']] = $row; } $objFormParam->setValue('shipping_quantity', count($arrShippings)); $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); /* * 配送商品を設定 * * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 * $arrProductQuantity[$shipping_id] = 配送先ごとの配送商品数量 */ $arrProductQuantity = array(); $arrShipmentItem = array(); foreach ($arrShippings as $shipping_id => $arrShipping) { $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { foreach ($arrItem as $item_key => $item_val) { $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; } } } $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); $objFormParam->setParam($arrShipmentItem); /* * 受注情報を設定 * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 * が渡ってくるため, $arrOrder で上書きする. */ $arrOrder = $objPurchase->getOrder($order_id); $objFormParam->setParam($arrOrder); // ポイントを設定 list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint($order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status']); $objFormParam->setValue('total_point', $db_point); $objFormParam->setValue('point', $rollback_point); if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); $objFormParam->setValue('customer_point', $arrCustomer['point']); } }
/** * 表示するファイルにエラーチェックを行う * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return boolean $file_check_flg エラーチェックの結果 */ public function checkErrorDispFile($objFormParam) { $file_check_flg = false; // FIXME パスのチェック関数が必要 $file = $objFormParam->getValue('file'); $path_exists = SC_Utils::checkFileExistsWithInBasePath($file, USER_REALDIR); if ($path_exists) { $file_check_flg = true; } return $file_check_flg; }
/** * 表示するファイルにエラーチェックを行う * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return boolen $file_check_flg エラーチェックの結果 */ function checkErrorDispFile($objFormParam) { $file_check_flg = false; // FIXME パスのチェック関数が必要 $file = $objFormParam->getValue('file'); if (!preg_match('|\\./|', $file)) { $file_check_flg = true; } return $file_check_flg; }
/** * 入力内容のチェックを行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return array エラーメッセージの配列 */ function lfCheckError(&$objFormParam) { $arrErr = $objFormParam->checkError(); $arrForm = $objFormParam->getHashArray(); // 重複メッセージの判定 $objQuery =& SC_Query_Ex::getSingletonInstance(); $exists = $objQuery->exists('dtb_review', 'product_id = ? AND title = ? ', array($arrForm['product_id'], $arrForm['title'])); if ($exists) { $arrErr['title'] .= '重複したタイトルは登録できません。'; } if (REVIEW_ALLOW_URL == false) { $objErr = new SC_CheckError_Ex($objFormParam->getHashArray()); // コメント欄へのURLの入力を禁止 $objErr->doFunc(array('URL', 'comment', $this->arrReviewDenyURL), array('PROHIBITED_STR_CHECK')); $arrErr += $objErr->arrErr; } return $arrErr; }
/** * 登録を実行する. * * ファイルの作成に失敗した場合は, エラーメッセージを出力し, * データベースをロールバックする. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param SC_Helper_PageLayout $objLayout SC_Helper_PageLayout インスタンス * @return integer|boolean 登録が成功した場合, 登録したページID; * 失敗した場合 false */ function doRegister(&$objFormParam, &$objLayout) { $filename = $objFormParam->getValue('filename'); $arrParams['device_type_id'] = $objFormParam->getValue('device_type_id'); $arrParams['page_id'] = $objFormParam->getValue('page_id'); $arrParams['header_chk'] = intval($objFormParam->getValue('header_chk')) === 1 ? 1 : 2; $arrParams['footer_chk'] = intval($objFormParam->getValue('footer_chk')) === 1 ? 1 : 2; $arrParams['tpl_data'] = $objFormParam->getValue('tpl_data'); $arrParams['page_name'] = $objFormParam->getValue('page_name'); $arrParams['url'] = USER_DIR . $filename . '.php'; $arrParams['filename'] = USER_DIR . $filename; $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->begin(); $page_id = $this->registerPage($arrParams, $objLayout); $objBlob = new SC_Helper_Blob_Ex(); $containerName = $objBlob->getTemplateContainerName($arrParams['device_type_id']); /* * 新規登録時 * or 編集可能な既存ページ編集時かつ, PHP ファイルが存在しない場合に, * PHP ファイルを作成する. */ if (SC_Utils_Ex::isBlank($arrParams['page_id']) || $objLayout->isEditablePage($arrParams['device_type_id'], $arrParams['page_id'])) { if (!$this->createPHPFile($filename)) { $this->arrErr['err'] = '※ PHPファイルの作成に失敗しました<br />'; $objQuery->rollback(); return false; } // 新規登録時のみ $page_id を代入 $arrParams['page_id'] = $page_id; } if ($objLayout->isEditablePage($arrParams['device_type_id'], $page_id)) { $tpl_path = $objLayout->getTemplatePath($arrParams['device_type_id']) . $arrParams['filename'] . '.tpl'; } else { $tpl_path = $objLayout->getTemplatePath($arrParams['device_type_id']) . $filename . '.tpl'; } if (!$objBlob->putBlobData($containerName, $arrParams['filename'] . '.tpl', $arrParams['tpl_data'])) { $this->arrErr['err'] = '※ TPLファイルの書き込みに失敗しました<br />'; $objQuery->rollback(); return false; } //既存のTPLが存在する場合は削除しておく if (file_exists($tpl_path)) { unlink($tpl_path); } $objQuery->commit(); return $arrParams['page_id']; }
/** * 配送情報を保存する. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param array $arrDelivTime 配送時間の配列 */ function saveShippings(&$objFormParam, $arrDelivTime) { $deliv_id = $objFormParam->getValue('deliv_id'); /* TODO * SC_Purchase::getShippingTemp() で取得して, * リファレンスで代入すると, セッションに添字を追加できない? */ foreach ($_SESSION['shipping'] as $key => $value) { $shipping_id = $_SESSION['shipping'][$key]['shipping_id']; $time_id = $objFormParam->getValue('deliv_time_id' . $shipping_id); $_SESSION['shipping'][$key]['deliv_id'] = $deliv_id; $_SESSION['shipping'][$key]['time_id'] = $time_id; $_SESSION['shipping'][$key]['shipping_time'] = $arrDelivTime[$time_id]; $_SESSION['shipping'][$key]['shipping_date'] = $objFormParam->getValue('deliv_date' . $shipping_id); } }
/** * ディレクトリツリー生成 * * @param object $objFileManager SC_Helper_FileManager_Exインスタンス * @param SC_FormParam $objFormParam SC_FormParamインスタンス * @return void */ function setDispTree($objFileManager, $objFormParam) { $tpl_onload = ''; // ツリーを表示する divタグid, ツリー配列変数名, 現在ディレクトリ, 選択ツリーhidden名, ツリー状態hidden名, mode hidden名 $now_dir = $objFormParam->getValue('now_dir'); $treeView = "fnTreeView('tree', arrTree, '{$now_dir}', 'tree_select_file', 'tree_status', 'move');"; if (!empty($this->tpl_onload)) { $tpl_onload .= $treeView; } else { $tpl_onload = $treeView; } $this->setTplOnLoad($tpl_onload); $tpl_javascript = ''; $arrTree = $objFileManager->sfGetFileTree($objFormParam->getValue('top_dir'), $objFormParam->getValue('tree_status')); $tpl_javascript .= "arrTree = new Array();\n"; foreach ($arrTree as $arrVal) { $tpl_javascript .= "arrTree[" . $arrVal['count'] . "] = new Array(" . $arrVal['count'] . ", '" . $arrVal['type'] . "', '" . $arrVal['path'] . "', " . $arrVal['rank'] . ","; if ($arrVal['open']) { $tpl_javascript .= "true);\n"; } else { $tpl_javascript .= "false);\n"; } } $this->setDispParam('tpl_javascript', $tpl_javascript); }
/** * 複数配送情報を一時保存する. * * 会員ログインしている場合は, その他のお届け先から住所情報を取得する. * * @param integer $uniqid 一時受注テーブルのユニークID * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param SC_Customer $objCustomer SC_Customer インスタンス * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス * @return void */ public function saveMultipleShippings($uniqid, &$objFormParam, &$objCustomer, &$objPurchase, &$objAddress) { $arrParams = $objFormParam->getSwapArray(); foreach ($arrParams as $arrParam) { $other_deliv_id = $arrParam['shipping']; if ($objCustomer->isLoginSuccess(true)) { if ($other_deliv_id != 0) { $otherDeliv = $objAddress->getAddress($other_deliv_id, $objCustomer->getValue('customer_id')); if (!$otherDeliv) { SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, '', false, "入力値が不正です。<br />正しい値を入力してください。"); SC_Response_Ex::actionExit(); } foreach ($otherDeliv as $key => $val) { $arrValues[$other_deliv_id]['shipping_' . $key] = $val; } } else { $objPurchase->copyFromCustomer($arrValues[0], $objCustomer, 'shipping'); } } else { $arrValues = $objPurchase->getShippingTemp(); } $arrItemTemp[$other_deliv_id][$arrParam['product_class_id']] += $arrParam['quantity']; } $objPurchase->clearShipmentItemTemp(); foreach ($arrValues as $shipping_id => $arrVal) { $objPurchase->saveShippingTemp($arrVal, $shipping_id); } foreach ($arrItemTemp as $other_deliv_id => $arrProductClassIds) { foreach ($arrProductClassIds as $product_class_id => $quantity) { if ($quantity == 0) { continue; } $objPurchase->setShipmentItemTemp($other_deliv_id, $product_class_id, $quantity); } } //不必要な配送先を削除 foreach ($_SESSION['shipping'] as $id => $arrShipping) { if (!isset($arrShipping['shipment_item'])) { $objPurchase->unsetOneShippingTemp($id); } } // $arrValues[0] には, 購入者の情報が格納されている $objPurchase->saveOrderTemp($uniqid, $arrValues[0], $objCustomer); }
/** * 登録を実行する. * * ファイルの作成に失敗した場合は, エラーメッセージを出力する. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return boolean 登録が成功した場合 true; 失敗した場合 false */ public function doRegister(&$objFormParam) { $division = $objFormParam->getValue('division'); $contents = $objFormParam->getValue($division); $tpl_path = $this->getTemplatePath($objFormParam->getValue('device_type_id'), $division); if ($tpl_path === false || !SC_Helper_FileManager_Ex::sfWriteFile($tpl_path, $contents)) { $this->arrErr['err'] = '※ ファイルの書き込みに失敗しました<br />'; return false; } return true; }
/** * パラメーターの初期化を行う * * @param SC_FormParam $objFormParam * @return void */ function initParam(&$objFormParam) { $objFormParam->addParam('親カテゴリID', 'parent_category_id', null, null, array()); $objFormParam->addParam('カテゴリID', 'category_id', null, null, array()); $objFormParam->addParam('カテゴリ名', 'category_name', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); }
/** * クエリを構築する. * * 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する. * クエリパラメーターは, SC_FormParam の入力値から取得する. * * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される. * * @param string $key 検索条件のキー * @param string $where 構築する WHERE 句 * @param array $arrValues 構築するクエリパラメーター * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ public function buildQuery($key, &$where, &$arrValues, &$objFormParam) { switch ($key) { case "search_year": case "search_month": case "search_day": if ($key != "search_year") { break; } $y = $objFormParam->getValue('search_year'); $m = $objFormParam->getValue('search_month'); $d = $objFormParam->getValue('search_day'); $where .= ' AND create_date BETWEEN ? AND ? '; $arrValues[] = SC_Utils_Ex::sfGetTimestamp($y, $m, $d); $arrValues[] = SC_Utils_Ex::sfGetTimestamp($y, $m, $d, true); break; case 'search_order_id': $where .= ' AND order_id = ?'; $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); break; case 'search_customer_id': $where .= ' AND customer_id = ?'; $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); break; case 'search_product_id': $where .= ' AND EXISTS (SELECT 1 FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_id = ?)'; $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); break; default: parent::buildQuery($key, $where, $arrValues, $objFormParam); break; } }
static function search(LC_Page $objPage, SC_FormParam $objFormParam, SC_Query $objQuery) { // edit_** を除外する $objSql = new SC_DeviceAndroidSelect_Ex($objFormParam->getSearchArray(), "master"); $objPage->tpl_linemax = $objSql->getCount(); if ($objPage->tpl_linemax == 0) { return; } $objPage->page_max = $objFormParam->getValue("search_page_max", SEARCH_PMAX); $objPage->page = $objFormParam->getValue("search_pageno", 1); $objPage->objPageNavi = new SC_PageNavi_Ex($objPage->page, $objPage->tpl_linemax, $objPage->page_max, 'eccube.moveSearchPage', NAVI_PMAX); $objPage->arrPagenavi = $objPage->objPageNavi->arrPagenavi; $objSql->setOrder("device_name ASC"); $objPage->arrData = $objSql->getList($objPage->objPageNavi, $objPage->page_max); $objPage->arrData = SC_Utils_Ex::makeArrayIDToKey("device_id", $objPage->arrData); foreach ($objPage->arrData as $device_id => &$arrData) { $arrData["category_id"] = $objQuery->getCol("category_id", "cp_dtb_device_categories", "device_id=?", (array) $device_id); $release_date = SC_Utils_Ex::sfDispDBDate($arrData["release_date"], false); if ($release_date) { $arrData["release_date"] = str_replace("1970/01/01", "", $release_date); } $last_access_date = SC_Utils_Ex::sfDispDBDate($arrData["last_access_date"], false); if ($last_access_date) { $arrData["last_access_date"] = str_replace("1970/01/01", "", $last_access_date); } $device_name = trim($arrData["device_name"]); $arrData["disp_device_name"] = str_replace("(", "\n(", $device_name); } }
/** * エラーチェックを行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return array エラーメッセージの配列 */ function lfCheckError(&$objFormParam, &$arrErr) { $arrParams = $objFormParam->getHashArray(); $objErr = new SC_CheckError_Ex($arrParams); $objErr->arrErr =& $arrErr; $objErr->doFunc(array(t('c_CSS file name_01'), 'css_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'FILE_NAME_CHECK_BY_NOUPLOAD')); $device_type_id = $objFormParam->getValue('device_type_id'); $css_name = $objFormParam->getValue('css_name'); $old_css_name = $objFormParam->getValue('old_css_name', $css_name); $is_error = false; // 重複チェック if (!SC_Utils_Ex::isBlank($objErr->arrErr['css_name'])) { $arrCSSList = $this->getCSSList($this->getCSSDir()); foreach ($arrCSSList as $val) { if ($val['css_name'] == $css_name) { if (SC_Utils_Ex::isBlank($old_css_name) || $old_css_name != $css_name) { $is_error = true; } } } if ($is_error) { $objErr->arrErr['css_name'] = t('c_* Data for the same file name exists. Enter a different file name.<br />_01'); } } return $objErr->arrErr; }
/** * 入力内容のチェックを行なう. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return array 入力チェック結果の配列 */ function lfCheckError(&$objFormParam) { // 入力データを渡す。 $arrForm = $objFormParam->getHashArray(); $objErr = new SC_CheckError_Ex($arrForm); $objErr->arrErr = $objFormParam->checkError(); $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'email', 'email02'), array('EQUAL_CHECK')); return $objErr->arrErr; }
/** * レビュー情報の更新 * * @param integer $review_id レビューID * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfRegistReviewData($review_id, &$objFormParam) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrValues = $objFormParam->getDbArray(); $arrValues['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery->update('dtb_review', $arrValues, 'review_id = ?', array($review_id)); }
/** * パラメーター情報の初期化. * * @param SC_FormParam $objFormParam パラメーター管理クラス * @return void */ function lfInitParam(&$objFormParam) { $objFormParam->addParam('記憶する', 'login_memory', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); $objFormParam->addParam('メールアドレス', 'login_email', MTEXT_LEN, 'a', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('パスワード', 'login_pass', PASSWORD_MAX_LEN, '', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); }
/** * エラーチェックを行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam, &$arrErr) { $arrParams = $objFormParam->getHashArray(); $objErr = new SC_CheckError_Ex($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 (SC_Utils_Ex::isBlank($objErr->arrErr['css_name'])) { $arrCSSList = $this->getCSSList($this->getCSSDir($device_type_id)); foreach ($arrCSSList as $val) { if ($val['css_name'] == $css_name) { if (SC_Utils_Ex::isBlank($old_css_name) || $old_css_name != $css_name) { $is_error = true; } } } if ($is_error) { $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; } } return $objErr->arrErr; }
/** * アンカーキーを取得する. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return アンカーキーの文字列 */ function getAnchorKey(&$objFormParam) { $ancor_key = $objFormParam->getValue('anchor_key'); if (!SC_Utils_Ex::isBlank($ancor_key)) { return "location.hash='#" . htmlentities(urlencode($ancor_key), ENT_QUOTES) . "'"; } return ''; }
/** * @param SC_FormParam $objFormParam */ public function lfRegistDataNonMember($objFormParam) { $arrRegistColumn = $objFormParam->getDbArray(); foreach ($arrRegistColumn as $key => $val) { $arrRegist['shipping_' . $key] = $val; } if (count($_SESSION['shipping']) >= DELIV_ADDR_MAX) { SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, '', false, '別のお届け先最大登録数に達しています。'); } else { $_SESSION['shipping'][] = $arrRegist; } }
/** * パラメーターの初期化を行う * * @param SC_FormParam $objFormParam * @return void */ function initParam(&$objFormParam) { $objFormParam->addParam(t('c_New category ID_01'), 'parent_category_id', null, null, array()); $objFormParam->addParam(t('c_Category ID_01'), 'category_id', null, null, array()); $objFormParam->addParam(t('c_Category name_01'), 'category_name', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); }
/** * エラーチェックを行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return array エラーメッセージの配列 */ public function lfCheckError(&$objFormParam, &$arrErr, SC_Helper_Bloc_Ex &$objBloc) { $arrParams = $objFormParam->getHashArray(); $objErr = new SC_CheckError_Ex($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 (!SC_Utils_Ex::isBlank($arrParams['bloc_id'])) { $where .= ' AND bloc_id <> ?'; $arrValues[] = $arrParams['bloc_id']; } $arrBloc = $objBloc->getWhere($where, $arrValues); if (!SC_Utils_Ex::isBlank($arrBloc)) { $objErr->arrErr['filename'] = '※ 同じファイル名のデータが存在しています。別のファイル名を入力してください。<br />'; } return $objErr->arrErr; }
/** * パラメーターの初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfInitParam(&$objFormParam) { $objFormParam->addParam('規格ID', 'class_id', INT_LEN, 'n', array('NUM_CHECK')); $objFormParam->addParam('規格分類名', 'name', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('規格分類ID', 'classcategory_id', INT_LEN, 'n', array('NUM_CHECK')); }
/** * パラメーター情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ public function lfInitParam(&$objFormParam) { $objFormParam->addParam('カテゴリ', 'search_category_id', STEXT_LEN, 'n'); $objFormParam->addParam('商品名', 'search_name', STEXT_LEN, 'KVa'); $objFormParam->addParam('商品コード', 'search_product_code', STEXT_LEN, 'KVa'); }
/** * パラメーター情報の初期化 * @param SC_FormParam $objFormParam */ function lfInitParam(&$objFormParam) { $objFormParam->addParam('オーダーID', 'order_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); $objFormParam->addParam('商品名', 'search_name', STEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); $objFormParam->addParam('カテゴリID', 'search_category_id', STEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK', 'SPTAB_CHECK')); $objFormParam->addParam('商品コード', 'search_product_code', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK', 'SPTAB_CHECK')); $objFormParam->addParam('フッター', 'footer', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK', 'SPTAB_CHECK')); }
/** * クエリを構築する. * * 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する. * クエリパラメーターは, SC_FormParam の入力値から取得する. * * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される. * * @param string $key 検索条件のキー * @param string $where 構築する WHERE 句 * @param array $arrValues 構築するクエリパラメーター * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param SC_FormParam $objDb SC_Helper_DB_Ex インスタンス * @return void */ function buildQuery($key, &$where, &$arrValues, &$objFormParam, &$objDb) { $dbFactory = SC_DB_DBFactory_Ex::getInstance(); switch ($key) { // 商品ID case 'search_product_id': $where .= ' AND product_id = ?'; $arrValues[] = sprintf('%d', $objFormParam->getValue($key)); break; // 商品コード // 商品コード case 'search_product_code': $where .= ' AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ?)'; $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key)); break; // 商品名 // 商品名 case 'search_name': $where .= ' AND name LIKE ?'; $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key)); break; // カテゴリ // カテゴリ case 'search_category_id': list($tmp_where, $tmp_Values) = $objDb->sfGetCatWhere($objFormParam->getValue($key)); if ($tmp_where != '') { $where .= ' AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE ' . $tmp_where . ')'; $arrValues = array_merge((array) $arrValues, (array) $tmp_Values); } break; // 種別 // 種別 case 'search_status': $tmp_where = ''; foreach ($objFormParam->getValue($key) as $element) { if ($element != '') { if (SC_Utils_Ex::isBlank($tmp_where)) { $tmp_where .= ' AND (status = ?'; } else { $tmp_where .= ' OR status = ?'; } $arrValues[] = $element; } } if (!SC_Utils_Ex::isBlank($tmp_where)) { $tmp_where .= ')'; $where .= " {$tmp_where} "; } break; // 登録・更新日(開始) // 登録・更新日(開始) case 'search_startyear': $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_startyear'), $objFormParam->getValue('search_startmonth'), $objFormParam->getValue('search_startday')); $where .= ' AND update_date >= ?'; $arrValues[] = $date; break; // 登録・更新日(終了) // 登録・更新日(終了) case 'search_endyear': $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_endyear'), $objFormParam->getValue('search_endmonth'), $objFormParam->getValue('search_endday'), true); $where .= ' AND update_date <= ?'; $arrValues[] = $date; break; // 商品ステータス // 商品ステータス case 'search_product_statuses': $arrPartVal = $objFormParam->getValue($key); $count = count($arrPartVal); if ($count >= 1) { $where .= ' ' . 'AND product_id IN (' . ' SELECT product_id FROM dtb_product_status WHERE product_status_id IN (' . SC_Utils_Ex::repeatStrWithSeparator('?', $count) . ')' . ')'; $arrValues = array_merge($arrValues, $arrPartVal); } break; default: break; } }
/** * * POSTされた値からSQLのWHEREとBINDを配列で返す。 * @return array ('where' => where string, 'bind' => databind array) * @param SC_FormParam $objFormParam */ 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->sfGetCatWhere($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; default: break; } } return array('where' => $where, 'bind' => $bind); }
/** * 会員検索パラメーター エラーチェック(管理画面用) * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @access public * @return array エラー配列 */ public function sfCheckErrorSearchParam(&$objFormParam) { // パラメーターの基本チェック $arrErr = $objFormParam->checkError(); // エラーチェック対象のパラメータ取得 $array = $objFormParam->getHashArray(); // 拡張エラーチェック初期化 $objErr = new SC_CheckError_Ex($array); // 拡張エラーチェック $objErr->doFunc(array('誕生日(開始日)', 'search_b_start_year', 'search_b_start_month', 'search_b_start_day'), array('CHECK_DATE')); $objErr->doFunc(array('誕生日(終了日)', 'search_b_end_year', 'search_b_end_month', 'search_b_end_day'), array('CHECK_DATE')); $objErr->doFunc(array('誕生日(開始日)', '誕生日(終了日)', 'search_b_start_year', 'search_b_start_month', 'search_b_start_day', 'search_b_end_year', 'search_b_end_month', 'search_b_end_day'), array('CHECK_SET_TERM')); $objErr->doFunc(array('登録・更新日(開始日)', 'search_start_year', 'search_start_month', 'search_start_day'), array('CHECK_DATE')); $objErr->doFunc(array('登録・更新日(終了日)', 'search_end_year', 'search_end_month', 'search_end_day'), array('CHECK_DATE')); $objErr->doFunc(array('登録・更新日(開始日)', '登録・更新日(終了日)', 'search_start_year', 'search_start_month', 'search_start_day', 'search_end_year', 'search_end_month', 'search_end_day'), array('CHECK_SET_TERM')); $objErr->doFunc(array('最終購入日(開始)', 'search_buy_start_year', 'search_buy_start_month', 'search_buy_start_day'), array('CHECK_DATE')); $objErr->doFunc(array('最終購入日(終了)', 'search_buy_end_year', 'search_buy_end_month', 'search_buy_end_day'), array('CHECK_DATE')); // 開始 > 終了 の場合はエラーとする $objErr->doFunc(array('最終購入日(開始)', '最終購入日(終了)', 'search_buy_start_year', 'search_buy_start_month', 'search_buy_start_day', 'search_buy_end_year', 'search_buy_end_month', 'search_buy_end_day'), array('CHECK_SET_TERM')); if (SC_Utils_Ex::sfIsInt($array['search_buy_total_from']) && SC_Utils_Ex::sfIsInt($array['search_buy_total_to']) && $array['search_buy_total_from'] > $array['search_buy_total_to']) { $objErr->arrErr['search_buy_total_from'] .= '※ 購入金額の指定範囲が不正です。'; } if (SC_Utils_Ex::sfIsInt($array['search_buy_times_from']) && SC_Utils_Ex::sfIsInt($array['search_buy_times_to']) && $array['search_buy_times_from'] > $array['search_buy_times_to']) { $objErr->arrErr['search_buy_times_from'] .= '※ 購入回数の指定範囲が不正です。'; } if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { $arrErr = array_merge($arrErr, $objErr->arrErr); } return $arrErr; }
/** * パラメーター情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfInitParam(&$objFormParam) { $objFormParam->addParam("メーカーID", "maker_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); $objFormParam->addParam("メーカー名", 'name', SMTEXT_LEN, 'KVa', array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); }