Ignore:
Timestamp:
2011/01/08 06:19:28 (13 years ago)
Author:
tao
Message:

refs #841 shopマスタでの変更機能を追加。あと凡ミスも修正。

Location:
branches/version-2_5-dev/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/Smarty/templates/admin/basis/index.tpl

    r19833 r19856  
    244244  </table> 
    245245 
     246  <h2>管理画面設定</h2> 
     247  <table id="basis-index-admin"> 
     248    <tr> 
     249      <th>ディレクトリ名</th> 
     250      <td> 
     251        <!--{assign var=key value="admin_dir"}--> 
     252        <span class="attention"><!--{$arrErr[$key]}--></span> 
     253        <!--{$smarty.const.URL_PATH}--><input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key]|h}-->" maxlength="<!--{$smarty.const.ID_MAX_LEN}-->" size="40" class="box40" style="<!--{if $arrErr[$key] != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->"/>/ 
     254      </td> 
     255    </tr> 
     256    <tr> 
     257      <th>SSL制限</th> 
     258      <td> 
     259        <!--{assign var=key value="admin_force_ssl"}--> 
     260        <span class="attention"><!--{$arrErr[$key]}--></span> 
     261        <input type="checkbox" name="<!--{$key}-->" value="1" id="<!--{$key}-->" <!--{if $arrForm[$key] == 1}-->checked="checked"<!--{/if}--> /><label for="<!--{$key}-->">SSLを強制する。</label> 
     262      </td> 
     263    </tr> 
     264    <tr> 
     265      <th>IP制限</th> 
     266      <td> 
     267        <!--{assign var=key value="admin_allow_hosts"}--> 
     268        <span class="attention"><!--{$arrErr[$key]}--></span> 
     269        <textarea name="<!--{$key}-->" cols="60" rows="8" class="area60" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" ><!--{$arrForm[$key]|h}--></textarea> 
     270        <span class="attention"> (上限<!--{$smarty.const.LTEXT_LEN}-->文字)</span><br /> 
     271        <span class="fs10">※管理画面へのアクセスを特定のIPアドレスからの接続のみに制限します。アクセスを許可するIPアドレスを1行づつ入力してください。何も入力しない場合は全てを許可します。</span><br /> 
     272      </td> 
     273    </tr> 
     274  </table> 
     275 
     276 
    246277  <h2>定休日設定</h2> 
    247278  <table id="basis-index-holiday"> 
  • branches/version-2_5-dev/data/class/SC_CheckError.php

    r19854 r19856  
    596596        //改行コードが含まれている場合には配列に変換 
    597597        $params = str_replace("\r","",$this->arrParam[$value[1]]); 
    598         if(strpos("\n",$params) === false){ 
    599             $params .= "\n"; 
    600         } 
    601         $params = explode("\n",$params); 
    602         foreach($params as $param){ 
    603             $param = trim($param); 
    604             if(long2ip(ip2long($param)) != trim($param) and !empty($param)) { 
    605                 $this->arrErr[$value[1]] = "※ " . $value[0] . "に正しい形式のIPアドレスを入力してください。<br />"; 
     598        if(!empty($params)){ 
     599            if(strpos($params,"\n") === false){ 
     600                $params .= "\n"; 
     601            } 
     602            $params = explode("\n",$params); 
     603            foreach($params as $param){ 
     604                $param = trim($param); 
     605                if(long2ip(ip2long($param)) != trim($param) and !empty($param)) { 
     606                    $this->arrErr[$value[1]] = "※ " . $value[0] . "に正しい形式のIPアドレスを入力してください。<br />"; 
     607                } 
    606608            } 
    607609        } 
  • branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis.php

    r19805 r19856  
    114114                    break; 
    115115                } 
    116                 $this->tpl_onload = "fnCheckLimit('downloadable_days', 'downloadable_days_unlimited', '" . DISABLED_RGB . "'); window.alert('SHOPマスタの登録が完了しました。');"; 
     116                $this->tpl_onload = "fnCheckLimit('downloadable_days', 'downloadable_days_unlimited', '" . DISABLED_RGB . "'); window.alert('SHOPマスタの登録が完了しました。管理画面のURLを変更した場合は、新しいURLにアクセスしてください。');"; 
    117117            } 
    118118            if( empty($this->arrForm['regular_holiday_ids']) ) { 
     
    129129            $regular_holiday_ids = explode('|', $this->arrForm['regular_holiday_ids']); 
    130130            $this->arrForm['regular_holiday_ids'] = $regular_holiday_ids; 
     131            $admin_dir = str_replace("/","",ADMIN_DIR); 
     132            $this->arrForm += array("admin_dir"=>$admin_dir); 
     133            $this->arrForm += array("admin_force_ssl"=>ADMIN_FORCE_SSL); 
     134            if(defined("ADMIN_ALLOW_HOSTS")){ 
     135                $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS); 
     136                $this->arrForm += array("admin_allow_hosts"=>implode("\n",$allow_hosts)); 
     137            }else{ 
     138                $this->arrForm += array("admin_allow_hosts"=>""); 
     139            } 
    131140            $this->tpl_onload = "fnCheckLimit('downloadable_days', 'downloadable_days_unlimited', '" . DISABLED_RGB . "');"; 
    132141        } 
     
    192201        } 
    193202        $sqlval['update_date'] = 'Now()'; 
     203        $this->lfUpdateAdminData($array); 
    194204        // UPDATEの実行 
    195205        $ret = $objQuery->update("dtb_baseinfo", $sqlval); 
     
    203213        } 
    204214        $sqlval['update_date'] = 'Now()'; 
     215        $this->lfUpdateAdminData($array); 
    205216        // INSERTの実行 
    206217        $ret = $objQuery->insert("dtb_baseinfo", $sqlval); 
     218    } 
     219     
     220    function lfUpdateAdminData($array){ 
     221        $admin_dir = trim($array['admin_dir'])."/"; 
     222        $admin_force_ssl = "FALSE"; 
     223        if($array['admin_force_ssl'] == 1){ 
     224            $admin_force_ssl = "TRUE"; 
     225        } 
     226        $admin_allow_hosts = explode("\n",$array['admin_allow_hosts']); 
     227        foreach($admin_allow_hosts as $key=>$host){ 
     228            $host = trim($host); 
     229            if(strlen($host) >= 8){ 
     230                $admin_allow_hosts[$key] = $host; 
     231            }else{ 
     232                unset($admin_allow_hosts[$key]); 
     233            } 
     234        } 
     235        $admin_allow_hosts = serialize($admin_allow_hosts); 
     236        //権限チェック  
     237        if(!is_writable(DATA_REALDIR . "install.php")){ 
     238            $this->arrErr["admin_force_ssl"] = DATA_REALDIR . "install.phpを変更する権限がありません。"; 
     239        } 
     240        if(count($this->arrErr) > 0){ 
     241            return false; 
     242        } 
     243        //install.phpの書き換え 
     244        $installData = file(DATA_REALDIR."install.php",FILE_IGNORE_NEW_LINES); 
     245        $diff = 0; 
     246        foreach($installData as $key=>$line){ 
     247            if(strpos($line,"ADMIN_DIR") !== false and ADMIN_DIR != $admin_dir){ 
     248                if(!is_writable(HTML_REALDIR . ADMIN_DIR)){ 
     249                    $this->arrErr["admin_dir"] = URL_PATH.ADMIN_DIR."のディレクトリ名を変更する権限がありません。"; 
     250                } 
     251                if(!is_writable(USER_TEMPLATE_REALDIR . ADMIN_DIR)){ 
     252                    $this->arrErr["admin_dir"] = USER_TEMPLATE_REALDIR . ADMIN_DIR."のディレクトリ名を変更する権限がありません。";         
     253                } 
     254                if(count($this->arrErr) > 0 ){ 
     255                    return false; 
     256                }else{ 
     257                    $installData[$key] = 'define("ADMIN_DIR","'.$admin_dir.'");'; 
     258                    //管理画面ディレクトリのリネーム 
     259                    rename(HTML_REALDIR.ADMIN_DIR,HTML_REALDIR.$admin_dir); 
     260                    rename(USER_TEMPLATE_REALDIR.ADMIN_DIR,USER_TEMPLATE_REALDIR.$admin_dir); 
     261                    $diff ++; 
     262                } 
     263            } 
     264             
     265            if(strpos($line,"ADMIN_FORCE_SSL") !== false and ADMIN_FORCE_SSL !== (boolean)$array['admin_force_ssl']){ 
     266                $installData[$key] = 'define("ADMIN_FORCE_SSL",'.$admin_force_ssl.');'; 
     267                $diff ++; 
     268            } 
     269            if(strpos($line,"ADMIN_ALLOW_HOSTS") !== false and ADMIN_ALLOW_HOSTS != $admin_allow_hosts) { 
     270                $installData[$key] = "define('ADMIN_ALLOW_HOSTS','".$admin_allow_hosts."');"; 
     271                $diff ++; 
     272            } 
     273        } 
     274         
     275        if($diff > 0) { 
     276            $fp = fopen(DATA_REALDIR . "install.php","wb"); 
     277            $installData = implode("\n",$installData); 
     278            echo $installData; 
     279            fwrite($fp, $installData); 
     280            fclose($fp); 
     281        } 
     282        return true; 
    207283    } 
    208284 
     
    239315        $arrConvList['email03'] = "a"; 
    240316        $arrConvList['email04'] = "a"; 
     317        $arrConvList['admin_dir'] = "a"; 
     318        $arrConvList['admin_force_ssl'] = "n"; 
     319        $arrConvList['admin_allow_hosts'] = "a"; 
    241320        $arrConvList['tax'] = "n"; 
    242321        $arrConvList['free_rule'] = "n"; 
     
    272351        $objErr->doFunc(array('メール送信元メールアドレス', "email03", STEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 
    273352        $objErr->doFunc(array('送信エラー受付メールアドレス', "email04", STEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK","MAX_LENGTH_CHECK")); 
     353        //管理画面設定チェック 
     354        $objErr->doFunc(array('ディレクトリ名', "admin_dir", ID_MAX_LEN) ,array("EXIST_CHECK","SPTAB_CHECK", "ALNUM_CHECK")); 
     355        $objErr->doFunc(array('SSL制限', "admin_force_ssl", 1) ,array("NUM_CHECK", "MAX_LENGTH_CHECK")); 
     356        $objErr->doFunc(array('IP制限', "admin_allow_hosts", LTEXT_LEN) ,array("IP_CHECK", "MAX_LENGTH_CHECK")); 
     357         
     358 
    274359        // 電話番号チェック 
    275360        $objErr->doFunc(array("TEL", "tel01", "tel02", "tel03"), array("TEL_CHECK")); 
Note: See TracChangeset for help on using the changeset viewer.