안녕하세요? 케이보드를 잘 사용하고 있습니다. 먼저 감사를 드립니다.
케이보드를 회원제로 운영하고 있고, 로그인해야만 글을 쓸 수 있도록 설정되어 있습니다.
회원이 비밀글을 작성하고 답글로 관리자가 글을 작성할 때 비밀글로 썼다면, 원글을 쓴 회원이 읽을 권한이 없다고 나옵니다.
맞나요? 설명이 제대로 된것인지 모르겠네요.ㅎ
그래서, 관리자의 비밀 답글을 원글(부모글)의 작성자가 볼 수 있도록 수정해 봤습니다.
검토해봐 주시고, 다음에 패치가 된다면 적용여부를 검토해봐 주시면 감사하겠습니다.
수정파일 : 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/)
좋은 프로그램을 공유해주셔서 감사드리며, 더욱 발전하는 케이보드가 되길 기대합니다.
그리고, 멀티사이트에서 케이보드를 공유하도록 설정하려고 하는데 좋은 정보가 있다면 추천 부탁드립니다.
감사합니다.
좋은 정보 잘 보았습니다
참, 혹 멀티 사이트에서 그렇게 하시려면 새로운 테이블을 만들거나 해서 별도의 키로 관리하셔야될거예요..
부산대학교 도서관 홈페이지에서 사용하고 계시군요~
좋은정보 감사합니다.
부족한 점이 많은 케이보드지만 계속 발전하고 있으니 꾸준한 관심 부탁드립니다^^
멀티사이트는 테이블 자체가 각각 사이트별로 생성됩니다.
그래서 데이터 공유가 안되고 있는데요.
이러한 부분은 저희도 고민 해보도록 하겠습니다.