Front.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Middleware\Prepare;
  3. use Closure;
  4. use Illuminate\Support\Facades\View;
  5. use Illuminate\Support\Facades\Cache;
  6. use App\Models\Menu;
  7. use App\Models\Visit;
  8. class Front
  9. {
  10. /**
  11. * Handle an incoming request.
  12. *
  13. * @param \Illuminate\Http\Request $request
  14. * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
  15. * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
  16. */
  17. public function handle($request, Closure $next)
  18. {
  19. // 사용자 메뉴 설정
  20. $menuModel = new Menu();
  21. $menuData = $menuModel->data();
  22. // 현재 메뉴 위치 조회
  23. if (!$ret = Cache::get($menuModel->cacheName_2)) {
  24. if ($menuData->rows > 0) {
  25. $ret = [
  26. 'topMenu' => [],
  27. 'subMenu' => []
  28. ];
  29. foreach ($menuData->list as $row) {
  30. if (DEVICE_TYPE == DEVICE_TYPE_1) { // PC
  31. if (!$row->desktop) {
  32. continue;
  33. }
  34. } else { // MO
  35. if (!$row->mobile) {
  36. continue;
  37. }
  38. }
  39. $mn = $menuModel->findCategory($row->id);
  40. $mn->hasChildren = $mn->children->count();
  41. $mn->isRoot = $mn->isRoot();
  42. $mn->isLeaf = $mn->isLeaf();
  43. $mn->url = url($mn->link);
  44. $mn->target = ($mn->target ? '_blank' : '_self');
  45. $mn->postCount = $row->postCount;
  46. $ret['topMenu'][$mn->parent_id][] = $mn;
  47. $ret['subMenu'][$mn->id] = $mn;
  48. }
  49. }
  50. Cache::put($menuModel->cacheName_2, $ret, $menuModel->cacheTime);
  51. }
  52. View::share('topMenu', $ret['topMenu']);
  53. View::share('subMenu', $ret['subMenu']);
  54. // 부가기능 index 확인값
  55. View::share('isTab', $request->routeIs('tag.*'));
  56. $visit = new Visit();
  57. $visit->register($request); // 방문자 수 기록
  58. View::share('visitorTodayCount', $visit->todayCount()); // 오늘
  59. View::share('visitorYesterdayCount', $visit->yesterdayCount()); // 어제
  60. View::share('visitorTotalCount', $visit->totalCount()); // 누적
  61. unset($menuData, $ret, $visit, $menuModel);
  62. return $next($request);
  63. }
  64. }