Exemple #1
0
 /**
  * Page のAction.
  *
  * @return void
  */
 public function action()
 {
     /* @var $objCustomer Customer */
     $objCustomer = Application::alias('eccube.customer');
     if (!Utils::sfIsInt($_GET['send_id'])) {
         Utils::sfDispSiteError(CUSTOMER_ERROR);
     }
     $arrMailView = $this->lfGetMailView($_GET['send_id'], $objCustomer->getValue('customer_id'));
     if (empty($arrMailView)) {
         Utils::sfDispSiteError(CUSTOMER_ERROR);
     }
     $this->tpl_subject = $arrMailView[0]['subject'];
     $this->tpl_body = $arrMailView[0]['mail_body'];
     if (Application::alias('eccube.display')->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 Utils::jsonEncode($arrMailView);
             Application::alias('eccube.response')->actionExit();
             break;
         default:
             break;
     }
 }
Exemple #2
0
 /**
  * Page のAction.
  *
  * @return void
  */
 public function action()
 {
     /* @var $objCustomer Customer */
     $objCustomer = Application::alias('eccube.customer');
     $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);
             Application::alias('eccube.product')->setPriceTaxTo($this->arrFavorite);
             // 一覧メイン画像の指定が無い商品のための処理
             foreach ($this->arrFavorite as $key => $val) {
                 $this->arrFavorite[$key]['main_list_image'] = Utils::sfNoImageMainList($val['main_list_image']);
             }
             echo Utils::jsonEncode($this->arrFavorite);
             Application::alias('eccube.response')->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;
 }
Exemple #3
0
 /**
  * エラーメッセージを JSON 形式で返す.
  *
  * TODO リファクタリング
  * この関数は主にスマートフォンで使用します.
  *
  * @param integer エラーコード
  * @return string JSON 形式のエラーメッセージ
  * @see LC_PageError
  */
 public function lfGetErrorMessage($error)
 {
     switch ($error) {
         case TEMP_LOGIN_ERROR:
             $msg = "メールアドレスもしくはパスワードが正しくありません。\n本登録がお済みでない場合は、仮登録メールに記載されているURLより本登録を行ってください。";
             break;
         case SITE_LOGIN_ERROR:
         default:
             $msg = 'メールアドレスもしくはパスワードが正しくありません。';
     }
     return Utils::jsonEncode(array('login_error' => $msg));
 }
Exemple #4
0
 /**
  * Page のAction.
  *
  * @return void
  */
 public function action()
 {
     //決済処理中ステータスのロールバック
     /* @var $objPurchase PurchaseHelper */
     $objPurchase = Application::alias('eccube.helper.purchase');
     $objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG);
     /* @var $objCustomer Customer */
     $objCustomer = Application::alias('eccube.customer');
     $customer_id = $objCustomer->getValue('customer_id');
     //ページ送り用
     /* @var $objNavi PageNavi */
     $this->objNavi = Application::alias('eccube.page_navi', $_REQUEST['pageno'], $this->lfGetOrderHistory($customer_id), SEARCH_PMAX, 'eccube.movePage', NAVI_PMAX, 'pageno=#page#', Application::alias('eccube.display')->detectDevice() !== DEVICE_TYPE_MOBILE);
     $this->arrOrder = $this->lfGetOrderHistory($customer_id, $this->objNavi->start_row);
     switch ($this->getMode()) {
         case 'getList':
             echo Utils::jsonEncode($this->arrOrder);
             Application::alias('eccube.response')->actionExit();
             break;
         default:
             break;
     }
     // 支払い方法の取得
     $this->arrPayment = Application::alias('eccube.helper.payment')->getIDValueList();
     // 1ページあたりの件数
     $this->dispNumber = SEARCH_PMAX;
     $this->json_payment = Utils::jsonEncode($this->arrPayment);
     $this->json_customer_order_status = Utils::jsonEncode($this->arrCustomerOrderStatus);
 }
Exemple #5
0
 public function lfMakeSelect()
 {
     return 'fnSetClassCategories(' . 'document.form1, ' . Utils::jsonEncode($this->objFormParam->getValue('classcategory_id2')) . '); ';
 }
 /**
  * 表示用フォームパラメーター取得
  * - 確認画面
  *
  * @param  UploadFile $objUpFile   UploadFileインスタンス
  * @param  UploadFile $objDownFile UploadFileインスタンス
  * @param  array  $arrForm     フォーム入力パラメーター配列
  * @return array  表示用フォームパラメーター配列
  */
 public function lfSetViewParam_ConfirmPage(&$objUpFile, &$objDownFile, &$arrForm)
 {
     // カテゴリ表示用
     $arrForm['arrCategoryId'] = $arrForm['category_id'];
     // hidden に渡す値は serialize する
     $arrForm['category_id'] = Utils::jsonEncode($arrForm['category_id']);
     // 画像ファイル用データ取得
     $arrForm['arrFile'] = $objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH);
     // ダウンロード商品実ファイル名取得
     $arrForm['down_realfilename'] = $objDownFile->getFormDownFile();
     return $arrForm;
 }
 /**
  *
  * @param  Product $objProduct
  * @param FormParam $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;
     $js_fnOnLoad = '';
     // 商品ステータスを取得
     $this->productStatus = $this->arrProducts['productStatus'];
     unset($this->arrProducts['productStatus']);
     $this->tpl_javascript .= 'eccube.productsClassCategories = ' . Utils::jsonEncode($objProduct->classCategories) . ';';
     if (Application::alias('eccube.display')->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 (!Utils::sfIsInt($this->arrForm['product_id']) || !Application::alias('eccube.helper.db')->isRecord('dtb_products', 'product_id', $this->arrForm['product_id'], 'del_flg = 0 AND status = 1')) {
             Utils::sfDispSiteError(PRODUCT_NOT_FOUND);
         }
         // 入力内容のチェック
         $arrErr = $this->lfCheckError($objFormParam);
         if (empty($arrErr)) {
             $this->lfAddCart($this->arrForm);
             // 開いているカテゴリーツリーを維持するためのパラメーター
             $arrQueryString = array('category_id' => $this->arrForm['category_id']);
             Application::alias('eccube.response')->sendRedirect(CART_URL, $arrQueryString);
             Application::alias('eccube.response')->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(); ';
 }
Exemple #8
0
 /**
  * @param string $response_outer_name
  */
 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 . "(" . Utils::jsonEncode($arrResponse) . ")";
     } else {
         header('Content-Type: application/json; charset=UTF-8');
         $arrResponse['response_name'] = $response_outer_name;
         echo Utils::jsonEncode($arrResponse);
     }
 }
Exemple #9
0
 /**
  * エラーメッセージを整形し, JSON 形式で返す.
  *
  * @param  array  $arrErr エラーメッセージの配列
  * @return string JSON 形式のエラーメッセージ
  */
 public function lfGetErrors($arrErr)
 {
     $messages = '';
     foreach ($arrErr as $val) {
         $messages .= $val . "\n";
     }
     return Utils::jsonEncode(array('error' => $messages));
 }
Exemple #10
0
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     //決済処理中ステータスのロールバック
     /* @var $objPurchase PurchaseHelper */
     $objPurchase = Application::alias('eccube.helper.purchase');
     $objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG);
     /* @var $objSiteSess SiteSession */
     $objSiteSess = Application::alias('eccube.site_session');
     /* @var $objCartSess CartSession */
     $objCartSess = Application::alias('eccube.cart_session');
     /* @var $objCustomer Customer */
     $objCustomer = Application::alias('eccube.customer');
     $objFormParam = Application::alias('eccube.form_param');
     /* @var $objDelivery DeliveryHelper */
     $objDelivery = Application::alias('eccube.helper.delivery');
     $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 = $objDelivery->getList($cart_key);
     $this->is_single_deliv = $this->isSingleDeliv($this->arrDeliv);
     $this->is_download = $this->cartKey == PRODUCT_TYPE_DOWNLOAD;
     // 会員情報の取得
     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 (Utils::isBlank($arrOrderTemp)) {
         Application::alias('eccube.response')->sendRedirect(CART_URL);
         Application::alias('eccube.response')->actionExit();
     }
     // カート内商品の妥当性チェック
     $this->tpl_message = $objCartSess->checkProducts($cart_key);
     if (strlen($this->tpl_message) >= 1) {
         Application::alias('eccube.response')->sendRedirect(CART_URL);
         Application::alias('eccube.response')->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 (Utils::isBlank($this->arrErr)) {
                 $deliv_id = $objFormParam->getValue('deliv_id');
                 $arrSelectedDeliv = $this->getSelectedDeliv($objCartSess, $deliv_id);
                 $arrSelectedDeliv['error'] = false;
             } else {
                 $arrSelectedDeliv = array('error' => true);
                 $this->tpl_mainpage = 'shopping/select_deliv.tpl';
                 // モバイル用
             }
             if (Application::alias('eccube.display')->detectDevice() != DEVICE_TYPE_MOBILE) {
                 echo Utils::jsonEncode($arrSelectedDeliv);
                 Application::alias('eccube.response')->actionExit();
             } else {
                 $this->arrPayment = $arrSelectedDeliv['arrPayment'];
                 $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime'];
             }
             break;
             // 登録処理
         // 登録処理
         case 'confirm':
             // パラメーター情報の初期化
             $this->setFormParams($objFormParam, $_POST, $this->is_download, $this->arrShipping);
             $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();
                 // 確認ページへ移動
                 Application::alias('eccube.response')->sendRedirect(SHOPPING_CONFIRM_URLPATH);
                 Application::alias('eccube.response')->actionExit();
             } else {
                 $deliv_id = $objFormParam->getValue('deliv_id');
                 if (strval($deliv_id) !== strval(intval($deliv_id))) {
                     $deliv_id = $this->arrDeliv[0]['deliv_id'];
                     $objFormParam->setValue('deliv_id', $deliv_id);
                 }
                 $arrSelectedDeliv = $this->getSelectedDeliv($objCartSess, $deliv_id);
                 $this->arrPayment = $arrSelectedDeliv['arrPayment'];
                 $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime'];
                 $this->img_show = $arrSelectedDeliv['img_show'];
             }
             break;
             // 前のページに戻る
         // 前のページに戻る
         case 'return':
             // 正常な推移であることを記録しておく
             $objSiteSess->setRegistFlag();
             $url = null;
             if ($this->is_multiple) {
                 $url = MULTIPLE_URLPATH . '?from=multiple';
             } elseif ($objCustomer->isLoginSuccess(true)) {
                 if ($this->cartKey == PRODUCT_TYPE_DOWNLOAD) {
                     $url = CART_URL;
                 } else {
                     $url = DELIV_URLPATH;
                 }
             } else {
                 $url = SHOPPING_URL . '?from=nonmember';
             }
             Application::alias('eccube.response')->sendRedirect($url);
             Application::alias('eccube.response')->actionExit();
             break;
         default:
             // FIXME 前のページから戻ってきた場合は別パラメーター(mode)で処理分岐する必要があるのかもしれない
             $this->setFormParams($objFormParam, $arrOrderTemp, $this->is_download, $this->arrShipping);
             if (!$this->is_single_deliv) {
                 $deliv_id = $objFormParam->getValue('deliv_id');
             } else {
                 $deliv_id = $this->arrDeliv[0]['deliv_id'];
             }
             if (!Utils::isBlank($deliv_id)) {
                 $objFormParam->setValue('deliv_id', $deliv_id);
                 $arrSelectedDeliv = $this->getSelectedDeliv($objCartSess, $deliv_id);
                 $this->arrPayment = $arrSelectedDeliv['arrPayment'];
                 $this->arrDelivTime = $arrSelectedDeliv['arrDelivTime'];
                 $this->img_show = $arrSelectedDeliv['img_show'];
             }
             break;
     }
     // モバイル用 ポストバック処理
     if (Application::alias('eccube.display')->detectDevice() == DEVICE_TYPE_MOBILE && Utils::isBlank($this->arrErr)) {
         $this->tpl_mainpage = $this->getMobileMainpage($this->is_single_deliv, $this->getMode());
     }
     $this->arrForm = $objFormParam->getFormParamList();
 }
Exemple #11
0
 /**
  * 現在の階層のパスをテンプレートに渡す
  *
  * @param  FormParam $objFormParam FormParamインスタンス
  * @return void
  */
 public function setDispPath($objFormParam)
 {
     // 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', Utils::jsonEncode($arrNowDir));
     $this->setDispParam('tpl_file_path', $html_realdir);
 }
Exemple #12
0
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     /* @var $objDb DbHelper */
     $objDb = Application::alias('eccube.helper.db');
     /* @var $objCategory CategoryHelper */
     $objCategory = Application::alias('eccube.helper.category');
     $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 = Utils::jsonEncode(array_reverse($arrBread));
 }
 /**
  * 規格クラス用JavaScript生成
  * @param Product $objProduct
  */
 public function getTplJavascript(Product &$objProduct)
 {
     return 'eccube.productsClassCategories = ' . Utils::jsonEncode($objProduct->classCategories) . '; ';
 }
Exemple #14
0
 /**
  * Page のAction.
  *
  * @return void
  */
 public function action()
 {
     /* @var $objCustomer Customer */
     $objCustomer = Application::alias('eccube.customer');
     $customer_id = $objCustomer->getValue('customer_id');
     /* @var $objAddress AddressHelper */
     $objAddress = Application::alias('eccube.helper.address');
     /* @var $objFormParam FormParam */
     $objFormParam = Application::alias('eccube.form_param');
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     switch ($this->getMode()) {
         // お届け先の削除
         case 'delete':
             if ($objFormParam->checkError()) {
                 Utils::sfDispSiteError(CUSTOMER_ERROR);
                 Application::alias('eccube.response')->actionExit();
             }
             if (!$objAddress->deleteAddress($objFormParam->getValue('other_deliv_id'), $customer_id)) {
                 Utils::sfDispSiteError(FREE_ERROR_MSG, '', false, '別のお届け先を削除できませんでした。');
                 Application::alias('eccube.response')->actionExit();
             }
             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 Utils::jsonEncode($this->arrOtherDeliv);
             Application::alias('eccube.response')->actionExit();
             break;
             // お届け先の表示
         // お届け先の表示
         default:
             break;
     }
     //別のお届け先情報
     $this->arrOtherDeliv = $objAddress->getList($customer_id);
     //お届け先登録数
     $this->tpl_linemax = count($this->arrOtherDeliv);
     // 1ページあたりの件数
     $this->dispNumber = SEARCH_PMAX;
 }
Exemple #15
0
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     $objFormParam = Application::alias('eccube.form_param');
     /* @var $objCategory CategoryHelper */
     $objCategory = Application::alias('eccube.helper.category');
     // 入力パラメーター初期化
     $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);
             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 = Application::alias('eccube.query');
                 $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);
                 } elseif ($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を送信する
             /* @var $objCSV CsvHelper */
             $objCSV = Application::alias('eccube.helper.csv');
             $objCSV->sfDownloadCsv('5', '', array(), '', true);
             Application::alias('eccube.response')->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->arrTree = $objCategory->getTree(true);
     $this->arrParentID = $objCategory->getTreeTrail($parent_category_id);
     // カテゴリ一覧を取得
     $this->arrList = $objCategory->getTreeBranch($parent_category_id);
     // ぱんくずの生成
     $arrBread = $objCategory->getTreeTrail($this->arrForm['parent_category_id'], FALSE);
     $this->tpl_bread_crumbs = Utils::jsonEncode(array_reverse($arrBread));
 }