39 lines
1.0 KiB
PHP
39 lines
1.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Budget\Auth;
|
|
use Budget\BudgetService;
|
|
use Budget\Database;
|
|
use Budget\Settings;
|
|
|
|
const APP_ROOT = __DIR__ . '/..';
|
|
|
|
spl_autoload_register(static function (string $class): void {
|
|
$prefix = 'Budget\\';
|
|
if (!str_starts_with($class, $prefix)) {
|
|
return;
|
|
}
|
|
$path = __DIR__ . '/' . str_replace('\\', '/', substr($class, strlen($prefix))) . '.php';
|
|
if (is_file($path)) {
|
|
require $path;
|
|
}
|
|
});
|
|
|
|
if (PHP_SAPI !== 'cli' && session_status() !== PHP_SESSION_ACTIVE) {
|
|
session_name('neon_ledger_session');
|
|
session_set_cookie_params([
|
|
'httponly' => true,
|
|
'samesite' => 'Lax',
|
|
'secure' => !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off',
|
|
]);
|
|
session_start();
|
|
}
|
|
|
|
$database = new Database(APP_ROOT . '/config/database.json', APP_ROOT);
|
|
$pdo = $database->pdo();
|
|
$settings = new Settings($pdo);
|
|
date_default_timezone_set((string) $settings->get('app.timezone', 'America/New_York'));
|
|
$auth = new Auth($pdo, $settings);
|
|
$budget = new BudgetService($pdo, $settings);
|