<?php

namespace Wga\Core\ViewHelpers;

use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use Closure;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;

/**
 * Class SvgViewHelper
 * @package Wga\Core\ViewHelpers
 */
class SvgViewHelper extends AbstractViewHelper
{
    public function initializeArguments()
    {
        $this->registerArgument('fileSrc', 'string', 'file src', false);
    }

    /**
     * @param array $arguments
     * @param Closure $renderChildrenClosure
     * @param RenderingContextInterface $renderingContext
     * @return bool|mixed|string
     */
    public static function renderStatic(
        array $arguments,
        Closure $renderChildrenClosure,
        RenderingContextInterface $renderingContext
    ) {
        $fileSrc = $arguments['fileSrc'];

        if (null === $fileSrc) {
            return false;
        }

        $svgContent = file_get_contents($fileSrc);

        if (!$svgContent) {
            return false;
        }

        $previousValueOfEntityLoader = libxml_disable_entity_loader(true);
        $svgElement = simplexml_load_string($svgContent);
        libxml_disable_entity_loader($previousValueOfEntityLoader);

        $domXml = dom_import_simplexml($svgElement);

        return $domXml->ownerDocument->saveXML($domXml->ownerDocument->documentElement);
    }
}
