public static function asHtml(array $richText, LinkResolver $linkResolver = null)
    {
        $groups = [];

        if(is_array($richText) && key_exists('dimensions', $richText)) {
            return self::asImageBlock($richText);
        }

        foreach ($richText as $block) {
            $block = (object) $block;
            $count = count($groups);

            // Check if block is image
            if(empty($block->type)) {
                var_dump($richText);
                die();
            }

            if ($count > 0) {
                $lastOne = $groups[$count - 1];
                if ('ul' == $lastOne->getTag() && $block->type === 'list-item') {
                    $lastOne->addBlock($block);
                } elseif ('ol' == $lastOne->getTag() && $block->type === 'o-list-item') {
                    $lastOne->addBlock($block);
                } elseif ($block->type === 'list-item') {
                    $newBlockGroup = new BlockGroup('ul', array());
                    $newBlockGroup->addBlock($block);
                    array_push($groups, $newBlockGroup);
                } else {
                    if ($block->type === 'o-list-item') {
                        $newBlockGroup = new BlockGroup('ol', array());
                        $newBlockGroup->addBlock($block);
                        array_push($groups, $newBlockGroup);
                    } else {
                        $newBlockGroup = new BlockGroup(null, array());
                        $newBlockGroup->addBlock($block);
                        array_push($groups, $newBlockGroup);
                    }
                }
            } else {
                if ($block->type === 'list-item') {
                    $tag = 'ul';
                } elseif ($block->type === 'o-list-item') {
                    $tag = 'ol';
                } else {
                    $tag = null;
                }
                $newBlockGroup = new BlockGroup($tag, array());
                $newBlockGroup->addBlock($block);
                array_push($groups, $newBlockGroup);
            }
        }
        $html = '';
        foreach ($groups as $group) {
            $maybeTag = $group->getTag();
            if ($maybeTag) {
                $html = $html . '<' . $group->getTag() . '>';
                foreach ($group->getBlocks() as $block) {
                    $html = $html . RichText::asHtmlBlock($block, $linkResolver);
                }
                $html = $html . '</' . $group->getTag() . '>';
            } else {
                foreach ($group->getBlocks() as $block) {
                    $html = $html . RichText::asHtmlBlock($block, $linkResolver);
                }
            }
        }
        return $html;
    }
public static function asHtml(array $richText, LinkResolver $linkResolver = null)
    {
        $groups = [];

        if(is_array($richText) && key_exists('dimensions', $richText)) {
            return self::asImageBlock($richText);
        }

        foreach ($richText as $block) {
            $block = (object) $block;
            $count = count($groups);

            // Check if block is image
            if(empty($block->type)) {
                var_dump($richText);
                die();
            }

            if ($count > 0) {
                $lastOne = $groups[$count - 1];
                if ('ul' == $lastOne->getTag() && $block->type === 'list-item') {
                    $lastOne->addBlock($block);
                } elseif ('ol' == $lastOne->getTag() && $block->type === 'o-list-item') {
                    $lastOne->addBlock($block);
                } elseif ($block->type === 'list-item') {
                    $newBlockGroup = new BlockGroup('ul', array());
                    $newBlockGroup->addBlock($block);
                    array_push($groups, $newBlockGroup);
                } else {
                    if ($block->type === 'o-list-item') {
                        $newBlockGroup = new BlockGroup('ol', array());
                        $newBlockGroup->addBlock($block);
                        array_push($groups, $newBlockGroup);
                    } else {
                        $newBlockGroup = new BlockGroup(null, array());
                        $newBlockGroup->addBlock($block);
                        array_push($groups, $newBlockGroup);
                    }
                }
            } else {
                if ($block->type === 'list-item') {
                    $tag = 'ul';
                } elseif ($block->type === 'o-list-item') {
                    $tag = 'ol';
                } else {
                    $tag = null;
                }
                $newBlockGroup = new BlockGroup($tag, array());
                $newBlockGroup->addBlock($block);
                array_push($groups, $newBlockGroup);
            }
        }
        $html = '';
        foreach ($groups as $group) {
            $maybeTag = $group->getTag();
            if ($maybeTag) {
                $html = $html . '<' . $group->getTag() . '>';
                foreach ($group->getBlocks() as $block) {
                    $html = $html . RichText::asHtmlBlock($block, $linkResolver);
                }
                $html = $html . '</' . $group->getTag() . '>';
            } else {
                foreach ($group->getBlocks() as $block) {
                    $html = $html . RichText::asHtmlBlock($block, $linkResolver);
                }
            }
        }
        return $html;
    }
public static function asHtml ( array $ richText , LinkResolver $ linkResolver = null ) { $ groups = [ ] ; if ( is_array ( $ richText ) && key_exists ( 'dimensions' , $ richText ) ) { return self :: asImageBlock ( $ richText ) ; } foreach ( $ richText as $ block ) { $ block = ( object ) $ block ; $ count = count ( $ groups ) ; // Check if block is image if ( empty ( $ block -> type ) ) { var_dump ( $ richText ) ; die ( ) ; } if ( $ count > 0 ) { $ lastOne = $ groups [ $ count - 1 ] ; if ( 'ul' == $ lastOne -> getTag ( ) && $ block -> type === 'list-item' ) { $ lastOne -> addBlock ( $ block ) ; } elseif ( 'ol' == $ lastOne -> getTag ( ) && $ block -> type === 'o-list-item' ) { $ lastOne -> addBlock ( $ block ) ; } elseif ( $ block -> type === 'list-item' ) { $ newBlockGroup = new BlockGroup ( 'ul' , array ( ) ) ; $ newBlockGroup -> addBlock ( $ block ) ; array_push ( $ groups , $ newBlockGroup ) ; } else { if ( $ block -> type === 'o-list-item' ) { $ newBlockGroup = new BlockGroup ( 'ol' , array ( ) ) ; $ newBlockGroup -> addBlock ( $ block ) ; array_push ( $ groups , $ newBlockGroup ) ; } else { $ newBlockGroup = new BlockGroup ( null , array ( ) ) ; $ newBlockGroup -> addBlock ( $ block ) ; array_push ( $ groups , $ newBlockGroup ) ; } } } else { if ( $ block -> type === 'list-item' ) { $ tag = 'ul' ; } elseif ( $ block -> type === 'o-list-item' ) { $ tag = 'ol' ; } else { $ tag = null ; } $ newBlockGroup = new BlockGroup ( $ tag , array ( ) ) ; $ newBlockGroup -> addBlock ( $ block ) ; array_push ( $ groups , $ newBlockGroup ) ; } } $ html = '' ; foreach ( $ groups as $ group ) { $ maybeTag = $ group -> getTag ( ) ; if ( $ maybeTag ) { $ html = $ html . '<' . $ group -> getTag ( ) . '>' ; foreach ( $ group -> getBlocks ( ) as $ block ) { $ html = $ html . RichText :: asHtmlBlock ( $ block , $ linkResolver ) ; } $ html = $ html . '</' . $ group -> getTag ( ) . '>' ; } else { foreach ( $ group -> getBlocks ( ) as $ block ) { $ html = $ html . RichText :: asHtmlBlock ( $ block , $ linkResolver ) ; } } } return $ html ; }
Builds a HTML version of the RichText fragment


@param array $richText the rich text object
@param LinkResolver $linkResolver   the link resolver


@return string the HTML version of the RichText fragment
Builds a HTML version of the RichText fragment