XPressME Integration Kit

Trac


Ignore:
Timestamp:
Jul 9, 2009, 6:18:51 PM (15 years ago)
Author:
toemon
Message:

DB接続情報が取得できない場合の代替え処理実装 fixes#175
モジュールパスにxp-config.phpがある場合、このファイルをrequire_once して値を取得する。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/xpressme_integration_kit/class/config_from_xoops.class.php

    r326 r331  
    1616        var $define_arry = array();      
    1717        var $external_define_path; 
     18        var $xp_config_file_path; 
    1819        var $xoops_root_path; 
    1920        var $xoops_url; 
     
    5960        $this->module_path=dirname(dirname(__FILE__)); 
    6061        $this->module_name=basename($this->module_path); 
    61         if (defined('XOOPS_MAINFILE_INCLUDED')){ 
    62                 $this->xoops_root_path = XOOPS_ROOT_PATH; 
    63                 $this->xoops_url = XOOPS_URL; 
    64                 $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
    65                 if(defined('XOOPS_TRUST_PATH')) $this->xoops_trust_path = XOOPS_TRUST_PATH; else $this->xoops_trust_path = ''; 
    66                 $this->xoops_db_prefix = XOOPS_DB_PREFIX; 
    67                 $this->xoops_db_name = XOOPS_DB_NAME; 
    68                 $this->xoops_db_user = XOOPS_DB_USER; 
    69                 $this->xoops_db_pass = XOOPS_DB_PASS; 
    70                 $this->xoops_db_host = XOOPS_DB_HOST; 
    71                         if(defined('XOOPS_DB_SALT')) $this->xoops_db_salt = XOOPS_DB_SALT; else $this->xoops_db_salt = ''; 
    72                 if(defined('XOOPS_SALT')) $this->xoops_salt = XOOPS_SALT; else $this->xoops_salt = ''; 
    73         } else { 
     62        $this->xp_config_file_path = $this->module_path . '/xp-config.php'; 
     63         
     64        if (file_exists($this->xp_config_file_path)){   // file exists xp-config.php 
     65                $this->_get_value_by_xp_config_file(); 
     66        } else if (defined('XOOPS_MAINFILE_INCLUDED')){ // loaded XOOPS mainfile.php 
     67                $this->_get_value_by_xoops_define(); 
     68        } else {  // A set value is acquired from mainfile.php by the pattern match. 
    7469                        if(file_exists($this->xoops_mainfile_path)){ 
    75                                 $array_file = file($this->xoops_mainfile_path); 
    76                                 $pattern = '^\s*define\s*\(\s*(\'[^\']+\'|"[^"]+")\s*,\s*([^\s]+.*)\s*\)\s*;'; 
    77                                 $impress_include_pattern = '^\s*(include_once|include)\s*\(\s*XOOPS_TRUST_PATH\s*.\s*[\'"]([^\'"]+)[\'"]\s*\)'; 
    78                                 $external_define_file_pattern = '^\s*(include_once|include|require_once|require_once)\s*\((.*mainfile\.php.*)\)'; 
    79                                 for ($i = 0 ; $i <count($array_file) ; $i++){ 
    80                                         if (preg_match('/' . $pattern . '/' ,$array_file[$i],$matchs)){ 
    81                                                 $keys = $matchs[1]; 
    82                                                 if (preg_match('/^\'[^\']*\'$/',$keys)) $keys = preg_replace('/\'/', '', $keys); 
    83                                                 if (preg_match('/^"[^"]*"$/',$keys)) $keys = preg_replace('/"/', '', $keys); 
    84                                                 $key_value = $matchs[2]; 
    85  
    86                                                 switch ($keys){ 
    87                                                         case  'XOOPS_ROOT_PATH': 
    88                                                                 $this->xoops_root_path = $this->xpress_eval($key_value); 
    89                                                                 break; 
    90                                                         case  'XOOPS_URL': 
    91                                                                 $this->xoops_url = $this->xpress_eval($key_value); 
    92                                                                 $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
    93                                                                 break; 
    94                                                         case  'XOOPS_TRUST_PATH': 
    95                                                                 $this->xoops_trust_path = $this->xpress_eval($key_value); 
    96                                                                 break; 
    97                                                         case  'XOOPS_DB_PREFIX': 
    98                                                                 $this->xoops_db_prefix = $this->xpress_eval($key_value); 
    99                                                                 break; 
    100                                                         case  'XOOPS_DB_NAME': 
    101                                                                 $this->xoops_db_name = $this->xpress_eval($key_value); 
    102                                                                 break; 
    103                                                         case  'XOOPS_DB_USER': 
    104                                                                 $this->xoops_db_user = $this->xpress_eval($key_value); 
    105                                                                 break; 
    106                                                         case  'XOOPS_DB_PASS': 
    107                                                                 $this->xoops_db_pass = $this->xpress_eval($key_value); 
    108                                                                 break; 
    109                                                         case  'XOOPS_DB_HOST': 
    110                                                                 $this->xoops_db_host = $this->xpress_eval($key_value); 
    111                                                                 break; 
    112                                                         case  'XOOPS_DB_SALT': 
    113                                                                 $this->xoops_db_salt = $this->xpress_eval($key_value); 
    114                                                                 break; 
    115                                                         case  'XOOPS_SALT': 
    116                                                                 $this->xoops_salt = $this->xpress_eval($key_value); 
    117                                                                 break; 
    118                                                         default : 
    119                                                                  
    120                                                 }       // end of switch 
    121                                         }        // end of if preg_match 
    122                                          
    123                                         // Check External Define File 
    124                                         if (preg_match('/' . $external_define_file_pattern . '/' ,$array_file[$i],$trust_main_matchs)){ 
    125                                                 $include_path = $this->xpress_eval($trust_main_matchs[2]); 
    126                                                 if (file_exists($include_path)) 
    127                                                         $this->external_define_path = $include_path; 
    128                                         } 
    129                                          
    130                                         // Check ImpressCMS 
    131                                         if (preg_match('/' . $impress_include_pattern . '/' ,$array_file[$i],$impres_matchs)){ 
    132                                                 $this->is_impress = true; 
    133                                                 $this->impress_db_config_file = $this->xoops_trust_path . $impres_matchs[2]; 
    134                                         } 
    135                                 } // end of for loop 
     70                        $this->_get_value_by_xoops_mainfile(); 
     71                        // Value 'is_impress' and value 'external_define_path' used in the under 
     72                        // are set in _get_value_by_xoops_mainfile().  
     73                                if ($this->is_impress){         // DB Config from Impress CMS impress_db_config file 
     74                                        $this->_get_value_by_impress_db_config_file(); 
     75                                } else if(!empty($this->external_define_path)){ // file exists mainfile.php in the trust pass. 
     76                                        $this->_get_value_by_trust_mainfile(); 
     77                                } 
    13678                        } // end of if file_exists 
    13779                         
    138                         // DB Config from Impress CMS impress_db_config file 
    139                         if ($this->is_impress){ 
    140                                 if(file_exists($this->impress_db_config_file)){ 
    141                                         $array_file = file($this->impress_db_config_file); 
    142                                         $pattern = '^\s*define\s*\(\s*(\'[^\']+\'|"[^"]+")\s*,\s*(\'[^\']*\'|"[^"]*"|[^\'"])\s*\)\s*;'; 
    143                                         for ($i = 0 ; $i <count($array_file) ; $i++){ 
    144                                                 if (preg_match('/' . $pattern . '/' ,$array_file[$i],$matchs)){ 
    145                                                         $keys = $matchs[1]; 
    146                                                         if (preg_match('/^\'[^\']*\'$/',$keys)) $keys = preg_replace('/\'/', '', $keys); 
    147                                                         if (preg_match('/^"[^"]*"$/',$keys)) $keys = preg_replace('/"/', '', $keys); 
    148                                                         $key_value = $matchs[2]; 
    149  
    150                                                         switch ($keys){ 
    151                                                                 case  'SDATA_DB_SALT': 
    152                                                                         $this->xoops_db_salt = $this->xpress_eval($key_value); 
    153                                                                         break; 
    154                                                                 case  'SDATA_DB_PREFIX': 
    155                                                                         $this->xoops_db_prefix = $this->xpress_eval($key_value); 
    156                                                                         break; 
    157                                                                 case  'SDATA_DB_NAME': 
    158                                                                         $this->xoops_db_name = $this->xpress_eval($key_value); 
    159                                                                         break; 
    160                                                                 case  'SDATA_DB_USER': 
    161                                                                         $this->xoops_db_user = $this->xpress_eval($key_value); 
    162                                                                         break; 
    163                                                                 case  'SDATA_DB_PASS': 
    164                                                                         $this->xoops_db_pass = $this->xpress_eval($key_value); 
    165                                                                         break; 
    166                                                                 case  'SDATA_DB_HOST': 
    167                                                                         $this->xoops_db_host = $this->xpress_eval($key_value); 
    168                                                                         break; 
    169                                                                 default : 
    170                                                                          
    171                                                         }       // end of switch 
    172                                                 } 
    173                                         } // end of for 
    174                                 } // end of if file_exists 
    175                         } // end ofImpress CMS 
    176                          
    177                         // DB Config from external define file 
    178                         if(!empty($this->external_define_path)){ 
    179                                 if(file_exists($this->external_define_path)){ 
    180                                         require_once($this->external_define_path); 
    181                                          
    182                                         $this->xoops_root_path = XOOPS_ROOT_PATH; 
    183                                 $this->xoops_url = XOOPS_URL; 
    184                                 $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
    185                                 if(defined('XOOPS_TRUST_PATH')) $this->xoops_trust_path = XOOPS_TRUST_PATH; else $this->xoops_trust_path = ''; 
    186                                 $this->xoops_db_prefix = XOOPS_DB_PREFIX; 
    187                                 $this->xoops_db_name = XOOPS_DB_NAME; 
    188                                 $this->xoops_db_user = XOOPS_DB_USER; 
    189                                 $this->xoops_db_pass = XOOPS_DB_PASS; 
    190                                 $this->xoops_db_host = XOOPS_DB_HOST; 
    191                                         if(defined('XOOPS_DB_SALT')) $this->xoops_db_salt = XOOPS_DB_SALT; else $this->xoops_db_salt = ''; 
    192                                 if(defined('XOOPS_SALT')) $this->xoops_salt = XOOPS_SALT; else $this->xoops_salt = ''; 
    193                                 } // end of if file_exists 
    194                         } 
    19580                } 
    19681 
    197                          
    19882                //  define from /settings/definition.inc.php (XCL)  or /include/common.php(2016a-JP) 
    19983                $this->xoops_upload_path = $this->xoops_root_path .'/uploads'; 
     
    20993                $this->set_mu_current_site(); 
    21094    } 
     95 
     96        // A set value is acquired from XOOPS mainfile.php by the pattern match. 
     97        function _get_value_by_xoops_mainfile(){ 
     98                $array_file = file($this->xoops_mainfile_path); 
     99                $pattern = '^\s*define\s*\(\s*(\'[^\']+\'|"[^"]+")\s*,\s*([^\s]+.*)\s*\)\s*;'; 
     100                $impress_include_pattern = '^\s*(include_once|include)\s*\(\s*XOOPS_TRUST_PATH\s*.\s*[\'"]([^\'"]+)[\'"]\s*\)'; 
     101                $external_define_file_pattern = '^\s*(include_once|include|require_once|require_once)\s*\((.*mainfile\.php.*)\)'; 
     102                for ($i = 0 ; $i <count($array_file) ; $i++){ 
     103                        if (preg_match('/' . $pattern . '/' ,$array_file[$i],$matchs)){ 
     104                                $keys = $matchs[1]; 
     105                                if (preg_match('/^\'[^\']*\'$/',$keys)) $keys = preg_replace('/\'/', '', $keys); 
     106                                if (preg_match('/^"[^"]*"$/',$keys)) $keys = preg_replace('/"/', '', $keys); 
     107                                $key_value = $matchs[2]; 
     108 
     109                                switch ($keys){ 
     110                                        case  'XOOPS_ROOT_PATH': 
     111                                                $this->xoops_root_path = $this->xpress_eval($key_value); 
     112                                                break; 
     113                                        case  'XOOPS_URL': 
     114                                                $this->xoops_url = $this->xpress_eval($key_value); 
     115                                                $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
     116                                                break; 
     117                                        case  'XOOPS_TRUST_PATH': 
     118                                                $this->xoops_trust_path = $this->xpress_eval($key_value); 
     119                                                break; 
     120                                        case  'XOOPS_DB_PREFIX': 
     121                                                $this->xoops_db_prefix = $this->xpress_eval($key_value); 
     122                                                break; 
     123                                        case  'XOOPS_DB_NAME': 
     124                                                $this->xoops_db_name = $this->xpress_eval($key_value); 
     125                                                break; 
     126                                        case  'XOOPS_DB_USER': 
     127                                                $this->xoops_db_user = $this->xpress_eval($key_value); 
     128                                                break; 
     129                                        case  'XOOPS_DB_PASS': 
     130                                                $this->xoops_db_pass = $this->xpress_eval($key_value); 
     131                                                break; 
     132                                        case  'XOOPS_DB_HOST': 
     133                                                $this->xoops_db_host = $this->xpress_eval($key_value); 
     134                                                break; 
     135                                        case  'XOOPS_DB_SALT': 
     136                                                $this->xoops_db_salt = $this->xpress_eval($key_value); 
     137                                                break; 
     138                                        case  'XOOPS_SALT': 
     139                                                $this->xoops_salt = $this->xpress_eval($key_value); 
     140                                                break; 
     141                                        default : 
     142                                                 
     143                                }       // end of switch 
     144                        }        // end of if preg_match 
     145                         
     146                        // Check External Define File 
     147                        if (preg_match('/' . $external_define_file_pattern . '/' ,$array_file[$i],$trust_main_matchs)){ 
     148                                $include_path = $this->xpress_eval($trust_main_matchs[2]); 
     149                                if (file_exists($include_path)) 
     150                                        $this->external_define_path = $include_path; 
     151                        } 
     152                         
     153                        // Check ImpressCMS 
     154                        if (preg_match('/' . $impress_include_pattern . '/' ,$array_file[$i],$impres_matchs)){ 
     155                                $this->is_impress = true; 
     156                                $this->impress_db_config_file = $this->xoops_trust_path . $impres_matchs[2]; 
     157                        } 
     158                } // end of for loop             
     159        } 
     160        // A set value is acquired from XOOPS define value . 
     161        function _get_value_by_xoops_define(){ 
     162                $this->xoops_root_path = XOOPS_ROOT_PATH; 
     163                $this->xoops_url = XOOPS_URL; 
     164                $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
     165                if(defined('XOOPS_TRUST_PATH')) $this->xoops_trust_path = XOOPS_TRUST_PATH; else $this->xoops_trust_path = ''; 
     166                $this->xoops_db_prefix = XOOPS_DB_PREFIX; 
     167                $this->xoops_db_name = XOOPS_DB_NAME; 
     168                $this->xoops_db_user = XOOPS_DB_USER; 
     169                $this->xoops_db_pass = XOOPS_DB_PASS; 
     170                $this->xoops_db_host = XOOPS_DB_HOST; 
     171                if(defined('XOOPS_DB_SALT')) $this->xoops_db_salt = XOOPS_DB_SALT; else $this->xoops_db_salt = ''; 
     172                if(defined('XOOPS_SALT')) $this->xoops_salt = XOOPS_SALT; else $this->xoops_salt = ''; 
     173        } 
     174        // A set value is acquired from xp-config.php . 
     175        function _get_value_by_xp_config_file(){ 
     176            require_once($this->xp_config_file_path); 
     177                $this->xoops_root_path =XP_XOOPS_ROOT_PATH; 
     178                $this->xoops_url = XP_XOOPS_URL; 
     179                $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
     180                if(defined('XP_XOOPS_TRUST_PATH')) $this->xoops_trust_path = XP_XOOPS_TRUST_PATH; else $this->xoops_trust_path = ''; 
     181                $this->xoops_db_prefix = XP_XOOPS_DB_PREFIX; 
     182                $this->xoops_db_name = XP_XOOPS_DB_NAME; 
     183                $this->xoops_db_user = XP_XOOPS_DB_USER; 
     184                $this->xoops_db_pass = XP_XOOPS_DB_PASS; 
     185                $this->xoops_db_host = XP_XOOPS_DB_HOST; 
     186                if(defined('XP_XOOPS_DB_SALT')) $this->xoops_db_salt = XP_XOOPS_DB_SALT; else $this->xoops_db_salt = ''; 
     187                if(defined('XOOPS_SALT')) $this->xoops_salt = XP_XOOPS_SALT; else $this->xoops_salt = ''; 
     188        } 
     189         
     190        // A set value is acquired from config file in the trust pass by the pattern match. 
     191    function _get_value_by_impress_db_config_file(){ 
     192                if(file_exists($this->impress_db_config_file)){ 
     193                        $array_file = file($this->impress_db_config_file); 
     194                        $pattern = '^\s*define\s*\(\s*(\'[^\']+\'|"[^"]+")\s*,\s*(\'[^\']*\'|"[^"]*"|[^\'"])\s*\)\s*;'; 
     195                        for ($i = 0 ; $i <count($array_file) ; $i++){ 
     196                                if (preg_match('/' . $pattern . '/' ,$array_file[$i],$matchs)){ 
     197                                        $keys = $matchs[1]; 
     198                                        if (preg_match('/^\'[^\']*\'$/',$keys)) $keys = preg_replace('/\'/', '', $keys); 
     199                                        if (preg_match('/^"[^"]*"$/',$keys)) $keys = preg_replace('/"/', '', $keys); 
     200                                        $key_value = $matchs[2]; 
     201 
     202                                        switch ($keys){ 
     203                                                case  'SDATA_DB_SALT': 
     204                                                        $this->xoops_db_salt = $this->xpress_eval($key_value); 
     205                                                        break; 
     206                                                case  'SDATA_DB_PREFIX': 
     207                                                        $this->xoops_db_prefix = $this->xpress_eval($key_value); 
     208                                                        break; 
     209                                                case  'SDATA_DB_NAME': 
     210                                                        $this->xoops_db_name = $this->xpress_eval($key_value); 
     211                                                        break; 
     212                                                case  'SDATA_DB_USER': 
     213                                                        $this->xoops_db_user = $this->xpress_eval($key_value); 
     214                                                        break; 
     215                                                case  'SDATA_DB_PASS': 
     216                                                        $this->xoops_db_pass = $this->xpress_eval($key_value); 
     217                                                        break; 
     218                                                case  'SDATA_DB_HOST': 
     219                                                        $this->xoops_db_host = $this->xpress_eval($key_value); 
     220                                                        break; 
     221                                                default : 
     222                                                         
     223                                        }       // end of switch 
     224                                } 
     225                        } // end of for 
     226                } // end of if file_exists 
     227    } 
     228     
     229    function _get_value_by_trust_mainfile(){ 
     230                // When the definition is written in mainfile.php in the trust passing 
     231                if(file_exists($this->external_define_path)){ 
     232                        require_once($this->external_define_path); 
     233                         
     234                        $this->xoops_root_path = XOOPS_ROOT_PATH; 
     235                $this->xoops_url = XOOPS_URL; 
     236                $this->module_url = $this->xoops_url . '/modules/' . $this->module_name; 
     237                if(defined('XOOPS_TRUST_PATH')) $this->xoops_trust_path = XOOPS_TRUST_PATH; else $this->xoops_trust_path = ''; 
     238                $this->xoops_db_prefix = XOOPS_DB_PREFIX; 
     239                $this->xoops_db_name = XOOPS_DB_NAME; 
     240                $this->xoops_db_user = XOOPS_DB_USER; 
     241                $this->xoops_db_pass = XOOPS_DB_PASS; 
     242                $this->xoops_db_host = XOOPS_DB_HOST; 
     243                        if(defined('XOOPS_DB_SALT')) $this->xoops_db_salt = XOOPS_DB_SALT; else $this->xoops_db_salt = ''; 
     244                        if(defined('XOOPS_SALT')) $this->xoops_salt = XOOPS_SALT; else $this->xoops_salt = ''; 
     245                } // end of if file_exists 
     246        }        
    211247     
    212248    function get_xoops_mainfile_path(){ 
Note: See TracChangeset for help on using the changeset viewer.