Changeset 4290

Show
Ignore:
Timestamp:
06/18/2008 03:56:29 PM (3 months ago)
Author:
zero
Message:

#472 세션을 파일기반이 아닌 DB기반으로 사용하도록 변경하고 접속자 출력 위젯 추가

Location:
sandbox
Files:
38 added
18 modified

Legend:

Unmodified
Added
Removed
  • sandbox/classes/context/Context.class.php

    r4286 r4290  
    7474            $this->_loadDBInfo(); 
    7575 
     76            // 세션 핸들러 지정 
     77            $oSessionModel = &getModel('session'); 
     78            $oSessionController = &getController('session'); 
     79            session_set_save_handler( 
     80                array(&$oSessionController,"open"), 
     81                array(&$oSessionController,"close"), 
     82                array(&$oSessionModel,"read"), 
     83                array(&$oSessionController,"write"), 
     84                array(&$oSessionController,"destroy"), 
     85                array(&$oSessionController,"gc") 
     86            ); 
     87            session_start(); 
     88 
    7689            // 쿠키로 설정된 언어타입 가져오기  
    7790            if($_COOKIE['lang_type']) $this->lang_type = $_COOKIE['lang_type']; 
     
    7992 
    8093            // 등록된 기본 언어파일 찾기 
    81             $langs = file('./common/lang/lang.info'); 
     94            $langs = file(_XE_PATH_.'common/lang/lang.info'); 
    8295            $accept_lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); 
    8396            foreach($langs as $val) { 
     
    100113            // 기본 언어파일 로드 
    101114            $this->lang = &$GLOBALS['lang']; 
    102             $this->_loadLang("./common/lang/"); 
     115            $this->_loadLang(_XE_PATH_."common/lang/"); 
    103116 
    104117            // Request Method 설정 
     
    130143 
    131144            // rewrite 모듈사용 상태 체크 
    132             if(file_exists('./.htaccess')&&$this->db_info->use_rewrite == 'Y') $this->allow_rewrite = true; 
     145            if(file_exists(_XE_PATH_.'.htaccess')&&$this->db_info->use_rewrite == 'Y') $this->allow_rewrite = true; 
    133146            else $this->allow_rewrite = false; 
    134147 
     
    165178         **/ 
    166179        function close() { 
     180            // Session Close 
     181            if(function_exists('session_write_close')) session_write_close(); 
     182 
    167183            // DB close 
    168184            $oDB = &DB::getInstance(); 
     
    829845         **/ 
    830846        function _getJsFile() { 
    831             require_once("./classes/optimizer/Optimizer.class.php"); 
     847            require_once(_XE_PATH_."classes/optimizer/Optimizer.class.php"); 
    832848            $oOptimizer = new Optimizer(); 
    833849            return $oOptimizer->getOptimizedFiles($this->_getUniqueFileList($this->js_files), "js"); 
     
    864880         **/ 
    865881        function _getCSSFile() { 
    866             require_once("./classes/optimizer/Optimizer.class.php"); 
     882            require_once(_XE_PATH_."classes/optimizer/Optimizer.class.php"); 
    867883            $oOptimizer = new Optimizer(); 
    868884            return $oOptimizer->getOptimizedFiles($this->_getUniqueFileList($this->css_files), "css"); 
     
    933949         **/ 
    934950        function getConfigFile() { 
    935             return "./files/config/db.config.php"; 
     951            return _XE_PATH_."files/config/db.config.php"; 
    936952        } 
    937953 
  • sandbox/classes/db/DB.class.php

    r4276 r4290  
    1616    class DB { 
    1717 
    18         var $count_cache_path = './files/cache/db'; 
     18        var $count_cache_path = 'files/cache/db'; 
    1919 
    2020        var $cond_operation = array( ///< 조건문에서 조건을 등호로 표시하는 변수 
     
    4444        var $supported_list = array(); ///< 지원하는 DB의 종류, classes/DB/DB***.class.php 를 이용하여 동적으로 작성됨 
    4545 
    46         var $cache_file = './files/cache/queries/'; ///< query cache파일의 위치 
     46        var $cache_file = 'files/cache/queries/'; ///< query cache파일의 위치 
    4747 
    4848        /** 
     
    5555            if(!$GLOBALS['__DB__']) { 
    5656                $class_name = sprintf("DB%s%s", strtoupper(substr($db_type,0,1)), strtolower(substr($db_type,1))); 
    57                 $class_file = sprintf("./classes/db/%s.class.php", $class_name); 
     57                $class_file = sprintf("%sclasses/db/%s.class.php", _XE_PATH_, $class_name); 
    5858                if(!file_exists($class_file)) new Object(-1, 'msg_db_not_setted'); 
    5959 
    6060                require_once($class_file); 
    61                 $eval_str = sprintf('$GLOBALS[\'__DB__\'] = new %s();', $class_name); 
     61                $eval_str = sprintf('$GLOBALS[\'__DB__\'][\''.$db_type.'\'] = new %s();', $class_name); 
    6262                eval($eval_str); 
    6363            } 
    6464 
    65             return $GLOBALS['__DB__']; 
     65            return $GLOBALS['__DB__'][$db_type]; 
     66        } 
     67 
     68        /** 
     69         * @brief constructor 
     70         **/ 
     71        function DB() { 
     72            $this->count_cache_path = _XE_PATH_.$this->count_cache_path; 
     73            $this->cache_file = _XE_PATH_.$this->cache_file; 
    6674        } 
    6775 
     
    7886         **/ 
    7987        function _getSupportedList() { 
    80             $db_classes_path = "./classes/db/"; 
     88            $db_classes_path = _XE_PATH_."classes/db/"; 
    8189            $filter = "/^DB([^\.]+)\.class\.php/i"; 
    8290            $supported_list = FileHandler::readDir($db_classes_path, $filter, true); 
     
    9098 
    9199                $class_name = sprintf("DB%s%s", strtoupper(substr($db_type,0,1)), strtolower(substr($db_type,1))); 
    92                 $class_file = sprintf("./classes/db/%s.class.php", $class_name); 
     100                $class_file = sprintf(_XE_PATH_."classes/db/%s.class.php", $class_name); 
    93101                if(!file_exists($class_file)) continue; 
    94102 
     
    145153 
    146154                if(__DEBUG_DB_OUTPUT__==1)  { 
    147                     $debug_file = "./files/_debug_db_query.php"; 
     155                    $debug_file = _XE_PATH_."files/_debug_db_query.php"; 
    148156                    $buff = sprintf("%s\n",print_r($str,true)); 
    149157 
     
    162170            if(__LOG_SLOW_QUERY__>0 && $elapsed_time > __LOG_SLOW_QUERY__) { 
    163171                $buff = ''; 
    164                 $log_file = './files/_db_slow_query.php'; 
     172                $log_file = _XE_PATH_.'files/_db_slow_query.php'; 
    165173                if(!file_exists($log_file)) { 
    166174                    $buff = '<?php exit();?>'."\n"; 
     
    219227            if(!$target || !$module || !$id) return new Object(-1, 'msg_invalid_queryid'); 
    220228 
    221             $xml_file = sprintf('./%s/%s/queries/%s.xml', $target, $module, $id); 
     229            $xml_file = sprintf('%s%s/%s/queries/%s.xml', _XE_PATH_, $target, $module, $id); 
    222230            if(!file_exists($xml_file)) return new Object(-1, 'msg_invalid_queryid'); 
    223231 
    224232            // 일단 cache 파일을 찾아본다 
    225             $cache_file = sprintf('%s%s.cache.php', $this->cache_file, $query_id); 
     233            $cache_file = sprintf('%s%s%s.cache.php', _XE_PATH_, $this->cache_file, $query_id); 
    226234            if(file_exists($cache_file)) $cache_time = filemtime($cache_file); 
    227235            else $cache_time = -1; 
    228236 
    229237            // 캐시 파일이 없거나 시간 비교하여 최근것이 아니면 원본 쿼리 xml파일을 찾아서 파싱을 한다 
    230             if($cache_time<filemtime($xml_file) || $cache_time < filemtime('./classes/db/DB.class.php')) { 
    231                 require_once('./classes/xml/XmlQueryParser.class.php');    
     238            if($cache_time<filemtime($xml_file) || $cache_time < filemtime(_XE_PATH_.'classes/db/DB.class.php')) { 
     239                require_once(_XE_PATH_.'classes/xml/XmlQueryParser.class.php');    
    232240                $oParser = new XmlQueryParser(); 
    233241                $oParser->parse($query_id, $xml_file, $cache_file); 
  • sandbox/classes/db/DBCubrid.class.php

    r3783 r4290  
    669669         **/ 
    670670        function _getNavigationData($table_list, $columns, $condition, $output) { 
    671             require_once('./classes/page/PageHandler.class.php'); 
     671            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    672672 
    673673            // 전체 개수를 구함 
  • sandbox/classes/db/DBFirebird.class.php

    r4183 r4290  
    815815         **/ 
    816816        function _getNavigationData($table_list, $columns, $condition, $output) { 
    817             require_once('./classes/page/PageHandler.class.php'); 
     817            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    818818 
    819819            // 전체 개수를 구함 
  • sandbox/classes/db/DBMysql.class.php

    r3720 r4290  
    547547         **/ 
    548548        function _getNavigationData($table_list, $columns, $condition, $output) { 
    549             require_once('./classes/page/PageHandler.class.php'); 
     549            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    550550 
    551551            // 전체 개수를 구함 
  • sandbox/classes/db/DBMysql_innodb.class.php

    r3720 r4290  
    557557         **/ 
    558558        function _getNavigationData($table_list, $columns, $condition, $output) { 
    559             require_once('./classes/page/PageHandler.class.php'); 
     559            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    560560 
    561561            // 전체 개수를 구함 
  • sandbox/classes/db/DBPostgresql.class.php

    r3930 r4290  
    546546         **/ 
    547547        function _getNavigationData($table_list, $columns, $condition, $output) { 
    548             require_once('./classes/page/PageHandler.class.php'); 
     548            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    549549 
    550550            // 전체 개수를 구함 
  • sandbox/classes/db/DBSqlite2.class.php

    r3924 r4290  
    565565         **/ 
    566566        function _getNavigationData($table_list, $columns, $condition, $output) { 
    567             require_once('./classes/page/PageHandler.class.php'); 
     567            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    568568 
    569569            // 전체 개수를 구함 
  • sandbox/classes/db/DBSqlite3_pdo.class.php

    r3715 r4290  
    606606         **/ 
    607607        function _getNavigationData($table_list, $columns, $condition, $output) { 
    608             require_once('./classes/page/PageHandler.class.php'); 
     608            require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); 
    609609 
    610610            // 전체 개수를 구함 
  • sandbox/classes/file/FileHandler.class.php

    r3976 r4290  
    8989         **/ 
    9090        function makeDir($path_string) { 
     91            $path_string = str_replace(_XE_PATH_,'',$path_string); 
    9192            $path_list = explode('/', $path_string); 
    9293 
     94            $path = _XE_PATH_; 
    9395            for($i=0;$i<count($path_list);$i++) { 
    9496                if(!$path_list[$i]) continue; 
  • sandbox/classes/module/ModuleHandler.class.php

    r4269 r4290  
    6464            // 애드온 실행 (모듈 실행 전) 
    6565            $called_position = 'before_module_init'; 
    66             @include("./files/cache/activated_addons.cache.php"); 
     66            @include(_XE_PATH_."files/cache/activated_addons.cache.php"); 
    6767        } 
    6868 
     
    252252         **/ 
    253253        function getModulePath($module) { 
    254             $class_path = sprintf('./modules/%s/', $module); 
    255             if(is_dir($class_path)) return $class_path; 
    256  
    257             return ""; 
     254            return sprintf('./modules/%s/', $module); 
    258255        } 
    259256 
     
    263260        function &getModuleInstance($module, $type = 'view', $kind = '') { 
    264261            $class_path = ModuleHandler::getModulePath($module); 
    265             if(!$class_path) return NULL; 
     262            if(!is_dir(_XE_PATH_.$class_path)) return NULL; 
    266263 
    267264            if(__DEBUG__==3) $start_time = getMicroTime(); 
     
    278275                // 상위 클래스명 구함 
    279276                if(!class_exists($module)) { 
    280                     $high_class_file = sprintf('%s%s.class.php', $class_path, $module); 
     277                    $high_class_file = sprintf('%s%s%s.class.php', _XE_PATH_,$class_path, $module); 
    281278                    if(!file_exists($high_class_file)) return NULL; 
    282279                    require_once($high_class_file); 
     
    288285                            if($kind == 'admin') { 
    289286                                $instance_name = sprintf("%sAdmin%s",$module,"Controller"); 
    290                                 $class_file = sprintf('%s%s.admin.%s.php', $class_path, $module, $type); 
     287                                $class_file = sprintf('%s%s%s.admin.%s.php', _XE_PATH_, $class_path, $module, $type); 
    291288                            } else { 
    292289                                $instance_name = sprintf("%s%s",$module,"Controller"); 
    293                                 $class_file = sprintf('%s%s.%s.php', $class_path, $module, $type); 
     290                                $class_file = sprintf('%s%s%s.%s.php', _XE_PATH_, $class_path, $module, $type); 
    294291                            } 
    295292                        break; 
     
    297294                            if($kind == 'admin') { 
    298295                                $instance_name = sprintf("%sAdmin%s",$module,"Model"); 
    299                                 $class_file = sprintf('%s%s.admin.%s.php', $class_path, $module, $type); 
     296                                $class_file = sprintf('%s%s%s.admin.%s.php', _XE_PATH_, $class_path, $module, $type); 
    300297                            } else { 
    301298                                $instance_name = sprintf("%s%s",$module,"Model"); 
    302                                 $class_file = sprintf('%s%s.%s.php', $class_path, $module, $type); 
     299                                $class_file = sprintf('%s%s%s.%s.php', _XE_PATH_, $class_path, $module, $type); 
    303300                            } 
    304301                        break; 
    305302                    case 'class' : 
    306303                            $instance_name = $module; 
    307                             $class_file = sprintf('%s%s.class.php', $class_path, $module); 
     304                            $class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module); 
    308305                        break; 
    309306                    default : 
     
    311308                            if($kind == 'admin') { 
    312309                                $instance_name = sprintf("%sAdmin%s",$module,"View"); 
    313                                 $class_file = sprintf('%s%s.admin.view.php', $class_path, $module, $type); 
     310                                $class_file = sprintf('%s%s%s.admin.view.php', _XE_PATH_, $class_path, $module, $type); 
    314311                            } else { 
    315312                                $instance_name = sprintf("%s%s",$module,"View"); 
    316                                 $class_file = sprintf('%s%s.view.php', $class_path, $module, $type); 
     313                                $class_file = sprintf('%s%s%s.view.php', _XE_PATH_, $class_path, $module, $type); 
    317314                            } 
    318315                        break; 
     
    362359            $oModuleModel = &getModel('module'); 
    363360 
    364             $cache_dir = sprintf("./files/cache/triggers/"); 
     361            $cache_dir = sprintf("%sfiles/cache/triggers/",_XE_PATH_); 
    365362            if(!is_dir($cache_dir)) FileHandler::makeDir($cache_dir); 
    366363 
  • sandbox/classes/module/ModuleObject.class.php

    r3519 r4290  
    229229         **/ 
    230230        function setTemplatePath($path) { 
    231             if(substr($path,0,2)!='./') $path = './'.$path; 
     231            if(substr($path,0,1)!='/' && substr($path,0,2)!='./') $path = './'.$path; 
    232232            if(substr($path,-1)!='/') $path .= '/'; 
    233233            $this->template_path = $path; 
     
    275275         **/ 
    276276        function setLayoutPath($path) { 
     277            if(substr($path,0,1)!='/' && substr($path,0,2)!='./') $path = './'.$path; 
    277278            if(substr($path,-1)!='/') $path .= '/'; 
    278             if(substr($path,0,2)!='./') $path = './'.$path; 
    279279            $this->layout_path = $path; 
    280280        } 
     
    298298            // addon 실행(called_position 를 before_module_proc로 하여 호출) 
    299299            $called_position = 'before_module_proc'; 
    300             @include("./files/cache/activated_addons.cache.php"); 
     300            @include(_XE_PATH_."files/cache/activated_addons.cache.php"); 
    301301 
    302302            // 지금까지 이상이 없었다면 action 실행 
     
    348348            // addon 실행(called_position 를 after_module_proc로 하여 호출) 
    349349            $called_position = 'after_module_proc'; 
    350             @include("./files/cache/activated_addons.cache.php"); 
     350            @include(_XE_PATH_."files/cache/activated_addons.cache.php"); 
    351351 
    352352            if(is_a($output, 'Object') || is_subclass_of($output, 'Object')) { 
  • sandbox/classes/xml/XmlQueryParser.class.php

    r3715 r4290  
    5050 
    5151                // 테이블을 찾아서 컬럼의 속성을 구함 
    52                 $table_file = sprintf('./%s/%s/schemas/%s.xml', 'modules', $module, $table_name); 
     52                $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $module, $table_name); 
    5353                if(!file_exists($table_file)) { 
    54                     $searched_list = FileHandler::readDir('./modules'); 
     54                    $searched_list = FileHandler::readDir(_XE_PATH_.'modules'); 
    5555                    $searched_count = count($searched_list); 
    5656                    for($i=0;$i<$searched_count;$i++) { 
    57                         $table_file = sprintf('./%s/%s/schemas/%s.xml', 'modules', $searched_list[$i], $table_name); 
     57                        $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $searched_list[$i], $table_name); 
    5858                        if(file_exists($table_file)) break; 
    5959                    } 
  • sandbox/common/js/tree_menu.js

    r2879 r4290  
    126126        if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl); 
    127127    } 
     128 
     129    var waiting_obj = xGetElementById("waitingforserverresponse"); 
     130    if(waiting_obj) waiting_obj.style.visibility = "hidden"; 
    128131 
    129132    return null; 
  • sandbox/config/config.inc.php

    r4209 r4290  
    5757 
    5858    /** 
     59     * @brief zbXE가 설치된 장소의 base path를 구함 
     60     **/ 
     61    define('_XE_PATH_', str_replace('config/config.inc.php','',__FILE__)); 
     62 
     63    /** 
    5964     * @brief 간단하게 사용하기 위한 함수 정의한 파일 require 
    6065     **/ 
    61     require_once('./config/func.inc.php'); 
     66    require_once(_XE_PATH_.'config/func.inc.php'); 
    6267 
    6368 
     
    7075     **/ 
    7176    if(__DEBUG__) define('__ClassLoadStartTime__', getMicroTime()); 
    72     require_once('./classes/object/Object.class.php'); 
    73     require_once('./classes/handler/Handler.class.php'); 
    74     require_once('./classes/xml/XmlParser.class.php'); 
    75     require_once('./classes/context/Context.class.php'); 
    76     require_once('./classes/db/DB.class.php'); 
    77     require_once('./classes/file/FileHandler.class.php'); 
    78     require_once('./classes/widget/WidgetHandler.class.php'); 
    79     require_once('./classes/editor/EditorHandler.class.php'); 
    80     require_once('./classes/module/ModuleObject.class.php'); 
    81     require_once('./classes/module/ModuleHandler.class.php'); 
    82     require_once('./classes/display/DisplayHandler.class.php'); 
    83     require_once('./classes/template/TemplateHandler.class.php'); 
    84     require_once('./classes/mail/Mail.class.php'); 
     77    require_once(_XE_PATH_.'classes/object/Object.class.php'); 
     78    require_once(_XE_PATH_.'classes/handler/Handler.class.php'); 
     79    require_once(_XE_PATH_.'classes/xml/XmlParser.class.php'); 
     80    require_once(_XE_PATH_.'classes/context/Context.class.php'); 
     81    require_once(_XE_PATH_.'classes/db/DB.class.php'); 
     82    require_once(_XE_PATH_.'classes/file/FileHandler.class.php'); 
     83    require_once(_XE_PATH_.'classes/widget/WidgetHandler.class.php'); 
     84    require_once(_XE_PATH_.'classes/editor/EditorHandler.class.php'); 
     85    require_once(_XE_PATH_.'classes/module/ModuleObject.class.php'); 
     86    require_once(_XE_PATH_.'classes/module/ModuleHandler.class.php'); 
     87    require_once(_XE_PATH_.'classes/display/DisplayHandler.class.php'); 
     88    require_once(_XE_PATH_.'classes/template/TemplateHandler.class.php'); 
     89    require_once(_XE_PATH_.'classes/mail/Mail.class.php'); 
    8590    if(__DEBUG__) $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLoadStartTime__; 
    86  
    87     /** 
    88      * @brief 세션 설정 
    89      * 세션의 파기 시간을 5시간으로 하고 세션 저장 경로를 files/session 으로 변경 
    90      **/ 
    91     if(!ini_get('session.auto_start')) { 
    92         session_cache_limiter('no-cache, must-revalidate'); 
    93         ini_set('se