<?
if (!defined('_GNUBOARD_')) exit;

// 최신글 추출
function latest($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g4;

    if ($skin_dir)
        $latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
    else
        $latest_skin_path = "$g4[path]/skin/latest/basic";

    $list = array();

    $sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
    $board = sql_fetch($sql);

    $tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
    //$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
    // 위의 코드 보다 속도가 빠름
    $sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, $rows ";
    //explain($sql);
    $result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++)
        $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);

    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

//-- 최신글 캐쉬 추출 -----------------------------------------------------------------------------
//-- $options 항목은 ,로 구분.
//-- $bo_table	= preg_replace("/\s+/", "", $bo_table);				//-- 공백 제거
function zm_latest($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g4, $zmb;

	if ($skin_dir)
        $latest_skin_path = "$g4[path]/".ZM_SKIN_DIR."/latest/$skin_dir";
    else
        $latest_skin_path = "$g4[path]/".ZM_SKIN_DIR."/latest/basic";

	$list	= array();											//-- 리스트가 들어갈 배열
	$sql	= "select * from $g4[board_table] where bo_table = '$bo_table'";		//-- 게시판 정보
    $board	= sql_fetch($sql);

	//-- 없는 게시판일 때는 경고 알려 줌.
	if(!$board[bo_table]) {
		$board_err	= 1;
		$bo_subject[subject]	= $bo_table;
	}else{
		$bo_subject[subject]	= $board[bo_subject];
	}

	//-- option
	$options	= preg_replace("/\s+/", "", $options);				//-- 공백 제거
	$opts		= explode(",", $options);

	$op_date	= false;
	foreach($opts as $k => $v) if($v == "date") $op_date = true;	//-- 날짜 보임
	foreach($opts as $k => $v) if($v == "...")	$op_points = "…"; else $op_points = "";	//-- 말줄임 표시
	//-- option end

	$zm_board	= zm_get_board_cfg("$bo_table");
	$tmp_write_table	= $g4['write_prefix'] . $bo_table;			// 게시판 테이블 전체이름

	$wrt_cache_path	= "$g4[path]/data/zm.exp/cache";				//-- 캐시 파일 경로
	$wrt_cache_file = "$wrt_cache_path/cache_".$bo_table.".php";	//-- 캐시 파일

	//-- 캐시 파일이 기록 될 경로
	if(!file_exists($wrt_cache_path)) zm_mkdir($wrt_cache_path);

	if(file_exists($wrt_cache_file)) {
		$filetime	= filectime($wrt_cache_file);
	}else{
		$filetime	= 0;
	}

	//-- 새글 캐쉬 시간이 지났으면 새 캐쉬를 만듬
	if($filetime < ($g4[server_time]-$zm_board[latestcache]) && (!$board_err)){
		$list_json	= "";

		//-- 목록 수는 임의로 15개 생성
		$sql	= "select * from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, 15";
		$result = sql_query($sql);

		for ($i = 0; $row = sql_fetch_array($result); $i++) {
	        $list[$i] = get_list($row, $board, $latest_skin_path, 100);

			//-- 필요한 것은 is_notice, subject, comment_cnt, datetime2, name, icon_reply, href, icon_new, icon_secret
			$user_list[$i][is_notice]	= $list[$i][is_notice];
			$user_list[$i][subject]		= $list[$i][subject];
			$user_list[$i][comment_cnt]	= $list[$i][comment_cnt];
			$user_list[$i][datetime2]	= $list[$i][datetime2];
			$user_list[$i][name]		= $list[$i][name];
			$user_list[$i][icon_reply]	= $list[$i][icon_reply];
			$user_list[$i][href]		= $list[$i][href];
			$user_list[$i][icon_new]	= $list[$i][icon_new];
			$user_list[$i][icon_recret]	= $list[$i][icon_recret];
			$user_list[$i][se_thumb_url]	= $list[$i][se_thumb_url];
			$user_list[$i][g4_thumb_url]	= $list[$i][g4_thumb_url];
			$user_list[$i][se_thumb]	= $list[$i][se_thumb];
			$user_list[$i][g4_thumb]	= $list[$i][g4_thumb];
		}

		$list_json	= json_encode($user_list);
		//-- 파일 쓰기
		$fh		= fopen("$wrt_cache_file","w");
		fwrite($fh, $list_json);
		fclose($fh);
		clearstatcache();
	}	//-- endif;

	//-- 캐시를 읽어 옮
	$tmp_cache	= "";
	$tmp_list	= array();
	if(file_exists($wrt_cache_file)) {			//-- 캐쉬 파일 있을 때만 열기
		$data		= @file("$wrt_cache_file");
		for($i=0; $i< sizeof($data); $i++)	$tmp_cache .= $data[$i];

		$tmp_list	= json_decode($tmp_cache);
	}

	//-- 출력할 목록 수는 입력받은 수에 맞추기
	$list		= array();
	$list_count	= $rows;
	if(count($tmp_list) < $rows) $list_count = count($tmp_list);
	for($i = 0; $i < $list_count; $i++) {
		foreach($tmp_list[$i] as $key => $val) {
			$list[$i][$key]	= $val;
			if($key == "subject")
				$list[$i][subject] = cut_str($val, $subject_len, "$op_points");					//-- 제목 길이 맞춤
		}
	}

	ob_start();
	include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
	ob_end_clean();

    return $content;
}
?>