PluginProbe
WebTotem Security / 2.4.2
WebTotem Security v2.4.2
3.0.2 3.0.1 3.0.0 trunk 1.0 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 2.0 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.1 2.2.2 2.2.3 All 110 releases
← All changes | lib/Template.php +165 -216 trunk2.4.2 View file →
@@ -1,216 +1,165 @@
1 -<?php
2 -
3 -if (!defined('WEBTOTEM_INIT') || WEBTOTEM_INIT !== true) {
4 - if (!headers_sent()) {
5 - header('HTTP/1.1 403 Forbidden');
6 - }
7 - die("Protected By WebTotem!");
8 -}
9 -
10 -use Twig\Error\LoaderError;
11 -use Twig\Error\RuntimeError;
12 -use Twig\Error\SyntaxError;
13 -use \Twig\Loader\FilesystemLoader;
14 -use \Twig\Environment;
15 -
16 -/**
17 - * Read, parse and handle everything related with the templates.
18 - */
19 -class WebTotemTemplate
20 -{
21 -
22 - protected $loader;
23 - protected $page_nonce;
24 - protected $images_path;
25 - protected $menu_url;
26 - protected $domain;
27 -
28 - function __construct()
29 - {
30 - if (class_exists('\Twig\Loader\FilesystemLoader')) {
31 - $this->loader = new FilesystemLoader(WEBTOTEM_PLUGIN_PATH . '/includes/templates/');
32 - }
33 - $this->page_nonce = wp_create_nonce('wtotem_page_nonce');
34 - $this->images_path = WebTotem::getImagePath('');
35 - $this->menu_url = WebTotem::adminURL('admin.php?page=wtotem');
36 - $this->domain = WEBTOTEM_SITE_DOMAIN;
37 - }
38 -
39 - /**
40 - * Rendering a template using twig and filling in data.
41 - *
42 - * @param string $template
43 - * @param array $variables
44 - *
45 - * @return bool|string
46 - * @throws LoaderError
47 - * @throws RuntimeError
48 - * @throws SyntaxError
49 - */
50 - public function twigRender($template, $variables = [])
51 - {
52 -
53 - $twig = new Environment($this->loader);
54 -
55 - if (!file_exists(WEBTOTEM_PLUGIN_PATH . '/includes/templates/' . $template)) {
56 - WebTotemOption::setNotification('error', __('There is no template: ', 'wtotem') . $template);
57 - return FALSE;
58 - }
59 -
60 - // Default values of some variables
61 - $variables['images_path'] = $this->images_path;
62 - $variables['days'] = (isset($variables['days'])) ? $variables['days'] : 7;
63 - $variables['page_nonce'] = $this->page_nonce;
64 - $variables['menu_url'] = $this->menu_url;
65 - $variables['domain'] = $this->domain;
66 - $variables['user_email'] = WebTotem::getUserEmail();
67 -
68 - if (WebTotem::isMultiSite()) {
69 -// $variables['is_multisite'] = WebTotem::isMultiSite();
70 -// $variables['is_super_admin'] = is_super_admin();
71 -// $variables['hid'] = (WebTotemRequest::get('hid')) ? '&hid=' . WebTotemRequest::get('hid') : '';
72 - $variables['is_multisite'] = false;
73 - $variables['is_super_admin'] = is_super_admin();
74 - }
75 -
76 - $twig->addFilter(new \Twig\TwigFilter('trans', array($this, 'translate')));
77 - $twig->addFunction(new \Twig\TwigFunction('plural', array($this, 'plural')));
78 - $twig->addFilter(new \Twig\TwigFilter('t', array($this, 'translate')));
79 -
80 - return $twig->render($template, $variables);
81 - }
82 -
83 - /**
84 - * Page rendering based on array data.
85 - *
86 - * @param $params
87 - *
88 - * @return bool|string
89 - * @throws LoaderError
90 - * @throws RuntimeError
91 - * @throws SyntaxError
92 - */
93 - public function arrayRender($params)
94 - {
95 -
96 - $render = '';
97 - if (is_array($params)) {
98 -
99 - if (array_key_exists('template', $params)) {
100 - $template = $params['template'] . '.html.twig';
101 - $variables = (isset($params['variables'])) ? $params['variables'] : [];
102 -
103 - $render = $this->twigRender($template, $variables) ?: '';
104 - } else {
105 - foreach ($params as $param) {
106 - $template = $param['template'] . '.html.twig';
107 - $variables = (isset($param['variables'])) ? $param['variables'] : [];
108 -
109 - $render .= $this->twigRender($template, $variables) ?: '';
110 - }
111 - }
112 -
113 - }
114 -
115 - return $render;
116 - }
117 -
118 - /**
119 - * Generate a page based on a basic template and content.
120 - *
121 - * @param $page_content
122 - *
123 - * @return bool|string
124 - * @throws LoaderError
125 - * @throws RuntimeError
126 - * @throws SyntaxError
127 - */
128 - public function baseTemplate($page_content)
129 - {
130 -
131 - if (WebTotemRequest::get('hid')) {
132 - WebTotemOption::setSessionOptions(['host_id' => WebTotemRequest::get('hid')]);
133 - $host = WebTotemOption::getHost(WebTotemRequest::get('hid'));
134 - } else {
135 - $host = WebTotemAPI::siteInfo();
136 - }
137 -
138 - $variables['menu_url'] = WebTotem::adminURL('admin.php?page=wtotem');
139 -
140 - $page = str_replace(['wtotem', '_'], '', WebTotemRequest::get('page'));
141 - $page = $page ?: 'dashboard';
142 - $variables['is_active'][$page] = 'wtotem_nav__link_active';
143 - $variables['page'] = $page;
144 -
145 - $site_created_at = WebTotemOption::getOption('site_created_at');
146 - $site_created_at = $site_created_at ? json_decode($site_created_at, true) : [];
147 - $site_created_at = (array_key_exists($host['name'], $site_created_at)) ? $site_created_at[$host['name']] : null;
148 - $variables['site_created_at'] = $site_created_at ? date('Y-m-d', strtotime($site_created_at)) : null;
149 -
150 - $variables['theme_mode'] = WebTotem::getThemeMode();
151 - $variables['notifications'] = WebTotem::getNotifications();
152 - $variables['current_year'] = date('Y');
153 - $variables['content'] = $page_content;
154 -
155 - return $this->twigRender('layout.html.twig', $variables);
156 - }
157 -
158 - /**
159 - * String translation.
160 - *
161 - * @param $string
162 - * @param array $params
163 - *
164 - * @return string
165 - */
166 - public static function translate($string, array $params = [])
167 - {
168 -
169 - global $locale;
170 -
171 - $string = ('en_US' !== $locale) ? translate($string, 'wtotem') : $string;
172 -
173 - if ($params) {
174 - foreach ($params as $key => $value) {
175 - $string = str_replace($key, $value, $string);
176 - }
177 - }
178 -
179 - return (string)$string;
180 - }
181 -
182 - /**
183 - * @param array $params [single, plural, number]
184 - *
185 - * usage example
186 - * {{ plural({'single' : '%s month', 'plural' : '%s months', 'number' : 1}) }}
187 - *
188 - * @return string
189 - */
190 - public static function plural(array $params): string
191 - {
192 -
193 - $string = _n($params['single'], $params['plural'], $params['number'], 'wtotem');
194 - $string = str_replace('%s', $params['number'], $string);
195 -
196 - return (string)$string;
197 - }
198 -
199 - /**
200 - * Get HTML without Twig
201 - *
202 - * @return string|bool
203 - */
204 - public function getHtml($template)
205 - {
206 - $templatePath = WEBTOTEM_PLUGIN_PATH . '/includes/templates/' . $template . '.html.twig';
207 - if (!file_exists($templatePath)) {
208 - return FALSE;
209 - }
210 -
211 - ob_start();
212 - include $templatePath;
213 - return ob_get_clean();
214 - }
215 -
216 -}
1 +<?php
2 +
3 +if (!defined('WEBTOTEM_INIT') || WEBTOTEM_INIT !== true) {
4 + if (!headers_sent()) {
5 + header('HTTP/1.1 403 Forbidden');
6 + }
7 + die("Protected By WebTotem!");
8 +}
9 +
10 +use Twig\Error\LoaderError;
11 +use Twig\Error\RuntimeError;
12 +use Twig\Error\SyntaxError;
13 +use \Twig\Loader\FilesystemLoader;
14 +use \Twig\Environment;
15 +
16 +/**
17 + * Read, parse and handle everything related with the templates.
18 + */
19 +class WebTotemTemplate {
20 +
21 + /**
22 + * Rendering a template using twig and filling in data.
23 + *
24 + * @param string $template
25 + * @param array $variables
26 + *
27 + * @return bool|string
28 + * @throws LoaderError
29 + * @throws RuntimeError
30 + * @throws SyntaxError
31 + */
32 + public function twigRender( $template, $variables = []) {
33 +
34 + $loader = new FilesystemLoader( WEBTOTEM_PLUGIN_PATH . '/includes/templates/');
35 + $twig = new Environment($loader);
36 +
37 + if(!file_exists(WEBTOTEM_PLUGIN_PATH . '/includes/templates/' . $template)) {
38 + WebTotemOption::setNotification('error', __('There is no template: ', 'wtotem') . $template);
39 + return FALSE;
40 + }
41 + // Default values of some variables
42 + $variables['images_path'] = WebTotem::getImagePath('');
43 + $variables['days'] = (isset($variables['days'])) ? $variables['days'] : 7;
44 + $variables['page_nonce'] = wp_create_nonce('wtotem_page_nonce');
45 + $variables['menu_url'] = WebTotem::adminURL('admin.php?page=wtotem');
46 +
47 + if( WebTotem::isMultiSite() ){
48 + $variables['is_multisite'] = WebTotem::isMultiSite();
49 + $variables['is_super_admin'] = is_super_admin();
50 + $variables['hid'] = (WebTotemRequest::get('hid')) ? '&hid=' . WebTotemRequest::get('hid') : '';
51 + }
52 +
53 + $twig->addFilter(new \Twig\TwigFilter('trans', array( $this, 'translate' )));
54 + $twig->addFunction(new \Twig\TwigFunction('plural', array( $this, 'plural' )));
55 + $twig->addFilter(new \Twig\TwigFilter('t', array( $this, 'translate' )));
56 +
57 + return $twig->render($template, $variables);
58 + }
59 +
60 + /**
61 + * Page rendering based on array data.
62 + *
63 + * @param $params
64 + *
65 + * @return bool|string
66 + * @throws LoaderError
67 + * @throws RuntimeError
68 + * @throws SyntaxError
69 + */
70 + public function arrayRender($params) {
71 +
72 + $render = '';
73 + if(is_array($params)){
74 +
75 + if(array_key_exists('template', $params)){
76 + $template = $params['template'] . '.html.twig';
77 + $variables = (isset($params['variables'])) ? $params['variables'] : [];
78 +
79 + $render = $this->twigRender($template, $variables) ?: '';
80 + } else {
81 + foreach ($params as $param){
82 + $template = $param['template'] . '.html.twig';
83 + $variables = (isset($param['variables'])) ? $param['variables'] : [];
84 +
85 + $render .= $this->twigRender($template, $variables) ?: '';
86 + }
87 + }
88 +
89 + }
90 +
91 + return $render;
92 + }
93 +
94 + /**
95 + * Generate a page based on a basic template and content.
96 + *
97 + * @param $page_content
98 + *
99 + * @return bool|string
100 + * @throws LoaderError
101 + * @throws RuntimeError
102 + * @throws SyntaxError
103 + */
104 + public function baseTemplate($page_content) {
105 +
106 + if(WebTotemRequest::get('hid')){
107 + WebTotemOption::setSessionOptions(['host_id' => WebTotemRequest::get('hid')]);
108 + }
109 +
110 + $variables['menu_url'] = WebTotem::adminURL('admin.php?page=wtotem');
111 +
112 + $page = str_replace(['wtotem', '_'], '', WebTotemRequest::get('page'));
113 + $page = $page ?: 'dashboard';
114 + $variables['is_active'][$page] = 'wtotem_nav__link_active';
115 + $variables['page'] = $page;
116 +
117 + $variables['theme_mode'] = WebTotem::getThemeMode();
118 + $variables['notifications'] = WebTotem::getNotifications();
119 + $variables['current_year'] = date('Y');
120 + $variables['content'] = $page_content;
121 +
122 + return $this->twigRender('layout.html.twig', $variables);
123 + }
124 +
125 +
126 + /**
127 + * String translation.
128 + *
129 + * @param $string
130 + * @param array $params
131 + *
132 + * @return string
133 + */
134 + public static function translate($string, array $params = []) {
135 +
136 + global $locale;
137 +
138 + $string = ('en_US' !== $locale) ? translate($string, 'wtotem') : $string;
139 +
140 + if($params){
141 + foreach ($params as $key => $value){
142 + $string = str_replace($key, $value, $string);
143 + }
144 + }
145 +
146 + return (string) $string;
147 + }
148 +
149 + /**
150 + * @param array $params [single, plural, number]
151 + *
152 + * usage example
153 + * {{ plural({'single' : '%s month', 'plural' : '%s months', 'number' : 1}) }}
154 + *
155 + * @return string
156 + */
157 + public static function plural( array $params): string {
158 +
159 + $string = _n( $params['single'], $params['plural'], $params['number'],'wtotem' );
160 + $string = str_replace('%s', $params['number'], $string);
161 +
162 + return (string) $string;
163 + }
164 +
165 +}