Input::get('value'), 'image' => Input::file('value'), ]; } public function getListValueAttribute() { if((bool)$this->system === true) { $value = self::_fetch($this->key); } else { $value = self::fetch($this->key); } $this->value = $value; switch($this->type) { case 'image': if(!empty($this->value)) { $value = ''.__('app.settings.view').''; } else { $value = __('app.options.none'); } break; case 'boolean': if((bool)$this->value === true) { $value = __('app.options.yes'); } else { $value = __('app.options.no'); } break; case 'select': if(!empty($this->value) && $this->value !== 'none') { $options = (array)json_decode($this->options); $value = __($options[$this->value]); } else { $value = __('app.options.none'); } break; default: $value = __($this->value); break; } return $value; } public function getEditValueAttribute() { $user = $this->user(); $this->value = $this->users()->where('id', $user->id)->first()->pivot->value; switch($this->type) { case 'image': $value = ''; if(isset($this->value) && !empty($this->value)) { $value .= ''; } $value .= Form::file('value', ['class' => 'form-control']); if(isset($this->value) && !empty($this->value)) { $value .= ''.__('app.settings.reset').''; } break; case 'boolean': $checked = false; if(isset($this->value) && (bool)$this->value === true) $checked = true; $set_checked = ($checked) ? ' checked="checked"' : ''; $value = ' '; break; case 'select': $options = json_decode($this->options); foreach($options as $key => $opt) { $options->$key = __($opt); } $value = Form::select('value', $options, null, ['class' => 'form-control']); break; default: $value = Form::text('value', null, ['class' => 'form-control']); break; } return $value; } public function group() { return $this->belongsTo('App\SettingGroup', 'group_id'); } /** * @param string $key * * @return mixed */ public static function fetch($key) { $user = self::user(); return self::_fetch($key, $user); } /** * @param string $key * * @return mixed */ public static function _fetch($key, $user=null) { $cachekey = ($user === null) ? $key : $key.'-'.$user->id; if (Setting::cached($cachekey)) { return Setting::$cache[$cachekey]; } else { $find = self::where('key', '=', $key)->first(); if (!is_null($find)) { if((bool)$find->system === true) { // if system variable use global value $value = $find->value; } else { // not system variable so use user specific value // check if user specified value has been set $usersetting = $user->settings->where('id', $find->id)->first(); //die(print_r($usersetting)); //->pivot->value; if(isset($usersetting) && !empty($usersetting)) { $value = $usersetting->pivot->value; } else { // if not get default from base setting $user->settings()->save($find, ['value' => $find->value]); $value = $find->value; } } Setting::add($cachekey, $value); return $value; } else { return false; } } } /** * @param string $key * @param $value */ public static function add($key, $value) { Setting::$cache[$key] = $value; } /** * @param string $key * * @return bool */ public static function cached($key) { return array_key_exists($key, Setting::$cache); } /** * @return html */ public static function search() { $output = ''; $homepage_search = self::fetch('homepage_search'); $search_provider = self::where('key', '=', 'search_provider')->first(); $user_search_provider = self::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; if($user_search_provider === 'none') return $output; if(empty($user_search_provider)) return $output; if(is_null($user_search_provider)) return $output; if((bool)$homepage_search && (bool)$search_provider) { $options = (array)json_decode($search_provider->options); $name = $options[$user_search_provider]; if((bool)$user_search_provider) { switch($user_search_provider) { case 'google': $url = 'https://www.google.com/search'; $var = 'q'; break; case 'ddg': $url = 'https://duckduckgo.com/'; $var = 'q'; break; case 'bing': $url = 'https://www.bing.com/search'; $var = 'q'; break; case 'startpage': $url = 'https://www.startpage.com/'; $var = 'q'; } $output .= '
'; $output .= Form::open(['url' => $url, 'method' => 'get']); $output .= '
'; $output .= Form::text($var, null, ['class' => 'homesearch', 'autofocus' => 'autofocus', 'placeholder' => __($name).' '.__('app.settings.search').'...']); $output .= ''; $output .= '
'; $output .= Form::close(); $output .= '
'; } } return $output; } /** * The users that belong to the setting. */ public function users() { return $this->belongsToMany('App\User')->withPivot('value'); } public static function user() { if (Auth::check()) { // if logged in, set this user return Auth::user(); } else { // not logged in, get first user return User::first(); } } }