icingaweb2/library/Icinga/Backend.php
Matthias Jentsch 56e47fd084 Add an ini writer for configuration files
Add an ini writer that respects the file structure and the comments that may be
already present in the config file. Move Application/Config.php into
Config/Config.php.

refs #4352
2013-08-07 15:58:42 +02:00

41 lines
1.2 KiB
PHP
Executable File

<?php
namespace Icinga;
use Icinga\Config\Config as IcingaConfig;
use Icinga\Authentication\Manager as AuthManager;
class Backend
{
protected static $instances = array();
protected function __construct() {}
public static function getInstance($name = null)
{
if (! array_key_exists($name, self::$instances)) {
$backends = IcingaConfig::app('backends');
if ($name === null) {
$name = AuthManager::getInstance()->getSession()->get('backend');
}
if ($name === null) {
$backendKeys = array_keys($backends->toArray());
$name = array_shift($backendKeys);
}
if (isset($backends->$name)) {
$config = $backends->$name;
$type = $config->type;
$type[0] = strtoupper($type[0]);
$class = '\\Monitoring\\Backend\\' . $type;
self::$instances[$name] = new $class($config);
} else {
throw new \Exception(sprintf(
'Got no config for backend %s',
$name
));
}
}
return self::$instances[$name];
}
}