kotvalera83

MediaController

Jan 15th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.71 KB | None | 0 0
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Support\Facades\Storage;
  6. use App\Media;
  7. use App\PrintMedia;
  8. use App\MediaFiles;
  9. class MediaController extends Controller
  10. {
  11.     public function __construct() {
  12.         $this->middleware('auth');
  13.     }
  14.     public function index() {
  15.         if (!\Auth::user()->pode('Media', 'index')) return redirect('/');
  16.         $media = Media::orderBy('id', 'DESC')
  17.             ->has('media_parent', '=', 'null')->paginate(10);
  18.         return View('Admin.media.index', compact('media'));
  19.     }
  20.     public function create() {
  21.         if (!\Auth::user()->pode('Media', 'create')) return redirect('/');
  22.         $print_media = PrintMedia::orderBy('description', 'asc')->get()->pluck('description', 'id');
  23.         return View("Admin.media.create", compact('print_media'));
  24.     }
  25.     public function show($id) {
  26.         if (!\Auth::user()->pode('Media', 'show')) return redirect('/');
  27.         $media = Media::find($id);
  28.         return View('Admin.media.show', compact('media'));
  29.     }
  30.     public function edit($id) {
  31.         if (!\Auth::user()->pode('Media', 'edit')) return redirect('/');
  32.         $print_media = PrintMedia::orderBy('description', 'asc')->get()->pluck('description', 'id');
  33.         $media = Media::find($id);
  34.         return View('Admin.media.edit', compact('print_media', 'media'));
  35.     }
  36.     public function update(Request $request, $id) {
  37.         if (!\Auth::user()->pode('Media', 'edit')) return redirect('/');
  38.         $this->validate($request, Media::rules('PATCH', $id));
  39.         $data = $request->all();
  40.         $media = Media::find($id);
  41.         $file = $request->file('img_file');
  42.         if ($file) {
  43.             $data['img_file'] = $file->getClientOriginalName();
  44.             Storage::disk('s3')->put('/uploads/media/'.$id.'/'.$data['img_file'], file_get_contents($file), ['visibility' => 'public', 'Expires' => '1 year']);
  45.             Storage::disk('s3')->delete('/uploads/media/'.$id.'/'.$media->img_file);
  46.         } else {
  47.             $data['img_file'] = $media->img_file;
  48.         }
  49.         $media->fill($data)->save();
  50.         $this->save_media($request, $media);
  51.         return redirect(action('Admin\MediaController@show', $id));
  52.     }
  53.     public function destroy($id) {
  54.         if (!\Auth::user()->pode('Media', 'destroy')) return redirect('/');
  55.         $media = Media::find($id);
  56.         if ($media) {
  57.             if (count($media->media_files) > 0) {
  58.                 foreach ($media->media_files as $md) {
  59.                     $md_id = $md->media_id;
  60.                     $md->delete();
  61.                     $md = Media::find($md_id);
  62.                     if ($md) {
  63.                         $md->delete();
  64.                     }
  65.                 }
  66.             } else {
  67.                 $md = MediaFiles::where('media_id', $media->id)->first();
  68.                 if ($md) {
  69.                     $md->delete();
  70.                 }
  71.             }
  72.             $media->delete();
  73.         }
  74.         return redirect(action('Admin\MediaController@index'));
  75.     }
  76.     public function store(Request $request) {
  77.         if (!\Auth::user()->pode('Media', 'create')) return redirect('/');
  78.         $data = $request->all();
  79.         if ($data['media_id'] == 1) {
  80.             $this->validate($request, [
  81.                 'media_id' => 'required',
  82.                 'img_file' => 'max:100000|image'
  83.             ]);
  84.         } else {
  85.             $this->validate($request, Media::rules());
  86.         }
  87.         $file = $request->file('img_file');
  88.         $data['img_file'] = $file->getClientOriginalName();
  89.         $data['client_img_file'] = $file->getClientSize();
  90.         $media = Media::create($data);
  91.         Storage::disk('s3')->put('/uploads/media/'.$media->id.'/'.$media->img_file, file_get_contents($file), ['visibility' => 'public', 'Expires' => '1 year']);
  92.         $this->save_media($request, $media);
  93.         return redirect(action('Admin\MediaController@show', $media->id));
  94.     }
  95.     public function media_files() {
  96.         $md = null;
  97.         echo View('Admin.media_files._form', compact('md'))->render();
  98.     }
  99.     public function media_files_destroy($id) {
  100.         $media_files = MediaFiles::find($id);
  101.         if ($media_files) {
  102.             $media = Media::find($media_files->media->id);
  103.             if ($media) {
  104.                 $media->delete();
  105.             }
  106.             $media_files->delete();
  107.             return 'true';
  108.         }
  109.         return 'false';
  110.     }
  111.     /**
  112.      *
  113.      */
  114.     public function filter() {
  115.         if ($_GET['search_media'] != '') {
  116.             $media = Media::whereNotIn('id', MediaFiles::select('media_id')->get())
  117.                 ->where('media_id', 1)
  118.                 ->where(function ($q) {
  119.                     $q->where('id', $_GET['search_media'])
  120.                     ->orWhere('title', 'LIKE',  "%".$_GET['search_media']."%");
  121.                 })
  122.                 ->orderBy('id', 'desc')->get();
  123.         } else {
  124.             $media = Media::whereNotIn('id', MediaFiles::select('media_id')->get())
  125.                 ->where('media_id', 1)
  126.                 ->orderBy('id', 'desc')->get();
  127.         }
  128.         $field_name = isset($_GET['field_name']) ? $_GET['field_name'] : 'media_id';
  129.         echo view('Admin.media._filter_each', compact('media', 'field_name'))->render();
  130.     }
  131.     /**
  132.      * @return string
  133.      */
  134.     private function save_media(Request $request, $media) {
  135.         $data = $request->all();
  136.         $msg = "Saved successfully";
  137.         if (isset($request->media_files)) {
  138.             $i = 0;
  139.             $e = 0;
  140.             foreach ($request->media_files as $md) {
  141.                 if ($md->getClientSize() > 100000) {
  142.                     $e++;
  143.                     $msg = $e." Derived images greater than 100kb";
  144.                 } else {
  145.                     $media_d = Media::create(array(
  146.                         'img_file' => $md->getClientOriginalName(),
  147.                         'media_id' => $media->media_id,
  148.                         'client_img_file' => $md->getClientSize(),
  149.                         'title' => $media->title,
  150.                         'description' => $media->description,
  151.                         'status' => $media->status,
  152.                     ));
  153.                     Storage::disk('s3')->put('/uploads/media/'.$media_d->id.'/'.$media_d->img_file, file_get_contents($md), ['visibility' => 'public', 'Expires' => '1 year']);
  154.                     $media_files = MediaFiles::create(array(
  155.                         'media_id' => $media_d->id,
  156.                         'media_parent_id' => $media->id,
  157.                         'screen' => $data['screen'][$i],
  158.                     ));
  159.                 }
  160.                 $i++;
  161.             }
  162.         }
  163.         return $msg;
  164.     }
  165. }
Add Comment
Please, Sign In to add comment