Prepare modules
This commit is contained in:
@ -9,28 +9,26 @@ use Illuminate\Support\Facades\Crypt;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Koneko\VuexyAdmin\Models\Setting;
|
||||
|
||||
/**
|
||||
* Servicio para gestionar la configuración global del sistema.
|
||||
*
|
||||
* Esta clase maneja las configuraciones globales del sistema, incluyendo servicios
|
||||
* externos (Facebook, Google), configuración de Vuexy y sistema de correo.
|
||||
* Implementa un sistema de caché para optimizar el rendimiento y proporciona
|
||||
* valores predeterminados cuando es necesario.
|
||||
*/
|
||||
class GlobalSettingsService
|
||||
{
|
||||
/**
|
||||
* Tiempo de vida del caché en minutos (30 días).
|
||||
*/
|
||||
/** @var int Tiempo de vida del caché en minutos (60 * 24 * 30 = 30 días) */
|
||||
private $cacheTTL = 60 * 24 * 30;
|
||||
|
||||
/**
|
||||
* Actualiza o crea una configuración.
|
||||
*/
|
||||
public function updateSetting(string $key, string $value): bool
|
||||
{
|
||||
$setting = Setting::updateOrCreate(
|
||||
['key' => $key],
|
||||
['value' => trim($value)]
|
||||
);
|
||||
|
||||
return $setting->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Carga y sobrescribe las configuraciones del sistema.
|
||||
* Carga la configuración del sistema desde la base de datos o caché.
|
||||
*
|
||||
* Gestiona la carga de configuraciones para servicios externos y Vuexy.
|
||||
* Si la base de datos no está inicializada, utiliza valores predeterminados.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function loadSystemConfig(): void
|
||||
{
|
||||
@ -41,7 +39,7 @@ class GlobalSettingsService
|
||||
} else {
|
||||
// Cargar configuración desde la caché o base de datos
|
||||
$config = Cache::remember('global_system_config', $this->cacheTTL, function () {
|
||||
$settings = Setting::global()
|
||||
$settings = Setting::withVirtualValue()
|
||||
->where('key', 'LIKE', 'config.%')
|
||||
->pluck('value', 'key')
|
||||
->toArray();
|
||||
@ -58,6 +56,7 @@ class GlobalSettingsService
|
||||
Config::set('services.facebook', $config['servicesFacebook']);
|
||||
Config::set('services.google', $config['servicesGoogle']);
|
||||
Config::set('vuexy', $config['vuexy']);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// Manejo silencioso de errores para evitar interrupciones
|
||||
Config::set('services.facebook', config('services.facebook', []));
|
||||
@ -67,7 +66,9 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve una configuración predeterminada si la base de datos no está inicializada.
|
||||
* Obtiene la configuración predeterminada del sistema.
|
||||
*
|
||||
* @return array Configuración predeterminada para servicios y Vuexy
|
||||
*/
|
||||
private function getDefaultSystemConfig(): array
|
||||
{
|
||||
@ -87,7 +88,11 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica si un bloque de configuraciones está presente.
|
||||
* Verifica si existe configuración para un bloque específico.
|
||||
*
|
||||
* @param array $settings Array de configuraciones
|
||||
* @param string $blockPrefix Prefijo del bloque a verificar
|
||||
* @return bool True si existe configuración para el bloque
|
||||
*/
|
||||
protected function hasBlockConfig(array $settings, string $blockPrefix): bool
|
||||
{
|
||||
@ -95,13 +100,17 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Construye la configuración de un servicio (Facebook, Google, etc.).
|
||||
* Construye la configuración para un servicio específico.
|
||||
*
|
||||
* @param array $settings Array de configuraciones
|
||||
* @param string $blockPrefix Prefijo del bloque de configuración
|
||||
* @param string $defaultConfigKey Clave de configuración predeterminada
|
||||
* @return array Configuración del servicio
|
||||
*/
|
||||
protected function buildServiceConfig(array $settings, string $blockPrefix, string $defaultConfigKey): array
|
||||
{
|
||||
if (!$this->hasBlockConfig($settings, $blockPrefix)) {
|
||||
return [];
|
||||
return config($defaultConfigKey);
|
||||
return config($defaultConfigKey)?? [];
|
||||
}
|
||||
|
||||
return [
|
||||
@ -112,8 +121,14 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Construye la configuración personalizada de Vuexy.
|
||||
*/
|
||||
* Construye la configuración de Vuexy.
|
||||
*
|
||||
* Combina la configuración predeterminada con los valores almacenados
|
||||
* en la base de datos y normaliza los campos booleanos.
|
||||
*
|
||||
* @param array $settings Array de configuraciones
|
||||
* @return array Configuración de Vuexy normalizada
|
||||
*/
|
||||
protected function buildVuexyConfig(array $settings): array
|
||||
{
|
||||
// Configuración predeterminada del sistema
|
||||
@ -133,7 +148,10 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Normaliza los campos booleanos.
|
||||
* Normaliza los campos booleanos en la configuración.
|
||||
*
|
||||
* @param array $config Configuración a normalizar
|
||||
* @return array Configuración con campos booleanos normalizados
|
||||
*/
|
||||
protected function normalizeBooleanFields(array $config): array
|
||||
{
|
||||
@ -158,7 +176,9 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Limpia el caché de la configuración del sistema.
|
||||
* Limpia la caché de configuración del sistema.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function clearSystemConfigCache(): void
|
||||
{
|
||||
@ -166,21 +186,29 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Elimina las claves config.vuexy.* y limpia global_system_config
|
||||
* Limpia la configuración de Vuexy de la base de datos y caché.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function clearVuexyConfig(): void
|
||||
{
|
||||
Setting::where('key', 'LIKE', 'config.vuexy.%')->delete();
|
||||
|
||||
Cache::forget('global_system_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene y sobrescribe la configuración de correo electrónico.
|
||||
* Obtiene la configuración del sistema de correo.
|
||||
*
|
||||
* Recupera y estructura la configuración de correo incluyendo
|
||||
* configuración SMTP, direcciones de envío y respuesta.
|
||||
*
|
||||
* @return array Configuración completa del sistema de correo
|
||||
*/
|
||||
public function getMailSystemConfig(): array
|
||||
{
|
||||
return Cache::remember('mail_system_config', $this->cacheTTL, function () {
|
||||
$settings = Setting::global()
|
||||
$settings = Setting::withVirtualValue()
|
||||
->where('key', 'LIKE', 'mail.%')
|
||||
->pluck('value', 'key')
|
||||
->toArray();
|
||||
@ -215,7 +243,9 @@ class GlobalSettingsService
|
||||
}
|
||||
|
||||
/**
|
||||
* Limpia el caché de la configuración de correo electrónico.
|
||||
* Limpia la caché de configuración del sistema de correo.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function clearMailSystemConfigCache(): void
|
||||
{
|
||||
|
Reference in New Issue
Block a user