<?php
use application\ESPCMS_AdminAuthority;
use application\ESPCMS_Core;
use admin_application\AdminPublicDB;
use admin_application\NevigateDB;
use admin_application\link\NevigateLink;
class Nevigate {
private static $nevigate_list_cache_key;
public function __construct() {
$exclude_method = array('saveNevigate', 'sortNevigate');
ESPCMS_AdminAuthority::authorityAdminVerify($exclude_method);
self::$nevigate_list_cache_key = ESPCMS_CACHE_DBLIST_NAME . ESPCMS_DB_PREFIX . 'nevigate_';
}
public static function listNevigate() {
global $espcms_admin_templates, $espcms_link_db;
$db_table = ESPCMS_DB_PREFIX . "nevigate";
$out_type = $_REQUEST['out_type'];
$lng = AdminPublicDB::get_lancode();
$db_where = " AND lng='$lng'";
if ($out_type == 'list') {
$searchlist = $_GET['searchlist'];
if ($searchlist == 'true') {
exit(espcms_page_db($db_table, $db_where, true));
}
$sort_key = $_REQUEST['sort_key'];
$sort_key_array = array('nevigate_id', 'nevigate_pid');
if (isset($sort_key) && in_array($sort_key, $sort_key_array)) {
$order_key = $sort_key;
} else {
$order_key = "nevigate_id";
}
$sort_rank = $_REQUEST['sort_rank'];
$sort_rank_array = array('ASC', 'DESC');
if (isset($sort_rank) && in_array($sort_rank, $sort_rank_array)) {
$order_rank = $sort_rank;
} else {
$order_rank = "DESC";
}
$db_query = $espcms_link_db->db_query(espcms_db_list_out($db_table, $db_where, $order_key, $order_rank));
while ($fetch_row = $espcms_link_db->db_array_list($db_query)) {
$fetch_row['edit'] = NevigateLink::Nevigate_link_array('edit', $fetch_row);
$array[] = $fetch_row;
}
$espcms_admin_templates->into('array', $array);
$templates = 'admin/nevigate_list';
} else {
$espcms_admin_templates->into('link', NevigateLink::Nevigate_link_array(false, $_REQUEST));
$templates = 'admin/nevigate_index';
}
$espcms_admin_templates->output($templates);
}
public static function addNevigate() {
global $espcms_admin_templates;
$member_app_config = ESPCMS_Core::get_app_config('member', false);
$espcms_admin_templates->into('member_app', $member_app_config);
$order_app_config = ESPCMS_Core::get_app_config('order', false);
$espcms_admin_templates->into('order_app', $order_app_config);
$enquiry_app_config = ESPCMS_Core::get_app_config('enquiry', false);
$espcms_admin_templates->into('enquiry_app', $enquiry_app_config);
$espcms_admin_templates->into('link', NevigateLink::Nevigate_link_array());
$espcms_admin_templates->into('token', token());
$espcms_admin_templates->output('admin/nevigate_add');
}
public static function editNevigate() {
global $espcms_admin_templates;
$nevigate_id = $_GET['nevigate_id'];
if (!$nevigate_id || !espcms_ismatches($nevigate_id)) {
espcms_message_err('public_pack-espcms_input_parameter_fail', array($nevigate_id));
}
$db_where = "WHERE nevigate_id=$nevigate_id";
$db_table = ESPCMS_DB_PREFIX . 'nevigate';
$talbe_field_array = espcms_field_out($db_table, false);
$read = espcms_db_read($db_table, $db_where, $talbe_field_array);
$espcms_admin_templates->into('read', $read);
$espcms_admin_templates->into('link', NevigateLink::Nevigate_link_array());
$espcms_admin_templates->into('token', token());
$espcms_admin_templates->output('admin/nevigate_edit');
}
public static function saveNevigate() {
global $espcms_db_cache;
if (!is_token($_POST['token_name'], $_POST['token_key'])) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_repeat_fail', 'false', array($_POST['token_name']));
}
$saveType = $_POST['savetype'] ? $_POST['savetype'] : 'add';
$lng = AdminPublicDB::get_lancode();
$db_table = ESPCMS_DB_PREFIX . "nevigate";
$talbe_field_array = espcms_field_out($db_table, true);
if (!espcms_ismatches($_POST['nevigate_isaccessory']) || !espcms_ismatches($_POST['nevigate_iswap']) || !espcms_ismatches($_POST['nevigate_ismenu'])) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false');
}
if ($saveType == 'add') {
if (!ESPCMS_AdminAuthority::authorityVerify('addNevigate')) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_authority_function_fail', 'false');
}
if (!espcms_ismatches($_POST['nevigate_linktype']) || !espcms_ismatches($_POST['nevigate_target']) || !$_POST['nevigate_name']) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false');
}
if ($_POST['nevigate_linktype'] == 1 && !$_POST['nevigate_modul']) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false');
}
if ($_POST['nevigate_linktype'] == 2 && !espcms_isurl($_POST['nevigate_url'])) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false');
}
$_POST['nevigate_modul'] = $_POST['nevigate_linktype'] == 2 ? 'link' : $_POST['nevigate_modul'];
$_POST['nevigate_url'] = $_POST['nevigate_linktype'] == 2 ? $_POST['nevigate_url'] : '';
$_POST['lng'] = $lng;
$nevigate_pid = NevigateDB::lastPidNevigate($lng, 'nevigate_pid');
$_POST['nevigate_pid'] = espcms_ismatches($nevigate_pid) ? $nevigate_pid + 1 : 0;
$_POST['nevigate_linkid'] = 0;
if ($_POST['nevigate_linktype'] == 1) {
$nevigate_read = NevigateDB::get_nevigat_lng_view($lng, $_POST['nevigate_modul']);
if ($nevigate_read) {
espcms_public_dialog('espcms_public_dialog', 'nevigate_pack-espcms_nevigate_add_save_err', 'false', array($_POST['nevigate_name']));
}
}
$postvalue = espcms_post($_POST, $talbe_field_array, true);
if (!$postvalue || !is_array($postvalue)) {
espcms_public_dialog('espcms_public_dialog', 'db_pack-espcms_db_install_fail', 'false');
}
$install_id = espcms_db_install_save($db_table, $postvalue);
if (!$install_id) {
espcms_public_dialog('espcms_public_dialog', 'db_pack-espcms_db_install_fail', 'false');
}
$espcms_db_cache->cacheDEL(self::$nevigate_list_cache_key . $_POST['lng'], true);
espcms_log_install('nevigate_pack-espcms_nevigate_button_add', $_POST['nevigate_name']);
espcms_public_dialog('espcms_info_save_ok', 'nevigate_pack-espcms_nevigate_add_save_ok_message', 'true', array($_POST['nevigate_name']));
} elseif ($saveType == 'edit') {
if (!ESPCMS_AdminAuthority::authorityVerify('addNevigate')) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_authority_function_fail', 'false');
}
if (!espcms_ismatches($_POST['nevigate_target']) || !$_POST['nevigate_name']) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false');
}
if ($_POST['nevigate_linktype'] == 2 && !espcms_isurl($_POST['nevigate_url'])) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false');
}
$_POST['nevigate_url'] = $_POST['nevigate_linktype'] == 2 ? $_POST['nevigate_url'] : '';
$nevigate_id = $_POST['nevigate_id'];
if (empty($nevigate_id) || !espcms_ismatches($nevigate_id)) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false', array($nevigate_id));
}
$db_where = "WHERE nevigate_id=$nevigate_id";
$read = espcms_db_read($db_table, $db_where, $talbe_field_array);
if (!$read) {
espcms_public_dialog('espcms_public_dialog', 'public_pack-espcms_input_parameter_fail', 'false', array($nevigate_id));
}
unset($_POST['nevigate_linktype'], $_POST['nevigate_pid'], $_POST['lng'], $_POST['nevigate_linkid'], $_POST['nevigate_modul'], $_POST['nevigate_linktype']);
$postvalue = espcms_post($_POST, $talbe_field_array, true);
if (!$postvalue || !is_array($postvalue)) {
espcms_public_dialog('espcms_public_dialog', 'db_pack-espcms_db_install_fail', 'false');
}
$update_id = espcms_db_update_save($db_table, $db_where, $postvalue);
if (!$update_id) {
espcms_public_dialog('espcms_public_dialog', 'db_pack-espcms_db_install_fail', 'false');
}
if ($read['nevigate_modul'] == 'article' && espcms_ismatches($read['nevigate_linkid'])) {
$update_set = "ismenu=$_POST[nevigate_ismenu],isaccessory=$_POST[nevigate_isaccessory],iswap=$_POST[nevigate_iswap]";
espcms_db_update_set_save(ESPCMS_DB_PREFIX . "document_typelist", "WHERE tid=" . $read['nevigate_linkid'], $update_set);
}
if ($read['nevigate_modul'] == 'bbs' && espcms_ismatches($read['nevigate_linkid'])) {
$bbs_app_config = ESPCMS_Core::get_app_config('bbsemanage', false);
if ($bbs_app_config['isetup']) {
espcms_db_update_set_save(ESPCMS_DB_PREFIX . "bbs_typelist", "WHERE btid=" . $read['nevigate_linkid'], "ismenu=" . $_POST[nevigate_ismenu]);
}
}
if ($read['nevigate_modul'] == 'forms' && espcms_ismatches($read['nevigate_linkid'])) {
$forms_app_config = ESPCMS_Core::get_app_config('formsmanage', false);
if ($forms_app_config['isetup']) {
espcms_db_update_set_save(ESPCMS_DB_PREFIX . "form_group", "WHERE fgid=" . $read['nevigate_linkid'], "ismenu=" . $_POST[nevigate_ismenu]);
}
}
$espcms_db_cache->cacheDEL(self::$nevigate_list_cache_key . $read['lng'], true);
espcms_log_install('nevigate_pack-espcms_nevigate_button_edit', $_POST['nevigate_name']);
espcms_public_dialog('espcms_info_save_ok', 'nevigate_pack-espcms_nevigate_edit_save_ok_message', 'true', array($_POST['nevigate_name']));
}
}
public static function delNevigate() {
global $espcms_db_cache;
$select_id = $_POST['select_id'];
$lng = AdminPublicDB::get_lancode();
if (!is_array($select_id) || count($select_id) <= 0) {
espcms_public_dialog('info_set_err', 'public_pack-espcms_select_err', 'false', array($select_id));
}
$delcount = 0;
foreach ($select_id as $value) {
$operate_result = self::delNevigateDB($value);
if ($operate_result['code'] == 'true') {
$delcount++;
}
}
$espcms_db_cache->cacheDEL(self::$nevigate_list_cache_key . $lng, true);
$espcms_del_id = implode(', ', $select_id);
espcms_log_install('nevigate_pack-espcms_nevigate_button_del', $espcms_del_id);
$return['count'] = $delcount;
espcms_public_dialog('espcms_public_dialog', 'nevigate_pack-espcms_nevigate_del_message', 'true', array(), 'json', $return);
}
private static function delNevigateDB($nevigate_id = 0) {
if (!$nevigate_id || !espcms_ismatches($nevigate_id)) {
$return_array = array('lan' => 'public_pack-espcms_input_parameter_fail', 'code' => 'false', 'key' => $nevigate_id);
return $return_array;
}
$read = NevigateDB::get_nevigate_id_view($nevigate_id);
if (!$read) {
$return_array = array('lan' => 'public_pack-espcms_input_parameter_fail', 'code' => 'false', 'key' => $nevigate_id);
return $return_array;
}
$nevigate_linkid = $read['nevigate_linkid'];
if ($read['nevigate_modul'] == 'article' && espcms_ismatches($nevigate_linkid)) {
espcms_db_update_set_save(ESPCMS_DB_PREFIX . "document_typelist", "WHERE tid=$nevigate_linkid", "ismenu=0");
}
if ($read['nevigate_modul'] == 'bbs' && espcms_ismatches($nevigate_linkid)) {
$bbs_app_config = ESPCMS_Core::get_app_config('bbsemanage', false);
if ($bbs_app_config['isetup']) {
espcms_db_update_set_save(ESPCMS_DB_PREFIX . "bbs_typelist", "WHERE btid=$nevigate_linkid", "ismenu=0");
}
}
if ($read['nevigate_modul'] == 'forms' && espcms_ismatches($nevigate_linkid)) {
$forms_app_config = ESPCMS_Core::get_app_config('formsmanage', false);
if ($forms_app_config['isetup']) {
espcms_db_update_set_save(ESPCMS_DB_PREFIX . "form_group", "WHERE fgid=$nevigate_linkid", "ismenu=0");
}
}
$db_table = ESPCMS_DB_PREFIX . "nevigate";
$db_where = "nevigate_id=$nevigate_id";
if (espcms_db_delall($db_table, $db_where)) {
$return_array = array('lan' => 'public_pack-espcms_del_ok', 'code' => 'true', 'key' => $nevigate_id);
return $return_array;
} else {
$return_array = array('lan' => 'public_pack-espcms_del_err', 'code' => 'false', 'key' => $nevigate_id);
return $return_array;
}
}
public static function sortNevigate() {
global $espcms_db_cache;
$lng = AdminPublicDB::get_lancode();
$aid_array = $_POST['id_array'];
if (!is_array($aid_array) || count($aid_array) <= 0) {
exit('false');
}
$db_table = ESPCMS_DB_PREFIX . "nevigate";
foreach ($aid_array as $key => $value) {
$pid = $key;
if (espcms_ismatches($pid) && espcms_ismatches($value) && $value) {
espcms_db_update_set_save($db_table, "WHERE nevigate_id=$value", "nevigate_pid=$pid");
}
}
$espcms_db_cache->cacheDEL(self::$nevigate_list_cache_key . $lng, true);
espcms_log_install('nevigate_pack-espcms_nevigate_sort_message', 'nevigate_id=' . $value);
exit('true');
}
}