virtual site + homepage package 추가. 아직 미완성 버전이므로 서비스 반영하지 말아주세요. 테스트중

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4871 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-11-17 10:45:57 +00:00
parent c5dbc3405c
commit e745b70268
171 changed files with 5243 additions and 274 deletions

View file

@ -335,11 +335,12 @@
* @brief 그룹 등록
**/
function insertGroup($args) {
if(!$args->site_srl) $args->site_srl = 0;
// is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리
if($args->is_default!='Y') {
$args->is_default = 'N';
} else {
$output = executeQuery('member.updateGroupDefaultClear');
$output = executeQuery('member.updateGroupDefaultClear', $args);
if(!$output->toBool()) return $output;
}
@ -353,7 +354,7 @@
// is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리
if($args->is_default!='Y') $args->is_default = 'N';
else {
$output = executeQuery('member.updateGroupDefaultClear');
$output = executeQuery('member.updateGroupDefaultClear', $args);
if(!$output->toBool()) return $output;
}
@ -363,7 +364,7 @@
/**
* 그룹 삭제
**/
function deleteGroup($group_srl) {
function deleteGroup($group_srl, $site_srl = null) {
// 멤버모델 객체 생성
$oMemberModel = &getModel('member');
@ -374,7 +375,7 @@
if($group_info->is_default == 'Y') return new Object(-1, 'msg_not_delete_default');
// is_default == 'Y'인 그룹을 가져옴
$default_group = $oMemberModel->getDefaultGroup();
$default_group = $oMemberModel->getDefaultGroup($site_srl);
$default_group_srl = $default_group->group_srl;
// default_group_srl로 변경

View file

@ -78,6 +78,21 @@
return executeQuery($query_id, $args);
}
/**
* @brief 사이트별 회원 목록을 구함
**/
function getSiteMemberList($site_srl, $page = 1) {
$args->site_srl = $site_srl;
$args->page = $page;
$args->list_count = 40;
$args->page_count = 10;
$query_id = 'member.getSiteMemberList';
$output = executeQueryArray($query_id, $args);
if(!$output->data) return array();
return $output;
}
/**
* @brief 회원 모듈의 특정 스킨에 속한 컬러셋 목록을 return
**/

View file

@ -46,7 +46,7 @@
// 개인별로 그룹목록을 가져 옴
if($output->data) {
foreach($output->data as $key => $member) {
$output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl);
$output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl,0);
}
}

View file

@ -67,6 +67,9 @@
$oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageName');
$oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageMark');
$oDB = &DB::getInstance();
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
$oModuleModel = &getModel('module');
$args = $oModuleModel->getModuleConfig('member');
@ -190,6 +193,11 @@
$act = $oDB->isColumnExists("member_auth_mail", "is_register");
if(!$act) return true;
// member_group_member 테이블에 site_srl 추가 (2008. 11. 15)
if(!$oDB->isColumnExists("member_group_member", "site_srl")) return true;
if(!$oDB->isColumnExists("member_group", "site_srl")) return true;
if($oDB->isIndexExists("member_group","uni_member_group_title")) return true;
return false;
}
@ -220,6 +228,19 @@
$oDB->addColumn("member_auth_mail", "is_register", "char", 1, "N", true);
}
// member_group_member 테이블에 site_srl 추가 (2008. 11. 15)
if (!$oDB->isColumnExists("member_group_member", "site_srl")) {
$oDB->addColumn("member_group_member", "site_srl", "number", 11, 0, true);
$oDB->addIndex("member_group_member", "idx_site_srl", "site_srl", false);
}
if (!$oDB->isColumnExists("member_group", "site_srl")) {
$oDB->addColumn("member_group", "site_srl", "number", 11, 0, true);
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
}
if($oDB->isIndexExists("member_group","uni_member_group_title")) {
$oDB->dropIndex("member_group","uni_member_group_title",true);
}
return new Object(0, 'success_updated');
}

View file

@ -862,14 +862,40 @@
/**
* @brief member_srl에 group_srl을 추가
**/
function addMemberToGroup($member_srl,$group_srl) {
function addMemberToGroup($member_srl,$group_srl,$site_srl=0) {
$args->member_srl = $member_srl;
$args->group_srl = $group_srl;
if($site_srl) $args->site_srl = $site_srl;
// 추가
return executeQuery('member.addMemberToGroup',$args);
}
/**
* @brief 특정 회원들의 그룹을 일괄 변경
**/
function replaceMemberGroup($args) {
$obj->site_srl = $args->site_srl;
$obj->member_srl = implode(',',$args->member_srl);
$output = executeQuery('member.deleteMembersGroup', $obj);
if(!$output->toBool()) return $output;
$inserted_members = array();
foreach($args->member_srl as $key => $val) {
if($inserted_members[$val]) continue;
$inserted_members[$val] = true;
unset($obj);
$obj->member_srl = $val;
$obj->group_srl = $args->group_srl;
$obj->site_srl = $args->site_srl;
$output = executeQuery('member.addMemberToGroup', $obj);
if(!$output->toBool()) return $output;
}
return new Object();
}
/**
* @brief 자동 로그인 시킴
**/
@ -993,12 +1019,13 @@
$_SESSION['is_logged'] = true;
$_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['member_srl'] = $member_info->member_srl;
$_SESSION['is_admin'] = false;
$_SESSION['is_admin'] = '';
// 비밀번호는 세션에 저장되지 않도록 지워줌;;
unset($member_info->password);
// 사용자 그룹 설정
/*
if($member_info->group_list) {
$group_srl_list = array_keys($member_info->group_list);
$_SESSION['group_srls'] = $group_srl_list;
@ -1006,8 +1033,9 @@
// 관리자 그룹일 경우 관리자로 지정
$oMemberModel = &getModel('member');
$admin_group = $oMemberModel->getAdminGroup();
if($admin_group->group_srl && in_array($admin_group->group_srl, $group_srl_list)) $_SESSION['is_admin'] = true;
if($admin_group->group_srl && in_array($admin_group->group_srl, $group_srl_list)) $_SESSION['is_admin'] = 'Y';
}
*/
// 세션에 로그인 사용자 정보 저장
$_SESSION['logged_info'] = $member_info;
@ -1119,7 +1147,7 @@
// 입력된 그룹 값이 없으면 기본 그룹의 값을 등록
if(!$args->group_srl_list) {
$default_group = $oMemberModel->getDefaultGroup();
$default_group = $oMemberModel->getDefaultGroup(0);
// 기본 그룹에 추가
$output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl);

View file

@ -10,7 +10,6 @@
/**
* @brief 자주 호출될거라 예상되는 데이터는 내부적으로 가지고 있자...
**/
var $member_groups = NULL;
var $join_form_list = NULL;
/**
@ -117,7 +116,37 @@
**/
function getLoggedInfo() {
// 로그인 되어 있고 세션 정보를 요청하면 세션 정보를 return
if($this->isLogged()) return $_SESSION['logged_info'];
if($this->isLogged()) {
$logged_info = $_SESSION['logged_info'];
// site_module_info에 따라서 관리자/ 그룹 목록을 매번 재지정
$site_module_info = Context::get('site_module_info');
if($site_module_info) {
unset($logged_info->group_list);
$site_srl = $site_module_info->site_srl;
$groups = $this->getMemberGroups($logged_info->member_srl, $site_srl);
// 만약 현재 접속된 사이트의 그룹이 없으면 기본 그룹을 지정
if(!count($groups)) {
$default_group = $this->getDefaultGroup($site_module_info->site_srl);
$oMemberController = &getController('member');
$oMemberController->addMemberToGroup($logged_info->member_srl, $default_group->group_srl, $site_srl);
$groups[$default_group->group_srl] = $default_group->title;
}
$logged_info->group_list = $groups;
$oModuleModel = &getModel('module');
if($oModuleModel->isSiteAdmin()) $logged_info->is_site_admin = true;
else $logged_info->is_site_admin = false;
} else {
$logged_info->is_site_admin = false;
}
$_SESSION['logged_info'] = $logged_info;
return $logged_info;
}
return NULL;
}
@ -216,9 +245,11 @@
/**
* @brief member_srl이 속한 group 목록을 가져옴
**/
function getMemberGroups($member_srl) {
if(!$this->member_groups[$member_srl]) {
function getMemberGroups($member_srl, $site_srl = 0) {
static $member_groups = array();
if(!$member_groups[$member_srl][$site_srl]) {
$args->member_srl = $member_srl;
$args->site_srl = $site_srl;
$output = executeQuery('member.getMemberGroups', $args);
if(!$output->data) return array();
@ -228,16 +259,33 @@
foreach($group_list as $group) {
$result[$group->group_srl] = $group->title;
}
$this->member_groups[$member_srl] = $result;
$member_groups[$member_srl][$site_srl] = $result;
}
return $this->member_groups[$member_srl];
return $member_groups[$member_srl][$site_srl];
}
/**
* @brief member_srl들이 속한 group 목록을 가져옴
**/
function getMembersGroups($member_srls, $site_srl = 0) {
$args->member_srls = implode(',',$member_srls);
$args->site_srl = $site_srl;
$output = executeQuery('member.getMembersGroups', $args);
if(!$output->data) return array();
$result = array();
foreach($output->data as $key=>$val) {
$result[$val->member_srl][] = $val->title;
}
return $result;
}
/**
* @brief 기본 그룹을 가져옴
**/
function getDefaultGroup() {
$output = executeQuery('member.getDefaultGroup');
function getDefaultGroup($site_srl = 0) {
$args->site_srl = $site_srl;
$output = executeQuery('member.getDefaultGroup', $args);
return $output->data;
}
@ -261,8 +309,9 @@
/**
* @brief 그룹 목록을 가져옴
**/
function getGroups() {
$output = executeQuery('member.getGroups');
function getGroups($site_srl = 0) {
$args->site_srl = $site_srl;
$output = executeQuery('member.getGroups', $args);
if(!$output->data) return;
$group_list = $output->data;

View file

@ -5,6 +5,7 @@
<columns>
<column name="group_srl" var="group_srl" notnull="notnull" />
<column name="member_srl" var="member_srl" notnull="notnull" />
<column name="site_srl" var="site_srl" default="0" />
<column name="regdate" default="curdate()" />
</columns>
</query>

View file

@ -0,0 +1,8 @@
<query id="deleteMemberGroup" action="delete">
<tables>
<table name="member_group_member" />
</tables>
<conditions>
<condition operation="equal" column="site_srl" var="site_srl" notnull="notnull" />
</conditions>
</query>

View file

@ -3,7 +3,7 @@
<table name="member_group_member" />
</tables>
<conditions>
<condition operation="more" column="group_srl" default="0" />
<condition operation="in" column="member_srl" var="member_srl" notnull="notnull" filter="number" pipe="and" />
<condition operation="equal" column="site_srl" var="site_srl" default="0" />
<condition operation="in" column="member_srl" var="member_srl" notnull="notnull" filter="numbers" pipe="and" />
</conditions>
</query>

View file

@ -7,5 +7,6 @@
</columns>
<conditions>
<condition operation="equal" column="is_default" default="Y" />
<condition operation="equal" column="site_srl" var="site_srl" pipe="and" />
</conditions>
</query>

View file

@ -5,4 +5,7 @@
<navigation>
<index var="sort_index" default="group_srl" order="desc" />
</navigation>
<conditions>
<condition operation="equal" column="site_srl" var="site_srl" />
</conditions>
</query>

View file

@ -9,6 +9,7 @@
</columns>
<conditions>
<condition operation="equal" column="b.member_srl" var="member_srl" filter="number" notnull="notnull" />
<condition operation="equal" column="b.group_srl" var="a.group_srl" pipe="and" />
<condition operation="equal" column="b.group_srl" default="a.group_srl" pipe="and" />
<condition operation="equal" column="a.site_srl" var="site_srl" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,16 @@
<query id="getMembersGroups" action="select">
<tables>
<table name="member_group" alias="a"/>
<table name="member_group_member" alias="b"/>
</tables>
<columns>
<column name="a.title" alias="title" />
<column name="a.group_srl" alias="group_srl" />
<column name="b.member_srl" alias="member_srl" />
</columns>
<conditions>
<condition operation="equal" column="b.site_srl" var="site_srl" default="0" />
<condition operation="equal" column="a.group_srl" default="b.group_srl" pipe="and" />
<condition operation="in" column="b.member_srl" var="member_srls" filter="numbers" notnull="notnull" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,25 @@
<query id="getSiteMemberList" action="select">
<tables>
<table name="member_group_member" />
<table name="member_group" />
<table name="member" />
</tables>
<columns>
<column name="member.*" />
<column name="member_group_member.regdate" alias="regdate" />
</columns>
<conditions>
<condition operation="equal" column="member_group.site_srl" var="site_srl" notnull="notnull"/>
<condition operation="equal" column="member_group_member.group_srl" default="member_group.group_srl" notnull="notnull" pipe="and"/>
<condition operation="equal" column="member.member_srl" var="member_group_member.member_srl" pipe="and" />
</conditions>
<navigation>
<index var="sort_index" default="member.member_srl" order="desc" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
<groups>
<group column="member.member_srl" />
</groups>
</query>

View file

@ -3,6 +3,7 @@
<table name="member_group" />
</tables>
<columns>
<column name="site_srl" var="site_srl" default="0" notnull="notnull" />
<column name="group_srl" var="group_srl" default="sequence()" notnull="notnull" />
<column name="title" var="title" notnull="notnull" />
<column name="is_default" var="is_default" default="N" notnull="notnull" />

View file

@ -5,4 +5,7 @@
<columns>
<column name="is_default" default="N" />
</columns>
<conditions>
<condition operation="equal" column="site_srl" var="site_srl" default="0" notnull="notnull" />
</conditions>
</query>

View file

@ -1,6 +1,7 @@
<table name="member_group">
<column name="site_srl" type="number" size="11" notnull="notnull" default="0" />
<column name="group_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
<column name="title" type="varchar" size="80" notnull="notnull" unique="uni_member_group_title" />
<column name="title" type="varchar" size="80" notnull="notnull" />
<column name="regdate" type="date" />
<column name="is_default" type="char" default="N" />
<column name="is_admin" type="char" default="N" />

View file

@ -1,4 +1,5 @@
<table name="member_group_member">
<column name="site_srl" type="number" size="11" notnull="notnull" index="idx_site_srl" default="0" />
<column name="group_srl" type="number" size="11" notnull="notnull" index="idx_group_member" />
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_group_member" />
<column name="regdate" type="date" />