Proyectos de Subversion LeadersLinked - Services

Rev

Rev 89 | 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;
use LeadersLinked\Library\Functions;

/**
 * @category   Laminas
 * @package    Laminas_Mvc
 * @subpackage View
 */
class RenderingStrategy implements ListenerAggregateInterface
{
    /**
     * 
     * @var Translator
     */
    private $translator;
    
    /**
     * 
     * @var callable[]
     */
    private $listeners;
    
    /**
     * 
     * @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)
    {
        $redirect_url = empty($_SERVER['REDIRECT_URL']) ? $_SERVER['REQUEST_URI'] : $_SERVER['REDIRECT_URL'];
        
        error_log('redirect_url = ' . $redirect_url);
        if(str_contains($redirect_url, 'send')) {
            $response = $e->getResponse();
            
            Functions::sendResponseJson($response, 'aqui199');
            
            
        }
        
        
        error_log("\r\nRenderingStrategy - render\r\n");
        
        $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;
    }
}