[G5] [최신게시물] 랜덤, 카테고리, 원글 아래 답글 등 > 기술자료 | 해피정닷컴

[G5] [최신게시물] 랜덤, 카테고리, 원글 아래 답글 등 > 기술자료

본문 바로가기

사이트 내 전체검색

[G5] [최신게시물] 랜덤, 카테고리, 원글 아래 답글 등 > 기술자료

그누보드 [G5] [최신게시물] 랜덤, 카테고리, 원글 아래 답글 등

페이지 정보


본문

그누보드5 / lib / latest.lib.php  에 필요한 내용을 추가합니다.


1-1. 최신글 랜덤 추출 함수  rand()  활용
// 2017-02-05 : 그누보드 원본에 latest_rand 함수의 중복으로 함수명 변경
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// 2016-11-21 : 최신글 랜덤 추출 ... 랜덤 추출을 위해 캐쉬를 사용하지 않음
// <?php echo hp_latest_rand("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >

1-2. 최신글 랜덤 추출 함수  rand()  활용
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// 나너우리 님이 주신 팁 활용
<?php echo hp_latest_rand2("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >

2. 카테고리로 최신글 보이기
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_category("최신글스킨", "게시판이름", 게시물수, 제목글자수, "카테고리이름");? >

3. 최신글 추출 ## 답글이 원본글 밑에 붙는 방식
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_datetime("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >

4. 작성일자로 최신글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_datetime("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >

5. 선택한 그룹별로 원하는 수만큼 보여줌
// 2017-09-07 : 테마의 스킨도 사용가능하게 변경, 그룹명이 추출 되도록 변경
// 2017-02-05  다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// 출처: http://sir.kr/bbs/board.php?bo_table=g4_skin&wr_id=95895
// <?php echo hp_latest_group("최신글스킨", "그룹이름", 게시물수, 제목글자수, 본문글자수);? >

6. 배너 최신글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_banner_nolink("최신글스킨", "게시판이름", 게시물수, 제목글자수, "옵션");? >

7. 작성일자로 최신글 추출(코멘트포함)
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_datetime2("최신글스킨", "게시판이름", 게시물수, 제목글자수, "옵션");? >

8. 최신 코멘트글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_comment("최신글스킨", "게시판이름", 게시물수, 제목글자수, "옵션");? >




// 1-1. 최신글 랜덤 추출 함수  rand()  활용
// 2017-02-05 : 그누보드 원본에 latest_rand 함수의 중복으로 함수명 변경
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// 2016-11-21 : 최신글 랜덤 추출 ... 랜덤 추출을 위해 캐쉬를 사용하지 않음
// <?php echo hp_latest_rand("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >
function hp_latest_rand($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="") {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_SKIN_URL.'/latest/'.$skin_dir;
    }

    $cache_fwrite = false;
    $list = array();

    $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
    $board = sql_fetch($sql);
    $bo_subject = get_text($board['bo_subject']);

    $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
    $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by rand() desc limit 0, {$rows} ";
    $result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++) {
        $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
    }
    /*
    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);
    }
    */
    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}
?>


// 1-2. 최신글 랜덤 추출 함수  rand()  활용
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// 나너우리 님이 주신 팁 활용
// <?php echo hp_latest_rand2("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >
function hp_latest_rand2($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="") {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $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}-rand2-{$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_once($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        //$sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by rand() desc limit 0, {$rows} ";
        //나너우리님의 대체쿼리 시작
        $sql = " select wr_id from {$tmp_write_table} where wr_is_comment = 0 order by rand() desc limit 0, {$rows} ";
        $result = sql_query($sql);
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 and ( wr_id in (";
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $sql = $sql.$row[wr_id].",";
        }
        $sql = substr($sql,0,strlen($sql) - 1)."))";
        //나너우리님의 대체쿼리 끝
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

        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);
        }
    }

    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}



// 2. 최신글 카테고리 데이타만 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_category("최신글스킨", "게시판이름", 게시물수, 제목글자수, "카테고리이름");? >
function hp_latest_category ($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="") {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $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}-category-{$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_once($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        $sql = " select * from {$tmp_write_table} where ca_name = '{$options}' order by wr_num limit 0, {$rows} ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

        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);
        }
    }

    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}



// 3. 최신글 추출 ## 답글이 원본글 밑에 붙는 방식
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_re("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >
function hp_latest_re($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="") {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $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}-re-{$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_once($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num asc, wr_id asc limit 0, {$rows} ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

        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);
        }
    }

    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}



// 4. 작성일자로 최신글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_datetime("최신글스킨", "게시판이름", 게시물수, 제목글자수);? >
function hp_latest_datetime($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=1, $options='') {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $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}-datetime-{$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_once($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_datetime desc limit 0, {$rows} ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

        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);
        }
    }

    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}



// 5. 선택한 그룹별로 원하는 수만큼 보여줌
// 2017-09-07 : 테마의 스킨도 사용가능하게 변경, 그룹명이 추출 되도록 변경
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// 출처: http://sir.kr/bbs/board.php?bo_table=g4_skin&wr_id=95895
// <?php echo hp_latest_group("최신글스킨", "그룹이름", 게시물수, 제목글자수, 본문글자수);? >

function hp_latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $contents_len=200, $category="", $orderby="") {
    global $config;
    global $g5;
    
    $list = array();
    $limitrows = $rows;
    
    $sqlgroup = " select bo_table, bo_subject from $g5[board_table] where gr_id = '$gr_id' and  bo_use_search=1 order by bo_order";  // 해피정닷컴 2014-08-28 수정
    $rsgroup = sql_query($sqlgroup);
    //echo $sqlgroup;

    if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
        if (G5_IS_MOBILE) {
            $latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
            if(!is_dir($latest_skin_path))
                $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
            $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
        } else {
            $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
            $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
        }
        $skin_dir = $match[1];
    } else {
        if(G5_IS_MOBILE) {
            $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
            $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        } else {
            $latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
            $latest_skin_url  = G5_SKIN_URL.'/latest/'.$skin_dir;
        }
    }

 
    for ($j=0, $k=0; $rowgroup=sql_fetch_array($rsgroup); $j++) {
        $bo_table = $rowgroup[bo_table];
        
        // 테이블 이름구함
        $sql = " select * from ".$g5['board_table']." where bo_table = '".$bo_table."'";
        $board = sql_fetch($sql);
        
        $sql_gr = " select * from ".$g5['group_table']." where gr_id = '".$board['gr_id']."'";
        $group = sql_fetch($sql_gr);
        $bo_subject = $group['gr_subject'];
        
        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 실제이름
        
        // 옵션에 따라 정렬
        $sql = "select * from ".$tmp_write_table." where wr_is_comment = 0 ";
        $sql .= (!$category) ? "" : " and ca_name = '".$category."' ";
        $sql .= (!$orderby) ? "  order by wr_id desc " : "  order by $orderby desc, wr_id desc ";
        $sql .= " limit $limitrows";
        //echo $sql;
        $result = sql_query($sql);
    
        for ($i=0; $row = sql_fetch_array($result); $i++, $k++) {
        
            if(!$orderby) $op_list[$k] = $row[wr_datetime];
            else  {
                $op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
                $op_list[$k] .= $row[wr_datetime];
                $op_list[$k] .= $row[wr_name];
                $op_list[$k] .= $row[wr_10];
            }
            
            $list[$k] = get_list($row, $board, $latest_skin_path, $subject_len, $wr_name, $wr_10);
            
            $list[$k][bo_table] = $board[bo_table];
            $list[$k][bo_subject] = $board[bo_subject];
            $list[$k][wr_name] = $board[wr_name];
            $list[$k][wr_10] = $board[wr_10];
            
            
            //$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len, $wr_name, $wr_10);
            $list[$k][bo_wr_subject] = cut_str($board_bo_subject . $list[$k][wr_subject], $subject_len, $wr_name, $wr_10);
        }
    }
    
    if($k>0) array_multisort($op_list, SORT_DESC, $list);
    if($k>$rows) array_splice($list, $rows);
    
    ob_start();
    include $latest_skin_path.'/latest.skin.php';
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}



// 6. 배너 최신글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_banner_nolink("최신글스킨", "게시판이름", 게시물수, 제목글자수, "옵션");? >
function hp_latest_banner_nolink($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="") {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $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}-banner_nolink-{$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_once($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by rand() desc limit 0, {$rows} ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

        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);
        }
    }

    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}



// 7. 배너 최신글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_datetime2("최신글스킨", "게시판이름", 게시물수, 제목글자수, "옵션");? >
function hp_latest_datetime2($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g5;

    if ($skin_dir)
        $latest_skin_path = G5_PATH."/skin/latest/$skin_dir";
    else
        $latest_skin_path = G5_PATH."/skin/latest/basic";

    $list = array();

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

    $tmp_write_table = $g5['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_datetime desc limit 0, $rows ";
    $sql = " select B.wr_id, B.wr_num, B.wr_is_comment, B.wr_subject, ifnull( C.wr_content, '') cmmt, C.wr_id, C.wr_parent from $tmp_write_table B left join $tmp_write_table C on B.wr_is_comment=0 and B.wr_id=C.wr_parent and C.wr_is_comment=1 where B.wr_is_comment=0 and B.wr_id>0 order by B.wr_num, C.wr_comment limit 0, $rows ";
    //explain($sql);
    $result = sql_query($sql);
    $sql2 = 0;
    for ($i=0; $row = sql_fetch_array($result); $i++) {
      if( $sql2 == $row['wr_num']) {
        $sql2= $row['wr_num'];
        $list[$i]['comment_str'].= cut_str( $row['cmmt'], $subject_len).', ';
        continue;
      }
      $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;
}



// 8. 최신 코멘트글 추출
// 2017-02-05 : 다른 latest Function과 중복 방지를 위해 latest_ 를  hp_latest_ 로 변경
// <?php echo hp_latest_comment("최신글스킨", "게시판이름", 게시물수, 제목글자수, "옵션");? >
function hp_latest_comment($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="") {
    global $g5;
    //static $css = array();

    if (!$skin_dir) $skin_dir = 'basic';

    if(G5_IS_MOBILE) {
        $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
    } else {
        $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}-comment-{$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_once($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 1 order by wr_id desc limit 0, {$rows} ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

        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);
        }
    }

    // 같은 스킨은 .css 를 한번만 호출한다.
    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {
        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';
        $css[] = $skin_dir;
    }

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

    return $content;
}
 

댓글목록

등록된 댓글이 없습니다.


Total 459건 13 페이지
  • RSS
기술자료 목록
219
그누보드   10320  2014-10-20 19:50  
218
그누보드   16027  2014-10-14 19:36 ~ 2021-11-30 11:32  
217
그누보드   12133  2014-10-01 10:57 ~ 2024-01-12 16:23  
216
그누보드   12124  2014-09-25 16:34  
215
그누보드   12235  2014-09-20 22:19  
214
그누보드   12099  2014-08-28 15:36  
213
그누보드   13694  2014-08-23 19:55  
212
그누보드   64670  2014-08-20 11:50 ~ 2022-11-22 16:25  
211
그누보드   20606  2014-07-15 01:14 ~ 2019-12-17 09:47  
열람
그누보드   81304  2014-06-07 22:13 ~ 2017-09-07 00:00  
209
그누보드   17029  2014-05-31 17:42 ~ 2021-03-03 14:50  
208
그누보드   12530  2014-05-31 15:08  
207
그누보드   17822  2014-05-28 10:35 ~ 2023-01-20 11:50  
206
그누보드   16647  2014-05-12 02:07 ~ 2019-08-08 17:50  
205
그누보드   11624  2014-04-19 17:21  
204
그누보드   50146  2014-04-19 17:15 ~ 2018-10-30 22:51  
203
그누보드   37091  2014-04-13 14:57  
202
그누보드   14473  2014-04-10 09:03  
201
그누보드   22201  2014-04-10 08:50 ~ 2019-08-11 12:25  
200
그누보드   18823  2014-03-01 19:34 ~ 2023-01-19 16:38  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.