getenv('FIREBASE_API_KEY') ?: '', 'authDomain' => getenv('FIREBASE_AUTH_DOMAIN') ?: '', 'projectId' => getenv('FIREBASE_PROJECT_ID') ?: '', 'storageBucket' => getenv('FIREBASE_STORAGE_BUCKET') ?: '', 'messagingSenderId' => getenv('FIREBASE_MESSAGING_SENDER_ID') ?: '', 'appId' => getenv('FIREBASE_APP_ID') ?: '', ]; } /** * Get a PDO connection to the database. */ function get_db_connection() { static $pdo = null; if ($pdo !== null) { return $pdo; } if (!class_exists('PDO')) { return null; } $url = getenv('DATABASE_URL'); if (!$url) { return null; } $parsedUrl = parse_url($url); if ($parsedUrl === false || !isset($parsedUrl['host'], $parsedUrl['user'], $parsedUrl['pass'], $parsedUrl['path'])) { return null; } $host = $parsedUrl['host']; $port = $parsedUrl['port'] ?? 5432; $user = $parsedUrl['user']; $pass = $parsedUrl['pass']; $db = ltrim($parsedUrl['path'], '/'); $dsn = "pgsql:host=$host;port=$port;dbname=$db"; try { $pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_TIMEOUT => 3, ]); return $pdo; } catch (\Exception $e) { error_log("Database connection failed: " . $e->getMessage()); return null; } }