public function delete()
{
@unlink($this->getDefinitionFile());
@unlink($this->getPhpClassFile());
$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()->delete($class);
$processedClasses[$cl['classname']] = true;
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();
}
}
}
// update classes
$classList = new Object\ClassDefinition\Listing();
$classes = $classList->load();
if (is_array($classes)) {
foreach ($classes as $class) {
foreach ($class->getFieldDefinitions() as $fieldDef) {
if ($fieldDef instanceof Object\ClassDefinition\Data\Objectbricks) {
if (in_array($this->getKey(), $fieldDef->getAllowedTypes())) {
break;
}
}
}
}
}
}