qnloft-onenav/controller/admin.php

339 lines
9.2 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 后台入口文件
*/
// 载入辅助函数
require('functions/helper.php');
//检查认证
check_auth($site_setting['user'],$site_setting['password']);
//获取版本号
// function get_version(){
// if( file_exists('version.txt') ) {
// $version = @file_get_contents('version.txt');
// return $version;
// }
// else{
// $version = 'null';
// return $version;
// }
// }
//获取版本号
$version = new_get_version();
$page = empty($_GET['page']) ? 'index' : $_GET['page'];
// 正则判断page只能允许字符+数字和下划线组合
$pattern = "/^[a-zA-Z0-9_\/]+$/";
if ( !preg_match($pattern,$page) ) {
exit('非法请求!');
}
//如果是后台首页,则判断是否是手机访问,并决定是否跳转到手机版页面
if( $page == 'index' ) {
jump_mobile();
}
//如果页面是修改edit_category
if ( ($page == 'edit_category') || ($page == 'edit_category_new') ) {
//获取id
$id = intval($_GET['id']);
//查询单条分类信息
$sql = "SELECT *,(SELECT name FROM on_categorys WHERE id = a.fid LIMIT 1) AS fname FROM on_categorys AS a WHERE id = $id";
$category_one = $db->query($sql)->fetchAll()[0];
//$category_one = $db->get('on_categorys','*',[ 'id' => $id ]);
//查询父级分类
$categorys = $db->select('on_categorys','*',[
'fid' => 0,
'ORDER' => ['weight' => 'DESC']
]);
//checked按钮
if( $category_one['property'] == 1 ) {
$category_one['checked'] = 'checked';
}
else{
$category_one['checked'] = '';
}
}
//如果是主题设置页面
if ( $page == "setting/theme_config" ){
//获取主题名称
$name = trim($_GET['name']);
//获取主题目录
if ( is_dir("templates/".$name) ) {
$theme_dir = "templates/".$name;
}
else{
$theme_dir = "data/templates/".$name;
}
//读取主题配置
$config_content = @file_get_contents("templates/".$name."/info.json");
if( !$config_content ) {
$config_content = @file_get_contents("data/templates/".$name."/info.json");
}
$configs = json_decode($config_content);
$configs = $configs->config;
//获取当前的配置参数
$current_configs = file_get_contents($theme_dir."/config.json");
$current_configs = json_decode($current_configs);
//var_dump($current_configs);
}
//添加分类页面
if ( $page == 'add_category' ) {
//查询父级分类
$categorys = $db->select('on_categorys','*',[
'fid' => 0,
'ORDER' => ['weight' => 'DESC']
]);
}
//API设置页面
if( $page == 'setting/api' ) {
//查询SecretKey
$SecretKey = $db->get('on_options','*',[ 'key' => 'SecretKey' ])['value'];
}
//备份页面
if( $page == 'setting/backup' ) {
}
//如果页面是修改link
if ( ( $page == 'edit_link' ) || ( $page === 'edit_link_new' ) ) {
//查询所有分类信息,用于分类框选择
$categorys = $db->select('on_categorys','*',[ 'ORDER' => ['weigth' => 'DESC'] ]);
//获取id
$id = intval($_GET['id']);
//查询单条链接信息
$link = $db->get('on_links','*',[ 'id' => $id ]);
//查询单个分类信息
$cat_name = $db->get('on_categorys',['name'],[ 'id' => $link['fid'] ]);
$cat_name = $cat_name['name'];
//checked按钮
if( $link['property'] == 1 ) {
$link['checked'] = 'checked';
}
else{
$link['checked'] = '';
}
}
//链接列表页面
if ( $page == "link_list" ) {
//查询所有分类信息,用于分类框选择
$categorys = $db->select('on_categorys','*',[ 'ORDER' => ['weigth' => 'DESC'] ]);
}
//如果页面是添加链接页面
if ( ($page == 'add_link') || ($page == 'add_link_tpl') || ($page == 'add_quick_tpl') || ($page == 'setting/share') ) {
//查询所有分类信息
$categorys = $db->select('on_categorys','*',[ 'ORDER' => ['weight' => 'DESC'] ]);
//checked按钮
if( $category['property'] == 1 ) {
$category['checked'] = 'checked';
}
else{
$category['checked'] = '';
}
}
//导入书签页面
if ( $page == 'imp_link' ) {
//查询所有分类信息
$categorys = $db->select('on_categorys','*',[ 'ORDER' => ['weight' => 'DESC'] ]);
//checked按钮
if( $category['property'] == 1 ) {
$category['checked'] = 'checked';
}
else{
$category['checked'] = '';
}
}
//主题详情页面
if ( $page == 'setting/theme_detail' ) {
//获取主题名称
$name = @$_GET['name'];
//主题目录
$tpl_dir1 = dirname(__DIR__).'/templates/'.$name;
//备用主题目录
$tpl_dir2 = dirname(__DIR__).'/data/templates/'.$name;
if( is_dir($tpl_dir1) ) {
$info = file_get_contents($tpl_dir1.'/info.json');
}
else{
$info = file_get_contents($tpl_dir2.'/info.json');
}
$theme = json_decode($info);
//var_dump($theme);
}
//主题设置页面
if( $page == 'setting/theme' ) {
//主题目录
$tpl_dir1 = dirname(__DIR__).'/templates/';
//备用主题目录
$tpl_dir2 = dirname(__DIR__).'/data/templates/';
//声明两个空数组用来存放模板目录列表
$tpl_one = [];
$tpl_two = [];
//遍历第一个目录
foreach ( scandir($tpl_dir1) as $value) {
//完整的路径
$path = $tpl_dir1.$value;
//如果是目录则push到目录列表1
if( is_dir($path) ) {
switch ($value) {
case '.':
case '..':
case 'admin':
case 'mobile':
case 'universal':
continue;
break;
default:
array_push($tpl_one,$value);
break;
}
}
else{
continue;
}
}
//如果第二个目录存在,则遍历
if( is_dir($tpl_dir2) ) {
foreach ( scandir($tpl_dir2) as $value) {
//完整的路径
$path = $tpl_dir2.$value;
//如果是目录则push到目录列表1
if( is_dir($path) ) {
switch ($value) {
case '.':
case '..':
case 'admin':
continue;
break;
default:
array_push($tpl_two,$value);
break;
}
}
else{
continue;
}
}
}
//合并目录
//现在$tpl_one是合并后的完整主题列表
$tpls = array_merge($tpl_one,$tpl_two);
//读取主题里面的信息
//设置一个空数组
$data = [];
foreach ($tpls as $value) {
//如果文件存在
if( is_file($tpl_dir1.$value.'/info.json') ) {
$data[$value]['info'] = json_decode(@file_get_contents( $tpl_dir1.$value.'/info.json' ));
}
else{
$data[$value]['info'] = json_decode(@file_get_contents( $tpl_dir2.$value.'/info.json' ));
}
}
$themes = $data;
//获取当前主题
$current_them = $db->get('on_options','value',[ 'key' => "theme" ]);
//获取在线主题列表
$theme_list = curl_get("https://onenav.xiaoz.top/v1/theme_list.php");
$theme_list = json_decode($theme_list)->data;
//var_dump($theme_list);
//去重一下
foreach ($themes as $key => $value) {
unset($theme_list->$key);
}
}
//站点设置页面
if( $page == 'setting/site' ) {
//获取当前站点信息
$site = $db->get('on_options','value',[ 'key' => "s_site" ]);
$site = unserialize($site);
}
//站点订阅页面
if( $page == 'setting/subscribe' ) {
//获取当前站点信息
$subscribe = $db->get('on_options','value',[ 'key' => "s_subscribe" ]);
$subscribe = unserialize($subscribe);
//获取当前版本信息
$current_version = explode("-",file_get_contents("version.txt"));
$current_version = str_replace("v","",$current_version[0]);
}
//过渡页设置页面
if( $page == 'setting/transition_page' ) {
//获取当前站点信息
$transition_page = $db->get('on_options','value',[ 'key' => "s_transition_page" ]);
$transition_page = unserialize($transition_page);
}
//如果是退出
//如果页面是添加链接页面
if ($page == 'logout') {
//清除cookie
setcookie("key", $key, -(time()+7 * 24 * 60 * 60),"/");
//跳转到首页
header('location:/');
exit;
}
//如果是自定义js页面
if ($page == 'ext_js') {
//判断文件是否存在
if (is_file('data/extend.js')) {
$content = file_get_contents('data/extend.js');
}
else{
$content = '';
}
}
$page = $page.'.php';
/**
* 检查授权
*/
function check_auth($user,$password){
if ( !is_login() ) {
$msg = "<h3>认证失败,请<a href = 'index.php?c=login'>重新登录</a></h3>";
require('templates/admin/403.php');
exit;
}
}
// 判断$page文件是否存在不存在则终止执行
$full_page_path = 'templates/admin/'.$page;
if( !file_exists($full_page_path) ) {
exit("file does not exist!");
}
// 载入前台首页模板
require('templates/admin/'.$page);