<?php
/*
 * XPressME - WordPress for XOOPS
 *
 * @copyright	XPressME Project http://www.toemon.com
 * @license		http://www.fsf.org/copyleft/gpl.html GNU public license
 * @author		toemon
 * @package		module::xpress
 */

/* 
 * The function to acquire only a set value without calling the XOOPS system is here.
 */
class ConfigFromXoops{
	var $xoops_mainfile_path;
	var $define_arry = array();	
	var $xoops_root_path;
	var $xoops_url;
	var $xoops_trust_path;
	var $xoops_db_prefix;
	var $xoops_db_name;
	var $xoops_db_user;
	var $xoops_db_pass;
	var $xoops_db_host;
	var $module_name;
	var $module_path;
	var $module_url;
	var $module_db_prefix;
	var $module_version;
	var $module_codename;	
	var $xoops_upload_path;
	var $xoops_upload_url;
	
	
	function __constructor()	//for PHP5
    {
        $this->ConfigFromXoops();
       
    }

    function ConfigFromXoops()	//for PHP4 constructor
    {  
    	$this->xoops_mainfile_path = $this->get_xoops_mainfile_path();
    	$this->module_path=dirname(dirname(__FILE__));   	
    	$this->module_name=basename($this->module_path);
		if(file_exists($this->xoops_mainfile_path)){
			$array_file = file($this->xoops_mainfile_path);
			for ($i = 0 ; $i <count($array_file) ; $i++){
/* Ref. ImpressCMS

mainfile.php
	define( 'XOOPS_TRUST_PATH', 'C:/xampp/trust_pathf6fac' );

	include_once(XOOPS_TRUST_PATH . '/3aec9eefada2c57b3705952094b7b070.php');

	define( 'XOOPS_DB_PREFIX', SDATA_DB_PREFIX );
	define( 'XOOPS_DB_HOST', SDATA_DB_HOST );
	define( 'XOOPS_DB_USER', SDATA_DB_USER );
	define( 'XOOPS_DB_PASS', SDATA_DB_PASS );
	define( 'XOOPS_DB_NAME', SDATA_DB_NAME );
	define( 'XOOPS_DB_SALT', SDATA_DB_SALT );
	
XOOPS_TRUST_PATH . '/3aec9eefada2c57b3705952094b7b070.php'
	define( 'SDATA_DB_HOST', 'localhost' );
	define( 'SDATA_DB_USER', 'root' );
	define( 'SDATA_DB_PASS', '' );
	define( 'SDATA_DB_NAME', 'impress' );
	define( 'SDATA_DB_PREFIX', 'id85d03cc' );
	define( 'SDATA_DB_SALT', '3mhUHMrsTU3CTifQbenOtK1ULG5QN2Dwx8zCfwtynudub4TS9AnmZAhmdQr43Uvot' );

ref. code C:\xampp\htdocs\impress\install\page_configsave.php
			$sdata_rewrite = array();
			$sdata_rewrite['DB_HOST'] = $vars['DB_HOST'];
			$sdata_rewrite['DB_USER'] = $vars['DB_USER'];
			$sdata_rewrite['DB_PASS'] = $vars['DB_PASS'];
			$sdata_rewrite['DB_NAME'] = $vars['DB_NAME'];
			$sdata_rewrite['DB_PREFIX'] = $vars['DB_PREFIX'];
			$sdata_rewrite['DB_SALT'] = $vars['DB_SALT'];


			foreach( $sdata_rewrite as $key => $val ) {
				if( preg_match( "/(define\()([\"'])(SDATA_$key)\\2,\s*([\"'])(.*?)\\4\s*\)/", $content ) ) {
					$val = addslashes( $val );
					$content = preg_replace( "/(define\()([\"'])(SDATA_$key)\\2,\s*([\"'])(.*?)\\4\s*\)/",
						"define( 'SDATA_$key', '$val' )", $content );
				} else {
					//$this->error = true;
					//$this->report .= _NGIMG.sprintf( ERR_WRITING_CONSTANT, "<b>$val</b>")."<br />\n";
				}
			}
*/
				
				$array_file[$i] = trim($array_file[$i]);
				$array_file[$i] = str_replace(' ','',$array_file[$i]);
				
				$array_file[$i] = preg_replace('/\s\s+/', '', $array_file[$i]);
				$array_file[$i] = preg_replace('/^include.*/','',$array_file[$i]);
				$array_file[$i] = preg_replace('/^\/\/.*/','',$array_file[$i]);
				$array_file[$i] = preg_replace('/^if.*/','',$array_file[$i]);
				if (strstr($array_file[$i],'define')!== false){
					$array_file[$i] = preg_replace('/\"/', '', $array_file[$i]);
					$array_file[$i] = preg_replace('/\(/', '', $array_file[$i]);					
					$array_file[$i] = preg_replace('/\)/', '', $array_file[$i]);
					$array_file[$i] = preg_replace('/\;/', '', $array_file[$i]);
					$array_file[$i] = preg_replace('/\'/', '', $array_file[$i]);
					$array_file[$i] = preg_replace('/define/', '', $array_file[$i]);
					$define = explode(',',$array_file[$i] );
					$define[0] = trim($define[0]);
					$define[1] = trim($define[1]);
					switch ($define[0]){
						case  'XOOPS_ROOT_PATH':
							$this->xoops_root_path = $define[1];
							$this->xoops_url . '/modules/' . $this->module_name;
							break;
						case  'XOOPS_URL':
							$this->xoops_url = $define[1];
							$this->module_url = $this->xoops_url . '/modules/' . $this->module_name;
							break;
						case  'XOOPS_TRUST_PATH':
							$this->xoops_trust_path = $define[1];
							break;
						case  'XOOPS_DB_PREFIX':
							$this->xoops_db_prefix = $define[1];
							break;
						case  'XOOPS_DB_NAME':
							$this->xoops_db_name = $define[1];
							break;
						case  'XOOPS_DB_USER':
							$this->xoops_db_user = $define[1];
							break;
						case  'XOOPS_DB_PASS':
							$this->xoops_db_pass = $define[1];
							break;
						case  'XOOPS_DB_HOST':
							$this->xoops_db_host = $define[1];
							break;
						default :
					}
				}
			}
		}
		
		//  define from /settings/definition.inc.php (XCL)  or /include/common.php(2016a-JP)
		$this->xoops_upload_path = $this->xoops_root_path .'/uploads';
		$this->xoops_upload_url = $this->xoops_url . '/uploads';
		
		if ($this->module_name == 'wordpress')
			$this->module_db_prefix =  $this->xoops_db_prefix  . '_wp_';
		else
			$this->module_db_prefix =  $this->xoops_db_prefix  . '_' . $this->module_name . '_';
		
		$this->set_module_version();
		
    }
    
    function get_xoops_mainfile_path(){
    	return dirname(dirname(dirname(dirname(__FILE__)))) . '/mainfile.php';
    }
    
    // set XPressME module virsion and codename from xoops_versions.php
    function set_module_version(){
    	$xoops_version_file = dirname(dirname(__FILE__)) . '/xoops_version.php';
		if(file_exists($xoops_version_file)){
			$version_file = file($xoops_version_file);
			$version_pattern = '(\$modversion\[\s*\'version\'\s*\])\s*=\s*[\'"]([^\'"]*)[\'"]';
			$codename_pattern = '(\$modversion\[\s*\'codename\'\s*\])\s*=\s*[\'"]([^\'"]*)[\'"]';
			$version_found = false;
			$codename_found = false;
			for ($i = 0 ; $i <count($version_file) ; $i++){
				if (preg_match( "/$version_pattern/", $version_file[$i] ,$v_matches )){
					$this->module_version = $v_matches[2];
					$version_found = true;
				}
				if (preg_match( "/$codename_pattern/", $version_file[$i] ,$c_matches )){
					$this->module_codename = $c_matches[2];
					$codename_found = true;
				}
				if ( $version_found && $codename_found ) break;
			}
		}
    }
    
}
?>
