diff --git a/app/Http/Controllers/CommonController.php b/app/Http/Controllers/CommonController.php
index 6a766d3..da7e301 100644
--- a/app/Http/Controllers/CommonController.php
+++ b/app/Http/Controllers/CommonController.php
@@ -39,7 +39,8 @@ class CommonController extends Controller
})->with('sujet')->get();
return view('home')->with([
- 'sujets' => $sujets, 'recherches' => $recherches,
+ 'sujets' => $sujets,
+ 'recherches' => $recherches,
'dossiers' => $dossiers
]);
}
@@ -54,8 +55,10 @@ class CommonController extends Controller
{
/** @var \App\Models\User $user */
$user = auth()->user();
- Mail::to(env('MAIL_ADMIN_ADDRESS', "informatique.internet@ldc.fr"))
- ->send(new ContactMail(ContactType::from($request->type), $request->url, $request->message, $user));
+ foreach (config('mail.contactsList.admin') as $mail) {
+ Mail::to($mail)
+ ->send(new ContactMail(ContactType::from($request->type), $request->url, $request->message, $user));
+ }
return response()->json(['status' => 'OK']);
}
diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php
index 1f71574..2ff8127 100644
--- a/app/Http/Controllers/MediaController.php
+++ b/app/Http/Controllers/MediaController.php
@@ -102,7 +102,7 @@ class MediaController extends Controller
$textSearch,
$filters,
intval(Dossier::where('id', $dossier_id)->exists() ?
- $dossier_id : (in_array($dossier_id, [-1, 0]) ? $dossier_id : -1))
+ $dossier_id : (in_array($dossier_id, [-1, 0]) ? $dossier_id : -1))
);
}
@@ -124,7 +124,7 @@ class MediaController extends Controller
'etiquettes' => $etiquettes,
'societes' => $societes,
'marques' => $marques,
- 'currentFolder' => $dossier_id,
+ 'currentFolder' => Dossier::query()->where('id', $dossier_id)->first() ?? $dossier_id,
'currentSujet' => optional($sujet)->codeSujet ?? \optional($sujets->first())->codeSujet,
'currentFilters' => json_encode($filters),
'paniers' => $paniers,
@@ -236,8 +236,8 @@ class MediaController extends Controller
$response['isDepot'] = $isDepot;
$response['isCAQuery'] = $searchText &&
- strpos($searchText, '=') !== false &&
- \strval(collect(explode('=', $searchText))->get(0)) === 'ca';
+ strpos($searchText, '=') !== false &&
+ \strval(collect(explode('=', $searchText))->get(0)) === 'ca';
$response['role'] = $user->role;
@@ -262,7 +262,7 @@ class MediaController extends Controller
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Media> */
$mediaList = Media::whereIn('id', collect($request->mediaList)->pluck('id'))
- ->where('isLocked', false)->get();
+ ->where('isLocked', false)->get();
$destinationDossierId = \intval($request->dossier_id);
@@ -346,7 +346,7 @@ class MediaController extends Controller
});
} catch (ModelNotFoundException | \RuntimeException $e) {
return response()->json($e->getMessage(), 500);
- }//end try
+ } //end try
}
/**
@@ -416,7 +416,7 @@ class MediaController extends Controller
'status' => false,
'error' => trans('Une erreur est survenue veuillez réessayer')
]);
- }//end try
+ } //end try
}
/**
@@ -446,19 +446,6 @@ class MediaController extends Controller
$clonedMedia = $media->replicate();
- $media->articles->map(function (Article $article) use ($clonedMedia) {
- $clonedMedia->articles()->attach($article);
- });
- $media->marques->map(function (Marque $marque) use ($clonedMedia) {
- $clonedMedia->marques()->attach($marque);
- });
- $media->societes->map(function (Societe $societe) use ($clonedMedia) {
- $clonedMedia->societes()->attach($societe);
- });
- $media->tags->map(function (Tag $tag) use ($clonedMedia) {
- $clonedMedia->tags()->attach($tag);
- });
-
/** @var \Illuminate\Filesystem\FilesystemAdapter */
$storage = Storage::disk('media');
@@ -498,11 +485,27 @@ class MediaController extends Controller
// ---- Creation des vignettes en lien avec le sujet du média
$clonedMedia->createSubjectThumbnails();
+ $clonedMedia->isDuplicate = true;
+
$clonedMedia->saveOrFail();
+ // Manage relations after the model has been saved.
+ $media->articles->map(function (Article $article) use ($clonedMedia) {
+ $clonedMedia->articles()->attach($article);
+ });
+ $media->marques->map(function (Marque $marque) use ($clonedMedia) {
+ $clonedMedia->marques()->attach($marque);
+ });
+ $media->societes->map(function (Societe $societe) use ($clonedMedia) {
+ $clonedMedia->societes()->attach($societe);
+ });
+ $media->tags->map(function (Tag $tag) use ($clonedMedia) {
+ $clonedMedia->tags()->attach($tag);
+ });
+
/** @throws \RuntimeException */
- $clonedMedia->addToElasticSearch();
+ $clonedMedia->addToIndex();
// * Get props inserted by DB.
$clonedMedia->refresh();
@@ -751,8 +754,8 @@ class MediaController extends Controller
$history = Historique::whereHas('media', function ($q) use ($media) {
$q->whereId($media->id);
})->with('user')
- ->orderBy('created_date', 'DESC')
- ->get();
+ ->orderBy('created_date', 'DESC')
+ ->get();
return \response()->json([
'history' => $history,
'vignettes' => $this->getVignettesByMedia($media)
@@ -1062,9 +1065,9 @@ class MediaController extends Controller
];
$sys_extension = in_array($media->extension, [
- MediaExtension::pdf,
- MediaExtension::ai,
- MediaExtension::psd
+ MediaExtension::pdf,
+ MediaExtension::ai,
+ MediaExtension::psd
]) ? MediaExtension::png : $media->extension->value;
$vignettes['preview'] = [
diff --git a/app/Http/Controllers/PanierController.php b/app/Http/Controllers/PanierController.php
index 0788fbf..1b44948 100644
--- a/app/Http/Controllers/PanierController.php
+++ b/app/Http/Controllers/PanierController.php
@@ -68,6 +68,8 @@ class PanierController extends Controller
$request->mediaList
));
+ Media::flushQueryCache();
+
return response()->json();
}
@@ -151,7 +153,7 @@ class PanierController extends Controller
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Format> $formats */
$formats = Format::withoutGlobalScope('App\Scopes\SystemScope')
- ->where('system', true)->get();
+ ->where('system', true)->get();
return view('panier.show')->with([
'panier' => $panier,
'formats' => $formats,
diff --git a/app/Http/Controllers/UploadController.php b/app/Http/Controllers/UploadController.php
index c6954c5..9a2b991 100644
--- a/app/Http/Controllers/UploadController.php
+++ b/app/Http/Controllers/UploadController.php
@@ -15,6 +15,7 @@ use App\Models\Sujet;
use App\Models\TypeMedia;
use App\Models\User;
use App\Traits\Http\HandlesMedia;
+use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;
@@ -97,7 +98,7 @@ class UploadController extends Controller
// 400 instead of 422 is for resumablejs to handle properly.
return \response()->json($e->errors(), 400);
}
- }//end if
+ } //end if
// We are in chunk mode, lets send the current progress.
/** @var AbstractHandler $handler */
@@ -143,9 +144,9 @@ class UploadController extends Controller
$this->validateUploadedFile($uplodedFile);
/** @var \App\Models\Media */
- $media = Media::whereId($request->media_id)
- ->whereHas('sujet', function ($q) use ($sujet) {
- $q->whereId($sujet->id);
+ $media = Media::query()->whereId($request->media_id)
+ ->whereHas('sujet', function (Builder $q) use ($sujet) {
+ $q->where('codeSujet', $sujet->codeSujet);
})->whereHas('dossier', function ($q) use ($dossier) {
$q->whereId($dossier->id);
})->firstOrNew();
@@ -156,7 +157,7 @@ class UploadController extends Controller
// 400 instead of 422 is for resumablejs to handle properly.
return \response()->json($e->errors(), 400);
}
- }//end if
+ } //end if
// We are in chunk mode, lets send the current progress.
/** @var AbstractHandler $handler */
@@ -341,6 +342,8 @@ class UploadController extends Controller
$media->saveOrFail();
+ Media::flushQueryCache();
+
// * Get props inserted by DB.
return response()->json($media->refresh());
});
diff --git a/app/Models/Media.php b/app/Models/Media.php
index 41e49eb..fb02c03 100644
--- a/app/Models/Media.php
+++ b/app/Models/Media.php
@@ -39,14 +39,27 @@ class Media extends Model
*/
public $cacheDriver = 'redis';
+ /**
+ * Is the model a duplicate of another (only true before we save it in database)
+ *
+ * @var boolean
+ */
+ public $isDuplicate = false;
+
/**
* The relations to eager load on every query.
*
* @var array
*/
protected $with = [
- 'owner', 'tags', 'etiquette', 'articles', 'sujet',
- 'typeMedia', 'societes', 'marques'
+ 'owner',
+ 'tags',
+ 'etiquette',
+ 'articles',
+ 'sujet',
+ 'typeMedia',
+ 'societes',
+ 'marques'
];
/**
@@ -209,8 +222,10 @@ class Media extends Model
$user = auth()->user();
MediaCreated::dispatch($user, $model);
- /** @throws \RuntimeException */
- $model->addToElasticSearch();
+ if (empty($model->isDuplicate)) {
+ /** @throws \RuntimeException */
+ $model->addToElasticSearch();
+ }
});
static::updating(function (self $model) {
if ($model->statut === MediaStatut::brouillon and $model->arcadia_id) {
@@ -723,7 +738,7 @@ class Media extends Model
// * create preview
/** @var \App\Models\Format $format */
$format = Format::withoutGlobalScope('App\Scopes\SystemScope')
- ->where('libelle', '=', 'preview')->firstOrFail();
+ ->where('libelle', '=', 'preview')->firstOrFail();
if ($this->extension == MediaExtension::gif) {
if ($this->largeur >= $format->largeur || $this->hauteur >= $format->hauteur || $this->largeur == "") {
@@ -753,7 +768,7 @@ class Media extends Model
// * create thumb
/** @var \App\Models\Format $format */
$format = Format::withoutGlobalScope('App\Scopes\SystemScope')
- ->where('libelle', '=', 'thumb')->firstOrFail();
+ ->where('libelle', '=', 'thumb')->firstOrFail();
if ($this->extension != MediaExtension::png) {
$im->setImageBackgroundColor('#ffffff');
$im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_REMOVE);
diff --git a/config/mail.php b/config/mail.php
index 025cb88..1f5af32 100644
--- a/config/mail.php
+++ b/config/mail.php
@@ -118,7 +118,8 @@ return [
// * Contacts List
'contactsList' => [
'invalidXml' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_INVALID_XML', 'equipe.web@ldc.fr')),
- 'serviceweb' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr'))
+ 'serviceweb' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')),
+ 'admin' => explode(',', env('MAIL_ADMIN')),
],
];
diff --git a/resources/js/components/media-manager/MmActionsComponent.vue b/resources/js/components/media-manager/MmActionsComponent.vue
index 984ef2d..cd8bf4e 100644
--- a/resources/js/components/media-manager/MmActionsComponent.vue
+++ b/resources/js/components/media-manager/MmActionsComponent.vue
@@ -163,8 +163,8 @@
-
-
-
+
+
+
+
@endsection