2024-09-24 14:20:49 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Socialbox\Classes;
|
|
|
|
|
2024-10-24 15:15:14 -04:00
|
|
|
use Socialbox\Classes\Configuration\CacheConfiguration;
|
|
|
|
use Socialbox\Classes\Configuration\DatabaseConfiguration;
|
2024-10-25 13:37:09 -04:00
|
|
|
use Socialbox\Classes\Configuration\RegistrationConfiguration;
|
2024-10-24 15:15:14 -04:00
|
|
|
|
2024-09-24 14:20:49 -04:00
|
|
|
class Configuration
|
|
|
|
{
|
|
|
|
private static ?array $configuration = null;
|
2024-10-24 15:15:14 -04:00
|
|
|
private static ?DatabaseConfiguration $databaseConfiguration = null;
|
|
|
|
private static ?CacheConfiguration $cacheConfiguration = null;
|
2024-10-25 13:37:09 -04:00
|
|
|
private static ?RegistrationConfiguration $registrationConfiguration = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initializes the configuration settings for the application. This includes
|
|
|
|
* settings for the instance, security, database, cache layer, and registration.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
2024-10-24 15:15:14 -04:00
|
|
|
private static function initializeConfiguration(): void
|
2024-09-24 14:20:49 -04:00
|
|
|
{
|
2024-10-24 15:15:14 -04:00
|
|
|
$config = new \ConfigLib\Configuration('socialbox');
|
|
|
|
|
|
|
|
// False by default, requires the user to enable it.
|
|
|
|
$config->setDefault('instance.enabled', false);
|
2024-09-24 14:20:49 -04:00
|
|
|
|
2024-10-24 15:15:14 -04:00
|
|
|
$config->setDefault('security.display_internal_exceptions', false);
|
2024-09-25 00:40:46 -04:00
|
|
|
|
2024-10-25 13:37:09 -04:00
|
|
|
// Database configuration
|
2024-10-24 15:15:14 -04:00
|
|
|
$config->setDefault('database.host', '127.0.0.1');
|
|
|
|
$config->setDefault('database.port', 3306);
|
|
|
|
$config->setDefault('database.username', 'root');
|
|
|
|
$config->setDefault('database.password', 'root');
|
|
|
|
$config->setDefault('database.name', 'test');
|
2024-09-27 14:20:25 -04:00
|
|
|
|
2024-10-25 13:37:09 -04:00
|
|
|
// Cache layer configuration
|
2024-10-24 15:15:14 -04:00
|
|
|
$config->setDefault('cache.enabled', false);
|
|
|
|
$config->setDefault('cache.engine', 'redis');
|
|
|
|
$config->setDefault('cache.host', '127.0.0.1');
|
|
|
|
$config->setDefault('cache.port', 6379);
|
|
|
|
$config->setDefault('cache.username', null);
|
|
|
|
$config->setDefault('cache.password', null);
|
|
|
|
$config->setDefault('cache.database', 0);
|
|
|
|
$config->setDefault('cache.sessions.enabled', true);
|
|
|
|
$config->setDefault('cache.sessions.ttl', 3600);
|
|
|
|
$config->setDefault('cache.sessions.max', 1000);
|
2024-09-30 03:00:02 -04:00
|
|
|
|
2024-10-25 13:37:09 -04:00
|
|
|
// Registration configuration
|
|
|
|
$config->setDefault('registration.enabled', true);
|
|
|
|
$config->setDefault('registration.password_required', true);
|
|
|
|
$config->setDefault('registration.otp_required', false);
|
|
|
|
$config->setDefault('registration.display_name_required', false);
|
|
|
|
$config->setDefault('registration.email_verification_required', false);
|
|
|
|
$config->setDefault('registration.sms_verification_required', false);
|
|
|
|
$config->setDefault('registration.phone_call_verification_required', false);
|
|
|
|
$config->setDefault('registration.image_captcha_verification_required', true);
|
|
|
|
|
2024-10-24 15:15:14 -04:00
|
|
|
$config->save();
|
2024-09-30 03:00:02 -04:00
|
|
|
|
2024-10-24 15:15:14 -04:00
|
|
|
self::$configuration = $config->getConfiguration();
|
2024-10-25 14:23:43 -04:00
|
|
|
self::$databaseConfiguration = new DatabaseConfiguration(self::$configuration['database']);
|
|
|
|
self::$cacheConfiguration = new CacheConfiguration(self::$configuration['cache']);
|
|
|
|
self::$registrationConfiguration = new RegistrationConfiguration(self::$configuration['registration']);
|
2024-10-24 15:15:14 -04:00
|
|
|
}
|
2024-09-24 14:20:49 -04:00
|
|
|
|
2024-10-25 13:37:09 -04:00
|
|
|
/**
|
|
|
|
* Retrieves the current configuration array. If the configuration is not initialized,
|
|
|
|
* it triggers the initialization process.
|
|
|
|
*
|
|
|
|
* @return array The current configuration array.
|
|
|
|
*/
|
2024-10-24 15:15:14 -04:00
|
|
|
public static function getConfiguration(): array
|
|
|
|
{
|
|
|
|
if(self::$configuration === null)
|
|
|
|
{
|
|
|
|
self::initializeConfiguration();
|
2024-09-24 14:20:49 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
return self::$configuration;
|
|
|
|
}
|
2024-10-24 15:15:14 -04:00
|
|
|
|
2024-10-25 13:37:09 -04:00
|
|
|
/**
|
|
|
|
* Retrieves the current database configuration.
|
|
|
|
*
|
|
|
|
* @return DatabaseConfiguration The configuration settings for the database.
|
|
|
|
*/
|
2024-10-24 15:15:14 -04:00
|
|
|
public static function getDatabaseConfiguration(): DatabaseConfiguration
|
|
|
|
{
|
|
|
|
if(self::$databaseConfiguration === null)
|
|
|
|
{
|
|
|
|
self::initializeConfiguration();
|
|
|
|
}
|
|
|
|
|
|
|
|
return self::$databaseConfiguration;
|
|
|
|
}
|
|
|
|
|
2024-10-25 13:37:09 -04:00
|
|
|
/**
|
|
|
|
* Retrieves the current cache configuration. If the cache configuration
|
|
|
|
* has not been initialized, it will initialize it first.
|
|
|
|
*
|
|
|
|
* @return CacheConfiguration The current cache configuration instance.
|
|
|
|
*/
|
2024-10-24 15:15:14 -04:00
|
|
|
public static function getCacheConfiguration(): CacheConfiguration
|
|
|
|
{
|
|
|
|
if(self::$cacheConfiguration === null)
|
|
|
|
{
|
|
|
|
self::initializeConfiguration();
|
|
|
|
}
|
|
|
|
|
|
|
|
return self::$cacheConfiguration;
|
|
|
|
}
|
2024-10-25 13:37:09 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves the registration configuration.
|
|
|
|
*
|
|
|
|
* This method returns the current RegistrationConfiguration instance.
|
|
|
|
* If the configuration has not been initialized yet, it initializes it first.
|
|
|
|
*
|
|
|
|
* @return RegistrationConfiguration The registration configuration instance.
|
|
|
|
*/
|
|
|
|
public static function getRegistrationConfiguration(): RegistrationConfiguration
|
|
|
|
{
|
|
|
|
if(self::$registrationConfiguration === null)
|
|
|
|
{
|
|
|
|
self::initializeConfiguration();
|
|
|
|
}
|
|
|
|
|
|
|
|
return self::$registrationConfiguration;
|
|
|
|
}
|
2024-09-24 14:20:49 -04:00
|
|
|
}
|