그룹ID를 가지고 해당 그룹에 속한 게시판 데이터를 가져오는 내장 함수?
본문
예를 들면
get_menu_db 나 get_board_db 와 같이 그누보드 자체 내장 함수로
gr_id 를 조회해서 gr_id 에 속한 게시판 데이터를 가져오는 함수가 기본적으로 있는지, 아님 함수를 만들어서 써야하는지 궁금합니다...
내장 함수가 있다면 그걸 쓰고 없으면 만들 생각인데 그런 함수가 있나 찾아봤지만 진짜 없는건지 못찾는건지 모르겠어서 질문 남깁니다!
답변 3
함수가 없어 보이는데.. 아래의 내용도 한번 참고를..
function get_group_board_list($gr_id) {
global $g5;
$sql = "SELECT * FROM {$g5['board_table']}
WHERE gr_id = '{$gr_id}'
ORDER BY bo_order, bo_table";
$result = sql_query($sql);
$board_list = array();
while ($row = sql_fetch_array($result)) {
$board_list[] = $row;
}
return $board_list;
}
function get_accessible_group_boards($gr_id, $member_level = 1) {
global $g5, $member;
$mb_level = $member['mb_level'] ?? $member_level;
$sql = "SELECT * FROM {$g5['board_table']}
WHERE gr_id = '".sql_real_escape_string($gr_id)."'
AND bo_list_level <= {$mb_level}
ORDER BY bo_order, bo_table";
$result = sql_query($sql);
$board_list = array();
while ($row = sql_fetch_array($result)) {
$board_list[] = $row;
}
return $board_list;
}
확인해보니 놓친 부분이 있을 수 있겠으나.
그룹 아이디 자체로 해당 게시판을 가져오는 함수는 별도로 없습니다.
대부분 스킨이나 이런부분에서는 gr_id 형태가 아니라 그냥 g5_board 를 조회 해서 반복문을 돌리다보니,
그런게 없을 수 있겠습니다.
비슷한 예로 최근 게시물도 글쓰기 게시판을 다이렉트로 조회하고 있어서요..
마지막으로 g5_menu 에는 그룹 아이디가 별도로 존재하지 않으므로, 필드 추가 해서
사용하는 방법을 택하셔야 할 것 같습니다.
저는 아래처럼 사용 합니다.
<div class="latest_wr">
<!-- 최신글 시작 { -->
<?php
// 최신글
$sql = " select bo_table from `{$g5['board_table']}` a left join `{$g5['group_table']}` b on (a.gr_id=b.gr_id) where a.bo_device <> 'mobile' ";
if(!$is_admin)
$sql .= " and a.bo_use_cert = '' ";
$sql .= " and a.bo_count_write > 0 ";
// $sql .= " and b.gr_id not in ('cn','jp', 'en') "; //cn, jp, en 그룹 제외하고
$sql .= " and b.gr_id = '{$group}' "; //$group 만
$sql .= " and a.bo_table not in ('notice', 'gallery') "; //공지사항과 갤러리 게시판은 제외
$sql .= " order by b.gr_order, a.bo_order ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$lt_style = '';
if ($i%3 !== 0 ) $lt_style = "margin-left:2%";
?>
<div style="float:left;<?php echo $lt_style ?>" class="lt_wr">
<?php
// 이 함수가 바로 최신글을 추출하는 역할을 합니다.
// 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
// 테마의 스킨을 사용하려면 theme/basic 과 같이 지정
echo latest('theme/basic', $row['bo_table'], 6, 24);
?>
</div>
<?php
}
?>
<!-- } 최신글 끝 -->
</div>