public function getList($param = null, $genre_param = null) { // We may want to separate the ajax calls in another route, but for now, I just used this feature of Laravel, Request::ajax(), // that detects if the call to this route was via Ajax, and included it with the regular call for the initial page load // of title listing $user_id = Auth::user()->id; $user = User::find($user_id); $usertype = $user->usertype_id; $myFaves = Favorite::where("user_id", "=", $user_id)->get(); $fave_array = array(); foreach ($myFaves as $fave_rec) { $fave_array[] = $fave_rec->title_id; } if (Request::ajax()) { // 3 ways to get here: 1.) The "Get More" button in list.blade.php, 2.) ProductType/Category checkboxes on left side 3.) the Sorting Dropdown at upper right $totalcount = 0; if (Input::has('page')) { $page = Input::get('page'); // The url paramater in the $.get call would include the page parameter } else { $page = 1; } if (Input::has('sortby')) { $sortparam = Input::get('sortby'); } else { $sortparam = "a-z"; } if ($sortparam == "a-z") { $sortstring_a = 'titles.name'; $sortstring_b = 'asc'; } else { if ($sortparam == "z-a") { $sortstring_a = 'titles.name'; $sortstring_b = 'desc'; } else { $sortstring_a = 'titles.created_at'; $sortstring_b = 'desc'; } } $tempresult = Title::with(array("genre", "thumbnail")); // "producttype")); // prod id's not relevant until they give us the final decision on taxonomy implementation // --------------------------------------------------------------------------- /* if ( Input::has('prodids') ) { $prodid_array = Input::get('prodids'); $tempresult = $tempresult->whereHas('producttype', function($producttype) use ($prodid_array) { $producttype->whereIn('id', $prodid_array); }); }*/ if ($param == "favorites") { $tempresult = $tempresult->with(array("favorite"))->whereHas('favorite', function ($favorite) use($user_id) { $favorite->where('user_id', "=", $user_id); }); } if (Input::has('genres')) { $genre_array = Input::get('genres'); $tempresult = $tempresult->with(array("genre"))->whereHas('genre', function ($genre) use($genre_array) { $genre->whereIn('genre_id', $genre_array); //->with('genretitle'); }); } if (Input::has('categories')) { $category_array = Input::get('categories'); $tempresult = $tempresult->whereIn('producttype_id', $category_array); } if ($usertype == 2 || $usertype == 5 || $usertype == 3) { $tempresult = $tempresult->where("status_id", "=", '3'); } else { if (Input::has('published_status')) { $tempresult = $tempresult->where("status_id", "=", Input::get('published_status')); } } $titles = $tempresult->orderBy($sortstring_a, $sortstring_b)->paginate(24); foreach ($titles as $key => $title) { // error_log($title); if (in_array($title['id'], $fave_array)) { $titles[$key]['faved'] = 1; } else { $titles[$key]['faved'] = 0; } if (count($title['thumbnail']) > 0) { $titles[$key]['thumbpath'] = asset(Config::get('nbc.imageRootImagePath') . '/' . $title['thumbnail'][0]['file']); } else { $titles[$key]['thumbpath'] = asset('images/publicThumb.jpg'); //unset($titles[$key]) } } $totalcount = $tempresult->count(); $success = is_null($titles) ? false : true; $success = true; if ($success) { if ($param) { $param_send = $param; } else { $param_send = "normal"; } $data = json_encode(array('titles' => View::make('titles.title_grid_template', array('titles' => $titles, 'mode' => $param))->render(), 'totalCount' => $totalcount, 'mode' => $param_send, 'currentPageCount' => $titles->count())); return $data; } else { return $this->makeSuccessArray($success); } } else { // Normal call to the route for a title listing here $genre_label = ""; $category_label = ""; // Prep the left sidebar filtering widget data $genres = Genre::orderBy("name", "asc")->where('show', '=', 1)->get()->toArray(); // Prep the left sidebar filtering widget data $sidebar_categories = $this->getCategoriesForSidebar(); // If this input exists, it means User clicked "Add More Titles" button // From the "View Collections" page if (Input::has('default_collection_id')) { $default_collection_id = Input::get('default_collection_id'); } else { $default_collection_id = $this->getUserLastCollectionUsed(); } $user_id = Auth::user()->id; //$collections = Collection::where("user_id","=",$user_id)->get(array('id', 'name'))->toArray(); $collections = Collection::select('id', 'name')->where("user_id", "=", $user_id)->where("status_id", "<>", 6)->orderBy('name')->get()->toArray(); $collection_dropdown = array(); foreach ($collections as $collection) { $shortened_coll_name = str_limit($collection['name'], 25); $collection_dropdown[$collection['id']] = $shortened_coll_name; } if (isset($default_collection_id) && $default_collection_id) { $first_collection_id = $default_collection_id; } else { reset($collection_dropdown); $first_collection_id = key($collection_dropdown); } //$tempresult = Title::with(array("genre","thumbnail", "producttype"))->orderBy('created_at', 'desc'); $tempresult = Title::with(array("genre", "thumbnail", "producttype"))->orderBy('name', 'asc'); if ($param) { $param_send = $param; } else { $param_send = "normal"; } if ($param == "favorites") { $tempresult = $tempresult->with(array("favorite"))->where("status_id", "=", 3)->whereHas('favorite', function ($favorite) use($user_id) { $favorite->where('user_id', "=", $user_id); }); } if ($param == "recommended") { $tempresult = $tempresult->with(array("recommendation"))->where("status_id", "=", 3)->whereHas('recommendation', function ($recommendation) use($user_id) { $recommendation->where('user_id', "=", $user_id); }); } if ($param == "genre") { if (!$genre_param) { Redirect::to("/"); } $genre_label = Genre::where("id", "=", $genre_param)->pluck("name"); $tempresult = $tempresult->with(array("genre"))->where("status_id", "=", 3)->whereHas('genre', function ($genre) use($genre_param) { $genre->where('genre_id', "=", $genre_param); }); } if ($param == "category") { if (!$genre_param) { Redirect::to("/"); } $category_label = $this->getCategoryLabel($genre_param); $tempresult = $tempresult->where("status_id", "=", 3)->where('producttype_id', "=", $genre_param); } $rev_category = array("tvseries" => 10, "featurefilms" => 11, "orighomerelease" => 12, "tvmovie" => 15, "miniseries" => 17, "specials" => 18); if (isset($rev_category[$param])) { $genre_param = $rev_category[$param]; $param_send = "category"; $tempresult = $tempresult->with(array("producttype"))->where("status_id", "=", 3)->whereHas('producttype', function ($producttype) use($genre_param) { $producttype->where('id', "=", $genre_param); }); $category_label = $this->categories[$genre_param]; } if ($usertype == 2 || $usertype == 5 || $usertype == 3) { $tempresult = $tempresult->where("status_id", "=", '3'); } $titles = $tempresult->with(array("thumbnail"))->take(24)->get()->toArray(); //dd($titles); foreach ($titles as $key => $title) { if (in_array($title['id'], $fave_array)) { $titles[$key]['faved'] = 1; } else { $titles[$key]['faved'] = 0; } if (count($title['thumbnail']) > 0) { $titles[$key]['thumbpath'] = asset(Config::get('nbc.imageRootImagePath') . '/' . $title['thumbnail'][0]['file']); } else { $titles[$key]['thumbpath'] = asset('images/publicThumb.jpg'); } } $total_count = $tempresult->count(); $data = array('collections' => $collection_dropdown, 'titles' => $titles, 'checked_genre' => $genre_param, 'checked_category' => $genre_param, 'first_collection_id' => $first_collection_id, 'initial_view_col_link' => '/collection/manage/' . $first_collection_id, 'logged_in_user_id' => $user_id, 'mode' => $param_send); return View::make('titles.list', compact("data", "total_count", "genres", "genre_label", "category_label", "sidebar_categories")); } }