miscellaneous updates

This commit is contained in:
2025-01-26 23:14:28 -06:00
parent 493413ec97
commit cff8101088
28 changed files with 734 additions and 474 deletions

View File

@ -4,6 +4,7 @@ namespace Modules\Admin\App\Services;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Schema;
use Modules\Admin\App\Models\Setting;
class AdminTemplateService
@ -20,35 +21,61 @@ class AdminTemplateService
return $setting->save();
}
public function getAdminVars($adminSetting = false)
public function getAdminVars($adminSetting = false): array
{
try {
// Verificar si el sistema está inicializado (la tabla `migrations` existe)
if (!Schema::hasTable('migrations')) {
return $this->getDefaultAdminVars($adminSetting);
}
// Cargar desde el caché o la base de datos si está disponible
return Cache::remember('admin_settings', $this->cacheTTL, function () use ($adminSetting) {
$settings = Setting::global()
->where('key', 'LIKE', 'admin_%')
->pluck('value', 'key')
->toArray();
$adminSettings = [
'title' => $settings['admin_title'] ?? config('_var.appTitle'),
'author' => config('_var.author'),
'description' => config('_var.description'),
'favicon' => $this->getFaviconPaths($settings),
'app_name' => $settings['admin_app_name'] ?? config('_var.appName'),
'image_logo' => $this->getImageLogoPaths($settings),
];
$adminSettings = $this->buildAdminVarsArray($settings);
return $adminSetting
? $adminSettings[$adminSetting]
: $adminSettings;
});
} catch (\Exception $e) {
echo __METHOD__;
echo "<br>" . $e->getMessage() . "<br><br>";
die('You must configure the database.');
// En caso de error, devolver valores predeterminados
return $this->getDefaultAdminVars($adminSetting);
}
}
private function getDefaultAdminVars($adminSetting = false): array
{
$defaultSettings = [
'title' => config('_var.appTitle', 'Default Title'),
'author' => config('_var.author', 'Default Author'),
'description' => config('_var.description', 'Default Description'),
'favicon' => $this->getFaviconPaths([]),
'app_name' => config('_var.appName', 'Default App Name'),
'image_logo' => $this->getImageLogoPaths([]),
];
return $adminSetting
? $defaultSettings[$adminSetting] ?? null
: $defaultSettings;
}
private function buildAdminVarsArray(array $settings): array
{
return [
'title' => $settings['admin_title'] ?? config('_var.appTitle'),
'author' => config('_var.author'),
'description' => config('_var.description'),
'favicon' => $this->getFaviconPaths($settings),
'app_name' => $settings['admin_app_name'] ?? config('_var.appName'),
'image_logo' => $this->getImageLogoPaths($settings),
];
}
public function getVuexyCustomizerVars()
{
// Obtener valores de la base de datos
@ -126,4 +153,4 @@ class AdminTemplateService
{
Cache::forget("admin_settings");
}
}
}

View File

@ -6,6 +6,7 @@ use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Schema;
use Modules\Admin\App\Models\Setting;
class GlobalSettingsService
@ -34,29 +35,57 @@ class GlobalSettingsService
public function loadSystemConfig(): void
{
try {
$config = Cache::remember('global_system_config', $this->cacheTTL, function () {
$settings = Setting::global()
->where('key', 'LIKE', 'config.%')
->pluck('value', 'key')
->toArray();
if (!Schema::hasTable('migrations')) {
// Base de datos no inicializada: usar valores predeterminados
$config = $this->getDefaultSystemConfig();
} else {
// Cargar configuración desde la caché o base de datos
$config = Cache::remember('global_system_config', $this->cacheTTL, function () {
$settings = Setting::global()
->where('key', 'LIKE', 'config.%')
->pluck('value', 'key')
->toArray();
return [
'servicesFacebook' => $this->buildServiceConfig($settings, 'config.services.facebook.', 'services.facebook'),
'servicesGoogle' => $this->buildServiceConfig($settings, 'config.services.google.', 'services.google'),
'custom' => $this->buildVuexyCustomConfig($settings),
];
});
return [
'servicesFacebook' => $this->buildServiceConfig($settings, 'config.services.facebook.', 'services.facebook'),
'servicesGoogle' => $this->buildServiceConfig($settings, 'config.services.google.', 'services.google'),
'custom' => $this->buildVuexyCustomConfig($settings),
];
});
}
// Aplicar configuración al sistema
Config::set('services.facebook', $config['servicesFacebook']);
Config::set('services.google', $config['servicesGoogle']);
Config::set('custom', $config['custom']);
} catch (\Exception $e) {
echo __METHOD__;
echo "<br>" . $e->getMessage() . "<br><br>";
die('You must configure the database.');
// Manejo silencioso de errores para evitar interrupciones
Config::set('services.facebook', config('services.facebook', []));
Config::set('services.google', config('services.google', []));
Config::set('custom', config('custom', []));
}
}
/**
* Devuelve una configuración predeterminada si la base de datos no está inicializada.
*/
private function getDefaultSystemConfig(): array
{
return [
'servicesFacebook' => config('services.facebook', [
'client_id' => '',
'client_secret' => '',
'redirect' => '',
]),
'servicesGoogle' => config('services.google', [
'client_id' => '',
'client_secret' => '',
'redirect' => '',
]),
'custom' => config('custom', []),
];
}
/**
* Verifica si un bloque de configuraciones está presente.
*/

View File

@ -26,8 +26,6 @@ class WebsiteSettingsService
private $imageLogoMaxPixels2 = 75625; // Segunda versión (px^2) en Base64
private $imageLogoMaxPixels3 = 230400; // Tercera versión (px^2)
protected $cacheTTL = 60 * 24 * 30; // 30 días en minutos
public function __construct()
{
$this->driver = config('image.driver', 'gd');