]> _ Git - fluidbook-toolbox.git/commitdiff
wait #7870 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 1 Dec 2025 10:29:53 +0000 (11:29 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 1 Dec 2025 10:29:53 +0000 (11:29 +0100)
app/Models/FluidbookCollection.php

index 993f44be4bbb316eceffa95f6f3821ba41fbf125..9620f2cda98851a80705b2887bda28dd22e7e039 100644 (file)
@@ -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' => '<i class="las la-chart-area" title="' . __('Compteur de visites du lien de préview') . '"></i>', '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();
+        }
     }
 
     /**