/** * Process the event. * * @param AbstractModelAwareEvent $event The event. * * @return void */ private function handleFallback(AbstractModelAwareEvent $event) { $model = $event->getModel(); $dataProvider = $event->getEnvironment()->getDataProvider($model->getProviderName()); $properties = $event->getEnvironment()->getDataDefinition()->getPropertiesDefinition(); foreach (array_keys($model->getPropertiesAsArray()) as $propertyName) { if (!$properties->hasProperty($propertyName)) { continue; } $extra = (array) $properties->getProperty($propertyName)->getExtra(); if (array_key_exists('fallback', $extra) && true === $extra['fallback']) { if (!$dataProvider->isUniqueValue($propertyName, $model->getProperty($propertyName), $model->getId())) { // Reset fallback and save model again to have the correct value. $dataProvider->resetFallback($propertyName); $dataProvider->save($model); } } } }
/** * Check if we have to purge the MetaModels cache. * * @param AbstractModelAwareEvent $event The event holding the model being manipulated. * * @return void * * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function checkPurge(AbstractModelAwareEvent $event) { $table = $event->getModel()->getProviderName(); if ($table == 'tl_metamodel' || $table == 'tl_metamodel_dca' || $table == 'tl_metamodel_dca_sortgroup' || $table == 'tl_metamodel_dcasetting' || $table == 'tl_metamodel_dcasetting_condition' || $table == 'tl_metamodel_attribute' || $table == 'tl_metamodel_filter' || $table == 'tl_metamodel_filtersetting' || $table == 'tl_metamodel_rendersettings' || $table == 'tl_metamodel_rendersetting' || $table == 'tl_metamodel_dca_combine') { $purger = new PurgeCache(); $purger->purge(); } }