--- /dev/null
+<?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 [];
+ }
+}
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;
$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]]);
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;