]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6069 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 23 Jun 2023 14:09:11 +0000 (16:09 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 23 Jun 2023 14:09:11 +0000 (16:09 +0200)
app/Fields/FluidbookIDOptionnal.php [deleted file]
app/Fields/FluidbookV3ID.php [new file with mode: 0644]
app/Models/FluidbookPublication.php

diff --git a/app/Fields/FluidbookIDOptionnal.php b/app/Fields/FluidbookIDOptionnal.php
deleted file mode 100644 (file)
index 25a5fb9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace App\Fields;
-
-class FluidbookIDOptionnal extends FluidbookID
-{
-    public function getOptions()
-    {
-        return array_merge(['0' => '-'], parent::getOptions());
-    }
-}
diff --git a/app/Fields/FluidbookV3ID.php b/app/Fields/FluidbookV3ID.php
new file mode 100644 (file)
index 0000000..821b4fb
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Fields;
+
+use App\Models\FluidbookPublication;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Util\PHP;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\DB;
+
+class FluidbookV3ID extends SelectFromArray
+{
+    public function getOptions()
+    {
+        $u = backpack_user();
+        if ($u) {
+            $cacheKey = 'fluidbok_v3id_' . $u->id;
+            //Cache::forget($cacheKey);
+            return Cache::remember($cacheKey, 600, function () use ($u) {
+                $res = [];
+
+                $q = DB::table('fluidbook_publication')->where('id', '>=', 30000)->where('created_ok', '1')->orderBy('id', 'desc');
+                if (!$u->hasPermissionTo('fluidbook-publication:admin')) {
+                    $q->whereIn('owner', explode(',', $u->e1_ws_rights));
+                }
+                $books = $q->get();
+
+                foreach ($books as $book) {
+                    $res[$book->id] = $book->id . ' | ' . $book->c_title . ' | ' . mb_strtoupper($book->locale);
+                }
+                return $res;
+            });
+        }
+
+        return [];
+    }
+}
index 3e08e8dc2bb1eb592244a908fc11ca0069ad7550..8f8b6b63872611e50cf6d8d1a0ceecbca60cdecc 100644 (file)
@@ -10,6 +10,7 @@ use App\Fields\FluidbookID;
 use App\Fields\FluidbookIDOptionnal;
 use App\Fields\FluidbookLocale;
 use App\Fields\FluidbookStatus;
+use App\Fields\FluidbookV3ID;
 use App\Fields\User;
 use App\Fluidbook\Compiler\Compiler;
 use App\Fluidbook\Farm;
@@ -177,7 +178,7 @@ class FluidbookPublication extends ToolboxSettingsModel
 
         $this->addField('section_composition', FormBigSection::class, __('Composition'));
         $this->addField('composition_fluidbook', Checkbox::class, __('Utiliser la composition d\'un autre fluidbook'), ['default' => false]);
-        $this->addField('composition_fluidbook_id', FluidbookID::class, __('Utiliser la composition d\'un autre fluidbook'), ['when' => ['composition_fluidbook' => 1]]);
+        $this->addField('composition_fluidbook_id', FluidbookV3ID::class, __('Utiliser la composition d\'un autre fluidbook'), ['excluded_options' => $this->id, 'when' => ['composition_fluidbook' => 1]]);
         $this->addField('composition_fluidbook_links', Checkbox::class, __('Utiliser également les liens de ce fluidbook'), ['default' => true, 'when' => ['composition_fluidbook' => 1]]);
         $this->addField('page_numbers', Hidden::class, __('Numérotation'));
         $this->addField('composition', FluidbookComposition::class, __('Composition'), ['when' => ['composition_fluidbook' => 0]]);
@@ -701,7 +702,7 @@ class FluidbookPublication extends ToolboxSettingsModel
     public function replicateFull(array $except = null)
     {
         $new = $this->_baseReplicate($except);
-        if (!$this->composition_fluidbook) {
+        if (!$this->composition_fluidbook && $this->id >= 30000) {
             $new->composition_fluidbook = true;
             $new->composition_fluidbook_id = $this->id;
             $new->composition_fluidbook_links = true;