From d5126c29255214ca52b95e3f17fe71326e162995 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 08:48:10 +0000 Subject: [PATCH] =?UTF-8?q?=EC=84=B8=EC=85=98=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EC=97=90=20=ED=95=B4=EB=8B=B9=20=EC=84=B8=EC=85=98=EC=9D=B4=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=ED=95=98=EB=8A=94=20mid=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EA=B8=B0=EC=9E=85=ED=95=98=EB=8F=84=EB=A1=9D=20=ED=95=98?= =?UTF-8?q?=EC=98=80=EA=B3=A0=20=ED=98=84=EC=9E=AC=20=EC=A0=91=EC=86=8D?= =?UTF-8?q?=EC=9E=90=20=EC=B6=9C=EB=A0=A5=20=EC=9C=84=EC=A0=AF=EC=97=90?= =?UTF-8?q?=EC=84=9C=20mid=EA=B0=92=EC=9D=84=20=EB=B0=98=EC=98=81=ED=95=A0?= =?UTF-8?q?=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4292 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/queries/getLoggedMembers.xml | 1 + .../session/queries/getLoogedMemberList.xml | 14 ------------ modules/session/queries/insertSession.xml | 1 + modules/session/queries/updateSession.xml | 1 + modules/session/schemas/session.xml | 1 + modules/session/session.class.php | 15 +++++++++++++ modules/session/session.controller.php | 5 +++++ modules/session/session.model.php | 22 +++++++++++++++---- widgets/logged_members/conf/info.xml | 13 +++++++++++ .../logged_members/logged_members.class.php | 10 +++++++-- 10 files changed, 63 insertions(+), 20 deletions(-) delete mode 100644 modules/session/queries/getLoogedMemberList.xml diff --git a/modules/session/queries/getLoggedMembers.xml b/modules/session/queries/getLoggedMembers.xml index a7c1f338f..b0a0f84a8 100644 --- a/modules/session/queries/getLoggedMembers.xml +++ b/modules/session/queries/getLoggedMembers.xml @@ -7,6 +7,7 @@ + diff --git a/modules/session/queries/getLoogedMemberList.xml b/modules/session/queries/getLoogedMemberList.xml deleted file mode 100644 index 4a6705354..000000000 --- a/modules/session/queries/getLoogedMemberList.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/modules/session/queries/insertSession.xml b/modules/session/queries/insertSession.xml index c47ecae20..c5bfae94d 100644 --- a/modules/session/queries/insertSession.xml +++ b/modules/session/queries/insertSession.xml @@ -9,5 +9,6 @@ + diff --git a/modules/session/queries/updateSession.xml b/modules/session/queries/updateSession.xml index f0f718e88..a04ead9f7 100644 --- a/modules/session/queries/updateSession.xml +++ b/modules/session/queries/updateSession.xml @@ -8,6 +8,7 @@ + diff --git a/modules/session/schemas/session.xml b/modules/session/schemas/session.xml index 6550fa48e..43f18af9d 100644 --- a/modules/session/schemas/session.xml +++ b/modules/session/schemas/session.xml @@ -5,4 +5,5 @@ +
diff --git a/modules/session/session.class.php b/modules/session/session.class.php index ffb458ba3..1e34f363c 100644 --- a/modules/session/session.class.php +++ b/modules/session/session.class.php @@ -25,6 +25,9 @@ $oModuleController = &getController('module'); $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); + $oDB = &DB::getInstance(); + $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); + return new Object(); } @@ -39,6 +42,10 @@ if(!$oDB->isTableExists('session')) return true; + if(!$oDB->isColumnExists("session","cur_mid")) return true; + + if(!$oDB->isIndexExists("session","idx_session_update_mid")) return true; + return false; } @@ -54,6 +61,14 @@ if(!$oModuleModel->getActionForward('dispSessionAdminIndex')) $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); + + if(!$oDB->isColumnExists("session","cur_mid")) { + $oDB->addColumn('session',"cur_mid","varchar",128); + } + + if(!$oDB->isIndexExists("session","idx_session_update_mid")) + $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); + } /** diff --git a/modules/session/session.controller.php b/modules/session/session.controller.php index 0108e0d7f..927f0a80f 100644 --- a/modules/session/session.controller.php +++ b/modules/session/session.controller.php @@ -34,6 +34,11 @@ $args->expired = date("YmdHis", time()+$this->lifetime); $args->val = $val; + $args->cur_mid = Context::get('mid'); + if(!$args->cur_mid) { + $module_info = Context::get('current_module_info'); + $args->cur_mid = $module_info->mid; + } if(Context::get('is_logged')) { $logged_info = Context::get('logged_info'); diff --git a/modules/session/session.model.php b/modules/session/session.model.php index ecc0d2d79..ca1a71a3d 100644 --- a/modules/session/session.model.php +++ b/modules/session/session.model.php @@ -27,6 +27,14 @@ if(!$output->toBool()) { $oDB = &DB::getInstance(); if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); + if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); + $output = executeQuery('session.getSession', $args); + } + + // 세션 정보에서 cur_mid값이 없을 경우 테이블 생성 체크 + if(!isset($output->data->cur_mid)) { + $oDB = &DB::getInstance(); + if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); } return $output->data->val; @@ -34,11 +42,17 @@ /** * @brief 현재 접속중인 사용자의 목록을 구함 - * period_time 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 + * 여러개의 인자값을 필요로 해서 object를 인자로 받음 + * limit_count : 대상 수 + * page : 페이지 번호 + * period_time : 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 + * mid : 특정 mid에 속한 사용자 **/ - function getLoggedMembers($limit_count = 20, $page = 1, $period_time = 3) { - $args->last_update = date("YmdHis", time() - $period_time*60); - $args->page = $page; + function getLoggedMembers($args) { + if(!$args->limit_count) $args->limit_count = 20; + if(!$args->page) $args->page = 1; + if(!$args->period_time) $args->period_time = 3; + $args->last_update = date("YmdHis", time() - $args->period_time*60); $output = executeQueryArray('session.getLoggedMembers', $args); if(!$output->toBool() || !$output->data) return $output; diff --git a/widgets/logged_members/conf/info.xml b/widgets/logged_members/conf/info.xml index a88c176c8..092d7dd12 100644 --- a/widgets/logged_members/conf/info.xml +++ b/widgets/logged_members/conf/info.xml @@ -13,5 +13,18 @@ text 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) + + 대상 지정 + select + 대상을 전체로 하면 홈페이지 접속자 모두가 출력되고 Mid 구분으로 하게 되면 접속한 Mid에 같이 접속한 회원만 출력이 됩니다. + + 전체 + total + + + Mid 구분 + mid + + diff --git a/widgets/logged_members/logged_members.class.php b/widgets/logged_members/logged_members.class.php index 0551c6971..75196833f 100644 --- a/widgets/logged_members/logged_members.class.php +++ b/widgets/logged_members/logged_members.class.php @@ -16,13 +16,19 @@ **/ function proc($args) { - // 위젯 자체적으로 설정한 변수들을 체크 $list_count = (int)$args->list_count; if(!$list_count) $list_count = 5; + $use_mid = $args->use_mid; + if($use_mid == 'mid') $mid = Context::get('mid'); + else $mid = null; + + $obj->list_count = $list_count; + $obj->mid = $mid; + // session model 객체 생성 $oSessionModel = &getModel('session'); - $output = $oSessionModel->getLoggedMembers($list_count); + $output = $oSessionModel->getLoggedMembers($obj); $widget_info->member_list = $output->data; Context::set('widget_info', $widget_info);