netgescon-master/netgescon-laravel/app/helpers.php

69 lines
1.7 KiB
PHP

<?php
if (!function_exists('userSetting')) {
/**
* Ottiene un'impostazione utente
*
* @param string $key
* @param mixed $default
* @return mixed
*/
function userSetting($key, $default = null)
{
if (!auth()->check()) {
return $default;
}
$user = auth()->user();
// Se l'utente ha un campo settings
if (isset($user->settings) && is_array($user->settings)) {
return $user->settings[$key] ?? $default;
}
// Se l'utente ha una relazione settings
if (method_exists($user, 'settings')) {
$setting = $user->settings()->where('key', $key)->first();
return $setting ? $setting->value : $default;
}
return $default;
}
}
if (!function_exists('setUserSetting')) {
/**
* Imposta un'impostazione utente
*
* @param string $key
* @param mixed $value
* @return bool
*/
function setUserSetting($key, $value)
{
if (!auth()->check()) {
return false;
}
$user = auth()->user();
// Se l'utente ha un campo settings
if (isset($user->settings)) {
$settings = is_array($user->settings) ? $user->settings : [];
$settings[$key] = $value;
$user->settings = $settings;
return $user->save();
}
// Se l'utente ha una relazione settings
if (method_exists($user, 'settings')) {
return $user->settings()->updateOrCreate(
['key' => $key],
['value' => $value]
);
}
return false;
}
}