(수정) XE 1.11.6 이하 에서 공개댓글을 비밀댓글로 변경시 생길 수 있는 오류
제가 1월 7일에 기재한 수정방법은 오류가 있네요.. (아... 나서지 말았어야했나.. T^T 꼭 이런단 말입니다....)
2021년 1월 7일에 버그 수정방법으로 사용했던 방법이 글쓴이가 아닌 타 회원의 비밀댓글 확인에 오류를 일으키네요..
수정밥법을 다른 방식으로 변경합니다 ( 기진곰님 말씀대로 최종수정일을 세션에 적용하기로 했습니다. )
1월 10일 이전에 혹여나 이 글을 참조해 수정하신 경우 다시 재수정해주세요
=========================================================
modules/comment/comment.item.php 에서
1) function isAccessible 함수에서
if($_SESSION['accessibled_comment'][$this->comment_srl])
부분을 아래처럼 수정
if(isset($_SESSION['accessibled_comment'][$this->comment_srl]) && $_SESSION['accessibled_comment'][$this->comment_srl] === $this->get('last_update'))
( 참고로 1월 10일 이전에 제 글로 수정하신 분은 아래부분을 수정하시면 됩니다 )
if(!$this->isSecret() && $_SESSION['accessibled_comment'][$this->comment_srl])
2) function setAccessible() 함수에서
$_SESSION['accessibled_comment'][$this->comment_srl] = TRUE;
대신에
$_SESSION['accessibled_comment'][$this->comment_srl] = $this->get('last_update');
이렇게 수정
---------------------------------------------
원본글은 : http://sejin7940.co.kr/xe_tips/2053626 ( 제 사이트에 쓴거여서 말이 짧습니다 )
순수 라이믹스/XE 기반의 포트폴리오만 350개, 자체 개발/보완 모듈들의 기능개발 내역이 1800가지를 넘습니다.
라이믹스/XE 개발로는 국내 최다 경험을 지닌 최고의 전문업체입니다
댓글 6
이거 오래전에 공개된 사항인데 이게 버그였네요. 예전에 버그로 보지 않았던 거로 기억하는데요. 제가 제보했던 거로 기억합니다. 물론 깃허브나 개발자에게 제보한건 아니구요.
이미 댓글을 본 사람이라 의미가 없다 라는 관점인 것 같습니다.
저는 그때 늦었다고 생각해도 다시 볼 수 없게 해주는게 더 낫다는 생각이었습니다.
벌써 보인거니 무관하다 고 할 수도 있겠지만
그게 아니라 처음에는 공개로 쓴걸... 그 댓글 내용을 수정하면서 비공개로 전환할 수도 있겠죠...
이 경우는 내용 수정하면서 공개 안 하고픈 내용이 들어갈 수 있는데 그게 그대로 다 노출되어버려요..
원본 내용이 보이는게 아니라 수정된 내용이 노출되는거니..
상황에 따라 굉장히 심각한 문제를 만들 수도 있겠죠
라이믹스는 $_SESSION['accessibled_comment'][$this->comment_srl] 등의 접근 권한 캐시를 단순히 참/거짓으로 구분하지 않고 권한 부여의 기준이 되는 시간을 기록하도록 되어 있습니다.
글과 댓글의 경우, 기준이 되는 시간은 최종 수정 시간(last_update)입니다. 비밀댓글로 수정했다면 이 값이 변경되므로, 이전에 부여된 권한은 무효이며 새롭게 체크가 이루어집니다. 따라서 캐시 사용의 혜택을 그대로 누리면서도 보다 정확하게 권한 권리를 할 수 있습니다.
관련 패치는 약 4년 전에 이루어졌고, 그 후에도 몇 차례 코드 개선이 있었던 것 같지만 큰 틀은 그대로입니다. 동일한 방식으로 XE를 패치하기를 원하신다면 참고하세요.
https://github.com/rhymix/rhymix/commit/6df32746
결론: 라이믹스 > XE1 ㅋㅋㅋ
예전에야 라이믹스가 개발초기단계라 우선 기능이 잇는거 막 넣어도 되던 상황도 잘 맞물려 있었기 때문에 패치나 이런 대응이 바로바로 이루어질 수 있었고, 요즘은 하나의 코드를 넣더라도 이제 좀 대응하는 단계이다보니 좀더 높은퀄리티의 코드를 넣으려고 고민 하고 있지요 ㅎㅎ