Proyectos de Subversion LeadersLinked - Backend

Rev

Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

<?php

declare(strict_types=1);

namespace LeadersLinked\View;;

use Laminas\EventManager\EventManagerInterface;
use Laminas\View\ViewEvent;
use Laminas\EventManager\ListenerAggregateInterface;
use Laminas\Mvc\I18n\Translator;

/**
 * @category   Laminas
 * @package    Laminas_Mvc
 * @subpackage View
 */
class RenderingStrategy implements ListenerAggregateInterface
{
    /**
     * 
     * @var Translator
     */
    private $translator;
    
    /**
     * 
     * @param Translator $translator
     */
    public function __construct($translator)
    {
        $this->translator = $translator;
    }
    
    
    public function attach(EventManagerInterface $events, $priority = null)
    {
        $priority = -999;
        $this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, [$this, 'render'], $priority);
    }
    
    public function detach(EventManagerInterface $events)
    {
        foreach ($this->listeners as $index => $listener) {
            if ($events->detach($listener)) {
                unset($this->listeners[$index]);
            }
        }
    }
    
    public function render(ViewEvent $e)
    {
        
        $renderer = $e->getRenderer();
        $response = $e->getResponse();
        $result   = $e->getResult();
        
/*
        $matches = [];
        preg_match_all( '/LABEL_\w+/', $result, $matches);
        
        print_r($matches); exit;
        */

        $result = preg_replace_callback(
            '/LABEL_\w+/',
            function ( $matches ) {
                return $this->translator->translate($matches[0]);
            },
            $result
        );
        $result = preg_replace_callback(
            '/ERROR_\w+/',
            function ( $matches ) {
                return $this->translator->translate($matches[0]);
            },
            $result
        );
        $response->setContent($result);
        return $response;

        
        
        
    }
}