Working on multi user

This commit is contained in:
Kode
2018-10-14 16:17:55 +01:00
parent e8b47776ce
commit 46bb073001
27 changed files with 184 additions and 38 deletions

View File

@@ -5,6 +5,8 @@ namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Input;
use Form;
use Illuminate\Support\Facades\Auth;
use App\User;
class Setting extends Model
{
@@ -46,6 +48,12 @@ class Setting extends Model
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)) {
@@ -80,6 +88,8 @@ class Setting extends Model
public function getEditValueAttribute()
{
$user = $this->user();
$this->value = $this->users()->where('id', $user->id)->first()->pivot->value;
switch($this->type) {
case 'image':
$value = '';
@@ -125,6 +135,7 @@ class Setting extends Model
return $this->belongsTo('App\SettingGroup', 'group_id');
}
/**
* @param string $key
*
@@ -132,14 +143,39 @@ class Setting extends Model
*/
public static function fetch($key)
{
if (Setting::cached($key)) {
return Setting::$cache[$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)) {
$value = $find->value;
Setting::add($key, $value);
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 {
@@ -175,21 +211,23 @@ class Setting extends Model
$output = '';
$homepage_search = self::fetch('homepage_search');
$search_provider = self::where('key', '=', 'search_provider')->first();
//die(var_dump($search_provider->value));
$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($search_provider->value === 'none') return $output;
if(empty($search_provider->value)) return $output;
if(is_null($search_provider->value)) 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[$search_provider->value];
if((bool)$search_provider->value) {
switch($search_provider->value) {
$name = $options[$user_search_provider];
if((bool)$user_search_provider) {
switch($user_search_provider) {
case 'google':
$url = 'https://www.google.com/search';
$var = 'q';
@@ -224,7 +262,17 @@ class Setting extends Model
*/
public function users()
{
return $this->belongsToMany('App\User');
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();
}
}
}