/**
  * 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;
     }
 }
Beispiel #2
0
/**
 * モジュールリスト一覧をjson出力する
 *
 */
function displayProductsList()
{
    $arrRet = array('status' => 'SUCCESS', 'data' => $GLOBALS['productsList']);
    // FIXME 一覧を取得するたびに更新されるのは微妙かも..
    updateModuleTable($GLOBALS['productsList']);
    echo SC_Utils_Ex::jsonEncode($arrRet);
}
Beispiel #3
0
 /**
  * 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) ? "&nbsp;" : $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);
 }