official_website/app/admin/controller/Config.php

212 lines
43 KiB
PHP
Raw Normal View History

2024-12-02 13:57:08 +08:00
<?php
/**
* @Descripttion : FOXCMS 是一款高效的 PHP 多端跨平台内容管理系统
* @Author : FoxCMS Team
* @Date : 2023/6/26 14:38
* @version : V1.08
* @copyright : ©2021-现在 贵州黔狐科技股份有限公司 版权所有
* @LastEditTime : 2023/6/26 14:38
*/
namespace app\admin\controller;
use app\common\controller\AdminBase;
use app\common\model\Basic as BasicModel;
use app\common\model\Template;
use think\Exception;
use think\facade\Db;
use think\facade\View;
class Config extends AdminBase
{
//配置文件目录
protected $folder = 'cfg';
// 基本配置
public function base()
{
$param = $this->request->param();
if (array_key_exists('bcid', $param)) {
View::assign('bcid', $param['bcid']);
}
$lang = $this->getMyLang();
$basicArr = BasicModel::where([['lang', '=', $lang]])->select()->toArray();
if (sizeof($basicArr) > 0) {
$basic = $basicArr[0];
foreach ($basic as $key => $val) {
$basic[$key . "_call"] = "{fox:basic name='$key'/}";
}
View::assign('id', $basic["id"]);
} else {
$basic = [];
$basicFields = Db::name('basic')->getFields();
foreach ($basicFields as $key => $field) {
$basic[$key . "_call"] = "{fox:basic name='$key'/}";
}
}
View::assign('basic', $basic);
$admin_path = config('adminconfig.admin_path');
View::assign('admin_path', $admin_path);
//查询当前模板的类型
View::assign("templateType", $this->templateType);
View::assign("by_time", date("Y", time()));
$versionPath = root_path() . "data/update/version/info.php";
$versionInfo = require($versionPath);
$version = "未知";
if (!empty($versionInfo['version'])) {
$version = "V{$versionInfo['version']}";
}
View::assign("version", $version);
$base = xn_cfg("base");
View::assign("base", $base);
$copyrightInfo = $this->copyrightInfo();
View::assign("copyrightInfo", $copyrightInfo);
return view('index');
}
// 授权
private function copyrightInfo()
{
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Home/copyrightInfo") . "?keyword={$this->domainNo}";
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
if (!($data->is_copyright)) {
$base = xn_cfg("base");
if (array_key_exists("copyright_remove_mark", $base) && (intval($base['copyright_remove_mark'] . ""))) {
$base['copyright_remove_mark'] = '0';
set_php_arr(config_path("cfg"), 'base.php', $base);
}
}
return $data;
}
public function save()
{
$param = $this->request->post();
$id = $param["id"];
$base = xn_cfg("base");
if ($param["status"] != $base["status"]) {
//保存状态
$base["status"] = $param["status"];
}
if ($base["status"] == 0) {
$base["status_desc"] = $param["status_desc"];
}
if ($base['copyright_mark'] != $param['copyright_mark']) {
$base['copyright_mark'] = $param['copyright_mark'];
$copyright_mark_desc = "";
if ($param['copyright_mark'] == 1) {
$copyright_mark_desc = 'fd72bSHX4oDNwz44otEPuqo2mtVYMV1SpwCXdeIkhGNpp4FV2IjkjPcWL5x2gBTnmTeGfddN/DbGCYloPlMW9TXA0i4bGnRP9u/O6LrJc6ZKhYNG1uhNEmx7258k15KGuG4JmTQR4aVuE1foEVS8jesSsJjsICeyrZ52Us0mQ+yiR7puMQUDakZjw6Z3Hx8yJIOfbBkILMoZFckX83M8HUwn9ustzDNwTg42Q5/RO6PO9XWEV7Dr3kRhsOOzMDZbLoThkObKowxFE8i8oRPVo9wzQsDcPyog98IstVArSx6NFA7BxfG84KYvzCC4T8UX8pke9XQZo4xWnKaPOz+Ga5CvXsEsWg56Qv+8wjtlk42YUrOeptS752MW2tWns18GLC475eL7ITr0RgOK6q6DSDsaVa25z0sgFFns8pKBEJWM1C9laExssU+6GtmQgTIvhrHtMwQnuP40g85/YRsC6u97rSMIaCMm3LvmVAbE7KcKx1JU/KMdfbx88/u4gHeqvjmm1xunk4Vsou/hhwoCZws';
} elseif ($param['copyright_mark'] == 2) {
$copyright_mark_desc = 'b367x0Wozlgm5MZg6WwsNktykugm5DVCTjNRFCTofb6iqBl2FOqazXQ+ZUkleaLrOjJ9ovHVWVZfO9qJmgHgIlOhZ6UNE6Sm2+S+3z2o7jN+RXhsOrZZCTGAbCw14kc12xIfPjAPX1TuEiHm7V1EadDwDToDe8S7/tlA5NyeoecHNYtwAU1edurREs/n1ZkMqP8p0MswFilEguCT25t4dxHW4xvRYBvuSJh2UgVr3/63eCvbNYMqF4GLkkV6NKvQugxtwAEavXpImiG9CQNwmx4oWzqFq2+XWQFyV9RTJPEcPMtQMglW0caewmY8CG5/i+1fRbr7DowUJqVkpPR8aL19cICCI58bIPRuVrLJw3zNE8hCfmw63vN0JjjhG8IwRTwoiy0ma0c4fsVZYr+FMd0t9OPP996zStIRkj7KrymCO0dNTJEXbp8Ocua0afepHDnJJEbkfr6hdDNwvlj3vZmPJMGellGqgz1QmlNBiRhDUkVPdhHir/PKOey6Buh2zpdH/IyQ4R4lt+RTGem/KvV4cwsQbRAyag';
} elseif ($param['copyright_mark'] == 3) {
$copyright_mark_desc = '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
}
$base['copyright_mark_desc'] = $copyright_mark_desc;
}
if ($base['copyright_color'] != $param['copyright_color']) {
$copyright_color = $param['copyright_color'];
$base['copyright_color'] = $copyright_color;
$font_color = str_replace("rgba(", "", $copyright_color) . str_replace(")", "", $copyright_color);
$font_colorArr = explode(",", $font_color);
$fc_val = $font_colorArr[0] * 0.299 + $font_colorArr[1] * 0.587 + $font_colorArr[2] * $font_colorArr[3]; //自适应公式
if ($fc_val <= 86) {
$font_color = "#444";
} elseif ($fc_val > 86 && $fc_val <= 172) {
$font_color = "#aaa";
} else {
$font_color = "#999";
}
$base['font_color'] = $font_color;
}
if ($base['copyright_remove_mark'] != $param['copyright_remove_mark']) {
$base['copyright_remove_mark'] = $param['copyright_remove_mark'];
}
set_php_arr(config_path('cfg'), 'base.php', $base);
if ($id == "" || empty($id)) {
if (empty($param["url"])) {
$param["url"] = $this->request->subDomain() . "." . $this->request->rootDomain();
}
$param['lang'] = xn_cfg("base.lang");
BasicModel::create($param);
} else {
//更新配置文件
$adminconfigArr = config('adminconfig');
$adminPathOld = $adminconfigArr['admin_path'];
$adminPathNew = $param['admin_path'] ?? "admin";
if (empty($adminPathNew)) { //后台路径为空默认给admin
$adminPathNew = "admin";
}
if ($adminPathOld != $adminPathNew) { //后台路径发生转变的时候,删除缓存
//从命名入口文件名称
$oldAdminFile = replaceSymbol(root_path()) . $adminPathOld . ".php";
$newAdminFile = replaceSymbol(root_path()) . $adminPathNew . ".php";
$xr = rename($oldAdminFile, $newAdminFile);
if (!$xr) {
$this->error("设置失败,请开启/目录权限,如何不会请联系管理员");
}
$adminconfig = config("adminconfig");
if (sizeof($adminconfig) > 0) {
$adminconfig['admin_path'] = $adminPathNew;
} else {
$adminconfig = [
// 默认后台访问路径
'admin_path' => $adminPathNew,
//静态文件路径
'static_path' => $adminconfig['static_path'] ?? "/static/",
'foxcms_domain' => $adminconfig['foxcms_domain'] ?? 'http://www.foxcms.cn',
'version_domain' => $adminconfig['version_domain'] ?? 'http://lite.control.foxcms.cn'
];
}
set_php_arr(config_path(), 'adminconfig.php', $adminconfig);
//删除目录
$dir = root_path() . "runtime";
delDir($dir);
//保存数据
unset($param['admin_path']);
BasicModel::update($param);
$this->success('设置成功', "", $adminPathNew . ".php");
} else {
//保存数据
unset($param['admin_path']);
BasicModel::update($param);
}
}
xn_add_admin_log("保存基本设置", "config"); //添加日志
$this->success('设置成功');
}
// 写入配置文件
protected function _set($param, $filename = "base")
{
if (is_array($param) && !empty($param)) {
$file = config_path() . $this->folder . "/" . $filename . '.php';
$str = "<?php\r\nreturn [\r\n";
foreach ($param as $key => $val) {
$str .= "\t'$key' => '$val',";
$str .= "\r\n";
}
$str .= '];';
file_put_contents($file, $str);
}
}
// 加载配置文件
protected function _load($filename)
{
$data = \think\facade\Config::load($this->folder . "/" . $filename, $filename);
return $data;
}
}