지비님(🔗)께서 배포하셨던 latest_all 관련해서 추가 커스텀 소스를 올립니다.
기본적으로 지비님 파일 및 사용법 숙지 후 사용해주세요.
덮어쓸 경우 이전 lib과의 차이로 오류가 날 수 있습니다. 가급적 코드 추가 혹은 수정을 부탁드립니다. (기존 설치했을 경우 latest_all부분의 함수를 전체 붙여넣기를 권장)
덮어쓰기의 경우 lib 폴더 안을 덮어쓰는 형태입니다. lib > latest.lib.php가 덮어쓰기가 뜨면 성공
게시판의 목록 권한이 10 인 게시판 전체 보이지 않게 하기
별도의 제외 테이블 지정하지 않고도 게시판 목록권한이 10일 경우 나타나지 않게 할 수 있습니다.
function latest_all($skin_dir='', $rows=10, $except_table, $subject_len=40, $cache_time=1, $options='')
{
global $g5;
if (!$skin_dir) $skin_dir = 'all';
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
$cache_fwrite = false;
if(G5_USE_CACHE) {
$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";
if(!file_exists($cache_file)) {
$cache_fwrite = true;
} else {
if($cache_time > 0) {
$filetime = filemtime($cache_file);
if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {
@unlink($cache_file);
$cache_fwrite = true;
}
}
if(!$cache_fwrite)
include($cache_file);
}
}
if(!G5_USE_CACHE || $cache_fwrite) {
$list = array();
$rowslist = array();
$rowsql = sql_query("SELECT bo_table FROM {$g5['board_table']} WHERE bo_list_level='10'");
while($ret = $rowsql->fetch_array()) {
array_push($rowslist, $ret['bo_table']);
}
$implist = "'".implode("','", $rowslist)."'";
if($except_table) { $except_table = $except_table.",".$implist;} else {$except_table = $implist;}
$sql = "SELECT wr_parent, max(bn_datetime), max(wr_id) as wr_id, bo_table FROM {$g5['board_new_table']}
WHERE bo_table not in ({$except_table})
GROUP BY wr_parent, bo_table ORDER BY max(bn_datetime) DESC limit 0, {$rows}";
// 게시글 기준으로 시간순 정렬하여 가장 최근 갱신된 게시글의 마지막 덧글 혹은 글을 rows 수만큼 검색함 (not in 안의 table은 제외)
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$board[$i]['bo_table'] = $row['bo_table'];
//게시판의 테이블명을 불러온다
$sql = " SELECT * FROM {$g5['board_table']} WHERE bo_table = '{$row['bo_table']}' ";
$tmp_sub = sql_fetch($sql);
$board[$i]['bo_subject'] = get_text($tmp_sub['bo_subject']);
//게시판의 이름을 불러온다
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
$sql = " SELECT * FROM $tmp_write_table WHERE wr_id = {$row['wr_id']} ";
$rs = sql_fetch($sql); //write_table에서 검색값 (1줄)
$board[$i]['href'] = G5_BBS_URL.'/board.php?bo_table='.$board[$i]['bo_table'].'&wr_id='.$rs['wr_id'].$qstr;
$board[$i]['wr_subject'] = get_text($rs['wr_subject']);
$board[$i]['wr_name'] = get_text($rs['wr_name']);
$board[$i]['wr_is_comment'] = $rs['wr_is_comment'];
$board[$i]['wr_num'] = $rs['wr_num']*-1;
$board[$i]['wr_comment'] = $rs['wr_comment'];
$board[$i]['wr_comment_reply'] = get_text($rs['wr_comment_reply']);
$board[$i]['wr_datetime'] = $rs['wr_datetime'];
$board[$i]['wr_option'] = $rs['wr_option'];
}
if($cache_fwrite) {
$handle = fopen($cache_file, 'w');
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".$bo_subject."';\n\$list=".var_export($list, true)."?>";
fwrite($handle, $cache_content);
fclose($handle);
}
}
ob_start();
include $latest_skin_path.'/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();
return $content;
}
아래는 덮어쓰는 파일용입니다.
커스텀
보기 권한으로 수정할 경우
bo_list_level을 찾아서 bo_read_level로 수정
권한 레벨을 일정 이상으로 수정할 경우
bo_list_level='10'을 bo_list_level>기준 레벨로 수정(ex: 6레벨부터 나오지 않게 하려면 bo_list_level>5로 설정)
특정 멤버의 게시글 보이지 않게 하기
function latest_all($skin_dir='', $rows=10, $except_table, $except_member, $subject_len=40, $cache_time=1, $options='')
{
global $g5;
if (!$skin_dir) $skin_dir = 'all';
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
$cache_fwrite = false;
if(G5_USE_CACHE) {
$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";
if(!file_exists($cache_file)) {
$cache_fwrite = true;
} else {
if($cache_time > 0) {
$filetime = filemtime($cache_file);
if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {
@unlink($cache_file);
$cache_fwrite = true;
}
}
if(!$cache_fwrite)
include($cache_file);
}
}
if(!G5_USE_CACHE || $cache_fwrite) {
$list = array();
$sql = "SELECT wr_parent, max(bn_datetime), max(wr_id) as wr_id, bo_table FROM {$g5['board_new_table']}
WHERE bo_table not in ({$except_table})
AND mb_id not in ({$except_member})
GROUP BY wr_parent, bo_table ORDER BY max(bn_datetime) DESC limit 0, {$rows}";
// 게시글 기준으로 시간순 정렬하여 가장 최근 갱신된 게시글의 마지막 덧글 혹은 글을 rows 수만큼 검색함 (not in 안의 table은 제외)
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$board[$i]['bo_table'] = $row['bo_table'];
//게시판의 테이블명을 불러온다
$sql = " SELECT * FROM {$g5['board_table']} WHERE bo_table = '{$row['bo_table']}' ";
$tmp_sub = sql_fetch($sql);
$board[$i]['bo_subject'] = get_text($tmp_sub['bo_subject']);
//게시판의 이름을 불러온다
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
$sql = " SELECT * FROM $tmp_write_table WHERE wr_id = {$row['wr_id']} ";
$rs = sql_fetch($sql); //write_table에서 검색값 (1줄)
$board[$i]['href'] = G5_BBS_URL.'/board.php?bo_table='.$board[$i]['bo_table'].'&wr_id='.$rs['wr_id'].$qstr;
$board[$i]['wr_subject'] = get_text($rs['wr_subject']);
$board[$i]['wr_name'] = get_text($rs['wr_name']);
$board[$i]['wr_is_comment'] = $rs['wr_is_comment'];
$board[$i]['wr_num'] = $rs['wr_num']*-1;
$board[$i]['wr_comment'] = $rs['wr_comment'];
$board[$i]['wr_comment_reply'] = get_text($rs['wr_comment_reply']);
$board[$i]['wr_datetime'] = $rs['wr_datetime'];
$board[$i]['wr_option'] = $rs['wr_option'];
}
if($cache_fwrite) {
$handle = fopen($cache_file, 'w');
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".$bo_subject."';\n\$list=".var_export($list, true)."?>";
fwrite($handle, $cache_content);
fclose($handle);
}
}
ob_start();
include $latest_skin_path.'/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();
return $content;
}
덮어쓰기 용
사용 시
<?=latest_all( '', 10, "''", "''")?>
이런 형태로 사용합니다. 맨 마지막 '' 안에 나타나지 않을 아이디를 적어주시면 됩니다.
ex) admin일 경우
<?=latest_all('',10,"''","'admin'")?>
기존 제외 게시글과 마찬가지로 컴마로 구분합니다.ex: 'admin, admin2'
두 쪽 다 적용하는 경우는 아래 파일을 참고해주세요.
'배포' 카테고리의 다른 글
TRPG 로그 게시판 배포 (31) | 2023.04.13 |
---|---|
TRPG 공수표 게시판_ver.2 배포 (19) | 2023.04.09 |
아보카도 에디션 퍼스널 리뷰 게시판 (13) | 2023.02.25 |
아보카도 에디션 인스타그램 로드비 가로형 (9) | 2023.02.24 |
아보카도 퍼스널 에디션 플레이리스트 (16) | 2023.02.10 |