/**
  * 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);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objDb = new SC_Helper_DB_Ex();
     $objFormParam = new SC_FormParam_Ex();
     $objProduct = new SC_Product_Ex();
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     // パラメーター情報の初期化
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $this->arrHidden = $objFormParam->getSearchArray();
     $this->arrForm = $objFormParam->getFormParamList();
     switch ($this->getMode()) {
         case 'delete':
             // 商品、子テーブル(商品規格)、会員お気に入り商品の削除
             $this->doDelete('product_id = ?', array($objFormParam->getValue('product_id')));
             // 件数カウントバッチ実行
             $objDb->sfCountCategory($objQuery);
             $objDb->sfCountMaker($objQuery);
             // 削除後に検索結果を表示するため breakしない
             // 検索パラメーター生成後に処理実行するため breakしない
         // 削除後に検索結果を表示するため breakしない
         // 検索パラメーター生成後に処理実行するため breakしない
         case 'csv':
         case 'delete_all':
         case 'search':
             $objFormParam->convParam();
             $objFormParam->trimParam();
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrParam = $objFormParam->getHashArray();
             if (count($this->arrErr) == 0) {
                 $where = 'del_flg = 0';
                 $arrWhereVal = array();
                 foreach ($arrParam as $key => $val) {
                     if ($val == '') {
                         continue;
                     }
                     $this->buildQuery($key, $where, $arrWhereVal, $objFormParam, $objDb);
                 }
                 $order = 'update_date DESC';
                 /* -----------------------------------------------
                  * 処理を実行
                  * ----------------------------------------------- */
                 switch ($this->getMode()) {
                     // CSVを送信する。
                     case 'csv':
                         $objCSV = new SC_Helper_CSV_Ex();
                         // CSVを送信する。正常終了の場合、終了。
                         $objCSV->sfDownloadCsv(1, $where, $arrWhereVal, $order, true);
                         SC_Response_Ex::actionExit();
                         // 全件削除(ADMIN_MODE)
                     // 全件削除(ADMIN_MODE)
                     case 'delete_all':
                         $this->doDelete($where, $arrWhereVal);
                         break;
                         // 検索実行
                     // 検索実行
                     default:
                         // 行数の取得
                         $this->tpl_linemax = $this->getNumberOfLines($where, $arrWhereVal);
                         // ページ送りの処理
                         $page_max = SC_Utils_Ex::sfGetSearchPageMax($objFormParam->getValue('search_page_max'));
                         // ページ送りの取得
                         $objNavi = new SC_PageNavi_Ex($this->arrHidden['search_pageno'], $this->tpl_linemax, $page_max, 'fnNaviSearchPage', NAVI_PMAX);
                         $this->arrPagenavi = $objNavi->arrPagenavi;
                         // 検索結果の取得
                         $this->arrProducts = $this->findProducts($where, $arrWhereVal, $page_max, $objNavi->start_row, $order, $objProduct);
                         // 各商品ごとのカテゴリIDを取得
                         if (count($this->arrProducts) > 0) {
                             foreach ($this->arrProducts as $key => $val) {
                                 $this->arrProducts[$key]['categories'] = $objDb->sfGetCategoryId($val['product_id'], 0, true);
                                 $objDb->g_category_on = false;
                             }
                         }
                 }
             }
             break;
     }
     // カテゴリの読込
     list($this->arrCatKey, $this->arrCatVal) = $objDb->sfGetLevelCatList(false);
     $this->arrCatList = $this->lfGetIDName($this->arrCatKey, $this->arrCatVal);
 }
 /**
  * CSV データを構築して取得する.
  *
  * 構築に成功した場合は, ファイル名と出力内容を配列で返す.
  * 構築に失敗した場合は, false を返す.
  *
  * @param string $where 検索条件の WHERE 句
  * @param array $arrVal 検索条件のパラメーター
  * @param string $order 検索結果の並び順
  * @return void
  */
 function doOutputCSV($where, $arrVal, $order)
 {
     if ($where != '') {
         $where = " WHERE {$where} ";
     }
     $objCSV = new SC_Helper_CSV_Ex();
     $objCSV->sfDownloadCsv('3', $where, $arrVal, $order, true);
 }
 /**
  * CSV ファイル出力実行
  *
  * @param string $where WHERE文
  * @param array $arrval WHERE文の判定値
  * @return void
  */
 function lfDoOutputCsv($where, $arrVal)
 {
     $objCSV = new SC_Helper_CSV_Ex();
     if ($where != "") {
         $where = "WHERE " . $where;
     }
     $objCSV->sfDownloadCsv("4", $where, $arrVal, "", true);
 }
 /**
  * CSV データを構築して取得する.
  *
  * 構築に成功した場合は, ファイル名と出力内容を配列で返す.
  * 構築に失敗した場合は, false を返す.
  *
  * @param string $where 検索条件の WHERE 句
  * @param array $arrVal 検索条件のパラメーター
  * @param string $order 検索結果の並び順
  * @return void
  */
 function doOutputCSV($where, $arrVal, $order)
 {
     require_once CLASS_EX_REALDIR . 'helper_extends/SC_Helper_CSV_Ex.php';
     if ($where != "") {
         $where = " WHERE {$where} ";
     }
     $objCSV = new SC_Helper_CSV_Ex();
     $objCSV->sfDownloadCsv("3", $where, $arrVal, $order, true);
 }
 /**
  * 会員一覧CSVを検索してダウンロードする処理
  *
  * @param  array   $arrParam 検索パラメーター連想配列
  * @return boolean|string true:成功 false:失敗
  */
 public function lfDoCSV($arrParam)
 {
     $objSelect = new SC_CustomerList_Ex($arrParam, 'customer');
     $objCSV = new SC_Helper_CSV_Ex();
     $order = 'update_date DESC, customer_id DESC';
     list($where, $arrVal) = $objSelect->getWhere();
     return $objCSV->sfDownloadCsv('2', $where, $arrVal, $order, true);
 }
 /**
  * CSV データを構築して取得する.
  *
  * 構築に成功した場合は, ファイル名と出力内容を配列で返す.
  * 構築に失敗した場合は, false を返す.
  *
  * @param  string $where  検索条件の WHERE 句
  * @param  array  $arrVal 検索条件のパラメーター
  * @param  string $order  検索結果の並び順
  * @return void
  */
 public function doOutputCSV($where, $arrVal, $order)
 {
     $objCSV = new SC_Helper_CSV_Ex();
     $objCSV->sfDownloadCsv('3', $where, $arrVal, $order, true);
 }
 /**
  * CSV ファイル出力実行
  *
  * @param  string $where       WHERE文
  * @param  array  $arrWhereVal WHERE文の判定値
  * @return void
  */
 public function lfDoOutputCsv($where, $arrWhereVal)
 {
     $objCSV = new SC_Helper_CSV_Ex();
     $objCSV->sfDownloadCsv('4', $where, $arrWhereVal, '', true);
 }
 /**
  * CSV ファイル出力実行
  *
  * @param string $where WHERE文
  * @param array $arrWhereVal WHERE文の判定値
  * @return void
  */
 function lfDoOutputCsv($where, $arrWhereVal)
 {
     $objCSV = new SC_Helper_CSV_Ex();
     if ($where != '') {
         $where = 'WHERE ' . $where;
     }
     $objCSV->sfDownloadCsv('4', $where, $arrWhereVal, '', true);
 }
 function doSearchCsv(SC_Query $objQuery, SC_FormParam &$objFormParam)
 {
     if (!SC_Utils_Ex::isBlank($this->arrErr)) {
         return;
     }
     $objSql = new SC_DeviceAndroidSelect_Ex($objFormParam->getHashArray());
     $objCsv = new SC_Helper_CSV_Ex();
     $objCsv->sfDownloadCsv("7", $objSql->getWhere(false), $objSql->arrWhereVal, "device_id", true);
 }
 /**
  * 顧客一覧CSVを検索してダウンロードする処理
  *
  * @param array $arrParam 検索パラメーター連想配列
  * @return boolean true:成功 false:失敗
  */
 function lfDoCSV($arrParam)
 {
     $objSelect = new SC_CustomerList_Ex($arrParam, 'customer');
     $order = "update_date DESC, customer_id DESC";
     require_once CLASS_EX_REALDIR . 'helper_extends/SC_Helper_CSV_Ex.php';
     $objCSV = new SC_Helper_CSV_Ex();
     list($where, $arrVal) = $objSelect->getWhere();
     return $objCSV->sfDownloadCsv('2', $where, $arrVal, $order, true);
 }