/** * 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); } }