DirectorObjectForm: some more steps to simplify...

...this old monster

fixes #13583
This commit is contained in:
Thomas Gelf 2016-12-14 21:07:07 +01:00
parent a30f34a026
commit e85c13ae13
1 changed files with 44 additions and 45 deletions

View File

@ -261,42 +261,27 @@ abstract class DirectorObjectForm extends QuickForm
protected function handleProperties(DbObject $object, & $values)
{
$resolve = $this->assertResolvedImports();
if ($this->hasBeenSent()) {
foreach ($values as $key => $value) {
if (in_array($key, $this->earlyProperties) || substr($key, 0, 4) === 'var_') {
continue;
}
try {
if ($object->hasProperty($key)) {
$object->set($key, $value);
if ($object instanceof IcingaObject) {
$object->resolveUnresolvedRelatedProperties();
}
}
} catch (Exception $e) {
$this->addException($e, $key);
}
}
}
if ($object instanceof IcingaObject) {
$props = (array) $object->toPlainObject(
false,
false,
null,
true // is default//false // Do not resolve IDs
);
} else {
$props = $object->getProperties();
unset($props['vars']);
}
$this->setDefaults($this->removeEmptyProperties($props));
if ($resolve) {
protected function loadInheritedProperties()
{
if ($this->assertResolvedImports()) {
try {
$this->showInheritedProperties($object);
$this->showInheritedProperties($this->object());
} catch (Exception $e) {
$this->addException($e);
}
@ -639,12 +624,19 @@ abstract class DirectorObjectForm extends QuickForm
protected function onRequest()
{
$values = array();
$object = $this->object();
$this->setDefaultsFromObject($object);
$this->prepareFields($object);
if ($this->hasBeenSent()) {
$this->handlePost();
}
$this->loadInheritedProperties();
$this->addFields();
}
protected function handlePost()
{
$object = $this->object();
if ($this->shouldBeDeleted()) {
$this->deleteObject($object);
}
@ -656,20 +648,27 @@ abstract class DirectorObjectForm extends QuickForm
if ($object instanceof IcingaObject) {
$this->setCustomVarValues($object, $post);
}
}
$this->addFields();
$this->handleProperties($object, $values);
// TODO: get rid of this
if ($object instanceof IcingaObject) {
$this->handleRanges($object, $values);
}
$this->handleProperties($object, $values);
/*
// TODO: something like this could be used to remember unstored changes
if ($object->hasBeenModified()) {
$this->addHtmlHint($this->translate('Object has been modified'));
}
*/
protected function setDefaultsFromObject(DbObject $object)
{
/** @var ZfElement $element */
foreach ($this->getElements() as $element) {
$key = $element->getName();
if ($object->hasProperty($key)) {
$value = $object->get($key);
if ($value !== null) {
$element->setValue($value);
}
}
}
}
protected function deleteObject($object)