$value) { if (is_string($value)) { if ((substr($value, 0, 1) === '"' && substr($value, -1) === '"') || (substr($value, 0, 1) === "'" && substr($value, -1) === "'")) { $envVars[$key] = substr($value, 1, -1); } } } } // Global configuration $GLOBALS['config'] = [ // Database settings 'DB_HOST' => $envVars['DB_HOST'] ?? 'localhost', 'DB_USER' => $envVars['DB_USER'] ?? 'root', 'DB_PASS' => $envVars['DB_PASS'] ?? '', 'DB_NAME' => $envVars['DB_NAME'] ?? 'tinkertickets', // URL settings 'BASE_URL' => '', // Empty since we're serving from document root 'ASSETS_URL' => '/assets', // Assets URL 'API_URL' => '/api', // API URL // Session settings 'SESSION_TIMEOUT' => 3600, // 1 hour in seconds 'SESSION_REGENERATE_INTERVAL' => 300, // Regenerate session ID every 5 minutes // CSRF settings 'CSRF_LIFETIME' => 3600, // 1 hour in seconds // Pagination settings 'PAGINATION_DEFAULT' => 15, // Default items per page 'PAGINATION_MAX' => 100, // Maximum items per page // File upload settings 'MAX_UPLOAD_SIZE' => 10485760, // 10MB in bytes 'ALLOWED_FILE_TYPES' => [ 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'application/pdf', 'text/plain', 'text/csv', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/x-7z-compressed', 'application/x-tar', 'application/gzip' ], 'UPLOAD_DIR' => __DIR__ . '/../uploads', // Rate limiting 'RATE_LIMIT_DEFAULT' => 100, // Requests per minute for general 'RATE_LIMIT_API' => 60, // Requests per minute for API // Audit log settings 'AUDIT_LOG_RETENTION_DAYS' => 90 ]; ?>