dbnt.co.kr2023/common/lib/class.portfolio.php

702 lines
16 KiB
PHP

<?
class Portfolio {
var $DB;
var $_LIST_NUM = 20;
var $_PDS = _PDS;
var $_PDS_SUB = "/portfolio/";
var $_T_PDS = _PDS;
var $_T_PDS_SUB = "/portfolio/thumb/";
# 생성자
function Portfolio($db) {
$this->DB = $db;
$this->_PDS .= $this->_PDS_SUB;
$this->_T_PDS .= $this->_T_PDS_SUB;
$this->_B_PDS .= $this->_B_PDS_SUB;
}
#############카테고리S#######################
function set_category_insert($argu){
$data = array(
"title" => $argu["title"],
"title_sub" => $argu["title_sub"],
"published" => ($argu["published"]=="Y")?"Y":"N",
);
$sth = $this->DB->autoPrepare(TABLE_CATEGORY, array_keys($data), DB_AUTOQUERY_INSERT);
$res = $this->DB->execute($sth, array_values($data));
if (DB::isError($res)) {
//debug($res);
go_url("", $res->getMessage());
exit;
}
$id=mysql_insert_id();
return true;
}
function set_category_modify($argu){
$data = array(
"title" => $argu["title"],
"title_sub" => $argu["title_sub"],
"published" => ($argu["published"]=="Y")?"Y":"N",
);
$res = $result = $this->DB->autoExecute(TABLE_CATEGORY, $data, DB_AUTOQUERY_UPDATE, " id = '{$argu['id']}' ");
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
# 목록
function get_category_list($argu,&$total,$limit = true){
global $_adminpage;
$addwhere = "where (1=1) ";
if(!$_adminpage){$addwhere .= " and (published = 'Y') ";}
if($argu['s_string']){$addwhere .= " and (title like '%{$argu['s_string']}%') "; }
$query = "
select
count(*)
from
".TABLE_CATEGORY."
".$addwhere;
$res = $total = $this->DB->getOne($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$query = "
select
*
from
".TABLE_CATEGORY."
".$addwhere."
order by id asc
";
if($argu["listnum"]){
$_listnum = $argu["listnum"];
}
else{
$_listnum = $this->_LIST_NUM;
}
if($limit)
$query .= "
limit ".($argu['p']-1)*$_listnum.",".$_listnum;
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_category_lnb(){
global $_adminpage;
$addwhere = "where (1=1) ";
$addwhere .= " and (published = 'Y') ";
$query = "
select
*
from
".TABLE_CATEGORY."
".$addwhere."
order by id asc
";
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_category_one(){
global $_adminpage;
$addwhere = " where (1=1) ";
if(!$_adminpage) $addwhere .= "and (published = 'Y')";
$query = "SELECT
*
FROM ".TABLE_CATEGORY."
".$addwhere."
ORDER BY id asc limit 0, 1";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
#상세보기
function get_category_view($id){
$query = "SELECT
*
FROM ".TABLE_CATEGORY."
where id = '".$id."'";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
#삭제#
function set_category_delete($id){
$query = "DELETE FROM ".TABLE_CATEGORY." WHERE id = '".$id."'";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$p_query = "DELETE FROM ".TABLE_PORTFOLIO." WHERE category = '".$id."'";
$p_res = $this->DB->query($query);
if (DB::isError($p_res)) {
go_url("", $p_res->getMessage());
exit;
}
return true;
}
#############카테고리E#######################
# 등록
function set_insert($argu){
//$res = $order_num = $this->DB->getOne("select ifnull(max(order_num),0)+1 from ".TABLE_PORTFOLIO." where category = '".$argu["category"]."'");
$res = $order_num = $this->DB->getOne("select ifnull(max(order_num),0)+1 from ".TABLE_PORTFOLIO);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
//썸네일 업로드
if($_FILES['thumb'] !== null && $_FILES['thumb'][error] == 0 && $_FILES['thumb'][size] > 0 ){
$thumb_info = getimagesize($_FILES["thumb"]["tmp_name"]);
$thumb_width = $file_info[0]; //이미지 가로 사이즈
$thumb_height = $file_info[1]; //이미지 세로 사이즈
$thumb_type = $_FILES['thumb']['type'];
if($thumb_width > 385){
$thumb = thumb_upload($_FILES['thumb'],'/pds/portfolio/thumb/','T','385');
}
else{
$thumb = thumb_upload($_FILES['thumb'],'/pds/portfolio/thumb/','O','');
}
}
$data = array(
"category" => $argu["category"],
"title" => $argu["title"],
"description" => strip_tags($argu["description"]),
"client" => $argu["client"],
"location" => $argu["location"],
"period" => $argu["period"],
"area" => $argu["area"],
"published" => ($argu["published"]=="Y")?"Y":"N",
"reg_date" => _NowTime,
"order_num" => $order_num,
"thumb" => $thumb,
"main" => ($argu["main"]=="Y")?"Y":"N",
);
$sth = $this->DB->autoPrepare(TABLE_PORTFOLIO, array_keys($data), DB_AUTOQUERY_INSERT);
$res = $this->DB->execute($sth, array_values($data));
if (DB::isError($res)) {
//debug($res);
go_url("", $res->getMessage());
exit;
}
$id=mysql_insert_id();
$files = array();
foreach ($_FILES['images'] as $k => $l) {
foreach ($l as $i => $v) {
if (!array_key_exists($i, $files))
$files[$i] = array();
$files[$i][$k] = $v;
}
}
foreach ($files as $file) {
$img_original[] = thumb_upload($file,'/pds/portfolio/','T','1088');
}
$images = json_encode($img_original);
$ordering = json_encode($argu["ordering"]);
$data_file = array(
"images" => $images,
"images_ordering" => $ordering
);
$res = $this->DB->autoExecute(TABLE_PORTFOLIO, $data_file, DB_AUTOQUERY_UPDATE, " id = '{$id}'");
if (DB::isError($res)) {
//debug($res);
go_url("", $res->getMessage());
exit;
}
return true;
}
#수정
function set_modify($argu){
//썸네일 업로드
if($_FILES['thumb'] !== null && $_FILES['thumb'][error] == 0 && $_FILES['thumb'][size] > 0 ){
$thumb_info = getimagesize($_FILES["thumb"]["tmp_name"]);
$thumb_width = $file_info[0]; //이미지 가로 사이즈
$thumb_height = $file_info[1]; //이미지 세로 사이즈
$thumb_type = $_FILES['b_thumb']['type'];
if($thumb_width > 385){
$thumb = thumb_upload($_FILES['thumb'],'/pds/portfolio/thumb/','T','385',$argu["tmp_thumb"]);
}
else{
$thumb = thumb_upload($_FILES['thumb'],'/pds/portfolio/thumb/','O','',$argu["tmp_thumb"]);
}
}
else{
$thumb = $argu["tmp_thumb"];
}
$data = array(
"category" => $argu["category"],
"title" => $argu["title"],
"description" => strip_tags($argu["description"]),
"client" => $argu["client"],
"location" => $argu["location"],
"period" => $argu["period"],
"area" => $argu["area"],
"published" => ($argu["published"]=="Y")?"Y":"N",
"thumb" => $thumb,
"main" => ($argu["main"]=="Y")?"Y":"N",
);
$res = $result = $this->DB->autoExecute(TABLE_PORTFOLIO, $data, DB_AUTOQUERY_UPDATE, " id = '{$argu['id']}' ");
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$files = array();
foreach ($_FILES['images'] as $k => $l) {
foreach ($l as $i => $v) {
if (!array_key_exists($i, $files))
$files[$i] = array();
$files[$i][$k] = $v;
}
}
$f=0;
foreach ($files as $file) {
$img_original[] = thumb_upload($file,'/pds/portfolio/','T','1457',$argu["tmp_image"][$f]);
$f++;
}
$images = json_encode($img_original);
$ordering = json_encode($argu["ordering"]);
$data_file = array(
"images" => $images,
"images_ordering" => $ordering
);
$res = $this->DB->autoExecute(TABLE_PORTFOLIO, $data_file, DB_AUTOQUERY_UPDATE, " id = '{$argu['id']}'");
if (DB::isError($res)) {
//debug($res);
go_url("", $res->getMessage());
exit;
}
return true;
}
# 목록
function get_list($argu,&$total,$limit = true){
global $_adminpage;
$addwhere = "where (1=1) ";
if(!$_adminpage){$addwhere .= " and (published = 'Y') ";}
//if($_adminpage){$addwhere .= " and (category = '{$argu['category']}') ";}
if($argu['s_category']){$addwhere .= " and (category = '{$argu['s_category']}') ";}
if($argu['Search']){
$addwhere .= " and (title like '%{$argu['Search']}%'".$p_where.") ";
}
if(!$_adminpage){
$sort = " id desc";
}
else{
$sort = " id desc";
}
$query = "
select
count(*)
from
".TABLE_PORTFOLIO."
".$addwhere;
$res = $total = $this->DB->getOne($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$query = "
select
*,
(select title from ".TABLE_CATEGORY." as c where c.id=category) as cate
from
".TABLE_PORTFOLIO."
".$addwhere."
order by ".$sort."
";
if($argu["listnum"]){
$_listnum = $argu["listnum"];
}
else{
$_listnum = $this->_LIST_NUM;
}
if($limit)
$query .= "
limit ".($argu['p']-1)*$_listnum.",".$_listnum;
$res = $list =& $this->DB->getAll($query, array(), DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $list;
}
function get_list_limit($limit,$category,$id=""){
global $_adminpage;
$addwhere = "where (1=1) and (main='Y') ";
if(!$_adminpage){$addwhere .= " and (published = 'Y') ";}
if($id){$addwhere .= " and (id not in('".$id."')) ";}
if($argu['category']){$addwhere .= " and (category = '{$argu['category']}') ";}
if(!$_adminpage){
$sort = " event_date desc";
}
else{
$sort = " event_date desc";
}
$query = "
select
*,
(select title from ".TABLE_CATEGORY." as c where c.id=category) as cate
from
".TABLE_PORTFOLIO."
".$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_view($id){
$query = "SELECT
*,
(select title from ".TABLE_CATEGORY." as c where c.id=category) as cate
FROM ".TABLE_PORTFOLIO."
where id = '".$id."'";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $row;
}
#삭제#
function set_delete($id){
$_row = $this -> get_view($id);
if($_row["thumb"]){
if(file_exists($this->_T_PDS."/".$_row["thumb"])) unlink($this->_T_PDS."/".$_row["thumb"]);
}
$images = json_decode($_row["images"]);
if(count($images) > 0){
for($i=0;$i<count($images);$i++){
if(file_exists($this->_PDS."/".$images[$i])) unlink($this->_PDS."/".$images[$i]);
}
}
$query = "DELETE FROM ".TABLE_PORTFOLIO." WHERE id = '".$id."'";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return true;
}
function get_total($argu) {
$addwhere = "where (1=1) ";
if(!$_adminpage){$addwhere .= " and (published = 'Y') ";}
if($argu['s_category']){$addwhere .= " and (category = '{$argu['s_category']}') ";}
$query = "
select
count(*)
from
".TABLE_PORTFOLIO."
".$addwhere;
$res = $total = $this->DB->getOne($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
return $total;
}
//진열순서변경
function set_order_modify($argu){
$data = array(
"order_num" => $argu["order_num"]
);
$res = $this->DB->autoExecute(TABLE_PORTFOLIO, $data, DB_AUTOQUERY_UPDATE, " id = '{$argu['id']}' ");
if (DB::isError($res)) {
//debug($res);
go_url("",$res->getMessage());
exit;
}
return true;
}
/*****
* 이전 게시물 정보를 가져온다.
*****/
function get_prev($id, $category='', $search=''){
// TODO : 답변형의 경우 정확한 이전정보 가져오는 방법을 생각해보자
global $_adminpage;
$addwhere = "";
if($category){
$addwhere = " and (category='".$category."')";
}
if($search){
$addwhere .= " and (title like '%{$argu['Search']}%') ";
}
$query = "
select
*
from
".TABLE_PORTFOLIO."
where
id > '{$id}'
$addwhere
order by
id asc
limit 1
";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($res)) {
//debug($res);
//go_url("", $res->getMessage());
return false;
exit;
}
return $row;
}
/*****
* 다음 게시물 정보를 가져온다.
*****/
function get_next($id, $category='', $search=''){
// TODO : 답변형의 경우 정확한 다음정보 가져오는 방법을 생각해보자
global $_adminpage;
$addwhere = "";
if($category){
$addwhere = " and (category='".$category."')";
}
if($search){
$addwhere .= " and (title like '%{$argu['Search']}%') ";
}
$query = "
select
*
from
".TABLE_PORTFOLIO."
where
id < '{$id}'
$addwhere
order by
id desc
limit 1
";
$res = $row = $this->DB->getRow($query,DB_FETCHMODE_ASSOC);
if (DB::isError($row)) {
//debug($res);
//go_url("", $res->getMessage());
return false;
exit;
}
return $row;
}
function set_order($argu){
if($argu["s_mode"] == "up"){
//$res = $id = $this->DB->getOne("select id from ".TABLE_PORTFOLIO." where (order_num < '".$argu["order_num"]."') and (category = '".$argu["category"]."') order by order_num desc limit 1");
$res = $id = $this->DB->getOne("select id from ".TABLE_PORTFOLIO." where (order_num < '".$argu["order_num"]."') order by order_num desc limit 1");
if($id){
$query = "
update ".TABLE_PORTFOLIO."
set
order_num = order_num - 1
where
id = '".$argu["id"]."'
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$query1 = "
update ".TABLE_PORTFOLIO."
set
order_num = order_num + 1
where
id = '".$id."'
";
$res1 = $this->DB->query($query1);
if (DB::isError($res1)) {
go_url("", $res1->getMessage());
exit;
}
}
else{
go_url("", "정열값이 최상위 입니다.");
exit;
}
}
else if($argu["s_mode"] == "down"){
//$res = $id = $this->DB->getOne("select id from ".TABLE_PORTFOLIO." where (order_num > '".$argu["order_num"]."')and (category = '".$argu["category"]."') order by order_num asc limit 1");
$res = $id = $this->DB->getOne("select id from ".TABLE_PORTFOLIO." where (order_num > '".$argu["order_num"]."') order by order_num asc limit 1");
if($id){
$query = "
update ".TABLE_PORTFOLIO."
set
order_num = order_num + 1
where
id = '".$argu["id"]."'
";
$res = $this->DB->query($query);
if (DB::isError($res)) {
go_url("", $res->getMessage());
exit;
}
$query1 = "
update ".TABLE_PORTFOLIO."
set
order_num = order_num - 1
where
id = '".$id."'
";
$res1 = $this->DB->query($query1);
if (DB::isError($res1)) {
go_url("", $res1->getMessage());
exit;
}
}
else{
go_url("", "정열값이 최하위 입니다.");
exit;
}
}
return true;
}
}
?>