[답글개선] 회원의 비밀글에 대한 관리자 비밀 답글을 읽을 수 있도록 처리

안녕하세요? 케이보드를 잘 사용하고 있습니다. 먼저 감사를 드립니다.

케이보드를 회원제로 운영하고 있고, 로그인해야만 글을 쓸 수 있도록 설정되어 있습니다.

회원이 비밀글을 작성하고 답글로 관리자가 글을 작성할 때 비밀글로 썼다면, 원글을 쓴 회원이 읽을 권한이 없다고 나옵니다.

맞나요? 설명이 제대로 된것인지 모르겠네요.ㅎ

그래서, 관리자의 비밀 답글을 원글(부모글)의 작성자가 볼 수 있도록 수정해 봤습니다.

검토해봐 주시고, 다음에 패치가 된다면 적용여부를 검토해봐 주시면 감사하겠습니다.

수정파일 : class/KBoard.class.php, class/KBoardBuilder.php

 

1. class/KBoardBuilder.php 라인 194

답글인 경우 부모글의 작성자 아이디를 가져옴 (builderDocument() 에 추가)

        /**
         * 비밀글에 대한 관리자 답글 비밀글을 글쓴이가 읽을 수 있도록 처리
         * 부모글의 아이디를 isReader에 전달
         * 수정 : Kim WJ; 2014-06-18
         */
        if( $content->parent_uid ) {
            $parent_content = new KBContent($this->board_id);
            $parent_content->initWithUID($content->parent_uid);
        } // 수정 끝//

isReader 호출 시 부모글 작성자 아이디 전달하도록 수정

if(!$this->board->isReader($content->member_uid, $content->secret) && $content->notice != 'true'){

아래와 같이 변경

if(!$this->board->isReader($content->member_uid, $content->secret, $parent_content->member_uid) && $content->notice != 'true'){

 

2. class/KBoard.class.php 라인 141 수정

isReader function을 아래와 같이 수정함. 굵게처리된 부분이 수정한 것임.

    public function isReader($writer_uid, $secret='', $parent_member_uid=NULL){
        $admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
        
        if($this->permission_read == 'all' && !$secret){
            return true;
        }
        else if($this->userdata->data->ID){
            if($writer_uid == $this->userdata->data->ID){
                // 본인인 경우
                return true;
            }
            else if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles) || @in_array('librarian', $this->userdata->roles)){
                // 최고관리자 허용
                return true;
            }
            else if(($this->permission_read == 'all' || $this->permission_read == 'author' || $this->permission_read == 'editor') && @in_array($this->userdata->data->user_login, $admin_user)){
                // 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
                return true;
            }
            else if($this->permission_read == 'author' && !$secret){
                // 로그인 사용자 권한일때, role대신 ID값이 있으면, 모든 사용자 허용
                return true;
            }
            else if(!empty($parent_member_uid) && $parent_member_uid == $this->userdata->data->ID) {
                //로그인 후 부모글을 쓴사람은 관리자의 비밀 답글을 읽을 수 있어야 함
                //$this->userdata->data->ID //현재 로그인되어 있는사람
                //$writer_uid; //현재 글을 쓴사람
                //$parent_member_uid;    //부모 글을 쓴사람
                return true;
            }

        }
        else{
            return false;
        }
    }

 

이상입니다.^^

본 케이보드는 부산대학교 도서관 게시판에 적용되어 있습니다.^^ 사이트 바로가기(http://lib.pusan.ac.kr/community/ask/ask-bbs/)

좋은 프로그램을 공유해주셔서 감사드리며, 더욱 발전하는 케이보드가 되길 기대합니다.

그리고, 멀티사이트에서 케이보드를 공유하도록 설정하려고 하는데 좋은 정보가 있다면 추천 부탁드립니다. 

감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요