����JFIF��x�x����'403WebShell
403Webshell
Server IP : 66.29.137.217  /  Your IP : 3.142.243.141
Web Server : LiteSpeed
System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : gltevjme ( 1095)
PHP Version : 7.0.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/gltevjme/gle.gltechlimited.com/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/gltevjme/gle.gltechlimited.com/app/Http/Controllers/LiveTvController.php
<?php

namespace App\Http\Controllers;

use App\Actor;
use App\AudioLanguage;
use App\Director;
use App\Genre;
use App\Menu;
use App\MenuVideo;
use App\Movie;
use App\MovieSeries;
use App\Package;
use App\Subtitles;
use App\User;
use App\Videolink;
use App\WatchHistory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Intervention\Image\Facades\Image;
use Yajra\DataTables\Facades\DataTables;


class LiveTvController extends Controller
{
  

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public function __construct()
    {
        $this->middleware('permission:livetv.view', ['only' => ['index']]);
        $this->middleware('permission:livetv.create', ['only' => ['create', 'store']]);
        $this->middleware('permission:livetv.edit', ['only' => ['edit', 'update', 'status_update']]);
        $this->middleware('permission:livetv.delete', ['only' => ['destroy', 'bulk_delete']]);
    }
    public function index(Request $request)
    {

        if (Auth::user()->is_assistant == 1) {
            if ($request->search != null) {
                $movies = Movie::where('title', 'like', '%' . $request->search . '%')->select('id', 'title', 'detail', 'slug', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'genre_id', 'is_kids', 'created_by', 'publish_year')->where('live', 1)
                ->where('created_by', Auth::user()->id)->orderBy('id', 'DESC')->paginate(12);
            } else {
                $movies = Movie::select('id', 'title', 'detail', 'slug', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'genre_id', 'is_kids', 'created_by', 'publish_year')->where('live', 1)
                ->where('created_by', Auth::user()->id)->orderBy('id', 'DESC')->paginate(12);
            }

        } else {
            if ($request->search != null) {
                $movies = Movie::where('title', 'like', '%' . $request->search . '%')->select('id', 'title', 'detail', 'slug', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'is_kids', 'status', 'genre_id', 'created_by', 'publish_year')->where('created_by', Auth::user()->id)->where('live', 1)->where('status', 1)->orderBy('id', 'DESC')->paginate(12);
            } else {
                $movies = Movie::select('id', 'title', 'detail', 'slug', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'is_kids', 'genre_id', 'created_by', 'publish_year')->where('created_by', Auth::user()->id)->where('live', 1)->where('status', 1)->orderBy('id', 'DESC')->paginate(12);
            }

        }

        return view('admin.livetv.index', compact('movies'));
    }

    public function addedLiveTv(Request $request)
    {

        $movies = DB::table('movies')->select('id', 'title', 'slug', 'thumbnail', 'poster', 'rating', 'tmdb', 'featured', 'status', 'is_kids', 'created_by')->where('status', 0)->where('live', 1)->get();

        if ($request->ajax()) {
            return DataTables::of($movies)
                ->addIndexColumn()
                ->addColumn('checkbox', function ($movies) {
                    $html = '<div class="inline">
      <input type="checkbox" form="bulk_delete_form" class="filled-in material-checkbox-input" name="checked[]" value="' . $movies->id . '" id="checkbox' . $movies->id . '">
      <label for="checkbox' . $movies->id . '" class="material-checkbox"></label>
      </div>';

                    return $html;
                })
                ->addColumn('thumbnail', function ($movies) {
                    if ($movies->thumbnail) {
                        $thumnail = '<img src="' . asset('/images/movies/thumbnails/' . $movies->thumbnail) . '" alt="Pic" width="70px" class="img-responsive">';
                    } else if ($movies->poster) {
                        $thumnail = '<img src="' . asset('/images/movies/posters/' . $movies->poster) . '" alt="Pic" width="70px" class="img-responsive">';
                    } else {
                        $thumnail = '<img  src="http://via.placeholder.com/70x70" alt="Pic" width="70px" class="img-responsive">';
                    }

                    return $thumnail;

                })
                ->addColumn('rating', function ($movies) {

                    return 'IMDB ' . $movies->rating;
                })
                ->addColumn('featured', function ($movies) {
                    if ($movies->featured == 1) {
                        $featured = 'Y';
                    } else {
                        $featured = '-';
                    }
                    return $featured;
                })
                ->addColumn('is_kids', function ($movies) {
                    if ($movies->is_kids == 1) {
                        $is_kids = 'Y';
                    } else {
                        $is_kids = '-';
                    }
                    return $is_kids;
                })
                ->addColumn('tmdb', function ($movies) {
                    if ($movies->tmdb == 'Y') {
                        $tmdb = '<span class="badge badge-pill badge-success"><i class="fa fa-check-circle"></i></span>';
                    } else {
                        $tmdb = '-';
                    }
                    return $tmdb;
                })
                ->addColumn('addedby', function ($movies) {
                    $username = User::find($movies->created_by);

                    if (isset($username)) {
                        return $username->name;
                    } else {
                        return 'User deleted';
                    }

                })
                ->addColumn('status', function ($movies) {
                    if (Auth::user()->is_assistant != 1) {
                        if ($movies->status == 1) {
                            return "<a href=" . route('quick.movie.status', $movies->id) . " class='btn btn-rounded btn-success status'>" . __('Active') . "</a>";
                        } else {
                            return "<a href=" . route('quick.movie.status', $movies->id) . " class='btn btn-rounded btn-danger status'>" . __('Deactive') . "</a>";
                        }
                    } else {
                        if ($movies->status == 1) {
                            return "<a class='btn btn-rounded btn-success status'>" . __('Active') . "</a>";
                        } else {
                            return "<a class='btn btn-rounded btn-danger status'>" . __('Deactive') . "</a>";
                        }
                    }
                })
                ->addColumn('action', function ($movies) {
                    if ($movies->status == 1) {
                        $btn = ' <div class="admin-table-action-block">
                            <a href="' . url('movie/detail', $movies->slug) . '" data-toggle="tooltip" data-original-title="Page Preview" target="_blank" class="btn btn-round btn-outline-primary"><i class="fa fa-tv"></i></a>';
                    } else {
                        $btn = ' <div class="admin-table-action-block">
                            <a style="cursor: not-allowed" data-toggle="tooltip" data-original-title="Page Preview" target="_blank" class="btn btn-round btn-outline-primary"><i class="fa fa-tv"></i></a>';
                    }
                    $btn .= '
                            <a href="' . route('livetv.edit', $movies->id) . '" data-toggle="tooltip" data-original-title="' . __('adminstaticwords.Edit') . '" class="btn btn-round btn-outline-success"><i class="fa fa-pencil"></i></a>
                            <button type="button" class="btn btn-round btn-outline-danger" data-toggle="modal" data-target="#deleteModal' . $movies->id . '"><i class="fa fa-trash"></i> </button></div>';

                    $btn .= '<div id="deleteModal' . $movies->id . '" class="delete-modal modal fade" role="dialog">
                             <div class="modal-dialog modal-sm">
                      <!-- Modal content-->
                      <div class="modal-content">
                      <div class="modal-header">
                          <button type="button" class="close"
                              data-dismiss="modal">&times;</button>
                          <div class="delete-icon"></div>
                      </div>
                      <div class="modal-body text-center">
                          <h4 class="modal-heading">'. __('Are You Sure ?'). '</h4>
                          <p>'.__('Do you really want to delete selected item names here? This
                              process
                              cannot be undone.').'</p>
                      </div>
                      <div class="modal-footer">
                      <form method="POST" action="' . route("livetv.destroy", $movies->id) . '">
                      ' . method_field("DELETE") . '
                      ' . csrf_field() . '
                      <button type="reset" class="btn btn-gray translate-y-3" data-dismiss="modal">'.__('No').'</button>
                      <button type="submit" class="btn btn-danger">'.__('Yes').'</button>
                      </form>
                      </div>
                      </div>
                      </div>
                      </div>';

                    return $btn;
                })
                ->rawColumns(['checkbox', 'rating', 'thumbnail', 'tmdb', 'rating', 'status', 'addedby', 'action'])
                ->make(true);
        }

        return view('admin.livetv.addedindex', compact('movies'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $menus = Menu::all();

        $director_ls = Director::pluck('name', 'id')->all();
        $actor_ls = Actor::pluck('name', 'id')->all();
        $genre_ls = Genre::pluck('name', 'id')->all();
        $a_lans = AudioLanguage::pluck('language', 'id')->all();
        $packages = Package::where('status', '1')->orwhere('delete_status', '1')->get();
        $all_movies = Movie::all();
        $series_list = MovieSeries::all();
        $movie_list_exc_series = collect();
        $movie_list_with_only_series = collect();
        if (count($series_list) > 0) {
            foreach ($series_list as $item) {
                $series = Movie::where('id', $item->series_movie_id)->first();
                $movie_list_with_only_series->push($series);
            }
            $movie_list_exc_series = $all_movies->toBase()->diff($movie_list_with_only_series->toBase());
            $movie_list_exc_series = $movie_list_exc_series->flatten()->pluck('title', 'id');
            $movie_list_exc_series = json_decode($movie_list_exc_series, true);
        } else {
            $movie_list_exc_series = Movie::pluck('title', 'id')->all();
        }

        return view('admin.livetv.create', compact('menus', 'director_ls', 'a_lans', 'director_ls', 'actor_ls', 'genre_ls', 'movie_list_exc_series', 'packages'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
       
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $menus = null;
        $request->validate([
            'title' => 'required',
        ],
            [
                'title.required' => __('Please Enter title!'),
            ]);

        if (isset($request->menu) && count($request->menu) > 0) {
            $menus = $request->menu;
        }

        $input = $request->except('a_language', 'subtitle_list', 'movie_id');

        $a_lans = $request->input('a_language');
        if ($a_lans) {
            $a_lans = implode(',', $a_lans);
            $input['a_language'] = $a_lans;
        } else {
            $input['a_language'] = null;
        }

        $subtitles = $request->input('subtitle_list');
        if ($subtitles) {
            $subtitles = implode(',', $subtitles);
            $input['subtitle_list'] = $subtitles;
        } else {
            $input['subtitle_list'] = null;
        }

        if (!isset($input['subtitle'])) {
            $input['subtitle'] = 0;
        }
        if (!isset($input['featured'])) {
            $input['featured'] = 0;
        }
        if (isset($input['is_kids'])) {
            $input['is_kids'] = 1;
        }else{
            $input['is_kids'] = 0;
        }
        if (!isset($input['livetvicon'])) {
            $input['livetvicon'] = 0;
        }
        if (!isset($input['series'])) {
            $input['series'] = 0;
        }

        if ($request->slug != null) {
            $input['slug'] = $request->slug;
        } else {
            $slug = str_slug($input['title'], '-');
            $input['slug'] = $slug;
        }

        if (isset($request->is_protect)) {

            $input['is_protect'] = 1;
        } else {
            $input['is_protect'] = 0;
        }

        if ($input['is_protect'] == 1) {
            $request->validate([
                'password' => 'required',
            ]);
            $input['password'] = Crypt::encrypt($input['password']);
        }

        $input['created_by'] = Auth::user()->id;

        if (Auth::user()->is_assistant == 1) {
            $status = 0;
        } else {
            $status = 1;
        }

        $input['status'] = $status;

        if($request->is_kids != 1){
            $request->validate([
                'menu' => 'required'
            ],[
                'menu.required' => 'Please select atleast one menu'
            ]);
           }
    

        $thumbnail = null;
        $poster = null;

        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'thumbnail' => 'required|file|image|mimes:jpeg,png,jpg,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {

                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                if ($request->thumbnail != null) {
                    $content = @file_get_contents(public_path() . '/images/movies/thumbnails/' . $request->thumbnail);
                    if ($content) {
                        unlink(public_path() . "/images/movies/thumbnails/" . $request->thumbnail);
                    }
                }
                $img = Image::make($file->path());

                $img->resize(300, 450, function ($constraint) {
                    $constraint->aspectRatio();
                });
                $img->save(public_path('/images/movies/thumbnails') . '/' . $thumbnail);

                $input['thumbnail'] = $thumbnail;
            }
        }

        if ($file = $request->file('poster')) {
            $validator = Validator::make(
                [
                    'poster' => $request->poster,
                    'extension' => strtolower($request->poster->getClientOriginalExtension()),
                ],
                [
                    'poster' => 'required',
                    'poster' => 'required|file|image|mimes:jpeg,png,jpg,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted',__('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $poster = 'poster_' . time() . $file->getClientOriginalName();
                if ($request->poster != null) {
                    $content = @file_get_contents(public_path() . '/images/movies/posters/' . $request->poster);
                    if ($content) {
                        unlink(public_path() . "/images/movies/posters/" . $request->poster);
                    }
                }
                $img = Image::make($file->path());

                $img->resize(300, 169, function ($constraint) {
                    $constraint->aspectRatio();
                });
                $img->save(public_path('/images/movies/posters') . '/' . $poster);

                $input['poster'] = $poster;
            }
        }

        if ($sub_file = $request->file('subtitle_files')) {
            $validator = Validator::make(
                [
                    'subtitle_files' => $request->subtitle_files,
                    'extension' => strtolower($request->subtitle_files->getClientOriginalExtension()),
                ],
                [
                    'subtitle_files' => 'required',
                    'extension' => 'required|in:txt,vtt',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use txt and vtt file format !'))->withInput();
            } else {
                $name = 'sub' . time() . $sub_file->getClientOriginalName();
                $sub_file->move(public_path() . '/subtitles', $name);
                $input['subtitle_files'] = $name;
            }
        } else {
            $input['subtitle_files'] = null;
        }

        $keyword = $request->keyword;
        $description = $request->description;

        $genre_ids = $request->input('genre_id');
        if ($genre_ids) {
            $genre_ids = implode(',', $genre_ids);
            $input['genre_id'] = $genre_ids;
        } else {
            $input['genre_id'] = null;
        }

        $input['ready_url'] = $request->ready_url;

        try {
            $created_movie = Movie::create($input);

            // subtitle add
            if ($request->has('sub_t')) {
                foreach ($request->file('sub_t') as $key => $image) {

                    $name = $image->getClientOriginalName();
                    $image->move(public_path() . '/subtitles/', $name);

                    $form = new Subtitles();
                    $form->sub_lang = $request->sub_lang[$key];
                    $form->sub_t = $name;
                    $form->m_t_id = $created_movie->id;
                    $form->save();
                }
            }

            if ($request->selecturl == "iframeurl") {

                VideoLink::create([
                    'movie_id' => $created_movie->id,
                    'iframeurl' => $input['iframeurl'],
                    'type' => 'iframeurl',
                ]);

            } else if ($request->selecturl == "customurl") {

                VideoLink::create([
                    'movie_id' => $created_movie->id,
                    'ready_url' => $input['ready_url'],
                    'type' => 'readyurl',
                ]);

            }

            if ($menus != null) {
                if (count($menus) > 0) {
                    foreach ($menus as $key => $value) {
                        MenuVideo::create([
                            'menu_id' => $value,
                            'movie_id' => $created_movie->id,
                        ]);
                    }
                }
            }

            return back()->with('success', __('LiveTv has been added'));
        } catch (\Exception $e) {
            return back()->with('deleted', $e->getMessage())->withInput();
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $url
     * @return \Illuminate\Http\Response
     */
    public function get_http_response_code($url)
    {
        $headers = get_headers($url);
        return substr($headers[0], 9, 3);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $menus = Menu::all();
        $director_ls = Director::all();
        $actor_ls = Actor::all();
        $genre_ls = Genre::all();
        $all_languages = AudioLanguage::all();
        $movie = Movie::findOrFail($id);
        $packages = Package::where('status', '1')->orwhere('delete_status', '1')->get();
        $all_movies = Movie::all();
        $series_list = MovieSeries::all();
        $movie_list_exc_series = collect();
        $movie_list_with_only_series = collect();
        if (count($series_list) > 0) {
            foreach ($series_list as $item) {
                $series = Movie::where('id', $item->series_movie_id)->first();
                $movie_list_with_only_series->push($series);
            }

            $movie_list_exc_series = $all_movies->toBase()->diff($movie_list_with_only_series->toBase());
            $movie_list_exc_series = $movie_list_exc_series->flatten()->pluck('title', 'id');
            $movie_list_exc_series = json_decode($movie_list_exc_series, true);

        } else {
            $movie_list_exc_series = Movie::pluck('title', 'id')->all();
        }
        // get old audio language values
        $old_lans = collect();
        $a_lans = collect();
        if ($movie->a_language != null) {
            $old_list = explode(',', $movie->a_language);
            for ($i = 0; $i < count($old_list); $i++) {
                $old = AudioLanguage::find(trim($old_list[$i]));
                if (isset($old)) {
                    $old_lans->push($old);
                }
            }
        }
        $a_lans = $a_lans->filter(function ($value, $key) {
            return $value != null;
        });
        $a_lans = $all_languages->diff($old_lans);

        // get old subtitle language values
        $old_subtitles = collect();
        $a_subs = collect();
        if ($movie->subtitle == 1) {
            if ($movie->subtitle_list != null) {
                $old_list = explode(',', $movie->subtitle_list);
                for ($i = 0; $i < count($old_list); $i++) {
                    $old2 = AudioLanguage::find(trim($old_list[$i]));
                    if (isset($old2)) {
                        $old_subtitles->push($old2);
                    }
                }
            }
        }
        $a_subs = $a_subs->filter(function ($value, $key) {
            return $value != null;
        });
        $a_subs = $all_languages->diff($old_subtitles);

        // get old director list
        $old_director = collect();
        if ($movie->director_id != null) {
            $old_list = explode(',', $movie->director_id);
            for ($i = 0; $i < count($old_list); $i++) {
                $old3 = Director::find(trim($old_list[$i]));
                if (isset($old3)) {
                    $old_director->push($old3);
                }
            }
        }
        $director_ls = $director_ls->filter(function ($value, $key) {
            return $value != null;
        });
        $director_ls = $director_ls->diff($old_director);

        // get old actor list
        $old_actor = collect();
        if ($movie->actor_id != null) {
            $old_list = explode(',', $movie->actor_id);
            for ($i = 0; $i < count($old_list); $i++) {
                $old4 = Actor::find(trim($old_list[$i]));
                if (isset($old4)) {
                    $old_actor->push($old4);
                }
            }
        }
        $old_actor = $old_actor->filter(function ($value, $key) {
            return $value != null;
        });
        $actor_ls = $actor_ls->diff($old_actor);

        // get old genre list
        $old_genre = collect();
        if ($movie->genre_id != null) {
            $old_list = explode(',', $movie->genre_id);
            for ($i = 0; $i < count($old_list); $i++) {
                $old5 = Genre::find(trim($old_list[$i]));
                if (isset($old5)) {
                    $old_genre->push($old5);
                }
            }
        }
        $genre_ls = $genre_ls->filter(function ($value, $key) {
            return $value != null;
        });

        $genre_ls = $genre_ls->diff($old_genre);

        $this_movie_series = MovieSeries::where('series_movie_id', $id)->get();
        if (count($this_movie_series) > 0) {
            $this_movie_series_detail = Movie::where('id', $this_movie_series[0]->movie_id)->get();
        }

        $video_link = Videolink::where('movie_id', $id)->first();

        return view('admin.livetv.edit', compact('movie', 'director_ls', 'actor_ls', 'genre_ls', 'movie_list_exc_series', 'a_lans', 'old_lans', 'a_subs', 'video_link',
            'old_subtitles', 'old_director', 'old_actor', 'old_genre', 'menus', 'packages'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */

    public function update(Request $request, $id)
    {
       
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $movie = Movie::findOrFail($id);

        $menus = null;

        if (isset($request->menu) && count($request->menu) > 0) {
            $menus = $request->menu;
        }

        $input = $request->except('a_language', 'director_id', 'actor_id', 'genre_id', 'subtitle_list', 'movie_id');

        $a_lans = $request->input('a_language');
        if ($a_lans) {
            $a_lans = implode(',', $a_lans);
            $input['a_language'] = $a_lans;
        } else {
            $input['a_language'] = null;
        }

        $subtitles = $request->input('subtitle_list');
        if ($subtitles) {
            $subtitles = implode(',', $subtitles);
            $input['subtitle_list'] = $subtitles;
        } else {
            $input['subtitle_list'] = null;
        }

        if (!isset($input['subtitle'])) {
            $input['subtitle'] = 0;
        }
        if (!isset($input['featured'])) {
            $input['featured'] = 0;
        }
        if (isset($input['is_kids'])) {
            $input['is_kids'] = 1;
        }else{
            $input['is_kids'] = 0;
        }
        if (!isset($input['series'])) {
            $input['series'] = 0;
        }

        $title = urlencode($input['title']);

        $thumbnail = null;
        $poster = null;

        if ($sub_file = $request->file('subtitle_files')) {
            $validator = Validator::make(
                [
                    'subtitle_files' => $request->subtitle_files,
                    'extension' => strtolower($request->subtitle_files->getClientOriginalExtension()),
                ],
                [
                    'subtitle_files' => 'required',
                    'extension' => 'required|in:txt,vtt',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted',__('Invalid file format Please use txt and vtt file format !'))->withInput();
            } else {

                $name = 'sub' . time() . $sub_file->getClientOriginalName();
                if ($movie->subtitle_files != null) {
                    $content = @file_get_contents(public_path() . '/subtitles/' . $movie->subtitle_files);
                    if ($content) {
                        unlink(public_path() . "/subtitles/" . $movie->subtitle_files);
                    }
                }
                $sub_file->move('subtitles', $name);
                $input['subtitle_files'] = $name;
            }
        }

        $keyword = $request->keyword;
        $description = $request->description;

        $genre_ids = $request->input('genre_id');
        if ($genre_ids) {
            $genre_ids = implode(',', $genre_ids);
            $input['genre_id'] = $genre_ids;
        } else {
            $input['genre_id'] = null;
        }

        if ($file = $request->file('thumbnail')) {
            $validator = Validator::make(
                [
                    'thumbnail' => $request->thumbnail,
                    'extension' => strtolower($request->thumbnail->getClientOriginalExtension()),
                ],
                [
                    'thumbnail' => 'required',
                    'thumbnail' => 'required|file|image|mimes:jpeg,png,jpg,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted', __('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $thumbnail = 'thumb_' . time() . $file->getClientOriginalName();
                if ($movie->thumbnail != null) {
                    $content = @file_get_contents(public_path() . '/images/movies/thumbnails/' . $movie->thumbnail);
                    if ($content) {
                        unlink(public_path() . "/images/movies/thumbnails/" . $movie->thumbnail);
                    }
                }

                $image = $request->file('thumbnail');
                $file_name = 'thumb_' . time() . '.' . $image->getClientOriginalExtension();

                $destinationPath = '../public/images/movies/thumbnails';
                $img = Image::make($file->path());

                $img->resize(300, 450, function ($constraint) {
                    $constraint->aspectRatio();
                });
                $img->save($destinationPath . '/' . $file_name);

                $input['thumbnail'] = $file_name;
            }
        }

        if ($file = $request->file('poster')) {
            $validator = Validator::make(
                [
                    'poster' => $request->poster,
                    'extension' => strtolower($request->poster->getClientOriginalExtension()),
                ],
                [
                    'poster' => 'required',
                    'poster' => 'required|file|image|mimes:jpeg,png,jpg,webp',
                ]
            );
            if ($validator->fails()) {
                return back()->with('deleted',__('Invalid file format Please use jpg,webp,jpeg and png image format !'))->withInput();
            } else {
                $poster = 'thumb_' . time() . $file->getClientOriginalName();
                if ($movie->poster != null) {
                    $content = @file_get_contents(public_path() . '/images/movies/posters/' . $movie->poster);
                    if ($content) {
                        unlink(public_path() . "/images/movies/posters/" . $movie->poster);
                    }
                }
                $img = Image::make($file->path());

                $img->resize(300, 169, function ($constraint) {
                    $constraint->aspectRatio();
                });
                $img->save(public_path('/images/movies/posters') . '/' . $poster);

                $input['poster'] = $poster;
            }
        }

        if ($input['series'] == 1 && $movie->series != 1) {
            MovieSeries::create([
                'movie_id' => $request->movie_id,
                'series_movie_id' => $movie->id,
            ]);
        }

        if (isset($request->is_protect)) {
            $input['is_protect'] = 1;
        } else {
            $input['is_protect'] = 0;
        }

        if ($input['is_protect'] == 1) {
            $request->validate([
                'password' => 'required',
            ]);
            $input['password'] = Crypt::encrypt($input['password']);
        }

        if ($request->slug != null) {
            $input['slug'] = $request->slug;
        } else {
            $slug = str_slug($request['title'], '-');
            $input['slug'] = $slug;
        }

        try {
            $movie->update($input);

            if (isset($movie->video_link)) {

                if ($request->selecturl == "iframeurl") {

                    $movie->video_link->update([
                        'iframeurl' => $input['iframeurl'],
                        'ready_url' => null,
                        'url_360' => null,
                        'url_480' => null,
                        'url_720' => null,
                        'url_1080' => null,
                        'type' => 'iframeurl',
                    ]);

                } else {

                    if ($request->selecturl == "customurl") {

                        $movie->video_link->update([
                            'iframeurl' => null,
                            'type' => 'readyurl',
                            'ready_url' => $input['ready_url'],

                        ]);

                    }

                }
            }

            if ($menus != null) {
                if (count($menus) > 0) {
                    if (isset($movie->menus) && count($movie->menus) > 0) {
                        foreach ($movie->menus as $key => $value) {
                            $value->delete();
                        }
                    }
                    foreach ($menus as $key => $value) {
                        MenuVideo::create([
                            'menu_id' => $value,
                            'movie_id' => $movie->id,
                        ]);
                    }
                }
            } else {
                if (isset($movie->menus) && count($movie->menus) > 0) {
                    foreach ($movie->menus as $key => $value) {
                        $value->delete();
                    }
                }
            }

            return redirect('/admin/livetv')->with('updated', __('LiveTv has been updated'));
        } catch (\Exception $e) {
            return back()->with('deleted', $e->getMessage())->withInput();
        }

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $movie = Movie::findOrFail($id);

        $watched = WatchHistory::where('movie_id', $id)->delete();

        if ($movie->thumbnail != null) {
            $content = @file_get_contents(public_path() . '/images/movies/thumbnails/' . $movie->thumbnail);
            if ($content) {
                unlink(public_path() . "/images/movies/thumbnails/" . $movie->thumbnail);
            }
        }
        if ($movie->poster != null) {
            $content = @file_get_contents(public_path() . '/images/movies/posters/' . $movie->poster);
            if ($content) {
                unlink(public_path() . "/images/movies/posters/" . $movie->poster);
            }
        }
        if ($movie->subtitle_files != null) {
            $content = @file_get_contents(public_path() . '/subtitles/' . $movie->subtitle_files);
            if ($content) {
                unlink(public_path() . "/subtitles/" . $movie->subtitle_files);
            }
        }
        $videolink = VideoLink::where('movie_id', $id)->first();

        if (isset($videolink)) {
            $videolink->delete();
        }

        try {
            $movie->delete();

            return back()->with('deleted', __('LiveTv has been deleted'));
        } catch (\Exception $e) {
            return back()->with('deleted', $e->getMessage());
        }
    }

    public function bulk_delete(Request $request)
    {
        if (env('DEMO_LOCK') == 1) {
            return back()->with('deleted', __('This action is disabled in the demo !'));
        }
        $validator = Validator::make($request->all(), [
            'checked' => 'required',
        ]);

        if ($validator->fails()) {

            return back()->with('deleted', __('Please check one of them to delete'));
        }

        foreach ($request->checked as $checked) {

            $movie = Movie::findOrFail($checked);
            $watched = WatchHistory::where('movie_id', $checked)->delete();

            if ($movie->thumbnail != null) {
                $content = @file_get_contents(public_path() . '/images/movies/thumbnails/' . $movie->thumbnail);
                if ($content) {
                    unlink(public_path() . "/images/movies/thumbnails/" . $movie->thumbnail);
                }
            }
            if ($movie->poster != null) {
                $content = @file_get_contents(public_path() . '/images/movies/posters/' . $movie->poster);
                if ($content) {
                    unlink(public_path() . "/images/movies/posters/" . $movie->poster);
                }
            }
            if ($movie->subtitle_files != null) {
                $content = @file_get_contents(public_path() . '/subtitles/' . $movie->subtitle_files);
                if ($content) {
                    unlink(public_path() . "/subtitles/" . $movie->subtitle_files);
                }
            }
            $id = $checked;
            $videolink = VideoLink::where('movie_id', $id)->first();

            if (isset($videolink)) {
                $videolink->delete();
            }

            Movie::destroy($checked);
        }

        return back()->with('deleted', __('LiveTv has been deleted'));
    }

    public function importlivetv(Request $request)
    {
        
        $validator = Validator::make(
            [
                'file' => $request->file,
                'extension' => strtolower($request->file->getClientOriginalExtension()),
            ],
            [
                'file' => 'required',
                'extension' => 'required|in:xlsx,xls,csv',
            ]

        );

        if ($validator->fails()) {

            return back()->with('deleted', __('Invalid file !'));
        }

         $filename = 'livetv_' . time() . '.' . $request->file->getClientOriginalExtension();

        Storage::disk('local')->put('/excel/' . $filename, file_get_contents($request->file->getRealPath()));

         $livetv = fastexcel()->import(storage_path() . '/app/excel/' . $filename);

        if (count($livetv)) {

            $livetv->each(function ($item) {
                DB::beginTransaction();
        
                $movie = Movie::create([
                    'title' => $item['title'] ?? null,
                    'slug' => $item['title'] ? str_slug($item['title'], '-') : null,
                    'keyword' => $item['keyword'] ?? null,
                    'description' => $item['description'] ?? null,
                    'thumbnail' => $item['thumbnail'] ?? null,
                    'poster' => $item['poster'] ?? null,
                    'tmdb' => 'N',
                    'fetch_by' => 'title',
                    'genre_id' => $item['genre_id'] ?? null,
                    'detail' => $item['detail'] ?? null,
                    'rating' => $item['rating'] ?? null,
                    'maturity_rating' => $item['maturity_rating'] ?? 'all age',
                    'featured' => isset($item['featured']) ? 1 : 0,
                    'is_kids' => isset($item['is_kids']) ? 1 : 0, // Check if the key exists
                    'a_language' => $item['a_language'] ?? null,
                    'type' => 'M',
                    'live' => 1,
                    'livetvicon' => $item['livetvicon'] ?? null,
                    'status' => 1,
                    'tmdb_id' => null,
                    'is_protect' => isset($item['is_protect']) ? 1 : 0,
                    'password' => isset($item['password']) ? Crypt::encrypt($item['password']) : null,
                    'created_by' => auth()->user()->id,
                ]);
                

                    if (isset($item['menu']) && $item['menu'] != null) {
                        $menus_ids = explode(',', $item['menu']);

                        foreach ($menus_ids as $value) {

                            MenuVideo::create(['menu_id' => $value, 'movie_id' => $movie->id]);
                        }
                    }

                    if (isset($item['selecturl']) && $item['selecturl'] != null) {
                        if ($item['selecturl'] == 'iframe') {
                            $iframeurl = $item['url'];
                            $type = 'iframeurl';
                        } else {
                            $url = $item['url'];
                            $type = 'readyurl';
                        }

                        Videolink::create([
                            'movie_id' => $movie->id,
                            'type' => $type,
                            'iframeurl' => isset($iframeurl) && $iframeurl != null ? $iframeurl : null,
                            'ready_url' => isset($url) && $url != null ? $url : null,
                            'upload_video' => null,
                            'url_360' => null,
                            'url_480' => null,
                            'url_720' => null,
                            'url_1080' => null,
                        ]);
                    }

                    DB::commit();
                

            });

            unlink(storage_path() . '/app/excel/' . $filename);

            return back()->with('success', __('LiveTv imported successfully'));

        } else {

            return back()->with('deleted', __('File is empty !'));
        }

    }

    public function tmdb_translations()
    {
        ini_set('max_execution_time', 1000);
        $all_movies = Movie::where('tmdb', 'Y')->get();
        $TMDB_API_KEY = env('TMDB_API_KEY');

        if ($TMDB_API_KEY == null || $TMDB_API_KEY == '') {
            return back()->with('deleted', __('Please provide your TMDB api key to translate'));
        }

        if (isset($all_movies) && count($all_movies) > 0) {
            foreach ($all_movies as $key => $movie) {
                if (Session::has('changed_language')) {
                    $fetch_movie = @file_get_contents('https://api.themoviedb.org/3/movie/' . $movie->tmdb_id . '?api_key=' . $TMDB_API_KEY . '&language=' . Session::get('changed_language'));
                } else {
                    return back()->with('updated', __('Please Choose a language by admin panel top right side language menu'));
                }

                $tmdb_movie = json_decode($fetch_movie, true);
                if (isset($tmdb_movie) && $tmdb_movie != null) {
                    $movie->update(['detail' => $tmdb_movie['overview']]);
                }
            }
            return back()->with('success', __('All Movies (only by TMDB) has been translated'));
        } else {
            return back()
                ->with('updated', __('Please create at least one movie by TMDB option to translate'));
        }
    }


}

Youez - 2016 - github.com/yon3zu
LinuXploit