arcadia_id === NULL) return; self::convert(self::getXML($media, "M"), $media); } public static function delete($media) { if ($media->arcadia_id === NULL) return; $dom = new DOMDocument('1.0','UTF-8'); $dom->formatOutput = true; $root = $dom->createElement('MEDIA_VISUEL'); $dom->appendChild($root); $root->appendChild($dom->createElement('codeArcadia'))->appendChild($dom->createCDATASection( "$media->arcadia_id")); $root->appendChild($dom->createElement('code_DAM'))->appendChild($dom->createCDATASection( "$media->id")); $root->appendChild( $dom->createElement('TypeMouvement'))->appendChild($dom->createCDATASection( "S")); $xml = $dom->saveXML(); self::convert($xml, $media); } public static function reactivate($media) { if ($media->arcadia_id === NULL) return; $dom = new DOMDocument('1.0','UTF-8'); $dom->formatOutput = true; $root = $dom->createElement('MEDIA_VISUEL'); $dom->appendChild($root); $root->appendChild($dom->createElement('codeArcadia'))->appendChild($dom->createCDATASection( "$media->arcadia_id")); $root->appendChild($dom->createElement('code_DAM'))->appendChild($dom->createCDATASection( "$media->id")); $root->appendChild( $dom->createElement('TypeMouvement'))->appendChild($dom->createCDATASection( "R")); $xml = $dom->saveXML(); self::convert($xml, $media); } private static function convert($xml, $media) { $uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)); Storage::disk('arcadia_link_s')->put("$uid.xml", $xml); self::compress($media->folder, $media->uid, $media->extension, $uid); } private static function compress($folder, $name, $extension, $uid) { try { $a = new \PharData( storage_path('arcadia_link/send') ."/$uid.tmp"); // ADD FILES TO archive.tar FILE $a->addFile(storage_path('arcadia_link/send') . "/$uid.xml", 'media.xml'); $a->addFile(public_path() . "/$folder$name.$extension", "$name.$extension"); // COMPRESS archive.tar FILE. COMPRESSED FILE WILL BE archive.tar.gz $a->compress(\Phar::NONE); // NOTE THAT BOTH FILES WILL EXISTS. SO IF YOU WANT YOU CAN UNLINK archive.tar unset($a); unlink(storage_path('arcadia_link/send') . "/$uid.tmp"); unlink(storage_path('arcadia_link/send') . "/$uid.xml"); } catch (Exception $e) { //echo "Exception : " . $e; // TODO : Envoi mail Log Log::emergency("Erreur création .tar : $e (Traits/ArcadiaLink)"); } } private static function getXML($media, $mouvement) { $refKey = self::getRefKey($media); $formats = self::getFormats(); $dom = new DOMDocument('1.0','UTF-8'); $dom->formatOutput = true; $root = $dom->createElement('MEDIA_VISUEL'); $dom->appendChild($root); $root->appendChild($dom->createElement('codeArcadia'))->appendChild($dom->createCDATASection( "$media->arcadia_id")); $root->appendChild($dom->createElement('code_DAM'))->appendChild($dom->createCDATASection( "$media->id")); $root->appendChild( $dom->createElement('TypeMouvement'))->appendChild($dom->createCDATASection( "$mouvement")); $cleRef = $root->appendChild( $dom->createElement('cle_Referentiel')); foreach ($refKey as $k) { $cleRef->appendChild( $dom->createElement('id'))->appendChild($dom->createCDATASection( "$k->id")); } $root->appendChild( $dom->createElement('libExtension'))->appendChild($dom->createCDATASection( "$media->extension")); $root->appendChild( $dom->createElement('nbPxLargeur'))->appendChild($dom->createCDATASection( "$media->largeur")); $root->appendChild( $dom->createElement('largeurMm'))->appendChild($dom->createCDATASection( "$media->largeur_mm")); $root->appendChild( $dom->createElement('nbPxHauteur'))->appendChild($dom->createCDATASection( "$media->hauteur")); $root->appendChild( $dom->createElement('hauteurMm'))->appendChild($dom->createCDATASection( "$media->hauteur_mm")); $root->appendChild( $dom->createElement('pppLargeur'))->appendChild($dom->createCDATASection( "$media->resolution")); $root->appendChild( $dom->createElement('version'))->appendChild($dom->createCDATASection( "$media->version")); $root->appendChild( $dom->createElement('codeTypeMedia'))->appendChild($dom->createCDATASection( "$media->typemedia_id")); $root->appendChild( $dom->createElement('codeTypeVue'))->appendChild($dom->createCDATASection( "$media->typevue_id")); $root->appendChild( $dom->createElement('commentaire'))->appendChild($dom->createCDATASection( "$media->commentaire")); $root->appendChild( $dom->createElement('codeSujet'))->appendChild($dom->createCDATASection( "$media->sujet_id")); $root->appendChild( $dom->createElement('langue'))->appendChild($dom->createCDATASection( "$media->langue_id")); $root->appendChild( $dom->createElement('copyright'))->appendChild($dom->createCDATASection( "$media->copyright_id")); $root->appendChild( $dom->createElement('codeVariante'))->appendChild($dom->createCDATASection( "$media->variante_id")); $root->appendChild( $dom->createElement('dateCreation'))->appendChild($dom->createCDATASection( "$media->created_at")); $root->appendChild( $dom->createElement('dateModification'))->appendChild($dom->createCDATASection( "$media->updated_at")); $root->appendChild( $dom->createElement('datePublication'))->appendChild($dom->createCDATASection( "$media->published_at")); $root->appendChild( $dom->createElement('libelle'))->appendChild($dom->createCDATASection( "$media->libelle")); $root->appendChild( $dom->createElement('NomFichier'))->appendChild($dom->createCDATASection( "$media->uid.$media->extension")); $mediaFormat = $root->appendChild( $dom->createElement('formats')); foreach ($formats as $k) { $format = $mediaFormat->appendChild( $dom->createElement('format')); $format->appendChild( $dom->createElement('id'))->appendChild($dom->createCDATASection( $k['id'])); $format->appendChild( $dom->createElement('libelle'))->appendChild($dom->createCDATASection( $k['libelle'])); $format->appendChild( $dom->createElement('extension'))->appendChild($dom->createCDATASection("$media->extension")); $format->appendChild( $dom->createElement('largeur'))->appendChild($dom->createCDATASection( $k['largeur'])); $format->appendChild( $dom->createElement('hauteur'))->appendChild($dom->createCDATASection( $k['hauteur'])); $format->appendChild( $dom->createElement('lien'))->appendChild($dom->createCDATASection(env('APP_URL') . "/$media->folder$media->uid" . "_" . $k['libelle'] . ".$media->extension")); } return $dom->saveXML(); } private static function getRefKey($media) { switch ($media->sujet_id){ case 1: return $media->articles()->get(); break; case 2: return $media->marques()->get(); break; case 4: return $media->societes()->get(); break; default: return []; } } private static function getFormats() { return Format::withoutGlobalScope(SystemScope::class)->where('system', '=', '1')->get(); } }