From 823ee82b1d6a33b3cc92217379062084cfadcad0 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 13:54:51 +0000 Subject: [PATCH] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=20=ED=95=B4=EB=8B=B9=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=98=20=EC=B5=9C=EA=B3=A0=EA=B4=80=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95=EB=90=9C=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=EB=BF=90=20=EC=95=84=EB=8B=88=EB=9D=BC=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B7=B8=EB=A3=B9=EC=97=90=20=EC=86=8D=ED=95=9C=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=EB=93=A4=EB=8F=84=20=EA=B8=80=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B6=8C=ED=95=9C=EC=9D=84=20=EA=B0=80=EC=A7=80?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= 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@3491 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../document/document.admin.controller.php | 4 ++++ modules/document/document.admin.view.php | 19 ++++++++++++++++++- modules/document/document.class.php | 19 +++++++++++++++++++ modules/spamfilter/spamfilter.controller.php | 13 +++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index d96b8446e..86119db03 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -89,6 +89,10 @@ } } + // 스팸 처리가 되지 않도록 스팸필터 설정 + $oSpamController = &getController('spamfilter'); + $oSpamController->setAvoidLog(); + if($type == 'move') { if(!$module_srl) return new Object(-1, 'fail_to_move'); diff --git a/modules/document/document.admin.view.php b/modules/document/document.admin.view.php index 2d7a86fd1..94d413331 100644 --- a/modules/document/document.admin.view.php +++ b/modules/document/document.admin.view.php @@ -117,10 +117,27 @@ // 최고 관리자가 아닌 경우 자신의 관리 대상 모듈만 구해옴 $logged_info = Context::get('logged_info'); $user_id = $logged_info->user_id; + $group_list = $logged_info->group_list; + if($logged_info->is_admin != 'Y') { foreach($module_list as $key => $val) { $info = $oModuleModel->arrangeModuleInfo($val); - if(!in_array($user_id, $info->admin_id)) unset($module_list[$key]); + + // 직접 최고 관리자로 지정이 안되어 있으면 그룹을 체크 + if(!in_array($user_id, $info->admin_id)) { + + $is_granted = false; + $manager_group = $info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) { + $is_granted = true; + break; + } + } + } + if(!$is_granted) unset($module_list[$key]); + } } } Context::set('module_list', $module_list); diff --git a/modules/document/document.class.php b/modules/document/document.class.php index b691b8bda..43f308f57 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -192,6 +192,7 @@ // 사용자 아이디를 구함 $logged_info = Context::get('logged_info'); $user_id = $logged_info->user_id; + $group_list = $logged_info->group_list; // 모듈 요청에 사용된 변수들을 가져옴 $args = Context::getRequestVars(); @@ -206,7 +207,17 @@ $module_info = $oModuleModel->getModuleInfoByDocumentSrl($args->srl); if(!$module_info) return false; + // 직접 관리자로 선택하였을 경우 확인 if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + + // 관리자 그룹으로 등록되어 있을 경우 확인 + $manager_group = $module_info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) return true; + } + } + break; // 체크된 게시글을 관리하는 action @@ -229,6 +240,14 @@ if(!$module_info) return false; if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + + // 관리자 그룹으로 등록되어 있을 경우 확인 + $manager_group = $module_info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) return true; + } + } } break; diff --git a/modules/spamfilter/spamfilter.controller.php b/modules/spamfilter/spamfilter.controller.php index d463dceeb..76d681210 100644 --- a/modules/spamfilter/spamfilter.controller.php +++ b/modules/spamfilter/spamfilter.controller.php @@ -13,10 +13,19 @@ function init() { } + /** + * @brief 배치작업등을 할때 스팸필터의 사용을 중지 시킬 필요가 있을 경우 호출 + **/ + function setAvoidLog() { + $_SESSION['avoid_log'] = true; + } + /** * @brief 글 작성시 글 작성 시간 체크 및 금지 ip/단어 처리 루틴 **/ function triggerInsertDocument(&$obj) { + if($_SESSION['avoid_log']) return new Object(); + // 로그인 여부, 로그인 정보, 권한 유무 체크 $is_logged = Context::get('is_logged'); $logged_info = Context::get('logged_info'); @@ -53,6 +62,8 @@ * @brief 댓글 작성 시간 및 금지 ip/ 단어 처리 루틴 **/ function triggerInsertComment(&$obj) { + if($_SESSION['avoid_log']) return new Object(); + // 로그인 여부, 로그인 정보, 권한 유무 체크 $is_logged = Context::get('is_logged'); $logged_info = Context::get('logged_info'); @@ -89,6 +100,8 @@ * @brief 엮인글 작성시 시간 및 ip 검사 **/ function triggerInsertTrackback(&$obj) { + if($_SESSION['avoid_log']) return new Object(); + $oFilterModel = &getModel('spamfilter'); // 해당 글에 엮인글을 한번 이상 추가하였는지를 확인