https://xe1.xpressengine.com/tip/18342433

의 글을 참고 해서 수정해 봤습니다만..

추천하는 사람의 포인트가 0이 되는 경우에도 추천은 가능하더군요

이 글은 목적이 단순히 포인트를 깎는데만 있다보니 기준 포인트 이하면 추천할 수 없도록 한다던지 하는 것은 고려하지 않은 모양입니다.

 

이 팁에서는..

추천받는 경우에 추천자의 포인트를  글작성자가 가져갈 수 있도록 하는 것이지만, 

 

저는 이걸 필요로 하지는 않습니다 

 

단지 추천받는 자가 포인트를 받는 것이 아닌, 추천하는 자의 포인트를 깎기만 하면 됩니다(물론 포인트가 모자라면 추천할 수도 없겠죠?)

 

하지만 모듈설정에는 추천받는 자에대해 포인트를 부여하거나 깎는 부분만 기능이 있기 때문에

추천하는 사람의 포인트에 대한 부분은 설정할 수가 없네요

 

모듈수준으로 동작하는 것을 바라지는 않습니다.

그저 추천하는 경우 추천하는 자의 포인트를 깎기만 하면 됩니다(포인트가 모자라면 추천 금지)

 

질문방에 쓴 이유는 간단히 팁으로 남겨주실 분은 남겨주셨음 좋겠다 싶어서 였구요

간단하지도 않고 애드온이나, 모듈로 구성해야 한다 판단하셨다면 의뢰드리고 비용좀 남겨주시면 좋겠고 싶습니다~(비용 쪽지로 주셔도 되고 괜찮아요~~~!)

 

*코노리님의 포인트사용내역 모듈이랑 연계가 되어야 하겠죠?!

 

빨리 작동시켜보고 싶기 때문에.. xe공홈에도 같은 글을 올렸어요/

  • ?
    if( $obj->point <0 ) {

    일경우 return 하면 간단할듯싶네요
  • ? ?
    원하는 기능이라 댓글 안달리려나 하며 지켜보고 있었습니다 ㅎㅎ;; 읽어봐주셔서 감사하구요

    까막눈이다보니 느낌으로 받아들여보면, 포인트가 0이하로 떨어질 경우에는 추천과같은 행위를 할 수 없도록 return한다는 것으로 느껴지는데 맞나요..?

    그런데 팁에서는 글쓴이의 포인트와 <~~> 추천하는 자의 포인트를 깎는 부분이랑 같이 엮여서 작동하도록 되어있는 것 같습니다..

    그래서 본래 목적인 추천자의 포인트만 깎았으면 한다는 목적에 과함이 있네요..
    스케치북 스킨을 사용하고 있고요
    음 포인트를 이용한 커뮤니티 사이트가 될 테니..가급적이면 안전한 방법을 원하고 있습니다 ㅠ_ㅠ/
  • ?
    $vote_cur_point = $oPointModel->getPoint($vote_member_srl, true); 밑에
    if($vote_cur_point < 1) return new Object(); 추가해보세요.
  • ? ?
    이러면 어떻게 되는것인가요? 저 링크 안에있는 팁도 적용하고 나서 해야하는건가요-?
  • ? ?
    추천의 포인트가 0일경우, 추천안된것만 적은거였는데 다른질문도 있었네요??

    function triggerUpdateVotedCount(&$obj) {

    $module_srl = $obj->module_srl;
    if(!$module_srl || !$target_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($vote_cur_point < 1) return new Object(); // 추천자 포인트가 1보다 적으면 리턴

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

    if(!$point) return new Object();

    // 추천자 포인트 증감
    $vote_cur_point -= $point;
    $this->setPoint($vote_member_srl,$vote_cur_point);

    return new Object();

    }
    글쓴이 포인트 증감 부분 제거하고 추천자 포인트 1보다 적으면 추천안되게 변경한겁니다.
    테스트는 안해보았으니 작동할지는;;

    적용해보시고 답변남겨주세요
  • ? ?

    오 차감되는 것은 확실히 차감되고, 글작성자에게 포인트가 가지 않는 다는 것은 확실히 성공이네요!
    그런데, 차감되는 포인트는 어떻게 설정할 수 있나요??.. 그냥 -50감소한 것은 확인이 가능했는데...
    이걸 어떻게 조정해야할지 싶네요..
    게시판별로 설정하면 좋기야한데..
    마음같아선
    포인트 모듈별설정->게시판별로 포인트 설정가능한 메뉴있잖아요
    여기서 추천받을 때 얼마로 설정한다 이런 부분을 이용해서 설정하면 참 좋을텐데...

    예를들어
    추천받음 : -200point 이렇게 적어는 놓되
    적용대상은 게시글 작성자가 아니라 추천한 사람에게 -200..
    어려울까요??..

     

    +이 방법으로..해도 그..포인트가 0이되어도 추천은 가능하네요 ㅠ??

     

    ->질문을 바꿔보면 관리자메뉴에 모듈별포인트 설정에 추천받음 부분에 포인트를 올리면 게시글작성자가 포인트를 받는것을

    게시글에 추천한자가 포인트를 받거나 잃는걸로 바꾸자는 이야기였네요!!

  • ? ?
    역시 테스트를 안해보니...안되는 부분이 있네요. 추천가능유무는 그곳에서 건드는게 아니고 document모듈에서 추천부분에서 변경해줘야되는걸 깜빡했네요 ㅋㅋ;
    그리고 차감되는 포인트 설정은 모듈별 추천, 비추천시 받는 포인트설정을 그대로 가져오니 모듈별설정에서 변경해보시고 테스트해보세요.
  • ? ?
    음.. 50 포인트 차감되는데, 게시글조회할떄는 -50라고 적긴 했지만 추천/비추천시 받는 포인트설정은 기본적으로 각각 -200과 0 이었거든요!

    그런데 추천하니 -50포인트 차감되어서..이게 왜때문인지 의아했어요 혹시 확인가능할까요?!
    애드온같은걸로 간섭할 수 있다면 의뢰받아주세요ㅎㅎㅎ
  • ? ?
    확인해보고 답변드릴께요. 소스만 보고 답변드리니 ㅠㅠ
  • ? ?
    네넷 ㅎㅋㅋ
  • ?

    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();
    }

    이걸로 변경 다시해주세요.

    모듈별 설정에서는 추천받음을 -(마이너스)로 설정 (예: -200)

     


    +) 추천하는 사람이 포인트가 없을 경우 추천안되는 옵션
    document.controller.php파일 


    function updateVotedCount 에서
    ~ 생략 ~
    // Create a member model object
    $oMemberModel = getModel('member');
    $member_srl = $oMemberModel->getLoggedMemberSrl(); 하단에 아랫부분 추가

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


    1.8.9, 1.8.11에서 테스트한결과 잘되네요.
    모듈안건들고 따로만드는게 젤좋은데...글작성자 제외기능, 추천인 포인트 설정기능등 만드는게 손이 많이가네요 ㅋㅋ

  • ? ?

    이런 너무 받아먹은것 같은데, 성의표시를 좀 할수 없을까요 ;;

    업이 있으셔서 귀한시간 할애하는 것도 어려운 일이실텐데, 가벼운 일이라 마음만 받겠다고 하시니 ㄷㄷ

    저에겐 꼭 필요한 기능이라 마음을 엄청 크게 드리고 있겠습니다 `ㅁ'

  • ? ?
    만약 포인트가 50남은 유저가 추천 한 번에 -100 가져가게끔 설정한 경우에도 추천은 가능하더군요 ㅇ_ㅇ
    물론 포인트가 깎여서 0이 되긴 하지만, 설정한 포인트 (예를들면 -100) 보다 작은경우엔 추천할 수 없도록 하는것도 가능할까요...?
    혹시 시간 나실 때 확인해주시면 감사할것같아요 ㅎㅎ...