src/CoreBundle/EventListener/DcGeneral/DefinitionBuilder/AbstractConditionBuilder.php
protected function addHierarchicalConditions()
    {
        // Not hierarchical? Get out.
        if ($this->container->getBasicDefinition()->getMode() !== BasicDefinitionInterface::MODE_HIERARCHICAL) {
            return;
        }

        $relationship = $this->getRootCondition();

        // NOTE: this might bear problems when the definition will get serialized as the input value will not change.
        if (Input::get('pid')) {
            $parentValue = ModelId::fromSerialized(Input::get('pid'))->getId();
        } else {
            $parentValue = '0';
        }

        if (!$relationship->getSetters()) {
            $relationship
                ->setSetters([['property' => 'pid', 'value' => $parentValue]]);
        }

        $builder = FilterBuilder::fromArrayForRoot((array) $relationship->getFilterArray())->getFilter();

        $builder->andPropertyEquals('pid', $parentValue);

        $relationship
            ->setFilterArray($builder->getAllAsArray());

        $setter  = [['to_field' => 'pid', 'from_field' => 'id']];
        $inverse = [];

        /** @var ParentChildConditionInterface $relationship */
        $relationship = $this->definition->getChildCondition($this->container->getName(), $this->container->getName());
        if ($relationship === null) {
            $relationship = new ParentChildCondition();
            $relationship
                ->setSourceName($this->container->getName())
                ->setDestinationName($this->container->getName());
            $this->definition->addChildCondition($relationship);
        } else {
            $setter  = array_merge_recursive($setter, $relationship->getSetters());
            $inverse = array_merge_recursive($inverse, $relationship->getInverseFilterArray());
        }

        // For tl_ prefix, the only unique target can be the id?
        // maybe load parent dc and scan for unique in config then.
        $relationship
            ->setFilterArray(
                FilterBuilder::fromArray($relationship->getFilterArray())
                    ->getFilter()
                    ->andRemotePropertyEquals('pid', 'id')
                    ->getAllAsArray()
            )
            ->setSetters($setter)
            ->setInverseFilterArray($inverse);
    }
protected function addHierarchicalConditions()
    {
        // Not hierarchical? Get out.
        if ($this->container->getBasicDefinition()->getMode() !== BasicDefinitionInterface::MODE_HIERARCHICAL) {
            return;
        }

        $relationship = $this->getRootCondition();

        // NOTE: this might bear problems when the definition will get serialized as the input value will not change.
        if (Input::get('pid')) {
            $parentValue = ModelId::fromSerialized(Input::get('pid'))->getId();
        } else {
            $parentValue = '0';
        }

        if (!$relationship->getSetters()) {
            $relationship
                ->setSetters([['property' => 'pid', 'value' => $parentValue]]);
        }

        $builder = FilterBuilder::fromArrayForRoot((array) $relationship->getFilterArray())->getFilter();

        $builder->andPropertyEquals('pid', $parentValue);

        $relationship
            ->setFilterArray($builder->getAllAsArray());

        $setter  = [['to_field' => 'pid', 'from_field' => 'id']];
        $inverse = [];

        /** @var ParentChildConditionInterface $relationship */
        $relationship = $this->definition->getChildCondition($this->container->getName(), $this->container->getName());
        if ($relationship === null) {
            $relationship = new ParentChildCondition();
            $relationship
                ->setSourceName($this->container->getName())
                ->setDestinationName($this->container->getName());
            $this->definition->addChildCondition($relationship);
        } else {
            $setter  = array_merge_recursive($setter, $relationship->getSetters());
            $inverse = array_merge_recursive($inverse, $relationship->getInverseFilterArray());
        }

        // For tl_ prefix, the only unique target can be the id?
        // maybe load parent dc and scan for unique in config then.
        $relationship
            ->setFilterArray(
                FilterBuilder::fromArray($relationship->getFilterArray())
                    ->getFilter()
                    ->andRemotePropertyEquals('pid', 'id')
                    ->getAllAsArray()
            )
            ->setSetters($setter)
            ->setInverseFilterArray($inverse);
    }
protected function addHierarchicalConditions ( ) { // Not hierarchical? Get out. if ( $ this -> container -> getBasicDefinition ( ) -> getMode ( ) !== BasicDefinitionInterface :: MODE_HIERARCHICAL ) { return ; } $ relationship = $ this -> getRootCondition ( ) ; // NOTE: this might bear problems when the definition will get serialized as the input value will not change. if ( Input :: get ( 'pid' ) ) { $ parentValue = ModelId :: fromSerialized ( Input :: get ( 'pid' ) ) -> getId ( ) ; } else { $ parentValue = '0' ; } if ( ! $ relationship -> getSetters ( ) ) { $ relationship -> setSetters ( [ [ 'property' => 'pid' , 'value' => $ parentValue ] ] ) ; } $ builder = FilterBuilder :: fromArrayForRoot ( ( array ) $ relationship -> getFilterArray ( ) ) -> getFilter ( ) ; $ builder -> andPropertyEquals ( 'pid' , $ parentValue ) ; $ relationship -> setFilterArray ( $ builder -> getAllAsArray ( ) ) ; $ setter = [ [ 'to_field' => 'pid' , 'from_field' => 'id' ] ] ; $ inverse = [ ] ; /** @var ParentChildConditionInterface $relationship */ $ relationship = $ this -> definition -> getChildCondition ( $ this -> container -> getName ( ) , $ this -> container -> getName ( ) ) ; if ( $ relationship === null ) { $ relationship = new ParentChildCondition ( ) ; $ relationship -> setSourceName ( $ this -> container -> getName ( ) ) -> setDestinationName ( $ this -> container -> getName ( ) ) ; $ this -> definition -> addChildCondition ( $ relationship ) ; } else { $ setter = array_merge_recursive ( $ setter , $ relationship -> getSetters ( ) ) ; $ inverse = array_merge_recursive ( $ inverse , $ relationship -> getInverseFilterArray ( ) ) ; } // For tl_ prefix, the only unique target can be the id? // maybe load parent dc and scan for unique in config then. $ relationship -> setFilterArray ( FilterBuilder :: fromArray ( $ relationship -> getFilterArray ( ) ) -> getFilter ( ) -> andRemotePropertyEquals ( 'pid' , 'id' ) -> getAllAsArray ( ) ) -> setSetters ( $ setter ) -> setInverseFilterArray ( $ inverse ) ; }
Parse the correct conditions for a MetaModel with variant support.

@return void
Parse the correct conditions for a MetaModel with variant support .