321 lines
8.9 KiB
PHP
Executable File
321 lines
8.9 KiB
PHP
Executable File
<?php
|
||
/**
|
||
* 首页模板入口
|
||
*/
|
||
|
||
//获取当前站点信息
|
||
$site = $db->get('on_options','value',[ 'key' => "s_site" ]);
|
||
$site = unserialize($site);
|
||
// 获取链接数量,默认为30
|
||
$link_num = empty( $site['link_num'] ) ? 30 : intval($site['link_num']);
|
||
|
||
|
||
|
||
//如果已经登录,获取所有分类和链接
|
||
// 载入辅助函数
|
||
require('functions/helper.php');
|
||
if( is_login() ){
|
||
//查询所有分类目录
|
||
$categorys = [];
|
||
//查询一级分类目录,分类fid为0的都是一级分类
|
||
$category_parent = $db->select('on_categorys','*',[
|
||
"fid" => 0,
|
||
"ORDER" => ["weight" => "DESC"]
|
||
]);
|
||
//遍历一级分类,然后获取下面的二级分类,获取到了就push
|
||
foreach ($category_parent as $key => $value) {
|
||
//把一级分类先加入到空数组
|
||
array_push($categorys,$value);
|
||
//然后查询他下面的子分类,再追加到数组
|
||
$category_subs = $db->select('on_categorys','*',[
|
||
"fid" => $value['id'],
|
||
"ORDER" => ["weight" => "DESC"]
|
||
]);
|
||
|
||
foreach ($category_subs as $category_sub) {
|
||
array_push($categorys,$category_sub);
|
||
}
|
||
}
|
||
//根据分类ID查询二级分类,分类fid大于0的都是二级分类
|
||
function get_category_sub($id) {
|
||
global $db;
|
||
$id = intval($id);
|
||
|
||
$category_sub = $db->select('on_categorys','*',[
|
||
"fid" => $id,
|
||
"ORDER" => ["weight" => "DESC"]
|
||
]);
|
||
|
||
return $category_sub;
|
||
}
|
||
|
||
//根据category id查询链接
|
||
function get_links($fid) {
|
||
global $db;
|
||
$fid = intval($fid);
|
||
$links = $db->select('on_links','*',[
|
||
'fid' => $fid,
|
||
'ORDER' => ["weight" => "DESC"]
|
||
]);
|
||
return $links;
|
||
}
|
||
|
||
//根据category id查询有限链接
|
||
function get_limit_links($fid) {
|
||
global $db;
|
||
global $link_num;
|
||
$fid = intval($fid);
|
||
$links = $db->select('on_links','*',[
|
||
'fid' => $fid,
|
||
'ORDER' => ["weight" => "DESC"],
|
||
'LIMIT' => $link_num
|
||
]);
|
||
|
||
return $links;
|
||
}
|
||
|
||
//右键菜单标识
|
||
$onenav['right_menu'] = 'admin_menu();';
|
||
}
|
||
//如果没有登录,只获取公有链接
|
||
else{
|
||
// 检查分类是否全私有,如果是,则跳转到登录界面
|
||
check_all_cat();
|
||
//查询分类目录
|
||
$categorys = [];
|
||
//查询一级分类目录,分类fid为0的都是一级分类
|
||
$category_parent = $db->select('on_categorys','*',[
|
||
"fid" => 0,
|
||
'property' => 0,
|
||
"ORDER" => ["weight" => "DESC"]
|
||
]);
|
||
//遍历一级分类,然后获取下面的二级分类,获取到了就push
|
||
foreach ($category_parent as $key => $value) {
|
||
//把一级分类先加入到空数组
|
||
array_push($categorys,$value);
|
||
//然后查询他下面的子分类,再追加到数组
|
||
$category_subs = $db->select('on_categorys','*',[
|
||
"fid" => $value['id'],
|
||
'property' => 0,
|
||
"ORDER" => ["weight" => "DESC"]
|
||
]);
|
||
|
||
foreach ($category_subs as $category_sub) {
|
||
array_push($categorys,$category_sub);
|
||
}
|
||
}
|
||
//根据分类ID查询二级分类,分类fid大于0的都是二级分类
|
||
function get_category_sub($id) {
|
||
global $db;
|
||
$id = intval($id);
|
||
|
||
$category_sub = $db->select('on_categorys','*',[
|
||
"fid" => $id,
|
||
'property' => 0,
|
||
"ORDER" => ["weight" => "DESC"]
|
||
]);
|
||
|
||
return $category_sub;
|
||
}
|
||
//根据category id查询链接
|
||
function get_links($fid) {
|
||
global $db;
|
||
global $link_num;
|
||
$fid = intval($fid);
|
||
$links = $db->select('on_links','*',[
|
||
'fid' => $fid,
|
||
'property' => 0,
|
||
'ORDER' => ["weight" => "DESC"]
|
||
]);
|
||
return $links;
|
||
}
|
||
//根据category id查询有限链接
|
||
function get_limit_links($fid) {
|
||
global $db;
|
||
$fid = intval($fid);
|
||
$links = $db->select('on_links','*',[
|
||
'fid' => $fid,
|
||
'property' => 0,
|
||
'ORDER' => ["weight" => "DESC"],
|
||
'LIMIT' => $link_num
|
||
]);
|
||
return $links;
|
||
}
|
||
//右键菜单标识
|
||
$onenav['right_menu'] = 'user_menu();';
|
||
}
|
||
|
||
// 新增一个可变函数,来根据不同的情况使用不同的方法查询分类下的链接
|
||
$get_links = 'get_limit_links';
|
||
//获取分类ID
|
||
$cid = @$_GET['cid'];
|
||
|
||
// 如果存在分类ID,则只查询这个分类
|
||
if ( !empty($cid) ) {
|
||
foreach ($categorys as $key => $tmp) {
|
||
if( $tmp['id'] == $cid ) {
|
||
$empty_cat[0] = $tmp;
|
||
break;
|
||
}
|
||
}
|
||
$get_links = 'get_links';
|
||
unset($categorys);
|
||
$categorys[0] = $empty_cat[0];
|
||
}
|
||
|
||
//获取版本号
|
||
function get_version(){
|
||
if( file_exists('version.txt') ) {
|
||
$version = @file_get_contents('version.txt');
|
||
return $version;
|
||
}
|
||
else{
|
||
$version = 'null';
|
||
return $version;
|
||
}
|
||
}
|
||
|
||
//将URL转换为base64编码
|
||
function base64($url){
|
||
$urls = parse_url($url);
|
||
|
||
//获取请求协议
|
||
$scheme = empty( $urls['scheme'] ) ? 'http://' : $urls['scheme'].'://';
|
||
//获取主机名
|
||
$host = $urls['host'];
|
||
//获取端口
|
||
$port = empty( $urls['port'] ) ? '' : ':'.$urls['port'];
|
||
|
||
$new_url = $scheme.$host.$port;
|
||
return base64_encode($new_url);
|
||
}
|
||
|
||
//获取版本号
|
||
$version = get_version();
|
||
//载入js扩展
|
||
if( file_exists('data/extend.js') ) {
|
||
$onenav['extend'] = '<script src = "data/extend.js"></script>';
|
||
}
|
||
else{
|
||
$onenav['extend'] = '';
|
||
}
|
||
|
||
|
||
// 载入前台首页模板
|
||
//查询主题设置
|
||
$template = $db->get("on_options","value",[
|
||
"key" => "theme"
|
||
]);
|
||
//获取用户传递的主题参数
|
||
$theme = trim( @$_GET['theme'] );
|
||
//如果用户传递了主题参数
|
||
if( !empty($theme) ) {
|
||
//获取所有主题
|
||
$themes = get_all_themes();
|
||
|
||
//查找主题是否存在
|
||
if( array_search($theme,$themes) !== FALSE ) {
|
||
//改变默认主题
|
||
$template = $theme;
|
||
}
|
||
else{
|
||
//主题不存在,终止执行
|
||
exit("<h1>主题参数错误!</h1>");
|
||
}
|
||
}
|
||
|
||
|
||
//获取主题配置信息
|
||
if( file_exists("templates/".$template."/config.json") ) {
|
||
$config_file = "templates/".$template."/config.json";
|
||
}
|
||
else if( file_exists("data/templates/".$template."/config.json") ) {
|
||
$config_file = "data/templates/".$template."/config.json";
|
||
}
|
||
else if( file_exists("templates/".$template."/info.json") ) {
|
||
$config_file = "templates/".$template."/info.json";
|
||
}
|
||
else {
|
||
$config_file = "data/templates/".$template."/info.json";
|
||
}
|
||
|
||
//读取主题配置
|
||
$config_content = @file_get_contents($config_file);
|
||
//如果是info.json,则特殊处理下
|
||
if ( strstr($config_file,"info.json") ) {
|
||
$config_content = json_decode($config_content);
|
||
$theme_config = $config_content->config;
|
||
}
|
||
else{
|
||
$config_content = $config_content;
|
||
$theme_config = json_decode($config_content);
|
||
}
|
||
|
||
|
||
|
||
|
||
//判断文件夹是否存在
|
||
if( is_dir('templates/'.$template) ){
|
||
$tpl_dir = 'templates/';
|
||
}
|
||
else{
|
||
$tpl_dir = 'data/templates/';
|
||
}
|
||
|
||
//定义搜索引擎
|
||
$search_engines = [
|
||
"baidu" => [
|
||
"name" => "百度",
|
||
"url" => "https://www.baidu.com/s?ie=utf-8&word="
|
||
],
|
||
"google" => [
|
||
"name" => "Google",
|
||
"url" => "https://www.google.com/search?q="
|
||
],
|
||
"bing" => [
|
||
"name" => "必应",
|
||
"url" => "https://cn.bing.com/search?FORM=BESBTB&q="
|
||
],
|
||
"sogou" => [
|
||
"name" => "搜狗",
|
||
"url" => "https://www.sogou.com/web?query="
|
||
],
|
||
"so360" => [
|
||
"name" => "360搜索",
|
||
"url" => "https://www.so.com/s?ie=utf-8&fr=none&src=360sou_newhome&ssid=&q="
|
||
],
|
||
"zhihu" => [
|
||
"name" => "知乎",
|
||
"url" => "https://www.zhihu.com/search?type=content&q="
|
||
],
|
||
"weibo" => [
|
||
"name" => "微博",
|
||
"url" => "https://s.weibo.com/weibo?q="
|
||
]
|
||
];
|
||
|
||
//获取主题的最低版本要求
|
||
$info_json = @file_get_contents($tpl_dir.$template."/info.json");
|
||
|
||
if( $info_json ) {
|
||
$info = json_decode($info_json);
|
||
|
||
$min_version = @$info->require->min;
|
||
//获取到了最低版本
|
||
if( !empty($min_version) ) {
|
||
//如果主程序不满足主题要求
|
||
if( new_get_version() < $min_version ) {
|
||
$onenav_version = new_get_version();
|
||
exit($template."主题要求最低OneNav版本为:".$min_version.",您当前OneNav版本为:".$onenav_version.",请先<a title = 'OneNav升级说明' href = 'https://dwz.ovh/br5wt' target = '_blank'>升级OneNav版本!</a>");
|
||
}
|
||
}
|
||
}
|
||
|
||
// 该分类下可见的链接数量
|
||
function get_links_number($fid){
|
||
$number = count(get_links($fid));
|
||
return $number;
|
||
}
|
||
|
||
//载入主题
|
||
require($tpl_dir.$template.'/index.php'); |