<?php namespace App\View\Components\Layouts\Modules; use App\Abstracts\View\Component; use App\Traits\Modules; use App\Utilities\Date; use Illuminate\Support\Facades\Cache; class Bar extends Component { use Modules; public $keyword; /** array */ public $categories = []; /** array */ public $popular = []; public function categoryUrl($slug) { if ($slug == '*') { return route('apps.home.index'); } return route('apps.categories.show', $slug); } /** * Get the view / contents that represent the component. * * @return \Illuminate\Contracts\View\View|string */ public function render() { $this->keyword = request()->get('keyword'); $this->categories = $this->getCategories(); $this->popular = $this->getPopularModules(); return view('components.layouts.modules.bar'); } protected function getCategories() { $categories = collect([ '*' => trans('general.all_type', ['type' => trans_choice('general.categories', 2)]), ]); if (setting('apps.api_key')) { $categories = Cache::remember('modules.categories.' . language()->getShortCode(), Date::now()->addHour(6), function () { return collect($this->getCategoriesOfModules())->pluck('name', 'slug') ->prepend(trans('general.all_type', ['type' => trans_choice('general.categories', 2)]), '*'); }); } return $categories; } }