예제 #1
0
 public function filterMovies()
 {
     $data = Request::all();
     $search_string = trim($data['filter-movie-text']);
     $type = trim($data['filter-movie-by']);
     if ($search_string != "") {
         $query = Movies::select('movies.*');
         switch ($type) {
             case "all":
             default:
                 $query->where('name', 'LIKE', '%' . $search_string . '%');
                 break;
             case "year":
                 $query->where('released', $search_string);
                 break;
         }
         $query->orderBy('sort_name');
         $movies = $query->get();
         $people = Persons::where(DB::raw("CONCAT(`forename`, ' ', `surname`)"), 'LIKE', '%' . $search_string . '%')->orderBy('forename')->get();
         $tags = Movies::where('keywords.word', 'LIKE', '%' . $search_string . '%')->join('tags', 'movies.movie_id', '=', 'tags.movie_id')->join('keywords', 'keywords.keyword_id', '=', 'tags.keyword_id')->orderBy('sort_name')->get();
         $user = $this->isAdmin;
         $quote = count($movies) ? "" : $this->getRandomQuote();
         return view('filter.results', compact('movies', 'people', 'tags', 'quote', 'user'));
     }
 }
예제 #2
0
 /**
  * La méthode très simple qui envoie à la vue d'affichage
  * d'un film toutes les données correspondantes au film.
  * @param $id L'id du film à afficher
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function show($id)
 {
     /*Le tout début est une petite astuce qui permet d'obtenir l'url réel d'une vidéo.
       En effet, dans la base de données, les url des vidéos sont des liens de redirection vers un lien
       (qui j'imagine doit être temporaire) réel de la vidéo
       Si l'on donne l'url de redirection au lecteur vidéo, tout marche bien SAUF si l'on souhaite avancer plus loin dans
       la vidéo (et uniquement sur les vidéos de plus de 10 min environ).
       L'astuce consiste donc à faire une requête via curl sur le lien pour obtenir le vrai url de la vidéo (qui
       lui marche sans soucis) ! */
     $curl = new cURL();
     $movie = Movies::find($id);
     $movie->ogv = $curl->get($movie->ogv)->getHeader('location');
     $topics = $movie->topics;
     // Le if qui suit est une personnalisation des recommandations pour les utilisateurs connectés
     if (Auth::guest()) {
         // SI l'utilisateur est un guest (non enregistré) on lui suggére des films du même auteur aléatoirement
         $suggestions = Movies::where('creator', 'LIKE', $movie->creator)->where('title', 'not like', $movie->title)->orderByRaw('RAND()')->take(5)->get();
     } else {
         $currentId = Auth::id();
         // On ajoute un à count pour chaque topic du film
         foreach ($topics as $topic) {
             $truc = UsersTopics::firstOrCreate(['user_id' => $currentId, 'topic_id' => $topic->id]);
             $truc->where('topic_id', '=', $topic->id)->increment('count', 1);
         }
         // On renvoie une liste de films qui sont parmis les genres préférés
         $maxTopic = User::find($currentId)->topics()->max('count');
         $suggestions = User::find($currentId)->topics()->where('count', $maxTopic)->first()->movies()->where('title', 'not like', $movie->title)->orderByRaw('RAND()')->take(5)->get();
     }
     return view('movies', compact('movie', 'topics', 'suggestions'));
 }
예제 #3
0
파일: Movies.php 프로젝트: briantweed/MyMdb
 public static function getTopRated()
 {
     $top_movies = Movies::where('rating', '10')->orderBy('name', 'ASC')->get();
     if (count($top_movies) < 10) {
         return Movies::getMovieRecords('rating', 'desc', '10');
     } else {
         return $top_movies;
     }
 }
예제 #4
0
 /**
  * Get a JSON Movie instance by the specified title
  *
  * @return Response
  */
 public function get($title)
 {
     //
     $movie = Movies::where('title', $title)->first();
     if (!$movie) {
         return response()->json(['message' => 'Could not find movie with this title', 'code' => 404], 404);
     }
     return response()->json(['data' => $movie], 200);
 }
예제 #5
0
 public function getMovieInfo($id)
 {
     $movie = Movies::where('id', $id)->with('getGenres')->first();
     $genres = $movie->getGenres;
     $movie_genres = [];
     foreach ($genres as $genre) {
         $movie_genres[] = $genre->getGenre->name;
     }
     $poster = json_decode($movie->poster)->name;
     $movie->poster = $poster;
     $images = json_decode($movie->images);
     $movie_images = [];
     foreach ($images as $image) {
         if ($image->name != null) {
             $movie_images[] = $image->name;
         }
     }
     return view()->make('search.movie', ['movie' => $movie, 'genres' => $movie_genres, 'images' => $movie_images]);
 }
예제 #6
0
 /**
  * Cette fonction très simple sert à créer la page "API" qui soutient l'auto complétion
  * de la barre de recherche via Typeahead.js
  * C'est simplement la liste de tous les films encodée en JSON.
  * @return \Illuminate\Http\JsonResponse
  */
 public function query()
 {
     $query = Input::get('movie');
     $res = Movies::where('title', 'LIKE', "%{$query}%")->get();
     return Response::json($res);
 }
예제 #7
0
 /**
  *
  * Check for existing movies with the same title
  * Usually to detech if a movie is a remake
  * If true, release year displayed
  * @param string $text
  * @return Response
  *
  */
 private function checkForMovies($text)
 {
     $output = preg_replace_callback('/\\{{(.*?)}}/', function ($m) {
         $crumbs = explode("(", $m[1]);
         $query_name = trim($crumbs[0]);
         $query = Movies::where('name', $query_name);
         if (isset($crumbs[1])) {
             $query_year = rtrim($crumbs[1], ")");
             if (is_integer($query_year)) {
                 $query->where('released', $query_year);
             }
         }
         $movie = $query->first();
         if ($movie) {
             return "<a href='/movies/" . $movie->movie_id . "'><b>" . $movie->name . " (" . $movie->released . ")</b></a>";
         } else {
             return $m[1];
         }
     }, $text);
     return nl2br($output);
 }
예제 #8
0
 /**
  *
  * For duplicate titles, show year as well
  * @param string $name
  * @return Response
  *
  */
 private function checkForDuplicateTitle($name)
 {
     return Movies::where('name', $name)->count() > 0 ? true : false;
 }