/var/www/html_fr/wp-content/plugins/fluent-smtp/includes/View/View.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?php

namespace FluentMail\Includes\View;

use 
Exception;

class 
View
{
    protected 
$app;

    protected 
$path;

    protected 
$data = [];
    
    protected static 
$sharedData = [];

    public function 
__construct($app)
    {
        
$this->app $app;
    }

    
/**
     * Generate and echo/print a view file
     * @param  string $path
     * @param  array  $data
     * @return void
     */
    
public function render($path$data = [])
    {
        echo 
$this->make($path$data); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
    
}

    
/**
     * Generate a view file
     * @param  string $path
     * @param  array  $data
     * @return string [generated html]
     * @throws Exception
     */
    
public function make($path$data = [])
    {
        if (
file_exists($this->path $this->resolveFilePath($path))) {
            
$this->data $data;
            return 
$this;
        }

        throw new 
Exception("The view file [{$this->path}] doesn't exists!"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
    
}

    
/**
     * Resolve the view file path
     * @param  string $path
     * @return string
     */
    
protected function resolveFilePath($path)
    {
        
$path str_replace('.'DIRECTORY_SEPARATOR$path);

        return 
$this->app['path.views'] . $path .'.php';
    }

    
/**
     * Evaluate the view file
     * @param  string $path
     * @param  string $data
     * @return $this
     */
    
protected function renderContent()
    {
        
$renderOutput = function($app) {
            
ob_start() && extract(
                
$this->gatherData(), EXTR_SKIP
            
);

            include 
$this->path;

            return 
ltrim(ob_get_clean());
        };

        return 
$renderOutput($this->app);
    }

    
/**
     * Gether shared & view data
     * @return array
     */
    
protected function gatherData()
    {
        return 
array_merge(static::$sharedData$this->data);
    }

    
/**
     * Share global data for any view
     * @param  string $key
     * @param  mixed $value
     * @return void
     */
    
public function share($key$value)
    {
        static::
$sharedData[$key] = $value;
    }

    
/**
     * Provides a fluent interface to set data
     * @param  mixed $key
     * @param  mixed $data
     * @return $this
     */
    
public function with($name$data = [])
    {
        if (
is_array($name)) {
            foreach (
$name as $key => $value) {
                
$this->__set($key$value);
            }
        } else {
            
$this->__set($name$data);
        }
        
        return 
$this;
    }

    
/**
     * Setter for the view
     * @param string $key
     * @param mixed $value
     */
    
public function __set($key$value)
    {
        
$this->data[$key] = $value;
    }

    
/**
     * Dump the view result
     * @return string
     */
    
public function __toString()
    {
        return 
$this->renderContent();
    }
}