First Commit
This commit is contained in:
Executable
+173
@@ -0,0 +1,173 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SysCMS - Content Management System
|
||||
*
|
||||
* Copyright (c) 2025 Marco Costa
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Marco Costa
|
||||
* Email: contato@syspanel.com.br
|
||||
* Project: SysCMS
|
||||
*
|
||||
* This software is licensed, not sold.
|
||||
* Permission is granted to use this software
|
||||
* subject to the terms of the SysCMS Commercial License.
|
||||
*
|
||||
* Redistribution, sublicensing, resale, or
|
||||
* disclosure of this software, in whole or in part,
|
||||
* is strictly prohibited without prior written permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
|
||||
*/
|
||||
|
||||
use Dotenv\Dotenv;
|
||||
|
||||
if (!function_exists('load_env')) {
|
||||
/**
|
||||
* Loads environment variables from the .env file
|
||||
*
|
||||
* @param string|null $path Path to the project root directory
|
||||
* @return void
|
||||
*/
|
||||
function load_env(?string $path = null): void
|
||||
{
|
||||
static $loaded = false;
|
||||
|
||||
if ($loaded) {
|
||||
return;
|
||||
}
|
||||
|
||||
$path = $path ?? dirname(__DIR__, 2);
|
||||
|
||||
if (file_exists($path . '/.env')) {
|
||||
$dotenv = Dotenv::createImmutable($path);
|
||||
$dotenv->load();
|
||||
$loaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_env')) {
|
||||
/**
|
||||
* Gets an environment variable with a default value
|
||||
*
|
||||
* @param string $key Variable name
|
||||
* @param mixed $default Default value if not exists
|
||||
* @return mixed
|
||||
*/
|
||||
function get_env(string $key, $default = null)
|
||||
{
|
||||
return $_ENV[$key] ?? $_SERVER[$key] ?? $default;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('env')) {
|
||||
/**
|
||||
* Alias for get_env to maintain compatibility
|
||||
*
|
||||
* @param string $key Variable name
|
||||
* @param mixed $default Default value if not exists
|
||||
* @return mixed
|
||||
*/
|
||||
function env(string $key, $default = null)
|
||||
{
|
||||
return get_env($key, $default);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('env_bool')) {
|
||||
/**
|
||||
* Gets an environment variable as boolean
|
||||
*
|
||||
* @param string $key Variable name
|
||||
* @param bool $default Default value if not exists
|
||||
* @return bool
|
||||
*/
|
||||
function env_bool(string $key, bool $default = false): bool
|
||||
{
|
||||
$value = get_env($key, $default);
|
||||
|
||||
if (is_bool($value)) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
return filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('env_int')) {
|
||||
/**
|
||||
* Gets an environment variable as integer
|
||||
*
|
||||
* @param string $key Variable name
|
||||
* @param int $default Default value if not exists
|
||||
* @return int
|
||||
*/
|
||||
function env_int(string $key, int $default = 0): int
|
||||
{
|
||||
return (int) get_env($key, $default);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_db_config')) {
|
||||
/**
|
||||
* Gets database configuration from environment variables
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function get_db_config(): array
|
||||
{
|
||||
return [
|
||||
'driver' => get_env('DB_DRIVER', get_env('DB_CONNECTION', 'mysql')),
|
||||
'host' => get_env('DB_HOST', 'localhost'),
|
||||
'port' => get_env('DB_PORT', '3306'),
|
||||
'database' => get_env('DB_DATABASE', 'syscms'),
|
||||
'username' => get_env('DB_USERNAME', 'root'),
|
||||
'password' => get_env('DB_PASSWORD', ''),
|
||||
'charset' => 'utf8mb4',
|
||||
'collation' => 'utf8mb4_unicode_ci',
|
||||
'prefix' => '',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_app_config')) {
|
||||
/**
|
||||
* Gets application configuration from environment variables
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function get_app_config(): array
|
||||
{
|
||||
return [
|
||||
'name' => get_env('APP_NAME', 'SysCMS'),
|
||||
'env' => get_env('APP_ENV', 'development'),
|
||||
'debug' => env_bool('APP_DEBUG', true),
|
||||
'url' => get_env('APP_URL', 'http://localhost:16240'),
|
||||
'timezone' => get_env('APP_TIMEZONE', 'America/Sao_Paulo'),
|
||||
'key' => get_env('APP_KEY', ''),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_mail_config')) {
|
||||
/**
|
||||
* Gets email configuration from environment variables
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function get_mail_config(): array
|
||||
{
|
||||
return [
|
||||
'transport' => get_env('MAIL_TRANSPORT', 'smtp'),
|
||||
'host' => get_env('MAIL_HOST', 'localhost'),
|
||||
'port' => get_env('MAIL_PORT', '587'),
|
||||
'username' => get_env('MAIL_USERNAME', ''),
|
||||
'password' => get_env('MAIL_PASSWORD', ''),
|
||||
'encryption' => get_env('MAIL_ENCRYPTION', 'tls'),
|
||||
'from_address' => get_env('MAIL_FROM_ADDRESS', ''),
|
||||
'from_name' => get_env('MAIL_FROM_NAME', 'SysCMS'),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user