mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-08 19:21:40 +09:00
fixed #27 pointController:setPoint()에 트리거 추가.
This commit is contained in:
parent
a4f550fa5c
commit
57687c15bc
1 changed files with 48 additions and 13 deletions
|
|
@ -480,18 +480,21 @@ class pointController extends point
|
|||
$member_srl = abs($member_srl);
|
||||
$mode_arr = array('add', 'minus', 'update', 'signup');
|
||||
if(!$mode || !in_array($mode,$mode_arr)) $mode = 'update';
|
||||
|
||||
// Get configuration information
|
||||
$oMemberModel = &getModel('member');
|
||||
$oModuleModel = &getModel('module');
|
||||
$oPointModel = &getModel('point');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
// Get the default configuration information
|
||||
$prev_point = $oPointModel->getPoint($member_srl, true);
|
||||
$prev_level = $oPointModel->getLevel($prev_point, $config->level_step);
|
||||
$current_point = $oPointModel->getPoint($member_srl, true);
|
||||
$current_level = $oPointModel->getLevel($current_point, $config->level_step);
|
||||
|
||||
// Change points
|
||||
$args =new stdClass();
|
||||
$args = new stdClass();
|
||||
$args->member_srl = $member_srl;
|
||||
$args->point = $prev_point;
|
||||
$args->point = $current_point;
|
||||
|
||||
switch($mode)
|
||||
{
|
||||
|
|
@ -502,22 +505,40 @@ class pointController extends point
|
|||
$args->point -= $point;
|
||||
break;
|
||||
case 'update' :
|
||||
$args->point = $point;
|
||||
break;
|
||||
case 'signup' :
|
||||
$args->point = $point;
|
||||
break;
|
||||
}
|
||||
if($args->point < 0) $args->point = 0;
|
||||
$point = $args->point;
|
||||
|
||||
// Call a trigger (before)
|
||||
$trigger_obj = new stdClass();
|
||||
$trigger_obj->member_srl = $args->member_srl;
|
||||
$trigger_obj->mode = $mode;
|
||||
$trigger_obj->current_point = $current_point;
|
||||
$trigger_obj->current_level = $current_level;
|
||||
$trigger_obj->set_point = $point;
|
||||
$trigger_output = ModuleHandler::triggerCall('point.setPoint', 'before', $trigger_obj);
|
||||
if(!$trigger_output->toBool())
|
||||
{
|
||||
return $trigger_output;
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// If there are points, update, if no, insert
|
||||
$oPointModel = &getModel('point');
|
||||
if($oPointModel->isExistsPoint($member_srl)) executeQuery("point.updatePoint", $args);
|
||||
else executeQuery("point.insertPoint", $args);
|
||||
|
||||
// Get a new level
|
||||
$level = $oPointModel->getLevel($point, $config->level_step);
|
||||
|
||||
// If existing level and a new one are different attempt to set a point group
|
||||
if($level != $prev_level)
|
||||
if($level != $current_level)
|
||||
{
|
||||
// Check if the level, for which the current points are prepared, is calculate and set the correct group
|
||||
$point_group = $config->point_group;
|
||||
|
|
@ -528,7 +549,7 @@ class pointController extends point
|
|||
$default_group = $oMemberModel->getDefaultGroup();
|
||||
// Get the removed group and the newly granted group
|
||||
$del_group_list = array();
|
||||
$new_group_srls = array();
|
||||
$new_group_list = array();
|
||||
|
||||
asort($point_group);
|
||||
// Reset group after initialization
|
||||
|
|
@ -541,7 +562,7 @@ class pointController extends point
|
|||
foreach($point_group as $group_srl => $target_level)
|
||||
{
|
||||
$del_group_list[] = $group_srl;
|
||||
if($target_level == $level) $new_group_srls[] = $group_srl;
|
||||
if($target_level == $level) $new_group_list[] = $group_srl;
|
||||
}
|
||||
}
|
||||
// Otherwise, in case the level is reduced, add the recent group
|
||||
|
|
@ -556,7 +577,7 @@ class pointController extends point
|
|||
{
|
||||
if($target_level == $i)
|
||||
{
|
||||
$new_group_srls[] = $group_srl;
|
||||
$new_group_list[] = $group_srl;
|
||||
}
|
||||
}
|
||||
$i = 0;
|
||||
|
|
@ -578,11 +599,11 @@ class pointController extends point
|
|||
foreach($point_group as $group_srl => $target_level)
|
||||
{
|
||||
$del_group_list[] = $group_srl;
|
||||
if($target_level <= $level) $new_group_srls[] = $group_srl;
|
||||
if($target_level <= $level) $new_group_list[] = $group_srl;
|
||||
}
|
||||
}
|
||||
// If there is no a new group, granted the default group
|
||||
if(!$new_group_srls[0]) $new_group_srls[0] = $default_group->group_srl;
|
||||
if(!$new_group_list[0]) $new_group_list[0] = $default_group->group_srl;
|
||||
// Remove linkage group
|
||||
if($del_group_list && count($del_group_list))
|
||||
{
|
||||
|
|
@ -591,7 +612,7 @@ class pointController extends point
|
|||
$del_group_output = executeQuery('point.deleteMemberGroup', $del_group_args);
|
||||
}
|
||||
// Grant a new group
|
||||
foreach($new_group_srls as $group_srl)
|
||||
foreach($new_group_list as $group_srl)
|
||||
{
|
||||
$new_group_args->member_srl = $member_srl;
|
||||
$new_group_args->group_srl = $group_srl;
|
||||
|
|
@ -599,6 +620,20 @@ class pointController extends point
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Call a trigger (after)
|
||||
$trigger_obj->new_group_list = $new_group_list;
|
||||
$trigger_obj->del_group_list = $del_group_list;
|
||||
$trigger_obj->new_level = $level;
|
||||
$trigger_output = ModuleHandler::triggerCall('point.setPoint', 'after', $trigger_obj);
|
||||
if(!$trigger_output->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
return $trigger_output;
|
||||
}
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
// Cache Settings
|
||||
$cache_path = sprintf('./files/member_extra_info/point/%s/', getNumberingPath($member_srl));
|
||||
FileHandler::makedir($cache_path);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue