━━━━ ◇ ━━━━
배포

아보카도 에디션 latest_all 커스텀

지비님(🔗)께서 배포하셨던 latest_all 관련해서 추가 커스텀 소스를 올립니다.

기본적으로 지비님 파일 및 사용법 숙지 후 사용해주세요.

덮어쓸 경우 이전 lib과의 차이로 오류가 날 수 있습니다. 가급적 코드 추가 혹은 수정을 부탁드립니다. (기존 설치했을 경우 latest_all부분의 함수를 전체 붙여넣기를 권장)

덮어쓰기의 경우 lib 폴더 안을 덮어쓰는 형태입니다. lib > latest.lib.php가 덮어쓰기가 뜨면 성공

 

게시판의 목록 권한이 10 인 게시판 전체 보이지 않게 하기

별도의 제외 테이블 지정하지 않고도 게시판 목록권한이 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'].'&amp;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;
}

 

아래는 덮어쓰는 파일용입니다.

lib_게시글 목록권한 10 이상.zip
0.00MB

 

커스텀

보기 권한으로 수정할 경우

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'].'&amp;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;
}

덮어쓰기 용

lib_특정멤버안뜨게하기.zip
0.00MB

 

사용 시 

<?=latest_all( '', 10, "''", "''")?>

이런 형태로 사용합니다. 맨 마지막 '' 안에 나타나지 않을 아이디를 적어주시면 됩니다.

ex) admin일 경우

<?=latest_all('',10,"''","'admin'")?>

기존 제외 게시글과 마찬가지로 컴마로 구분합니다.ex: 'admin, admin2'

 

두 쪽 다 적용하는 경우는 아래 파일을 참고해주세요.

lib_전체패치.zip
0.00MB

COMMENT