Ignore:
Timestamp:
2011/02/22 10:47:25 (13 years ago)
Author:
AMUAMU
Message:

#476 (CSV出力項目設定(高度な設定)で、一部テーブルの項目一覧が表示されない) に伴う改修
#657 (CSVダウンロードの改善) の改修
#938 (CSV出力 高度な設定 SQL登録できない) の不具合修正
#939 (CSV出力 高度な設定 出力操作で「sfGetCSVData()に移行してね。」と表示) の不具合修正
#971 (リファクタリング [管理画面]コンテンツ管理(CSV出力項目設定)) の改修

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_CSV.php

    r20116 r20318  
    4848        $this->tpl_subnavi = 'contents/subnavi.tpl'; 
    4949        $this->tpl_subno = 'csv'; 
    50  
    5150        $this->tpl_mainno = "contents"; 
    5251        $this->tpl_subtitle = 'CSV出力設定'; 
     52 
     53        $objCSV = new SC_Helper_CSV_Ex(); 
     54        $this->arrSubnavi = $objCSV->arrSubnavi; // 別名 
     55        $this->tpl_subno_csv = $objCSV->arrSubnavi[1]; //デフォルト 
     56        $this->arrSubnaviName = $objCSV->arrSubnaviName; // 表示名 
    5357    } 
    5458 
     
    6973     */ 
    7074    function action() { 
    71         $objSess = new SC_Session(); 
    72         $objCSV = new SC_Helper_CSV_Ex(); 
    73  
    74         $this->arrSubnavi = $objCSV->arrSubnavi; 
    75         $this->tpl_subno_csv = $objCSV->arrSubnavi[1]; 
    76         $this->arrSubnaviName = $objCSV->arrSubnaviName; 
    77  
    7875        // 認証可否の判定 
    79         $objSess = new SC_Session(); 
    80         SC_Utils_Ex::sfIsSuccess($objSess); 
    81  
    82         $get_tpl_subno_csv = isset($_GET['tpl_subno_csv']) 
    83                                      ? $_GET['tpl_subno_csv'] : ""; 
    84  
    85         // GETで値が送られている場合にはその値を元に画面表示を切り替える 
    86         if ($get_tpl_subno_csv != ""){ 
    87             // 送られてきた値が配列に登録されていなければTOPを表示 
    88             if (in_array($get_tpl_subno_csv,$this->arrSubnavi)){ 
    89                 $subno_csv = $get_tpl_subno_csv; 
    90             }else{ 
    91                 $subno_csv = $this->arrSubnavi[1]; 
    92             } 
    93         } else { 
    94             // GETで値がなければPOSTの値を使用する 
    95             if (isset($_POST['tpl_subno_csv']) 
    96                 && $_POST['tpl_subno_csv'] != "") { 
    97  
    98                 $subno_csv = $_POST['tpl_subno_csv']; 
    99             }else{ 
    100                 $subno_csv = $this->arrSubnavi[1]; 
    101             } 
    102         } 
    103  
    104         // subnoの番号を取得 
    105         $subno_id = array_keys($this->arrSubnavi,$subno_csv); 
    106         $subno_id = $subno_id[0]; 
    107  
    108         // データの登録 
     76        SC_Utils_Ex::sfIsSuccess(new SC_Session()); 
     77 
     78        // 不正アクセスチェック  
     79        if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     80            if (!SC_Helper_Session_Ex::isValidToken()) { 
     81                SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR); 
     82            } 
     83        } 
     84        // トランザクションID 
     85        $this->transactionid = SC_Helper_Session_Ex::getToken(); 
     86 
     87        // パラメータ管理クラス 
     88        $objFormParam = new SC_FormParam(); 
     89        // パラメータ設定 
     90        $this->lfInitParam($objFormParam); 
     91        $objFormParam->setParam($_POST); 
     92        $objFormParam->setParam($_GET); 
     93        $objFormParam->convParam(); 
     94 
     95        // CSV_IDの読み込み 
     96        $this->tpl_subno_csv = $objFormParam->getValue('tpl_subno_csv'); 
     97        $this->tpl_csv_id = $this->lfGetCsvId($this->tpl_subno_csv); 
     98 
    10999        switch ($this->getMode()) { 
    110100        case 'confirm': 
    111             // エラーチェック 
    112             $this->arrErr = $this->lfCheckError($_POST['output_list']); 
    113  
    114             if (count($this->arrErr) <= 0){ 
    115                 // データの更新 
    116                 $this->lfUpdCsvOutput($subno_id, $_POST['output_list']); 
    117  
    118                 // 画面のリロード 
    119                 $this->objDisplay->reload(array("tpl_subno_csv" => $subno_csv)); 
    120             } 
     101            // 入力パラメーターチェック 
     102            $this->arrErr = $objFormParam->checkError(); 
     103            if(SC_Utils_Ex::isBlank($this->arrErr)) { 
     104                // 更新 
     105                $this->tpl_is_update = $this->lfUpdCsvOutput($this->tpl_csv_id, $objFormParam->getValue('output_list')); 
     106            } 
     107            break; 
     108        case 'defaultset': 
     109            //初期値に戻す 
     110            $this->tpl_is_update = $this->lfSetDefaultCsvOutput($this->tpl_csv_id); 
    121111            break; 
    122112        default: 
    123113            break; 
    124114        } 
    125  
    126         // 出力項目の取得 
    127         $arrSelected = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput($subno_id, 'status = 1')); 
    128  
    129         if (!isset($arrSelected['no'])) $arrSelected['no'] = array(); 
    130  
    131         $this->arrSelected = $arrSelected['no']; 
    132  
    133         // 全項目の取得 
    134         $arrOptions = SC_Utils_Ex::sfSwapArray($objCSV->sfGetCsvOutput($subno_id)); 
    135  
    136         if (!isset($arrOptions['no'])) $arrOptions['no'] = array(); 
    137         if (!isset($arrOptions['disp_name'])) $arrOptions['disp_name'] = array(); 
    138  
    139         $arrOptions = SC_Utils_Ex::sfarrCombine($arrOptions['no'], $arrOptions['disp_name']); 
    140  
    141         $this->arrOptions = $arrOptions; 
    142  
    143         $this->SubnaviName = $this->arrSubnaviName[$subno_id]; 
    144         $this->tpl_subno_csv = $subno_csv; 
     115        $this->arrSelected = $this->lfGetSelected($this->tpl_csv_id); 
     116        $this->arrOptions = $this->lfGetOptions($this->tpl_csv_id); 
     117        $this->tpl_subtitle .= ' - ' . $this->arrSubnaviName[ $this->tpl_csv_id ]; 
     118    } 
     119 
     120    /** 
     121     * パラメーター情報の初期化 
     122     * 
     123     * @param array $objFormParam フォームパラメータークラス 
     124     * @return void 
     125     */ 
     126    function lfInitParam(&$objFormParam) { 
     127        $objFormParam->addParam('編集種別', 'tpl_subno_csv', STEXT_LEN, 'a', array("ALNUM_CHECK", "MAX_LENGTH_CHECK"), 'product'); 
     128        $objFormParam->addParam('出力設定リスト', 'output_list', INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK", "EXIST_CHECK")); 
     129        //デフォルト値で上書き 
     130        $objFormParam->setParam(array('tpl_subno_csv' => 'product')); 
     131    } 
     132 
     133    /** 
     134     * CSVカラム設定の読み込み 
     135     * 
     136     * @param integer $csv_id CSV ID 
     137     * @param integer $csv_status_flg 読み込む対象のフラグ CSV_COLUMN_STATUS_FLG_ENABLE or '' 
     138     * @return array SwapArrayしたカラム設定 
     139     */ 
     140    function lfGetCSVColumn($csv_id, $csv_status_flg = '', $order ='rank, no') { 
     141        $objCSV = new SC_Helper_CSV_Ex(); 
     142        if(SC_Utils_Ex::sfIsInt($csv_id)) { 
     143            if($csv_status_flg !="") { 
     144                $arrData = $objCSV->sfGetCsvOutput($csv_id, 'status = ?' , array($csv_status_flg), $order); 
     145            }else{ 
     146                $arrData = $objCSV->sfGetCsvOutput($csv_id, '', array(), $order); 
     147            } 
     148            $arrData = SC_Utils_Ex::sfSwapArray($arrData); 
     149        }else{ 
     150            $arrData = array(); 
     151        } 
     152        return $arrData; 
     153    } 
     154 
     155    /** 
     156     * 選択済みカラム列情報を取得 
     157     * 
     158     * @param integer $csv_id CSV ID 
     159     * @return array 選択済みカラム列情報 
     160     */ 
     161    function lfGetSelected($csv_id) { 
     162        $arrData = $this->lfGetCSVColumn($csv_id, CSV_COLUMN_STATUS_FLG_ENABLE); 
     163        if (!isset($arrData['no'])) { 
     164            $arrData['no'] = array(); 
     165        } 
     166        return $arrData['no']; 
     167    } 
     168 
     169    /** 
     170     * カラム列情報と表示名情報を取得 
     171     * 
     172     * @param integer $csv_id CSV ID 
     173     * @return array 選択済みカラム列情報 
     174     */ 
     175    function lfGetOptions($csv_id) { 
     176        $arrData = $this->lfGetCSVColumn($csv_id); 
     177        if (!isset($arrData['no'])) { 
     178            $arrData['no'] = array(); 
     179            $arrData['disp_name'] = array(); 
     180        } 
     181        $arrData = SC_Utils_Ex::sfArrCombine($arrData['no'], $arrData['disp_name']); 
     182        return $arrData; 
    145183    } 
    146184 
     
    154192    } 
    155193 
     194    /** 
     195     * CSV名からCSV_IDを取得する。 
     196     * 
     197     * @param string $subno_csv CSV名 
     198     * @return integer CSV_ID 
     199     */ 
     200    function lfGetCsvId($subno_csv) { 
     201        $objCSV = new SC_Helper_CSV_Ex(); 
     202        $arrKey = array_keys($objCSV->arrSubnavi,$subno_csv); 
     203        $csv_id = $arrKey[0]; 
     204        if(!SC_Utils_Ex::sfIsInt($csv_id)) { 
     205            //初期値取りだし 
     206            $arrKey = array_keys($objCSV->arrSubnavi); 
     207            $csv_id = $arrKey[0]; 
     208        } 
     209        return $csv_id; 
     210    } 
     211 
     212    /** 
     213     * CSV出力項目設定を初期化する 
     214     * 
     215     * @param integer $csv_id CSV_ID 
     216     * @return boolean 成功:true 
     217     */ 
     218    function lfSetDefaultCsvOutput($csv_id) { 
     219        $arrData = $this->lfGetCSVColumn($csv_id, '', $order = 'no'); 
     220        if (!isset($arrData['no'])) { 
     221            $arrData['no'] = array(); 
     222        } 
     223        return $this->lfUpdCsvOutput($csv_id, $arrData['no']); 
     224    } 
     225 
     226    /** 
     227     * CSV出力項目設定を更新する処理 
     228     * 
     229     * @param integer $csv_id CSV_ID 
     230     * @param array $arrData 有効にするCSV列データ配列 
     231     * @return boolean 成功:true 
     232     */ 
    156233    function lfUpdCsvOutput($csv_id, $arrData = array()){ 
    157         $objQuery = new SC_Query(); 
    158  
     234        $objQuery =& SC_Query::getSingletonInstance(); 
    159235        // ひとまず、全部使用しないで更新する 
    160         $upd_sql = "UPDATE dtb_csv SET status = 2, rank = NULL, update_date = now() WHERE csv_id = ?"; 
    161         $objQuery->query($upd_sql, array($csv_id)); 
    162  
     236        $table = "dtb_csv"; 
     237        $where = "csv_id = ?"; 
     238        $arrWhereVal = array($csv_id); 
     239        $arrUpdVal = array( 'status' => '2', 'rank' => NULL, 'update_date' => 'now()' ); 
     240 
     241        $objQuery->begin(); 
     242        $objQuery->update($table, $arrUpdVal, $where, $arrWhereVal); 
    163243        // 使用するものだけ、再更新する。 
    164244        if (is_array($arrData)) { 
     245            $where .= " AND no = ?"; 
     246            $arrUpdVal = array('status' => '1'); 
    165247            foreach($arrData as $key => $val){ 
    166                 $upd_sql = "UPDATE dtb_csv SET status = 1, rank = ? WHERE csv_id = ? AND no = ? "; 
    167                 $objQuery->query($upd_sql, array($key+1, $csv_id, $val)); 
    168             } 
    169         } 
    170     } 
    171  
    172     Function Lfcheckerror($data){ 
    173         $objErr = new SC_CheckError(); 
    174         $objErr->doFunc( array("出力項目", "output_list"), array("EXIST_CHECK") ); 
    175  
    176         return $objErr->arrErr; 
    177  
     248                $arrWhereVal = array($csv_id, $val); 
     249                $arrUpdVal['rank'] = $key + 1; 
     250                $objQuery->update($table, $arrUpdVal, $where, $arrWhereVal); 
     251            } 
     252        } 
     253        $objQuery->commit(); 
     254        return true; 
    178255    } 
    179256} 
Note: See TracChangeset for help on using the changeset viewer.