public function index() { $app = app(); $details = $app->make('stdClass'); // most recent purchases $details->most_recent = Movies::getMovieRecords('purchased', 'DESC', 10); // top rated movies $details->top_rated = Movies::getTopRated(); foreach ($details->top_rated as $movie) { $movie->rating_display = $this->makeRatingStars($movie->rating); } // get most popular actors $details->actors = Persons::getActorCount(24); // get most popular directors $details->directors = Persons::getDirectorCount(24); $details->birthdays = Persons::getTodaysBirthdays(); foreach ($details->birthdays as $birthday) { $birthday->age = $this->calculateAge($birthday->birthday, $birthday->deceased); } // highlight randomly selected movie $random_id = Movies::selectRandomFilm(); $details->highlight = Movies::findorfail($random_id); $details->highlight->cast = $details->highlight->cast->take(3); $details->highlight->crew = Crew::where('movie_id', $random_id)->select(DB::raw('GROUP_CONCAT(CONCAT(persons.forename, " ", persons.surname) SEPARATOR ", ") as list'))->join('persons', 'persons.person_id', '=', 'crew.person_id')->groupBy('movie_id')->where('position', 'Director')->take(1)->get(); $details->highlight->cover_count = strlen($details->highlight->cover); $details->highlight->rating_display = $this->makeRatingStars($details->highlight->rating); $details->decades = $this->makeDecades(); $user = $this->isAdmin; return view('welcome', compact('details', 'user')); }
/** * * Copy existing cast from one movie to another * @return View * */ public function duplicateCast() { if (!$this->isAdmin) { return view('auth.login'); } $data = $data = Request::all(); if (isset($data['id'])) { $existing_movie = Movies::find($data['id']); $new_movie_id = Session::get('movie_id'); $new_cast = []; $movie = Movies::findorfail($new_movie_id); foreach ($existing_movie->cast as $cast) { $new_cast[] = ['movie_id' => $new_movie_id, 'person_id' => $cast->pivot->person_id, 'character' => $cast->pivot->character, 'star' => $cast->pivot->star]; } $movie->cast()->sync($new_cast); return (string) view('movies.cast', compact('movie')); } return " "; }
/** * * Get cast list from IMDb ID number * @return Response * */ public function getCastFromIMDb() { if (Request::ajax()) { $data = Request::all(); $my_token = env('IMDB_KEY'); $movie_id = Session::get('movie_id'); $movie = Movies::findorfail($movie_id); $new_cast = []; $existing_cast = []; foreach ($movie->cast as $cast) { $existing_cast[] = $cast->person_id; } $client = new \GuzzleHttp\Client(); $url = 'http://api.myapifilms.com/imdb/idIMDB?idIMDB=' . $movie->imdb_id . '&token=' . $my_token . '&format=json&language=en-us&actors=2'; $imdb_response = $client->get($url); $imdb_body = $imdb_response->getBody(); $imdb_api = json_decode($imdb_body); $additional = []; if (count($imdb_api->data->movies)) { $imdb = $imdb_api->data->movies[0]; foreach ($imdb->actors as $actor) { $actor->clean_character = trim(preg_replace("/[^a-zA-Z0-9\\s]/", '', $actor->character)); $person = Persons::where(DB::raw("CONCAT(`forename`, ' ', `surname`)"), htmlentities($actor->actorName, ENT_QUOTES))->first(); if ($person) { if (!in_array($person->person_id, $existing_cast)) { $movie->cast()->attach($person->person_id, array('character' => $actor->character)); } } else { $additional[] = $actor; } } $movie = Movies::findorfail($movie_id); } return (string) view('movies.cast', compact('movie', 'additional')); } }