추천할 때 마다 추천한 자의 포인트가 깎이는 기능구현 문제(2)에서 얻은 날아라님의 기여로 

일단 추천할 때마다 추천한 자의 포인트가 깎이게끔 되었습니다 ^ㅇ^

몇 주 기간을 두며 지켜본 바로는 작동은 제대로 되는 듯 합니다!

 

다만 안내문이 살짝 오작동하는 면이 있네요 이것을 바로잡아 주실 분 찾습니다 ㅠ_ㅜ

 

상황은 즉

아래 코드를 사용하면, 일단 포인트는 정상적으로 깎입니다.

 

문제가 되는 부분은 시간이 충분히(어느정도인지 현재까지 파악못함) 지난 상황에서 (그러나 이게 필수조건)

이미 추천을 통해서 포인트가 깎인 게시물은 재차 추천해봐야 '추천할 수 없습니다' 메세지가 뜨는 것이 보통 정상상황입니다

그런데 추천버튼을 재 차 누르면, 포인트가 부족하여 추천할 수 없습니다. 현재 포인트는 %d 입니다 라는 아래 코드에 적어놓은 메세지가 뜨게 되버립니다.

 

원래 "포인트가 부족하여 ...." 이 메세지는 포인트가 추천으로 설정한 포인트 이하로 떨어질 때 나오게끔 설계된 메세지인데, 

추천이 이미 끝나서 더 이상 추천할 수 없는 상태일 때 이 메세지가 나와 버립니다' '

 

이걸 고치면 좋겠는데, 어려운 내용이 아닌지 걱정입니다

 

우회적인 다른 방법이 없을지 고민 해 봤는데, 혹시 추천을 이미 했다면, 추천버튼이 비활성화 된 상태로 표시된다던지 아에 없애버린다던지 있네요.. 이런 방법이라도 알려주신다면 적용해 보고 싶습니다 ^ ^

 


현재 까지 이 기능이 고쳐진 내용은 아래와 같습니다.

 

modules/point/point.controller.php 에서 아래 코드로 수정

이 코드를 적용하면 추천받음에 마이너스포인트 (예 -200)일 경우 추천한 사람의 포인트를 깎음


 

function triggerUpdateVotedCount(&$obj)
{
$module_srl = $obj->module_srl;
$member_srl = $obj->member_srl;
if(!$module_srl || !$member_srl) return new Object();

// 추천자 정보 구함
$logged_info = Context::get('logged_info');
$vote_member_srl = $logged_info->member_srl;

$oModuleModel = getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$module_config = $oModuleModel->getModulePartConfig('point', $module_srl);

$oPointModel = getModel('point');
$vote_cur_point = $oPointModel->getPoint($vote_member_srl, true);

if( $obj->point > 0 )
{
$point = $module_config['voted'];
if(strlen($point) == 0 && !is_int($point)) $point = $config->voted;
}
else
{
$point = $module_config['blamed'];
if(strlen($point) == 0 && !is_int($point)) $point = $config->blamed;
}

if(!$point) return new Object();
// Increase the point
$vote_cur_point += $point;
$this->setPoint($vote_member_srl,$vote_cur_point);

return new Object();
}

 


 

modules/document/document.controller.php 에서 아래 코드로 수정

 


function updateVotedCount 에서


~ 생략 ~
// Create a member model object
$oMemberModel = getModel('member');
$member_srl = $oMemberModel->getLoggedMemberSrl();  <-이 부분 바로 아랫부분에 다음 내용을 추가합니다.

// 포인트가 없으면 추천불가(날아라님수정)

$oModuleModel = getModel('module');
$mid = Context::get('mid');
$module_srl = $oModuleModel->getModuleSrlByMid($mid);
$module_config = $oModuleModel->getModulePartConfig('point', $module_srl);
$vote_point = abs($module_config['voted']);

// 포인트가 없으면 추천불가
$oPointModel = &getModel('point');
$member_point = $oPointModel->getPoint($member_srl, true);

$failed_voted = sprintf("포인트가 부족하여 추천할 수 없습니다. 현재 포인트는 %d 입니다", $member_point);

if($member_point < $vote_point ) return new Object(-1, $failed_voted);


 

  • profile

    이건 단순궁금인데..
    추천할때마다 포인트가 깍이면.. 다들 추천하려고 하나요? ' 3'??
    어떤 의도로 그렇게 구현하실 예정인지도 궁금해요!

     

    myAvatar_17004571_1.gif

     

  • profile ?

    에 간단한 생각인데' '
    포인트는 그냥 출석하며 벌리는 별로 대단한건 아니지만 그래도 모아봤자 똥되는데 소비하라구 만들어보고싶어씁니다^ ^
    이렇게 만들어 두면 무료로 운영하는 재미가 있을 것 같아서요,,

    포인트 모아서 소비할 수 있는 컨텐츠도 없고 ..저는 앞으로 계속 이렇게 사이트를 만들어 볼 생각입니다 ^ ^