Page
[ class tree: Page ] [ index: Page ] [ all elements ]

Source for file LC_Page_Admin_System_AdminArea.php

Documentation is available at LC_Page_Admin_System_AdminArea.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. // {{{ requires
  25. require_once CLASS_EX_REALDIR 'page_extends/admin/LC_Page_Admin_Ex.php';
  26.  
  27. /**
  28.  * 店舗基本情報 のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id: LC_Page_Admin_System_AdminArea.php 20970 2011-06-10 10:27:24Z Seasoft $
  33.  */
  34. class LC_Page_Admin_System_AdminArea extends LC_Page_Admin_Ex {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_mainpage 'system/adminarea.tpl';
  47.         $this->tpl_subno 'adminarea';
  48.         $this->tpl_mainno 'system';
  49.         $this->tpl_maintitle 'システム設定';
  50.         $this->tpl_subtitle '管理画面設定';
  51.         $this->tpl_enable_ssl FALSE;
  52.     }
  53.  
  54.     /**
  55.      * Page のプロセス.
  56.      *
  57.      * @return void 
  58.      */
  59.     function process({
  60.         $this->action();
  61.         $this->sendResponse();
  62.     }
  63.  
  64.     /**
  65.      * Page のアクション.
  66.      *
  67.      * @return void 
  68.      */
  69.     function action({
  70.  
  71.         if(strpos(HTTPS_URL,"https://"!== FALSE){
  72.             $this->tpl_enable_ssl TRUE;
  73.         }
  74.  
  75.         $objFormParam new SC_FormParam;
  76.  
  77.         // パラメーターの初期化
  78.         $this->initParam($objFormParam$_POST);
  79.  
  80.         if(count($_POST{
  81.  
  82.             // エラーチェック
  83.             $arrErr $objFormParam->checkError();
  84.  
  85.             $this->arrForm $objFormParam->getHashArray();
  86.  
  87.             //設定ファイルの権限チェック
  88.             if(!is_writable(CONFIG_REALFILE)){
  89.                 $arrErr['all'CONFIG_REALFILE ' を変更する権限がありません。';
  90.             }
  91.  
  92.             //管理画面ディレクトリのチェック
  93.             $this->lfCheckAdminArea($this->arrForm$arrErr);
  94.  
  95.             if(SC_Utils_Ex::isBlank($arrErr&& $this->lfUpdateAdminData($this->arrForm)) {
  96.                
  97.                 $this->tpl_onload "window.alert('管理機能の設定を変更しました。URLを変更した場合は、新しいURLにアクセスしてください。');";
  98.             }else{
  99.                 $this->tpl_onload "window.alert('設定内容に誤りがあります。設定内容を確認してください。');";
  100.                 $this->arrErr array_merge($arrErr$this->arrErr);
  101.             }
  102.  
  103.         else {
  104.  
  105.             $admin_dir str_replace("/","",ADMIN_DIR);
  106.             $this->arrForm array("admin_dir"=>$admin_dir,"admin_force_ssl"=>ADMIN_FORCE_SSL,"admin_allow_hosts"=>"");
  107.             if(defined("ADMIN_ALLOW_HOSTS")){
  108.                 $allow_hosts unserialize(ADMIN_ALLOW_HOSTS);
  109.                 $this->arrForm["admin_allow_hosts"implode("\n",$allow_hosts);
  110.  
  111.             }
  112.         }
  113.     }
  114.  
  115.     /**
  116.      * デストラクタ.
  117.      *
  118.      * @return void 
  119.      */
  120.     function destroy({
  121.         parent::destroy();
  122.     }
  123.  
  124.     /**
  125.      * パラメーター初期化.
  126.      *
  127.      * @param object $objFormParam 
  128.      * @param array  $arrParams  $_POST値
  129.      * @return void 
  130.      */
  131.     function initParam(&$objFormParam&$arrParams{
  132.  
  133.         $objFormParam->addParam('ディレクトリ名''admin_dir'ID_MAX_LEN'a'array('EXIST_CHECK''SPTAB_CHECK''ALNUM_CHECK'));
  134.         $objFormParam->addParam('SSL制限''admin_force_ssl'1'n'array('NUM_CHECK''MAX_LENGTH_CHECK'));
  135.         $objFormParam->addParam('IP制限''admin_allow_hosts'LTEXT_LEN'a'array('IP_CHECK''MAX_LENGTH_CHECK'));
  136.         $objFormParam->setParam($arrParams);
  137.         $objFormParam->convParam();
  138.  
  139.     }
  140.  
  141.     /**
  142.      * 管理機能ディレクトリのチェック.
  143.      *
  144.      * @param array  $arrForm  $this->arrForm値
  145.      * @param array  $arrErr   エラーがあった項目用配列
  146.      * @return void 
  147.      */
  148.     function lfCheckAdminArea(&$arrForm&$arrErr){
  149.         $admin_dir trim($arrForm['admin_dir'])."/";
  150.  
  151.         $installData file(CONFIG_REALFILEFILE_IGNORE_NEW_LINES);
  152.         foreach($installData as $key=>$line){
  153.             if(strpos($line,"ADMIN_DIR"!== false and ADMIN_DIR != $admin_dir){
  154.                 //既存ディレクトリのチェック
  155.                 if(file_exists(HTML_REALDIR.$admin_dirand $admin_dir != "admin/"){
  156.                     $arrErr["admin_dir".= ROOT_URLPATH.$admin_dir."は既に存在しています。別のディレクトリ名を指定してください。";
  157.                 }
  158.                 //権限チェック
  159.                 if(!is_writable(HTML_REALDIR ADMIN_DIR)){
  160.                     $arrErr["admin_dir".= ROOT_URLPATH.ADMIN_DIR."のディレクトリ名を変更する権限がありません。";
  161.                 }
  162.             }
  163.         }
  164.     }
  165.  
  166.     //管理機能ディレクトリのリネームと CONFIG_REALFILE の変更
  167.     function lfUpdateAdminData(&$arrForm){
  168.         $admin_dir trim($arrForm['admin_dir'])."/";
  169.         $admin_force_ssl 'FALSE';
  170.         if($arrForm['admin_force_ssl'== 1){
  171.             $admin_force_ssl 'TRUE';
  172.         }
  173.         $admin_allow_hosts explode("\n",$arrForm['admin_allow_hosts']);
  174.         foreach($admin_allow_hosts as $key=>$host){
  175.             $host trim($host);
  176.             if(strlen($host>= 8){
  177.                 $admin_allow_hosts[$key$host;
  178.             }else{
  179.                 unset($admin_allow_hosts[$key]);
  180.             }
  181.         }
  182.         $admin_allow_hosts serialize($admin_allow_hosts);
  183.  
  184.         // CONFIG_REALFILE の書き換え
  185.         $installData file(CONFIG_REALFILEFILE_IGNORE_NEW_LINES);
  186.         $diff 0;
  187.         foreach($installData as $key=>$line){
  188.             if(strpos($line,"ADMIN_DIR"!== false and ADMIN_DIR != $admin_dir){
  189.                 $installData[$key'define("ADMIN_DIR","'.$admin_dir.'");';
  190.                 //管理機能ディレクトリのリネーム
  191.                 if (!rename(HTML_REALDIR.ADMIN_DIR,HTML_REALDIR.$admin_dir)) {
  192.                     $this->arrErr["admin_dir".= ROOT_URLPATH.ADMIN_DIR."のディレクトリ名を変更できませんでした。";
  193.                     return false;
  194.                 }
  195.                 $diff ++;
  196.             }
  197.  
  198.             if(strpos($line,"ADMIN_FORCE_SSL"!== false){
  199.                 $installData[$key'define("ADMIN_FORCE_SSL",'.$admin_force_ssl.');';
  200.                 $diff ++;
  201.             }
  202.             if(strpos($line,"ADMIN_ALLOW_HOSTS"!== false and ADMIN_ALLOW_HOSTS != $admin_allow_hosts{
  203.                 $installData[$key"define('ADMIN_ALLOW_HOSTS','".$admin_allow_hosts."');";
  204.                 $diff ++;
  205.             }
  206.         }
  207.  
  208.         if($diff 0{
  209.             $fp fopen(CONFIG_REALFILE,'wb');
  210.             $installData implode("\n",$installData);
  211.             echo $installData;
  212.             fwrite($fp$installData);
  213.             fclose($fp);
  214.         }
  215.         return true;
  216.     }
  217. }
  218. ?>

Documentation generated on Fri, 24 Feb 2012 14:01:46 +0900 by Seasoft