Changeset 20356


Ignore:
Timestamp:
2011/02/23 21:28:01 (13 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_AdminArea.php

    r20345 r20356  
    5050        $this->tpl_subtitle = '管理画面設定'; 
    5151        $this->tpl_enable_ssl = FALSE; 
    52         if(strpos(HTTPS_URL,"https://") !== FALSE){ 
    53             $this->tpl_enable_ssl = TRUE; 
    54         } 
    5552    } 
    5653 
     
    7168     */ 
    7269    function action() { 
    73         if(count($_POST) >= 1 ) { 
    74             // POSTデータの引き継ぎ 
    75             $this->arrForm = $_POST; 
    76  
    77             // 入力データの変換 
    78             $this->arrForm = $this->lfConvertParam($this->arrForm); 
    79             // 入力データのエラーチェック 
    80             $this->arrErr = $this->lfErrorCheck($this->arrForm); 
     70 
     71 
     72        if(strpos(HTTPS_URL,"https://") !== FALSE){ 
     73            $this->tpl_enable_ssl = TRUE; 
     74        } 
     75 
     76        $objFormParam = new SC_FormParam; 
     77 
     78        // パラメータの初期化 
     79        $this->initParam($objFormParam, $_POST); 
     80 
     81        if(count($_POST) > 0 ) { 
     82 
     83            // エラーチェック 
     84            $arrErr = $objFormParam->checkError(); 
     85 
     86            $this->arrForm = $objFormParam->getHashArray(); 
     87 
    8188            //設定ファイルの権限チェック 
    8289            if(!is_writable(CONFIG_REALFILE)){ 
    83                 $this->arrErr["all"] = CONFIG_REALFILE . ' を変更する権限がありません。'; 
    84             } 
     90                $arrErr["all"] = CONFIG_REALFILE . ' を変更する権限がありません。'; 
     91            } 
     92 
    8593            //管理画面ディレクトリのチェック 
    86             $this->lfCheckAdminArea($this->arrForm); 
    87  
    88             if(count($this->arrErr) == 0) { 
     94            $this->lfCheckAdminArea($this->arrForm, $arrErr); 
     95 
     96            if(SC_Utils_Ex::isBlank($arrErr)) { 
    8997                $this->lfUpdateAdminData($this->arrForm);   // 既存編集 
    9098                $this->tpl_onload = "window.alert('管理機能の設定を変更しました。URLを変更した場合は、新しいURLにアクセスしてください。');"; 
    9199            }else{ 
    92                 $this->tpl_onload = "window.alert('設定内容に誤りがあります。設定内容を確認してください。');";                 
    93             } 
     100                $this->tpl_onload = "window.alert('設定内容に誤りがあります。設定内容を確認してください。');"; 
     101                $this->arrErr = $arrErr; 
     102            } 
     103 
    94104        } else { 
     105 
    95106            $admin_dir = str_replace("/","",ADMIN_DIR); 
    96107            $this->arrForm = array("admin_dir"=>$admin_dir,"admin_force_ssl"=>ADMIN_FORCE_SSL,"admin_allow_hosts"=>""); 
     
    98109                $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS); 
    99110                $this->arrForm["admin_allow_hosts"] = implode("\n",$allow_hosts); 
     111 
    100112            } 
    101113        } 
     
    110122        parent::destroy(); 
    111123    } 
    112      
    113      
    114      
    115     //管理機能ディレクトリのチェック 
    116     function lfCheckAdminArea($array){ 
    117         $admin_dir = trim($array['admin_dir'])."/"; 
     124 
     125 
     126    /** 
     127     * パラメータ初期化. 
     128     * 
     129     * @param object $objFormParam 
     130     * @param array  $arrParams  $_POST値 
     131     * @return void 
     132     */ 
     133    function initParam(&$objFormParam, &$arrParams) { 
     134 
     135        $objFormParam->addParam('ディレクトリ名', 'admin_dir', ID_MAX_LEN, 'a', array('EXIST_CHECK', 'SPTAB_CHECK', 'ALNUM_CHECK')); 
     136        $objFormParam->addParam('SSL制限', 'admin_force_ssl', 1, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     137        $objFormParam->addParam('IP制限', 'admin_allow_hosts', LTEXT_LEN, 'a', array('IP_CHECK', 'MAX_LENGTH_CHECK')); 
     138        $objFormParam->setParam($arrParams); 
     139        $objFormParam->convParam(); 
     140 
     141    } 
     142 
     143 
     144    /** 
     145     * 管理機能ディレクトリのチェック. 
     146     * 
     147     * @param array  $arrForm  $this->arrForm値 
     148     * @param array  $arrErr   エラーがあった項目用配列 
     149     * @return void 
     150     */ 
     151    function lfCheckAdminArea(&$arrForm, &$arrErr){ 
     152        $admin_dir = trim($arrForm['admin_dir'])."/"; 
    118153 
    119154        $installData = file(CONFIG_REALFILE, FILE_IGNORE_NEW_LINES); 
     
    122157                //既存ディレクトリのチェック 
    123158                if(file_exists(HTML_REALDIR.$admin_dir) and $admin_dir != "admin/"){ 
    124                     $this->arrErr["admin_dir"] .= ROOT_URLPATH.$admin_dir."は既に存在しています。別のディレクトリ名を指定してください。"; 
     159                    $arrErr["admin_dir"] .= ROOT_URLPATH.$admin_dir."は既に存在しています。別のディレクトリ名を指定してください。"; 
    125160                } 
    126161                //権限チェック 
    127162                if(!is_writable(HTML_REALDIR . ADMIN_DIR)){ 
    128                     $this->arrErr["admin_dir"] .= ROOT_URLPATH.ADMIN_DIR."のディレクトリ名を変更する権限がありません。"; 
     163                    $arrErr["admin_dir"] .= ROOT_URLPATH.ADMIN_DIR."のディレクトリ名を変更する権限がありません。"; 
    129164                } 
    130165            } 
     
    134169     
    135170    //管理機能ディレクトリのリネームと CONFIG_REALFILE の変更 
    136     function lfUpdateAdminData($array){ 
    137         $admin_dir = trim($array['admin_dir'])."/"; 
     171    function lfUpdateAdminData(&$arrForm){ 
     172        $admin_dir = trim($arrForm['admin_dir'])."/"; 
    138173        $admin_force_ssl = "FALSE"; 
    139         if($array['admin_force_ssl'] == 1){ 
     174        if($arrForm['admin_force_ssl'] == 1){ 
    140175            $admin_force_ssl = "TRUE"; 
    141176        } 
    142         $admin_allow_hosts = explode("\n",$array['admin_allow_hosts']); 
     177        $admin_allow_hosts = explode("\n",$arrForm['admin_allow_hosts']); 
    143178        foreach($admin_allow_hosts as $key=>$host){ 
    144179            $host = trim($host); 
     
    181216        return true; 
    182217    } 
    183  
    184     /* 取得文字列の変換 */ 
    185     function lfConvertParam($array) { 
    186         /* 
    187          *  文字列の変換 
    188          *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換 
    189          *  C :  「全角ひら仮名」を「全角かた仮名」に変換 
    190          *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します 
    191          *  n :  「全角」数字を「半角(ハンカク)」に変換 
    192          *  a :  全角英数字を半角英数字に変換する 
    193          */ 
    194         $arrConvList = array('admin_dir'=>"a",'admin_force_ssl' => "n",'admin_allow_hosts' => "a"); 
    195         return SC_Utils_Ex::mbConvertKanaWithArray($array, $arrConvList); 
    196     } 
    197  
    198     // 入力エラーチェック 
    199     function lfErrorCheck($array) { 
    200         $objErr = new SC_CheckError($array); 
    201  
    202         //管理機能設定チェック 
    203         $objErr->doFunc(array('ディレクトリ名', "admin_dir", ID_MAX_LEN) ,array("EXIST_CHECK","SPTAB_CHECK", "ALNUM_CHECK")); 
    204         $objErr->doFunc(array('SSL制限', "admin_force_ssl", 1) ,array("NUM_CHECK", "MAX_LENGTH_CHECK")); 
    205         $objErr->doFunc(array('IP制限', "admin_allow_hosts", LTEXT_LEN) ,array("IP_CHECK", "MAX_LENGTH_CHECK")); 
    206         return $objErr->arrErr; 
    207     } 
    208218} 
    209219?> 
Note: See TracChangeset for help on using the changeset viewer.