Changeset 20330


Ignore:
Timestamp:
2011/02/23 00:11:00 (10 years ago)
Author:
homan
Message:

#974 [管理画面]システム設定 マスターデータコミット

File:
1 edited

Legend:

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

    r20116 r20330  
    7777        case "edit": 
    7878            // POST 文字列の妥当性チェック 
    79             $this->checkMasterDataName(); 
    80             $this->errorMessage = $this->checkUniqueID(); 
     79            $this->masterDataName = $this->checkMasterDataName($_POST, $this->arrMasterDataName); 
     80            $this->errorMessage = $this->checkUniqueID($_POST); 
    8181 
    8282            if (empty($this->errorMessage)) { 
    8383                // 取得したデータからマスタデータを生成 
    84                 $arrData = array(); 
    85                 foreach ($_POST['id'] as $key => $val) { 
    86  
    87                     // ID が空のデータは生成しない 
    88                     if ($val != "") { 
    89                         $arrData[$val] = $_POST['name'][$key]; 
    90                     } 
    91                 } 
    92  
    93                 // マスタデータを更新 
    94                 $masterData->objQuery = new SC_Query(); 
    95                 $masterData->objQuery->begin(); 
    96                 $masterData->deleteMasterData($this->masterDataName, false); 
    97                 // TODO カラム名はメタデータから取得した方が良い 
    98                 $masterData->registMasterData($this->masterDataName, 
    99                                               array("id", "name", "rank"), 
    100                                               $arrData, false); 
    101                 $masterData->objQuery->commit(); 
     84                $this->registMasterData($_POST, $masterData, $this->masterDataName); 
    10285                $this->tpl_onload = "window.alert('マスタデータの設定が完了しました。');"; 
    10386            } 
     
    10588        case "show": 
    10689            // POST 文字列の妥当性チェック 
    107             $this->checkMasterDataName(); 
     90            $this->masterDataName = $this->checkMasterDataName($_POST, $this->arrMasterDataName); 
    10891 
    10992            // DB からマスタデータを取得 
     
    129112     * 
    130113     * @access private 
    131      * @return void 
    132      */ 
    133     function checkMasterDataName() { 
    134  
    135         if (in_array($_POST['master_data_name'], $this->arrMasterDataName)) { 
    136             $this->masterDataName = $_POST['master_data_name']; 
    137             return true; 
     114     * @param array $_POST値 
     115     * @param array $arrMasterDataName  マスターデータテーブル名のリスト 
     116     * @return string $master_data_name 選択しているマスターデータのテーブル名 
     117     */ 
     118    function checkMasterDataName(&$arrParams, &$arrMasterDataName) { 
     119 
     120        if (in_array($arrParams['master_data_name'], $arrMasterDataName)) { 
     121            $master_data_name = $arrParams['master_data_name']; 
     122            return $master_data_name; 
    138123        } else { 
    139124            SC_Utils_Ex::sfDispeError(""); 
    140125        } 
     126 
    141127    } 
    142128 
     
    172158     * @return void|string エラーが発生した場合はエラーメッセージを返す. 
    173159     */ 
    174     function checkUniqueID() { 
    175  
    176         $arrId = $_POST['id']; 
     160    function checkUniqueID(&$arrParams) { 
     161 
     162        $arrId = $arrParams['id']; 
    177163        for ($i = 0; $i < count($arrId); $i++) { 
    178164 
     
    188174        } 
    189175    } 
     176 
     177 
     178    /** 
     179     * マスターデータの登録. 
     180     * 
     181     * @access private{ 
     182     * @param array  $arrParams $_POST値 
     183     * @param object $masterData SC_DB_MasterData_Ex() 
     184     * @param string $master_data_name 登録対象のマスターデータのテーブル名 
     185     * @return void 
     186     */ 
     187    function registMasterData($arrParams, &$masterData, $master_data_name) { 
     188 
     189        $arrTmp = array(); 
     190        foreach ($arrParams['id'] as $key => $val) { 
     191 
     192            // ID が空のデータは生成しない 
     193            if ($val != "") { 
     194                $arrTmp[$val] = $arrParams['name'][$key]; 
     195            } 
     196        } 
     197 
     198        // マスタデータを更新 
     199        $masterData->objQuery =& SC_Query::getSingletonInstance(); 
     200        $masterData->objQuery->begin(); 
     201        $masterData->deleteMasterData($master_data_name, false); 
     202        // TODO カラム名はメタデータから取得した方が良い 
     203        $masterData->registMasterData($master_data_name, 
     204                                             array("id", "name", "rank"), 
     205                                             $arrTmp, false); 
     206        $masterData->objQuery->commit(); 
     207 
     208    } 
    190209} 
    191210?> 
Note: See TracChangeset for help on using the changeset viewer.