193 lines
4.9 KiB
PHP
193 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use App\Sujet;
|
|
use App\Media;
|
|
use App\Typemedia;
|
|
use App\Langue;
|
|
use App\Copyright;
|
|
use App\Etiquette;
|
|
use App\Site;
|
|
use App\Marque;
|
|
|
|
class MediaController extends Controller
|
|
{
|
|
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
$sujets = Auth::user()->sujets;
|
|
$typemedias = Typemedia::all();
|
|
$langues = Langue::all();
|
|
$copyrights = Copyright::all();
|
|
$etiquettes = Etiquette::all();
|
|
$sites = Site::all();
|
|
$marques = Marque::all();
|
|
return view('media_manager')->with([
|
|
'sujets'=> $sujets,
|
|
'typemedias'=> $typemedias,
|
|
'langues'=> $langues,
|
|
'copyrights'=> $copyrights,
|
|
'etiquettes'=> $etiquettes,
|
|
'sites'=> $sites,
|
|
'marques'=> $marques,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Chargement des médias
|
|
*
|
|
*/
|
|
public function loadMedia(Request $request)
|
|
{
|
|
$response = array();
|
|
$dossier_id = $request->input('dossier_id');
|
|
$sujet_id = $request->input('sujet_id');
|
|
$offset = $request->input('offset');
|
|
$limit = $request->input('limit');
|
|
$orderField = $request->input('orderField');
|
|
$order = $request->input('order');
|
|
|
|
if($dossier_id == "0"){
|
|
$response['data'] = Media::where('sujet_id', $sujet_id)->whereNull('dossier_id')->with('Etiquette')->offset($offset)->limit($limit)->orderBy($orderField, $order)->get();
|
|
}else{
|
|
$response['data'] = Media::where('sujet_id', $sujet_id)->where('dossier_id', $dossier_id)->with('Etiquette')->offset($offset)->limit($limit)->orderBy($orderField, $order)->get();
|
|
}
|
|
if(Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')] )){
|
|
$response['draggable'] = true;
|
|
}else{
|
|
$response['draggable'] = false;
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Déplacement des médias
|
|
*
|
|
*/
|
|
public function moveMedia(Request $request)
|
|
{
|
|
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
|
$response = array();
|
|
$dossier_id = $request->input('dossier_id');
|
|
$data = $request->input('data');
|
|
$data = explode(",", $data);
|
|
foreach ($data as $key => $media_id) {
|
|
$media = Media::where('id', $media_id)->first();
|
|
if($media){
|
|
if($dossier_id > 0){
|
|
$media->dossier_id = $dossier_id;
|
|
}else{
|
|
$media->dossier_id = null;
|
|
}
|
|
$media->save();
|
|
}
|
|
}
|
|
|
|
return json_encode(true);
|
|
}
|
|
|
|
/**
|
|
* supprimer des médias
|
|
*
|
|
*/
|
|
public function removeMedia(Request $request)
|
|
{
|
|
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
|
|
|
$medias = $request->input('medias');
|
|
Media::destroy($medias);
|
|
|
|
return json_encode(true);
|
|
}
|
|
|
|
/**
|
|
* Obtenir toutes les informations d'un média
|
|
*
|
|
*/
|
|
public function getOneMedia(Request $request)
|
|
{
|
|
$response = array();
|
|
$media_id = $request->input('media_id');
|
|
$media = Media::where('id', $media_id)->with('sujet')->with('sites')->with('marques')->with('tags:libelle')->first();
|
|
if($media){
|
|
$response['data'] = $media;
|
|
foreach ($media->tags as $tag) {
|
|
$response['tags'][] = $tag->libelle;
|
|
}
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Sauvegarde toutes les informations d'un média
|
|
*
|
|
*/
|
|
public function saveMedia(Request $request)
|
|
{
|
|
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR'), config('roles.const.CONTRIBUTEUR')]);
|
|
$response = array();
|
|
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Sauvegarde toutes les informations d'un média
|
|
*
|
|
*/
|
|
public function applySticker(Request $request)
|
|
{
|
|
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR'), config('roles.const.CONTRIBUTEUR')]);
|
|
$response = array();
|
|
$medias = $request->input('medias');
|
|
$etiquette_id = $request->input('etiquette_id');
|
|
|
|
$etiquette = Etiquette::where('etiquette_id', $etiquette_id)->first();
|
|
$response = $etiquette;
|
|
if($etiquette){
|
|
foreach ($medias as $media_id) {
|
|
$media = Media::where('id', $media_id)->first();
|
|
if($media){
|
|
$media->etiquette_id = $etiquette_id;
|
|
$media->save();
|
|
}
|
|
}
|
|
}
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Sauvegarde une retouche photo
|
|
*
|
|
*/
|
|
public function editPhoto(Request $request)
|
|
{
|
|
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR'), config('roles.const.CONTRIBUTEUR')]);
|
|
$response = array();
|
|
$media_id = $request->input('media_id');
|
|
$image = $request->input('image');
|
|
preg_match("/data:image\/(.*?);/",$image,$image_extension); // extract the image extension
|
|
$image = preg_replace('/data:image\/(.*?);base64,/','',$image); // remove the type part
|
|
$image = str_replace(' ', '+', $image);
|
|
|
|
$media = Media::where('id', $media_id)->first();
|
|
if($media){
|
|
Storage::put($media->source, base64_decode($image));
|
|
$response = $media;
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
}
|