Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluent-smtp/includes/View/View.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
3
+
namespace FluentMail\Includes\View;
4
+
5
+
use Exception;
6
+
7
+
class View
8
+
{
9
+
protected $app;
10
+
11
+
protected $path;
12
+
13
+
protected $data = [];
14
+
15
+
protected static $sharedData = [];
16
+
17
+
public function __construct($app)
18
+
{
19
+
$this->app = $app;
20
+
}
21
+
22
+
/**
23
+
* Generate and echo/print a view file
24
+
* @param string $path
25
+
* @param array $data
26
+
* @return void
27
+
*/
28
+
public function render($path, $data = [])
29
+
{
30
+
echo $this->make($path, $data); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
31
+
}
32
+
33
+
/**
34
+
* Generate a view file
35
+
* @param string $path
36
+
* @param array $data
37
+
* @return string [generated html]
38
+
* @throws Exception
39
+
*/
40
+
public function make($path, $data = [])
41
+
{
42
+
if (file_exists($this->path = $this->resolveFilePath($path))) {
43
+
$this->data = $data;
44
+
return $this;
45
+
}
46
+
47
+
throw new Exception("The view file [{$this->path}] doesn't exists!"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
48
+
}
49
+
50
+
/**
51
+
* Resolve the view file path
52
+
* @param string $path
53
+
* @return string
54
+
*/
55
+
protected function resolveFilePath($path)
56
+
{
57
+
$path = str_replace('.', DIRECTORY_SEPARATOR, $path);
58
+
59
+
return $this->app['path.views'] . $path .'.php';
60
+
}
61
+
62
+
/**
63
+
* Evaluate the view file
64
+
* @param string $path
65
+
* @param string $data
66
+
* @return $this
67
+
*/
68
+
protected function renderContent()
69
+
{
70
+
$renderOutput = function($app) {
71
+
ob_start() && extract(
72
+
$this->gatherData(), EXTR_SKIP
73
+
);
74
+
75
+
include $this->path;
76
+
77
+
return ltrim(ob_get_clean());
78
+
};
79
+
80
+
return $renderOutput($this->app);
81
+
}
82
+
83
+
/**
84
+
* Gether shared & view data
85
+
* @return array
86
+
*/
87
+
protected function gatherData()
88
+
{
89
+
return array_merge(static::$sharedData, $this->data);
90
+
}
91
+
92
+
/**
93
+
* Share global data for any view
94
+
* @param string $key
95
+
* @param mixed $value
96
+
* @return void
97
+
*/
98
+
public function share($key, $value)
99
+
{
100
+
static::$sharedData[$key] = $value;
101
+
}
102
+
103
+
/**
104
+
* Provides a fluent interface to set data
105
+
* @param mixed $key
106
+
* @param mixed $data
107
+
* @return $this
108
+
*/
109
+
public function with($name, $data = [])
110
+
{
111
+
if (is_array($name)) {
112
+
foreach ($name as $key => $value) {
113
+
$this->__set($key, $value);
114
+
}
115
+
} else {
116
+
$this->__set($name, $data);
117
+
}
118
+
119
+
return $this;
120
+
}
121
+
122
+
/**
123
+
* Setter for the view
124
+
* @param string $key
125
+
* @param mixed $value
126
+
*/
127
+
public function __set($key, $value)
128
+
{
129
+
$this->data[$key] = $value;
130
+
}
131
+
132
+
/**
133
+
* Dump the view result
134
+
* @return string
135
+
*/
136
+
public function __toString()
137
+
{
138
+
return $this->renderContent();
139
+
}
140
+
}
141
+