/**
  * 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);
             }
         }
     }
 }
Beispiel #2
0
 /**
  * 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();
     }
 }