From a09a68f417182b18e1be06f0d9c99c47ddc19ad0 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 24 Nov 2023 12:08:06 +0100 Subject: [PATCH] wait #6513 @0.5 --- app/Models/FluidbookCollection.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index baa03cace..fa4a74be1 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -17,12 +17,14 @@ use App\SubForms\CollectionPublication; use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple; use Cubist\Backpack\Magic\Fields\Checkbox; use Cubist\Backpack\Magic\Fields\ExternalPath; +use Cubist\Backpack\Magic\Fields\FilesOrURL; use Cubist\Backpack\Magic\Fields\Hidden; use Cubist\Backpack\Magic\Fields\Integer; use Cubist\Backpack\Magic\Fields\SelectFromArray; use Cubist\Backpack\Magic\Fields\Text; use Cubist\Util\Files\Files; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Auth; // __('!! Collections de fluidbooks') @@ -75,9 +77,25 @@ class FluidbookCollection extends ToolboxStatusModel $this->addField('publications', BunchOfFieldsMultiple::class, __('Publications'), ['bunch' => CollectionPublication::class, 'edit_label' => '%fluidbook > %dir']); $this->addField('install', ExternalPath::class, 'Installer sur un serveur externe', ['default' => '', 'fake' => true, 'translatable' => false, 'store_in' => 'settings', 'servers_model' => FluidbookExternalInstallServer::class, ['when' => ['type' => ['export', 'export_multilang']]]]); $this->addField('override_settings', BunchOfFieldsMultiple::class, __('Redéfinir les paramètres lors de l\'export'), ['bunch' => Fluidbook_Setting::class]); + $this->addField('linksAssets', FilesOrURL::class, __('Charger ou remplacer des assets sur tous les fluidbooks de la collection'), ['hint' => __('Cela écrasera les fichiers sur tous les fluidbooks de la collection si ils portent le même nom d\'un asset chargé ici')]); $this->addField('visits_counter', Integer::class, 'Compteur de visites', ['can' => 'fluidbook-collection:write', 'read_only' => true, 'default' => 0, 'column' => true, 'column_label' => '', 'searchLogic' => false]); } + + public function uploadFreeFile($uploadedFile, $attribute, $operation = 'move') + { + $field = $this->getField($attribute); + if (!$field instanceof FilesOrURL) { + throw new \Exception('Field must be FilesOrURL'); + } + foreach ($this->getPageData()->publications as $publication) { + /** @var FluidbookPublication $fb */ + $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']); + $res = $fb->uploadFreeFile($uploadedFile, $attribute, 'copy'); + } + return $res; + } + public function getFinalPath() { return Files::mkdir(protected_path('fluidbookcollection/final/' . $this->id)); -- 2.39.5