Skip to content

Commit db8749c

Browse files
committed
Merge remote-tracking branch 'ContaoBlackForest-Archive/hotfix/deep_delete' into hotfix/alpha-12
2 parents d6ca598 + ec5f17a commit db8749c

File tree

1 file changed

+1
-143
lines changed

1 file changed

+1
-143
lines changed

src/MetaModels/DcGeneral/Events/Table/MetaModels/Subscriber.php

Lines changed: 1 addition & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -335,142 +335,6 @@ public function ensureTableNamePrefix(EncodePropertyValueFromWidgetEvent $event)
335335
$event->setValue($tableName);
336336
}
337337

338-
/**
339-
* Destroy auxiliary data of attributes and delete the attributes themselves from the database.
340-
*
341-
* @param IMetaModel $metaModel The MetaModel to destroy.
342-
*
343-
* @return void
344-
*/
345-
protected function destroyAttributes(IMetaModel $metaModel)
346-
{
347-
foreach ($metaModel->getAttributes() as $attribute) {
348-
$attribute->destroyAUX();
349-
}
350-
351-
$this->getDatabase()
352-
->prepare('DELETE FROM tl_metamodel_attribute WHERE pid=?')
353-
->execute($metaModel->get('id'));
354-
}
355-
356-
/**
357-
* Destroy the dca combinations for a MetaModel.
358-
*
359-
* @param IMetaModel $metaModel The MetaModel to destroy.
360-
*
361-
* @return void
362-
*/
363-
protected function destroyDcaCombinations(IMetaModel $metaModel)
364-
{
365-
$this->getDatabase()
366-
->prepare('DELETE FROM tl_metamodel_dca_combine WHERE pid=?')
367-
->execute($metaModel->get('id'));
368-
}
369-
370-
/**
371-
* Destroy the input screens for a MetaModel.
372-
*
373-
* @param IMetaModel $metaModel The MetaModel to destroy.
374-
*
375-
* @return void
376-
*/
377-
protected function destroyInputScreens(IMetaModel $metaModel)
378-
{
379-
$database = $this->getDatabase();
380-
// Delete everything from dca settings.
381-
$idList = $database
382-
->prepare('SELECT id FROM tl_metamodel_dca WHERE pid=?')
383-
->execute($metaModel->get('id'))
384-
->fetchEach('id');
385-
386-
if ($idList) {
387-
$database
388-
->prepare(
389-
sprintf(
390-
'DELETE FROM tl_metamodel_dcasetting WHERE pid IN (%s)',
391-
implode(',', $idList)
392-
)
393-
)
394-
->execute();
395-
$database
396-
->prepare(
397-
sprintf(
398-
'DELETE FROM tl_metamodel_dca_sortgroup WHERE pid IN (%s)',
399-
implode(',', $idList)
400-
)
401-
)
402-
->execute();
403-
}
404-
405-
// Delete the input screens.
406-
$database
407-
->prepare('DELETE FROM tl_metamodel_dca WHERE pid=?')
408-
->execute($metaModel->get('id'));
409-
}
410-
411-
/**
412-
* Destroy the render settings for a MetaModel.
413-
*
414-
* @param IMetaModel $metaModel The MetaModel to destroy.
415-
*
416-
* @return void
417-
*/
418-
protected function destroyRenderSettings(IMetaModel $metaModel)
419-
{
420-
$database = $this->getDatabase();
421-
// Delete everything from render settings.
422-
$arrIds = $database
423-
->prepare('SELECT id FROM tl_metamodel_rendersettings WHERE pid=?')
424-
->execute($metaModel->get('id'))
425-
->fetchEach('id');
426-
427-
if ($arrIds) {
428-
$database
429-
->prepare(
430-
sprintf(
431-
'DELETE FROM tl_metamodel_rendersetting WHERE pid IN (%s)',
432-
implode(',', $arrIds)
433-
)
434-
)
435-
->execute();
436-
}
437-
438-
// Delete the render settings.
439-
$database
440-
->prepare('DELETE FROM tl_metamodel_rendersettings WHERE pid=?')
441-
->execute($metaModel->get('id'));
442-
}
443-
444-
/**
445-
* Destroy the filter settings for a MetaModel.
446-
*
447-
* @param IMetaModel $metaModel The MetaModel to destroy.
448-
*
449-
* @return void
450-
*/
451-
protected function destroyFilterSettings(IMetaModel $metaModel)
452-
{
453-
$database = $this->getDatabase();
454-
// Delete everything from filter settings.
455-
$arrIds = $database
456-
->prepare('SELECT id FROM tl_metamodel_filter WHERE pid=?')
457-
->execute($metaModel->get('id'))
458-
->fetchEach('id');
459-
if ($arrIds) {
460-
$database
461-
->prepare(
462-
sprintf(
463-
'DELETE FROM tl_metamodel_filtersetting WHERE pid IN (%s)',
464-
implode(',', $arrIds)
465-
)
466-
)
467-
->execute();
468-
}
469-
$database
470-
->prepare('DELETE FROM tl_metamodel_filter WHERE pid=?')
471-
->execute($metaModel->get('id'));
472-
}
473-
474338
/**
475339
* Handle the deletion of a MetaModel and all attached data.
476340
*
@@ -480,20 +344,14 @@ protected function destroyFilterSettings(IMetaModel $metaModel)
480344
*/
481345
public function handleDelete(PreDeleteModelEvent $event)
482346
{
483-
if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel') {
347+
if ($event->getModel()->getProviderName() !== 'tl_metamodel') {
484348
return;
485349
}
486350

487351
$factory = $this->getServiceContainer()->getFactory();
488352

489353
$metaModel = $factory->getMetaModel($factory->translateIdToMetaModelName($event->getModel()->getId()));
490354
if ($metaModel) {
491-
$this->destroyAttributes($metaModel);
492-
$this->destroyDcaCombinations($metaModel);
493-
$this->destroyInputScreens($metaModel);
494-
$this->destroyRenderSettings($metaModel);
495-
$this->destroyFilterSettings($metaModel);
496-
497355
TableManipulation::deleteTable($metaModel->getTableName());
498356
}
499357
}

0 commit comments

Comments
 (0)