fipamo/app/Http/Controllers/SettingsController.php

117 lines
3.7 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
use App\Interfaces\MemberRepositoryInterface;
use App\Services\Data\SettingsService;
use App\Services\Data\SortingService;
use App\Services\Assets\AssetService;
use App\Services\Assets\RenderService;
use App\Services\Upkeep\MaintenanceService;
use App\Services\Upkeep\ResetService;
use Illuminate\Http\Request;
class SettingsController extends Controller
{
protected $theme;
protected $member;
protected $settings;
protected $sort;
protected $assets;
protected $render;
protected $maintenance;
protected $reset;
public function __construct(
ThemeController $themeController,
MemberRepositoryInterface $memberRepo,
SettingsService $settingsService,
SortingService $sortingService,
AssetService $assetsService,
RenderService $renderService,
MaintenanceService $maintenanceService,
ResetService $resetService,
) {
$this->theme = $themeController;
$this->member = $memberRepo;
$this->settings = $settingsService;
$this->sort = $sortingService;
$this->assets = $assetsService;
$this->render = $renderService;
$this->maintenance = $maintenanceService;
$this->reset = $resetService;
}
public function start()
{
return view('back.settings', [
'settings' => $this->sort->settings(),
'nav' => $this->sort->navigation()
]);
}
public function tasks(Request $request)
{
$result = [];
switch (explode("/", $request->getURI())[5]) {
case 'publish':
$this->assets->moveToTheme(true);
$result = $this->render->publishAll();
break;
case 'sync':
$body = json_decode($request->getContent());
//update member if needed
$this->member->update($body->member);
//sync settings
$result = $this->settings->sync($body);
break;
case 'nav-sync':
$body = json_decode($request->getContent());
$result = $this->settings->navSync($body);
break;
}
return response()->json($result)->header('Content-Type', 'application/json');
}
public function createBackup(Request $request)
{
$body = json_decode($request->getContent());
if ($body->task == 'content_backup') {
return response()->json(
$this->maintenance->createContentBackUp()
)->header('Content-Type', 'application/json');
} else {
return response()->json(
$this->maintenance->createFileBackUp()
)->header('Content-Type', 'application/json');
}
}
public function downloadBackup($type)
{
if ($this->member::status()) {
$latest = '';
$file = '';
if ($type == 'content-download') {
$latest = $this->settings->getGlobal()['last_content_backup'];
$file = 'backup-content-' . $latest . '.zip';
} else {
$latest = $this->settings->getGlobal()['last_files_backup'];
$file = 'backup-files-' . $latest . '.zip';
}
return response()->download(
'../content/backups/' . $file,
$file,
['Content-Type: application/zip']
);
}
}
public function reset(Request $request)
{
$result = $this->reset->site($request);
return response()->json($result)->header('Content-Type', 'application/json');
}
}