[Svn-src-all:1464] [version-2_5-dev 20356] #974 [管理画面]システム設定 管理画面設定リファクタリング

homan admin @ mail.ec-cube.net
2011年 2月 23日 (水) 21:28:01 JST


Subversion committed to /home/svn/open 20356
http://svn.ec-cube.net/open_trac/changeset/20356
┌────────────────────────────┐
│更新者 :  homan                                        │
│更新日時:  2011-02-23 21:28:01 +0900 (水, 23  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#974 [管理画面]システム設定 管理画面設定リファクタリング

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_AdminArea.php

変更: branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_AdminArea.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_AdminArea.php	2011-02-23 11:09:28 UTC (rev 20355)
+++ branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_AdminArea.php	2011-02-23 12:28:01 UTC (rev 20356)
@@ -49,9 +49,6 @@
         $this->tpl_mainno = 'adminarea';
         $this->tpl_subtitle = '管理画面設定';
         $this->tpl_enable_ssl = FALSE;
-        if(strpos(HTTPS_URL,"https://") !== FALSE){
-            $this->tpl_enable_ssl = TRUE;
-        }
     }
 
     /**
@@ -70,33 +67,48 @@
      * @return void
      */
     function action() {
-        if(count($_POST) >= 1 ) {
-            // POSTデータの引き継ぎ
-            $this->arrForm = $_POST;
 
-            // 入力データの変換
-            $this->arrForm = $this->lfConvertParam($this->arrForm);
-            // 入力データのエラーチェック
-            $this->arrErr = $this->lfErrorCheck($this->arrForm);
+
+        if(strpos(HTTPS_URL,"https://") !== FALSE){
+            $this->tpl_enable_ssl = TRUE;
+        }
+
+        $objFormParam = new SC_FormParam;
+
+        // パラメータの初期化
+        $this->initParam($objFormParam, $_POST);
+
+        if(count($_POST) > 0 ) {
+
+            // エラーチェック
+            $arrErr = $objFormParam->checkError();
+
+            $this->arrForm = $objFormParam->getHashArray();
+
             //設定ファイルの権限チェック
             if(!is_writable(CONFIG_REALFILE)){
-                $this->arrErr["all"] = CONFIG_REALFILE . ' を変更する権限がありません。';
+                $arrErr["all"] = CONFIG_REALFILE . ' を変更する権限がありません。';
             }
+
             //管理画面ディレクトリのチェック
-            $this->lfCheckAdminArea($this->arrForm);
+            $this->lfCheckAdminArea($this->arrForm, $arrErr);
 
-            if(count($this->arrErr) == 0) {
+            if(SC_Utils_Ex::isBlank($arrErr)) {
                 $this->lfUpdateAdminData($this->arrForm);	// 既存編集
                 $this->tpl_onload = "window.alert('管理機能の設定を変更しました。URLを変更した場合は、新しいURLにアクセスしてください。');";
             }else{
-                $this->tpl_onload = "window.alert('設定内容に誤りがあります。設定内容を確認してください。');";                
+                $this->tpl_onload = "window.alert('設定内容に誤りがあります。設定内容を確認してください。');";
+                $this->arrErr = $arrErr;
             }
+
         } else {
+
             $admin_dir = str_replace("/","",ADMIN_DIR);
             $this->arrForm = array("admin_dir"=>$admin_dir,"admin_force_ssl"=>ADMIN_FORCE_SSL,"admin_allow_hosts"=>"");
             if(defined("ADMIN_ALLOW_HOSTS")){
                 $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS);
                 $this->arrForm["admin_allow_hosts"] = implode("\n",$allow_hosts);
+
             }
         }
     }
@@ -109,23 +121,46 @@
     function destroy() {
         parent::destroy();
     }
-    
-    
-    
-    //管理機能ディレクトリのチェック
-    function lfCheckAdminArea($array){
-        $admin_dir = trim($array['admin_dir'])."/";
 
+
+    /**
+     * パラメータ初期化.
+     *
+     * @param object $objFormParam
+     * @param array  $arrParams  $_POST値
+     * @return void
+     */
+    function initParam(&$objFormParam, &$arrParams) {
+
+        $objFormParam->addParam('ディレクトリ名', 'admin_dir', ID_MAX_LEN, 'a', array('EXIST_CHECK', 'SPTAB_CHECK', 'ALNUM_CHECK'));
+        $objFormParam->addParam('SSL制限', 'admin_force_ssl', 1, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+        $objFormParam->addParam('IP制限', 'admin_allow_hosts', LTEXT_LEN, 'a', array('IP_CHECK', 'MAX_LENGTH_CHECK'));
+        $objFormParam->setParam($arrParams);
+        $objFormParam->convParam();
+
+    }
+
+
+    /**
+     * 管理機能ディレクトリのチェック.
+     *
+     * @param array  $arrForm  $this->arrForm値
+     * @param array  $arrErr   エラーがあった項目用配列
+     * @return void
+     */
+    function lfCheckAdminArea(&$arrForm, &$arrErr){
+        $admin_dir = trim($arrForm['admin_dir'])."/";
+
         $installData = file(CONFIG_REALFILE, FILE_IGNORE_NEW_LINES);
         foreach($installData as $key=>$line){
             if(strpos($line,"ADMIN_DIR") !== false and ADMIN_DIR != $admin_dir){
                 //既存ディレクトリのチェック
                 if(file_exists(HTML_REALDIR.$admin_dir) and $admin_dir != "admin/"){
-                    $this->arrErr["admin_dir"] .= ROOT_URLPATH.$admin_dir."は既に存在しています。別のディレクトリ名を指定してください。";
+                    $arrErr["admin_dir"] .= ROOT_URLPATH.$admin_dir."は既に存在しています。別のディレクトリ名を指定してください。";
                 }
                 //権限チェック
                 if(!is_writable(HTML_REALDIR . ADMIN_DIR)){
-                    $this->arrErr["admin_dir"] .= ROOT_URLPATH.ADMIN_DIR."のディレクトリ名を変更する権限がありません。";
+                    $arrErr["admin_dir"] .= ROOT_URLPATH.ADMIN_DIR."のディレクトリ名を変更する権限がありません。";
                 }
             }
         }
@@ -133,13 +168,13 @@
 
     
     //管理機能ディレクトリのリネームと CONFIG_REALFILE の変更
-    function lfUpdateAdminData($array){
-        $admin_dir = trim($array['admin_dir'])."/";
+    function lfUpdateAdminData(&$arrForm){
+        $admin_dir = trim($arrForm['admin_dir'])."/";
         $admin_force_ssl = "FALSE";
-        if($array['admin_force_ssl'] == 1){
+        if($arrForm['admin_force_ssl'] == 1){
             $admin_force_ssl = "TRUE";
         }
-        $admin_allow_hosts = explode("\n",$array['admin_allow_hosts']);
+        $admin_allow_hosts = explode("\n",$arrForm['admin_allow_hosts']);
         foreach($admin_allow_hosts as $key=>$host){
             $host = trim($host);
             if(strlen($host) >= 8){
@@ -180,30 +215,5 @@
         }
         return true;
     }
-
-    /* 取得文字列の変換 */
-    function lfConvertParam($array) {
-        /*
-         *	文字列の変換
-         *	K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
-         *	C :  「全角ひら仮名」を「全角かた仮名」に変換
-         *	V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
-         *	n :  「全角」数字を「半角(ハンカク)」に変換
-         *  a :  全角英数字を半角英数字に変換する
-         */
-        $arrConvList = array('admin_dir'=>"a",'admin_force_ssl' => "n",'admin_allow_hosts' => "a");
-        return SC_Utils_Ex::mbConvertKanaWithArray($array, $arrConvList);
-    }
-
-    // 入力エラーチェック
-    function lfErrorCheck($array) {
-        $objErr = new SC_CheckError($array);
-
-        //管理機能設定チェック
-        $objErr->doFunc(array('ディレクトリ名', "admin_dir", ID_MAX_LEN) ,array("EXIST_CHECK","SPTAB_CHECK", "ALNUM_CHECK"));
-        $objErr->doFunc(array('SSL制限', "admin_force_ssl", 1) ,array("NUM_CHECK", "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array('IP制限', "admin_allow_hosts", LTEXT_LEN) ,array("IP_CHECK", "MAX_LENGTH_CHECK"));
-        return $objErr->arrErr;
-    }
 }
 ?>




Svn-src-all メーリングリストの案内