plugin/exo/Serializer/Item/ItemSerializer.php
private function deserializeResources(Item $question, array $resources = [], array $options = [])
    {
        $resourceEntities = $question->getResources()->toArray();

        foreach ($resources as $resourceData) {
            $existingResource = null;

            // Searches for an existing resource entity.
            foreach ($resourceEntities as $entityIndex => $entityResource) {
                /** @var ItemResource $entityResource */
                if ((string) $entityResource->getId() === $resourceData['id']) {
                    $existingResource = $entityResource;
                    unset($resourceEntities[$entityIndex]);
                    break;
                }
            }

            // Link resource to item
            if (empty($existingResource)) {
                $obj = $this->resourceContentSerializer->deserialize($resourceData, $existingResource, $options);
                if ($obj) {
                    if ($obj instanceof ResourceNode) {
                        $itemResource = new ItemResource();
                        $itemResource->setResourceNode($obj);
                        $itemResource->setQuestion($question);
                        $obj = $itemResource;
                    }
                    $question->addResource($obj);
                }
            }
        }

        // Remaining resources are no longer in the Item
        if (0 < count($resourceEntities)) {
            foreach ($resourceEntities as $resourceToRemove) {
                $question->removeResource($resourceToRemove);
            }
        }
    }
private function deserializeResources(Item $question, array $resources = [], array $options = [])
    {
        $resourceEntities = $question->getResources()->toArray();

        foreach ($resources as $resourceData) {
            $existingResource = null;

            // Searches for an existing resource entity.
            foreach ($resourceEntities as $entityIndex => $entityResource) {
                /** @var ItemResource $entityResource */
                if ((string) $entityResource->getId() === $resourceData['id']) {
                    $existingResource = $entityResource;
                    unset($resourceEntities[$entityIndex]);
                    break;
                }
            }

            // Link resource to item
            if (empty($existingResource)) {
                $obj = $this->resourceContentSerializer->deserialize($resourceData, $existingResource, $options);
                if ($obj) {
                    if ($obj instanceof ResourceNode) {
                        $itemResource = new ItemResource();
                        $itemResource->setResourceNode($obj);
                        $itemResource->setQuestion($question);
                        $obj = $itemResource;
                    }
                    $question->addResource($obj);
                }
            }
        }

        // Remaining resources are no longer in the Item
        if (0 < count($resourceEntities)) {
            foreach ($resourceEntities as $resourceToRemove) {
                $question->removeResource($resourceToRemove);
            }
        }
    }
private function deserializeResources ( Item $ question , array $ resources = [ ] , array $ options = [ ] ) { $ resourceEntities = $ question -> getResources ( ) -> toArray ( ) ; foreach ( $ resources as $ resourceData ) { $ existingResource = null ; // Searches for an existing resource entity. foreach ( $ resourceEntities as $ entityIndex => $ entityResource ) { /** @var ItemResource $entityResource */ if ( ( string ) $ entityResource -> getId ( ) === $ resourceData [ 'id' ] ) { $ existingResource = $ entityResource ; unset ( $ resourceEntities [ $ entityIndex ] ) ; break ; } } // Link resource to item if ( empty ( $ existingResource ) ) { $ obj = $ this -> resourceContentSerializer -> deserialize ( $ resourceData , $ existingResource , $ options ) ; if ( $ obj ) { if ( $ obj instanceof ResourceNode ) { $ itemResource = new ItemResource ( ) ; $ itemResource -> setResourceNode ( $ obj ) ; $ itemResource -> setQuestion ( $ question ) ; $ obj = $ itemResource ; } $ question -> addResource ( $ obj ) ; } } } // Remaining resources are no longer in the Item if ( 0 < count ( $ resourceEntities ) ) { foreach ( $ resourceEntities as $ resourceToRemove ) { $ question -> removeResource ( $ resourceToRemove ) ; } } }
Deserializes Item resources.

@param Item  $question
@param array $resources
@param array $options
Deserializes Item resources .