[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 メーリングリストの案内