/**
  * Handle the enforcement request.
  *
  * @param EnforceModelRelationshipEvent $event The event to process.
  *
  * @return void
  */
 public function process(EnforceModelRelationshipEvent $event)
 {
     $environment = $event->getEnvironment();
     $mode = $environment->getDataDefinition()->getBasicDefinition()->getMode();
     if (BasicDefinitionInterface::MODE_PARENTEDLIST !== $mode) {
         return;
     }
     $input = $environment->getInputProvider();
     if (!($parent = $this->loadParentModel($input, $environment))) {
         return;
     }
     $model = $event->getModel();
     $definition = $environment->getDataDefinition();
     $basic = $definition->getBasicDefinition();
     $condition = $definition->getModelRelationshipDefinition()->getChildCondition($basic->getParentDataProvider(), $basic->getDataProvider());
     if ($condition) {
         $condition->applyTo($parent, $model);
     }
 }
 /**
  * Handle the enforcement request.
  *
  * @param EnforceModelRelationshipEvent $event The event to process.
  *
  * @return void
  */
 public function process(EnforceModelRelationshipEvent $event)
 {
     $environment = $event->getEnvironment();
     $mode = $environment->getDataDefinition()->getBasicDefinition()->getMode();
     if (BasicDefinitionInterface::MODE_HIERARCHICAL !== $mode) {
         return;
     }
     $input = $environment->getInputProvider();
     $controller = $environment->getController();
     $model = $event->getModel();
     if ($input->hasParameter('into')) {
         $this->handleInto($input, $controller, $model);
     } elseif ($input->hasParameter('after')) {
         $this->handleAfter($input, $controller, $model);
     }
     // Also enforce the parent condition of the parent provider (if any).
     if ($input->hasParameter('pid')) {
         $parent = $controller->fetchModelFromProvider($input->getParameter('pid'));
         $controller->setParent($model, $parent);
     }
 }