Exemplo n.º 1
0
 /**
  * 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;
     }
 }
Exemplo n.º 2
0
 /**
  * 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);
         }
     }
 }
Exemplo n.º 3
0
 /**
  * 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('正常に更新されました。');";
     }
 }
Exemplo n.º 4
0
 /**
  * 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);
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 7
0
 /**
  * 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');
 }
Exemplo n.º 8
0
 /**
  * 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;
 }
Exemplo n.º 9
0
 /**
  * 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']);
     }
 }
Exemplo n.º 10
0
 /**
  * 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;
     }
 }
Exemplo n.º 11
0
 /**
  * エラーチェック
  *
  * @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;
 }
Exemplo n.º 12
0
 /**
  * 再帰的に入力パラメーターの先頭及び末尾にある空白文字を削除する.
  *
  * @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);
         }
     }
 }
Exemplo n.º 13
0
 /**
  * エラーチェックを行う.
  *
  * @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;
 }
Exemplo n.º 14
0
 /**
  * ブロックを配置する.
  *
  * @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();
 }
Exemplo n.º 15
0
 /**
  * 受注データを取得して, 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']);
     }
 }
Exemplo n.º 16
0
 /**
  * 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;
 }
Exemplo n.º 17
0
 /**
  * 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;
 }
Exemplo n.º 18
0
 /**
  * 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();
 }
Exemplo n.º 19
0
 /**
  * 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();
 }
Exemplo n.º 20
0
 /**
  * 決済モジュールを使用するかどうか.
  *
  * 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);
 }
Exemplo n.º 21
0
 /**
  * 同じ日付の休日が存在するか確認.
  *
  * @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);
 }
Exemplo n.º 22
0
    /**
     * 商品詳細の 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;
    }
Exemplo n.º 23
0
 /**
  * 会員に登録メールを再送する処理
  *
  * @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;
 }
Exemplo n.º 24
0
 /**
  * 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);
     }
 }
Exemplo n.º 25
0
 /**
  * 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);
 }
Exemplo n.º 26
0
 /**
  * 入力済みの購入情報をフォームに設定する.
  *
  * 受注一時テーブル, セッションの配送情報から入力済みの購入情報を取得し,
  * フォームに設定する.
  *
  * @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');
 }
Exemplo n.º 27
0
 /**
  * エラーチェックを行う.
  *
  * @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;
 }
Exemplo n.º 28
0
 /**
  * サブ情報の登録があるかを取得する
  * タイトル, コメント, 画像のいずれかに登録があれば「あり」と判定する
  *
  * @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;
 }
Exemplo n.º 29
0
 /**
  * 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;
 }
Exemplo n.º 30
0
 /**
  * クエリを構築する.
  *
  * 検索条件のキーに応じた 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;
     }
 }