siteOptions = Option::getValues(["basic","admin"]);
$this->userObj = new User(cookie('user_id'),cookie('login_key'));
if(!$this->userObj->loginStatus){
$this->redirect(url('/Login','',''));
exit();
}
if($this->userObj->groupData["id"] != 1){
$this->error('你无权访问此页面',403,$this->siteOptions);
}
$this->adminObj = new AdminHandler($this->siteOptions);
}
public function index(){
if($this->adminObj->checkDbVersion()){
$this->redirect(url('/Admin/UpdateDb','',''));
exit();
}
if($this->adminObj->checkCron()){
$isCronOk = true;
}else{
$isCronOk = false;
}
return view('admin_index', [
'options' => $this->siteOptions,
'statics' => $this->adminObj->getStatics(),
'isCronOk' => $isCronOk,
]);
}
public function UpdateDb(){
if(!$this->adminObj->checkDbVersion()){
$this->redirect(url('/Admin','',''));
exit();
}
echo "";
echo "准备升级数据库,当前数据库版本:".$this->adminObj->dbVerInfo["now"];
echo ", 目标数据库版本:".$this->adminObj->dbVerInfo["require"].";
";
$updatePath = ROOT_PATH . "update_".$this->adminObj->dbVerInfo["now"]."to".$this->adminObj->dbVerInfo["require"].".sql";
if(!file_exists($updatePath)){
die("数据库更新文件(".$updatePath.")不存在,升级中止.");
}
echo "获取升级SQL文件(".$updatePath.")
";
$updateContent = file_get_contents($updatePath);
echo "将执行以下指令:
";
echo "".htmlspecialchars($updateContent)."
";
$sqlSingle = explode(";", $updateContent);
foreach ($sqlSingle as $key => $value){
if(empty($value)){
continue;
}
if(!Db::execute($value)){
echo "执行$value 时出现错误
";
}
}
echo "升级完成,返回管理面板";
}
public function Setting(){
return view('basic_setting', [
'options' => $this->siteOptions,
]);
}
public function Config(){
$configType=input("?param.type") ? input("param.type") : "common";
$configFile = $this->adminObj->getConfigFile($configType);
return view('config_file', [
'options' => $this->siteOptions,
'type' => $configType,
'content' => $configFile[0],
'path' => $configFile[1],
]);
}
public function SaveConfigFile(){
return $this->adminObj->saveConfigFile(input('post.'));
}
public function SettingReg(){
return view('reg_setting', [
'options' => $this->siteOptions,
'optionsForSet' => Option::getValues(["login","register"]),
'groups' => $this->adminObj->getAvaliableGroup(),
]);
}
public function Color(){
$options = Option::getValues(["basic"]);
return view('color', [
'options' => $this->siteOptions,
'optionsForSet' => $options,
'colors'=> \json_decode($options["themes"],true)
]);
}
public function Theme(){
$fileName=input("?param.name") ? input("param.name") : "error";
$dir = ROOT_PATH."application/index/view/";
if(!function_exists("scandir")){
return "scandir被禁用";
}
$fileList=[];
$fileList=$fileList+scandir($dir);
$pathList=["/"=>$fileList];
foreach (["admin","explore","file","home","index","member","profile","share"] as $key => $value) {
$childPath = scandir($dir.$value."/");
$fileList=array_merge($fileList,$childPath);
$pathList = array_merge($pathList,[$value => $childPath]);
}
foreach ($fileList as $key => $value) {
if(substr_compare($value, ".html", -strlen(".html")) != 0){
unset($fileList[$key]);
}
}
foreach($pathList as $key=>$val){
if(in_array($fileName.".html",$val)){
$parentPath = $key;
break;
}
}
$fileContent = file_get_contents($dir.rtrim($parentPath,"/")."/".$fileName.".html");
return view('theme', [
'options' => $this->siteOptions,
'list' => $fileList,
'content' => $fileContent,
'path' => $parentPath,
'name' => $fileName,
]);
}
public function SaveThemeFile(){
return $this->adminObj->saveThemeFile(input('post.'));
}
public function SaveColorSetting(){
return $this->adminObj->saveColorSetting(input('post.'));
}
public function SettingMail(){
return view('mail_setting', [
'options' => $this->siteOptions,
'optionsForSet' => Option::getValues(["mail_template","mail"]),
]);
}
public function SettingPay(){
return view('pay_setting', [
'options' => $this->siteOptions,
'optionsForSet' => Option::getValues(["payment"]),
]);
}
public function SettingOther(){
return view('other_setting', [
'options' => $this->siteOptions,
'optionsForSet' => Option::getValues(["file_edit","share","avatar","admin","storage_policy","download"]),
]);
}
public function Files(){
$this->adminObj->listFile();
return view('file_list', [
'options' => $this->siteOptions,
'groups' => $this->adminObj->getAvaliableGroup(),
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
'policy' => $this->adminObj->getAvaliablePolicy(),
]);
}
Public function Users(){
$this->adminObj->listUser();
$group = $this->adminObj->getAvaliableGroup();
return view('user_list', [
'options' => $this->siteOptions,
'group' => $group,
'groups' => $group,
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
'policy' => $this->adminObj->getAvaliablePolicy(),
]);
}
public function Shares(){
$this->adminObj->listShare();
return view('share_list', [
'options' => $this->siteOptions,
'groups' => $this->adminObj->getAvaliableGroup(),
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
]);
}
public function PolicyList(){
$this->adminObj->listPolicy();
return view('policy_list', [
'options' => $this->siteOptions,
'groups' => $this->adminObj->getAvaliableGroup(),
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
]);
}
public function GroupList(){
$this->adminObj->listGroup();
return view('group_list', [
'options' => $this->siteOptions,
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
]);
}
public function OrderList(){
$this->adminObj->listOrder();
return view('order_list', [
'options' => $this->siteOptions,
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
]);
}
public function SaveBasicSetting(){
return $this->adminObj->saveBasicSetting(input('post.'));
}
public function SaveRegSetting(){
return $this->adminObj->saveRegSetting(input('post.'));
}
public function SaveMailSetting(){
return $this->adminObj->saveMailSetting(input('post.'));
}
public function SaveAria2Setting(){
return $this->adminObj->saveAria2Setting(input('post.'));
}
public function SaveTaskOption(){
return $this->adminObj->saveTaskOption(input('post.'));
}
public function SendTestMail(){
return $this->adminObj->sendTestMail(input('post.'));
}
public function SaveMailTemplate(){
return $this->adminObj->saveMailTemplate(input('post.'));
}
public function GetFileInfo(){
return $this->adminObj->getFileInfo(input('post.id'));
}
public function GetUserInfo(){
return $this->adminObj->getUserInfo(input('post.id'));
}
public function savePolicy(){
return $this->adminObj->addPolicy(input('post.'));
}
public function SaveEditPolicy(){
return $this->adminObj->editPolicy(input('post.'));
}
public function SaveGroup(){
return $this->adminObj->saveGroup(input('post.'));
}
public function AddPack(){
return $this->adminObj->addPack(input('post.'));
}
public function AddGroupPurchase(){
return $this->adminObj->addGroupPurchase(input('post.'));
}
public function SaveCron(){
$this->adminObj->saveCron(input('post.'));
$this->redirect("/Admin/Cron",302);
}
public function SaveUser(){
return $this->adminObj->saveUser(input('post.'));
}
public function BanUser(){
return $this->adminObj->banUser(input('post.id'),$this->userObj->uid);
}
public function AddUser(){
return $this->adminObj->addUser(input('post.'));
}
public function Preview(){
$fileId = input('param.id');
$fileRecord = Db::name("files")->where("id",$fileId)->find();
$fileObj = new FileManage(rtrim($fileRecord["dir"],"/")."/".$fileRecord["orign_name"],$fileRecord["upload_user"]);
$previewHandler = $fileObj->PreviewHandler(true);
if($previewHandler[0]){
$this->redirect($previewHandler[1],302);
}
}
public function Download(){
$fileId = input('param.id');
$fileRecord = Db::name("files")->where("id",$fileId)->find();
$fileObj = new FileManage(rtrim($fileRecord["dir"],"/")."/".$fileRecord["orign_name"],$fileRecord["upload_user"]);
$FileHandler = $fileObj->Download(true);
if($FileHandler[0]){
$this->redirect($FileHandler[1],302);
}
}
public function Delete(){
return $this->adminObj->deleteSingle(input('post.id'));
}
public function DeleteShare(){
return $this->adminObj->deleteShare([0=>input('post.id')]);
}
public function DeleteShareMultiple(){
return $this->adminObj->deleteShare(\json_decode(input('post.id'),true));
}
public function DeleteMultiple(){
return $this->adminObj->deleteMultiple(input('post.id'));
}
public function DeletePolicy(){
return $this->adminObj->deletePolicy(input('post.id'));
}
public function DeleteGroup(){
return $this->adminObj->deleteGroup(input('post.id'));
}
public function DeleteOrder(){
return $this->adminObj->deleteOrder(input('post.id'));
}
public function ChangeShareType(){
return $this->adminObj->changeShareType(input('post.id'));
}
public function DeletePack(){
return $this->adminObj->deletePack(input('post.id'));
}
public function DeleteGroupPurchase(){
return $this->adminObj->deleteGroupPurchase(input('post.id'));
}
public function DeleteUser(){
return $this->adminObj->deleteUser(input('post.id'),$this->userObj->uid);
}
public function DeleteUsers(){
$uidGroup = \json_decode(input('post.id'),true);
foreach ($uidGroup as $key => $value) {
$this->adminObj->deleteUser($value,$this->userObj->uid);
}
return ["error"=>false,"msg"=>"删除成功"];
}
public function SwitchColor(){
$colorNow = Option::getValues(["admin"]);
if($colorNow["admin_color_body"] == "fixed-nav sticky-footer bg-light"){
$colorNew = [
"admin_color_body" => "fixed-nav sticky-footer bg-dark",
"admin_color_nav" => "navbar navbar-expand-lg fixed-top navbar-dark bg-dark",
];
}else{
$colorNew = [
"admin_color_body" => "fixed-nav sticky-footer bg-light",
"admin_color_nav" => "navbar navbar-expand-lg fixed-top navbar-light bg-light",
];
}
foreach ($colorNew as $key => $value) {
Db::name("options")->where("option_name",$key)->update(["option_value" => $value]);
}
}
public function EditPolicy(){
$policyId = input('param.id');
$policyRecord = Db::name("policy")->where("id",$policyId)->find();
return view('edit_policy', [
'options' => $this->siteOptions,
'policy' => $policyRecord,
]);
}
public function EditGroup(){
$groupId = input('param.id');
$groupRecord = Db::name("groups")->where("id",$groupId)->find();
return view('edit_group', [
'options' => $this->siteOptions,
'group' => $groupRecord,
'policy' => $this->adminObj->getAvaliablePolicy(),
]);
}
public function AddGroup(){
return $this->adminObj->addGroup(input('post.'));
}
public function PolicyAdd(){
return view('add_policy', [
'options' => $this->siteOptions,
]);
}
public function Cron(){
$cronData = Db::name("corn")->select();
$neverExcute = true;
foreach ($cronData as $key => $value) {
if($value["last_excute"] !=0){
$neverExcute = false;
}
}
return view('cron_list', [
'options' => $this->siteOptions,
'cron' => $cronData,
'neverExcute' => $neverExcute,
]);
}
public function PolicyAddS3(){
return view('add_policy_s3', [
'options' => $this->siteOptions,
]);
}
public function PolicyAddRemote(){
return view('add_policy_remote', [
'options' => $this->siteOptions,
]);
}
public function PolicyAddOnedrive(){
return view('add_policy_onedrive', [
'options' => $this->siteOptions,
]);
}
public function About(){
$verison = \json_decode(file_get_contents(ROOT_PATH . "application/version.json"),true);
return view('about', [
'options' => $this->siteOptions,
'programVersion' => $verison,
"dbsVersion" => Option::getValue("database_version"),
]);
}
public function Purchase(){
$packData = \json_decode(Option::getValue("pack_data"),true);
return view('purchase', [
'options' => $this->siteOptions,
'pack' => $packData,
]);
}
public function Queue(){
$taskOption = Option::getValue("task_queue_token");
return view('task', [
'options' => $this->siteOptions,
'taskOption' => $taskOption,
'task' => $this->adminObj->getTasks(),
]);
}
public function PurchaseGroup(){
$groupData = \json_decode(Option::getValue("group_sell_data"),true);
foreach ($groupData as $key => $value) {
$groupData[$key]["group"] = Db::name("groups")->where("id",$value["goup_id"])->find();
}
return view('purchase_group', [
'options' => $this->siteOptions,
'group' => $groupData,
'group_list' => $this->adminObj->getAvaliableGroup(),
]);
}
public function GroupAdd(){
return view('add_group', [
'options' => $this->siteOptions,
'policy' => $this->adminObj->getAvaliablePolicy(),
]);
}
public function RemoteDownload(){
$this->adminObj->listDownloads();
return view('download', [
'options' => $this->siteOptions,
'optionsForSet' => Option::getValues(["aria2"]),
'list' => $this->adminObj->pageData,
'originList' => $this->adminObj->listData,
'pageNow' => $this->adminObj->pageNow,
'pageTotal' => $this->adminObj->pageTotal,
'dataTotal' => $this->adminObj->dataTotal,
]);
}
public function CancelDownload(){
$aria2Options = Option::getValues(["aria2"]);
$aria2 = new \app\index\model\Aria2($aria2Options);
$downloadItem = Db::name("download")->where("id",input("post.id"))->find();
if(empty($downloadItem)){
return json(['error'=>1,'message'=>"未找到下载记录"]);
}
if($aria2->Remove($downloadItem["pid"],"")){
return json(['error'=>0,'message'=>"下载已取消"]);
}else{
return json(['error'=>1,'message'=>"取消失败"]);
}
}
public function UpdateOnedriveToken(){
$policyId = input("get.id");
$this->adminObj->updateOnedriveToken($policyId);
}
public function OneDriveCalllback(){
$code = input("get.code");
$this->adminObj->oneDriveCalllback($code);
}
}