2017-02-08 10:08:29 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Icinga\Module\Businessprocess\Web\Form;
|
|
|
|
|
|
|
|
|
|
use Icinga\Application\Config;
|
2021-11-12 06:07:40 -05:00
|
|
|
use Icinga\Application\Icinga;
|
2017-02-08 10:08:29 -05:00
|
|
|
use Icinga\Authentication\Auth;
|
|
|
|
|
use Icinga\Module\Businessprocess\Storage\LegacyStorage;
|
|
|
|
|
use Icinga\Module\Businessprocess\BpConfig;
|
|
|
|
|
|
|
|
|
|
abstract class BpConfigBaseForm extends QuickForm
|
|
|
|
|
{
|
|
|
|
|
/** @var LegacyStorage */
|
|
|
|
|
protected $storage;
|
|
|
|
|
|
|
|
|
|
/** @var BpConfig */
|
|
|
|
|
protected $config;
|
|
|
|
|
|
|
|
|
|
protected function listAvailableBackends()
|
|
|
|
|
{
|
2021-11-12 06:07:40 -05:00
|
|
|
$keys = [];
|
|
|
|
|
$moduleManager = Icinga::app()->getModuleManager();
|
|
|
|
|
if ($moduleManager->hasEnabled('monitoring')) {
|
|
|
|
|
$keys = array_keys(Config::module('monitoring', 'backends')->toArray());
|
|
|
|
|
$keys = array_combine($keys, $keys);
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-27 19:08:24 -04:00
|
|
|
return $keys;
|
2017-02-08 10:08:29 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function setStorage(LegacyStorage $storage)
|
|
|
|
|
{
|
|
|
|
|
$this->storage = $storage;
|
|
|
|
|
return $this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function setProcessConfig(BpConfig $config)
|
|
|
|
|
{
|
|
|
|
|
$this->config = $config;
|
|
|
|
|
return $this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function prepareMetadata(BpConfig $config)
|
|
|
|
|
{
|
|
|
|
|
$meta = $config->getMetadata();
|
|
|
|
|
$auth = Auth::getInstance();
|
|
|
|
|
$meta->set('Owner', $auth->getUser()->getUsername());
|
2019-02-18 07:43:06 -05:00
|
|
|
|
|
|
|
|
if ($auth->hasPermission('businessprocess/showall')) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2017-02-08 10:08:29 -05:00
|
|
|
$prefixes = $auth->getRestrictions('businessprocess/prefix');
|
|
|
|
|
if (! empty($prefixes) && ! $meta->nameIsPrefixedWithOneOf($prefixes)) {
|
|
|
|
|
if (count($prefixes) === 1) {
|
|
|
|
|
$this->getElement('name')->addError(sprintf(
|
|
|
|
|
$this->translate('Please prefix the name with "%s"'),
|
|
|
|
|
current($prefixes)
|
|
|
|
|
));
|
|
|
|
|
} else {
|
|
|
|
|
$this->getElement('name')->addError(sprintf(
|
|
|
|
|
$this->translate('Please prefix the name with one of "%s"'),
|
|
|
|
|
implode('", "', $prefixes)
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|