mirror of https://github.com/helloxz/onenav.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							321 lines
						
					
					
						
							8.9 KiB
						
					
					
				
			
		
		
	
	
							321 lines
						
					
					
						
							8.9 KiB
						
					
					
				| <?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'); |