코멘트 비밀글 문제 해결하려는데 생각좀 주세요^^ > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

코멘트 비밀글 문제 해결하려는데 생각좀 주세요^^ 정보

코멘트 비밀글 문제 해결하려는데 생각좀 주세요^^

본문

(문제)
원글 : A ( 작성자)
코멘트 : B
      답코멘트 : C (답코멘트를 비밀글로 체크)

원글을 쓴 A는 답코멘트 C를 볼 수 있습니다.
하지만 자신의 코멘트 밑에 달려있는 비밀코멘트를 B는 볼 수 없습니다.
아주 답답하고 황당한 일이죠. ㅠ..ㅠ...

이것을 해결해 보려는데 머리가 아프네요.

----

SQL 추가 실행 없이 해결하려면 이것은 원본을 수정해야 할 꺼 같아요.

/bbs/view_comment.php 에서 수정해야 되는 부분 입니다.

    $list[$i][content] = $list[$i][content1]= "비밀글 입니다.";
    if (!strstr($row[wr_option], "secret") ||
        $is_admin ||
        ($write[mb_id]==$member[mb_id] && $member[mb_id]) ||
        ($row[mb_id]==$member[mb_id] && $member[mb_id])) {
        $list[$i][content1] = $row[wr_content];
        $list[$i][content] = conv_content($row[wr_content], 0, 'wr_content');
        $list[$i][content] = search_font($stx, $list[$i][content]);
    }

$row[wr_comment_reply] 의 글자수가 2 이상이면 count-1 갯수만큼의 문자열에 해당하는
wr_id를 찾고 (윗 코멘트) 그 코멘트의 사용자가 로그인 한 회원이면 비밀글로 감추지
않고 데이터를 넣어주는 것인데... 로직이 무지하게 어렵네요. ㅠ..ㅠ

댓글 전체

^^ 정리해 보면
코멘트 1단계는 못 보고 2단계는 볼 수 있다는 건가요?
그렇다면 wr_comment_reply로 해결할 수 있지 않을까요?


요즘은 질문다운 질문이 드물어서.......
login id가 B인 경우 당연히 B가 쓴 코멘트를 볼 수 있죠?
그리고, C가 쓴 것은 비밀글이든 말든 볼 수 있어야 하는데
wr_comment_reply를 sql을 안돌리고 해결하려니 머리가...ㅠ.ㅠ
제가 예전에 이문제로 골머리를 앓던 부분 입니다.ㅜ.ㅡ
http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=8662
의 내용중 4번과  7-2 번 항목의 내용을 참고하시면 될런지 모르겠습니다.
코멘트 댓글 트리에서 중간에 비밀글 노드가 생기면
그 노드 c_mb_id 와 바로 상우 노드 p_mb_id를 제외하고
이 비밀글 노드 이하를 안 나타나게 하려는 것인가요?
헐랭이님은 심플하게 상위코멘트 작성자를 기록해 뒀다가
비밀코멘트의 상위코멘트 작성자가 글을 조회하면 해당 비밀글을 풀어주는 것 입니다.
저도 이 방법이 가장 간단한거 같다는 생각이구요.
이렇게 수정하니깐 잘 나오네요.. 수정해보시고 리플 부탁합니다.
그리고 불당님 그누보드 튜닝적용된 상태면 wr_comment_reply 값은 빠져있습니다.
sql문에 wr_comment_reply값 추가로 넣어주시고 해야합니다.

// 만약 wr_comment_reply 가 공백이 아니라면(즉, 답코멘트라면)
// wr_comment값에 저장된 댓글번호의 원 작성자 mb_id를 구함
if($list[$i][wr_comment_reply] != '')
    {
      //  $list[$i][wr_comment] 의 mb_id 구하기
   
$sql = "select mb_id from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 and wr_comment = '".$list[$i][wr_comment]."'";
        $secret_id = sql_fetch($sql);
    }

    $list[$i][content] = $list[$i][content1]= "비밀글 입니다.";
    if (!strstr($row[wr_option], "secret") ||
        $is_admin ||
        ($write[mb_id]==$member[mb_id] && $member[mb_id]) ||
        ($row[mb_id]==$member[mb_id] && $member[mb_id]) || $secret_id[mb_id] == $member[mb_id]) {
        $list[$i][content1] = $row[wr_content];
        $list[$i][content] = conv_content($row[wr_content], 0, 'wr_content');
        $list[$i][content] = search_font($stx, $list[$i][content]);
    }
위의것으로 테스트해보니 댓글이 계속 달릴경우 다시 안나오게 되네요.
아래처럼 추가 수정했습니다.


if($list[$i][wr_comment_reply] != '')
    {
      //  $list[$i][wr_comment] 의 mb_id 구하기
  //  A, AA, AAA, AAAA 등 답코멘트 위치값에 따라 한단계 위의 mb_id로 구하는것으로 변경
    $wr_comment_position = substr($list[$i][wr_comment_reply],0,strlen($list[$i][wr_comment_reply])-1);

$sql = "select mb_id from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 and wr_comment = '".$list[$i][wr_comment]."' and wr_comment_reply = '".$wr_comment_position."'";
        $secret_id = sql_fetch($sql);

    }
엑스엠엘: 코멘트 댓글 트리에서 중간에 비밀글 코멘트(노드)가 생기면
그 노드(코멘트를 작성한) c_mb_id 와 바로 상위 노드 p_mb_id, 원글 작성한 o_mb_id 를 제외하고
다른 이가 로그인 했을 때 비밀글 노드 이하를 안 나타나게 하려는 것인가요?

o_mb_id랑 p_mb_id와 c_mb_id가 로그인하면 볼 수 있게하구요.

       
 
    아빠불당: 헐랭이님은 심플하게 상위코멘트 작성자를 기록해 뒀다가
비밀코멘트의 상위코멘트 작성자가 글을 조회하면 해당 비밀글을 풀어주는 것 입니다.
저도 이 방법이 가장 간단한거 같다는 생각이구요. 
 

제가 말한 규칙이 맞는 건가요?
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT