Esempio n. 1
0
 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'));
 }
Esempio n. 2
0
 /**
  *
  * 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 " ";
 }
Esempio n. 3
0
 /**
  *
  * 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'));
     }
 }