From ecbef7833d01e443f3d2f64d9e9e65765035f9a9 Mon Sep 17 00:00:00 2001 From: xiaoz Date: Fri, 29 Apr 2022 17:18:14 +0800 Subject: [PATCH] 20220429 --- class/Api.php | 105 +++++++++++++++++++++++++++++++++++++++++++ controller/admin.php | 31 +++++++++++++ controller/api.php | 36 ++++++++++++++- controller/ico.php | 101 +++++++++++++++++++++++++++++++++++++++++ controller/index.php | 26 +++++++++++ 5 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 controller/ico.php diff --git a/class/Api.php b/class/Api.php index ab27e77..1a882a4 100755 --- a/class/Api.php +++ b/class/Api.php @@ -214,6 +214,38 @@ class Api { $this->err_msg(-1011,'The URL already exists!'); } } + /** + * 批量修改链接分类 + */ + public function batch_modify_category($data) { + $this->auth($token); + //获取链接ID,是一个数组 + $id = implode(',',$data['id']); + //获取分类ID + $fid = $data['fid']; + //查询分类ID是否存在 + $count = $this->db->count('on_categorys',[ 'id' => $fid]); + //如果分类ID不存在 + if( empty($fid) || empty($count) ) { + $this->err_msg(-2000,'分类ID不存在!'); + } + else{ + $sql = "UPDATE on_links SET fid='$fid' WHERE id IN ($id)"; + $re = $this->db->query($sql); + if( $re ) { + $id = $this->db->id(); + $data = [ + 'code' => 0, + 'msg' => "success" + ]; + exit(json_encode($data)); + } + else{ + $this->err_msg(-2000,'更新失败!'); + } + } + } + /** * 批量导入链接 */ @@ -909,6 +941,79 @@ class Api { $this->err_msg(-2000,$e->getMessage()); } } + /** + * 保存主题参数 + */ + public function save_theme_config($data) { + $this->auth($token); + //获取主题名称 + $name = $data['name']; + //获取config参数,是一个对象 + $config = $data['config']; + + //获取主题配置文件config.json + if ( is_dir("templates/".$name) ) { + $config_file = "templates/".$name."/config.json"; + } + else{ + $config_file = "data/templates/".$name."/config.json"; + } + + $config_content = json_encode($config,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); + //写入配置 + try { + $re = @file_put_contents($config_file,$config_content); + $this->return_json(0,"success"); + } catch (\Throwable $th) { + $this->err_msg(-2000,"写入配置失败!"); + } + } + /** + * 获取主题参数 + */ + public function get_theme_config() { + $template = $this->db->get("on_options","value",[ + "key" => "theme" + ]); + //获取主题配置信息 + //获取主题配置 + if( file_exists("templates/".$template."/config.json") ) { + $config_file = "templates/".$template."/config.json"; + } + else if(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") ) { + $theme_config = $config_content->config; + } + else{ + $theme_config = $config_content; + } + $theme_config = json_decode($theme_config); + $this->return_json(200,$theme_config,""); + } + /** + * 通用json消息返回 + */ + public function return_json($code,$data,$msg = "") { + $return = [ + "code" => intval($code), + "data" => $data, + "msg" => $msg + ]; + exit(json_encode($return)); + } /** * 更新option */ diff --git a/controller/admin.php b/controller/admin.php index 819af4e..ebb0c0b 100755 --- a/controller/admin.php +++ b/controller/admin.php @@ -43,6 +43,31 @@ if ( $page == 'edit_category' ) { } } +//如果是主题设置页面 +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' ) { //查询父级分类 @@ -80,6 +105,12 @@ if ($page == 'edit_link') { } } +//链接列表页面 +if ( $page == "link_list" ) { + //查询所有分类信息,用于分类框选择 + $categorys = $db->select('on_categorys','*',[ 'ORDER' => ['weigth' => 'DESC'] ]); +} + //如果页面是添加链接页面 if ( ($page == 'add_link') || ($page == 'add_link_tpl') || ($page == 'add_quick_tpl') ) { //查询所有分类信息 diff --git a/controller/api.php b/controller/api.php index 7e62aee..14c3459 100755 --- a/controller/api.php +++ b/controller/api.php @@ -145,8 +145,8 @@ function category_list($api){ * 查询链接列表 */ function link_list($api){ - $page = empty(intval($_GET['page'])) ? 1 : intval($_GET['page']); - $limit = empty(intval($_GET['limit'])) ? 10 : intval($_GET['limit']); + $page = empty(intval($_REQUEST['page'])) ? 1 : intval($_REQUEST['page']); + $limit = empty(intval($_REQUEST['limit'])) ? 10 : intval($_REQUEST['limit']); //获取token $token = $_POST['token']; //获取分类ID @@ -322,4 +322,36 @@ function get_latest_version() { ]; } exit(json_encode($data)); +} + +//批量修改链接分类 +function batch_modify_category($api) { + //获取id列表 + $id = $_POST['id']; + //获取分类ID + $fid = intval($_POST['fid']); + + $data = [ + 'id' => $id, + 'fid' => $fid + ]; + + $api->batch_modify_category($data); +} + +//保存主题参数设置 +function save_theme_config($api) { + //获取所有POST数组,并组合为对象 + $post_data = $_POST; + //数组转对象 + foreach ($post_data as $key => $value) { + $data['config']->$key = $value; + } + $data['name'] = $post_data['name']; + unset($data['config']->name); + $api->save_theme_config($data); +} +//获取主题配置信息 +function get_theme_config($api) { + $api->get_theme_config(); } \ No newline at end of file diff --git a/controller/ico.php b/controller/ico.php new file mode 100644 index 0000000..af677f3 --- /dev/null +++ b/controller/ico.php @@ -0,0 +1,101 @@ +' . $first . ''; + //$value = 'data:image/svg+xml;base64,' . $src; + $value = $src; + return $value; +} + + +function hsv2rgb($h, $s, $v) +{ + $r = $g = $b = 0; + + $i = floor($h * 6); + $f = $h * 6 - $i; + $p = $v * (1 - $s); + $q = $v * (1 - $f * $s); + $t = $v * (1 - (1 - $f) * $s); + + switch ($i % 6) { + case 0: + $r = $v; + $g = $t; + $b = $p; + break; + case 1: + $r = $q; + $g = $v; + $b = $p; + break; + case 2: + $r = $p; + $g = $v; + $b = $t; + break; + case 3: + $r = $p; + $g = $q; + $b = $v; + break; + case 4: + $r = $t; + $g = $p; + $b = $v; + break; + case 5: + $r = $v; + $g = $p; + $b = $q; + break; + } + + return [ + floor($r * 255), + floor($g * 255), + floor($b * 255) + ]; +} + +/** + * 输出svg图像 + */ +function output_ico() { + //获取文字 + $text = @trim($_GET['text']); + $text = empty($text) ? '空' : $text; + + //获取当前主机名 + $host = $_SERVER['HTTP_HOST']; + //获取reffrer + $referer = $_SERVER['HTTP_REFERER']; + + //如果referer和主机名不匹配,则禁止调用 + if ( ( !empty($referer) ) && ( !strstr($referer,$host) ) ) { + exit('调用失败'); + } + else{ + header('Cache-Control: max-age=604800'); + header('Content-Type:image/svg+xml'); + echo letter_avatar($text); + } + +} + +//调用ico输出函数 +output_ico(); \ No newline at end of file diff --git a/controller/index.php b/controller/index.php index 375195f..b655016 100755 --- a/controller/index.php +++ b/controller/index.php @@ -162,6 +162,32 @@ $template = $db->get("on_options","value",[ $site = $db->get('on_options','value',[ 'key' => "s_site" ]); $site = unserialize($site); +//获取主题配置信息 +//获取主题配置 +if( file_exists("templates/".$template."/config.json") ) { + $config_file = "templates/".$template."/config.json"; +} +else if(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") ) { + $theme_config = $config_content->config; +} +else{ + $theme_config = $config_content; +} +$theme_config = json_decode($config_content); + //判断文件夹是否存在 if( is_dir('templates/'.$template) ){ $tpl_dir = 'templates/';