/** * Page のAction. * * @return void */ function action() { $objCustomer = new SC_Customer_Ex(); if (!SC_Utils_Ex::sfIsInt($_GET['send_id'])) { SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); } $arrMailView = $this->lfGetMailView($_GET['send_id'], $objCustomer->getValue('customer_id')); if (empty($arrMailView)) { SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); } $this->tpl_subject = $arrMailView[0]['subject']; $this->tpl_body = $arrMailView[0]['mail_body']; if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_PC) { $this->setTemplate('mypage/mail_view.tpl'); } else { $this->tpl_title = 'メール履歴詳細'; $this->tpl_mainpage = 'mypage/mail_view.tpl'; } switch ($this->getMode()) { case 'getDetail': echo SC_Utils_Ex::jsonEncode($arrMailView); SC_Response_Ex::actionExit(); break; default: break; } }
/** * モジュールリスト一覧をjson出力する * */ function displayProductsList() { $arrRet = array('status' => 'SUCCESS', 'data' => $GLOBALS['productsList']); // FIXME 一覧を取得するたびに更新されるのは微妙かも.. updateModuleTable($GLOBALS['productsList']); echo SC_Utils_Ex::jsonEncode($arrRet); }
/** * Page のAction. * * @return void */ public function action() { //決済処理中ステータスのロールバック $objPurchase = new SC_Helper_Purchase_Ex(); $objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG); $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getValue('customer_id'); //ページ送り用 $this->objNavi = new SC_PageNavi_Ex($_REQUEST['pageno'], $this->lfGetOrderHistory($customer_id), SEARCH_PMAX, 'eccube.movePage', NAVI_PMAX, 'pageno=#page#', SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE); $this->arrOrder = $this->lfGetOrderHistory($customer_id, $this->objNavi->start_row); switch ($this->getMode()) { case 'getList': echo SC_Utils_Ex::jsonEncode($this->arrOrder); SC_Response_Ex::actionExit(); break; default: break; } // 支払い方法の取得 $this->arrPayment = SC_Helper_Payment_Ex::getIDValueList(); // 1ページあたりの件数 $this->dispNumber = SEARCH_PMAX; $this->json_payment = SC_Utils::jsonEncode($this->arrPayment); $this->json_customer_order_status = SC_Utils::jsonEncode($this->arrCustomerOrderStatus); }
/** * Page のAction. * * @return void */ public function action() { $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getValue('customer_id'); switch ($this->getMode()) { case 'delete_favorite': // お気に入り削除 $this->lfDeleteFavoriteProduct($customer_id, intval($_POST['product_id'])); break; case 'getList': // スマートフォン版のもっと見るボタン用 // ページ送り用 if (isset($_POST['pageno'])) { $this->tpl_pageno = intval($_POST['pageno']); } $this->arrFavorite = $this->lfGetFavoriteProduct($customer_id, $this); SC_Product_Ex::setPriceTaxTo($this->arrFavorite); // 一覧メイン画像の指定が無い商品のための処理 foreach ($this->arrFavorite as $key => $val) { $this->arrFavorite[$key]['main_list_image'] = SC_Utils_Ex::sfNoImageMainList($val['main_list_image']); } echo SC_Utils_Ex::jsonEncode($this->arrFavorite); SC_Response_Ex::actionExit(); break; default: break; } // ページ送り用 if (isset($_POST['pageno'])) { $this->tpl_pageno = intval($_POST['pageno']); } $this->arrFavorite = $this->lfGetFavoriteProduct($customer_id, $this); // 1ページあたりの件数 $this->dispNumber = SEARCH_PMAX; }
/** * Page のAction. * * @return void */ function action() { $objProduct = new SC_Product_Ex(); $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getValue('customer_id'); switch ($this->getMode()) { case 'delete_favorite': // お気に入り削除 $this->lfDeleteFavoriteProduct($customer_id, intval($_POST['product_id'])); break; case 'getList': // スマートフォン版のもっと見るボタン用 // ページ送り用 if (isset($_POST['pageno'])) { $this->tpl_pageno = intval($_POST['pageno']); } $this->arrFavorite = $this->lfGetFavoriteProduct($customer_id, $this); $this->arrFavorite = $objProduct->setPriceTaxTo($this->arrFavorite); echo SC_Utils_Ex::jsonEncode($this->arrFavorite); SC_Response_Ex::actionExit(); break; } // ページ送り用 if (isset($_POST['pageno'])) { $this->tpl_pageno = intval($_POST['pageno']); } $this->arrFavorite = $this->lfGetFavoriteProduct($customer_id, $this); // 1ページあたりの件数 $this->dispNumber = SEARCH_PMAX; }
/** * Page のAction. * * @return void */ function action() { $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getvalue('customer_id'); //ページ送り用 $this->objNavi = new SC_PageNavi_Ex($_REQUEST['pageno'], $this->lfGetOrderHistory($customer_id), SEARCH_PMAX, 'fnNaviPage', NAVI_PMAX, 'pageno=#page#', SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE); $this->arrOrder = $this->lfGetOrderHistory($customer_id, $this->objNavi->start_row); switch ($this->getMode()) { case 'getList': echo SC_Utils_Ex::jsonEncode($this->arrOrder); SC_Response_Ex::actionExit(); break; default: break; } // 支払い方法の取得 $this->arrPayment = SC_Helper_DB_Ex::sfGetIDValueList('dtb_payment', 'payment_id', 'payment_method'); // 1ページあたりの件数 $this->dispNumber = SEARCH_PMAX; }
/** * * @param SC_Product_Ex $objProduct * @param SC_FormParam_Ex $objFormParam * @return void */ public function doDefault(&$objProduct, &$objFormParam) { //商品一覧の表示処理 $strnavi = $this->objNavi->strnavi; // 表示文字列 $this->tpl_strnavi = empty($strnavi) ? ' ' : $strnavi; // 規格1クラス名 $this->tpl_class_name1 = $objProduct->className1; // 規格2クラス名 $this->tpl_class_name2 = $objProduct->className2; // 規格1 $this->arrClassCat1 = $objProduct->classCats1; // 規格1が設定されている $this->tpl_classcat_find1 = $objProduct->classCat1_find; // 規格2が設定されている $this->tpl_classcat_find2 = $objProduct->classCat2_find; $this->tpl_stock_find = $objProduct->stock_find; $this->tpl_product_class_id = $objProduct->product_class_id; $this->tpl_product_type = $objProduct->product_type; // 商品ステータスを取得 $this->productStatus = $this->arrProducts['productStatus']; unset($this->arrProducts['productStatus']); $this->tpl_javascript .= 'eccube.productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . ';'; if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_PC) { //onloadスクリプトを設定. 在庫ありの商品のみ出力する foreach ($this->arrProducts as $arrProduct) { if ($arrProduct['stock_unlimited_max'] || $arrProduct['stock_max'] > 0) { $js_fnOnLoad .= "fnSetClassCategories(document.product_form{$arrProduct['product_id']});"; } } } //カート処理 $target_product_id = intval($this->arrForm['product_id']); if ($target_product_id > 0) { // 商品IDの正当性チェック if (!SC_Utils_Ex::sfIsInt($this->arrForm['product_id']) || !SC_Helper_DB_Ex::sfIsRecord('dtb_products', 'product_id', $this->arrForm['product_id'], 'del_flg = 0 AND status = 1')) { SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND); } // 入力内容のチェック $arrErr = $this->lfCheckError($objFormParam); if (empty($arrErr)) { $this->lfAddCart($this->arrForm); // 開いているカテゴリーツリーを維持するためのパラメーター $arrQueryString = array('category_id' => $this->arrForm['category_id']); SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString); SC_Response_Ex::actionExit(); } $js_fnOnLoad .= $this->lfSetSelectedData($this->arrProducts, $this->arrForm, $arrErr, $target_product_id); } else { // カート「戻るボタン」用に保持 $netURL = new Net_URL(); //該当メソッドが無いため、$_SESSIONに直接セット $_SESSION['cart_referer_url'] = $netURL->getURL(); } $this->tpl_javascript .= 'function fnOnLoad() {' . $js_fnOnLoad . '}'; $this->tpl_onload .= 'fnOnLoad(); '; }
/** * Page のアクション. * * @return void */ function action() { $objSiteSess = new SC_SiteSession_Ex(); $objCartSess = new SC_CartSession_Ex(); $objPurchase = new SC_Helper_Purchase_Ex(); $objCustomer = new SC_Customer_Ex(); $objFormParam = new SC_FormParam_Ex(); $this->is_multiple = $objPurchase->isMultiple(); // カートの情報を取得 $this->arrShipping = $objPurchase->getShippingTemp($this->is_multiple); $this->tpl_uniqid = $objSiteSess->getUniqId(); $cart_key = $objCartSess->getKey(); $this->cartKey = $cart_key; $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess); // 配送業者を取得 $this->arrDeliv = $objPurchase->getDeliv($cart_key); $this->is_single_deliv = $this->isSingleDeliv($this->arrDeliv); // 会員情報の取得 if ($objCustomer->isLoginSuccess(true)) { $this->tpl_login = '******'; $this->tpl_user_point = $objCustomer->getValue('point'); $this->name01 = $objCustomer->getValue('name01'); $this->name02 = $objCustomer->getValue('name02'); } // 戻り URL の設定 // @deprecated 2.12.0 テンプレート直書きに戻した $this->tpl_back_url = '?mode=return'; $arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid); // 正常に受注情報が格納されていない場合はカート画面へ戻す if (SC_Utils_Ex::isBlank($arrOrderTemp)) { SC_Response_Ex::sendRedirect(CART_URLPATH); SC_Response_Ex::actionExit(); } // カート内商品の妥当性チェック $this->tpl_message = $objCartSess->checkProducts($cart_key); if (strlen($this->tpl_message) >= 1) { SC_Response_Ex::sendRedirect(CART_URLPATH); SC_Response_Ex::actionExit(); } /* * 購入金額の取得 * ここでは送料を加算しない */ $this->arrPrices = $objCartSess->calculate($cart_key, $objCustomer); // お届け日一覧の取得 $this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $cart_key); switch ($this->getMode()) { /* * 配送業者選択時のアクション * モバイル端末以外の場合は, JSON 形式のデータを出力し, ajax で取得する. */ case 'select_deliv': $this->setFormParams($objFormParam, $arrOrderTemp, true, $this->arrShipping); $objFormParam->setParam($_POST); $this->arrErr = $objFormParam->checkError(); if (SC_Utils_Ex::isBlank($this->arrErr)) { $deliv_id = $objFormParam->getValue('deliv_id'); $arrSelectedDeliv = $this->getSelectedDeliv($objPurchase, $objCartSess, $deliv_id); $arrSelectedDeliv['error'] = false; } else { $arrSelectedDeliv = array('error' => true); $this->tpl_mainpage = 'shopping/select_deliv.tpl'; // モバイル用 } if (SC_Display_Ex::detectDevice() != DEVICE_TYPE_MOBILE) { echo SC_Utils_Ex::jsonEncode($arrSelectedDeliv); SC_Response_Ex::actionExit(); } else { $this->arrPayment = $arrSelectedDeliv['arrPayment']; $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; } break; // 登録処理 // 登録処理 case 'confirm': // パラメーター情報の初期化 $this->setFormParams($objFormParam, $_POST, false, $this->arrShipping); $deliv_id = $objFormParam->getValue('deliv_id'); $arrSelectedDeliv = $this->getSelectedDeliv($objPurchase, $objCartSess, $deliv_id); $this->arrPayment = $arrSelectedDeliv['arrPayment']; $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; $this->img_show = $arrSelectedDeliv['img_show']; $this->arrErr = $this->lfCheckError($objFormParam, $this->arrPrices['subtotal'], $this->tpl_user_point); if (empty($this->arrErr)) { $this->saveShippings($objFormParam, $this->arrDelivTime); $this->lfRegistData($this->tpl_uniqid, $objFormParam->getDbArray(), $objPurchase, $this->arrPayment); // 正常に登録されたことを記録しておく $objSiteSess->setRegistFlag(); // 確認ページへ移動 SC_Response_Ex::sendRedirect(SHOPPING_CONFIRM_URLPATH); SC_Response_Ex::actionExit(); } break; // 前のページに戻る // 前のページに戻る case 'return': // 正常な推移であることを記録しておく $objSiteSess->setRegistFlag(); $url = null; if ($this->is_multiple) { $url = MULTIPLE_URLPATH . '?from=multiple'; } elseif ($objCustomer->isLoginSuccess(true)) { if ($product_type_id == PRODUCT_TYPE_DOWNLOAD) { $url = CART_URLPATH; } else { $url = DELIV_URLPATH; } } else { $url = SHOPPING_URL . '?from=nonmember'; } SC_Response_Ex::sendRedirect($url); SC_Response_Ex::actionExit(); break; default: // FIXME 前のページから戻ってきた場合は別パラメーター(mode)で処理分岐する必要があるのかもしれない $this->setFormParams($objFormParam, $arrOrderTemp, false, $this->arrShipping); if (!$this->is_single_deliv) { $deliv_id = $objFormParam->getValue('deliv_id'); } else { $deliv_id = $this->arrDeliv[0]['deliv_id']; } if (!SC_Utils_Ex::isBlank($deliv_id)) { $objFormParam->setValue('deliv_id', $deliv_id); $arrSelectedDeliv = $this->getSelectedDeliv($objPurchase, $objCartSess, $deliv_id); $this->arrPayment = $arrSelectedDeliv['arrPayment']; $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; $this->img_show = $arrSelectedDeliv['img_show']; } break; } // モバイル用 ポストバック処理 if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE && SC_Utils_Ex::isBlank($this->arrErr)) { $this->tpl_mainpage = $this->getMobileMainpage($this->is_single_deliv, $this->getMode()); } $this->arrForm = $objFormParam->getFormParamList(); }
/** * Page のアクション. * * @return void */ function action() { $objDb = new SC_Helper_DB_Ex(); $objFormParam = new SC_FormParam_Ex(); // 入力パラメーター初期化 $this->initParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); switch ($this->getMode()) { // カテゴリ登録/編集実行 case 'edit': $this->doEdit($objFormParam); break; // 入力ボックスへ編集対象のカテゴリ名をセット // 入力ボックスへ編集対象のカテゴリ名をセット case 'pre_edit': $this->doPreEdit($objFormParam); break; // カテゴリ削除 // カテゴリ削除 case 'delete': $this->doDelete($objFormParam, $objDb); break; // 表示順を上へ // 表示順を上へ case 'up': $this->doUp($objFormParam); break; // 表示順を下へ // 表示順を下へ case 'down': $this->doDown($objFormParam); break; // FIXME r19909 によってテンプレートが削除されている // FIXME r19909 によってテンプレートが削除されている case 'moveByDnD': // DnDしたカテゴリと移動先のセットを分解する $keys = explode('-', $_POST['keySet']); if ($keys[0] && $keys[1]) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->begin(); // 移動したデータのrank、level、parent_category_idを取得 $rank = $objQuery->get('rank', 'dtb_category', 'category_id = ?', array($keys[0])); $level = $objQuery->get('level', 'dtb_category', 'category_id = ?', array($keys[0])); $parent = $objQuery->get('parent_category_id', 'dtb_category', 'category_id = ?', array($keys[0])); // 同一level内のrank配列を作成 $objQuery->setOption('ORDER BY rank DESC'); if ($level == 1) { // 第1階層の時 $arrRet = $objQuery->select('rank', 'dtb_category', 'level = ?', array($level)); } else { // 第2階層以下の時 $arrRet = $objQuery->select('rank', 'dtb_category', 'level = ? AND parent_category_id = ?', array($level, $parent)); } for ($i = 0; $i < sizeof($arrRet); $i++) { $rankAry[$i + 1] = $arrRet[$i]['rank']; } // 移動したデータのグループ内データ数 $my_count = $this->lfCountChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $keys[0]); if ($rankAry[$keys[1]] > $rank) { // データが今の位置より上がった時 $up_count = $rankAry[$keys[1]] - $rank; $decAry = $objQuery->select('category_id', 'dtb_category', 'level = ? AND rank > ? AND rank <= ?', array($level, $rank, $rankAry[$keys[1]])); foreach ($decAry as $value) { // 上のグループから減算 $this->lfDownRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $value['category_id'], $my_count); } // 自分のグループに加算 $this->lfUpRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $keys[0], $up_count); } else { if ($rankAry[$keys[1]] < $rank) { // データが今の位置より下がった時 $down_count = 0; $incAry = $objQuery->select('category_id', 'dtb_category', 'level = ? AND rank < ? AND rank >= ?', array($level, $rank, $rankAry[$keys[1]])); foreach ($incAry as $value) { // 下のグループに加算 $this->lfUpRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $value['category_id'], $my_count); // 合計減算値 $down_count += $this->lfCountChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $value['category_id']); } // 自分のグループから減算 $this->lfDownRankChilds($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $keys[0], $down_count); } } $objQuery->commit(); } break; // カテゴリツリークリック時 // カテゴリツリークリック時 case 'tree': break; // CSVダウンロード // CSVダウンロード case 'csv': // CSVを送信する $objCSV = new SC_Helper_CSV_Ex(); $objCSV->sfDownloadCsv('5', '', array(), '', true); SC_Response_Ex::actionExit(); break; default: break; } $parent_category_id = $objFormParam->getValue('parent_category_id'); // 空の場合は親カテゴリを0にする if (empty($parent_category_id)) { $parent_category_id = 0; } // 親カテゴリIDの保持 $this->arrForm['parent_category_id'] = $parent_category_id; // カテゴリ一覧を取得 $this->arrList = $this->findCategoiesByParentCategoryId($parent_category_id); // カテゴリツリーを取得 $this->arrTree = $objDb->sfGetCatTree($parent_category_id); // ぱんくずの生成 $arrBread = array(); $objDb->findTree($this->arrTree, $parent_category_id, $arrBread); $this->tpl_bread_crumbs = SC_Utils_Ex::jsonEncode($arrBread); }
/** * エラーメッセージを JSON 形式で返す. * * TODO リファクタリング * この関数は主にスマートフォンで使用します. * * @param integer エラーコード * @return string JSON 形式のエラーメッセージ * @see LC_PageError */ function lfGetErrorMessage($error) { switch ($error) { case TEMP_LOGIN_ERROR: $msg = "メールアドレスもしくはパスワードが正しくありません。\n本登録がお済みでない場合は、仮登録メールに記載されているURLより本登録を行ってください。"; break; case SITE_LOGIN_ERROR: default: $msg = 'メールアドレスもしくはパスワードが正しくありません。'; } return SC_Utils_Ex::jsonEncode(array('login_error' => $msg)); }
/** * Page のアクション. * * @return void */ function action() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objDb = new SC_Helper_DB_Ex(); $this->tpl_pageno = isset($_POST['pageno']) ? $_POST['pageno'] : ""; // 通常時は親カテゴリを0に設定する。 $this->arrForm['parent_category_id'] = isset($_POST['parent_category_id']) ? $_POST['parent_category_id'] : 0; $this->arrForm['product_id'] = isset($_POST['product_id']) ? $_POST['product_id'] : ''; switch ($this->getMode()) { case 'up': $this->lfRankUp($objDb, $this->arrForm['parent_category_id'], $this->arrForm['product_id']); break; case 'down': $this->lfRankDown($objDb, $this->arrForm['parent_category_id'], $this->arrForm['product_id']); break; case 'move': $this->lfRankMove($objDb, $this->arrForm['parent_category_id'], $this->arrForm['product_id']); break; case 'tree': // カテゴリの切替は、ページ番号をクリアする。 $this->tpl_pageno = ""; break; case 'renumber': $this->lfRenumber($this->arrForm['parent_category_id']); break; default: break; } $this->arrTree = $objDb->sfGetCatTree($this->arrForm['parent_category_id']); $this->arrProductsList = $this->lfGetProduct($this->arrForm['parent_category_id']); $arrBread = array(); $objDb->findTree($this->arrTree, $this->arrForm['parent_category_id'], $arrBread); $this->tpl_bread_crumbs = SC_Utils_Ex::jsonEncode($arrBread); }
/** * エラーメッセージを JSON 形式で返す. * * TODO リファクタリング * この関数は主にスマートフォンで使用します. * * @param integer エラーコード * @return string JSON 形式のエラーメッセージ * @see LC_PageError */ function lfGetErrorMessage($error) { switch ($error) { case TEMP_LOGIN_ERROR: $msg = t('c_The e-mail address or password is not correct.If you have not completed registration, access the registration page from the URL given to you in an e-mail._01'); break; case SITE_LOGIN_ERROR: default: $msg = t('c_The e-mail address or password is not correct._01'); } return SC_Utils_Ex::jsonEncode(array('login_error' => $msg)); }
/** * Page のアクション. * * @return void */ public function action() { $objDb = new SC_Helper_DB_Ex(); $objCategory = new SC_Helper_Category_Ex(); $this->tpl_pageno = isset($_POST['pageno']) ? $_POST['pageno'] : ''; // 通常時は親カテゴリを0に設定する。 $this->arrForm['parent_category_id'] = isset($_POST['parent_category_id']) ? $_POST['parent_category_id'] : 0; $this->arrForm['product_id'] = isset($_POST['product_id']) ? $_POST['product_id'] : ''; switch ($this->getMode()) { case 'up': $this->lfRankUp($objDb, $this->arrForm['parent_category_id'], $this->arrForm['product_id']); break; case 'down': $this->lfRankDown($objDb, $this->arrForm['parent_category_id'], $this->arrForm['product_id']); break; case 'move': $this->lfRankMove($objDb, $this->arrForm['parent_category_id'], $this->arrForm['product_id']); break; case 'tree': // カテゴリの切替は、ページ番号をクリアする。 $this->tpl_pageno = ''; break; case 'renumber': $this->lfRenumber($this->arrForm['parent_category_id']); break; default: break; } $this->arrTree = $objCategory->getTree(); $this->arrParentID = $objCategory->getTreeTrail($this->arrForm['parent_category_id']); $this->arrProductsList = $this->lfGetProduct($this->arrForm['parent_category_id']); $arrBread = $objCategory->getTreeTrail($this->arrForm['parent_category_id'], FALSE); $this->tpl_bread_crumbs = SC_Utils_Ex::jsonEncode(array_reverse($arrBread)); }
/** * 表示用フォームパラメーター取得 * - 確認画面 * * @param object $objUpFile SC_UploadFileインスタンス * @param object $objDownFile SC_UploadFileインスタンス * @param array $arrForm フォーム入力パラメーター配列 * @return array 表示用フォームパラメーター配列 */ function lfSetViewParam_ConfirmPage(&$objUpFile, &$objDownFile, &$arrForm) { // カテゴリ表示用 $arrForm['arrCategoryId'] = $arrForm['category_id']; // hidden に渡す値は serialize する $arrForm['category_id'] = SC_Utils_Ex::jsonEncode($arrForm['category_id']); // 画像ファイル用データ取得 $arrForm['arrFile'] = $objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH); // ダウンロード商品実ファイル名取得 $arrForm['down_realfilename'] = $objDownFile->getFormDownFile(); return $arrForm; }
public function sendResponseJson($response_outer_name, &$arrResponse) { if (isset($arrResponse["callback"])) { $callback = $arrResponse["callback"]; unset($arrResponse["callback"]); header('Content-Type: application/javascript; charset=UTF-8'); $arrResponse['response_name'] = $response_outer_name; echo $callback . "(" . SC_Utils_Ex::jsonEncode($arrResponse) . ")"; } else { header('Content-Type: application/json; charset=UTF-8'); $arrResponse['response_name'] = $response_outer_name; echo SC_Utils_Ex::jsonEncode($arrResponse); } }
/** * 現在の階層のパスをテンプレートに渡す * * @param SC_FormParam $objFormParam SC_FormParamインスタンス * @return void */ function setDispPath($objFormParam) { $tpl_now_dir = ""; // Windows 環境で DIRECTORY_SEPARATOR が JavaScript に渡るとエスケープ文字と勘違いするので置換 $html_realdir = str_replace(DIRECTORY_SEPARATOR, '/', HTML_REALDIR); $arrNowDir = preg_split('/\\//', str_replace($html_realdir, '', $objFormParam->getValue('now_dir'))); $this->setDispParam('tpl_now_dir', SC_Utils_Ex::jsonEncode($arrNowDir)); $this->setDispParam('tpl_file_path', $html_realdir); }
public function sendResponseJson($response_outer_name, &$arrResponse) { header('Content-Type: application/json; charset=UTF-8'); $arrResponse['response_name'] = $response_outer_name; echo SC_Utils_Ex::jsonEncode($arrResponse); }
function lfMakeSelect() { return 'fnSetClassCategories(' . 'document.form1, ' . SC_Utils_Ex::jsonEncode($this->objFormParam->getValue('classcategory_id2')) . '); '; }
/** * Page のアクション. * * @return void */ function action() { // 管理者ログインテンプレートフレームの設定 $this->setTemplate("addproduct/plg_AddProduct_addproduct_login_frame.tpl"); // プラグインが有効化されている事を確認 $objQuery =& SC_Query_Ex::getSingletonInstance(); $enable = $objQuery->getOne("SELECT enable FROM dtb_plugin WHERE plugin_code = 'AddProduct'"); if ($enable != PLUGIN_ENABLE_TRUE) { if ($this->getMode() === 'login') { $this->arrErr['password'] = '******'; // JSONを出力 echo SC_Utils_Ex::jsonEncode(array('login_error' => join("\r\n", $this->arrErr))); SC_Response_Ex::actionExit(); } else { $this->arrErr['title'] = 'エラー'; $this->arrErr['msg'] = 'プラグインが有効化されていません'; $this->tpl_mainpage = 'addproduct/plg_AddProduct_error.tpl'; return; } } // パラメーター管理クラス $objFormParam = new SC_FormParam_Ex(); switch ($this->getMode()) { case 'login': //ログイン処理 $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $this->arrErr = $this->lfCheckError($objFormParam); if (SC_Utils_Ex::isBlank($this->arrErr)) { // アクセス用トークンを保存 $arrMember = $this->lfDoLogin($objFormParam->getValue('login_id')); $arrToken['token_id'] = $arrMember['token_id']; $arrToken['member_id'] = $arrMember['member_id']; $arrToken['appli_id'] = $objFormParam->getValue('apid'); $arrToken['onetime_key'] = SC_Helper_Session_Ex::createToken(); // トランザクションIDは重複する場合があるので、こちらも新規生成する様にした(アクセストークン表示用のワンタイムキーとして) $this->insertTokenData($arrToken); // JSONを出力 echo SC_Utils_Ex::jsonEncode(array('success' => 'plg_AddProduct_login.php?mode=done&' . TRANSACTION_ID_NAME . '=' . $arrToken['onetime_key'])); SC_Response_Ex::actionExit(); } else { // ログイン失敗時に遅延させる(ブルートフォースアタック対策) sleep(LOGIN_RETRY_INTERVAL); // JSONを出力 echo SC_Utils_Ex::jsonEncode(array('login_error' => join("\r\n", $this->arrErr))); SC_Response_Ex::actionExit(); } break; case 'done': // トークン表示 $this->lfInitParam($objFormParam); $objFormParam->setParam($_GET); if ($objFormParam->getValue(TRANSACTION_ID_NAME) === '') { $this->arrErr['title'] = 'パラメーターエラー'; $this->arrErr['msg'] = 'パラメーターが正しく設定されていません'; $this->tpl_mainpage = 'addproduct/plg_AddProduct_error.tpl'; } else { $this->tpl_token_id = $this->getToken($objFormParam->getValue(TRANSACTION_ID_NAME)); $this->tpl_mainpage = 'addproduct/plg_AddProduct_done.tpl'; } break; default: $this->lfInitParam($objFormParam); $objFormParam->setParam($_GET); if ($objFormParam->getValue('apid') === '') { $this->arrErr['title'] = 'パラメーターエラー'; $this->arrErr['msg'] = 'パラメーターが正しく設定されていません'; $this->tpl_mainpage = 'addproduct/plg_AddProduct_error.tpl'; } break; } }
/** * 規格クラス用JavaScript生成 * @param SC_Product $objProduct */ function getTplJavascript(&$objProduct) { return 'productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . '; '; }
/** * エラーメッセージを整形し, JSON 形式で返す. * * @param array $arrErr エラーメッセージの配列 * @return string JSON 形式のエラーメッセージ */ function lfGetErrors($arrErr) { $messages = ''; foreach ($arrErr as $val) { $messages .= $val . "\n"; } return SC_Utils_Ex::jsonEncode(array('error' => $messages)); }
/** * Page のAction. * * @return void */ function action() { $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getValue('customer_id'); $objAddress = new SC_Helper_Address_Ex(); $objFormParam = new SC_FormParam_Ex(); $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); switch ($this->getMode()) { // お届け先の削除 case 'delete': if ($objFormParam->checkError()) { SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); SC_Response_Ex::actionExit(); } $objAddress->deleteAddress($objFormParam->getValue('other_deliv_id')); break; // スマートフォン版のもっと見るボタン用 // スマートフォン版のもっと見るボタン用 case 'getList': $arrData = $objFormParam->getHashArray(); //別のお届け先情報 $arrOtherDeliv = $objAddress->getList($customer_id, ($arrData['pageno'] - 1) * SEARCH_PMAX); //県名をセット $arrOtherDeliv = $this->setPref($arrOtherDeliv, $this->arrPref); $arrOtherDeliv['delivCount'] = count($arrOtherDeliv); $this->arrOtherDeliv = $arrOtherDeliv; echo SC_Utils_Ex::jsonEncode($this->arrOtherDeliv); SC_Response_Ex::actionExit(); break; // お届け先の表示 // お届け先の表示 default: break; } //別のお届け先情報 $this->arrOtherDeliv = $objAddress->getList($customer_id); //お届け先登録数 $this->tpl_linemax = count($this->arrOtherDeliv); // 1ページあたりの件数 $this->dispNumber = SEARCH_PMAX; }
/** * Page のAction. * * @return void */ function action() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objProduct = new SC_Product_Ex(); $this->arrForm = $_REQUEST; //時間が無いのでコレで勘弁してください。 tao_s //modeの取得 $this->mode = $this->getMode(); //表示条件の取得 $this->arrSearchData = array('category_id' => $this->lfGetCategoryId(intval($this->arrForm['category_id'])), 'maker_id' => intval($this->arrForm['maker_id']), 'name' => $this->arrForm['name']); $this->orderby = $this->arrForm['orderby']; //ページング設定 $this->tpl_pageno = $this->arrForm['pageno']; $this->disp_number = $this->lfGetDisplayNum($this->arrForm['disp_number']); // 画面に表示するサブタイトルの設定 $this->tpl_subtitle = $this->lfGetPageTitle($this->mode, $this->arrSearchData['category_id']); // 画面に表示する検索条件を設定 $this->arrSearch = $this->lfGetSearchConditionDisp($this->arrSearchData); // 商品一覧データの取得 $arrSearchCondition = $this->lfGetSearchCondition($this->arrSearchData); $this->tpl_linemax = $this->lfGetProductAllNum($arrSearchCondition); $urlParam = "category_id={$this->arrSearchData['category_id']}&pageno=#page#"; $this->objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $this->tpl_linemax, $this->disp_number, 'fnNaviPage', NAVI_PMAX, $urlParam, SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE); $this->arrProducts = $this->lfGetProductsList($arrSearchCondition, $this->disp_number, $this->objNavi->start_row, $this->tpl_linemax, $objProduct); switch ($this->getMode()) { case "json": $this->arrProducts = $this->setStatusDataTo($this->arrProducts, $this->arrSTATUS, $this->arrSTATUS_IMAGE); $this->arrProducts = $objProduct->setPriceTaxTo($this->arrProducts); // 一覧メイン画像の指定が無い商品のための処理 foreach ($this->arrProducts as $key => $val) { $this->arrProducts[$key]['main_list_image'] = SC_Utils_Ex::sfNoImageMainList($val['main_list_image']); } echo SC_Utils_Ex::jsonEncode($this->arrProducts); exit; break; default: //商品一覧の表示処理 $strnavi = $this->objNavi->strnavi; // 表示文字列 $this->tpl_strnavi = empty($strnavi) ? " " : $strnavi; // 規格1クラス名 $this->tpl_class_name1 = $objProduct->className1; // 規格2クラス名 $this->tpl_class_name2 = $objProduct->className2; // 規格1 $this->arrClassCat1 = $objProduct->classCats1; // 規格1が設定されている $this->tpl_classcat_find1 = $objProduct->classCat1_find; // 規格2が設定されている $this->tpl_classcat_find2 = $objProduct->classCat2_find; $this->tpl_stock_find = $objProduct->stock_find; $this->tpl_product_class_id = $objProduct->product_class_id; $this->tpl_product_type = $objProduct->product_type; // 商品ステータスを取得 $this->productStatus = $this->arrProducts['productStatus']; unset($this->arrProducts['productStatus']); $this->tpl_javascript .= 'var productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . ';'; //onloadスクリプトを設定. 在庫ありの商品のみ出力する foreach ($this->arrProducts as $arrProduct) { if ($arrProduct['stock_unlimited_max'] || $arrProduct['stock_max'] > 0) { $js_fnOnLoad .= "fnSetClassCategories(document.product_form{$arrProduct['product_id']});"; } } //カート処理 $target_product_id = intval($this->arrForm['product_id']); if ($target_product_id > 0) { // 商品IDの正当性チェック if (!SC_Utils_Ex::sfIsInt($this->arrForm['product_id']) || !SC_Helper_DB_Ex::sfIsRecord("dtb_products", "product_id", $this->arrForm['product_id'], "del_flg = 0 AND status = 1")) { SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND); } // 入力内容のチェック $arrErr = $this->lfCheckError($target_product_id, $this->arrForm, $this->tpl_classcat_find1, $this->tpl_classcat_find2); if (empty($arrErr)) { $this->lfAddCart($this->arrForm, $_SERVER['HTTP_REFERER']); SC_Response_Ex::sendRedirect(CART_URLPATH); exit; } $js_fnOnLoad .= $this->lfSetSelectedData($this->arrProducts, $this->arrForm, $arrErr, $target_product_id); } else { // カート「戻るボタン」用に保持 $netURL = new Net_URL(); //該当メソッドが無いため、$_SESSIONに直接セット $_SESSION['cart_referer_url'] = $netURL->getURL(); } $this->tpl_javascript .= 'function fnOnLoad(){' . $js_fnOnLoad . '}'; $this->tpl_onload .= 'fnOnLoad(); '; break; } $this->tpl_rnd = SC_Utils_Ex::sfGetRandomString(3); }