코드이그나이터 기반 PHP 오픈소스 게시판 : 씨아이보드

[씨아이보드] 비밀글 열람 권한 지정 옵션

비밀글의 경우 글쓴이와 관리자만 열람이 가능합니다.

중간 관리자나 직원이 확인해야 하는 경우 다음과 같이 비밀글 열람 권한을 지정하여 사용하도록 합니다.


1. /views/admin/basic/board/boards/write_access.php :: 91라인 아래에 추가


<div class="form-group">

<label class="col-sm-2 control-label">비밀글열람</label>

<div class="col-sm-8 form-inline">

<?php

$config = array(

'column_name' => 'access_secure_view',

'column_level_name' => 'access_secure_view_level',

'column_group_name' => 'access_secure_view_group',

'column_value' => element('access_secure_view', element('data', $view)),

'column_level_value' => element('access_secure_view_level', element('data', $view)),

'column_group_value' => element('access_secure_view_group', element('data', $view)),

'max_level' => element('config_max_level', element('data', $view)),

'mgroup' => element('mgroup', element('data', $view)),

);

echo get_access_selectbox($config);

?>

</div>

<div class="col-sm-2">

<label for="grp_access_secure_view" class="checkbox-inline">

<input type="checkbox" name="grp[access_secure_view]" id="grp_access_secure_view" value="1" /> 그룹적용

</label>

<label for="all_access_view" class="checkbox-inline">

<input type="checkbox" name="all[access_secure_view]" id="all_access_secure_view" value="1" /> 전체적용

</label>

</div>

</div>



2. /application/controllers/admin/board/Boards.php :: write_access() 에 추가

/**
 * 전송된 데이터의 유효성을 체크합니다
 */
$config = array(
--- 중간생략 ---
array(
'field' => 'access_secure_view',
'label' => '권한 - 비밀글 열람',
'rules' => 'trim|numeric',
),
array(
'field' => 'access_secure_view_level',
'label' => '권한 - 비밀글 열람 레벨',
'rules' => 'trim|numeric',
),
array(
'field' => 'access_secure_view_group[]',
'label' => '권한 - 비밀글 열람 그룹',
'rules' => 'trim',
),

--- 중간생략 ---

/**
 * 유효성 검사를 통과한 경우입니다.
 * 즉 데이터의 insert 나 update 의 process 처리가 필요한 상황입니다
 */

// 이벤트가 존재하면 실행합니다
$view['view']['event']['formruntrue'] = Events::trigger('formruntrue', $eventname);

$array = array('access_list', 'access_list_level', 'access_view', 'access_view_level', 'access_secure_view', 'access_secure_view_level',
'access_write', 'access_write_level', 'access_reply', 'access_reply_level', 'access_comment',
'access_comment_level', 'access_upload', 'access_upload_level', 'access_download',
'access_download_level', 'access_dhtml', 'access_dhtml_level', 'access_blame',
'access_blame_level', 'access_poll_write', 'access_poll_write_level', 'access_poll_attend',
'access_poll_attend_level', 'access_tag_write', 'access_tag_write_level',
'access_subject_style', 'access_subject_style_level', 'access_list_selfcert',
'access_view_selfcert', 'access_write_selfcert', 'access_comment_selfcert');

$array_checkbox = array('access_list_group', 'access_view_group', 'access_secure_view_group', 'access_write_group',
'access_reply_group', 'access_comment_group', 'access_upload_group',
'access_download_group', 'access_dhtml_group', 'access_blame_group',
'access_poll_write_group', 'access_poll_attend_group', 'access_subject_style_group',
'access_tag_write_group');

--- 중간생략 ---

if ($value === 'access_view') {
$groupdata['access_view_level'] = $this->input->post('access_view_level', null, '');
$groupdata['access_view_group'] = json_encode($this->input->post('access_view_group', null, ''));
}
if ($value === 'access_secure_view') {
$groupdata['access_secure_view_level'] = $this->input->post('access_secure_view_level', null, '');
$groupdata['access_secure_view_group'] = json_encode($this->input->post('access_secure_view_group', null, ''));
}

--- 중간생략 ---

if ($value === 'access_list') {
$alldata['access_list_level'] = $this->input->post('access_list_level', null, '');
$alldata['access_list_group'] = json_encode($this->input->post('access_list_group', null, ''));
}
if ($value === 'access_view') {
$alldata['access_view_level'] = $this->input->post('access_view_level', null, '');
$alldata['access_view_group'] = json_encode($this->input->post('access_view_group', null, ''));
}

3. /application/controllers/Board_post.php :: post() 수정

if ($print && ! element('use_print', $board)) {
alert('이 게시판은 프린트 기능을 지원하지 않습니다');
return false;
}

$is_secure_view = false;
/* 비밀글 처리 : 게시판 설정에서 비밀글 열람 권한 설정 추가 */
if (element('post_secret', $post)) {
      if(element('access_secure_view', $board))
      $is_secure_view = $this->accesslevel->is_accessable(element('access_secure_view', $board), element('access_secure_view_level', $board), element('access_secure_view_group', $board), $check);

if (element('mem_id', $post)) {
if ($is_admin === false && $mem_id !== abs(element('mem_id', $post)) && !$is_secure_view) {
alert('비밀글은 본인과 관리자만 확인 가능합니다');
return false;
}
} else {
if ($is_admin !== false || $is_secure_view) {
$this->session->set_userdata(
'view_secret_' . element('post_id', $post),
'1'
);
}




1
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오톡으로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

팁&테크

번호 제목 글쓴이 날짜 조회수
공지 Github 운영을 시작합니다 +10 icon 관리자 11-19 9,691
공지 씨아이보드 3 배포 안내 +18 icon 관리자 11-09 11,384
54 씨아이보드 php7.4 + mysql 8 설치 경험 공유 합니다. 돌아온니모 02-04 194
53 씨아이보드 카카오 소셜 로그인 불가시. 아카이 11-13 398
52 씨아이보드 소셜로그인 네이버로그인 안될때 해결방법 플라이이글스 09-22 525
51 코드이그나이터 smarteditor 사진업로드가 안되는 현상 해결방법(400error) 플라이이글스 08-11 590
50 씨아이보드 게시판 첨부 이미지 클릭시 새창 안뜨고 오리지날 이미지로 확대축소만 하… 옹박 04-23 702
49 씨아이보드 install 시 step4 에서 데이터베이스 접속 실패 뜨시는분? +2 왕돌 09-26 1,712
48 씨아이보드 smslib 장문 문자 발송 수정 하마쿵 04-11 2,055
47 씨아이보드 게시판 post 하단에 다음글, 이전글 제목 나오기 whalam 04-09 1,554
46 씨아이보드 다음 juso.js 파일이 로드되지 않았습니다. +1 ceoseo 12-04 2,001
45 서버 APM AUTO INSTALL V 0.2.9 +4 icon 아파치 11-26 1,613
44 씨아이보드 일단 erd그렸습니다. +13 icon Rido 11-10 3,745
43 씨아이보드 CIBOARD 설치가 안됩니다. 답변 부탁드립니다. +4 백경우 11-01 1,603
42 씨아이보드 스마트에디터 파일업로드시 도메인부분을 제거하고 이미지 태그 등록 +4 꽃이피는첫걸음 10-18 1,908
41 씨아이보드 비밀글 열람 권한 지정 옵션 꽃이피는첫걸음 10-15 1,266
40 씨아이보드 post에 글주소 클립보드 복사기능 대체(크롬에서 정상작동) +2 꽃이피는첫걸음 10-05 1,261
39 씨아이보드 일반페이지(document)에서 이미지맵 적용하기 꽃이피는첫걸음 10-02 864
38 씨아이보드 CIBOARD에 summernote 에디터 추가 +3 BOSS 08-03 1,611
37 씨아이보드 날짜를 연도까지 나오게 하기.. +1 마젠토 11-10 2,874
36 씨아이보드 디렉토리 구조 이해하기 +4 icon 해피정 08-17 5,391
35 씨아이보드 utf8mb4 로 설치하기 (2017-08-11 수정) icon 해피정 08-11 2,664