/**
* Handle the update of a MetaModel and all attached data.
*
* @param PostPersistModelEvent $event The event.
*
* @return void
*/
public function handleUpdate(PostPersistModelEvent $event)
{
if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel') {
return;
}
$old = $event->getOriginalModel();
$new = $event->getModel();
$oldTable = $old ? $old->getProperty('tableName') : null;
$newTable = $new->getProperty('tableName');
// Table name changed?
if ($oldTable !== $newTable) {
if ($oldTable && $this->getDatabase()->tableExists($oldTable, null, true)) {
TableManipulation::renameTable($oldTable, $newTable);
// TODO: notify attributes that the MetaModel has changed its table name.
} else {
TableManipulation::createTable($newTable);
}
}
TableManipulation::setVariantSupport($newTable, $new->getProperty('varsupport'));
}