dbnt.co.kr2019/common/lib/class.board.php

2268 lines
63 KiB
PHP

<?
class Board {
var $DB;
var $_LIST_NUM = 20;
var $_b_class;
var $_bc_class;
var $_bc_name;
var $_b_role_w;
var $_b_role_r;
var $_b_role_category;
var $_b_role_hp;
var $_b_role_em;
var $_b_role_mms;
var $_b_role_md;
var $_b_role_secret;
var $_b_role_fn;
var $_b_type;
var $_b_category;
var $_b_category_print;
var $_b_listnum = 20;
var $_b_bgcolor;
var $_user_id;
var $_b_status;
var $_PDS = _PDS;
var $_PDS_SUB = "board/";
var $_default_b_type = 1;
# 생성자
function Board($db) {
$this->DB = $db;
$this->_PDS .= $this->_PDS_SUB;
}
/******************************************************************************************
Board_config
******************************************************************************************/
/*****
* 게시판을 등록한다.
*****/
function set_boardconf_insert($argu){
$res = $b_class = $this->DB->getOne("select coalesce(max(b_class),0)+1 from ".TABLE_BOARD_CONFIG);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
if(!$argu["b_type"]) $argu["b_type"] = $this->_default_b_type;
$data = array(
"b_class" => $b_class,
"bc_class" => $argu["bc_class"],
"bc_name" => $argu["bc_name"],
"b_role_w" => $argu["b_role_w"],
"b_role_r" => $argu["b_role_r"],
"b_role_l" => $argu["b_role_l"],
"b_role_rp" => $argu["b_role_rp"],
"b_role_cm" => $argu["b_role_cm"],
"b_role_category" => ($argu["b_role_category"]=="Y")?"Y":"N",
"b_role_hp" => ($argu["b_role_hp"]=="Y")?"Y":"N",
"b_role_em" => ($argu["b_role_em"]=="Y")?"Y":"N",
"b_role_mms" => ($argu["b_role_mms"]=="Y")?"Y":"N",
"b_role_md" => ($argu["b_role_md"]=="Y")?"Y":"N",
"b_role_cmt" => ($argu["b_role_cmt"]=="Y")?"Y":"N",
"b_role_secret" => ($argu["b_role_secret"]=="Y")?"Y":"N",
"b_role_fn" => ($argu["b_role_fn"]=="")? 0:$argu["b_role_fn"],
"b_category" => $argu["b_category"],
"b_category_print" => $argu["b_category_print"],
"b_listnum" => $argu["b_listnum"],
"b_type" => $argu["b_type"],
"b_header_file" => $argu["b_header_file"],
"b_header" => $argu["b_header"],
"b_footer_file" => $argu["b_footer_file"],
"b_footer" => $argu["b_footer"],
"b_size" => $argu["b_size"],
"b_align" => $argu["b_align"],
"b_status" => $argu["b_status"],
"user_id" => $argu["user_id"],
"b_role_thumb" => ($argu["b_role_thumb"]=="Y")?"Y":"N",
"b_role_thumb_w" => $argu["b_role_thumb_w"],
"b_role_thumb_vertical_w" => $argu["b_role_thumb_vertical_w"],
"b_role_thumb_list_w" => $argu["b_role_thumb_list_w"],
"b_role_notice" => ($argu["b_role_notice"]=="Y")?"Y":"N",
"b_role_editor" => ($argu["b_role_editor"]=="Y")?"Y":"N",
"b_role_content" => ($argu["b_role_content"]=="Y")?"Y":"N",
);
$sth = $this->DB->autoPrepare(TABLE_BOARD_CONFIG, array_keys($data), DB_AUTOQUERY_INSERT);
$res = $this->DB->execute($sth, array_values($data));
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
/*****
* 게시판을 수정한다.
*****/
function set_boardconf_modify($argu){
if(!$argu["b_type"]) $argu["b_type"] = $this->_default_b_type;
$data = array(
"bc_name" => $argu["bc_name"],
"bc_class" => $argu["bc_class"],
"b_role_w" => $argu["b_role_w"],
"b_role_r" => $argu["b_role_r"],
"b_role_l" => $argu["b_role_l"],
"b_role_rp" => $argu["b_role_rp"],
"b_role_cm" => $argu["b_role_cm"],
"b_role_category" => ($argu["b_role_category"]=="Y")?"Y":"N",
"b_role_hp" => ($argu["b_role_hp"]=="Y")?"Y":"N",
"b_role_em" => ($argu["b_role_em"]=="Y")?"Y":"N",
"b_role_mms" => ($argu["b_role_mms"]=="Y")?"Y":"N",
"b_role_md" => ($argu["b_role_md"]=="Y")?"Y":"N",
"b_role_cmt" => ($argu["b_role_cmt"]=="Y")?"Y":"N",
"b_role_secret" => ($argu["b_role_secret"]=="Y")?"Y":"N",
"b_role_fn" => ($argu["b_role_fn"]=="")? 0:$argu["b_role_fn"],
"b_category" => $argu["b_category"],
"b_category_print" => $argu["b_category_print"],
"b_listnum" => $argu["b_listnum"],
"b_type" => $argu["b_type"],
"b_header_file" => $argu["b_header_file"],
"b_header" => $argu["b_header"],
"b_footer_file" => $argu["b_footer_file"],
"b_footer" => $argu["b_footer"],
"b_size" => $argu["b_size"],
"b_align" => $argu["b_align"],
"b_status" => $argu["b_status"],
"user_id" => $argu["user_id"],
"b_role_thumb" => ($argu["b_role_thumb"]=="Y")?"Y":"N",
"b_role_thumb_w" => $argu["b_role_thumb_w"],
"b_role_thumb_vertical_w" => $argu["b_role_thumb_vertical_w"],
"b_role_thumb_list_w" => $argu["b_role_thumb_list_w"],
"b_role_notice" => ($argu["b_role_notice"]=="Y")?"Y":"N",
"b_role_editor" => ($argu["b_role_editor"]=="Y")?"Y":"N",
"b_role_content" => ($argu["b_role_content"]=="Y")?"Y":"N",
);
$res = $result = $this->DB->autoExecute(TABLE_BOARD_CONFIG, $data,
DB_AUTOQUERY_UPDATE, " b_class = '{$argu['b_class']}' ");
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
/*****
* 게시판을 삭제한다.
*****/
function set_boardconf_delete($argu){
$query = "
delete from ".TABLE_BOARD."
where b_class = '{$argu['b_class']}'
";
$res = $this->DB->query($query);
// 게시판을 삭제한다.
$query = "
delete from ".TABLE_BOARD_CONFIG."
where b_class = '{$argu['b_class']}'
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
#게시판 설정 리스트 삭제 처리
function set_boardconf_delete_list($argu){
if(count($argu["chk"]) > 0){
for($i = 0; $i < count($argu["chk"]); $i++){
$argu["b_class"] = $argu["chk"][$i];
$_list = $this -> set_boardconf_delete($argu);
}
return true;
}
else{
go_url("","삭제할데이터가 없습니다.");
exit;
}
}
/*****
* 게시판 목록을 가져온다.
*****/
function get_boardconf_list($argu,&$total,$limit = true){
/// 분류
$addwhere = ($argu['bconf_class']>0) ? " where bc.bc_class='".$argu['bconf_class']."'" : "";
$query = "
select
count(*)
from
".TABLE_BOARD_CONFIG." bc
".$addwhere;
$res = $total = $this->DB->getOne($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$query = "
select
bc.b_class,
bc.bc_class,
bc.bc_name,
bc.b_role_w,
bc.b_role_r,
bc.b_role_category,
bc.b_role_hp,
bc.b_role_em,
bc.b_role_mms,
bc.b_role_md,
bc.b_role_secret,
bc.b_role_fn,
bc.b_category,
bc.b_category_print,
bc.b_listnum,
bc.b_type,
bc.b_status,
bc.user_id
from
".TABLE_BOARD_CONFIG." bc
".$addwhere."
order by
bc.bc_class asc,
bc.b_class asc ";
if($limit)
$query .= "
limit ".($argu['p']-1)*$this->_LIST_NUM.",".$this->_LIST_NUM;
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
/*****
* 게시판 설정을 가져온다.
*****/
function get_boardconf_view($b_class){
$query = "
select
bc.b_class,
bc.bc_class,
bc.bc_name,
bc.b_role_w,
bc.b_role_r,
bc.b_role_l,
bc.b_role_rp,
bc.b_role_cm,
bc.b_role_category,
bc.b_role_hp,
bc.b_role_em,
bc.b_role_mms,
bc.b_role_md,
bc.b_role_secret,
bc.b_role_cmt,
ifnull(bc.b_role_fn,0) as b_role_fn,
bc.b_category,
bc.b_category_print,
bc.b_listnum,
bc.b_type,
bc.b_header_file,
bc.b_header,
bc.b_footer_file,
bc.b_footer,
bc.b_size,
bc.b_align,
bc.b_status,
bc.user_id,
bc.b_role_thumb,
bc.b_role_thumb_w,
bc.b_role_thumb_vertical_w,
bc.b_role_thumb_list_w,
bc.b_role_notice,
bc.b_role_editor,
b_role_content
from
".TABLE_BOARD_CONFIG." bc
where
bc.b_class = '{$b_class}'
";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$this->_b_class = $row['b_class'];
$this->_bc_class = $row['bc_class'];
$this->_bc_name = $row['bc_name'];
$this->_b_role_w = $row['b_role_w'];
$this->_b_role_r = $row['b_role_r'];
$this->_b_role_l = $row['b_role_l'];
$this->_b_role_rp = $row['b_role_rp'];
$this->_b_role_cm = $row['b_role_cm'];
$this->_b_role_category = $row['b_role_category'];
$this->_b_role_hp = $row['b_role_hp'];
$this->_b_role_em = $row['b_role_em'];
$this->_b_role_mms = $row['b_role_mms'];
$this->_b_role_md = $row['b_role_md'];
$this->_b_role_fn = $row['b_role_fn'];
$this->_b_role_secret = $row['b_role_secret'];
$this->_b_role_cmt = $row['b_role_cmt'];
$this->_b_type = $row['b_type'];
$this->_b_header_file = $row['b_header_file'];
$this->_b_header = $row['b_header'];
$this->_b_footer_file = $row['b_footer_file'];
$this->_b_footer = $row['b_footer'];
$this->_b_size = $row['b_size'];
$this->_b_align = $row['b_align'];
$this->_b_category = $row['b_category'];
$this->_b_category_print = $row['b_category_print'];
$this->_b_bgcolor = $row['b_bgcolor'];
$this->_b_listnum = $row['b_listnum'];
$this->_b_status = $row['b_status'];
$this->_user_id = $row['user_id'];
$this->_PDS .= $this->_b_class."/";
$this->_b_role_thumb = $row['b_role_thumb'];
$this->_b_role_thumb_w = $row['b_role_thumb_w'];
$this->_b_role_thumb_vertical_w = $row['b_role_thumb_vertical_w'];
$this->_b_role_thumb_list_w = $row['b_role_thumb_list_w'];
$this->_b_role_notice = $row['b_role_notice'];
$this->_b_role_editor = $row['b_role_editor'];
$this->_b_role_content = $row['b_role_content'];
return $row;
}
/******************************************************************************************
Board
******************************************************************************************/
/*****
* 게시판을 등록한다.
*****/
function set_board_insert($argu){
global $_ADMIM_PWD;
// 첨부파일 argu 를 정리한다.
if(is_array($_FILES['bf_file']['tmp_name'])){
foreach($_FILES['bf_file'] as $_FILE_KEY => $tmp){
foreach($tmp as $_FILE_NO => $_FILE_VALUE){
$_FILE[$_FILE_NO][$_FILE_KEY] = $_FILE_VALUE;
}
}
}
//$data['b_no'] = $this->DB->getOne("select ifnull(max(b_no),0)+1 from ".TABLE_BOARD." where b_class = '{$argu['b_class']}'");
$res = $data['b_no'] = $this->DB->getOne("select ifnull(max(b_no),0)+1 from ".TABLE_BOARD." ");
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
if($argu['b_no'] != ""){//답글일경우
$query = "
select
b_top,
b_step,
case b_step
when '00' then 0
else length(b_step)/2
end as b_depth
from
".TABLE_BOARD."
where
b_class = '{$argu['b_class']}'
and b_no = '{$argu['b_no']}'
";
$row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if($row['b_depth'] >= 49){
go_url("","더이상 하위 답글을 쓰실수 없습니다!");
exit;
}
$query = "
select
max(
case
when length(substring(b.b_step,1,({$row['b_depth']}+1)*2)) < ({$row['b_depth']}+1)*2 then concat(substring(b.b_step,1,({$row['b_depth']}+1)*2), '00')
else substring(b.b_step,1,({$row['b_depth']}+1)*2)
end
) + 1
from
".TABLE_BOARD." b
where
b.b_class = '{$argu['b_class']}'
and b.b_top = '{$row['b_top']}'
and
case
when {$row['b_depth']} > 0 then substring(b.b_step,1,({$row['b_depth']})*2) = substring('{$row['b_step']}',1,({$row['b_depth']})*2)
else 1 = 1
end
";
$data['b_step'] = $this->DB->getOne($query);
if(strlen($data['b_step'])%2 == 1) $data['b_step'] = '0'.$data['b_step'];
$data['b_top'] = $row['b_top'];
if(substr($data['b_step'], -2) == "00"){// 답글의 제한은 99개 까지이다.
go_url("","더이상 답글을 쓰실수 없습니다!");
exit;
}
/***********************
문의상담 답글시 메일 발송
************************/
/*if($argu['b_class'] == "6"){
$mquery = "
select
b_name,
b_email
from
".TABLE_BOARD."
where
b_class = '{$argu['b_class']}'
and b_no = '{$argu['b_no']}'
";
$mrow = $this->DB->getRow($mquery,DB_FETCHMODE_ASSOC);
if($mrow["b_email"] != ""){
$query = "
select
*
from
basic
";
$_row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($_row)) {
//debug($row);
die($_row->getMessage());
}
$subject = "케이에스 차량 탁송에서 ".$mrow["b_name"]. "님이 문의하신 내용의 답변이 도착했습니다.";
include "../www/mail.html";
// type : text=0, html=1, text+html=2
mailer($_row["b_title"], $_row["b_email"], $mrow["b_email"], $subject, $mail_content, 1, $file="", $cc="", $bcc="");
}
}*/
}else{//답글이 아닐경우
$data['b_top'] = $data['b_no'];
$data['b_step'] = "00";
}
$data['b_pwd'] = ($argu['b_pwd'] == "" && $_SESSION['user_level'] > 1)? get_encrypt_string($_ADMIM_PWD):get_encrypt_string($argu['b_pwd']);
if(isset($argu["b_mms"])) $data["b_mms"] = $argu["b_mms"];
if(isset($argu["b_link"])) $data["b_link"] = $argu["b_link"];
if(isset($argu["b_summary"])) $data["b_summary"] = $argu["b_summary"];
if(isset($argu["b_status"])) $data["b_status"] = $argu["b_status"];
if(isset($argu["a_id"])) $data["a_id"] = $argu["a_id"];
if($_FILES['b_thumb'] !== null && $_FILES['b_thumb'][error] == 0 && $_FILES['b_thumb'][size] > 0 ){
$b_thumb_info = getimagesize($_FILES["b_thumb"]["tmp_name"]);
$b_thumb_width = $b_thumb_info[0]; //이미지 가로 사이즈
$b_thumb_height = $b_thumb_info[1]; //이미지 세로 사이즈
$b_thumb_type = $_FILES['b_thumb']['type'];
if($b_thumb_width > $b_thumb_height){
if($b_thumb_width > $this->_b_role_thumb_w){
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','T',$this->_b_role_thumb_w);
}
else{
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','O','');
}
}
else if($b_thumb_width < $b_thumb_height){
if($b_thumb_width > $this->_b_role_thumb_vertical_w){
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','T',$this->_b_role_thumb_vertical_w);
}
else{
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','O','');
}
}
else{
if($b_thumb_width > $this->_b_role_thumb_w){
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','T',$this->_b_role_thumb_w);
}
else{
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','O','');
}
}
if($b_thumb_width > $this->_b_role_thumb_list_w){
$b_thumb_list = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb_list/','T',$this->_b_role_thumb_list_w);
}
else{
$b_thumb_list = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb_list/','O','');
}
}
$data = array_merge($data,array(
"b_class" => $argu["b_class"],
"b_category" => $argu["b_category"],
"b_name" => $argu["b_name"],
"user_id" => $_SESSION['user_id'],
"b_title" => $argu["b_title"],
"b_notice" => ($argu["b_notice"]==1)?1:9,
"b_tag" => $argu["b_tag"],
"b_homepage" => $argu["b_homepage"],
"b_email" => $argu["b_email"],
"b_content" => ($argu["b_tag"] == "Y")? txtParse($argu["b_content"],1):strip_tags($argu["b_content"]),
"b_regdate" => date("Y-m-d H:i:s"),
"b_ip" => $_SERVER['REMOTE_ADDR'],
"b_secert" => ($argu["b_secert"]=="Y")?"Y":"N",
"b_front" => ($argu["b_front"]=="Y")?"Y":"N",
"b_tel" => $argu["b_tel"],
"b_etc1" => $argu["b_etc1"],
"b_etc2" => $argu["b_etc2"],
"b_etc3" => $argu["b_etc3"],
"b_etc4" => $argu["b_etc4"],
"b_etc5" => $argu["b_etc5"],
"b_etc6" => $argu["b_etc6"],
"b_etc7" => $argu["b_etc7"],
"b_etc8" => $argu["b_etc8"],
"b_etc9" => $argu["b_etc9"],
"b_etc10" => $argu["b_etc10"],
"b_thumb" => $b_thumb,
"b_thumb_list" => $b_thumb_list
));
$res = $this->DB->autoExecute(TABLE_BOARD, $data, DB_AUTOQUERY_INSERT);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
// 첨부파일 저장
// TODO : board_config 의 media 여부에 따라 허용 파일 타입을 필터링 해주는 부분이 필요하다.
if(is_array($_FILE)){
foreach($_FILE as $_FILE_NO => $_FILE_VALUE){
//$data['bf_name'] = upload_($this->_PDS, $_FILE_VALUE, $data['b_no']."_".$_FILE_NO, "U", &$M);
if($_FILE_VALUE !== null && $_FILE_VALUE[error] == 0 && $_FILE_VALUE[size] > 0 ){// 첨부파일이 있을경우
$_ext = array_pop(explode(".",$_FILE_VALUE[name]));
/*if($argu["b_class"] == "1" || $argu["b_class"] == "2" || $argu["b_class"] == "3" || $argu["b_class"] == "4" || $argu["b_class"] == "5" || $argu["b_class"] == "6" || $argu["b_class"] == "7" ){*/
$_file_name = $data['b_no']."_".$_FILE_NO.".".$_ext;
/*}
else{
$_file_name = $data['b_no']."_".$_FILE_NO;
}*/
if(upload($this->_PDS, $_FILE_VALUE,$_file_name,"U")){ // 첨부파일 업로드에 성공했을경우
$data["bf_name"] = $_FILE_VALUE[name];
$data["bf_type"] = array_pop(explode(".",$data["bf_name"]));
}else{ // 첨부파일 업로드에 실패했을경우 alert 과 동시에 작업을 중단하고 이전페이지로 돌아간다.
go_url("","파일 업로드에 실패했습니다.");
exit;
}
$data_file = array(
"b_class" => $data['b_class'],
"b_no" => $data['b_no'],
"bf_no" => $_FILE_NO,
"bf_type" => strtolower($data["bf_type"]),
"bf_name" => $data["bf_name"]
);
$res = $this->DB->autoExecute(TABLE_BOARD_FILE, $data_file, DB_AUTOQUERY_INSERT);
if (DB::isError($res)) {
go_url("","파일 업로드에 실패했습니다.");
exit;
}
}
}
}
// 비밀글이라면 세션에 비밀글의 아이디를 저장한다. 자신의 글은 다시 패스워드를 묻지 않기 위함
if ($argu["b_secert"]=="Y")
set_session("ss_secret_{$argu['b_class']}_{$data['b_no']}", TRUE);
return true;
}
/*****
* 게시판을 수정한다.
*****/
function set_board_modify($argu){
global $_ADMIM_PWD,$_adminpage;
// 첨부파일 argu 를 정리한다.
if(is_array($_FILES['bf_file']['tmp_name'])){
foreach($_FILES['bf_file'] as $_FILE_KEY => $tmp){
foreach($tmp as $_FILE_NO => $_FILE_VALUE){
$_FILE[$_FILE_NO][$_FILE_KEY] = $_FILE_VALUE;
}
}
}
if(!$_adminpage){
$data['b_pwd'] = ($argu['b_pwd'] == "" && $_SESSION['user_level'] > 1)? get_encrypt_string($_ADMIM_PWD):get_encrypt_string($argu['b_pwd']);
}
if(isset($argu["b_front"])) $data['b_front'] = $argu["b_front"];
if(isset($argu["b_category"])) $data["b_category"] = $argu["b_category"];
if(isset($argu["b_name"])) $data["b_name"] = $argu["b_name"];
if(isset($argu["b_mms"])) $data["b_mms"] = $argu["b_mms"];
if(isset($argu["b_link"])) $data["b_link"] = $argu["b_link"];
if(isset($argu["b_summary"])) $data["b_summary"] = $argu["b_summary"];
if(isset($argu["b_status"])) $data["b_status"] = $argu["b_status"];
if($_FILES['b_thumb'] !== null && $_FILES['b_thumb'][error] == 0 && $_FILES['b_thumb'][size] > 0 ){
$b_thumb_info = getimagesize($_FILES["b_thumb"]["tmp_name"]);
$b_thumb_width = $b_thumb_info[0]; //이미지 가로 사이즈
$b_thumb_height = $b_thumb_info[1]; //이미지 세로 사이즈
$b_thumb_type = $_FILES['b_thumb']['type'];
if($b_thumb_width > $b_thumb_height){
if($b_thumb_width > $this->_b_role_thumb_w){
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','T',$this->_b_role_thumb_w,$argu["tmp_b_thumb"]);
}
else{
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','O','',$argu["tmp_b_thumb"]);
}
}
else if($b_thumb_width < $b_thumb_height){
if($b_thumb_width > $this->_b_role_thumb_vertical_w){
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','T',$this->_b_role_thumb_vertical_w,$argu["tmp_b_thumb"]);
}
else{
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','O','',$argu["tmp_b_thumb"]);
}
}
else{
if($b_thumb_width > $this->_b_role_thumb_w){
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','T',$this->_b_role_thumb_w,$argu["tmp_b_thumb"]);
}
else{
$b_thumb = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb/','O','',$argu["tmp_b_thumb"]);
}
}
if($b_thumb_width > $this->_b_role_thumb_list_w){
$b_thumb_list = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb_list/','T',$this->_b_role_thumb_list_w,$argu["tmp_b_thumb_list"]);
}
else{
$b_thumb_list = board_thumb_upload($_FILES['b_thumb'],$this->_PDS.'thumb_list/','O','',$argu["tmp_b_thumb_list"]);
}
}
else{
$b_thumb = $argu["tmp_b_thumb"];
$b_thumb_list = $argu["tmp_b_thumb_list"];
}
$data = array_merge($data,array(
"b_title" => $argu["b_title"],
"b_notice" => ($argu["b_notice"]==1)? 1:9,
"b_secert" => ($argu["b_secert"]=="Y")?"Y":"N",
"b_tag" => $argu["b_tag"],
"b_homepage" => $argu["b_homepage"],
"b_email" => $argu["b_email"],
"b_content" => ($argu["b_tag"] == "Y")? txtParse($argu["b_content"],1):strip_tags($argu["b_content"]),
"b_tel" => $argu["b_tel"],
"b_etc1" => $argu["b_etc1"],
"b_etc2" => $argu["b_etc2"],
"b_etc3" => $argu["b_etc3"],
"b_etc4" => $argu["b_etc4"],
"b_etc5" => $argu["b_etc5"],
"b_etc6" => $argu["b_etc6"],
"b_etc7" => $argu["b_etc7"],
"b_etc8" => $argu["b_etc8"],
//"b_etc9" => $argu["b_etc9"],
//"b_etc10" => $argu["b_etc10"],
"b_thumb" => $b_thumb,
"b_thumb_list" => $b_thumb_list
));
// 관리자에서 조회수 수정 가능하게 해달란 요청에의한 추가 2006-03-27 1:28오후
//if($argu["b_cnt"] !== null) $data = array_merge($data,array("b_cnt" => $argu["b_cnt"]));
$res = $this->DB->autoExecute(TABLE_BOARD, $data, DB_AUTOQUERY_UPDATE, " b_class = '{$argu['b_class']}' and b_no = '{$argu['b_no']}'");
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
// 첨부파일 저장
// TODO : board_config 의 media 여부에 따라 허용 파일 타입을 필터링 해주는 부분이 필요하다.
if(is_array($_FILE)){
foreach($_FILE as $_FILE_NO => $_FILE_VALUE){
if($_FILE_VALUE !== null && $_FILE_VALUE[error] == 0 && $_FILE_VALUE[size] > 0 ){// 첨부파일이 있을경우
$_ext = array_pop(explode(".",$_FILE_VALUE[name]));
/*if($argu["b_class"] == "1" || $argu["b_class"] == "2" || $argu["b_class"] == "3" || $argu["b_class"] == "4" || $argu["b_class"] == "5" || $argu["b_class"] == "6" || $argu["b_class"] == "7" ){*/
$_file_name = $argu['b_no']."_".$_FILE_NO.".".$_ext;
/*}
else{
$_file_name = $argu['b_no']."_".$_FILE_NO;
}*/
$this->set_boardfile_delete(array("b_class"=>$argu['b_class'],"b_no"=>$argu['b_no'],"bf_no"=>$_FILE_NO,"bf_type"=>$_ext));
if(upload($this->_PDS, $_FILE_VALUE,$_file_name,"U")){ // 첨부파일 업로드에 성공했을경우
$data["bf_name"] = $_FILE_VALUE[name];
$data["bf_type"] = array_pop(explode(".",$data["bf_name"]));
}else{ // 첨부파일 업로드에 실패했을경우 alert 과 동시에 작업을 중단하고 이전페이지로 돌아간다.
go_url("","파일 업로드에 실패했습니다.");
exit;
}
$data_file = array(
"b_class" => $argu['b_class'],
"b_no" => $argu['b_no'],
"bf_no" => $_FILE_NO,
"bf_type" => strtolower($data["bf_type"]),
"bf_name" => $data["bf_name"]
);
$res = $this->DB->autoExecute(TABLE_BOARD_FILE, $data_file, DB_AUTOQUERY_INSERT);
if (DB::isError($res)) {
go_url("","파일 업로드에 실패했습니다.");
exit;
}
}
}
}
for($i=0;$i<count($argu['del_file']);$i++){
$this->set_boardfile_delete(array( "b_class" => $argu['b_class'] , "b_no" => $argu['b_no'] , "bf_no" => $argu['del_file'][$i], "bf_type"=>"" ));
}
return true;
}
function set_re_modify($argu){
global $_ADMIM_PWD;
$data = array(
"b_etc1" => (strip_tags($argu["b_etc10"]) != "") ? "Y" : "N",
"b_etc9" => date("Y-m-d H:i:s"),
"b_etc10" => strip_tags($argu["b_etc10"])
);
// 관리자에서 조회수 수정 가능하게 해달란 요청에의한 추가 2006-03-27 1:28오후
//if($argu["b_cnt"] !== null) $data = array_merge($data,array("b_cnt" => $argu["b_cnt"]));
$res = $this->DB->autoExecute(TABLE_BOARD, $data, DB_AUTOQUERY_UPDATE, " b_class = '{$argu['b_class']}' and b_no = '{$argu['b_no']}'");
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
/*****
* 게시물을 삭제한다.
*****/
function set_board_delete($argu){
$file_list = $this->get_boardfile_list($argu['b_class'],$argu['b_no']);
if(is_array($file_list)){
foreach($file_list as $key => $value){
$this->set_boardfile_delete($value);
}
}
$_b_row = $this -> get_board_view($argu['b_class'],$argu['b_no']);
if($_b_row["b_thumb"]){
if(file_exists($this->_PDS."thumb/".$_b_row["b_thumb"])) unlink($this->_PDS."thumb/".$_b_row["b_thumb"]);
}
if($_b_row["b_thumb_list"]){
if(file_exists($this->_PDS."thumb_list/".$_b_row["b_thumb_list"])) unlink($this->_PDS."thumb_list/".$_b_row["b_thumb_list"]);
}
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", txtParse($_b_row['b_content'],2), $imgSRC);
if(sizeof($imgSRC[1])){
for($i=0; $i < sizeof($imgSRC[1]); $i++){
$edit_file = $_SERVER['DOCUMENT_ROOT'].$imgSRC[1][$i];
if(file_exists($edit_file)) unlink($edit_file);
}
}
$query = "
delete from ".TABLE_BOARD."
where
b_class = '{$argu['b_class']}'
and b_no = '{$argu['b_no']}'
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
#게시판 리스트 삭제 처리
function set_board_delete_list($argu){
if(count($argu["chk"]) > 0){
for($i = 0; $i < count($argu["chk"]); $i++){
$argu["b_no"] = $argu["chk"][$i];
$_list = $this -> set_board_delete($argu);
}
return true;
}
else{
go_url("","삭제할데이터가 없습니다.");
exit;
}
}
/*****
* 해당 게시판 첨부파일을 삭제 한다.
*****/
function set_boardfile_delete($argu){
if($argu["b_class"] == "1" || $argu["b_class"] == "2" || $argu["b_class"] == "3" || $argu["b_class"] == "4" || $argu["b_class"] == "5" || $argu["b_class"] == "6" || $argu["b_class"] == "7" ){
if($argu["bf_type"] == ""){
$query = "
select
bf_type
from
".TABLE_BOARD_FILE."
where
b_class = '{$argu['b_class']}'
and b_no = '{$argu['b_no']}'
and bf_no = '{$argu['bf_no']}'
";
$res = $_ext = $this->DB->getOne($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
}
else{
$_ext = $argu["bf_type"];
}
$_file_name = $argu['b_no']."_".$argu['bf_no'].".".$_ext;
}
else{
$_file_name = $argu['b_no']."_".$argu['bf_no'];
}
if(upload($this->_PDS, "",$_file_name,"D")){ // 첨부파일 업로드에 성공했을경우
$query = "
delete from ".TABLE_BOARD_FILE."
where
b_class = '{$argu['b_class']}'
and b_no = '{$argu['b_no']}'
and bf_no = '{$argu['bf_no']}'
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}else{
return false;
}
}
/*****
* 해당 게시판 목록을 가져온다.
*****/
function get_board_list($argu,&$total,$limit = true){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_category']) $addwhere .= " and b.b_category = '{$argu['b_category']}' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
if($argu['s_case'] && $argu['s_string']) $addwhere .= " and b.{$argu['s_case']} like '%{$argu['s_string']}%' ";
if($argu['Search']) $addwhere .= " and (b.b_title like '%{$argu['Search']}%' or b.b_content like '%{$argu['Search']}%') ";
if($argu['sdate'] && $argu['edate']){
$addwhere .= " and ({$argu['sdate']} between b.b_etc1 and b.b_etc2 or {$argu['edate']} between b.b_etc1 and b.b_etc2) ";
}
$query = "
select
count(*)
from
".TABLE_BOARD." b
where
b.b_class = '{$argu['b_class']}'
and
case
when length(trim('$argu[s_case]')) = 0 then true
else
case '$argu[s_case]'
when 'b_title' then b.b_title
when 'b_content' then b.b_content
when 'b_name' then b.b_name
end
like ?
end
$addwhere
";
$res = $total = $this->DB->getOne($query,array("%{$argu[s_string]}%"));
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
// if($argu["b_class"] == "3" || $argu["b_class"] == "4"){
// $_sort = "b.b_etc9 desc";
// }
// else{
$_sort = "b.b_notice asc, b.b_top desc, b.b_step asc";
// }
$query = "
select
b.b_class,
b.b_no,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
date_format(b.b_regdate,'%b-%d-%Y') as b_date1,
b.b_regdate,
b.b_title,
b.b_notice,
b.b_tag,
b.b_homepage,
b.b_mms,
b.b_link,
b.b_summary,
b.b_email,
b.b_content,
b.b_ip,
b.b_cnt,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10,
b.b_thumb,
b.b_thumb_list,
b.a_id,
bf.bf_name,
(select ifnull(count(b_no),0) from board_comment where b_no=b.b_no) as cmt_cnt
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_BOARD_FILE." bf
on b.b_class = bf.b_class and b.b_no = bf.b_no and bf.bf_no = 0
where
b.b_class = '{$argu['b_class']}'
and b.b_class= bc.b_class
and
case
when length(trim('$argu[s_case]')) = 0 then 1
else
case '$argu[s_case]'
when 'b_title' then b.b_title
when 'b_content' then b.b_content
when 'b_name' then b.b_name
end
like ?
end
$addwhere
group by
b.b_class,
b.b_no
order by
".$_sort." ";
if($argu["mobile_list_num"]){
$this->_b_listnum = $argu["mobile_list_num"];
}
if($limit)
$query .= "
limit ".($argu['p']-1)*$this->_b_listnum.",".$this->_b_listnum;
$res = $list =& $this->DB->getAll($query, array("%{$argu[s_string]}%"), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_board_list_m($argu,&$total,$limit = true){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_category']) $addwhere .= " and b.b_category = '{$argu['b_category']}' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
if($argu['s_case'] && $argu['s_string']) $addwhere .= " and b.{$argu['s_case']} like '%{$argu['s_string']}%' ";
$query = "
select
count(*)
from
".TABLE_BOARD." b
where
b.b_class = '{$argu['b_class']}'
and
case
when length(trim('$argu[s_case]')) = 0 then true
else
case '$argu[s_case]'
when 'b_title' then b.b_title
when 'b_content' then b.b_content
when 'b_name' then b.b_name
end
like ?
end
$addwhere
";
$res = $total = $this->DB->getOne($query,array("%{$argu[s_string]}%"));
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$query = "
select
b.b_class,
b.b_no,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
b.b_regdate,
b.b_title,
b.b_notice,
b.b_tag,
b.b_homepage,
b.b_mms,
b.b_link,
b.b_summary,
b.b_email,
b.b_content,
b.b_ip,
b.b_cnt,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10,
b.a_id,
bf.bf_name
-- ifnull(count(bf.bf_no),0) as bf_cnt
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_BOARD_FILE." bf
on b.b_class = bf.b_class and b.b_no = bf.b_no and bf.bf_no = 0
where
b.b_class = '{$argu['b_class']}'
and b.b_class= bc.b_class
and
case
when length(trim('$argu[s_case]')) = 0 then 1
else
case '$argu[s_case]'
when 'b_title' then b.b_title
when 'b_content' then b.b_content
when 'b_name' then b.b_name
end
like ?
end
$addwhere
group by
b.b_class,
b.b_no
order by
b.b_notice asc, b.b_top desc, b.b_step asc ";
if($limit)
$query .= "
limit ".(($argu['p']-1)*3).",3";
$res = $list =& $this->DB->getAll($query, array("%{$argu[s_string]}%"), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
/*****
* 관련글을 가져온다.
*****/
function get_with_list($b_class,$b_top){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_top = '{$b_top}'
and b.b_class= bc.b_class
$addwhere
order by
b.b_top desc, b_step asc
";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
/*****
* 상위 일부 게시물을 가져온다.
*****/
function get_board_limit($b_class,$limit=0,$b_category=''){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($b_category) $addwhere .= " and b.b_category = '{$b_category}' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
if($b_class == "3" || $b_class == "4"){
$_sort = "b.b_etc9 desc";
}
else{
$_sort = "b.b_notice asc, b.b_top desc, b.b_step asc";
}
$query = "
select
b.b_class,
b.b_no,
b.b_notice,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
concat('[',date_format(b.b_regdate,'%y-%m-%d'),']') as b_date2,
date_format(b.b_regdate,'%Y') as b_date_main_y,
date_format(b.b_regdate,'%b') as b_date_main_m,
date_format(b.b_regdate,'%d') as b_date_main_d,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10,
b.b_thumb,
b.b_thumb_list
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_class= bc.b_class
$addwhere
order by
".$_sort."
limit ".$limit;
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_board_asc($b_class){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($b_category) $addwhere .= " and b.b_category = '{$b_category}' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_notice,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
concat('[',date_format(b.b_regdate,'%y-%m-%d'),']') as b_date2,
date_format(b.b_regdate,'%Y') as b_date_main_y,
date_format(b.b_regdate,'%M') as b_date_main_m,
date_format(b.b_regdate,'%d') as b_date_main_d,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_class= bc.b_class
$addwhere
order by
b.b_top asc";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_board_limit_notin($b_class,$b_no,$limit=0,$b_category=''){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($b_category) $addwhere .= " and b.b_category = '{$b_category}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_notice,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
concat('[',date_format(b.b_regdate,'%y-%m-%d'),']') as b_date2,
date_format(b.b_regdate,'%Y') as b_date_main_y,
date_format(b.b_regdate,'%M') as b_date_main_m,
date_format(b.b_regdate,'%d') as b_date_main_d,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_no not in({$b_no})
and b.b_class= bc.b_class
$addwhere
order by
b.b_notice asc,b.b_top desc, b_step asc
limit ".$limit;
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_board_notin($b_class,$b_no,$b_category=''){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($b_category) $addwhere .= " and b.b_category = '{$b_category}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_notice,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
concat('[',date_format(b.b_regdate,'%y-%m-%d'),']') as b_date2,
date_format(b.b_regdate,'%Y') as b_date_main_y,
date_format(b.b_regdate,'%M') as b_date_main_m,
date_format(b.b_regdate,'%d') as b_date_main_d,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_no not in({$b_no})
and b.b_class= bc.b_class
$addwhere
order by
b.b_notice asc,b.b_top desc, b_step asc";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
/*****
* event 게시물을 가져온다.
*****/
function get_board_event($b_class,$b_category=''){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($b_category) $addwhere .= " and b.b_category in ('{$b_category}', 'All') ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_notice,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
concat('[',date_format(b.b_regdate,'%y-%m-%d'),']') as b_date2,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_class= bc.b_class
/*and ('".date("Y-m-d")."' between b_etc1 and b_etc2)*/
$addwhere
order by
b.b_notice asc,b.b_top desc, b_step asc";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function set_board_cnt($b_class,$b_no){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
// 한번 읽은글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
$ss_name = "ss_view_{$b_class}_{$b_no}";
if (!get_session($ss_name))
{
// 조회수 증가
$query = "
update ".TABLE_BOARD." b
set
b.b_cnt = b.b_cnt + 1
where
b.b_class = '{$b_class}'
and b.b_no = '{$b_no}'
$addwhere
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
set_session($ss_name, TRUE);
}
}
/*****
* 게시물 정보를 가져온다.
*****/
function get_board_view($b_class,$b_no){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
// 한번 읽은글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
$ss_name = "ss_view_{$b_class}_{$b_no}";
if (!get_session($ss_name))
{
// 조회수 증가
$query = "
update ".TABLE_BOARD." b
set
b.b_cnt = b.b_cnt + 1
where
b.b_class = '{$b_class}'
and b.b_no = '{$b_no}'
$addwhere
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
set_session($ss_name, TRUE);
}
$query = "
select
b.b_class,
b.b_no,
b.b_top,
b.b_step,
b.b_category,
b.b_name,
b.b_pwd,
b.b_secert,
b.user_id,
u.user_name,
if(date_add(b.b_regdate, interval 3 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
date_format(b.b_regdate,'%b-%d-%Y') as b_date1,
b.b_regdate,
b.b_title,
b.b_notice,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10,
b.b_thumb,
b.b_thumb_list
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class = '{$b_class}'
and b.b_no = '{$b_no}'
and b.b_class= bc.b_class
$addwhere
";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
/*****
* 이전 게시물 정보를 가져온다.
*****/
function get_board_prev($b_class,$b_no,$b_category){
// TODO : 답변형의 경우 정확한 이전정보 가져오는 방법을 생각해보자
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
if($b_category != "") $addwhere .= " and b.b_category = '{$b_category}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_category,
b.b_title,
b.a_id,
b.b_secert
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
where
b.b_class = '{$b_class}'
and b.b_no > '{$b_no}'
and b.b_class= bc.b_class
$addwhere
order by
b.b_top asc, b_step desc
limit 1
";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
/*****
* 다음 게시물 정보를 가져온다.
*****/
function get_board_next($b_class,$b_no,$b_category){
// TODO : 답변형의 경우 정확한 다음정보 가져오는 방법을 생각해보자
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) $addwhere .= " and b.b_status = 'C' ";
if($argu['b_class']==3 && $_agency['a_id']) $addwhere .= " and b.a_id = '{$_agency['a_id']}' ";
if($b_category != "") $addwhere .= " and b.b_category = '{$b_category}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_category,
b.b_title,
b.a_id,
b.b_secert
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
where
b.b_class = '{$b_class}'
and b.b_no < '{$b_no}'
and b.b_class= bc.b_class
$addwhere
order by
b.b_top desc, b_step asc
limit 1
";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($row)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
/*****
* 게시물 첨부파일 정보를 가져온다.
*****/
function get_boardfile_list($b_class,$b_no){
$query = "
select
b_class,
b_no,
bf_no,
bf_type,
bf_name
from
".TABLE_BOARD_FILE." bf
where
bf.b_class = '{$b_class}'
and bf.b_no = '{$b_no}'
";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
/******************************************************************************************
Board Vote
******************************************************************************************/
/*****
* 추천을 등록한다.
*****/
function set_board_vote($b_class,$b_no,$user_id,$bv_score){
if( $b_class && $b_no && $user_id &&$bv_score ){
if(!$this->check_board_vote($b_class,$b_no,$user_id)){
$data = array(
"b_class" => $b_class,
"b_no" => $b_no,
"user_id" => $user_id,
"bv_score" => $bv_score,
"bv_regdate" => date("Y-m-d H:i:s"),
"bv_ip" => $_SERVER['REMOTE_ADDR'],
);
$res = $this->DB->autoExecute("board_vote", $data, DB_AUTOQUERY_INSERT);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
}
}
/*****
* 추천정보를 가져온다.
*****/
function get_board_vote($b_class,$b_no){
$query = "
select
count(bv.user_id) as cnt,
sum(bv.bv_score) as sum,
format(avg(bv.bv_score),0) as avg
from
".TABLE_BOARD_VOTE." bv
where
bv.b_class = ?
and bv.b_no = ?
";
$res = $row = $this->DB->getRow($query,array($b_class,$b_no),DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
/*****
* 추천을 했는지 확인한다.
*****/
function check_board_vote($b_class,$b_no,$user_id){
if( $b_class && $b_no && $user_id ){
$res = $check = $this->DB->getOne("select count(*) from board_vote where b_class = ? and b_no = ? and user_id = ? ",array($b_class,$b_no,$user_id));
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
if( $check > 0 ) return true;
else return false;
}
return false;
}
/******************************************************************************************
Board Comment
******************************************************************************************/
/*****
* 댓글을 등록한다.
*****/
function set_commemt_insert($argu){
$data['bcm_no'] = $this->DB->getOne("select ifnull(max(bcm_no),0)+1 from board_comment
where bcm_gubun = '{$argu['bcm_gubun']}' and b_class = '{$argu['b_class']}' and b_no = '{$argu['b_no']}'");
if($argu["bcm_name"] == ""){
$argu["bcm_name"] = $_SESSION['user_name'];
}
$argu["bcm_pwd"] = substr(md5($argu["bcm_pwd"]),0,10);
$data = array_merge($data,array(
"bcm_gubun" => $argu['bcm_gubun'],
"b_class" => $argu['b_class'],
"b_no" => $argu["b_no"],
"bcm_no" => $data['bcm_no'],
"bcm_name" => $argu["bcm_name"],
"bcm_pwd" => $argu["bcm_pwd"],
"bcm_comment" => $argu["bcm_comment"],
"bcm_date" => date("Y-m-d H:i:s"),
"user_id" => $_SESSION['user_id'],
"user_no" => $_SESSION['user_no'],
"bcm_ip" => $_SERVER['REMOTE_ADDR'],
));
$res = $this->DB->autoExecute("board_comment", $data, DB_AUTOQUERY_INSERT);
if (DB::isError($res)) {
go_url("","등록에 실패했습니다!\\n[".$res->getMessage()."]");
exit;
}
return true;
}
/*****
* 댓글내용을 가져온다.
*****/
function get_comment_view($bcm_gubun,$b_class,$b_no,$bcm_no){
$query = "
select
*
from
board_comment
where
bcm_gubun = '{$bcm_gubun}'
and b_class = '{$b_class}'
and b_no = '{$b_no}'
and bcm_no = '{$bcm_no}'
";
$row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($row)) {
go_url("","댓글 내용을 가져오지 못했습니다.");
exit;
}
return $row;
}
/*****
* 댓글목록을 가져온다.
*****/
function get_comment_list($b_class,$b_no,$bcm_gubun = 'BD'){
$query = "
select
bc.b_class,
bc.b_no,
bc.bcm_gubun,
bc.user_id,
bc.bcm_name,
u.user_name,
u.user_level,
bc.bcm_pwd,
bc.bcm_comment,
bc.bcm_date,
date_format(bc.bcm_date,'%Y.%m.%d') as bcm_date_name,
bc.bcm_ip,
bc.bcm_no
from
board_comment bc
left outer join ".TABLE_USER." u
on bc.user_id = u.user_id
where
bc.bcm_gubun = '{$bcm_gubun}'
and bc.b_class = '{$b_class}'
and bc.b_no = '{$b_no}'
order by bc.bcm_date desc
";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("","댓글을 가져오지 못했습니다.");
exit;
}
return $list;
}
/*****
* 댓글을 삭제 한다.
*****/
function set_comment_delete($argu,$all = false){
$query = "
delete from board_comment
where
bcm_gubun = '{$argu['bcm_gubun']}'
and b_class = '{$argu['b_class']}'
and b_no = '{$argu['b_no']}' ";
if(!$all)
$query .= "
and bcm_no = '{$argu['bcm_no']}'
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("","댓글이 삭제되지 않았습니다.");
exit;
}
return true;
}
/*****
* 게시판 권한 받기
*****/
function set_board_auth($mode){
global $_SESSION;
$ses=$_SESSION;
$isAuth=false;
if($mode=="view"){
if($ses['user_level']<=$this->_b_role_r && strlen($ses['user_id'])>3){ //사용자레벨이 게시판 권한설정값보다 작거나 같을시
$isAuth=true;
}
else{
if($this->_b_role_r >= 10){ //게시판 권한설정값이 비회원일시
$isAuth=true;
}
else{
$isAuth=false;
}
}
}
if($mode=="write"){
if($ses['user_level']<=$this->_b_role_w && strlen($ses['user_id'])>3){ //사용자레벨이 게시판 권한설정값보다 작거나 같을시
$isAuth=true;
}
else{
if($this->_b_role_w >= 10){ //게시판 권한설정값이 비회원일시
$isAuth=true;
}
else{
$isAuth=false;
}
}
}
if($mode=="replay"){
if($ses['user_level']<=$this->_b_role_rp && strlen($ses['user_id'])>3){ //사용자레벨이 게시판 권한설정값보다 작거나 같을시
$isAuth=true;
}
else{
if($this->_b_role_rp >= 10){ //게시판 권한설정값이 비회원일시
$isAuth=true;
}
else{
$isAuth=false;
}
}
}
if($mode=="list"){
if($ses['user_level']<=$this->_b_role_l && strlen($ses['user_id'])>3){ //사용자레벨이 게시판 권한설정값보다 작거나 같을시
$isAuth=true;
}
else{
if($this->_b_role_l >= 10){ //게시판 권한설정값이 비회원일시
$isAuth=true;
}
else{
$isAuth=false;
}
}
}
if($mode=="cm"){
if($ses['user_level']<=$this->_b_role_cm && strlen($ses['user_id'])>3){ //사용자레벨이 게시판 권한설정값보다 작거나 같을시
$isAuth=true;
}
else{
if($this->_b_role_cm >= 10){ //게시판 권한설정값이 비회원일시
$isAuth=true;
}
else{
$isAuth=false;
}
}
}
return $isAuth;
}
/*****
* 게시글 권한 받기
*****/
function get_board_auth($argu){
global $_SESSION;
$ses=$_SESSION;
$isAuth="E";
$data = $this->get_board_view($argu["b_class"], $argu["b_no"]);
//본인이 쓴 글이나 관리자일 경우
if(($ses["user_id"]==$data["user_id"] || $ses['user_level']==1 || $ses["user_id"]==$this->_user_id) && isset($ses["user_id"])){
$isAuth="A";
}
else{
if(strlen($argu["board_pwd"])>0){
if($data["b_pwd"]==get_encrypt_string($argu["board_pwd"]) || $data["user_pwd"]==get_encrypt_string($argu["board_pwd"])){
$isAuth="A";
}else{
$isAuth="F";
}
}else{
$isAuth="E";
}
}
return $isAuth;
}
function get_comment_auth($argu,$bcm_gubun,$bcm_no){
global $_SESSION;
$ses=$_SESSION;
$data = $this->get_comment_view($bcm_gubun,$argu["b_class"], $argu["b_no"],$bcm_no);
$isAuth="E";
if(($ses["user_id"] == $data["user_id"] || $ses['user_level']==1 || $ses["user_id"]==$this->_user_id) && isset($ses["user_id"])){
$isAuth = "A";
}
else{
if(strlen($argu["cmt_pwd"])>0){
if($data["bcm_pwd"]==substr(md5($argu["cmt_pwd"]),0,10)){
$isAuth="A";
}else{
$isAuth="F";
}
}else{
$isAuth="E";
}
}
return $isAuth;
}
function get_board_ramdom($b_class,$limit){
global $_adminpage,$_agency;
$addwhere = "";
if(!$_adminpage) {
/*if($_SESSION['user_level'] != "1"){
$addwhere .= " and b.b_etc8 = 'Y' ";
}*/
}
if(!$_adminpage) $addwhere .= " and b.b_status = 'C'";
//$addwhere .= " and ('".date("Y-m-d")."' between b.b_etc1 and b.b_etc2) ";
if($b_category) $addwhere .= " and b.b_category = '{$b_category}' ";
$query = "
select
b.b_class,
b.b_no,
b.b_notice,
b.b_top,
b.b_step,
case b.b_step
when '00' then 0
else length(b.b_step)/2
end as b_depth,
b.b_category,
b.b_name,
u.user_name,
b.b_pwd,
b.b_secert,
b.user_id,
if(date_add(b.b_regdate, interval 7 day) > now(),'Y','N') as new,
date_format(b.b_regdate,'%Y-%m-%d') as b_date,
concat('[',date_format(b.b_regdate,'%y-%m-%d'),']') as b_date2,
date_format(b.b_regdate,'%M %d, %Y') as b_date_banner,
date_format(b.b_regdate,'%d %M %Y') as b_date_sub,
date_format(b.b_regdate,'%Y') as b_date_main_y,
date_format(b.b_regdate,'%M') as b_date_main_m,
date_format(b.b_regdate,'%d') as b_date_main_d,
b.b_title,
b.b_tag,
b.b_homepage,
b.b_email,
b.b_mms,
b.b_link,
b.b_summary,
b.b_content,
b.b_ip,
b.b_cnt,
b.a_id,
b.b_status,
b.b_etc1,
b.b_etc2,
b.b_etc3,
b.b_etc4,
b.b_etc5,
b.b_etc6,
b.b_etc7,
b.b_etc8,
b.b_etc9,
b.b_etc10
from
".TABLE_BOARD_CONFIG." bc,
".TABLE_BOARD." b
left outer join ".TABLE_USER." u
on b.user_id = u.user_id
where
b.b_class in ({$b_class})
and b.b_class= bc.b_class
and b.b_notice <> '1'
$addwhere
order by b.b_notice asc,b.b_top desc, b_step asc
limit ".$limit;
//order by RAND()";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
//debug($res);
//exit;
//go_url("", $res->getMessage());
return false;
exit;
}
return $list;
}
}
?>