Skip to content

Commit

Permalink
fixed #27 pointController:setPoint()에 트리거 추가.
Browse files Browse the repository at this point in the history
  • Loading branch information
bnu committed Nov 19, 2013
1 parent a4f550f commit 57687c1
Showing 1 changed file with 48 additions and 13 deletions.
61 changes: 48 additions & 13 deletions modules/point/point.controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -480,18 +480,21 @@ function setPoint($member_srl, $point, $mode = null)
$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)
{
Expand All @@ -502,22 +505,40 @@ function setPoint($member_srl, $point, $mode = null)
$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;
Expand All @@ -528,7 +549,7 @@ function setPoint($member_srl, $point, $mode = null)
$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
Expand All @@ -541,7 +562,7 @@ function setPoint($member_srl, $point, $mode = null)
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
Expand All @@ -556,7 +577,7 @@ function setPoint($member_srl, $point, $mode = null)
{
if($target_level == $i)
{
$new_group_srls[] = $group_srl;
$new_group_list[] = $group_srl;
}
}
$i = 0;
Expand All @@ -578,11 +599,11 @@ function setPoint($member_srl, $point, $mode = null)
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))
{
Expand All @@ -591,14 +612,28 @@ function setPoint($member_srl, $point, $mode = null)
$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;
executeQuery('member.addMemberToGroup', $new_group_args);
}
}
}

// 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);
Expand Down

0 comments on commit 57687c1

Please sign in to comment.