From ffc0da8a07a5dc515d0e1e4d9e8dc11ae0237e1b Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 12 Sep 2023 12:01:47 +0200 Subject: [PATCH] wip #6262 @0.5 --- .../FluidbookPublication/PreviewOperation.php | 4 +- app/Models/FluidbookHealthIssues.php | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 app/Models/FluidbookHealthIssues.php diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/PreviewOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/PreviewOperation.php index 9771ea2c6..c37d156b7 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/PreviewOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/PreviewOperation.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookPublication; use App\Fluidbook\Compiler\Compiler; use App\Http\Controllers\Admin\Operations\FluidbookPreviewOperation; use App\Http\Middleware\CheckIfAdmin; +use App\Models\FluidbookHealthIssues; use App\Models\FluidbookPublication; use App\Models\FluidbookTheme; use Cubist\Backpack\Http\Controllers\Base\XSendFileController; @@ -134,7 +135,8 @@ trait PreviewOperation $relayPath = $dest . '/' . $path; if (!file_exists($relayPath)) { - throw new \Exception($relayPath . ' not found'); + FluidbookHealthIssues::addIssue($fluidbook->id, FluidbookHealthIssues::TYPE_MISSING_FILE, $path); + abort(404, __('Ce fichier n\'existe pas')); } return XSendFileController::sendfile($relayPath); } diff --git a/app/Models/FluidbookHealthIssues.php b/app/Models/FluidbookHealthIssues.php new file mode 100644 index 000000000..bffc9faaf --- /dev/null +++ b/app/Models/FluidbookHealthIssues.php @@ -0,0 +1,40 @@ + 'fluidbook-health', + 'singular' => 'problème', + 'plural' => 'problèmes']; + + protected static $_permissionBase = 'fluidbook-health-issue'; + + public function setFields() + { + parent::setFields(); + + $this->addField('fluidbook', FluidbookID::class, __('Fluidbook')); + $this->addField('type', Integer::class, __('Type')); + $this->addField('data', Text::class, __('Détails')); + } + + public static function addIssue($fluidbookId, $type, $data = '') + { + + $issue = self::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->where('type', $type)->where('data', $data)->first(); + if (!$issue) { + $issue = new self(['fluidbook' => $fluidbookId, 'type' => $type, 'data' => $data]); + } + $issue->updateTimestamps(); + $issue->save(); + } +} -- 2.39.5