official_website/app/admin/controller/Index.php

500 lines
16 KiB
PHP

<?php
/**
* @Descripttion : FOXCMS 是一款高效的 PHP 多端跨平台内容管理系统
* @Author : FoxCMS Team
* @Date : 2023/6/26 14:55
* @version : V1.08
* @copyright : ©2021-现在 贵州黔狐科技股份有限公司 版权所有
* @LastEditTime : 2023/6/26 14:55
*/
namespace app\admin\controller;
use app\common\controller\AdminBase;
use app\common\model\AccessStat;
use app\common\model\AuthRule;
use app\common\model\Basic as BasicModel;
use think\facade\Db;
use think\facade\View;
class Index extends AdminBase
{
protected $noAuth = ['index', 'home', 'testHtml'];
private $versionInfo = [];
public function initialize()
{
parent::initialize();
$versionPath = root_path() . "data/update/version/info.php";
if (file_exists($versionPath)) {
$this->versionInfo = require_once($versionPath);
}
}
// 获取面包屑
public function getBreadcrumb()
{
//面包屑-当前位置
$bcid = $this->request->get('bcid');
$breadcrumb = [];
if (!empty($bcid)) {
$breadcrumb = AuthRule::getBreadcrumb($bcid);
}
return $this->success('获取成功', null, $breadcrumb);
}
public function index()
{
//服务器信息
$serverInfo = $this->getServerInfo();
View::assign("serverInfo", $serverInfo);
//网站基本信息
$basicArr = BasicModel::select()->toArray();
if (sizeof($basicArr) > 0) {
$basic = $basicArr[0];
View::assign("basic", $basic);
}
//时间信息
$dateTimeText = $this->getDateTimeText();
View::assign("dateTimeText", $dateTimeText);
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
//首页连接
$links = [
"siteSet" => url("Config/base") . "?columnId=23",
"column" => url("Column/index") . "?columnId=28",
"baiduRecord" => "//www.baidu.com/s?wd=site:{$this->request->rootDomain()}",
"htmlStatic" => url("Seo/index") . "?columnId=56",
"formList" => url("form/FormList/index") . "?columnId=42&ruleIds=43,44",
"countPath" => url("count/SiteProfile/index") . "?columnId=42&apply_plugin_id=4&id=2",
"adminLog" => "{$foxcmsDomain}/system/update/",
"helpCenter" => "{$foxcmsDomain}/help/",
"sitemapUrl" => url("Sitemap/index") . "?columnId=74"
];
View::assign("links", $links);
//帮助中心
$articleCount = \app\common\model\Article::count(); //文章数
$imagesCount = \app\common\model\Images::count(); //图片集数
$linkCount = \app\common\model\Link::where(['status' => 1])->count(); //友情链接数
$adCount = \app\common\model\AdvertisingSpace::where(['status' => 1])->count(); //广告数量
$productCount = \app\common\model\Product::count(); //产品数;
$videoCount = \app\common\model\Video::count(); //视频数
$helpCenters = [
"articleCount" => $articleCount,
"imagesCount" => $imagesCount,
"linkCount" => $linkCount,
"linkUrl" => url("Link/index") . "?columnId=54",
"adCount" => $adCount,
"adUrl" => url("AdvertisingSpace/index") . "?columnId=25",
"productCount" => $productCount,
"videoCount" => $videoCount,
"similarArticleUrl" => url("SimilarArticle/index")
];
View::assign("helpCenters", $helpCenters);
//更新日志
$updateLogList = $this->getUpdateLog();
View::assign("updateLogList", $updateLogList);
//服务支持
$serviceSupport = $this->getServiceSupport();
View::assign("serviceSupport", $serviceSupport);
//帮助中心
$helpCenterList = $this->getHelpCenter();
View::assign("helpCenterList", $helpCenterList);
//幻灯片
$adList = $this->getAd();
View::assign("adList", $adList);
//授权
$authorize = $this->getAuthorize();
if ($authorize->is_auth == 0) {
$authorize->software_version_name = "标准基础版";
$authorize->code = "";
$authorize->end_time_text = "";
}
if (!empty($this->versionInfo['version'])) {
$authorize->version = "v" . $this->versionInfo['version'];
} else {
$authorize->version = "";
}
View::assign("authorize", $authorize);
//系统更新
$latestVersion = $this->getLatestVersion();
$latestVersion->url = url("VersionUpdate/index") . "?columnId=65";
View::assign("latestVersion", $latestVersion);
//查询当前版本信息
View::assign("versionInfo", $this->versionInfo);
//当前今日时间
View::assign('today', date("Ymd"));
return view('home');
}
// 检查系统版本
public function checkVersion()
{
//查询当前版本信息
$only = $this->versionInfo['only'];
$foxcmsDomain = config("adminconfig.version_domain"); //foxcms官网地址
$foxcmsPathUrl1 = $foxcmsDomain . url("api/Version/checkVersion") . "?only={$only}&domain={$this->domainNo}";
$foxcmsPathUrl = replaceSymbol($foxcmsPathUrl1);
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
$this->error("未知版本,请联系客服");
}
$res = json_decode($resJson);
if ($res->code == 1) { //查询成功
$data = $res->data;
$this->success($res->msg, "", $data);
} else {
$this->error($res->msg);
}
}
// 更新版本
public function updateVersion()
{
$id = $this->request->param('id', '');
$only = $this->versionInfo['only'];
$url = url("VersionUpdate" . "/updateFile", ["columnId" => 65, "id" => $id, 'type' => 1, 'domain' => $this->domainNo, "only" => $only]);
$this->redirect($url);
exit();
}
// 系统更新
private function getLatestVersion()
{
$only = $this->versionInfo['only'];
$foxcmsDomain = config("adminconfig.version_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Version/latestVersion" . "?domain={$this->domainNo}&only={$only}");
$foxcmsPathUrl = replaceSymbol($foxcmsPathUrl);
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
return $data;
}
// 授权
private function getAuthorize()
{
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Home/authorizeInfo") . "?keyword={$this->domainNo}";
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
return $data;
}
// 幻灯片
private function getAd()
{
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Home/ad");
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
return $data;
}
// 帮助中心
private function getHelpCenter()
{
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Home/helpCenter");
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
return $data;
}
// 服务支持
private function getServiceSupport()
{
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Home/serviceSupport");
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
return $data;
}
// 更新日志
private function getUpdateLog()
{
$foxcmsDomain = config("adminconfig.foxcms_domain"); //foxcms官网地址
$foxcmsPathUrl = $foxcmsDomain . url("api/Home/updateLog");
$resJson = get_url_content($foxcmsPathUrl);
if (empty($resJson)) {
return [];
}
$res = json_decode($resJson);
$data = $res->data;
return $data;
}
// 访问概括
public function accessProfile()
{
$param = $this->request->param();
$type = $param["type"]; //类型
$labelList = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23"
];
if ($type == 1) { //今天
$today = date('Y-m-d', time());
$rdata = $this->getTimeStat($today);
$rdata["labelList"] = $labelList;
$this->success("查询成功", "", $rdata);
} elseif ($type == 2) { //昨天
$yesterday = date("Y-m-d", strtotime("-1 day"));
$rdata = $this->getTimeStat($yesterday);
$rdata["labelList"] = $labelList;
$this->success("查询成功", "", $rdata);
} elseif ($type == 3) { //最近7天
$date7 = get_dates();
$labelDateList = [];
$pvList = [];
$uvList = [];
$pvTotal = 0;
$uvTotal = 0;
foreach ($date7 as $date) {
$dataStat = $this->getDateStat($date);
array_push($labelDateList, $date);
array_push($pvList, $dataStat["pvTotal"]);
array_push($uvList, $dataStat["uvTotal"]);
$pvTotal += $dataStat["pvTotal"];
$uvTotal += $dataStat["uvTotal"];
}
$rdata = [];
$rdata["labelList"] = $labelDateList;
$rdata["pvList"] = $pvList;
$rdata["uvList"] = $uvList;
$rdata["pvTotal"] = $pvTotal;
$rdata["uvTotal"] = $uvTotal;
$this->success("查询成功", "", $rdata);
} elseif ($type == 4) { //最近30天
$date30 = get_dates(time(), 30);
$labelDateList = [];
$pvList = [];
$uvList = [];
$pvTotal = 0;
$uvTotal = 0;
foreach ($date30 as $key => $date) {
$dataStat = $this->getDateStat($date);
array_push($pvList, $dataStat["pvTotal"]);
array_push($uvList, $dataStat["uvTotal"]);
array_push($labelDateList, $date);
$pvTotal += $dataStat["pvTotal"];
$uvTotal += $dataStat["uvTotal"];
}
$rdata = [];
$rdata["labelList"] = $labelDateList;
$rdata["pvList"] = $pvList;
$rdata["uvList"] = $uvList;
$rdata["pvTotal"] = $pvTotal;
$rdata["uvTotal"] = $uvTotal;
$this->success("查询成功", "", $rdata);
}
}
// 日期统计
private function getDateStat($dateV)
{
$accessStatList = AccessStat::field("id,ip,browser,from_page,source_site,browser_type,create_time")
->whereTime("create_time", '>=', $dateV . " 00:00:00")
->whereTime("create_time", '<=', $dateV . " 23:59:59")
->order("create_time", "asc")->select();
$pvTotal = sizeof($accessStatList);
$ips = [];
foreach ($accessStatList as $accessStat) {
$ip = $accessStat['ip'];
array_push($ips, $ip);
}
$ips = array_unique($ips);
$uvTotal = sizeof($ips);
$statData = ['pvTotal' => $pvTotal, "uvTotal" => $uvTotal];
return $statData;
}
// 获取时间的统计
private function getTimeStat($dateV)
{
$accessStatList = AccessStat::field("id,ip,browser,from_page,source_site,browser_type,create_time,cookie")
->whereTime("create_time", '>=', $dateV . " 00:00:00")
->whereTime("create_time", '<=', $dateV . " 23:59:59")
->order("create_time", "asc")->select();
$pvArr = [
"0" => 0,
"1" => 0,
"2" => 0,
"3" => 0,
"4" => 0,
"5" => 0,
"6" => 0,
"7" => 0,
"8" => 0,
"9" => 0,
"10" => 0,
"11" => 0,
"12" => 0,
"13" => 0,
"14" => 0,
"15" => 0,
"16" => 0,
"17" => 0,
"18" => 0,
"19" => 0,
"20" => 0,
"21" => 0,
"22" => 0,
"23" => 0
];
$uvArr = [
"0" => 0,
"1" => 0,
"2" => 0,
"3" => 0,
"4" => 0,
"5" => 0,
"6" => 0,
"7" => 0,
"8" => 0,
"9" => 0,
"10" => 0,
"11" => 0,
"12" => 0,
"13" => 0,
"14" => 0,
"15" => 0,
"16" => 0,
"17" => 0,
"18" => 0,
"19" => 0,
"20" => 0,
"21" => 0,
"22" => 0,
"23" => 0
];
$hArr = [];
foreach ($accessStatList as $accessStat) {
// $ip = $accessStat['ip'];
$create_time = $accessStat['create_time'];
$ctime = strtotime($create_time);
$H = date("H", $ctime);
if (str_starts_with($H, "0")) {
$H = mb_substr($H, 1);
}
foreach ($pvArr as $key => $pv) {
if ($key == $H) {
$pvArr[$key] = $pv + 1;
break;
}
}
array_push($hArr, $H);
}
$hArr = array_unique($hArr);
foreach ($uvArr as $ku => $uv) {
$index = 0;
foreach ($hArr as $ka => $va) {
if ($ku == $va) {
$index++;
}
}
$uvArr[$ku] = $index;
}
$statData = ["pvList" => $pvArr, "uvList" => $uvArr, "pvTotal" => sizeof($accessStatList), "uvTotal" => sizeof($hArr)];
return $statData;
}
// 获取时间提示
function getDateTimeText()
{
$Datetime = date('H');
$text = "";
if ($Datetime >= 0 && $Datetime < 7) {
$text = "夜猫子,要注意身体呀!";
} else if ($Datetime >= 7 && $Datetime < 12) {
$text = "上午好!";
} else if ($Datetime >= 12 && $Datetime < 14) {
$text = "中午好!";
} else if ($Datetime >= 14 && $Datetime < 18) {
$text = "下午好!";
} else if ($Datetime >= 18 && $Datetime < 22) {
$text = "晚上好!";
} else if ($Datetime >= 22 && $Datetime < 24) {
$text = "夜深了,注意休息呀!";
}
return $text;
}
// 服务器信息
private function getServerInfo()
{
$serverInfo['os'] = PHP_OS;
$webServer = $_SERVER['SERVER_SOFTWARE'];
if (stristr($webServer, 'apache')) {
$webServer = 'apache';
} else if (stristr($webServer, 'nginx')) {
$webServer = 'nginx';
}
$serverInfo['webServer'] = $webServer;
$serverInfo['phpVersion'] = phpversion();
$serverInfo['ip'] = serverIP();
$serverInfo['postSize'] = @ini_get('file_uploads') ? ini_get('post_max_size') : '未知';
$serverInfo['fileUpload'] = @ini_get('file_uploads') ? ini_get('upload_max_filesize') : '未开启';
$serverInfo['maxExTime'] = @ini_get("max_execution_time") . 's'; //脚本最大执行时间
$serverInfo['domain'] = $_SERVER['HTTP_HOST'];
$serverInfo['memoryLimit'] = ini_get('memory_limit');
$mysqlinfo = Db::query("SELECT VERSION() as version");
$serverInfo['mysqlVersion'] = $mysqlinfo[0]['version'];
return $serverInfo;
}
public function about()
{
return view();
}
}