Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1 | Ir a la última revisión | | 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
 
25
    /**
26
     *
6749 efrain 27
     * @var callable[]
28
     */
29
    private $listeners;
30
 
31
    /**
32
     *
1 www 33
     * @param Translator $translator
34
     */
35
    public function __construct($translator)
36
    {
37
        $this->translator = $translator;
38
    }
39
 
40
 
41
    public function attach(EventManagerInterface $events, $priority = null)
42
    {
43
        $priority = -999;
44
        $this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, [$this, 'render'], $priority);
45
    }
46
 
47
    public function detach(EventManagerInterface $events)
48
    {
49
        foreach ($this->listeners as $index => $listener) {
50
            if ($events->detach($listener)) {
51
                unset($this->listeners[$index]);
52
            }
53
        }
54
    }
55
 
56
    public function render(ViewEvent $e)
57
    {
58
 
59
        $renderer = $e->getRenderer();
60
        $response = $e->getResponse();
61
        $result   = $e->getResult();
62
 
63
/*
64
        $matches = [];
65
        preg_match_all( '/LABEL_\w+/', $result, $matches);
66
 
67
        print_r($matches); exit;
68
        */
69
 
70
        $result = preg_replace_callback(
71
            '/LABEL_\w+/',
72
            function ( $matches ) {
73
                return $this->translator->translate($matches[0]);
74
            },
75
            $result
76
        );
77
        $result = preg_replace_callback(
78
            '/ERROR_\w+/',
79
            function ( $matches ) {
80
                return $this->translator->translate($matches[0]);
81
            },
82
            $result
83
        );
84
        $response->setContent($result);
85
        return $response;
86
    }
87
}