From 89466e6e0e3f9853cb8d67a2032abd1e665e3582 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 10:08:38 +0000 Subject: [PATCH] =?UTF-8?q?=EB=A0=88=EB=B2=A8=EC=9D=B4=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EB=90=A0=EB=95=8C=20=EC=86=8C=EC=86=8D=20=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=EB=8F=84=20=EB=B3=80=EA=B2=BD=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= 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@3505 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/point/lang/en.lang.php | 3 + modules/point/lang/es.lang.php | 3 + modules/point/lang/jp.lang.php | 3 + modules/point/lang/ko.lang.php | 3 + modules/point/lang/ru.lang.php | 3 + modules/point/lang/zh-CN.lang.php | 3 + modules/point/point.admin.controller.php | 17 ++++++ modules/point/point.admin.view.php | 12 ++++ modules/point/point.controller.php | 60 ++++++++++++++++++- modules/point/queries/deleteMemberGroup.xml | 9 +++ .../point/queries/getMemberGroupMember.xml | 8 +++ modules/point/tpl/config.html | 13 ++++ 12 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 modules/point/queries/deleteMemberGroup.xml create mode 100644 modules/point/queries/getMemberGroupMember.xml diff --git a/modules/point/lang/en.lang.php b/modules/point/lang/en.lang.php index c8b4393b5..c6ffb8c80 100644 --- a/modules/point/lang/en.lang.php +++ b/modules/point/lang/en.lang.php @@ -34,6 +34,9 @@ $lang->cmd_point_recal = 'Recalculate Point'; $lang->about_cmd_point_recal = "This will check articles/comments/attached files and reset all members' point to preset point."; + $lang->point_link_group = '그룹 연동'; + $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->about_module_point = "You can set point for each module and modules which don't have any value will use default point.
All point will be restored on acting reverse."; $lang->point_signup = 'Signup'; diff --git a/modules/point/lang/es.lang.php b/modules/point/lang/es.lang.php index fe6cafdb0..d981b11e5 100644 --- a/modules/point/lang/es.lang.php +++ b/modules/point/lang/es.lang.php @@ -34,6 +34,9 @@ $lang->cmd_point_recal = '포인트 재계산'; $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->point_link_group = '그룹 연동'; + $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->about_module_point = "Usted puede definir los puntos para cada módulo y los módulos que no tengan ningun valor usarán punto predefinido.
Todos los puntos serán restituidos al actuar en forma contraria."; $lang->point_signup = 'Fecha del'; diff --git a/modules/point/lang/jp.lang.php b/modules/point/lang/jp.lang.php index f0c351f15..ec89c9e98 100644 --- a/modules/point/lang/jp.lang.php +++ b/modules/point/lang/jp.lang.php @@ -34,6 +34,9 @@ $lang->cmd_point_recal = '포인트 재계산'; $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->point_link_group = '그룹 연동'; + $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->about_module_point = 'モジュール別にポイントを指定することができますが、指定されていないモジュールでは、デフォルトポイントが使用されます。すべてのポイント数は、反対のアクションを行った際には原状復帰されます。'; $lang->point_signup = '加入'; diff --git a/modules/point/lang/ko.lang.php b/modules/point/lang/ko.lang.php index 1ad796912..d6652b705 100644 --- a/modules/point/lang/ko.lang.php +++ b/modules/point/lang/ko.lang.php @@ -34,6 +34,9 @@ $lang->cmd_point_recal = '포인트 재계산'; $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->point_link_group = '그룹 연동'; + $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->about_module_point = '모듈별로 포인트를 지정할 수 있으며 지정되지 않은 모듈은 기본 포인트를 이용하게 됩니다
모든 점수는 반대 행동을 하였을 경우 원상복귀 됩니다.'; $lang->point_signup = '가입'; diff --git a/modules/point/lang/ru.lang.php b/modules/point/lang/ru.lang.php index c0fb103cd..2aa29b647 100644 --- a/modules/point/lang/ru.lang.php +++ b/modules/point/lang/ru.lang.php @@ -34,6 +34,9 @@ $lang->cmd_point_recal = '포인트 재계산'; $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->point_link_group = '그룹 연동'; + $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->about_module_point = "Вы можете установть поинты для каждого модуля, а модули, не имеющие значения будут использовать значение по умолчанию для поинтов.
Все поинты будут восстановлены при обратном действии."; $lang->point_signup = 'Присвоить'; diff --git a/modules/point/lang/zh-CN.lang.php b/modules/point/lang/zh-CN.lang.php index 09ecb1566..e2793768c 100644 --- a/modules/point/lang/zh-CN.lang.php +++ b/modules/point/lang/zh-CN.lang.php @@ -34,6 +34,9 @@ $lang->cmd_point_recal = '重新计算积分'; $lang->about_cmd_point_recal = '文章/评论/附件等从新检查后按相应设置从新计算积分。'; + $lang->point_link_group = '그룹 연동'; + $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->about_module_point = '可以分别对各模块进行积分设置,没有被设置的模块将使用默认值。
所有积分在相反动作下恢复原始值。即:发表新帖后再删除得到的积分为0分。'; $lang->point_signup = '注册'; diff --git a/modules/point/point.admin.controller.php b/modules/point/point.admin.controller.php index 485a244e0..c82c0d3cb 100644 --- a/modules/point/point.admin.controller.php +++ b/modules/point/point.admin.controller.php @@ -24,9 +24,11 @@ // 변수 정리 $args = Context::getRequestVars(); + // 포인트 이름 체크 $config->point_name = $args->point_name; if(!$config->point_name) $config->point_name = 'point'; + // 기본 포인트 지정 $config->signup_point = (int)$args->signup_point; $config->login_point = (int)$args->login_point; $config->insert_document = (int)$args->insert_document; @@ -35,20 +37,35 @@ $config->upload_file = (int)$args->upload_file; $config->download_file = (int)$args->download_file; + // 최고 레벨 $config->max_level = $args->max_level; if($config->max_level>1000) $config->max_level = 1000; if($config->max_level<1) $config->max_level = 1; + // 레벨 아이콘 설정 $config->level_icon = $args->level_icon; + + // 포인트 미달시 다운로드 금지 여부 체크 if($args->disable_download == 'Y') $config->disable_download = 'Y'; else $config->disable_download = 'N'; + // 레벨별 그룹 설정 + foreach($args as $key => $val) { + if(substr($key, 0, strlen('point_group_')) != 'point_group_') continue; + $group_srl = substr($key, strlen('point_group_')); + $level = $val; + if(!$level) unset($config->point_group[$group_srl]); + else $config->point_group[$group_srl] = $level; + } + + // 레벨별 포인트 설정 unset($config->level_step); for($i=1;$i<=$config->max_level;$i++) { $key = "level_step_".$i; $config->level_step[$i] = (int)$args->{$key}; } + // 레벨별 포인트 계산 함수 $config->expression = $args->expression; // 저장 diff --git a/modules/point/point.admin.view.php b/modules/point/point.admin.view.php index 03949fc9b..15a98ddf0 100644 --- a/modules/point/point.admin.view.php +++ b/modules/point/point.admin.view.php @@ -30,6 +30,18 @@ $level_icon_list = FileHandler::readDir("./modules/point/icons"); Context::set('level_icon_list', $level_icon_list); + // 그룹 목록 가져오기 + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + $selected_group_list = array(); + if(count($group_list)) { + foreach($group_list as $key => $val) { + if($val->is_admin == 'Y' || $val->is_default == 'Y') continue; + $selected_group_list[$key] = $val; + } + } + Context::set('group_list', $selected_group_list); + // 템플릿 지정 $this->setTemplateFile('config'); } diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index e335d5590..62465bf84 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -346,10 +346,16 @@ if($point < 0) $point = 0; // 설정 정보 가져오기 + $oMemberModel = &getModel('member'); $oModuleModel = &getModel('module'); + $oPointModel = &getModel('point'); $config = $oModuleModel->getModuleConfig('point'); - // 변수 설정 + // 기존 포인트 정보를 구함 + $prev_point = $oPointModel->getPoint($member_srl, true); + $prev_level = $oPointModel->getLevel($prev_point, $config->level_step); + + // 포인트 변경 $args->member_srl = $member_srl; $args->point = $point; @@ -362,6 +368,58 @@ executeQuery("point.insertPoint", $args); } + // 새로운 레벨을 구함 + $level = $oPointModel->getLevel($point, $config->level_step); + + // 기존 레벨과 새로운 레벨이 다르면 포인트 그룹 설정 시도 + if($level != $prev_point) { + + // 현재 포인트 대비하여 레벨을 계산하고 레벨에 맞는 그룹 설정을 체크 + $point_group = $config->point_group; + + // 포인트 그룹 정보가 있을때 시행 + if($point_group && is_array($point_group) && count($point_group) ) { + + // 기본 그룹을 구함 + $default_group = $oMemberModel->getDefaultGroup(); + + // 포인트 그룹에 속한 그룹과 새로 부여 받을 그룹을 구함 + $point_group_list = array(); + $current_group_srl = 0; + + asort($point_group); + + // 포인트 그룹 설정을 돌면서 현재 레벨까지 체크 + foreach($point_group as $group_srl => $target_level) { + $point_group_list[] = $group_srl; + if($target_level <= $level) { + $current_group_srl = $group_srl; + } + } + $point_group_list[] = $default_group->group_srl; + + // 만약 새로운 그룹이 없다면 기본 그룹을 부여 받음 + if(!$current_group_srl) $current_group_srl = $default_group->group_srl; + + // 일단 기존의 그룹을 모두 삭제 + $del_group_args->member_srl = $member_srl; + $del_group_args->group_srl = implode(',',$point_group_list); + $del_group_output = executeQuery('point.deleteMemberGroup', $del_group_args); + + // 새로운 그룹을 부여 + $new_group_args->member_srl = $member_srl; + $new_group_args->group_srl = $current_group_srl; + $new_group_output = executeQuery('member.addMemberToGroup', $new_group_args); + + // 만약 대상 사용자와 로그인 사용자의 정보가 동일하다면 세션을 변경해줌 + $logged_info = Context::get('logged_info'); + if($logged_info->member_srl == $member_srl) { + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + $_SESSION['logged_info']->group_list = $member_info->group_list; + } + } + } + // 캐시 설정 $cache_path = sprintf('./files/member_extra_info/point/%s/', getNumberingPath($member_srl)); FileHandler::makedir($cache_path); diff --git a/modules/point/queries/deleteMemberGroup.xml b/modules/point/queries/deleteMemberGroup.xml new file mode 100644 index 000000000..4df3ee6f0 --- /dev/null +++ b/modules/point/queries/deleteMemberGroup.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/modules/point/queries/getMemberGroupMember.xml b/modules/point/queries/getMemberGroupMember.xml new file mode 100644 index 000000000..e64e61196 --- /dev/null +++ b/modules/point/queries/getMemberGroupMember.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/point/tpl/config.html b/modules/point/tpl/config.html index 4d20afda6..14035a43f 100644 --- a/modules/point/tpl/config.html +++ b/modules/point/tpl/config.html @@ -16,6 +16,19 @@
+ + + + + + + + + + + + +
{$lang->point_link_group}{$lang->group}{$lang->level}
{$val->title}

{$lang->about_point_link_group}

{$lang->max_level}