/admin/system.php
<?php
/*---- 必須引入----*/
require_once 'head.php';
$WEB['title'] = "系統變數管理";
#程式流程
#取得主要資料庫
$tbl = "creative_system";
#引入上傳物件
include_once WEB_PATH . "/class/ugmUpFiles.php";
#Foreign key
$kind_arr = array(
"meta" => array("title" => "meta"),
"slider" => array("title" => "輪播圖"),
);
#整理傳入變數
$op = isset($_REQUEST['op']) ? $_REQUEST['op'] : "";
$sn = isset($_REQUEST['sn']) ? intval($_REQUEST['sn']) : "";
$kind = isset($_REQUEST['kind']) ? $_REQUEST['kind'] : "meta";
$name = isset($_REQUEST['name']) ? $_REQUEST['name'] : "";
#程式流程
switch ($op) {
#ajax拖曳排序
case "op_ajax_update_sort":
echo op_ajax_update_sort();
exit;
break;
#新增(Create)
case "op_insert":
op_insert();
redirect_header($_SESSION['op_list'], 3000, '新增資料成功!!');
exit;
break;
#更新(Update)
case "op_update":
op_update($sn);
redirect_header($_SESSION['op_list'], 3000, '編輯資料成功!!');
exit;
break;
#顯示單筆(Read)
case "op_show":
op_show($sn);
break;
#表單
case "op_form":
op_form($sn);
break;
#讀取(Read)
default:
$op = "op_list";
$_SESSION['op_list'] = getCurrentUrl();
op_list($kind, $name);
break;
}
/*---- 將變數送至樣版----*/
$smarty->assign("WEB", $WEB);
$smarty->assign("op", $op);
/*---- 程式結尾-----*/
$smarty->display('theme.html');
/*---- 函數區-----*/
###############################################################################
# 自動更新排序
###############################################################################
function op_ajax_update_sort() {
global $mysqli;
$tbl = $_POST['tbl'];
$key = $_POST['key'];
$name = $_POST['name'];
$sort = 1;
foreach ($_POST[$name] as $sn) {
$sql = "update {$tbl} set `sort`='{$sort}' where `{$key}`='{$sn}'";
$mysqli->query($sql) or die(printf("Error: %s <br>" . $sql, $mysqli->sqlstate));
$sort++;
}
return "Save Sort OK! (" . date("Y-m-d H:i:s") . ")";
}
#################################
# 列表程式
#################################
function op_list($kind, $name) {
global $mysqli, $smarty, $tbl, $kind_arr;
# 預設Foreign key=> system
#---- 防呆
if (!in_array($kind, array_keys($kind_arr))) {
$kind = "meta";
}
# ----得到Foreign key選單 ----------------------------
$kind_option = "";
foreach ($kind_arr as $key => $value) {
$selected = "";
if ($kind == $key) {
$selected = " selected";
}
$kind_option .= "<option value='{$key}'{$selected}>{$value['title']}</option>";
}
$kind_form = "
<select name='kind' id='kind'class='form-control' onchange=\"location.href='?kind='+this.value\">
$kind_option
</select>
";
$smarty->assign('kind_form', $kind_form);
$smarty->assign('kind', $kind);
#-------------------------------------------
$sql = "select *
from `{$tbl}`
where kind='{$kind}' and enable='1'
order by sort"; //die($sql);
$result = $mysqli->query($sql) or redirect_header($_SERVER['PHP_SELF'], 3, mysql_error());
$i = 1;
$rows = array();
while ($row = $result->fetch_assoc()) {
#sn name title value description formtype valuetype sort enable kind
$row['sn'] = intval($row['sn']);
$row['name'] = htmlspecialchars($row['name'], ENT_QUOTES); // 轉換雙引號和單引號
$row['kind'] = htmlspecialchars($row['kind'], ENT_QUOTES); // 轉換雙引號和單引號
/* formtype
「yesno」是否的單選框
「select」下拉選單
「textbox」文字框
「textarea」大量文字框
*/
if ($row['formtype'] == "textbox") {
#---- 文字框
$row['value'] = htmlspecialchars($row['value'], ENT_QUOTES); // 轉換雙引號和單引號
} elseif ($row['formtype'] == "textarea") {
#---- 大量文字框
$row['value'] = nl2br(htmlspecialchars($row['value'], ENT_QUOTES)); // 轉換雙引號和單引號
} elseif ($row['formtype'] == "fck") {
#---- fck編輯器
$html = 1;
$br = 0;
$row['value'] = htmlspecialchars($row['value']);
} elseif ($row['formtype'] == "file") {
$multiple = ($row['valuetype'] == "multiple_img") ? true : false; //圖檔數量
$dirName = "creative"; //專案名稱
$subdir = "/{$row['kind']}"; //子目錄
$ugmUpFiles = new ugmUpFiles($dirName, $subdir, "/file", "/image", "/image/thumbs", $multiple);
$ugmUpFiles->set_col($row['name'], $row['sn']); //指定sn
$row['value'] = $ugmUpFiles->list_show_file();
} elseif ($row['formtype'] == "yesno") {
$row['value'] = ($row['value']) ? "是" : "<span class='text-danger'>否</span>";
}
$row['title'] = htmlSpecialChars($row['title']);
$row['description'] = htmlSpecialChars($row['description']);
$row['sort'] = $i;
$i++;
$rows[] = $row;
}
# ------------------------------------------------------------
//print_r($rows);die();
$smarty->assign("rows", $rows);
return;
}
#################################
# 更新資料
#
#################################
function op_update($sn = "") {
global $mysqli;
if (!$sn) {
redirect_header("index.php", 3000, "更新記錄錯誤!!");
}
$row = get_creative_system($sn); //取得單筆記錄
if ($row) {
if ($row['formtype'] == "file") {
if ($row['valuetype'] == "single_img") {
#單圖
$dirName = "creative";
$subdir = "/{$row['kind']}";
$multiple = false;
$ugmUpFiles = new ugmUpFiles($dirName, $subdir, "/file", "/image", "/image/thumbs", $multiple);
$ugmUpFiles->set_col($row['name'], $row['sn']);
//上傳
//($upname = 'upfile', $main_width = "1280", $thumb_width = "120", $files_sn = "", $desc = NULL, $safe_name = false, $hash = false)
$name = $row['name'];
$main_width = "1280";
$thumb_width = "120";
$files_sn = "";
$desc = NULL;
$safe_name = true;
$hash = false;
$ugmUpFiles->upload_file($name, $main_width, $thumb_width, $files_sn, $desc, $safe_name, $hash);
} elseif ($row['valuetype'] == "multiple_img") {
#單圖
$dirName = "creative";
$subdir = "/{$row['kind']}";
$multiple = true;
$ugmUpFiles = new ugmUpFiles($dirName, $subdir, "/file", "/image", "/image/thumbs", $multiple);
$ugmUpFiles->set_col($row['name'], $row['sn']);
//上傳
//($upname = 'upfile', $main_width = "1280", $thumb_width = "120", $files_sn = "", $desc = NULL, $safe_name = false, $hash = false)
$name = $row['name'];
$main_width = "1920";
$thumb_width = "120";
$files_sn = "";
$desc = NULL;
$safe_name = true;
$hash = false;
$ugmUpFiles->upload_file($name, $main_width, $thumb_width, $files_sn, $desc, $safe_name, $hash);
}
return;
}
}
#資料過濾
$_POST['sn'] = intval($_POST['sn']);
$_POST['value'] = $mysqli->real_escape_string($_POST['value']);
$sql = "update `creative_system` set
`value` = '{$_POST['value']}'
where sn='{$_POST['sn']}'";
$mysqli->query($sql) or die(printf("Error: %s <br>" . $sql, $mysqli->sqlstate));
return;
}
#################################
# 顯示單筆
#
#################################
function op_show($sn = "") {
}
#################################
# 表單
# 新聞關鍵字 icon_home
#################################
function op_form($sn = "") {
global $mysqli, $smarty;
if (!$sn) {
redirect_header("index.php", 3000, "資料錯誤!!");
}
#編輯
$row = get_creative_system($sn); //取得單筆記錄
$row['op'] = "op_update";
$row['form_title'] = "編輯系統變數";
if ($row['formtype'] == "file") {
if ($row['valuetype'] == "single_img") {
$dirName = "creative"; //專案名稱
$subdir = "/{$row['kind']}"; //子目錄
$multiple = false;
$ugmUpFiles = new ugmUpFiles($dirName, $subdir, "/file", "/image", "/image/thumbs", $multiple);
$ugmUpFiles->set_col($row['name'], $row['sn']);
$name = $row['name']; //欄名
$accept = "image/*"; //可接受副檔名
$show = "show"; //顯示縮圖
$width = 3; //縮圖寬度
$row['form'] = $ugmUpFiles->upform($name, $accept, $show, $width);
} elseif ($row['valuetype'] == "multiple_img") {
$dirName = "creative"; //專案名稱
$subdir = "/{$row['kind']}"; //子目錄
$multiple = true;
$ugmUpFiles = new ugmUpFiles($dirName, $subdir, "/file", "/image", "/image/thumbs", $multiple);
$ugmUpFiles->set_col($row['name'], $row['sn']);
$name = $row['name']; //欄名
$accept = "image/*"; //可接受副檔名
$show = "show"; //顯示縮圖
$width = 3; //縮圖寬度
$row['form'] = $ugmUpFiles->upform($name, $accept, $show, $width);
}
} elseif ($row['formtype'] == "textbox") {
$row['form'] = "<input type='text' class='form-control' name='value' id='value' value='{$row['value']}'>";
} elseif ($row['formtype'] == "textarea") {
$row['form'] = "<textarea class='form-control' rows='5' id='value' name='value'>{$row['value']}</textarea>";
} elseif ($row['formtype'] == "fck") {
$row['form'] = "";
} elseif ($row['formtype'] == "yesno") {
$value_1 = $row['value'] ? " checked" : "";
$value_0 = $row['value'] ? "" : " checked";
$row['form'] = "<input type='radio' name='value' id='value_1' value='1' {$value_1}>\n
<label for='value_1'>是</label> \n
<input type='radio' name='value' id='value_0' value='0' {$value_0}>\n
<label for='value_0'>否</label>";
}
#把變數送至樣板
$smarty->assign("row", $row);
}
########################################
#取得單筆記錄
########################################
function get_creative_system($sn = "") {
global $mysqli;
if (!$sn) {
redirect_header("index.php", 3000, "查詢系統變數資料錯誤!!");
}
$sql = "select *
from `creative_system`
where `sn`='{$sn}'";
$result = $mysqli->query($sql) or die(printf("Error: %s <br>" . $sql, $mysqli->sqlstate));
$row = $result->fetch_assoc();
#過濾撈出資料
$row['sn'] = intval($row['sn']);
//http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
$row['name'] = htmlspecialchars($row['name'], ENT_QUOTES); // 轉換雙引號和單引號
$row['kind'] = htmlspecialchars($row['kind'], ENT_QUOTES); // 轉換雙引號和單引號
$row['title'] = htmlspecialchars($row['title'], ENT_QUOTES); // 轉換雙引號和單引號
$row['value'] = htmlspecialchars($row['value'], ENT_QUOTES); // 轉換雙引號和單引號
$row['description'] = htmlspecialchars($row['description'], ENT_QUOTES); // 轉換雙引號和單引號
$row['formtype'] = htmlspecialchars($row['formtype'], ENT_QUOTES); // 轉換雙引號和單引號
$row['valuetype'] = htmlspecialchars($row['valuetype'], ENT_QUOTES); // 轉換雙引號和單引號
$row['enable'] = intval($row['enable']);
$row['sort'] = intval($row['sort']);
return $row;
}