Merge branch 'trunk'

This commit is contained in:
Vincent BRIDIER 2025-11-19 14:28:31 +01:00
commit 05e1d60159
10 changed files with 104 additions and 28 deletions

View file

@ -0,0 +1,54 @@
<?php
namespace App\Console\Commands;
use App\Lib\ArcadiaLinkUtilities;
use App\Models\ArcadiaLink;
use App\Models\Media;
use Illuminate\Console\Command;
class ResendArcadiaLinkMedias extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'medias:resend-aracadia-links';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Resend files to Arcadia after Arcadia Link fix';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
// FIXME : Variabiliser la date
//$al = ArcadiaLink::where('created_at', '>=', '2025-10-23')->get();
foreach ($al as $error)
{
$media = Media::withTrashed()->find($error->media_id);
if ($error->arcadia_id === 0) {
ArcadiaLinkUtilities::create($media);
} else {
if (is_null($media->deleted_at)) {
ArcadiaLinkUtilities::update($media);
} else {
ArcadiaLinkUtilities::delete($media);
}
}
}
return Command::SUCCESS;
}
}

View file

@ -659,6 +659,12 @@ class MediaController extends Controller
]);
}
if ($media->statut === MediaStatut::brouillon) {
throw ValidationException::withMessages([
'media' => trans('Ce média n\'est pas publié. Veuillez sauvegarder pour enregistrer le statut.')
]);
}
MediaLinkWithArcadia::dispatch($user, $media);
return response()->json(true);

View file

@ -214,7 +214,7 @@ class UploadController extends Controller
'File guessed extensions :guessedExts does not match file name extension :extension',
[
'guessedExt' => $guessedExts,
'extension' => $mediaExtension,
'extension' => $mediaExtension->value,
]
)
]);

View file

@ -190,10 +190,14 @@ class UserController extends Controller
$marques = Marque::orderBy('libMarq', 'asc')->get();
$userSujets = $user->sujets;
$sujets = Sujet::where('sujet_dam', true)->orderBy('libelle', 'asc')->get();
$users = User::select(['id', 'email'])->whereIn('role', [
config('roles.const.ADMIN'), config('roles.const.CONTRIBUTEUR'),
config('roles.const.REDACTEUR')
])->where('id', '!=', $user->id)->get();
$users = User::select(['id', 'email'])
->whereIn('role', [
config('roles.const.ADMIN'), config('roles.const.CONTRIBUTEUR'),
config('roles.const.REDACTEUR')
])
->where('id', '!=', $user->id)
->orderBy('email')
->get();
return view('users.edit')->with([
'user' => $user, 'roles' => $roles, 'users' => $users,
'userMarques' => $userMarques, 'marques' => $marques,

View file

@ -132,7 +132,7 @@ class ArcadiaLinkUtilities
$storage->path($filename),
\ZipArchive::CREATE | \ZipArchive::OVERWRITE
);
$success = $zip->addFromString($xml, 'media.xml') && $success;
$success = $zip->addFromString('media.xml', $xml) && $success;
$success = $zip->addFile($media->full_path, $media->basename) && $success;
$success = $zip->close() && $success;
unset($zip);
@ -245,7 +245,7 @@ class ArcadiaLinkUtilities
->appendChild($dom->createCDATASection($formatModel['hauteur']));
$format->appendChild($dom->createElement('lien'))
->appendChild($dom->createCDATASection(\sprintf(
"%s/{$media->folder}{$media->uid}_%s.{$media->extension->value}",
"%s/{$media->folder}/{$media->uid}_%s.{$media->extension->value}",
config('app.url'),
$formatModel['libelle']
)));

View file

@ -267,8 +267,6 @@ class Media extends Model
/** @throws \RuntimeException */
$model->removeFromElasticSearch();
$model->deleteFilesOnAllPath();
});
}

View file

@ -20,7 +20,7 @@ class AppServiceProvider extends ServiceProvider
if (
in_array(config('app.env'), ['local', 'testing']) && config('app.bypassldap') && !app()->runningInConsole()
) {
Auth::loginUsingId(1);
Auth::loginUsingId(24);
}
// !!! Fuc**** Lab LDC exception OMG !!!

View file

@ -1,12 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- < XSD deviné, basé sur la BDD et cette seule affirmation "les 3 champs sont obligatoires" @author Jérémy Munsch jeremy.munsch@ldc.fr > -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="MEDIA_VISUEL">
<xs:complexType>
<xs:sequence>
<xs:element name="codeArcadia" type="_positive_unsigned_integer_without_leading_zeros" />
<xs:element name="code_DAM" type="_positive_unsigned_integer_without_leading_zeros"/>
<xs:element name="version" type="_positive_unsigned_integer_without_leading_zeros"/>
<xs:element name="version" minOccurs="1" nillable="true" >
<xs:simpleType>
<xs:union memberTypes="_positive_unsigned_integer_without_leading_zeros xs:string"/>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
@ -16,5 +18,4 @@
<xs:pattern value="[123456789]\d*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
</xs:schema>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- < XSD deviné, basé sur la BDD et cette seule affirmation "les 3 champs sont obligatoires" @author Jérémy Munsch jeremy.munsch@ldc.fr > -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="MEDIA_VISUEL">
<xs:complexType>
<xs:sequence>
<xs:element name="codeArcadia" type="_positive_unsigned_integer_without_leading_zeros" />
<xs:element name="code_DAM" type="_positive_unsigned_integer_without_leading_zeros"/>
<xs:element name="version" type="_positive_unsigned_integer_without_leading_zeros"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="_positive_unsigned_integer_without_leading_zeros">
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="[123456789]\d*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

@ -73,7 +73,7 @@
required
v-model="oMedia.type_vue_id"
:disabled="oMedia.isLocked || oMedia.arcadia_id !== null"
@change="updateVariantes"
@change="oMedia.variante_id = null"
>
<option :value="null" selected disabled>Sélectionnez un type de vue</option>
<option v-for="item in storeTypesvue" :value="item.codeTypevue">
@ -394,11 +394,9 @@ export default {
storeRole() {
return this.$store.state.role;
},
},
mounted() {
this.$nextTick(() => {
this.availableVariantes = this.storeTypesvariante;
})
availableVariantes() {
return this.storeTypesvariante.filter(e => e.typevue_id === this.oMedia.type_vue_id);
}
},
watch: {
marques() {
@ -428,7 +426,6 @@ export default {
}
},
searchMarques() {
console.log("search");
this.refreshMarques();
},
searchSocietes() {
@ -444,14 +441,9 @@ export default {
selectedSocietes: [],
searchMarques: "",
searchSocietes: "",
availableVariantes: [],
};
},
methods: {
updateVariantes(evt) {
this.oMedia.variante_id = null;
this.availableVariantes = this.storeTypesvariante.filter(e => e.typevue_id === this.oMedia.type_vue_id);
},
ArcadiaLink() {
if (this.oMedia.isDefault) {
$.fancyMessage({
@ -555,9 +547,10 @@ export default {
__DAM.methods.sessionTimedOut();
return;
}
const errorMessage = error.response.data.message ?? "Erreur lors de l'opération, merci d'actualiser la page.";
$.fancyMessage({
title: "Lier un média à Arcadia",
message: "Erreur lors de l'opération, merci d'actualiser la page.",
message: errorMessage,
type: "error",
});
console.error(error);