private function updateDatabase()
{
$processedClasses = [];
if (!empty($this->classDefinitions)) {
foreach ($this->classDefinitions as $cl) {
unset($this->oldClassDefinitions[$cl['classname']]);
if (!$processedClasses[$cl['classname']]) {
$class = Object\ClassDefinition::getById($cl['classname']);
$this->getDao()->createUpdateTable($class);
$processedClasses[$cl['classname']] = true;
}
}
}
if (!empty($this->oldClassDefinitions)) {
foreach ($this->oldClassDefinitions as $cl) {
$class = Object\ClassDefinition::getById($cl);
if ($class) {
$this->getDao()->delete($class);
foreach ($class->getFieldDefinitions() as $fieldDef) {
if ($fieldDef instanceof Object\ClassDefinition\Data\Objectbricks) {
$allowedTypes = $fieldDef->getAllowedTypes();
$idx = array_search($this->getKey(), $allowedTypes);
if ($idx !== false) {
array_splice($allowedTypes, $idx, 1);
}
$fieldDef->setAllowedTypes($allowedTypes);
}
}
$class->save();
}
}
}
}