From 3e481ef18dbf2f1324b7f751e7c67d170f946fed Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 15 Feb 2007 05:47:40 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@41 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/object/Object.class.php | 4 +- modules/install/install.view.php | 2 +- modules/member/member.controller.php | 786 +++++++----------- modules/member/member.model.php | 4 +- modules/member/member.view.php | 436 +++++----- .../{admin => tpl.admin}/delete_form.html | 0 .../{admin => tpl.admin}/denied_list.html | 0 .../filter/filter.delete.xml | 0 .../filter/filter.insert.xml | 0 .../filter/filter.insert_denied_id.xml | 0 .../filter/filter.insert_group.xml | 0 .../filter/filter.insert_join_form.xml | 0 .../filter/filter.update_denied_id.xml | 0 .../filter/filter.update_group.xml | 0 .../{admin => tpl.admin}/group_list.html | 0 .../group_update_form.html | 0 .../member/{admin => tpl.admin}/header.html | 0 .../{admin => tpl.admin}/insert_member.html | 0 .../{admin => tpl.admin}/join_form.html | 0 .../member/{admin => tpl.admin}/js/admin.js | 0 modules/member/{admin => tpl.admin}/list.html | 0 .../{admin => tpl.admin}/member_info.html | 0 22 files changed, 513 insertions(+), 719 deletions(-) rename modules/member/{admin => tpl.admin}/delete_form.html (100%) rename modules/member/{admin => tpl.admin}/denied_list.html (100%) rename modules/member/{admin => tpl.admin}/filter/filter.delete.xml (100%) rename modules/member/{admin => tpl.admin}/filter/filter.insert.xml (100%) rename modules/member/{admin => tpl.admin}/filter/filter.insert_denied_id.xml (100%) rename modules/member/{admin => tpl.admin}/filter/filter.insert_group.xml (100%) rename modules/member/{admin => tpl.admin}/filter/filter.insert_join_form.xml (100%) rename modules/member/{admin => tpl.admin}/filter/filter.update_denied_id.xml (100%) rename modules/member/{admin => tpl.admin}/filter/filter.update_group.xml (100%) rename modules/member/{admin => tpl.admin}/group_list.html (100%) rename modules/member/{admin => tpl.admin}/group_update_form.html (100%) rename modules/member/{admin => tpl.admin}/header.html (100%) rename modules/member/{admin => tpl.admin}/insert_member.html (100%) rename modules/member/{admin => tpl.admin}/join_form.html (100%) rename modules/member/{admin => tpl.admin}/js/admin.js (100%) rename modules/member/{admin => tpl.admin}/list.html (100%) rename modules/member/{admin => tpl.admin}/member_info.html (100%) diff --git a/classes/object/Object.class.php b/classes/object/Object.class.php index 8046021eb..f047028ec 100644 --- a/classes/object/Object.class.php +++ b/classes/object/Object.class.php @@ -19,8 +19,8 @@ * @brief constructor **/ function Object($error = 0, $message = 'success') { - $this->error = $error; - $this->message = $message; + $this->setError($error); + $this->setMessage($message); } /** diff --git a/modules/install/install.view.php b/modules/install/install.view.php index 89787cad2..c4e328072 100644 --- a/modules/install/install.view.php +++ b/modules/install/install.view.php @@ -1,6 +1,6 @@ - * @desc : 기본 모듈중의 하나인 member module - * Module class에서 상속을 받아서 사용 - * action 의 경우 disp/proc 2가지만 존재하며 이는 action명세서에 - * 미리 기록을 하여야 함 - **/ - - class member extends Module { - /** - * 모듈의 정보 - **/ - var $cur_version = "20070130_0.01"; - - /** - * 기본 action 지정 - * $act값이 없거나 잘못된 값이 들어올 경우 $default_act 값으로 진행 - **/ - var $default_act = ''; - - /** - * 현재 모듈의 초기화를 위한 작업을 지정해 놓은 method - * css/js파일의 load라든지 lang파일 load등을 미리 선언 - * - * Init() => 공통 - * dispInit() => disp시에 - * procInit() => proc시에 - * - * $this->module_path는 현재 이 모듈파일의 위치를 나타낸다 - * (ex: $this->module_path = "./modules/member/"; + * @class memberController + * @author zero (zero@nzeo.com) + * @biref 기본 모듈중의 하나인 member module **/ - // 초기화 - function init() {/*{{{*/ - Context::loadLang($this->module_path.'lang'); - }/*}}}*/ - - // disp 초기화 - function dispInit() {/*{{{*/ - return true; - }/*}}}*/ - - // proc 초기화 - function procInit() {/*{{{*/ - return true; - }/*}}}*/ - - /** - * 여기서부터는 action의 구현 - * request parameter의 경우 각 method의 첫번째 인자로 넘어온다 - * - * dispXXXX : 출력을 위한 method, output에 tpl file이 지정되어야 한다 - * procXXXX : 처리를 위한 method, output에는 error, message가 지정되어야 한다 - * - * 변수의 사용은 Context::get('이름')으로 얻어오면 된다 - **/ - - /** - * 여기부터는 이 모듈과 관련된 라이브러리 개념의 method들 - **/ - - // 로그인/로그아웃 처리 - // public void doLogin($user_id, $password) /*{{{*/ - // user_id, password를 체크하여 로그인 시킴 - function doLogin($user_id, $password) { - // 변수 정리 - $user_id = trim($user_id); - $password = trim($password); - - // 이메일 주소나 비밀번호가 없을때 오류 return - if(!$user_id) return new Output(-1,Context::getLang('null_user_id')); - if(!$password) return new Output(-1,Context::getLang('null_password')); - - $oDB = &DB::getInstance(); - - // user_id 에 따른 정보 가져옴 - $args->user_id = $user_id; - $member_info = $this->getMemberInfo($user_id, false); - - // return 값이 없거나 비밀번호가 틀릴 경우 - if($member_info->user_id != $user_id) return new Output(-1, Context::getLang('invalid_user_id')); - if($member_info->password != md5($password)) return new Output(-1, Context::getLang('invalid_password')); - - // 로그인 처리 - $_SESSION['is_logged'] = true; - $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR']; - - unset($member_info->password); - - // 세션에 로그인 사용자 정보 저장 - $_SESSION['member_srl'] = $member_info->member_srl; - $_SESSION['logged_info'] = $member_info; - - // 사용자 정보의 최근 로그인 시간을 기록 - $args->member_srl = $member_info->member_srl; - $oDB->executeQuery('member.updateLastLogin', $args); - - return new Output(); - }/*}}}*/ - - // public void doLogout() /*{{{*/ - // 로그아웃 - function doLogout() { - // 로그인 처리 - $_SESSION['is_logged'] = false; - $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR']; - $_SESSION['logged_info'] = NULL; - return new Output(); - }/*}}}*/ - - // 사용자 정보 - // public object getLoggedInfo()/*{{{*/ - // user_id에 해당하는 사용자 정보 return - function getLoggedInfo() { - // 로그인 되어 있고 세션 정보를 요청하면 세션 정보를 return - if($this->isLogged()) return $_SESSION['logged_info']; - }/*}}}*/ - - // public object getMemberInfo($user_id)/*{{{*/ - // user_id에 해당하는 사용자 정보 return - function getMemberInfo($user_id) { - // DB에서 가져오기 - $oDB = &DB::getInstance(); - $args->user_id = $user_id; - $output = $oDB->executeQuery('member.getMemberInfo', $args); - if(!$output) return $output; - - $member_info = $output->data; - $member_info->group_list = $this->getMemberGroups($member_info->member_srl); - - return $member_info; - }/*}}}*/ - - // public object getMemberInfoByMemberSrl($member_srl)/*{{{*/ - // user_id에 해당하는 사용자 정보 return - function getMemberInfoByMemberSrl($member_srl) { - // DB에서 가져오기 - $oDB = &DB::getInstance(); - $args->member_srl = $member_srl; - $output = $oDB->executeQuery('member.getMemberInfoByMemberSrl', $args); - if(!$output) return $output; - - $member_info = $output->data; - $member_info->group_list = $this->getMemberGroups($member_info->member_srl); - - return $member_info; - }/*}}}*/ - - // public int getMemberSrl() /*{{{*/ - // 현재 접속자의 member_srl을 return - function getMemberSrl() { - if(!$this->isLogged()) return; - return $_SESSION['member_srl']; - }/*}}}*/ - - // public int getUserID() /*{{{*/ - // 현재 접속자의 user_id을 return - function getUserID() { - if(!$this->isLogged()) return; - $logged_info = $_SESSION['logged_info']; - return $logged_info->user_id; - }/*}}}*/ - - - // member 정보 입출력 관련 - // public void insertAdmin($args)/*{{{*/ - // 관리자를 추가한다 - function insertAdmin($args) { - $args->is_admin = 'Y'; - return $this->insertMember($args); - }/*}}}*/ - - // public void insertMember($args)/*{{{*/ - // member 테이블에 사용자 추가 - function insertMember($args) { - // 필수 변수들의 조절 - if($args->allow_mailing!='Y') $args->allow_mailing = 'N'; - if($args->denied!='Y') $args->denied = 'N'; - if($args->is_admin!='Y') $args->is_admin = 'N'; - list($args->email_id, $args->email_host) = explode('@', $args->email_address); - - // 금지 아이디인지 체크 - if($this->chkDeniedID($args->user_id)) return new Output(-1,'denied_user_id'); - - // 아이디, 닉네임, email address 의 중복 체크 - $member_srl = $this->getMemberSrlByUserID($args->user_id); - if($member_srl) return new Output(-1,'msg_exists_user_id'); - - $member_srl = $this->getMemberSrlByNickName($args->nick_name); - if($member_srl) return new Output(-1,'msg_exists_nick_name'); - - $member_srl = $this->getMemberSrlByEmailAddress($args->email_address); - if($member_srl) return new Output(-1,'msg_exists_email_address'); - - // DB 입력 - $oDB = &DB::getInstance(); - $args->member_srl = $oDB->getNextSequence(); - if($args->password) $args->password = md5($args->password); - else unset($args->password); - $output = $oDB->executeQuery('member.insertMember', $args); - if(!$output->toBool()) return $output; - - // 기본 그룹을 입력 - $default_group = $this->getDefaultGroup(); - - // 기본 그룹에 추가 - $output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl); - if(!$output->toBool()) return $output; - - $output->add('member_srl', $args->member_srl); - return $output; - }/*}}}*/ - - // public void updateMember($args)/*{{{*/ - // member 정보 수정 - function updateMember($args) { - $member_info = $this->getMemberInfoByMemberSrl($args->member_srl); - - // 필수 변수들의 조절 - if($args->allow_mailing!='Y') $args->is_default = 'N'; - if($args->denied!='Y') $args->denied = 'N'; - if($args->is_admin!='Y') $args->use_category = 'N'; - list($args->email_id, $args->email_host) = explode('@', $args->email_address); - - // 아이디, 닉네임, email address 의 중복 체크 - $member_srl = $this->getMemberSrlByUserID($args->user_id); - if($member_srl&&$args->member_srl!=$member_srl) return new Output(-1,'msg_exists_user_id'); - $member_srl = $this->getMemberSrlByNickName($args->nick_name); - if($member_srl&&$args->member_srl!=$member_srl) return new Output(-1,'msg_exists_nick_name'); - $member_srl = $this->getMemberSrlByEmailAddress($args->email_address); - if($member_srl&&$args->member_srl!=$member_srl) return new Output(-1,'msg_exists_email_address'); - - // DB 입력 - $oDB = &DB::getInstance(); - if($args->password) $args->password = md5($args->password); - else $args->password = $member_info->password; - - $output = $oDB->executeQuery('member.updateMember', $args); - if(!$output->toBool()) return $output; - - // 그룹에 추가 - $output = $oDB->executeQuery('member.deleteMemberGroupMember', $args); - if(!$output->toBool()) return $output; - - $group_srl_list = explode(',', $args->group_srl_list); - for($i=0;$iaddMemberToGroup($args->member_srl,$group_srl_list[$i]); - if(!$output->toBool()) return $output; - } - - $output->add('member_srl', $args->member_srl); - return $output; - }/*}}}*/ - - // public void deleteMember($member_srl)/*{{{*/ - // 사용자 삭제 - function deleteMember($member_srl) { - - $oDB = &DB::getInstance(); - - // 해당 사용자의 정보를 가져옴 - $member_info = $this->getMemberInfoByMemberSrl($member_srl); - if(!$member_info) return new Output(-1, 'msg_not_exists_member'); - - // 관리자의 경우 삭제 불가능 - if($member_info->is_admin == 'Y') return new Output(-1, 'msg_cannot_delete_admin'); - - // member_group_member에서 해당 항목들 삭제 - $args->member_srl = $member_srl; - $output = $oDB->executeQuery('member.deleteMemberGroupMember', $args); - if(!$output->toBool()) return $output; - - // member 테이블에서 삭제 - $output = $oDB->executeQuery('member.deleteMember', $args); - return $output; - }/*}}}*/ - - // public boolean isLogged() {/*{{{*/ - // 로그인 되어 있는지에 대한 체크 - function isLogged() { - if($_SESSION['is_logged']&&$_SESSION['ipaddress']==$_SERVER['REMOTE_ADDR']) return true; - - $_SESSION['is_logged'] = false; - $_SESSION['logged_info'] = ''; - return false; - }/*}}}*/ - - // group 관련 - // public object addMemberToGroup($member_srl, $group_srl) /*{{{*/ - // member_srl에 gruop_srl을 추가 - function addMemberToGroup($member_srl,$group_srl) { - $args->member_srl = $member_srl; - $args->group_srl = $group_srl; - - $oDB = &DB::getInstance(); - - // 추가 - $output = $oDB->executeQuery('member.addMemberToGroup',$args); - if(!$output->toBool()) return $output; - - return $output; - }/*}}}*/ - - // public void changeGroup($source_group_srl, $target_group_srl)/*{{{*/ - // 회원의 그룹값을 변경 - function changeGroup($source_group_srl, $target_group_srl) { - $oDB = &DB::getInstance(); - $args->source_group_srl = $source_group_srl; - $args->target_group_srl = $target_group_srl; - return $oDB->executeQuery('member.changeGroup', $args); - }/*}}}*/ - - // public object getMemberGroups($member_srl) /*{{{*/ - // member_srl이 속한 group 목록을 가져옴 - function getMemberGroups($member_srl) { - $oDB = &DB::getInstance(); - $args->member_srl = $member_srl; - $output = $oDB->executeQuery('member.getMemberGroups', $args); - if(!$output->data) return; - - $group_list = $output->data; - if(!is_array($group_list)) $group_list = array($group_list); - foreach($group_list as $group) { - $result[$group->group_srl] = $group->title; - } - return $result; - }/*}}}*/ - - // public object getDefaultGroup() /*{{{*/ - // 기본 그룹을 가져옴 - function getDefaultGroup() { - $oDB = &DB::getInstance(); - $output = $oDB->executeQuery('member.getDefaultGroup'); - return $output->data; - }/*}}}*/ - - // public object getGroup($group_srl) /*{{{*/ - // group_srl에 해당하는 그룹 정보 가져옴 - function getGroup($group_srl) { - $oDB = &DB::getInstance(); - $args->group_srl = $group_srl; - $output = $oDB->executeQuery('member.getGroup', $args); - return $output->data; - }/*}}}*/ - - // public object getGroups() /*{{{*/ - // 그룹 목록을 가져옴 - function getGroups() { - $oDB = &DB::getInstance(); - $output = $oDB->executeQuery('member.getGroups'); - if(!$output->data) return; - - $group_list = $output->data; - if(!is_array($group_list)) $group_list = array($group_list); - foreach($group_list as $val) { - $result[$val->group_srl] = $val; - } - return $result; - }/*}}}*/ - - // public object insertGroup() /*{{{*/ - // 그룹 등록 - function insertGroup($args) { - $oDB = &DB::getInstance(); - - // is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리 - if($args->is_default!='Y') $args->is_default = 'N'; - else $oDB->executeQuery('member.updateGroupDefaultClear'); - - $output = $oDB->executeQuery('member.insertGroup', $args); - return $output; - }/*}}}*/ - - // public object updateGroup() /*{{{*/ - // 그룹 등록 - function updateGroup($args) { - $oDB = &DB::getInstance(); - // is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리 - if($args->is_default!='Y') $args->is_default = 'N'; - else { - $oDB->executeQuery('member.updateGroupDefaultClear'); - } - - $output = $oDB->executeQuery('member.updateGroup', $args); - return $output; - }/*}}}*/ - - // public object deleteGroup($group_srl) /*{{{*/ - // 그룹 등록 - function deleteGroup($group_srl) { - // 삭제 대상 그룹을 가져와서 체크 (is_default == 'Y'일 경우 삭제 불가) - $group_info = $this->getGroup($group_srl); - if(!$group_info) return new Output(-1, 'lang->msg_not_founded'); - if($group_info->is_default == 'Y') return new Output(-1, 'msg_not_delete_default'); - - // is_default == 'Y'인 그룹을 가져옴 - $default_group = $this->getDefaultGroup(); - $default_group_srl = $default_group->group_srl; - - // default_group_srl로 변경 - $this->changeGroup($group_srl, $default_group_srl); - - // 그룹 삭제 - $oDB = &DB::getInstance(); - $args->group_srl = $group_srl; - $output = $oDB->executeQuery('member.deleteGroup', $args); - return $output; - }/*}}}*/ - - // 금지 아이디 - // public object getDeniedIDList() /*{{{*/ - // 금지 아이디 목록 가져오기 - function getDeniedIDList() { - $oDB = &DB::getInstance(); - $args->sort_index = "list_order"; - $args->page = Context::get('page'); - $args->list_count = 40; - $args->page_count = 10; - $output = $oDB->executeQuery('member.getDeniedIDList', $args); - return $output; - }/*}}}*/ - - // public object insertDeniedID() /*{{{*/ - // 금지아이디 등록 - function insertDeniedID($user_id, $desription = '') { - $oDB = &DB::getInstance(); - - $args->user_id = $user_id; - $args->description = $description; - $args->list_order = -1*$oDB->getNextSequence(); - - return $oDB->executeQuery('member.insertDeniedID', $args); - }/*}}}*/ - - // public object deleteDeniedID() /*{{{*/ - // 금지아이디 등록 - function deleteDeniedID($user_id) { - $oDB = &DB::getInstance(); - - $args->user_id = $user_id; - return $oDB->executeQuery('member.deleteDeniedID', $args); - }/*}}}*/ - - // public object chkDeniedID($user_id) /*{{{*/ - // 금지아이디 등록 - function chkDeniedID($user_id) { - $oDB = &DB::getInstance(); - - $args->user_id = $user_id; - - $output = $oDB->executeQuery('member.chkDeniedID', $args); - if($output->data->count) return true; - return false; - }/*}}}*/ - - // 기타 - // public boolean getMemberSrlByUserID($user_id) {/*{{{*/ - // userid에 해당하는 member_srl을 구함 - function getMemberSrlByUserID($user_id) { - $oDB = &DB::getInstance(); - $args->user_id = $user_id; - $output = $oDB->executeQuery('member.getMemberSrl', $args); - return $output->data->member_srl; - }/*}}}*/ - - // public boolean getMemberSrlByEmailAddress($email_address) {/*{{{*/ - // userid에 해당하는 member_srl을 구함 - function getMemberSrlByEmailAddress($email_address) { - $oDB = &DB::getInstance(); - $args->email_address = $email_address; - $output = $oDB->executeQuery('member.getMemberSrl', $args); - return $output->data->member_srl; - }/*}}}*/ - - // public boolean getMemberSrlByNickName($nick_name) {/*{{{*/ - // userid에 해당하는 member_srl을 구함 - function getMemberSrlByNickName($nick_name) { - $oDB = &DB::getInstance(); - $args->nick_name = $nick_name; - $output = $oDB->executeQuery('member.getMemberSrl', $args); - return $output->data->member_srl; - }/*}}}*/ - } + class memberController extends Module { + + /** + * @brief 초기화 + **/ + function init() { + } + + /** + * @brief user_id, password를 체크하여 로그인 시킴 + **/ + function doLogin($user_id, $password) { + // 변수 정리 + $user_id = trim($user_id); + $password = trim($password); + + // 이메일 주소나 비밀번호가 없을때 오류 return + if(!$user_id) return new Object(-1,'null_user_id'); + if(!$password) return new Object(-1,'null_password'); + + // DB 객체 생성 + $oDB = &DB::getInstance(); + + // user_id 에 따른 정보 가져옴 + $args->user_id = $user_id; + $member_info = $this->getMemberInfo($user_id, false); + + // return 값이 없거나 비밀번호가 틀릴 경우 + if($member_info->user_id != $user_id) return new Object(-1, 'invalid_user_id'); + if($member_info->password != md5($password)) return new Object(-1, 'invalid_password'); + + // 로그인 처리 + $_SESSION['is_logged'] = true; + $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR']; + + unset($member_info->password); + + // 세션에 로그인 사용자 정보 저장 + $_SESSION['member_srl'] = $member_info->member_srl; + $_SESSION['logged_info'] = $member_info; + + // 사용자 정보의 최근 로그인 시간을 기록 + $args->member_srl = $member_info->member_srl; + $output = $oDB->executeQuery('member.updateLastLogin', $args); + + return $output; + } + + /** + * @brief 로그아웃 + **/ + function doLogout() { + $_SESSION['is_logged'] = false; + $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR']; + $_SESSION['logged_info'] = NULL; + return new Object(); + } + + /** + * @brief 관리자를 추가한다 + **/ + function insertAdmin($args) { + $args->is_admin = 'Y'; + return $this->insertMember($args); + } + + /** + * @brief member 테이블에 사용자 추가 + **/ + function insertMember($args) { + // 필수 변수들의 조절 + if($args->allow_mailing!='Y') $args->allow_mailing = 'N'; + if($args->denied!='Y') $args->denied = 'N'; + if($args->is_admin!='Y') $args->is_admin = 'N'; + list($args->email_id, $args->email_host) = explode('@', $args->email_address); + + // 모델 객체 생성 + $oMemberModel = getModule('member','model'); + + // 금지 아이디인지 체크 + if($oMemberModel->isDeniedID($args->user_id)) return new Object(-1,'denied_user_id'); + + // 아이디, 닉네임, email address 의 중복 체크 + $member_srl = $oMemberModel->getMemberSrlByUserID($args->user_id); + if($member_srl) return new Object(-1,'msg_exists_user_id'); + + $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); + if($member_srl) return new Object(-1,'msg_exists_nick_name'); + + $member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address); + if($member_srl) return new Object(-1,'msg_exists_email_address'); + + // DB 객체 생성 + $oDB = &DB::getInstance(); + + // DB에 입력 + $args->member_srl = $oDB->getNextSequence(); + if($args->password) $args->password = md5($args->password); + else unset($args->password); + + $output = $oDB->executeQuery('member.insertMember', $args); + if(!$output->toBool()) return $output; + + // 기본 그룹을 입력 + $default_group = $oMemberModel->getDefaultGroup(); + + // 기본 그룹에 추가 + $output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl); + if(!$output->toBool()) return $output; + + $output->add('member_srl', $args->member_srl); + return $output; + } + + /** + * @brief member 정보 수정 + **/ + function updateMember($args) { + // 모델 객체 생성 + $oMemberModel = getModule('member','model'); + + // 수정하려는 대상의 원래 정보 가져오기 + $member_info = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl); + + // 필수 변수들의 조절 + if($args->allow_mailing!='Y') $args->is_default = 'N'; + if($args->denied!='Y') $args->denied = 'N'; + if($args->is_admin!='Y') $args->use_category = 'N'; + list($args->email_id, $args->email_host) = explode('@', $args->email_address); + + // 아이디, 닉네임, email address 의 중복 체크 + $member_srl = $oMemberModel->getMemberSrlByUserID($args->user_id); + if($member_srl&&$args->member_srl!=$member_srl) return new Object(-1,'msg_exists_user_id'); + + $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); + if($member_srl&&$args->member_srl!=$member_srl) return new Object(-1,'msg_exists_nick_name'); + + $member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address); + if($member_srl&&$args->member_srl!=$member_srl) return new Object(-1,'msg_exists_email_address'); + + // DB 객체 생성 + $oDB = &DB::getInstance(); + + // DB에 update + if($args->password) $args->password = md5($args->password); + else $args->password = $member_info->password; + + $output = $oDB->executeQuery('member.updateMember', $args); + if(!$output->toBool()) return $output; + + // 그룹에 추가 + $output = $oDB->executeQuery('member.deleteMemberGroupMember', $args); + if(!$output->toBool()) return $output; + + $group_srl_list = explode(',', $args->group_srl_list); + for($i=0;$iaddMemberToGroup($args->member_srl,$group_srl_list[$i]); + + if(!$output->toBool()) return $output; + } + + $output->add('member_srl', $args->member_srl); + return $output; + } + + /** + * @brief 사용자 삭제 + **/ + function deleteMember($member_srl) { + + // 모델 객체 생성 + $oMemberModel = getModule('member','model'); + + // 해당 사용자의 정보를 가져옴 + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + if(!$member_info) return new Object(-1, 'msg_not_exists_member'); + + // 관리자의 경우 삭제 불가능 + if($member_info->is_admin == 'Y') return new Object(-1, 'msg_cannot_delete_admin'); + + // DB 객체 생성 + $oDB = &DB::getInstance(); + + // member_group_member에서 해당 항목들 삭제 + $args->member_srl = $member_srl; + $output = $oDB->executeQuery('member.deleteMemberGroupMember', $args); + if(!$output->toBool()) return $output; + + // member 테이블에서 삭제 + return $oDB->executeQuery('member.deleteMember', $args); + } + + /** + * @brief member_srl에 group_srl을 추가 + **/ + function addMemberToGroup($member_srl,$group_srl) { + $args->member_srl = $member_srl; + $args->group_srl = $group_srl; + + // DB 객체 생성 + $oDB = &DB::getInstance(); + + // 추가 + return $oDB->executeQuery('member.addMemberToGroup',$args); + } + + /** + * @brief 회원의 그룹값을 변경 + **/ + function changeGroup($source_group_srl, $target_group_srl) { + // DB객체 생성 + $oDB = &DB::getInstance(); + + $args->source_group_srl = $source_group_srl; + $args->target_group_srl = $target_group_srl; + + return $oDB->executeQuery('member.changeGroup', $args); + } + + /** + * @brief 그룹 등록 + **/ + function insertGroup($args) { + $oDB = &DB::getInstance(); + + // is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리 + if($args->is_default!='Y') $args->is_default = 'N'; + else { + $output = $oDB->executeQuery('member.updateGroupDefaultClear'); + if(!$output->toBool()) return $output; + } + + return $oDB->executeQuery('member.insertGroup', $args); + } + + /** + * @brief 그룹 정보 수정 + **/ + function updateGroup($args) { + $oDB = &DB::getInstance(); + + // is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리 + if($args->is_default!='Y') $args->is_default = 'N'; + else { + $output = $oDB->executeQuery('member.updateGroupDefaultClear'); + if(!$output->toBool()) return $output; + } + + return $oDB->executeQuery('member.updateGroup', $args); + } + + /** + * 그룹 삭제 + **/ + function deleteGroup($group_srl) { + // 멤버모델 객체 생성 + $oMemberModel = getModule('member','model'); + + // 삭제 대상 그룹을 가져와서 체크 (is_default == 'Y'일 경우 삭제 불가) + $group_info = $oMemberModel->getGroup($group_srl); + + if(!$group_info) return new Object(-1, 'lang->msg_not_founded'); + if($group_info->is_default == 'Y') return new Object(-1, 'msg_not_delete_default'); + + // is_default == 'Y'인 그룹을 가져옴 + $default_group = $oMemberModel->getDefaultGroup(); + $default_group_srl = $default_group->group_srl; + + // default_group_srl로 변경 + $this->changeGroup($group_srl, $default_group_srl); + + // 그룹 삭제 + $oDB = &DB::getInstance(); + $args->group_srl = $group_srl; + return $oDB->executeQuery('member.deleteGroup', $args); + } + + /** + * @brief 금지아이디 등록 + **/ + function insertDeniedID($user_id, $desription = '') { + $oDB = &DB::getInstance(); + + $args->user_id = $user_id; + $args->description = $description; + $args->list_order = -1*$oDB->getNextSequence(); + + return $oDB->executeQuery('member.insertDeniedID', $args); + } + + /** + * @brief 금지아이디 삭제 + **/ + function deleteDeniedID($user_id) { + $oDB = &DB::getInstance(); + + $args->user_id = $user_id; + return $oDB->executeQuery('member.deleteDeniedID', $args); + } + + } ?> diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 5a01a8831..c1886a576 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -1,8 +1,8 @@ 공통 - * dispInit() => disp시에 - * procInit() => proc시에 - * - * $this->module_path는 현재 이 모듈파일의 위치를 나타낸다 - * (ex: $this->module_path = "./modules/system_install/"; - **/ + /** + * @brief 초기화 + **/ + function dispInit() { + // 멤버모델 객체 생성 + $oMemberModel = getModule('member', 'model'); - // 초기화 - function init() { - // 기본 정보를 읽음 - Context::loadLang($this->module_path.'lang'); - } + // member_srl이 있으면 미리 체크하여 member_info 세팅 + $member_srl = Context::get('member_srl'); + if($member_srl) { + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + if(!$member_info) Context::set('member_srl',''); + else Context::set('member_info',$this->member_info); + } - // disp 초기화 - function dispInit() { - $oMember = getModule('member'); + // group 목록 가져오기 + $this->group_list = $oMemberModel->getGroups(); + Context::set('group_list', $this->group_list); - // member_srl이 있으면 미리 체크하여 member_info 세팅 - $member_srl = Context::get('member_srl'); - if($member_srl) { - $member_info = $oMember->getMemberInfoByMemberSrl($member_srl); - if(!$member_info) { - Context::set('member_srl',''); - $this->act = 'dispContent'; - } else Context::set('member_info',$member_info); - } + return true; + } - // group 목록 가져오기 - $group_list = $oMember->getGroups(); - Context::set('group_list', $group_list); + /** + * @brief 회원 목록 출력 + **/ + function dispContent() { + // 등록된 member 모듈을 불러와 세팅 + $oDB = &DB::getInstance(); + $args->sort_index = "member_srl"; + $args->page = Context::get('page'); + $args->list_count = 40; + $args->page_count = 10; + $output = $oDB->executeQuery('member.getMemberList', $args); - return true; - } + // 템플릿에 쓰기 위해서 context::set + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('member_list', $output->data); + Context::set('page_navigation', $output->page_navigation); - // proc 초기화 - function procInit() { - return true; - } + // 템플릿 파일 지정 + $this->setTemplateFile('list'); + } - /** - * 여기서부터는 action의 구현 - * request parameter의 경우 각 method의 첫번째 인자로 넘어온다 - * - * dispXXXX : 출력을 위한 method, output에 tpl file이 지정되어야 한다 - * procXXXX : 처리를 위한 method, output에는 error, message가 지정되어야 한다 - **/ + /** + * @brief 회원 정보 출력 + **/ + function dispInfo() { + $this->setTemplateFile('member_info'); + } - // 출력 부분 - function dispContent() { + /** + * @brief 회원 정보 입력 화면 출력 + **/ + function dispInsert() { + // 템플릿 파일 지정 + $this->setTemplateFile('insert_member'); + } - // 등록된 member 모듈을 불러와 세팅 - $oDB = &DB::getInstance(); - $args->sort_index = "member_srl"; - $args->page = Context::get('page'); - $args->list_count = 40; - $args->page_count = 10; - $output = $oDB->executeQuery('member.getMemberList', $args); + /** + * @brief 회원 삭제 화면 출력 + **/ + function dispDeleteForm() { + if(!Context::get('member_srl')) return $this->dispContent(); + $this->setTemplateFile('delete_form'); + } - // 템플릿에 쓰기 위해서 context::set - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('member_list', $output->data); - Context::set('page_navigation', $output->page_navigation); + /** + * @brief 그룹 목록 출력 + **/ + function dispGroup() { + $group_srl = Context::get('group_srl'); - // 템플릿 파일 지정 - $this->setTemplateFile('list'); - } + if($group_srl && $this->group_list[$group_srl]) { + Context::set('selected_group', $this->group_list[$group_srl]); + $this->setTemplateFile('group_update_form'); + } else { + $this->setTemplateFile('group_list'); + } + } - function dispInfo() { - // 템플릿 파일 지정 - $this->setTemplateFile('member_info'); - } + /** + * @brief 회원 가입 폼 관리 화면 출력 + **/ + function dispJoinForm() { + $this->setTemplateFile('join_form'); + } - function dispInsert() { - // 템플릿 파일 지정 - $this->setTemplateFile('insert_member'); - } + /** + * @brief 금지 목록 아이디 출력 + **/ + function dispDeniedID() { + // 멤버모델 객체 생성 + $oMemberModel = getModule('member', 'model'); - function dispDeleteForm() { - if(!Context::get('member_srl')) return $this->dispContent(); + // 사용금지 목록 가져오기 + $output = $oMemberModel->getDeniedIDList(); - // 템플릿 파일 지정 - $this->setTemplateFile('delete_form'); - } + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('member_list', $output->data); + Context::set('page_navigation', $output->page_navigation); - function dispGroup() { - // 그룹 목록 가져오기 - $oMember = getModule('member'); - $group_list = $oMember->getGroups(); - Context::set('group_list', $group_list); + $this->setTemplateFile('denied_list'); + } - // 선택된 gruop_srl이 있으면 selected_group에 담기 - $group_srl = Context::get('group_srl'); - if($group_srl && $group_list[$group_srl]) { - Context::set('selected_group', $group_list[$group_srl]); - $this->setTemplateFile('group_update_form'); - } else { - $this->setTemplateFile('group_list'); - } + function procInsert() { + // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 + $args = Context::gets('member_srl','user_id','user_name','nick_name','email_address','password','allow_mailing','denied','is_admin','signature','profile_image','image_nick','image_mark','description','group_srl_list'); - } + // member_srl이 있으면 원본을 구해온다 + $oMember = getModule('member'); - function dispJoinForm() { - // 템플릿 파일 지정 - $this->setTemplateFile('join_form'); - } + // member_srl이 넘어오면 원 모듈이 있는지 확인 + if($args->member_srl) { + $member_info = $oMember->getMemberInfoByMemberSrl($args->member_srl); + // 만약 원래 모듈이 없으면 새로 입력하기 위한 처리 + if($member_info->member_srl != $args->member_srl) unset($args->member_srl); + } - function dispDeniedID() { - // 사용금지 목록 가져오기 - $oMember = getModule('member'); - $output = $oMember->getDeniedIDList(); + // member_srl의 값에 따라 insert/update + if(!$args->member_srl) { + $output = $oMember->insertMember($args); + $msg_code = 'success_registed'; + } else { + $output = $oMember->updateMember($args); + $msg_code = 'success_updated'; + } - // 템플릿에 쓰기 위해서 context::set - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('member_list', $output->data); - Context::set('page_navigation', $output->page_navigation); + if(!$output->toBool()) return $output; - // 템플릿 파일 지정 - $this->setTemplateFile('denied_list'); - } + $this->add('sid','member'); + $this->add('member_srl',$output->get('member_srl')); + $this->add('act','dispInfo'); + $this->add('page',Context::get('page')); + $this->setMessage($msg_code); + } - // 실행 부분 - function procInsert() { - // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 - $args = Context::gets('member_srl','user_id','user_name','nick_name','email_address','password','allow_mailing','denied','is_admin','signature','profile_image','image_nick','image_mark','description','group_srl_list'); + function procDelete() { + // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 + $member_srl = Context::get('member_srl'); - // member_srl이 있으면 원본을 구해온다 - $oMember = getModule('member'); + // member_srl이 있으면 원본을 구해온다 + $oMember = getModule('member'); + $output = $oMember->deleteMember($member_srl); + if(!$output->toBool()) return $output; - // member_srl이 넘어오면 원 모듈이 있는지 확인 - if($args->member_srl) { - $member_info = $oMember->getMemberInfoByMemberSrl($args->member_srl); - // 만약 원래 모듈이 없으면 새로 입력하기 위한 처리 - if($member_info->member_srl != $args->member_srl) unset($args->member_srl); - } + $this->add('sid','member'); + $this->add('page',Context::get('page')); + $this->setMessage("success_deleted"); + } - // member_srl의 값에 따라 insert/update - if(!$args->member_srl) { - $output = $oMember->insertMember($args); - $msg_code = 'success_registed'; - } else { - $output = $oMember->updateMember($args); - $msg_code = 'success_updated'; - } + function procInsertGroup() { + $args = Context::gets('title','description','is_default'); + $oMember = getModule('member'); + $output = $oMember->insertGroup($args); + if(!$output->toBool()) return $output; - if(!$output->toBool()) return $output; + $this->add('sid','member'); + $this->add('act','dispGroup'); + $this->add('group_srl',''); + $this->add('page',Context::get('page')); + $this->setMessage('success_registed'); + } - $this->add('sid','member'); - $this->add('member_srl',$output->get('member_srl')); - $this->add('act','dispInfo'); - $this->add('page',Context::get('page')); - $this->setMessage($msg_code); - } + function procUpdateGroup() { + $group_srl = Context::get('group_srl'); + $mode = Context::get('mode'); - function procDelete() { - // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 - $member_srl = Context::get('member_srl'); + $oMember = getModule('member'); - // member_srl이 있으면 원본을 구해온다 - $oMember = getModule('member'); - $output = $oMember->deleteMember($member_srl); - if(!$output->toBool()) return $output; + switch($mode) { + case 'delete' : + $output = $oMember->deleteGroup($group_srl); + if(!$output->toBool()) return $output; + $msg_code = 'success_deleted'; + break; + case 'update' : + $args = Context::gets('group_srl','title','description','is_default'); + $output = $oMember->updateGroup($args); + if(!$output->toBool()) return $output; + $msg_code = 'success_updated'; + break; + } - $this->add('sid','member'); - $this->add('page',Context::get('page')); - $this->setMessage("success_deleted"); - } + $this->add('sid','member'); + $this->add('act','dispGroup'); + $this->add('group_srl',''); + $this->add('page',Context::get('page')); + $this->setMessage($msg_code); + } - function procInsertGroup() { - $args = Context::gets('title','description','is_default'); - $oMember = getModule('member'); - $output = $oMember->insertGroup($args); - if(!$output->toBool()) return $output; + function procInsertJoinForm() { + $args->column_type = Context::get('column_type'); + $args->column_name = Context::get('column_name'); + $args->column_title = Context::get('column_title'); - $this->add('sid','member'); - $this->add('act','dispGroup'); - $this->add('group_srl',''); - $this->add('page',Context::get('page')); - $this->setMessage('success_registed'); - } + $oDB = &DB::getInstance(); + $output = $oDB->executeQuery('member.insertJoinForm', $args); + if(!$output->toBool()) return $output; - function procUpdateGroup() { - $group_srl = Context::get('group_srl'); - $mode = Context::get('mode'); + $this->add('sid','member'); + $this->add('act','dispJoinForm'); + $this->setMessage('success_registed'); + } - $oMember = getModule('member'); + function procInsertDeniedID() { + $user_id = Context::get('user_id'); + $description = Context::get('description'); + $oMember = getModule('member'); + $output = $oMember->insertDeniedID($user_id, $description); + if(!$output->toBool()) return $output; - switch($mode) { - case 'delete' : - $output = $oMember->deleteGroup($group_srl); - if(!$output->toBool()) return $output; - $msg_code = 'success_deleted'; - break; - case 'update' : - $args = Context::gets('group_srl','title','description','is_default'); - $output = $oMember->updateGroup($args); - if(!$output->toBool()) return $output; - $msg_code = 'success_updated'; - break; - } + $this->add('sid','member'); + $this->add('act','dispDeniedID'); + $this->add('group_srl',''); + $this->add('page',Context::get('page')); + $this->setMessage('success_registed'); + } - $this->add('sid','member'); - $this->add('act','dispGroup'); - $this->add('group_srl',''); - $this->add('page',Context::get('page')); - $this->setMessage($msg_code); - } + function procUpdateDeniedID() { + $user_id = Context::get('user_id'); + $mode = Context::get('mode'); - function procInsertJoinForm() { - $args->column_type = Context::get('column_type'); - $args->column_name = Context::get('column_name'); - $args->column_title = Context::get('column_title'); + $oMember = getModule('member'); - $oDB = &DB::getInstance(); - $output = $oDB->executeQuery('member.insertJoinForm', $args); - if(!$output->toBool()) return $output; + switch($mode) { + case 'delete' : + $output = $oMember->deleteDeniedID($user_id); + if(!$output->toBool()) return $output; + $msg_code = 'success_deleted'; + break; + } - $this->add('sid','member'); - $this->add('act','dispJoinForm'); - $this->setMessage('success_registed'); - } - - function procInsertDeniedID() { - $user_id = Context::get('user_id'); - $description = Context::get('description'); - $oMember = getModule('member'); - $output = $oMember->insertDeniedID($user_id, $description); - if(!$output->toBool()) return $output; - - $this->add('sid','member'); - $this->add('act','dispDeniedID'); - $this->add('group_srl',''); - $this->add('page',Context::get('page')); - $this->setMessage('success_registed'); - } - - function procUpdateDeniedID() { - $user_id = Context::get('user_id'); - $mode = Context::get('mode'); - - $oMember = getModule('member'); - - switch($mode) { - case 'delete' : - $output = $oMember->deleteDeniedID($user_id); - if(!$output->toBool()) return $output; - $msg_code = 'success_deleted'; - break; - } - - $this->add('sid','member'); - $this->add('act','dispDeniedID'); - $this->add('page',Context::get('page')); - $this->setMessage($msg_code); - } - /** - * 여기부터는 이 모듈과 관련된 라이브러리 개념의 method들 - **/ + $this->add('sid','member'); + $this->add('act','dispDeniedID'); + $this->add('page',Context::get('page')); + $this->setMessage($msg_code); + } } ?> diff --git a/modules/member/admin/delete_form.html b/modules/member/tpl.admin/delete_form.html similarity index 100% rename from modules/member/admin/delete_form.html rename to modules/member/tpl.admin/delete_form.html diff --git a/modules/member/admin/denied_list.html b/modules/member/tpl.admin/denied_list.html similarity index 100% rename from modules/member/admin/denied_list.html rename to modules/member/tpl.admin/denied_list.html diff --git a/modules/member/admin/filter/filter.delete.xml b/modules/member/tpl.admin/filter/filter.delete.xml similarity index 100% rename from modules/member/admin/filter/filter.delete.xml rename to modules/member/tpl.admin/filter/filter.delete.xml diff --git a/modules/member/admin/filter/filter.insert.xml b/modules/member/tpl.admin/filter/filter.insert.xml similarity index 100% rename from modules/member/admin/filter/filter.insert.xml rename to modules/member/tpl.admin/filter/filter.insert.xml diff --git a/modules/member/admin/filter/filter.insert_denied_id.xml b/modules/member/tpl.admin/filter/filter.insert_denied_id.xml similarity index 100% rename from modules/member/admin/filter/filter.insert_denied_id.xml rename to modules/member/tpl.admin/filter/filter.insert_denied_id.xml diff --git a/modules/member/admin/filter/filter.insert_group.xml b/modules/member/tpl.admin/filter/filter.insert_group.xml similarity index 100% rename from modules/member/admin/filter/filter.insert_group.xml rename to modules/member/tpl.admin/filter/filter.insert_group.xml diff --git a/modules/member/admin/filter/filter.insert_join_form.xml b/modules/member/tpl.admin/filter/filter.insert_join_form.xml similarity index 100% rename from modules/member/admin/filter/filter.insert_join_form.xml rename to modules/member/tpl.admin/filter/filter.insert_join_form.xml diff --git a/modules/member/admin/filter/filter.update_denied_id.xml b/modules/member/tpl.admin/filter/filter.update_denied_id.xml similarity index 100% rename from modules/member/admin/filter/filter.update_denied_id.xml rename to modules/member/tpl.admin/filter/filter.update_denied_id.xml diff --git a/modules/member/admin/filter/filter.update_group.xml b/modules/member/tpl.admin/filter/filter.update_group.xml similarity index 100% rename from modules/member/admin/filter/filter.update_group.xml rename to modules/member/tpl.admin/filter/filter.update_group.xml diff --git a/modules/member/admin/group_list.html b/modules/member/tpl.admin/group_list.html similarity index 100% rename from modules/member/admin/group_list.html rename to modules/member/tpl.admin/group_list.html diff --git a/modules/member/admin/group_update_form.html b/modules/member/tpl.admin/group_update_form.html similarity index 100% rename from modules/member/admin/group_update_form.html rename to modules/member/tpl.admin/group_update_form.html diff --git a/modules/member/admin/header.html b/modules/member/tpl.admin/header.html similarity index 100% rename from modules/member/admin/header.html rename to modules/member/tpl.admin/header.html diff --git a/modules/member/admin/insert_member.html b/modules/member/tpl.admin/insert_member.html similarity index 100% rename from modules/member/admin/insert_member.html rename to modules/member/tpl.admin/insert_member.html diff --git a/modules/member/admin/join_form.html b/modules/member/tpl.admin/join_form.html similarity index 100% rename from modules/member/admin/join_form.html rename to modules/member/tpl.admin/join_form.html diff --git a/modules/member/admin/js/admin.js b/modules/member/tpl.admin/js/admin.js similarity index 100% rename from modules/member/admin/js/admin.js rename to modules/member/tpl.admin/js/admin.js diff --git a/modules/member/admin/list.html b/modules/member/tpl.admin/list.html similarity index 100% rename from modules/member/admin/list.html rename to modules/member/tpl.admin/list.html diff --git a/modules/member/admin/member_info.html b/modules/member/tpl.admin/member_info.html similarity index 100% rename from modules/member/admin/member_info.html rename to modules/member/tpl.admin/member_info.html