web-base/core/Configuration/Configuration.class.php

97 lines
2.3 KiB
PHP
Raw Normal View History

2020-02-09 23:02:19 +01:00
<?php
namespace Configuration;
2020-04-03 15:56:04 +02:00
use Objects\ConnectionData;
2020-02-09 23:02:19 +01:00
class Configuration {
2020-04-03 15:56:04 +02:00
private ?ConnectionData $database;
2020-06-25 16:54:58 +02:00
private Settings $settings;
2020-02-09 23:02:19 +01:00
function __construct() {
2020-06-25 16:54:58 +02:00
$this->database = null;
$this->settings = Settings::loadDefaults();
$class = \Configuration\Database::class;
$path = getClassPath($class, true);
if(file_exists($path) && is_readable($path)) {
include_once $path;
if(class_exists($class)) {
$this->database = new \Configuration\Database();
2020-02-09 23:02:19 +01:00
}
}
}
2020-06-25 16:54:58 +02:00
public function getDatabase() : ?ConnectionData {
return $this->database;
}
2020-02-09 23:02:19 +01:00
2020-06-25 16:54:58 +02:00
public function getSettings() : Settings {
return $this->settings;
2020-02-09 23:02:19 +01:00
}
2020-04-03 15:56:04 +02:00
public function create(string $className, $data) {
2020-02-09 23:02:19 +01:00
$path = getClassPath("\\Configuration\\$className");
if($data) {
2020-02-09 23:30:26 +01:00
if(is_string($data)) {
$key = addslashes($data);
$code = intendCode(
"<?php
2020-02-09 23:02:19 +01:00
2020-02-09 23:30:26 +01:00
namespace Configuration;
2020-02-09 23:02:19 +01:00
2020-04-03 15:56:04 +02:00
class $className extends KeyData {
2020-02-09 23:30:26 +01:00
public function __construct() {
2020-04-03 15:56:04 +02:00
parent::__construct('$key');
2020-02-09 23:30:26 +01:00
}
2020-04-03 15:56:04 +02:00
}", false
2020-02-09 23:30:26 +01:00
);
2020-04-03 15:56:04 +02:00
} else if($data instanceof ConnectionData) {
2020-02-09 23:30:26 +01:00
$superClass = get_class($data);
$host = addslashes($data->getHost());
$port = intval($data->getPort());
$login = addslashes($data->getLogin());
$password = addslashes($data->getPassword());
$properties = "";
foreach($data->getProperties() as $key => $val) {
$key = addslashes($key);
$val = is_string($val) ? "'" . addslashes($val) . "'" : $val;
$properties .= "\n\$this->setProperty('$key', $val);";
2020-02-09 23:02:19 +01:00
}
2020-02-09 23:30:26 +01:00
$code = intendCode(
"<?php
namespace Configuration;
class $className extends \\$superClass {
public function __construct() {
parent::__construct('$host', $port, '$login', '$password');$properties
}
2020-06-17 21:39:46 +02:00
}", false
2020-02-09 23:30:26 +01:00
);
2020-04-03 15:56:04 +02:00
} else {
return false;
2020-02-09 23:30:26 +01:00
}
2020-02-09 23:02:19 +01:00
} else {
2020-04-03 15:56:04 +02:00
$code = "<?php";
2020-02-09 23:02:19 +01:00
}
2020-04-02 21:44:35 +02:00
return @file_put_contents($path, $code);
2020-02-09 23:02:19 +01:00
}
2020-04-03 15:56:04 +02:00
public function delete(string $className) {
2020-02-09 23:02:19 +01:00
$path = getClassPath("\\Configuration\\$className");
if(file_exists($path)) {
return unlink($path);
}
return true;
}
2020-04-03 15:56:04 +02:00
}