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

145 lines
3.1 KiB
PHP
Raw Normal View History

2020-02-09 23:02:19 +01:00
<?php
namespace Configuration;
class Configuration {
private $database;
private $mail;
private $jwt;
function __construct() {
}
public function load() {
try {
$classes = array(
\Configuration\Database::class => &$this->database,
\Configuration\Mail::class => &$this->mail,
2020-02-09 23:30:26 +01:00
\Configuration\JWT::class => &$this->jwt
2020-02-09 23:02:19 +01:00
);
$success = true;
foreach($classes as $class => &$ref) {
$path = getClassPath($class);
if(!file_exists($path)) {
$success = false;
} else {
include_once $path;
if(class_exists($class)) {
$ref = new $class();
}
}
}
return $success;
} catch(\Error $e) {
die($e);
}
}
public function getDatabase() { return $this->database; }
public function getJWT() { return $this->jwt; }
public function getMail() { return $this->mail; }
public function isFilePresent($className) {
$path = getClassPath("\\Configuration\\$className");
return file_exists($path);
}
public function create($className, $data) {
$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-02-09 23:30:26 +01:00
class $className {
2020-02-09 23:02:19 +01:00
2020-02-09 23:30:26 +01:00
private \$key;
2020-02-09 23:02:19 +01:00
2020-02-09 23:30:26 +01:00
public function __construct() {
\$this->key = '$key';
}
2020-04-02 21:44:35 +02:00
2020-02-09 23:30:26 +01:00
public function getKey() {
return \$this->key;
}
2020-02-09 23:02:19 +01:00
}
2020-02-09 23:30:26 +01:00
?>", false
);
} else {
$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
}
}
?>", false
);
}
2020-02-09 23:02:19 +01:00
} else {
$code = intendCode(
"<?php
?>", false);
}
2020-04-02 21:44:35 +02:00
return @file_put_contents($path, $code);
2020-02-09 23:02:19 +01:00
}
public function delete($className) {
$path = getClassPath("\\Configuration\\$className");
if(file_exists($path)) {
return unlink($path);
}
return true;
}
2020-04-02 21:44:35 +02:00
public static function checkPermissions() {
$classes = array(
\Configuration\Database::class,
\Configuration\Mail::class,
\Configuration\JWT::class
);
$files = array();
foreach($classes as $class) {
$file = getClassPath($class);
if(!is_writeable($file)) {
$files[] = $file;
}
}
return $files;
}
2020-02-09 23:02:19 +01:00
};
?>