115 lines
1.4 KiB
PHP
115 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace davigil\conf;
|
|
|
|
|
|
/**
|
|
*/
|
|
class struct_auth
|
|
{
|
|
public string $kind;
|
|
public $data;
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
class struct_source_data_ics_feed
|
|
{
|
|
public string $url;
|
|
public bool $combined;
|
|
public int $lifetime;
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
class struct_source
|
|
{
|
|
public string $kind;
|
|
public $data;
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
class struct_settings
|
|
{
|
|
public string $timezone;
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
class struct_root
|
|
{
|
|
public struct_auth $auth;
|
|
public struct_source $source;
|
|
public struct_settings $settings;
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
class _state
|
|
{
|
|
public static ?struct_root $data = null;
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
function load(
|
|
string $path
|
|
) : void
|
|
{
|
|
$data_raw = \json_decode(
|
|
\file_get_contents(
|
|
$path
|
|
),
|
|
true
|
|
);
|
|
{
|
|
$data = new struct_root();
|
|
// auth
|
|
{
|
|
$auth = new struct_auth();
|
|
$auth->kind = (($data_raw['auth'] ?? [])['kind'] ?? 'none');
|
|
$auth->data = (($data_raw['auth'] ?? [])['data'] ?? null);
|
|
$data->auth = $auth;
|
|
}
|
|
// source
|
|
{
|
|
$source = new struct_source();
|
|
$source->kind = $data_raw['source']['kind'];
|
|
$source->data = ($data_raw['source']['data'] ?? null);
|
|
$data->source = $source;
|
|
}
|
|
// settings
|
|
{
|
|
$settings = new struct_settings();
|
|
$settings->timezone = (($data_raw['settings'] ?? [])['timezone'] ?? 'UTC');
|
|
$data->settings = $settings;
|
|
}
|
|
_state::$data = $data;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
function get(
|
|
) : struct_root
|
|
{
|
|
if (_state::$data === null)
|
|
{
|
|
throw (new \Exception('not yet loaded'));
|
|
}
|
|
else
|
|
{
|
|
return _state::$data;
|
|
}
|
|
}
|
|
|
|
?>
|