mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-08 03:01:43 +09:00
레벨이 변경될때 소속 그룹도 변경되도록 포인트 모듈 기능 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3505 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
bf1c149c3d
commit
89466e6e0e
12 changed files with 136 additions and 1 deletions
|
|
@ -34,6 +34,9 @@
|
||||||
$lang->cmd_point_recal = 'Recalculate Point';
|
$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->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.<br />All point will be restored on acting reverse.";
|
$lang->about_module_point = "You can set point for each module and modules which don't have any value will use default point.<br />All point will be restored on acting reverse.";
|
||||||
|
|
||||||
$lang->point_signup = 'Signup';
|
$lang->point_signup = 'Signup';
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@
|
||||||
$lang->cmd_point_recal = '포인트 재계산';
|
$lang->cmd_point_recal = '포인트 재계산';
|
||||||
$lang->about_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.<br />Todos los puntos serán restituidos al actuar en forma contraria.";
|
$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.<br />Todos los puntos serán restituidos al actuar en forma contraria.";
|
||||||
|
|
||||||
$lang->point_signup = 'Fecha del';
|
$lang->point_signup = 'Fecha del';
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@
|
||||||
$lang->cmd_point_recal = '포인트 재계산';
|
$lang->cmd_point_recal = '포인트 재계산';
|
||||||
$lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다';
|
$lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다';
|
||||||
|
|
||||||
|
$lang->point_link_group = '그룹 연동';
|
||||||
|
$lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.';
|
||||||
|
|
||||||
$lang->about_module_point = 'モジュール別にポイントを指定することができますが、指定されていないモジュールでは、デフォルトポイントが使用されます。すべてのポイント数は、反対のアクションを行った際には原状復帰されます。';
|
$lang->about_module_point = 'モジュール別にポイントを指定することができますが、指定されていないモジュールでは、デフォルトポイントが使用されます。すべてのポイント数は、反対のアクションを行った際には原状復帰されます。';
|
||||||
|
|
||||||
$lang->point_signup = '加入';
|
$lang->point_signup = '加入';
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@
|
||||||
$lang->cmd_point_recal = '포인트 재계산';
|
$lang->cmd_point_recal = '포인트 재계산';
|
||||||
$lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다';
|
$lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다';
|
||||||
|
|
||||||
|
$lang->point_link_group = '그룹 연동';
|
||||||
|
$lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.';
|
||||||
|
|
||||||
$lang->about_module_point = '모듈별로 포인트를 지정할 수 있으며 지정되지 않은 모듈은 기본 포인트를 이용하게 됩니다<br />모든 점수는 반대 행동을 하였을 경우 원상복귀 됩니다.';
|
$lang->about_module_point = '모듈별로 포인트를 지정할 수 있으며 지정되지 않은 모듈은 기본 포인트를 이용하게 됩니다<br />모든 점수는 반대 행동을 하였을 경우 원상복귀 됩니다.';
|
||||||
|
|
||||||
$lang->point_signup = '가입';
|
$lang->point_signup = '가입';
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@
|
||||||
$lang->cmd_point_recal = '포인트 재계산';
|
$lang->cmd_point_recal = '포인트 재계산';
|
||||||
$lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다';
|
$lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다';
|
||||||
|
|
||||||
|
$lang->point_link_group = '그룹 연동';
|
||||||
|
$lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.';
|
||||||
|
|
||||||
$lang->about_module_point = "Вы можете установть поинты для каждого модуля, а модули, не имеющие значения будут использовать значение по умолчанию для поинтов.<br />Все поинты будут восстановлены при обратном действии.";
|
$lang->about_module_point = "Вы можете установть поинты для каждого модуля, а модули, не имеющие значения будут использовать значение по умолчанию для поинтов.<br />Все поинты будут восстановлены при обратном действии.";
|
||||||
|
|
||||||
$lang->point_signup = 'Присвоить';
|
$lang->point_signup = 'Присвоить';
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@
|
||||||
$lang->cmd_point_recal = '重新计算积分';
|
$lang->cmd_point_recal = '重新计算积分';
|
||||||
$lang->about_cmd_point_recal = '文章/评论/附件等从新检查后按相应设置从新计算积分。';
|
$lang->about_cmd_point_recal = '文章/评论/附件等从新检查后按相应设置从新计算积分。';
|
||||||
|
|
||||||
|
$lang->point_link_group = '그룹 연동';
|
||||||
|
$lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.';
|
||||||
|
|
||||||
$lang->about_module_point = '可以分别对各模块进行积分设置,没有被设置的模块将使用默认值。<br />所有积分在相反动作下恢复原始值。即:发表新帖后再删除得到的积分为0分。';
|
$lang->about_module_point = '可以分别对各模块进行积分设置,没有被设置的模块将使用默认值。<br />所有积分在相反动作下恢复原始值。即:发表新帖后再删除得到的积分为0分。';
|
||||||
|
|
||||||
$lang->point_signup = '注册';
|
$lang->point_signup = '注册';
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,11 @@
|
||||||
// 변수 정리
|
// 변수 정리
|
||||||
$args = Context::getRequestVars();
|
$args = Context::getRequestVars();
|
||||||
|
|
||||||
|
// 포인트 이름 체크
|
||||||
$config->point_name = $args->point_name;
|
$config->point_name = $args->point_name;
|
||||||
if(!$config->point_name) $config->point_name = 'point';
|
if(!$config->point_name) $config->point_name = 'point';
|
||||||
|
|
||||||
|
// 기본 포인트 지정
|
||||||
$config->signup_point = (int)$args->signup_point;
|
$config->signup_point = (int)$args->signup_point;
|
||||||
$config->login_point = (int)$args->login_point;
|
$config->login_point = (int)$args->login_point;
|
||||||
$config->insert_document = (int)$args->insert_document;
|
$config->insert_document = (int)$args->insert_document;
|
||||||
|
|
@ -35,20 +37,35 @@
|
||||||
$config->upload_file = (int)$args->upload_file;
|
$config->upload_file = (int)$args->upload_file;
|
||||||
$config->download_file = (int)$args->download_file;
|
$config->download_file = (int)$args->download_file;
|
||||||
|
|
||||||
|
// 최고 레벨
|
||||||
$config->max_level = $args->max_level;
|
$config->max_level = $args->max_level;
|
||||||
if($config->max_level>1000) $config->max_level = 1000;
|
if($config->max_level>1000) $config->max_level = 1000;
|
||||||
if($config->max_level<1) $config->max_level = 1;
|
if($config->max_level<1) $config->max_level = 1;
|
||||||
|
|
||||||
|
// 레벨 아이콘 설정
|
||||||
$config->level_icon = $args->level_icon;
|
$config->level_icon = $args->level_icon;
|
||||||
|
|
||||||
|
// 포인트 미달시 다운로드 금지 여부 체크
|
||||||
if($args->disable_download == 'Y') $config->disable_download = 'Y';
|
if($args->disable_download == 'Y') $config->disable_download = 'Y';
|
||||||
else $config->disable_download = 'N';
|
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);
|
unset($config->level_step);
|
||||||
for($i=1;$i<=$config->max_level;$i++) {
|
for($i=1;$i<=$config->max_level;$i++) {
|
||||||
$key = "level_step_".$i;
|
$key = "level_step_".$i;
|
||||||
$config->level_step[$i] = (int)$args->{$key};
|
$config->level_step[$i] = (int)$args->{$key};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 레벨별 포인트 계산 함수
|
||||||
$config->expression = $args->expression;
|
$config->expression = $args->expression;
|
||||||
|
|
||||||
// 저장
|
// 저장
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,18 @@
|
||||||
$level_icon_list = FileHandler::readDir("./modules/point/icons");
|
$level_icon_list = FileHandler::readDir("./modules/point/icons");
|
||||||
Context::set('level_icon_list', $level_icon_list);
|
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');
|
$this->setTemplateFile('config');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -346,10 +346,16 @@
|
||||||
if($point < 0) $point = 0;
|
if($point < 0) $point = 0;
|
||||||
|
|
||||||
// 설정 정보 가져오기
|
// 설정 정보 가져오기
|
||||||
|
$oMemberModel = &getModel('member');
|
||||||
$oModuleModel = &getModel('module');
|
$oModuleModel = &getModel('module');
|
||||||
|
$oPointModel = &getModel('point');
|
||||||
$config = $oModuleModel->getModuleConfig('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->member_srl = $member_srl;
|
||||||
$args->point = $point;
|
$args->point = $point;
|
||||||
|
|
||||||
|
|
@ -362,6 +368,58 @@
|
||||||
executeQuery("point.insertPoint", $args);
|
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));
|
$cache_path = sprintf('./files/member_extra_info/point/%s/', getNumberingPath($member_srl));
|
||||||
FileHandler::makedir($cache_path);
|
FileHandler::makedir($cache_path);
|
||||||
|
|
|
||||||
9
modules/point/queries/deleteMemberGroup.xml
Normal file
9
modules/point/queries/deleteMemberGroup.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<query id="deleteMemberGroup" action="delete">
|
||||||
|
<tables>
|
||||||
|
<table name="member_group_member" />
|
||||||
|
</tables>
|
||||||
|
<conditions>
|
||||||
|
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||||
|
<condition operation="in" column="group_srl" var="group_srl" filter="number" pipe="and" />
|
||||||
|
</conditions>
|
||||||
|
</query>
|
||||||
8
modules/point/queries/getMemberGroupMember.xml
Normal file
8
modules/point/queries/getMemberGroupMember.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
<query id="getMemberGroupMember" action="select">
|
||||||
|
<tables>
|
||||||
|
<table name="member_group_member" />
|
||||||
|
</tables>
|
||||||
|
<conditions>
|
||||||
|
<condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||||
|
</conditions>
|
||||||
|
</query>
|
||||||
|
|
@ -16,6 +16,19 @@
|
||||||
<div id="pointReCal"></div>
|
<div id="pointReCal"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="col" rowspan="{(count($group_list)+2)}">{$lang->point_link_group}</th>
|
||||||
|
<th colspan="2">{$lang->group}</th>
|
||||||
|
<th>{$lang->level}</th>
|
||||||
|
</tr>
|
||||||
|
<!--@foreach($group_list as $key => $val)-->
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">{$val->title}</td>
|
||||||
|
<td><input type="text" class="inputTypeText w80" value="{$config->point_group[$key]}" name="point_group_{$key}" /></td>
|
||||||
|
<!--@end-->
|
||||||
|
<tr>
|
||||||
|
<td colspan="3"><p>{$lang->about_point_link_group}</p></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">{$lang->max_level}</th>
|
<th scope="col">{$lang->max_level}</th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue