Changeset 4292 for sandbox

Show
Ignore:
Timestamp:
06/18/2008 05:48:10 PM (3 months ago)
Author:
zero
Message:

세션 정보에 해당 세션이 위치하는 mid값을 기입하도록 하였고 현재 접속자 출력 위젯에서 mid값을 반영할 수 있도록 변경

Location:
sandbox
Files:
1 removed
9 modified

Legend:

Unmodified
Added
Removed
  • sandbox/modules/session/queries/getLoggedMembers.xml

    r4290 r4292  
    88    <conditions> 
    99        <condition operation="more" column="last_update" var="last_update" notnull="notnull" /> 
     10        <condition operation="equal" column="cur_mid" var="mid" pipe="and" /> 
    1011    </conditions> 
    1112    <navigation> 
  • sandbox/modules/session/queries/insertSession.xml

    r4290 r4292  
    1010        <column name="ipaddress" default="ipaddress()" /> 
    1111        <column name="last_update" default="curdate()" /> 
     12        <column name="cur_mid" var="cur_mid" /> 
    1213    </columns> 
    1314</query> 
  • sandbox/modules/session/queries/updateSession.xml

    r4290 r4292  
    99        <column name="ipaddress" default="ipaddress()" /> 
    1010        <column name="last_update" default="curdate()" /> 
     11        <column name="cur_mid" var="cur_mid" /> 
    1112    </columns> 
    1213    <conditions> 
  • sandbox/modules/session/schemas/session.xml

    r4290 r4292  
    66    <column name="ipaddress" type="varchar" size="128" notnull="notnull" /> 
    77    <column name="last_update" type="date" index="idx_session_update" /> 
     8    <column name="cur_mid" type="varchar" size="128" index="idx_session_cur_mid" /> 
    89</table> 
  • sandbox/modules/session/session.class.php

    r4291 r4292  
    2626            $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); 
    2727 
     28            $oDB = &DB::getInstance(); 
     29            $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); 
     30 
    2831            return new Object(); 
    2932        } 
     
    3942 
    4043            if(!$oDB->isTableExists('session')) return true; 
     44 
     45            if(!$oDB->isColumnExists("session","cur_mid")) return true; 
     46 
     47            if(!$oDB->isIndexExists("session","idx_session_update_mid")) return true; 
    4148 
    4249            return false; 
     
    5562            if(!$oModuleModel->getActionForward('dispSessionAdminIndex'))  
    5663                $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); 
     64 
     65            if(!$oDB->isColumnExists("session","cur_mid")) { 
     66                $oDB->addColumn('session',"cur_mid","varchar",128); 
     67            } 
     68 
     69            if(!$oDB->isIndexExists("session","idx_session_update_mid"))  
     70                $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); 
     71 
    5772        } 
    5873 
  • sandbox/modules/session/session.controller.php

    r4290 r4292  
    3535            $args->expired = date("YmdHis", time()+$this->lifetime); 
    3636            $args->val = $val; 
     37            $args->cur_mid = Context::get('mid'); 
     38            if(!$args->cur_mid) { 
     39                $module_info = Context::get('current_module_info'); 
     40                $args->cur_mid = $module_info->mid; 
     41            } 
    3742 
    3843            if(Context::get('is_logged')) { 
  • sandbox/modules/session/session.model.php

    r4290 r4292  
    2828                $oDB = &DB::getInstance(); 
    2929                if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); 
     30                if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); 
     31                $output = executeQuery('session.getSession', $args); 
     32            } 
     33 
     34            // 세션 정보에서 cur_mid값이 없을 경우 테이블 생성 체크 
     35            if(!isset($output->data->cur_mid)) { 
     36                $oDB = &DB::getInstance(); 
     37                if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); 
    3038            } 
    3139 
     
    3543        /** 
    3644         * @brief 현재 접속중인 사용자의 목록을 구함 
    37          * period_time 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 
     45         * 여러개의 인자값을 필요로 해서 object를 인자로 받음 
     46         * limit_count : 대상 수 
     47         * page : 페이지 번호 
     48         * period_time : 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 
     49         * mid : 특정 mid에 속한 사용자 
    3850         **/ 
    39         function getLoggedMembers($limit_count = 20, $page = 1, $period_time = 3) { 
    40             $args->last_update = date("YmdHis", time() - $period_time*60); 
    41             $args->page = $page; 
     51        function getLoggedMembers($args) { 
     52            if(!$args->limit_count) $args->limit_count = 20; 
     53            if(!$args->page) $args->page = 1; 
     54            if(!$args->period_time) $args->period_time = 3; 
     55            $args->last_update = date("YmdHis", time() - $args->period_time*60); 
    4256 
    4357            $output = executeQueryArray('session.getLoggedMembers', $args); 
  • sandbox/widgets/logged_members/conf/info.xml

    r4290 r4292  
    1414            <description xml:lang="ko">출력될 목록의 수를 정하실 수 있습니다. (기본 5개)</description> 
    1515        </var> 
     16        <var id="use_mid"> 
     17            <name xml:lang="ko">대상 지정</name> 
     18            <type>select</type> 
     19            <description xml:lang="ko">대상을 전체로 하면 홈페이지 접속자 모두가 출력되고 Mid 구분으로 하게 되면 접속한 Mid에 같이 접속한 회원만 출력이 됩니다.</description> 
     20            <options> 
     21                <name xml:lang="ko">전체</name> 
     22                <value>total</value> 
     23            </options> 
     24            <options> 
     25                <name xml:lang="ko">Mid 구분</name> 
     26                <value>mid</value> 
     27            </options> 
     28        </var> 
    1629    </extra_vars> 
    1730</widget> 
  • sandbox/widgets/logged_members/logged_members.class.php

    r4290 r4292  
    1717        function proc($args) { 
    1818 
    19             // 위젯 자체적으로 설정한 변수들을 체크 
    2019            $list_count = (int)$args->list_count; 
    2120            if(!$list_count) $list_count = 5; 
    2221 
     22            $use_mid = $args->use_mid; 
     23            if($use_mid == 'mid') $mid = Context::get('mid'); 
     24            else $mid = null; 
     25 
     26            $obj->list_count = $list_count; 
     27            $obj->mid = $mid; 
     28 
    2329            // session model 객체 생성 
    2430            $oSessionModel = &getModel('session'); 
    25             $output = $oSessionModel->getLoggedMembers($list_count); 
     31            $output = $oSessionModel->getLoggedMembers($obj); 
    2632            $widget_info->member_list = $output->data; 
    2733            Context::set('widget_info', $widget_info);