qnloft-onenav/controller/index.php

321 lines
8.9 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
/**
* 首页模板入口
*/
//获取当前站点信息
$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');