2024-07-13 14:23:01 -06:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use App\Interfaces\MemberRepositoryInterface;
|
|
|
|
use App\Services\Data\SettingsService;
|
2025-05-16 17:37:53 -06:00
|
|
|
use App\Services\Data\SortingService;
|
|
|
|
use App\Services\Assets\AssetService;
|
|
|
|
use App\Services\Assets\RenderService;
|
2024-07-17 15:08:10 -06:00
|
|
|
use App\Services\Upkeep\MaintenanceService;
|
2025-05-16 17:37:53 -06:00
|
|
|
use App\Services\Upkeep\ResetService;
|
2024-07-13 14:23:01 -06:00
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
2025-05-16 17:37:53 -06:00
|
|
|
class SettingsController extends Controller
|
2024-07-13 14:23:01 -06:00
|
|
|
{
|
2025-05-16 17:37:53 -06:00
|
|
|
protected $theme;
|
|
|
|
protected $member;
|
|
|
|
protected $settings;
|
|
|
|
protected $sort;
|
2024-07-13 14:23:01 -06:00
|
|
|
protected $assets;
|
|
|
|
protected $render;
|
2024-07-17 15:08:10 -06:00
|
|
|
protected $maintenance;
|
2025-05-16 17:37:53 -06:00
|
|
|
protected $reset;
|
2024-07-13 14:23:01 -06:00
|
|
|
|
|
|
|
public function __construct(
|
2025-05-16 17:37:53 -06:00
|
|
|
ThemeController $themeController,
|
2024-07-13 14:23:01 -06:00
|
|
|
MemberRepositoryInterface $memberRepo,
|
2025-05-16 17:37:53 -06:00
|
|
|
SettingsService $settingsService,
|
|
|
|
SortingService $sortingService,
|
|
|
|
AssetService $assetsService,
|
|
|
|
RenderService $renderService,
|
2024-07-17 15:08:10 -06:00
|
|
|
MaintenanceService $maintenanceService,
|
2025-05-16 17:37:53 -06:00
|
|
|
ResetService $resetService,
|
2024-07-13 14:23:01 -06:00
|
|
|
) {
|
2025-05-16 17:37:53 -06:00
|
|
|
$this->theme = $themeController;
|
2024-07-17 15:08:10 -06:00
|
|
|
$this->member = $memberRepo;
|
2025-05-16 17:37:53 -06:00
|
|
|
$this->settings = $settingsService;
|
|
|
|
$this->sort = $sortingService;
|
|
|
|
$this->assets = $assetsService;
|
|
|
|
$this->render = $renderService;
|
2024-07-17 15:08:10 -06:00
|
|
|
$this->maintenance = $maintenanceService;
|
2025-05-16 17:37:53 -06:00
|
|
|
$this->reset = $resetService;
|
2024-07-13 14:23:01 -06:00
|
|
|
}
|
|
|
|
|
2025-05-16 17:37:53 -06:00
|
|
|
public function start()
|
2024-07-13 14:23:01 -06:00
|
|
|
{
|
2025-05-16 17:37:53 -06:00
|
|
|
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();
|
2024-07-13 14:23:01 -06:00
|
|
|
break;
|
2025-05-16 17:37:53 -06:00
|
|
|
case 'sync':
|
|
|
|
$body = json_decode($request->getContent());
|
|
|
|
//update member if needed
|
|
|
|
$this->member->update($body->member);
|
|
|
|
//sync settings
|
|
|
|
$result = $this->settings->sync($body);
|
2024-07-13 14:23:01 -06:00
|
|
|
break;
|
2025-05-16 17:37:53 -06:00
|
|
|
case 'nav-sync':
|
|
|
|
$body = json_decode($request->getContent());
|
|
|
|
$result = $this->settings->navSync($body);
|
2024-07-17 15:08:10 -06:00
|
|
|
break;
|
|
|
|
}
|
2025-05-16 17:37:53 -06:00
|
|
|
return response()->json($result)->header('Content-Type', 'application/json');
|
2024-07-17 15:08:10 -06:00
|
|
|
}
|
|
|
|
|
2025-05-16 17:37:53 -06:00
|
|
|
public function createBackup(Request $request)
|
2024-07-17 15:08:10 -06:00
|
|
|
{
|
|
|
|
$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');
|
2024-07-13 14:23:01 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-05-16 17:37:53 -06:00
|
|
|
public function downloadBackup($type)
|
2024-07-13 14:23:01 -06:00
|
|
|
{
|
2025-05-16 17:37:53 -06:00
|
|
|
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']
|
|
|
|
);
|
2024-07-13 14:23:01 -06:00
|
|
|
}
|
2025-05-16 17:37:53 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
public function reset(Request $request)
|
|
|
|
{
|
|
|
|
$result = $this->reset->site($request);
|
2024-07-13 14:23:01 -06:00
|
|
|
return response()->json($result)->header('Content-Type', 'application/json');
|
|
|
|
}
|
|
|
|
}
|