ldc-dam/app/Http/Controllers/MediaController.php

194 lines
4.9 KiB
PHP
Raw Normal View History

2019-05-22 17:10:16 +02:00
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
2019-05-22 17:10:16 +02:00
use App\Sujet;
2019-05-23 15:09:28 +02:00
use App\Media;
2019-06-17 09:22:10 +02:00
use App\Typemedia;
use App\Langue;
use App\Copyright;
use App\Etiquette;
use App\Site;
use App\Marque;
2019-05-22 17:10:16 +02:00
class MediaController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
2019-06-17 09:22:10 +02:00
$sujets = Auth::user()->sujets;
$typemedias = Typemedia::all();
$langues = Langue::all();
$copyrights = Copyright::all();
$etiquettes = Etiquette::all();
$sites = Site::all();
$marques = Marque::all();
2019-06-17 09:22:10 +02:00
return view('media_manager')->with([
'sujets'=> $sujets,
'typemedias'=> $typemedias,
'langues'=> $langues,
'copyrights'=> $copyrights,
'etiquettes'=> $etiquettes,
'sites'=> $sites,
'marques'=> $marques,
2019-06-17 09:22:10 +02:00
]);
2019-05-22 17:10:16 +02:00
}
2019-05-23 15:09:28 +02:00
/**
* 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');
2019-05-23 15:09:28 +02:00
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();
2019-05-23 15:09:28 +02:00
}else{
$response['data'] = Media::where('sujet_id', $sujet_id)->where('dossier_id', $dossier_id)->with('Etiquette')->offset($offset)->limit($limit)->orderBy($orderField, $order)->get();
2019-06-17 09:22:10 +02:00
}
if(Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')] )){
$response['draggable'] = true;
}else{
$response['draggable'] = false;
2019-05-23 15:09:28 +02:00
}
return json_encode($response);
}
/**
* Déplacement des médias
*
*/
public function moveMedia(Request $request)
{
2019-06-17 09:22:10 +02:00
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
2019-05-23 15:09:28 +02:00
$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);
}
2019-05-22 17:10:16 +02:00
2019-06-17 09:22:10 +02:00
/**
* 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();
2019-06-17 09:22:10 +02:00
if($media){
$response['data'] = $media;
foreach ($media->tags as $tag) {
$response['tags'][] = $tag->libelle;
}
2019-06-17 09:22:10 +02:00
}
2019-06-17 09:22:10 +02:00
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);
}
2019-05-22 17:10:16 +02:00
}