Guest User

Untitled

a guest
Nov 19th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. /speakers
  2. /speaker/{slug}
  3. /2017/speakers
  4. /2017/speaker/{slug}
  5. /2016/speakers
  6. /2016/speaker/{slug}
  7.  
  8. Route::group(['middleware' => ['web']], function() {
  9. $routeGen = function($decorator) {
  10. Route::get('/speakers', 'SpeakerController@all')->name($decorator('speakers'));
  11. Route::get('/speaker/{slug}', 'SpeakerController@show')->name($decorator('speaker'));
  12. };
  13.  
  14. // current conference
  15. Route::group(['middleware' => ['yearVerifier']], function() use ($routeGen) {
  16. $routeGen(function($name) { return 'currentYear.'.$name;});
  17. });
  18.  
  19. // previous conferences
  20. Route::group(['prefix' => '{year}', 'middleware' => ['yearVerifier']], function() use ($routeGen) {
  21. $routeGen(function($name) {return $name;});
  22. });
  23. });
  24.  
  25. public function handle($request, Closure $next, $guard = null)
  26. {
  27. $years = Cache::remember('conferenceyears.list', 5, function() {
  28. return ConferenceYear::all('year')->map(function($conferenceYear) {
  29. return $conferenceYear->year;
  30. })->toArray();
  31. });
  32.  
  33. // TODO: probably this is not the best way to make this info globally available
  34. $request->merge(['nextConferenceYear' => max($years)]);
  35.  
  36. if (is_null($request->year)) {
  37. $request->merge(['year' => $request->nextConferenceYear]);
  38. } else {
  39. if ($request->year == $request->nextConferenceYear) {
  40. return redirect('/');
  41. }
  42. }
  43.  
  44. if (!in_array($request->year, $years)) {
  45. return redirect('/');
  46. }
  47.  
  48. // TODO: probably this is also not the right way to make this info globally available in the views
  49. view()->share('nextConferenceYear', $request->nextConferenceYear);
  50. view()->share('currentConferenceYear', $request->year);
  51.  
  52. return $next($request);
  53. }
  54.  
  55. @if ($nextConferenceYear == $currentConferenceYear)
  56. {{ route('currentYear.speaker', ['slug' => $speakerSlug]) }}
  57. @else
  58. {{ route('speaker', ['slug' => $speakerSlug, 'year' => $currentConferenceYear]) }}
  59. @endif
Add Comment
Please, Sign In to add comment