Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16766 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\View;;
6
 
7
use Laminas\EventManager\EventManagerInterface;
8
use Laminas\View\ViewEvent;
9
use Laminas\EventManager\ListenerAggregateInterface;
10
use Laminas\Mvc\I18n\Translator;
11
 
12
/**
13
 * @category   Laminas
14
 * @package    Laminas_Mvc
15
 * @subpackage View
16
 */
17
class RenderingStrategy implements ListenerAggregateInterface
18
{
19
    /**
20
     *
21
     * @var Translator
22
     */
23
    private $translator;
24
 
16766 efrain 25
 
1 www 26
    /**
27
     *
16766 efrain 28
     * @var callable[]
29
     */
30
    private $listeners;
31
 
32
    /**
33
     *
1 www 34
     * @param Translator $translator
35
     */
36
    public function __construct($translator)
37
    {
38
        $this->translator = $translator;
39
    }
40
 
41
 
42
    public function attach(EventManagerInterface $events, $priority = null)
43
    {
44
        $priority = -999;
45
        $this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, [$this, 'render'], $priority);
46
    }
47
 
48
    public function detach(EventManagerInterface $events)
49
    {
50
        foreach ($this->listeners as $index => $listener) {
51
            if ($events->detach($listener)) {
52
                unset($this->listeners[$index]);
53
            }
54
        }
55
    }
56
 
57
    public function render(ViewEvent $e)
58
    {
59
 
60
        $renderer = $e->getRenderer();
61
        $response = $e->getResponse();
62
        $result   = $e->getResult();
63
 
17002 efrain 64
 
1 www 65
        $result = preg_replace_callback(
66
            '/LABEL_\w+/',
67
            function ( $matches ) {
68
                return $this->translator->translate($matches[0]);
69
            },
70
            $result
71
        );
72
        $result = preg_replace_callback(
73
            '/ERROR_\w+/',
74
            function ( $matches ) {
75
                return $this->translator->translate($matches[0]);
76
            },
77
            $result
78
        );
79
        $response->setContent($result);
80
        return $response;
81
 
82
 
83
 
84
 
85
    }
86
}