[ 'url' => 'https://www.google.com/search', 'var' => 'q', 'method' => 'get', 'type' => 'standard', ], 'ddg' => [ 'url' => 'https://duckduckgo.com/', 'var' => 'q', 'method' => 'get', 'type' => 'standard', ], 'bing' => [ 'url' => 'https://www.bing.com/search', 'var' => 'q', 'method' => 'get', 'type' => 'standard', ], 'qwant' => [ 'url' => 'https://www.qwant.com/', 'var' => 'q', 'method' => 'get', 'type' => 'standard', ], 'startpage' => [ 'url' => 'https://www.startpage.com/do/dsearch', 'var' => 'query', 'method' => 'get', 'type' => 'standard', ], ]; } /** * Loops through users apps to see if app is a search provider, might be worth * looking into caching this at some point * * @return Array */ public static function appProviders() { $providers = []; $userapps = Item::all(); foreach($userapps as $app) { if(empty($app->class)) continue; if(($provider = Item::isSearchProvider($app->class)) !== false) { $name = Item::nameFromClass($app->class); $providers[strtolower($name)] = [ 'type' => $provider->type, 'class' => $app->class, 'url' => $app->url, ]; } } return $providers; } /** * Outputs the search form * * @return html */ public static function form() { $output = ''; $homepage_search = Setting::fetch('homepage_search'); $search_provider = Setting::where('key', '=', 'search_provider')->first(); $user_search_provider = Setting::fetch('search_provider'); //die(print_r($search_provider)); //die(var_dump($user_search_provider)); // return early if search isn't applicable if((bool)$homepage_search !== true) return $output; $user_search_provider = $user_search_provider ?? 'none'; if((bool)$homepage_search && (bool)$search_provider) { if((bool)$user_search_provider) { $name = 'app.options.'.$user_search_provider; $provider = self::providerDetails($user_search_provider); $output .= '
'; $output .= '
'; $output .= '
'; $output .= ''; $output .= Form::text('q', null, ['class' => 'homesearch', 'autofocus' => 'autofocus', 'placeholder' => __('app.settings.search').'...']); $output .= ''; $output .= '
'; $output .= '
'; $output .= '
'; } } return $output; } }