/** * Page のアクション. * * @return void */ public function action() { /* @var $objReview ReviewHelper */ $objReview = Application::alias('eccube.helper.review'); // パラメーター情報の初期化 $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); // 検索ワードの引き継ぎ $this->arrSearchHidden = $objFormParam->getSearchArray(); $this->arrForm = $objFormParam->getHashArray(); switch ($this->getMode()) { // 登録 case 'complete': $this->arrErr = $objFormParam->checkError(); // エラー無し if (Utils::isBlank($this->arrErr)) { // レビュー情報の更新 $arrValues = $objFormParam->getDbArray(); $objReview->save($arrValues); // レビュー情報のDB取得 $this->arrForm = $objReview->get($this->arrForm['review_id']); $this->tpl_onload = "alert('登録が完了しました。');"; } break; default: // レビュー情報のDB取得 $this->arrForm = $objReview->get($this->arrForm['review_id']); break; } }
/** * Page のアクション. * * @return void */ public function action() { if (strpos(HTTPS_URL, 'https://') !== FALSE) { $this->tpl_enable_ssl = TRUE; } $objFormParam = Application::alias('eccube.form_param'); // パラメーターの初期化 $this->initParam($objFormParam, $_POST); if (count($_POST) > 0) { // エラーチェック $arrErr = $objFormParam->checkError(); $this->arrForm = $objFormParam->getHashArray(); //設定ファイルの権限チェック if (!is_writable(CONFIG_REALFILE)) { $arrErr['all'] = CONFIG_REALFILE . ' を変更する権限がありません。'; } //管理画面ディレクトリのチェック $this->lfCheckAdminArea($this->arrForm, $arrErr); if (Utils::isBlank($arrErr) && $this->lfUpdateAdminData($this->arrForm)) { $this->tpl_onload = "window.alert('管理機能の設定を変更しました。URLを変更した場合は、新しいURLにアクセスしてください。');"; } else { $this->tpl_onload = "window.alert('設定内容に誤りがあります。設定内容を確認してください。');"; $this->arrErr = array_merge($arrErr, $this->arrErr); } } else { $admin_dir = str_replace('/', '', ADMIN_DIR); $this->arrForm = array('admin_dir' => $admin_dir, 'admin_force_ssl' => ADMIN_FORCE_SSL, 'admin_allow_hosts' => ''); if (defined('ADMIN_ALLOW_HOSTS')) { $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS); $this->arrForm['admin_allow_hosts'] = implode("\n", $allow_hosts); } } }
/** * Page のアクション. * * @return void */ public function action() { // パラメーター管理クラス $objFormParam = Application::alias('eccube.form_param'); // パラメーター設定 $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->setParam($_GET); $objFormParam->convParam(); // CSV_IDの読み込み $this->tpl_subno_csv = $objFormParam->getValue('tpl_subno_csv'); $this->tpl_csv_id = $this->lfGetCsvId($this->tpl_subno_csv); switch ($this->getMode()) { case 'confirm': // 入力パラメーターチェック $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { // 更新 $this->tpl_is_update = $this->lfUpdCsvOutput($this->tpl_csv_id, $objFormParam->getValue('output_list')); } break; case 'defaultset': //初期値に戻す $this->tpl_is_update = $this->lfSetDefaultCsvOutput($this->tpl_csv_id); break; default: break; } $this->arrSelected = $this->lfGetSelected($this->tpl_csv_id); $this->arrOptions = $this->lfGetOptions($this->tpl_csv_id); $this->tpl_subtitle .= '>' . $this->arrSubnaviName[$this->tpl_csv_id]; if ($this->tpl_is_update) { $this->tpl_onload = "window.alert('正常に更新されました。');"; } }
/** * Page のアクション. * * @return void */ public function action() { // パラメーター管理クラス $objFormParam = Application::alias('eccube.form_param'); // パラメーター設定 $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); // パラメーター読み込み $this->arrForm = $objFormParam->getFormParamList(); // 入力パラメーターチェック $this->arrErr = $this->lfCheckError($objFormParam); if (Utils::isBlank($this->arrErr)) { // POSTのモードがsearchなら会員検索開始 switch ($this->getMode()) { case 'search': list($this->tpl_linemax, $this->arrCustomer, $this->objNavi) = $this->lfDoSearch($objFormParam->getHashArray()); $this->tpl_strnavi = $this->objNavi->strnavi; break; default: break; } } $this->setTemplate($this->tpl_mainpage); }
public function doAction($arrParam) { $arrRequest = $this->doInitParam($arrParam); if (!$this->isParamError()) { $zipcode = $arrRequest['zip1'] . $arrRequest['zip2']; $arrAddrList = Utils::sfGetAddress($zipcode); if (!Utils::isBlank($arrAddrList)) { $this->setResponse('Address', array('State' => $arrAddrList[0]['state'], 'City' => $arrAddrList[0]['city'], 'Town' => $arrAddrList[0]['town'])); return true; } } return false; }
public function doAction($arrParam) { $arrRequest = $this->doInitParam($arrParam); if (!$this->isParamError()) { $category_id = $arrRequest['BrowseNodeId']; if ($category_id && !Application::alias('eccube.helper.db')->isRecord('dtb_category', 'category_id', (array) $category_id, 'del_flg = 0')) { $category_id = '0'; } elseif (Utils::isBlank($category_id)) { $category_id = '0'; } // LC_Page_Products_CategoryList::lfGetCategories() と相当類似しているので共通化したい $arrCategory = null; // 選択されたカテゴリ $arrChildren = array(); // 子カテゴリ $arrAll = Application::alias('eccube.helper.db')->getCatTree($category_id, true); foreach ($arrAll as $category) { if ($category_id != 0 && $category['category_id'] == $category_id) { $arrCategory = $category; continue; } if ($category['parent_category_id'] != $category_id) { continue; } $arrGrandchildrenID = Utils::sfGetUnderChildrenArray($arrAll, 'parent_category_id', 'category_id', $category['category_id']); $category['has_children'] = count($arrGrandchildrenID) > 0; $arrChildren[] = $category; } if (!Utils::isBlank($arrCategory)) { $arrData = array('BrowseNodeId' => $category_id, 'Name' => $arrCategory['category_name'], 'PageURL' => HTTP_URL . 'products/list.php?category_id=' . $arr['category_id'], 'has_children' => count($arrChildren) > 0); } else { $arrData = array('BrowseNodeId' => $category_id, 'Name' => 'ホーム', 'PageURL' => HTTP_URL, 'has_children' => count($arrChildren) > 0); } if (!Utils::isBlank($arrChildren)) { $arrData['Children'] = array(); foreach ($arrChildren as $category) { $arrData['Children']['BrowseNode'][] = array('BrowseNodeId' => $category['category_id'], 'Name' => $category['category_name'], 'PageURL' => HTTP_URL . 'products/list.php?category_id=' . $category['category_id'], 'has_children' => $category['has_children']); } } $this->setResponse('BrowseNode', $arrData); // TODO: Ancestors 親ノード return true; } return false; }
/** * Page のアクション. * * @return void */ public function action() { /* @var $objDb DbHelper */ $objDb = Application::alias('eccube.helper.db'); $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); $rank = intval($_GET['rank']); switch ($this->getMode()) { case 'search': // POST値の引き継ぎ $this->arrErr = $this->lfCheckError($objFormParam); $arrPost = $objFormParam->getHashArray(); // 入力された値にエラーがない場合、検索処理を行う。 // 検索結果の数に応じてページャの処理も入れる。 if (Utils::isBlank($this->arrErr)) { /* @var $objProduct Product */ $objProduct = Application::alias('eccube.product'); $wheres = $this->createWhere($objFormParam, $objDb); $this->tpl_linemax = $this->getLineCount($wheres, $objProduct); $page_max = Utils::sfGetSearchPageMax($arrPost['search_page_max']); // ページ送りの取得 /* @var $objNavi PageNavi */ $objNavi = Application::alias('eccube.page_navi', $arrPost['search_pageno'], $this->tpl_linemax, $page_max, 'eccube.moveSearchPage', NAVI_PMAX); $this->tpl_strnavi = $objNavi->strnavi; // 表示文字列 $startno = $objNavi->start_row; $arrProduct_id = $this->getProducts($wheres, $objProduct, $page_max, $startno); $this->arrProducts = $this->getProductList($arrProduct_id, $objProduct); $this->arrForm = $arrPost; } break; default: break; } // カテゴリ取得 $this->arrCatList = $objDb->getCategoryList(); $this->rank = $rank; $this->setTemplate('contents/recommend_search.tpl'); }
/** * Page のアクション. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $this->arrErr = $objFormParam->checkError(); $is_error = !Utils::isBlank($this->arrErr); $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC); switch ($this->getMode()) { // 登録 case 'regist': $this->arrErr = $this->lfCheckError($objFormParam, $this->arrErr); if (Utils::isBlank($this->arrErr)) { if ($this->doRegister($objFormParam)) { $this->tpl_onload = "alert('登録が完了しました。');"; } } break; default: break; } if (!$is_error) { // テキストエリアに表示 $header_path = $this->getTemplatePath($this->device_type_id, 'header'); $footer_path = $this->getTemplatePath($this->device_type_id, 'footer'); if ($header_path === false || $footer_path === false) { $this->arrErr['err'] = '※ ファイルの取得に失敗しました<br />'; } else { $this->header_data = file_get_contents($header_path); $this->footer_data = file_get_contents($footer_path); } } else { // 画面にエラー表示しないため, ログ出力 GcUtils::gfPrintLog('Error: ' . print_r($this->arrErr, true)); } //サブタイトルの追加 $this->tpl_subtitle = $this->arrDeviceType[$this->device_type_id] . '>' . $this->tpl_subtitle; }
/** * Page のAction. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_GET); $arrErr = $objFormParam->checkError(); if (Utils::isBlank($arrErr)) { $arrForm = $objFormParam->getHashArray(); // TODO: ファイル名を直接指定するような処理は避けるべき // NO_IMAGE_REALFILE以外のファイル名が直接渡された場合、ファイル名のチェックを行う if (strlen($arrForm['image']) >= 1 && $arrForm['image'] !== NO_IMAGE_REALFILE) { if (!$this->lfCheckFileName($arrForm['image'])) { GcUtils::gfPrintLog('invalid access :resize_image.php image=' . $arrForm['image']); } $file = Utils::getSaveImagePath($arrForm['image']); } else { // 商品画像を取得する $file = $this->lfGetProductImage($arrForm); } // リサイズ画像の出力 $this->lfOutputImage($file, $arrForm['width'], $arrForm['height']); } }
/** * Page のアクション. * * @return void */ public function action() { /* @var $objMailHelper MailHelper */ $objMailHelper = Application::alias('eccube.helper.mail'); switch ($this->getMode()) { case 'edit': // 編集 if (Utils::sfIsInt($_GET['template_id']) === true) { $arrMail = $objMailHelper->sfGetMailmagaTemplate($_GET['template_id']); $this->arrForm = $arrMail[0]; } break; case 'regist': // 新規登録 $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $this->arrErr = $objFormParam->checkError(); $this->arrForm = $objFormParam->getHashArray(); if (Utils::isBlank($this->arrErr)) { // エラーが無いときは登録・編集 $this->lfRegistData($objFormParam, $objFormParam->getValue('template_id')); // 自分を再読込して、完了画面へ遷移 $this->objDisplay->reload(array('mode' => 'complete')); } else { $this->arrForm['template_id'] = $objFormParam->getValue('template_id'); } break; case 'complete': // 完了画面表示 $this->tpl_mainpage = 'mail/template_complete.tpl'; break; default: break; } }
/** * エラーチェック * * @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 mixed $value 変換する値. 配列の場合は再帰的に実行する. * @param boolean $has_wide_space 全角空白も削除する場合 true * @return void */ public function recursionTrim(&$value, $has_wide_space = true) { $pattern = '/^[ \\r\\n\\t]*(.*?)[ \\r\\n\\t]*$/u'; if (is_array($value)) { foreach ($value as $key => $val) { $this->recursionTrim($value[$key], $has_wide_space); } } else { if (!Utils::isBlank($value)) { if ($has_wide_space) { $value = preg_replace($pattern, '$1', $value); } $value = trim($value); } } }
/** * エラーチェックを行う. * * @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; }
/** * ブロックを配置する. * * @param FormParam $objFormParam FormParam インスタンス * @param boolean $is_preview プレビュー時の場合 true * @return void */ public function placingBlocs(&$objFormParam, $is_preview = false) { $page_id = $is_preview ? 0 : $objFormParam->getValue('page_id'); $device_type_id = $objFormParam->getValue('device_type_id'); $bloc_cnt = $objFormParam->getValue('bloc_cnt'); $objQuery = Application::alias('eccube.query'); $objQuery->begin(); $objQuery->delete('dtb_blocposition', 'page_id = ? AND device_type_id = ?', array($page_id, $device_type_id)); $arrTargetFlip = array_flip($this->arrTarget); for ($i = 1; $i <= $bloc_cnt; $i++) { // bloc_id が取得できない場合は INSERT しない $id = $objFormParam->getValue('id_' . $i); if (Utils::isBlank($id)) { continue; } // 未使用は INSERT しない $arrParams['target_id'] = $arrTargetFlip[$objFormParam->getValue('target_id_' . $i)]; if ($arrParams['target_id'] == TARGET_ID_UNUSED) { continue; } // 他のページに anywhere が存在する場合は INSERT しない $arrParams['anywhere'] = intval($objFormParam->getValue('anywhere_' . $i)); if ($arrParams['anywhere'] == 1) { $exists = $objQuery->exists('dtb_blocposition', 'anywhere = 1 AND bloc_id = ? AND device_type_id = ?', array($id, $device_type_id)); if ($exists) { continue; } } $arrParams['device_type_id'] = $device_type_id; $arrParams['page_id'] = $page_id; $arrParams['bloc_id'] = $id; $arrParams['bloc_row'] = $objFormParam->getValue('top_' . $i); if ($arrParams['page_id'] == 0) { $arrParams['anywhere'] = 0; } $objQuery->insert('dtb_blocposition', $arrParams); } $objQuery->commit(); }
/** * 受注データを取得して, FormParam へ設定する. * * @param FormParam $objFormParam FormParam インスタンス * @param integer $order_id 取得元の受注ID * @return void */ public function setOrderToFormParam(&$objFormParam, $order_id) { /* @var $objPurchase PurchaseHelper */ $objPurchase = Application::alias('eccube.helper.purchase'); // 受注詳細を設定 $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); $objFormParam->setParam(Utils::sfSwapArray($arrOrderDetail)); $arrShippingsTmp = $objPurchase->getShippings($order_id); $arrShippings = array(); foreach ($arrShippingsTmp as $row) { // お届け日の処理 if (!Utils::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->setParam(Utils::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); // 生年月日の処理 if (!Utils::isBlank($arrOrder['order_birth'])) { $order_birth = substr($arrOrder['order_birth'], 0, 10); $arrOrderBirth = explode("-", $order_birth); $arrOrder['order_birth_year'] = intval($arrOrderBirth[0]); $arrOrder['order_birth_month'] = intval($arrOrderBirth[1]); $arrOrder['order_birth_day'] = intval($arrOrderBirth[2]); } $objFormParam->setParam($arrOrder); // ポイントを設定 list($db_point, $rollback_point) = Application::alias('eccube.helper.db')->getRollbackPoint($order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status']); $objFormParam->setValue('total_point', $db_point); $objFormParam->setValue('point', $rollback_point); if (!Utils::isBlank($objFormParam->getValue('customer_id'))) { $arrCustomer = Application::alias('eccube.helper.customer')->sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); $objFormParam->setValue('customer_point', $arrCustomer['point']); } }
/** * Page のアクション. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC); $this->tpl_select = $this->getTemplateName($this->device_type_id); $template_code = $objFormParam->getValue('template_code'); switch ($this->getMode()) { // 登録ボタン押下時 case 'register': $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { if ($this->doRegister($template_code, $this->device_type_id)) { $this->tpl_select = $template_code; $this->tpl_onload = "alert('登録が完了しました。');"; } } break; // 削除ボタン押下時 // 削除ボタン押下時 case 'delete': if ($objFormParam->checkError()) { Utils::sfDispError(''); } $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { if ($this->doDelete($template_code, $this->device_type_id)) { $this->tpl_onload = "alert('削除が完了しました。');"; } } break; // downloadボタン押下時 // downloadボタン押下時 case 'download': $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { if ($this->doDownload($template_code) !== false) { // ブラウザに出力し, 終了する Application::alias('eccube.response')->actionExit(); } } break; default: break; } $this->templates = $this->getAllTemplates($this->device_type_id); $this->tpl_subtitle = $this->arrDeviceType[$this->device_type_id] . '>' . $this->tpl_subtitle; }
/** * Page のアクション. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); // パラメーターの初期化 $this->initParam($objFormParam, $_POST); $arrErrTmp = array(); $arrForm = array(); $this->mode = $this->getMode(); switch ($this->mode) { // バックアップを作成する case 'bkup': // データ型エラーチェック $arrErrTmp[1] = $objFormParam->checkError(); // データ型に問題がない場合 if (Utils::isBlank($arrErrTmp[1])) { // データ型以外のエラーチェック $arrErrTmp[2] = $this->lfCheckError($objFormParam->getHashArray(), $this->mode); } // エラーがなければバックアップ処理を行う if (Utils::isBlank($arrErrTmp[1]) && Utils::isBlank($arrErrTmp[2])) { $arrData = $objFormParam->getHashArray(); $work_dir = $this->bkup_dir . $arrData['bkup_name'] . '/'; // バックアップデータの事前削除 Application::alias('eccube.helper.file_manager')->deleteFile($work_dir); // バックアップファイル作成 $res = $this->lfCreateBkupData($arrData['bkup_name'], $work_dir); // バックアップデータの事後削除 Application::alias('eccube.helper.file_manager')->deleteFile($work_dir); $arrErrTmp[3] = array(); if ($res !== true) { $arrErrTmp[3]['bkup_name'] = 'バックアップに失敗しました。(' . $res . ')'; } // DBにデータ更新 if (Utils::isBlank($arrErrTmp[3])) { $this->lfUpdBkupData($arrData); } else { $arrForm = $arrData; $arrErr = $arrErrTmp[3]; } $this->tpl_onload = "alert('バックアップ完了しました');"; } else { $arrForm = $objFormParam->getHashArray(); $arrErr = array_merge((array) $arrErrTmp[1], (array) $arrErrTmp[2]); } break; // リストア // リストア case 'restore_config': case 'restore': // データベースに存在するかどうかチェック $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->mode); // エラーがなければリストア処理を行う if (Utils::isBlank($arrErr)) { $arrData = $objFormParam->getHashArray(); $msg = '「' . $arrData['list_name'] . '」のリストアを開始します。'; GcUtils::gfPrintLog($msg); $success = $this->lfRestore($arrData['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode); $msg = '「' . $arrData['list_name'] . '」の'; $msg .= $success ? 'リストアを終了しました。' : 'リストアに失敗しました。'; $this->tpl_restore_msg .= $msg . "\n"; GcUtils::gfPrintLog($msg); } break; // 削除 // 削除 case 'delete': // データベースに存在するかどうかチェック $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->mode); // エラーがなければリストア処理を行う if (Utils::isBlank($arrErr)) { $arrData = $objFormParam->getHashArray(); // DBとファイルを削除 $this->lfDeleteBackUp($arrData, $this->bkup_dir, $this->bkup_ext); } break; // ダウンロード // ダウンロード case 'download': // データベースに存在するかどうかチェック $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->mode); // エラーがなければダウンロード処理を行う if (Utils::isBlank($arrErr)) { $arrData = $objFormParam->getHashArray(); $filename = $arrData['list_name'] . $this->bkup_ext; $dl_file = $this->bkup_dir . $arrData['list_name'] . $this->bkup_ext; // ダウンロード開始 Application::alias('eccube.response')->headerForDownload($filename); header('Content-Length: ' . filesize($dl_file)); readfile($dl_file); Application::alias('eccube.response')->actionExit(); break; } default: break; } // 不要になった変数を解放 unset($arrErrTmp); // バックアップリストを取得する $arrBkupList = $this->lfGetBkupData('ORDER BY create_date DESC'); // テンプレートファイルに渡すデータをセット $this->arrErr = isset($arrErr) ? $arrErr : array(); $this->arrForm = isset($arrForm) ? $arrForm : array(); $this->arrBkupList = $arrBkupList; }
/** * Page のアクション. * * @return void */ public function action() { /* @var $objHoliday HolidayHelper */ $objHoliday = Application::alias('eccube.helper.holiday'); /* @var $objDate Date */ $objDate = Application::alias('eccube.date'); $this->arrMonth = $objDate->getMonth(); $this->arrDay = $objDate->getDay(); $mode = $this->getMode(); $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($mode, $objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); $holiday_id = $objFormParam->getValue('holiday_id'); // 要求判定 switch ($mode) { // 編集処理 case 'edit': $this->arrErr = $this->lfCheckError($objFormParam, $objHoliday); if (!Utils::isBlank($this->arrErr['holiday_id'])) { trigger_error('', E_USER_ERROR); return; } if (count($this->arrErr) <= 0) { // POST値の引き継ぎ $arrParam = $objFormParam->getHashArray(); // 登録実行 $res_holiday_id = $this->doRegist($holiday_id, $arrParam, $objHoliday); if ($res_holiday_id !== FALSE) { // 完了メッセージ $holiday_id = $res_holiday_id; $this->tpl_onload = "alert('登録が完了しました。');"; } } // POSTデータを引き継ぐ $this->tpl_holiday_id = $holiday_id; break; // 削除 // 削除 case 'delete': $objHoliday->delete($holiday_id); break; // 編集前処理 // 編集前処理 case 'pre_edit': // 編集項目を取得する。 $arrHolidayData = $objHoliday->get($holiday_id); $objFormParam->setParam($arrHolidayData); // POSTデータを引き継ぐ $this->tpl_holiday_id = $holiday_id; break; case 'down': $objHoliday->rankDown($holiday_id); // 再表示 $this->objDisplay->reload(); break; case 'up': $objHoliday->rankUp($holiday_id); // 再表示 $this->objDisplay->reload(); break; default: break; } $this->arrForm = $objFormParam->getFormParamList(); $this->arrHoliday = $objHoliday->getList(); }
/** * Page のアクション. * * @return void */ public function action() { /* @var $objNews NewsHelper */ $objNews = Application::alias('eccube.helper.news'); $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); $news_id = $objFormParam->getValue('news_id'); //---- 新規登録/編集登録 switch ($this->getMode()) { case 'edit': $this->arrErr = $this->lfCheckError($objFormParam); if (isset($this->arrErr['news_id']) && !Utils::isBlank($this->arrErr['news_id'])) { trigger_error('', E_USER_ERROR); return; } if (count($this->arrErr) <= 0) { // POST値の引き継ぎ $arrParam = $objFormParam->getHashArray(); // 登録実行 $res_news_id = $this->doRegist($news_id, $arrParam, $objNews); if ($res_news_id !== FALSE) { // 完了メッセージ $news_id = $res_news_id; $this->tpl_onload = "alert('登録が完了しました。');"; } } // POSTデータを引き継ぐ $this->tpl_news_id = $news_id; break; case 'pre_edit': $news = $objNews->getNews($news_id); list($news['year'], $news['month'], $news['day']) = $this->splitNewsDate($news['cast_news_date']); $objFormParam->setParam($news); // POSTデータを引き継ぐ $this->tpl_news_id = $news_id; break; case 'delete': //---- データ削除 $objNews->deleteNews($news_id); //自分にリダイレクト(再読込による誤動作防止) Application::alias('eccube.response')->reload(); break; //---- 表示順位移動 //---- 表示順位移動 case 'up': $objNews->rankUp($news_id); // リロード Application::alias('eccube.response')->reload(); break; case 'down': $objNews->rankDown($news_id); // リロード Application::alias('eccube.response')->reload(); break; case 'moveRankSet': //---- 指定表示順位移動 $input_pos = $this->getPostRank($news_id); if (Utils::sfIsInt($input_pos)) { $objNews->moveRank($news_id, $input_pos); } Application::alias('eccube.response')->reload(); break; default: break; } $this->arrNews = $objNews->getList(); $this->line_max = count($this->arrNews); $this->arrForm = $objFormParam->getFormParamList(); }
/** * 決済モジュールを使用するかどうか. * * dtb_payment.memo03 に値が入っている場合は決済モジュールと見なす. * * @param integer $payment_id 支払い方法ID * @return boolean 決済モジュールを使用する支払い方法の場合 true */ public static function useModule($payment_id) { $objQuery = Application::alias('eccube.query'); $memo03 = $objQuery->get('memo03', 'dtb_payment', 'payment_id = ?', array($payment_id)); return !Utils::isBlank($memo03); }
/** * 同じ日付の休日が存在するか確認. * * @param integer $month * @param integer $day * @param integer $holiday_id * @return boolean 同日付の休日が存在:true */ public function isDateExist($month, $day, $holiday_id = NULL) { $objQuery = Application::alias('eccube.query'); $where = 'del_flg = 0 AND month = ? AND day = ?'; $arrVal = array($month, $day); if (!Utils::isBlank($holiday_id)) { $where .= ' AND holiday_id <> ?'; $arrVal[] = $holiday_id; } $arrRet = $objQuery->select('holiday_id, title', 'dtb_holiday', $where, $arrVal); return !Utils::isBlank($arrRet); }
/** * 商品詳細の SQL を取得する. * * @param string $where_products_class 商品規格情報の WHERE 句 * @return string 商品詳細の SQL */ public function alldtlSQL($where_products_class = '') { if (!Utils::isBlank($where_products_class)) { $where_products_class = 'AND (' . $where_products_class . ')'; } /* * point_rate, deliv_fee は商品規格(dtb_products_class)ごとに保持しているが, * 商品(dtb_products)ごとの設定なので MAX のみを取得する. */ $sql = <<<__EOS__ ( SELECT dtb_products.* ,T4.product_code_min ,T4.product_code_max ,T4.price01_min ,T4.price01_max ,T4.price02_min ,T4.price02_max ,T4.stock_min ,T4.stock_max ,T4.stock_unlimited_min ,T4.stock_unlimited_max ,T4.point_rate ,T4.deliv_fee ,dtb_maker.name AS maker_name FROM dtb_products INNER JOIN ( SELECT product_id ,MIN(product_code) AS product_code_min ,MAX(product_code) AS product_code_max ,MIN(price01) AS price01_min ,MAX(price01) AS price01_max ,MIN(price02) AS price02_min ,MAX(price02) AS price02_max ,MIN(stock) AS stock_min ,MAX(stock) AS stock_max ,MIN(stock_unlimited) AS stock_unlimited_min ,MAX(stock_unlimited) AS stock_unlimited_max ,MAX(point_rate) AS point_rate ,MAX(deliv_fee) AS deliv_fee FROM dtb_products_class WHERE del_flg = 0 {$where_products_class} GROUP BY product_id ) AS T4 ON dtb_products.product_id = T4.product_id LEFT JOIN dtb_maker ON dtb_products.maker_id = dtb_maker.maker_id ) AS alldtl __EOS__; return $sql; }
/** * 会員に登録メールを再送する処理 * * @param integer $customer_id 会員ID * @return boolean true:成功 false:失敗 */ public function lfDoResendMail($customer_id) { $arrData = Application::alias('eccube.helper.customer')->sfGetCustomerDataFromId($customer_id); if (Utils::isBlank($arrData) or $arrData['del_flg'] == 1) { //対象となるデータが見つからない、または削除済み return false; } //仮登録メール再送 $resend_flg = true; // 登録メール再送 /* @var $objHelperMail MailHelper */ $objHelperMail = Application::alias('eccube.helper.mail'); $objHelperMail->setPage($this); $objHelperMail->sfSendRegistMail($arrData['secret_key'], $customer_id, null, $resend_flg); return true; }
/** * Page のアクション. * * @return void */ public function action() { // パラメーター管理クラス $objFormParam = Application::alias('eccube.form_param'); switch ($this->getMode()) { case 'mail_check': $this->lfInitMailCheckParam($objFormParam, $this->device_type); $objFormParam->setParam($_POST); $objFormParam->convParam(); $objFormParam->toLower('email'); $this->arrForm = $objFormParam->getHashArray(); $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { $this->errmsg = $this->lfCheckForgotMail($this->arrForm, $this->arrReminder); if (Utils::isBlank($this->errmsg)) { $this->tpl_mainpage = 'forgot/secret.tpl'; } } break; case 'secret_check': $this->lfInitSecretCheckParam($objFormParam, $this->device_type); $objFormParam->setParam($_POST); $objFormParam->convParam(); $objFormParam->toLower('email'); $this->arrForm = $objFormParam->getHashArray(); $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { $this->errmsg = $this->lfCheckForgotSecret($this->arrForm, $this->arrReminder); if (Utils::isBlank($this->errmsg)) { // 完了ページへ移動する $this->tpl_mainpage = 'forgot/complete.tpl'; // transactionidを更新させたいので呼び出し元(ログインフォーム側)をリロード。 $this->tpl_onload .= 'opener.location.reload(true);'; } else { // 秘密の答えが一致しなかった $this->tpl_mainpage = 'forgot/secret.tpl'; } } else { // 入力値エラー $this->tpl_mainpage = 'forgot/secret.tpl'; } break; default: break; } // ポップアップ用テンプレート設定 if ($this->device_type == DEVICE_TYPE_PC) { $this->setTemplate($this->tpl_mainpage); } }
/** * Page のアクション. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); // ページ送りの処理 $_REQUEST['pageno']が信頼しうる値かどうかチェックする。 $this->tpl_pageno = $this->lfCheckPageNo($_REQUEST['pageno']); $arrErr = array(); $arrForm = array(); switch ($this->getMode()) { case 'new': // パラメーターの初期化 $this->initForm($objFormParam, $_POST); // エラーチェック $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode()); $this->arrForm = $objFormParam->getHashArray(); if (Utils::isBlank($arrErr)) { $this->insertMemberData($this->arrForm); // 親ウィンドウを更新後、自ウィンドウを閉じる。 $url = ADMIN_SYSTEM_URLPATH . '?pageno=' . $this->arrForm['pageno']; $this->tpl_onload = "eccube.changeParentUrl('" . $url . "'); window.close();"; } else { // 入力された値を保持する $this->tpl_mode = $this->getMode(); $this->tpl_member_id = ''; $this->tpl_old_login_id = ''; // パスワードは保持しない $this->arrForm['password'] = ''; $this->arrForm['password02'] = ''; // エラー情報をセットする $this->arrErr = $arrErr; } break; case 'edit': // パラメーターの初期化 $this->initForm($objFormParam, $_POST, $this->getMode()); // エラーチェック $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode()); $this->arrForm = $objFormParam->getHashArray(); if (Utils::isBlank($arrErr)) { $this->updateMemberData($this->arrForm['member_id'], $this->arrForm); // 親ウィンドウを更新後、自ウィンドウを閉じる。 $url = ADMIN_SYSTEM_URLPATH . '?pageno=' . $this->arrForm['pageno']; $this->tpl_onload = "eccube.changeParentUrl('" . $url . "'); window.close();"; } else { // 入力された値を保持する $this->tpl_mode = $this->getMode(); $this->tpl_member_id = $this->arrForm['member_id']; $this->tpl_old_login_id = $this->arrForm['old_login_id']; // パスワードは保持しない $this->arrForm['password'] = ''; $this->arrForm['password02'] = ''; // エラー情報をセットする $this->arrErr = $arrErr; } break; default: // $_GET['id'](member_id)が登録済みのものかチェック。 // 登録されていない場合は不正なものとして、新規扱いとする。 $clean_id = ''; $clean_mode_flg = 'new'; // idが0より大きい数字で整数の場合 if (isset($_GET['id']) && Utils::sfIsInt($_GET['id']) && $_GET['id'] > 0) { if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) { $clean_id = $_GET['id']; $clean_mode_flg = 'edit'; } } switch ($clean_mode_flg) { case 'edit': $this->tpl_mode = $clean_mode_flg; $this->tpl_member_id = $clean_id; $this->tpl_onfocus = 'eccube.clearValue(this.name);'; $this->arrForm = $this->getMemberData($clean_id); $this->arrForm['password'] = DEFAULT_PASSWORD; $this->arrForm['password02'] = DEFAULT_PASSWORD; $this->tpl_old_login_id = $this->arrForm['login_id']; break; case 'new': default: $this->tpl_mode = $clean_mode_flg; $this->arrForm['authority'] = -1; break; } break; } $this->setTemplate($this->tpl_mainpage); }
/** * 入力済みの購入情報をフォームに設定する. * * 受注一時テーブル, セッションの配送情報から入力済みの購入情報を取得し, * フォームに設定する. * * @param FormParam $objFormParam FormParam インスタンス * @param PurchaseHelper $objPurchase PurchaseHelper インスタンス * @param integer $uniqid 購入一時情報のユニークID * @return void */ public function setFormParams(&$objFormParam, &$objPurchase, $uniqid) { $arrOrderTemp = $objPurchase->getOrderTemp($uniqid); if (Utils::isBlank($arrOrderTemp)) { $arrOrderTemp = array('order_email' => '', 'order_birth' => ''); } $arrShippingTemp = $objPurchase->getShippingTemp(); $objFormParam->setParam($arrOrderTemp); /* * count($arrShippingTemp) > 1 は複数配送であり, * $arrShippingTemp[0] は注文者が格納されている */ if (count($arrShippingTemp) > 1) { $objFormParam->setParam($arrShippingTemp[1]); } else { if ($arrOrderTemp['deliv_check'] == 1) { $objFormParam->setParam($arrShippingTemp[1]); } else { $objFormParam->setParam($arrShippingTemp[0]); } } $objFormParam->setValue('order_email02', $arrOrderTemp['order_email']); $objFormParam->setDBDate($arrOrderTemp['order_birth'], 'order_year', 'order_month', 'order_day'); }
/** * エラーチェックを行う. * * @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 array $arrSubProductData サブ情報配列 * @return boolean true: サブ情報あり, false: サブ情報なし */ public function hasSubProductData($arrSubProductData) { $has_subproduct_data = false; for ($i = 1; $i <= PRODUCTSUB_MAX; $i++) { if (Utils::isBlank($arrSubProductData['sub_title' . $i]) == false || Utils::isBlank($arrSubProductData['sub_comment' . $i]) == false || Utils::isBlank($arrSubProductData['sub_image' . $i]) == false || Utils::isBlank($arrSubProductData['sub_large_image' . $i]) == false || Utils::isBlank($arrSubProductData['temp_sub_image' . $i]) == false || Utils::isBlank($arrSubProductData['temp_sub_large_image' . $i]) == false) { $has_subproduct_data = true; break; } } return $has_subproduct_data; }
/** * 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; }
/** * クエリを構築する. * * 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する. * クエリパラメーターは, FormParam の入力値から取得する. * * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される. * * @param string $key 検索条件のキー * @param string $where 構築する WHERE 句 * @param array $arrValues 構築するクエリパラメーター * @param FormParam $objFormParam FormParam インスタンス * @param FormParam $objDb DbHelper インスタンス * @return void */ public function buildQuery($key, &$where, &$arrValues, &$objFormParam, &$objDb) { /* @var $dbFactory DBFactory */ $dbFactory = Application::alias('eccube.db.factory'); 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 ? AND del_flg = 0)'; $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->getCatWhere($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 (Utils::isBlank($tmp_where)) { $tmp_where .= ' AND (status = ?'; } else { $tmp_where .= ' OR status = ?'; } $arrValues[] = $element; } } if (!Utils::isBlank($tmp_where)) { $tmp_where .= ')'; $where .= " {$tmp_where} "; } break; // 登録・更新日(開始) // 登録・更新日(開始) case 'search_startyear': $date = Utils::sfGetTimestamp($objFormParam->getValue('search_startyear'), $objFormParam->getValue('search_startmonth'), $objFormParam->getValue('search_startday')); $where .= ' AND update_date >= ?'; $arrValues[] = $date; break; // 登録・更新日(終了) // 登録・更新日(終了) case 'search_endyear': $date = Utils::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 (' . Utils::repeatStrWithSeparator('?', $count) . ')' . ')'; $arrValues = array_merge($arrValues, $arrPartVal); } break; default: break; } }