protected function formatMediaItemField(MediaItemField $field, ItemInterface $item)
    {
        $elements = [];

        $method = $field->getMethod();
        $values = $item->{$method}();

        if (null === $values) {
            return $elements;
        }

        if (!is_array($values) || (is_array($values) && isset($values['value']))) {
            $values = [$values];
        }

        foreach ($values as $value) {
            if (!isset($value['type']) || !isset($value['length']) || !isset($value['value'])) {
                throw new \InvalidArgumentException('Item media method must returns an array with following keys: type, length & value.');
            }

            $elementName = $field->getName();
            $elementName = $elementName[$this->getName()];

            $element = $this->dom->createElement($elementName);

            $this->addAttributes($element, $field, $item);

            switch ($this->getName()) {
                case 'rss':
                    $element->setAttribute('url', $value['value']);
                    break;

                case 'atom':
                    $element->setAttribute('rel', 'enclosure');
                    $element->setAttribute('href', $value['value']);
                    break;
            }

            $element->setAttribute('type', $value['type']);
            $element->setAttribute('length', $value['length']);

            $elements[] = $element;
        }

        return $elements;
    }
protected function formatMediaItemField(MediaItemField $field, ItemInterface $item)
    {
        $elements = [];

        $method = $field->getMethod();
        $values = $item->{$method}();

        if (null === $values) {
            return $elements;
        }

        if (!is_array($values) || (is_array($values) && isset($values['value']))) {
            $values = [$values];
        }

        foreach ($values as $value) {
            if (!isset($value['type']) || !isset($value['length']) || !isset($value['value'])) {
                throw new \InvalidArgumentException('Item media method must returns an array with following keys: type, length & value.');
            }

            $elementName = $field->getName();
            $elementName = $elementName[$this->getName()];

            $element = $this->dom->createElement($elementName);

            $this->addAttributes($element, $field, $item);

            switch ($this->getName()) {
                case 'rss':
                    $element->setAttribute('url', $value['value']);
                    break;

                case 'atom':
                    $element->setAttribute('rel', 'enclosure');
                    $element->setAttribute('href', $value['value']);
                    break;
            }

            $element->setAttribute('type', $value['type']);
            $element->setAttribute('length', $value['length']);

            $elements[] = $element;
        }

        return $elements;
    }
protected function formatMediaItemField ( MediaItemField $ field , ItemInterface $ item ) { $ elements = [ ] ; $ method = $ field -> getMethod ( ) ; $ values = $ item -> { $ method } ( ) ; if ( null === $ values ) { return $ elements ; } if ( ! is_array ( $ values ) || ( is_array ( $ values ) && isset ( $ values [ 'value' ] ) ) ) { $ values = [ $ values ] ; } foreach ( $ values as $ value ) { if ( ! isset ( $ value [ 'type' ] ) || ! isset ( $ value [ 'length' ] ) || ! isset ( $ value [ 'value' ] ) ) { throw new \ InvalidArgumentException ( 'Item media method must returns an array with following keys: type, length & value.' ) ; } $ elementName = $ field -> getName ( ) ; $ elementName = $ elementName [ $ this -> getName ( ) ] ; $ element = $ this -> dom -> createElement ( $ elementName ) ; $ this -> addAttributes ( $ element , $ field , $ item ) ; switch ( $ this -> getName ( ) ) { case 'rss' : $ element -> setAttribute ( 'url' , $ value [ 'value' ] ) ; break ; case 'atom' : $ element -> setAttribute ( 'rel' , 'enclosure' ) ; $ element -> setAttribute ( 'href' , $ value [ 'value' ] ) ; break ; } $ element -> setAttribute ( 'type' , $ value [ 'type' ] ) ; $ element -> setAttribute ( 'length' , $ value [ 'length' ] ) ; $ elements [ ] = $ element ; } return $ elements ; }
Format a media item field.

@param MediaItemField $field A media item field instance
@param ItemInterface  $item  An entity instance

@throws \InvalidArgumentException if media array format waiting to be returned is not well-formatted

@return array|null|\DOMElement
Format a media item field .