From 8b84c028c8952e44f1a815f6560c42e3f5c7d40d Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Mon, 1 Dec 2025 11:29:53 +0100 Subject: [PATCH] wait #7870 @1 --- app/Models/FluidbookCollection.php | 57 +++++++++++++++++------------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 993f44be4..9620f2cda 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -97,8 +97,11 @@ class FluidbookCollection extends ToolboxStatusModel 'can' => 'fluidbook-collection:admin', ] ); + $this->addField('status_update_all', Checkbox::class, __('Synchroniser le status et le propriétaire de tous les fluidbooks'), ['default' => false]); + $this->addOwnerField(); + $this->addField('hash', Hidden::class); $this->addField('visits_counter', Integer::class, __('Compteur de visites'), ['can' => 'fluidbook-collection:admin', 'read_only' => true, 'default' => 0, 'column' => true, 'column_label' => '', 'searchLogic' => false]); $this->addField('section_export', FormBigSection::class, __('Paramètres d\'export'), ['can' => 'fluidbook-collection:admin']); @@ -216,14 +219,15 @@ class FluidbookCollection extends ToolboxStatusModel } } - public function getFluidbooksID(){ - $res=[]; - $fluidbooks=$this->publications; - if(!is_array($fluidbooks)){ - $fluidbooks=json_decode($fluidbooks,true); + public function getFluidbooksID() + { + $res = []; + $fluidbooks = $this->publications; + if (!is_array($fluidbooks)) { + $fluidbooks = json_decode($fluidbooks, true); } foreach ($fluidbooks as $fluidbook) { - $res[]=$fluidbook['fluidbook']; + $res[] = $fluidbook['fluidbook']; } return array_unique($res); } @@ -232,35 +236,38 @@ class FluidbookCollection extends ToolboxStatusModel { parent::setStatus($newStatus); - foreach ($this->getPageData()->publications as $publication) { - /** @var FluidbookPublication $fb */ - $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']); - if (null === $fb) { - continue; + if ($this->status_update_all) { + foreach ($this->getPageData()->publications as $publication) { + /** @var FluidbookPublication $fb */ + $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']); + if (null === $fb) { + continue; + } + $fb->setOwner($this->owner); + $fb->setStatus($newStatus); + $fb->saveQuietlyWithoutFlushingCache(); } - $fb->setOwner($this->owner); - $fb->setStatus($newStatus); - $fb->saveQuietlyWithoutFlushingCache(); + RefreshUsersTree::dispatchSync(); } - - RefreshUsersTree::dispatchSync(); } public function setOwner($owner) { parent::setOwner($owner); - foreach ($this->getPageData()->publications as $publication) { - $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']); - if (null === $fb) { - continue; + if ($this->status_update_all) { + foreach ($this->getPageData()->publications as $publication) { + $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']); + if (null === $fb) { + continue; + } + $fb->setStatus($this->status); + $fb->setOwner($owner); + $fb->saveQuietlyWithoutFlushingCache(); } - $fb->setStatus($this->status); - $fb->setOwner($owner); - $fb->saveQuietlyWithoutFlushingCache(); - } - RefreshUsersTree::dispatchSync(); + RefreshUsersTree::dispatchSync(); + } } /** -- 2.39.5