본문 바로가기
셈틀 Com/제로보드

여러게시판에서 최근글추출(게시판별로 추출)

by 길목 2005. 5. 24.

<?
$_zb_url = "http://heenju.nafly.net/bbs/";
$_zb_path = "/free/home/heenju/html/bbs/";
include $_zb_path."outlogin.php";
// 설정부분 끝.

//////////////////////////////////////////////////
// 최근게시물 함수 지정
///////////////////////////////////////////////////
       
function recent_bbs($skinname, $title, $num=10, $textlen=30, $datetype="Y년m월d일") {
global $_zb_path, $_zb_url, $connect, $t_board, $t_comment, $admin_table, $mb_id, $mb_conf, $mb_title;

//////////////////////////////////////
// 스킨의 존재여부 검사

$str = zReadFile($_zb_path."latest_skin/".$skinname."/main.html");
if(!$str) {
       echo "지정하신 $skinname 이라는 최근목록 스킨이 존재하지 않습니다<br>";
       return;
}

//////////////////////////////////////
// 필요한 변수 받아내기

if(!$mb_conf[icon])
   $ico = "<img src=".$zb_url."images/dot_green.gif width=7 height=7>";
else
   $ico = $mb_conf[icon];

$id = $mb_id; // id 받기
$idTitle = $mb_title; //각 게시판의 이름 받기    
$cutTimeMode = $mb_conf[timemode]; // 최근 게시물 시간 범위
$showCategory = 1 - $mb_conf[nocategory]; //카테고리 보이기 값
$showIdtitle  = $mb_conf[showidtitle]; // 게시판 이름 보이기 값    
$myTitle = $mb_conf[mytitle];      

for( $i = 0; $i < sizeof($id); $i++){    
   $setup = mysql_fetch_array(mysql_query("select use_alllist, use_category from $admin_table where name='".$id[$i]."'"));
   if($setup[use_alllist])
       $target[$id[$i]] = "zboard.php?id=";
   else
       $target[$id[$i]] = "view.php?id=";
   if($setup[use_category]) $use_category[$id[$i]] = 1;
   $idTitle[$id[$i]] = $mb_title[$i];
}

// 스킨 관련 변수
$tmpStr = explode("[loop]",$str);
$header = $tmpStr[0];
$tmpStr2 = explode("[/loop]",$tmpStr[1]);
$loop = $tmpStr2[0];
$footer = $tmpStr2[1];

//////////////////////////////////////
// 처리 시작

$tc = 0; //전체 데이타 카운터
$icon_new = "<img src='".$_zb_url."images/new_writing.gif'>";
$time_new = time() - 3600 * 24;

/* 뽑을 게시물 시간범위 관련 설정 시작 */
// $cutTimeMode가 1 이면 24시간 이내의 게시물 추출
// $cutTimeMode가 2 이면 오늘 새벽 0시0분부터 올라온 게시물 추출
// $cutTimeMode가 0 혹은 기타 수일 때 그냥 최근올려진 순서로 추출(시간제한 없음)

if($cutTimeMode == 1){
$cut_time = time() - 3600 * 24;   // 24시간이내
}else if($cutTimeMode == 2){
$cut_time = mktime(0,0,0,date("m"),date("d"),date("Y")); // 오늘 아침 0시부터
}else{
$cut_time = 0;
}  
/* 뽑을 게시물 시간범위 관련 설정 끝. */    

// 최근 글 순으로 게시물 뽑음
for( $i = 0; $i < sizeof($id); $i++){
   $query = "select * from ".$t_board."_".$id[$i]." where is_secret=0 and reg_date > $cut_time order by no desc limit $num";
   $result = mysql_query($query, $connect) or die(mysql_error());
               while($data=mysql_fetch_array($result)){
                   $ad[$tc][name] = stripslashes($data[name]);
                   $ad[$tc][subject] = cut_str(stripslashes($data[subject]), $textlen)."</font></b>";
                   $ad[$tc][date] = date($datetype, $data[reg_date]);
                   $ad[$tc][reg_date] = $data[reg_date];

                   $last_comment = mysql_fetch_array(mysql_query("select * from $t_comment"."_$id[$i] where parent='$data[no]' order by reg_date desc limit 1"));
                   $last_comment_time = $last_comment['reg_date'];
                   if(time()-$last_comment_time<3600*12)
                       $comment_num = "[<font color=red>".$data[total_comment]."</font>]";
                   elseif(time()-$last_comment_time<3600*24)
                       $comment_num = "[<font color=green>".$data[total_comment]."</font>]";
                   else
                       $comment_num = "[".$data[total_comment]."]";      
                   $ad[$tc][comment] = $data[total_comment] ? $comment_num : "";  
                               
                   $ad[$tc][icon] = $data[reg_date] > $time_new ? $icon_new : "";
                   $ad[$tc][target] = $_zb_url.$target[$id[$i]].$id[$i]."&no=".$data[no];
       $ad[$tc][catelink] = $_zb_url."zboard.php?id=".$id[$i]."&category=".$data[category];
                   $ad[$tc][id] = $id[$i];
                   $ad[$tc][no] = $data[no];
                   $category = $data[category];
                   $result_category = mysql_query("select * from zetyx_board_category_".$id[$i]." where no='$category'") or die(mysql_error());
                   $category = mysql_fetch_array($result_category);
                   $ad[$tc][cate] = $category[name];
                   $tm[$tc] = $data[reg_date];
                   $map[$data[reg_date]] = $tc;
                   $tc++;
               }
}


///////////////
// output


// 모든게시물을 시간순으로 정렬
if($tc)    
sort($tm);

// 스킨관련 부분
// $mbName, $mbDate, $mbSubject, $mbComment, $mbCategory;

// 최근 게시물 순으로 $num만큼 출력
for($i = sizeof($tm)-1; $i >= sizeof($tm)-$num && $i >= 0; $i--){
$n = $map[$tm[$i]];
//print "$ico ";
$mbCategory = "";

// 게시판 이름 보이기
if($showIdtitle){
$mbCategory = "[ <a href=".$_zb_url."zboard.php?id=".$ad[$n][id]."><font color=black>".$idTitle[$ad[$n][id]]."</font></a>";
if($showCategory)
     $mbCategory .= ">";
else
     $mbCategory .= " ]";
}

// 카테고리 표시하지 않기를 선택했다면 카테고리 감추고 자신이 정의한 제목을 앞에 달음
if($showCategory){
if(!$showIdtitle) print "[ ";
       $mbCategory .= "<a href=".$ad[$n][catelink]."><font color=black>".$ad[$n][cate]."</font></a> ]";
}else{
$mbCategory .= $myTitle;
}  

$mbSubject = "<a href=".$ad[$n][target]." title='작성자:".$ad[$n][name]." 작성일:".$ad[$n][date]."'>";
$mbSubject .= $ad[$n][subject];
$mbSubject .= "</a> ".$ad[$n][icon];
$mbComment = $ad[$n][comment];
$mbName    = $ad[$n][name];
$mbDate    = $ad[$n][date];

$main = $loop;
$main = str_replace("[name]",$mbName,$main);
$main = str_replace("[date]",$mbDate,$main);
$main = str_replace("[subject]",$mbSubject,$main);
$main = str_replace("[comment]",$mbComment,$main);
$main = str_replace("[category]",$mbCategory,$main);
$main_data .= "\n".$main;
}


// 전체 출력 문자열을 모아놓기
$list = $header.$main_data.$footer;
$list = str_replace("[title]",$title,$list);
$list = str_replace("[dir]",$_zb_url."latest_skin/".$skinname."/images/",$list);

// 출력
echo $list;
}
?>
   
<!-- ############################################### 브라우저에 출력 부분 ############################################### -->    
   
<html>
<head></head>
<body>
// 최근 글 10개 출력하기(글 길이를 30자까지 끊기, <font color=red>[ 게시판 > 카테고리 ] 형식으로 보이기</font>)<br>
<?
   $mb_id = array("hee_free", "infodata", "ju_qt");
   $mb_title = array("인사하기", "자유글", "도 닦기"); // 게시판 이름
   $mb_conf[showidtitle] = 1; // 게시판 이름 보이기    
   recent_bbs("index", "여러게시판", 10,30);
?>
// 공지 뽑기(카테고이 안보이기, 카테고리 대신 지정한 문자열 나오게 하기, 리스트 아이콘 지정하기)<br>
<?
   $mb_id = array("ju_free");   // 공지사항 뽑기
   $mb_title = array("공지사항");
   $mb_conf[nocategory] = 1; // 카테고리 보이지 않음
   $mb_conf[showidtitle] = 0; // 게시판 이름 안보이기
   $mb_conf[mytitle] = "<b>알림공지</b> "; // 카테고리 자리에 자신이 정의한 글자가 나오게 함
   $mb_conf[icon] = "<img src='".$_zb_url."images/notice.gif' width=12 height=12>"; // 리스트 아이콘 지정
   recent_bbs("index", "공지사항", 2,30);
   $mb_conf[mytitle] = "";
   $mb_conf[icon] = ""; // 초기화시킴
   $mb_conf[nocategory] = 0; // 초기화시킴
?>

// 24시간 이내에 올려진 글 뽑기 (최근글 뽑기 시간범위 지정 1, <font color=red>게시판 이름만 보이기</font>)<br>
<?
   $mb_id = array("hee_free", "infodata", "ju_qt");
   $mb_title = array("인사하기", "자유글", "도 닦기"); // 게시판 이름
   $mb_conf[showidtitle] = 1; // 게시판 이름 보이기    
   $mb_conf[nocategory] = 1; // 카테고리 감추기
   $mb_conf[timemode] = 1;
   recent_bbs("index","in 24 hours", 5, 30);
?>

//오늘 새벽 0시0분부터 올라온 글만 뽑기 (최근글 뽑기 시간범위 지정 2, <font color=red>카테고리 이름만 보이기</font>)<br>    
<?
   $mb_conf[timemode] = 2;
   $mb_conf[showidtitle] = 0; // 게시판 이름 안보이기
   $mb_conf[nocategory] = 0; // 카테고리 감추지 않기(보이기)
   $mb_conf[mytitle] = ""; // 카테고리 자리에 자신이 정의한 글자가 나오게 하던것을 초기화
   recent_bbs("index","오늘게시물", 6, 30);
?>

</body>
</html>

댓글