where('language', LaravelLocalization::getCurrentLocale()) ->orWhere('language', null) ->orderBy('language', 'ASC'); } /** * Load all settings * @return \stdClass */ public function getAll() { $settings = $this->getSettingsQuery() ->get(); return $this->returnPairs($settings); } /** * Get all settings with language info * @return \stdClass */ public function getAllWithLanguage() { $settings = $this->getSettingsQuery() ->get(); $data = new \stdClass(); foreach ($settings as $conf) { $data->{$conf->key} = [ 'val' => $conf->value, 'lang' => $conf->language ]; } return $data; } /** * Load only config for views * @return \stdClass */ public function getForView() { $settings = $this->getSettingsQuery() ->where('load_into_views', 1) ->get(); return $this->returnPairs($settings); } /** * From pair create object key => value * * @param $settings * * @return \stdClass */ private function returnPairs($settings) { $data = new \stdClass(); foreach ($settings as $conf) { $data->{$conf->key} = $conf->value; } return $data; } /** * Save settings * * @param array $data */ public function save(array $data) { $commonSettings = isset($data['commonSettings']) ? $data['commonSettings'] : []; unset($data['commonSettings']); foreach ($data as $key => $value) { // select language for this setting key $language = isset($commonSettings[$key]) ? null : LaravelLocalization::getCurrentLocale(); $setting = SettingsModel::firstOrNew(['language' => $language, 'key' => $key]); if ($setting->value == $value) { continue; } // set value and save or delete $setting->value = $value; empty($value) ? $setting->delete() : $setting->save(); } } }