포럼
댓글 추천기능에 버그 수정한거 알려드립니다.
2011.01.27 02:22
현재 설치 버전 : 1.4.4.4 이구요...
[ 문제점 ]
1. 본문 말고 댓글을 추천/비추천할때 비추천 실패 메세지가 항상 추천 실패메시지로 나옴
[ 문제 재현 경로 ]
1. 댓글을 추천 혹은 비추천을 한다.
2. 해당 댓글을 다시 추천할 경우 '추천 하실 수 없습니다. ' 라고 나온다.
3. 해당 댓글을 다시 비추천할 경우 동일하게 '추천 하실 수 없습니다. ' 라고 나온다.
정상적으로는 비추천을 누를 경우 '비추천 하실 수 없습니다.' 라고 나와야 한다.
- 아래처럼 수정이후 정상적으로 추천/비추천 메세지가 나옵니다. 검토해보시고 다음 릴리즈시 반영해 주시기 바랍니다.
[ 파일 수정 위치 ]
modules/comment/comment.controller.php 의 updateVotedCount() 함수
function updateVotedCount($comment_srl, $point = 1) {
if($point > 0) $failed_voted = 'failed_voted';
else $failed_voted = 'failed_blamed';
// 세션 정보에 추천 정보가 있으면 중단
//if($_SESSION['voted_comment'][$comment_srl]) return new Object(-1, 'failed_voted'); // 원본
if($_SESSION['voted_comment'][$comment_srl]) return new Object(-1, $failed_voted); // 버그 수정
// 문서 원본을 가져옴
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl, false, false);
// 글의 작성 ip와 현재 접속자의 ip가 동일하면 패스
if($oComment->get('ipaddress') == $_SERVER['REMOTE_ADDR']) {
$_SESSION['voted_comment'][$comment_srl] = true;
//return new Object(-1, 'failed_voted'); // 원본
return new Object(-1, $failed_voted); // 버그 수정
}
// comment의 작성자가 회원일때 조사
if($oComment->get('member_srl')) {
// member model 객체 생성
$oMemberModel = &getModel('member'+
');
$member_srl = $oMemberModel->getLoggedMemberSrl();
// 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 생각하고 세션 등록후 패스
if($member_srl && $member_srl == $oComment->get('member_srl')) {
$_SESSION['voted_comment'][$comment_srl] = true;
//return new Object(-1, 'failed_voted'); // 원본
return new Object(-1, $failed_voted); // 버그 수정
}
}
// 로그인 사용자이면 member_srl, 비회원이면 ipaddress로 판단
if($member_srl) {
$args->member_srl = $member_srl;
} else {
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
}
$args->comment_srl = $comment_srl;
$output = executeQuery('comment.getCommentVotedLogInfo', $args);
// 로그 정보에 추천 로그가 있으면 세션 등록후 패스
if($output->data->count) {
$_SESSION['voted_comment'][$comment_srl] = true;
//return new Object(-1, 'failed_voted'); // 원본
return new Object(-1, $failed_voted); // 버그 수정
}
// 추천수 업데이트
if($point < 0)
{
$args->blamed_count = $oComment->get('blamed_count') + $point;
$output = executeQuery('comment.updateBlamedCount', $args);
}
else
{
$args->voted_count = $oComment->get('voted_count') + $point;
$output = executeQuery('comment.updateVotedCount', $args);
}
// 로그 남기기
$args->point = $point;
$output = executeQuery('comment.insertCommentVotedLog', $args);
// 세션 정보에 남김
$_SESSION['voted_comment'][$comment_srl] = true;
// 결과 리턴
if($point > 0)
return new Object(0, 'success_voted');
else
return new Object(0, 'success_blamed');
}