HANYANG_REACT/lib/app/board.class.php

1101 lines
36 KiB
PHP

<?php
class Board extends BaseCode {
public $board_info = "";
function __construct( $board_id ){
parent::__construct();
$this->DB->tableExists( TB_board_list );
$this->DB->tableExists( TB_board_contents );
$this->DB->tableExists( TB_board_attach );
$this->DB->tableExists( TB_board_opinion );
$this->DB->tableExists( TB_member );
$this->board_info = $this->getBoardId($board_id);
}
function getBoardList($field="*",$where="", $orderby="",$limit=array()){ //게시판 리스트
if( !$where ){
$where = new DB_where("and");
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
//$sql = "select brd.{$field}, mem.member_name from ". TB_board_list ." as brd left join ". TB_member ." as mem on brd.board_admin = mem.member_id where {$whereqry}".(($orderby)?" order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]);
$sql = $this->DB->addLimit("select brd.{$field}, mem.member_name from ". TB_board_list ." as brd left join ". TB_member ." as mem on brd.board_admin = mem.member_id where {$whereqry}",$orderby,$limit[0],$limit[1]);
$rows = $this->DB->query($sql, $whererow);
return $rows;
}
function getBoardPage($sqldata="", $where=""){ //게시판 리스트(페이징)
if( !$where ){
$where = new DB_where("and");
}
if( $sqldata['stxt'] ){
$subwhere = $where->sub_where("or");
if( $sqldata['sfld'] ){
$subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%");
}else{
$subwhere->add("board_id like ?", "%{$sqldata['stxt']}%");
$subwhere->add("board_name like ?", "%{$sqldata['stxt']}%");
}
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$orderby = "board_name asc";
if( $sqldata['ofld'] && $sqldata['oasc'] ) $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}";
$query = array(
"mode" => $sqldata['mode'],
"viewnum" => $sqldata['viewnum']?:20,
"sfld" => $sqldata['sfld'],
"stxt" => $sqldata['stxt'],
"ofld" => $sqldata['ofld'],
"oasc" => $sqldata['oasc'],
);
$table = "(select brd.*, mem.member_name from ". TB_board_list ." as brd left join ". TB_member ." as mem on brd.board_admin = mem.member_id) as A";
$lists = new clist();
$lists->fld = "*";
$lists->where = $whereqry;
$lists->whererow = $whererow;
$lists->orderby = $orderby;
$lists->url = $_SERVER['PHP_SELF'];
$lists->query = $query;
$lists->page = $sqldata['page']?:1;
$lists->linktype = "";
$lists->viewnum = $query['viewnum'];
$lists->rownum = $sqldata['rownum']?:5;
$lists->getCommonList($table);
for( $a=0 ; $a<@count($lists->rows) ; $a++ ){
$lists->rows[$a]['board_id'] = stripslashes($lists->rows[$a]['board_id']);
$lists->rows[$a]['board_name'] = stripslashes($lists->rows[$a]['board_name']);
$lists->rows[$a]['con_num'] = $this->getContentsNum($lists->rows[$a]['board_id']);
}
return $lists;
}
function getBoard($board_id){ //게시판 불러오기
return $this->getBoardId($board_id);
}
function getBoardId($board_id){ //게시판 불러오기 (board_id)
$where = new DB_where("and");
$where->add("board_id = ?", $board_id);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$sql = "select * from ". TB_board_list ." where {$whereqry}";
$rst = $this->DB->queryFirstRow($sql, $whererow);
$rst['board_name'] = stripslashes($rst['board_name']);
return $rst;
}
function putBoard( $sqldata ){
$sqlrow = array(
"board_id" => $sqldata['board_id']?:"",
"board_name" => $sqldata['board_name']?:"",
"board_admin" => $sqldata['board_admin']?:"",
"board_cate" => $sqldata['board_cate']?:"",
"read_level" => $sqldata['read_level']?:"",
"write_level" => $sqldata['write_level']?:"",
"ness_name" => $sqldata['ness_name']?:"",
"ness_passwd" => $sqldata['ness_passwd']?:"",
"ness_title" => $sqldata['ness_title']?:"",
"ness_homepage" => $sqldata['ness_homepage']?:"",
"ness_mail" => $sqldata['ness_mail']?:"",
"ness_contents" => $sqldata['ness_contents']?:"",
"ness_image" => $sqldata['ness_image']?:"",
"ness_file" => $sqldata['ness_file']?:"",
"use_opinion" => $sqldata['use_opinion']?:"",
"use_spamproof" => $sqldata['use_spamproof']?:"",
"use_webeditor" => $sqldata['use_webeditor']?:"",
"line_num" => $sqldata['line_num']?:"",
"page_num" => $sqldata['page_num']?:"",
"new_num" => $sqldata['new_num']?:1,
"hot_num" => $sqldata['hot_num'],
"skin_name" => $sqldata['skin_name'],
);
$rst = $this->DB->insert( TB_board_list, $sqlrow );
if( $rst ){
return $sqlrow['board_id'];
}
}
function setBoard( $sqldata ){
$obrd = $this->getBoard($sqldata['board_id']);
$sqlrow = array(
"board_id" => $sqldata['board_id']?:"",
"board_name" => $sqldata['board_name']?:"",
"board_admin" => $sqldata['board_admin']?:"",
"board_cate" => $sqldata['board_cate']?:"",
"read_level" => $sqldata['read_level']?:"",
"write_level" => $sqldata['write_level']?:"",
"ness_name" => $sqldata['ness_name']?:"",
"ness_passwd" => $sqldata['ness_passwd']?:"",
"ness_title" => $sqldata['ness_title']?:"",
"ness_homepage" => $sqldata['ness_homepage']?:"",
"ness_mail" => $sqldata['ness_mail']?:"",
"ness_contents" => $sqldata['ness_contents']?:"",
"ness_image" => $sqldata['ness_image']?:"",
"ness_file" => $sqldata['ness_file']?:"",
"use_opinion" => $sqldata['use_opinion']?:"",
"use_spamproof" => $sqldata['use_spamproof']?:"",
"use_webeditor" => $sqldata['use_webeditor']?:"",
"line_num" => $sqldata['line_num']?:"",
"page_num" => $sqldata['page_num']?:"",
"new_num" => $sqldata['new_num']?:1,
"hot_num" => $sqldata['hot_num'],
"skin_name" => $sqldata['skin_name'],
);
$where = new DB_where("and");
$where->add("board_id = ?", $sqldata['board_id']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$rst = $this->DB->update( TB_board_list, $sqlrow, $whereqry, $whererow);
if( $rst ){
return $sqldata['board_id'];
}
return 0;
}
function delBoard( $board_id ){
$where = new DB_where("and");
$where->add("board_id = ?", $board_id);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$rst = $this->DB->delete( TB_board_list, $whereqry, $whererow);
$rst = $rst && $this->DB->delete( TB_board_contents, $whereqry, $whererow);
$rst = $rst && $this->DB->delete( TB_board_opinion, $whereqry, $whererow);
if( $rst ){
$this->delFiles( "board", array("board_id"=>$board_id) );
return 1;
}
return 0;
}
function getContentsList($field="*", $where="", $orderby="", $limit=array(), $dmode=""){ //게시물 리스트
if( !$where ){
$where = new DB_where("and");
}
if( $dmode != "all" ){ //전체 게시물 리스트 아니면
$where->add("board_id = ?", $this->board_info['board_id']);
}
if( !$this->isAdmin() ){
$where->add("state = ?", 1);
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
//$sql = "select {$field} from (select brc.*, brl.board_name from ". TB_board_contents ." as brc inner join ". TB_board_list ." as brl on brc.board_id = brl.board_id) as brd where {$whereqry} ".(($orderby)?"order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]);
$sql = $this->DB->addLimit("select {$field} from (select brc.*, brl.board_name from ". TB_board_contents ." as brc inner join ". TB_board_list ." as brl on brc.board_id = brl.board_id) as brd where {$whereqry}",$orderby,$limit[0],$limit[1]);
$rst = $this->DB->qry($sql, $whererow);
$rows = array();
while( $tmp = $this->DB->fetch_array($rst) ){
$tmp = $this->getContentsInfo($tmp);
if( !$this->isAdmin() ){
unset($tmp['ip_addr']);
}
$rows[] = $tmp;
}
return $rows;
}
function getContentsPage($sqldata="", $where=""){ //게시물 리스트(페이징)
if( !$where ){
$where = new DB_where("and");
}
if( $sqldata['dmode'] != "all" ){ //전체 게시물 리스트 아니면
$where->add("board_id = ?", $this->board_info['board_id']);
}
if( $sqldata['gubun'] ){
$where->add("gubun = ?", $sqldata['gubun']);
}
if( $sqldata['board_id'] ){
$where->add("board_id = ?", $sqldata['board_id']);
}
if( !$this->isAdmin() ){
$where->add("state = ?", 1);
}
if( $sqldata['stxt'] ){
$subwhere = $where->sub_where("or");
if( $sqldata['sfld'] ){
$subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%");
}else{
$subwhere->add("title like ?", "%{$sqldata['stxt']}%");
$subwhere->add("contents like ?", "%{$sqldata['stxt']}%");
}
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$orderby = "cid desc";
if( $sqldata['ofld'] && $sqldata['oasc'] ) $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}";
$query = array(
"mode" => $sqldata['mode'],
"board_id" => $sqldata['board_id'],
"gubun" => $sqldata['gubun'],
"viewnum" => $sqldata['viewnum']?:$this->board_info['line_num']?:30,
"sfld" => $sqldata['sfld'],
"stxt" => $sqldata['stxt'],
"ofld" => $sqldata['ofld'],
"oasc" => $sqldata['oasc'],
);
$table = "(select brc.*, brl.board_name from ". TB_board_contents ." as brc inner join ". TB_board_list ." as brl on brc.board_id = brl.board_id) as brd";
$lists = new clist();
$lists->fld = "*";
$lists->where = $whereqry;
$lists->whererow = $whererow;
$lists->orderby = $orderby;
$lists->url = $_SERVER['PHP_SELF'];
$lists->query = $query;
$lists->page = $sqldata['page']?:1;
$lists->linktype = "";
$lists->viewnum = $query['viewnum'];
$lists->rownum = $this->board_info['page_num']?:10;
$lists->getCommonList($table);
for( $a=0 ; $a<@count($lists->rows) ; $a++ ){ $tmp = $lists->rows[$a];
$tmp = $this->getContentsInfo($tmp);
if( !$this->isAdmin() ){
unset($tmp['ip_addr']);
}
$lists->rows[$a] = $tmp;
}
return $lists;
}
function getAllContentsList($field="*" ,$where="", $orderby="", $limit=array()){ //전체 게시물 리스트
return $this->getContentsList($field, $where, $orderby, $limit, "all");
}
function getAllContentsPage($sqldata="", $where=""){ //전체 게시물 리스트(페이징)
$sqldata['dmode'] = "all";
return $this->getContentsPage($sqldata,$where);
}
function getContents( $cid ){ //게시물 불러오기
if( !$cid ) return 0;
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $cid);
if( !$this->isAdmin() ){
$where->add("state != ?", 2);
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$sql = "select * from ". TB_board_contents ." where {$whereqry}";
$row = $this->DB->queryFirstRow( $sql, $whererow);
$row = $this->getContentsInfo($row);
if( !$this->isAdmin() ){
unset($row['ip_addr']);
}
return $row;
}
function getContentsInfo( $row ){
if( !$row['secret'] || $this->chkSecretAuth($row) ){
$row['title'] = stripslashes($row['title']);
$row['contents'] = stripslashes($row['contents']);
switch( $this->board_info['use_webeditor'] ){
case "Tinymce" : break;
default : $row['contents'] = nl2br($row['contents']);
}
$row['contents_txt'] = strip_tags($row['contents']);
$row['uname'] = stripslashes($row['uname']);
$row['homepage'] = stripslashes($row['homepage']);
$row['mail'] = $this->lcrypt->dec_secure($row['mail']);
$row['mobile'] = $this->lcrypt->dec_secure($row['mobile']);
}else{
$row['title'] = "비밀글 입니다.";
$row['contents'] = "비밀글 입니다.";
$row['uname'] = "비밀글";
$row['homepage'] = "http://xxx.xxx.xxx";
$row['mail'] = "xxx@xxx.xxx";
$row['mobile'] = "xxx-xxxx-xxxx";
}
return $row;
}
function putContents( $sqldata ){ //게시물 등록
$sqlrow = array(
"board_id" => $this->board_info['board_id'],
"gubun" => $sqldata['gubun'],
"title" => $sqldata['title'],
"contents" => $sqldata['contents'],
"notice" => $sqldata['notice']?:"",
"views" => 0,
"good" => 0,
"nogood" => 0,
"onum" => 0,
"secret" => $sqldata['secret']?:"",
"markup" => $sqldata['markup']?:"",
"state" => $sqldata['state']?:1,
"member_id" => $GLOBALS['_Umem']['member_id'],
"uname" => $sqldata['uname'],
"passwd" => $this->lcrypt->pw_make($sqldata['passwd']),
"homepage" => $sqldata['homepage'],
"mail" => $sqldata['mail']?$this->lcrypt->enc_secure($sqldata['mail']):"",
"mobile" => $sqldata['mobile']?$this->lcrypt->enc_secure($sqldata['mobile']):"",
"ip_addr" => get_ip(),
"reg_date" => $this->DB->sqleval("getdate()"),
"mod_date" => $this->DB->sqleval("getdate()"),
);
$rst = $this->DB->insert( TB_board_contents, $sqlrow );
if( $rst ){
$cid = $this->DB->insertId(TB_board_contents);
$sqldata['cid'] = $cid;
$this->putFiles( $sqldata );
return $cid;
}
}
function setContents( $sqldata ){ //게시물 수정
$sqlrow = array(
"gubun" => $sqldata['gubun'],
"title" => $sqldata['title'],
"contents" => $sqldata['contents'],
"uname" => $sqldata['uname'],
"homepage" => $sqldata['homepage'],
"mail" => $sqldata['mail']?$this->lcrypt->enc_secure($sqldata['mail']):"",
"mobile" => $sqldata['mobile']?$this->lcrypt->enc_secure($sqldata['mobile']):"",
"mod_date" => $this->DB->sqleval("getdate()"),
);
if( $sqldata['state'] ) $sqlrow['state'] = $sqldata['state'];
if( $sqldata['notice'] ) $sqlrow['notice'] = $sqldata['notice'];
if( $sqldata['secret'] ) $sqlrow['secret'] = $sqldata['secret'];
if( $sqldata['markup'] ) $sqlrow['markup'] = $sqldata['markup'];
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $sqldata['cid']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$rst = $this->DB->update( TB_board_contents, $sqlrow, $whereqry, $whererow );
if( $rst ){
$this->delFiles( "file", array("cid"=>$sqldata['cid'], "aid" => $sqldata['DEL_ATTFILES']) );
$this->putFiles( $sqldata );
return $sqldata['cid'];
}
return 0;
}
function delContents( $cid ){ //게시물 삭제
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
if( is_array($cid) ){
$subwhere = $where->sub_where("or");
foreach( (array)$cid as $v ){
$subwhere->add("cid = ?", $v);
}
}else{
$where->add("cid = ?", $cid);
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$rst = 1;
$rst = $rst && $this->DB->delete( TB_board_contents, $whereqry, $whererow);
$rst = $rst && $this->DB->delete( TB_board_opinion, $whereqry, $whererow);
if( $rst ){
$this->delFiles( "contents", array("cid"=>$cid) );
unset($_SESSION['board_read_'.$this->board_info['board_id']."_".$cid]);
unset($_SESSION['board_secret_'.$this->board_info['board_id']."_".$cid]);
return 1;
}
return 0;
}
function getContentsNum( $board_id ){
$where = new DB_where("and");
$where->add("board_id = ?", $board_id);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$sql = "select count(*) from ". TB_board_contents ." where {$whereqry}";
$con_num = $this->DB->queryFirstField($sql, $whererow);
return $con_num?:0;
}
function getOpinionList($cid, $limit=array()){ //게시물 리스트
$where = new DB_where("and");
$where->add("board_id= ?", $this->board_info['board_id']);
$where->add("cid = ?", $cid);
// if( !$this->isAdmin() ){
// $where->add("state = %i", 1);
// }
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
//$sql = "select A.*, B.snum from ". TB_board_opinion ." as A left join (select uid as sid, count(*)-1 as snum from ". TB_board_opinion ." group by uid) as B on A.oid = B.sid where {$whereqry} order by uid asc, oid asc ". $this->DB->_limit($limit[0],$limit[1]);
$sql = $this->DB->addLimit("select A.*, B.snum from ". TB_board_opinion ." as A left join (select uid as sid, count(*)-1 as snum from ". TB_board_opinion ." group by uid) as B on A.oid = B.sid where {$whereqry}","uid asc, oid asc",$limit[0],$limit[1]);
$rst = $this->DB->qry($sql, $whererow);
$rows = array();
while( $tmp = $this->DB->fetch_array($rst) ){
$rows[] = $this->getFtOpinion($tmp);
}
return $rows;
}
function getOpinionSubList($cid, $uid){ //게시물 리스트
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $cid);
$where->add("uid = ?", $uid);
$where->add("oid != uid");
// if( !$this->isAdmin() ){
// $where->add("state = ?", 1);
// }
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$sql = "select * from ". TB_board_opinion ." where {$whereqry} order by uid asc, oid asc";
$rst = $this->DB->qry($sql, $whererow);
$rows = array();
while( $tmp = $this->DB->fetch_array($rst) ){
$rows[] = $this->getFtOpinion($tmp);
}
return $rows;
}
function getOpinionPage($cid, $page=""){ //게시물 리스트(페이징)
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $cid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$orderby = "uid asc, oid asc";
$query = array(
"board_id" => $this->board_info['board_id'],
"cid" => $cid,
"viewnum" => $this->board_info['line_num'],
);
$lists = new clist();
$lists->fld = "*";
$lists->where = $whereqry;
$lists->whererow = $whererow;
$lists->orderby = $orderby;
$lists->url = $_SERVER['PHP_SELF'];
$lists->query = $query;
$lists->page = $page?:1;
$lists->linktype = "";
$lists->viewnum = $query['viewnum'];
$lists->rownum = $this->board_info['page_num'];
$lists->getCommonList(TB_board_opinion);
for( $a=0 ; $a<@count($lists->rows) ; $a++ ){;
$lists->rows[$a] = $this->getFtOpinion($lists->rows[$a]);
}
return $lists;
}
function getOpinion( $cid, $oid ){
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $cid);
$where->add("oid = ?", $oid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$sql = "select * from ". TB_board_opinion ." where {$whereqry}";
$row = $this->DB->queryFirstRow( $sql, $whererow );
$row = $this->getFtOpinion($row);
return $row;
}
function getFtOpinion( $row ){ //삭제 및 제한된 게시물조치
switch( $row['state'] ){
case "2" :
$row['opinion'] = "관리규정에 의해 제한 조치 됨";
$row['uname'] = "None";
break;
case "3" :
$row['opinion'] = "사용자 삭제";
$row['uname'] = "None";
break;
default :
$row['opinion'] = stripslashes($row['opinion']);
$row['uname'] = stripslashes($row['uname']);
break;
}
return $row;
}
function putOpinion( $sqldata ){
$sqlrow = array(
"board_id" => $this->board_info['board_id'],
"cid" => $sqldata['cid'],
"uid" => $sqldata['uid']?:0,
"idx" => $sqldata['idx']?:"",
"opinion" => $sqldata['opinion'],
"good" => 0,
"nogood" => 0,
"state" => $sqldata['state']?:1,
"member_id" => $GLOBALS['_Umem']['member_id'],
"uname" => $sqldata['uname'],
"passwd" => $this->lcrypt->pw_make($sqldata['passwd']),
"ip_addr" => get_ip(),
"reg_date" => $this->DB->sqleval("getdate()"),
"mod_date" => $this->DB->sqleval("getdate()"),
);
$rst = $this->DB->insert( TB_board_opinion, $sqlrow );
if( $rst ){
$oid = $this->DB->insertId(TB_board_opinion);
/*의견글 갯수 확인*/
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $sqldata['cid']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$onum = $this->DB->queryFirstField("select count(*) from ". TB_board_opinion ." where {$whereqry}",$whererow);
/*상위 의견글이 없으면 자신의 oid 를 상위 의견글로 지정*/
if( !$sqldata['uid'] ){
$sqlrow2 = array(
"uid" => $oid,
);
$where->add("oid = ?", $oid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$this->DB->update( TB_board_opinion, $sqlrow2, $whereqry, $whererow );
}
/*의견글 갯수 수정*/
$sqlrow3 = array(
"onum" => $onum,
);
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $sqldata['cid']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$this->DB->update( TB_board_contents, $sqlrow3, $whereqry, $whererow );
return $oid;
}
}
function setOpinion( $sqldata ){
$sqlrow = array(
"opinion" => $sqldata['opinion'],
"uname" => $sqldata['uname'],
"mod_date" => $this->DB->sqleval("getdate()"),
);
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $sqldata['cid']);
$where->add("oid = ?", $sqldata['oid']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$rst = $this->DB->update( TB_board_opinion, $sqlrow, $whereqry, $whererow);
if( $rst ){
return $sqldata['oid'];
}
}
function delOpinion( $sqldata ){
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $sqldata['cid']);
$where->add("oid = ?", $sqldata['oid']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
switch( $sqldata['mode'] ){
case "rejOpinion":
$sqlrow = array(
"state" => "2",
);
break;
case "delOpinion":
$sqlrow = array(
"state" => "3",
);
break;
}
$rst = $this->DB->update( TB_board_opinion, $sqlrow, $whereqry, $whererow);
return $rst;
}
function getFiles( $cid ){
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add("cid = ?", $cid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$sql = "select * from ". TB_board_attach ." where {$whereqry} order by aid asc";
$rows = $this->DB->query($sql, $whererow);
return $rows;
}
function putFiles( $sqldata ){
if( $sqldata['ATTFILES'] ){
$_SFILES = \Frody\Util\MultiFileUpload::swfFormFileInfo($sqldata['ATTFILES'], _UP_PATH_TMP_, "N");
$rst = 1;
for( $a = 0 ; $a<@count($_SFILES) ; $a++ ){
$sqlrow = array(
"board_id" => $this->board_info['board_id'],
"cid" => $sqldata['cid'],
"gubun" => $sqldata['board_id']?:"",
"file_name" => addslashes($_SFILES[$a]['name']),
"file_size" => $_SFILES[$a]['size'],
"file_type" => $_SFILES[$a]['type'],
"file_width" => $_SFILES[$a]['width'],
"file_height" => $_SFILES[$a]['height'],
"reg_date" => $this->DB->sqleval("getdate()"),
);
$rst = $this->DB->insert(TB_board_attach, $sqlrow);
if( $rst ){
$aid = $this->DB->insertId(TB_board_attach);
}
$upload_board_dir = _UP_PATH_."/board";
if( !file_exists($upload_board_dir) ){
mkdir($upload_board_dir);
}
$target_dir = $upload_board_dir."/{$this->board_info['board_id']}";
if( !file_exists($target_dir) ){
mkdir($target_dir);
}
$file_url = $this->getFileUrl($sqldata['cid'], $aid);
$file_dir = $this->getFileDir($sqldata['cid'], $aid);
$sqldata['contents'] = preg_replace("/((http).*?){0,1}src_{$_SFILES[$a]['tmp_text']}/ims", $file_url, $sqldata['contents']);
$sqldata['contents'] = str_replace("ctrl_{$_SFILES[$a]['tmp_text']}", "ctrl_{$aid}", $sqldata['contents']);
\Frody\Util\MultiFileUpload::swfMoveUploadedFile($_SFILES[$a]['tmp_name'], $file_dir);
}
$sqlrow = array(
"board_id" => $sqldata['board_id'],
"cid" => $sqldata['cid'],
"contents" => $sqldata['contents'],
);
\Frody\Util\MultiFileUpload::swfCleanDir(_UP_PATH_TMP_);
return $this->setContentsParts($sqlrow);
}
}
function getFileUrl( $cid, $aid ){
$file_url = _SITE_INC_URL_."/getFile.php?gubun=board&amp;board_id={$this->board_info['board_id']}&amp;cid={$cid}&aid={$aid}";
return $file_url;
}
function getFileDir( $cid, $aid ){
$upload_board_dir = _UP_PATH_."/board";
if( !file_exists($upload_board_dir) ){
mkdir($upload_board_dir);
}
$target_dir = $upload_board_dir."/{$this->board_info['board_id']}";
if( !file_exists($target_dir) ){
mkdir($target_dir);
}
$file_dir = "{$target_dir}/{$cid}_{$aid}_".strrev(md5("{$cid}_{$aid}")).".data";
return $file_dir;
}
function delFiles( $mode, $sqldata="" ){
$target_dir = _UP_PATH_."/board/{$this->board_info['board_id']}";
$where = new DB_where("and");
$where->add("board_id = ?", $this->board_info['board_id']);
if( $mode == "contents" ){
$where->add("cid = ?", $sqldata['cid']);
}
if( $mode == "file" ){
if( is_array($sqldata['aid']) ){
$subwhere = $where->sub_where("or");
foreach( (array)$sqldata['aid'] as $v ){
$subwhere->add("aid = ?", $v);
}
}else{
$where->add("aid = ?", $sqldata['aid']);
}
}
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
$row = $this->DB->query("select * from ". TB_board_attach ." where {$whereqry}",$whererow);
foreach( $row as $val ){
$tgt_file = "{$target_dir}/{$val['cid']}_{$val['aid']}_".strrev(md5("{$val['cid']}_{$val['aid']}")).".data";
@unlink($tgt_file);
}
return $this->DB->delete(TB_board_attach, $whereqry, $whererow);
}
function setCommonState( $sqldata ){
if( $sqldata['oid'] ){
return $this->setOpinionState( $sqldata );
}else if( $sqldata['cid'] ){
return $this->setContentsState( $sqldata );
}
return 0;
}
function addCommonGood( $sqldata ){
if( $sqldata['oid'] ){
return $this->addOpinionGood( $sqldata['cid'], $sqldata['oid'] );
}else if( $sqldata['cid'] ){
return $this->addContentsGood( $sqldata['cid'] );
}
return 0;
}
function addCommonNogood( $sqldata ){
if( $sqldata['oid'] ){
return $this->addOpinionNogood( $sqldata['cid'], $sqldata['oid'] );
}else if( $sqldata['cid'] ){
return $this->addContentsNogood( $sqldata['cid'] );
}
return 0;
}
function setContentsParts( $sqldata ){
$cid = $sqldata['cid'];
unset($sqldata['cid']);
$where = new DB_where('and');
if( !$this->table_mode ){
$where->add("board_id = ?", $this->board_info['board_id']);
}
$where->add('cid = ?', $cid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
return $this->DB->update( TB_board_contents, $sqldata, $whereqry, $whererow);
}
function setContentsState( $sqldata ){
$sql_row = array(
"cid" => $sqldata['cid'],
"state" => $sqldata['state'],
);
return $this->setContentsParts($sql_row);
}
function addContentsViews( $cid ){ //조회수 증가 및 세션 생성
if( !$_SESSION['board_read_'.$this->board_info['board_id']."_".$cid] ){
$sql_row = array(
"cid" => $cid,
"views" => $this->DB->sqleval("views + 1"),
);
$rst = $this->setContentsParts($sql_row);;
if( $rst ){
$this->setSessRead($cid);
return $rst;
}
}
return 0;
}
function addContentsGood( $cid ){
$sql_row = array(
"cid" => $cid,
"good" => $this->DB->sqleval("good + 1"),
);
return $this->setContentsParts($sql_row);
}
function addContentsNogood( $cid ){
$sql_row = array(
"cid" => $cid,
"nogood" => $this->DB->sqleval("nogood + 1"),
);
return $this->setContentsParts($sql_row);
}
function getPrevContents( $cid, $num=1 ){
$where = new DB_where('and');
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add('state = ?', 1);
$where->add('cid < ?', $cid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
//$sql = "select * from ". TB_board_contents ." where {$whereqry} order by nid desc ". $this->DB->_limit(0,$num);
$sql = $this->DB->addLimit("select * from ". TB_board_contents ." where {$whereqry}","nid desc",0,$num);
$row = $this->DB->query($sql, $whererow);
return $row;
}
function getNextContents( $cid, $num=1 ){
$where = new DB_where('and');
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add('state = ?', 1);
$where->add('cid > ?', $cid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
//$sql = "select * from (select * from ". TB_board_contents ." where {$whereqry} order by nid asc ". $this->DB->_limit(0,$num) .") as T order by nid desc";
$sql = "select * from (". $this->DB->query("select * from ". TB_board_contents ." where {$whereqry}","nid asc",0,$num) .") as T order by nid desc";
$row = $this->DB->query($sql, $whererow);
return $row;
}
function getNearContents( $cid, $num){
$row1 = $this->getNext( $cid, $num );
$row2 = $this->getPrev( $cid, $num );
return array_merge($row1, $row2);
}
function setOpinionState( $sqldata ){
$sql_row = array(
"state" => $sqldata['state']
);
$where = new DB_where('and');
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add('cid = ?', $sqldata['cid']);
$where->add('oid = ?', $sqldata['oid']);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
return $this->DB->update( TB_board_opinion, $sql_row, $whereqry, $whererow);
}
function addOpinionGood( $cid, $oid ){
$sql_row = array(
"good" => $this->DB->sqleval("good + 1")
);
$where = new DB_where('and');
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add('cid = ?', $cid);
$where->add('oid = ?', $oid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
return $this->DB->update( TB_board_opinion, $sql_row, $whereqry, $whererow );
}
function addOpinionNogood( $cid, $oid ){
$sql_row = array(
"nogood" => $this->DB->sqleval("nogood + 1")
);
$where = new DB_where('and');
$where->add("board_id = ?", $this->board_info['board_id']);
$where->add('cid = ?', $cid);
$where->add('oid = ?', $oid);
$wqry = $where->get_where();
$whereqry = $wqry['qry'];
$whererow = $wqry['val'];
return $this->DB->update( TB_board_opinion, $sql_row, $whereqry, $whererow );
}
function isMem(){ //회원권한이 있는지 확인
return ($this->isMember() || $this->isBoardAdmin() || $this->isAdmin());
}
function isAdminAuth(){ //관리자권한이 있는지 확인
return ($this->isBoardAdmin() || $this->isAdmin());
}
function useMemOnly($mode){ //회원전용체크. 권한이 있는 경우 1 리턴
$mode = "{$mode}_level";
if( !$this->board_info[$mode] || $this->isMem() ){
return 1;
}
return 0;
}
function useAdminOnly($mode){ //관리자전용체크. 권한이 있는 경우 1 리턴
$mode = "{$mode}_level";
if( !$this->board_info[$mode] || $this->isAdminAuth() ){
return 1;
}
return 0;
}
function chkUseOnly($mode){ //게시판 사용권한 있는지 체크.
switch( $this->board_info["{$mode}_level"] ){
case "M":
return $this->useMemOnly($mode);
case "A":
return $this->useAdminOnly($mode);
}
return 1;
}
function isBoardAdmin(){ //게시판 관리자 인지 체크
if( $this->board_info['board_admin'] && $this->board_info['board_admin'] == $GLOBALS['_Umem']['member_id'] ){
return 1;
}
return 0;
}
function chkPasswd( $cid, $passwd ){ //게시물 비밀번호 체크
$crow = $this->getContents($cid);
if( $this->isBoardAdmin() || $this->isAdmin() || $crow['passwd'] && $this->lcrypt->pw_match( $passwd, $crow['passwd'] ) ){
$this->setSessSecret($cid); //세션생성
return 1;
}
return 0;
}
function chkOpinionPasswd( $cid, $oid, $passwd ){ //의견결 비밀번호 체크
$orow = $this->getOpinion($cid, $oid);
if( $this->isBoardAdmin() || $this->isAdmin() || $orow['passwd'] && $this->lcrypt->pw_match( $passwd, $orow['passwd'] ) ){
return 1;
}
return 0;
}
function chkOpinionAdmin( $cid, $oid ){ //의견글 관리권한 체크
$orow = $this->getOpinion($cid, $oid);
if( $this->isBoardAdmin() || $this->isAdmin() || $orow['member_id'] === $GLOBALS['_Umem']['member_id'] ){
return 1;
}
return 0;
}
function chkSecretAuth($crow){ //게시물 비밀번호 통과 권한이 있는지 체크 (소유자 포함)
if( !$crow ) return 0;
if( is_numeric($crow) ){
$crow = $this->getContents($crow);
}else if( is_object($crow) ){
$crow = (Array)$crow;
}
if( $_SESSION['board_secret_'.$this->board_info['board_id']."_".$crow['cid']] || $this->isAdminAuth() || $crow['member_id'] && $crow['member_id'] == $GLOBALS['_Umem']['member_id'] ){
return 1;
}
return 0;
}
function setSessRead( $cid ){ //게시물 조회 체크 세션
$_SESSION['board_read_'.$this->board_info['board_id']."_".$cid] = 1;
}
function setSessSecret( $cid ){ //게시물 비밀번호 체크 세션
$_SESSION['board_secret_'.$this->board_info['board_id']."_".$cid] = 1;
}
function chkHasImageFile( $sqldata ){
if( $sqldata['ATTFILES'] ){
$_SFILES = \Frody\Util\MultiFileUpload::swfFormFileInfo($sqldata['ATTFILES'], _UP_PATH_TMP_, "N");
$rst = 1;
for( $a = 0 ; $a<@count($_SFILES) ; $a++ ){
if( preg_match("/(\.|\/)(gif|jpe?g|png|svg)$/i", $_SFILES[$a]['name']) ){
return 1;
}
}
}
return 0;
}
function chkHasFile( $sqldata ){
if( $sqldata['ATTFILES'] ){
$_SFILES = \Frody\Util\MultiFileUpload::swfFormFileInfo($sqldata['ATTFILES'], _UP_PATH_TMP_, "N");
$rst = 1;
for( $a = 0 ; $a<@count($_SFILES) ; $a++ ){
if( !preg_match("/(\.|\/)(gif|jpe?g|png|svg)$/i", $_SFILES[$a]['name']) ){
return 1;
}
}
}
return 0;
}
function isAdmin(){
if( $GLOBALS['_Umem']['member_auth'] && array_key_exists($GLOBALS['_Umem']['member_auth'], $GLOBALS['_varsAuthAdmin']) ){
return true;
}
return false;
}
function isMember(){
if( $GLOBALS['_Umem']['member_id'] && $GLOBALS['_Umem']['member_status'] == 1 ){
return true;
}
return false;
}
}