PluginProbe
WebTotem Security / 2.4.14
WebTotem Security v2.4.14
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 +195 -216 trunk2.4.14 View file →
@@ -1,216 +1,195 @@
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 + protected $loader;
22 + protected $page_nonce;
23 + protected $images_path;
24 + protected $menu_url;
25 +
26 + function __construct() {
27 + if (class_exists('\Twig\Loader\FilesystemLoader')) {
28 + $this->loader = new FilesystemLoader( WEBTOTEM_PLUGIN_PATH . '/includes/templates/');
29 + }
30 + $this->page_nonce = wp_create_nonce('wtotem_page_nonce');
31 + $this->images_path = WebTotem::getImagePath('');
32 + $this->menu_url = WebTotem::adminURL('admin.php?page=wtotem');
33 + }
34 +
35 + /**
36 + * Rendering a template using twig and filling in data.
37 + *
38 + * @param string $template
39 + * @param array $variables
40 + *
41 + * @return bool|string
42 + * @throws LoaderError
43 + * @throws RuntimeError
44 + * @throws SyntaxError
45 + */
46 + public function twigRender( $template, $variables = []) {
47 +
48 + $twig = new Environment($this->loader);
49 +
50 + if(!file_exists(WEBTOTEM_PLUGIN_PATH . '/includes/templates/' . $template)) {
51 + WebTotemOption::setNotification('error', __('There is no template: ', 'wtotem') . $template);
52 + return FALSE;
53 + }
54 +
55 + // Default values of some variables
56 + $variables['images_path'] = $this->images_path;
57 + $variables['days'] = (isset($variables['days'])) ? $variables['days'] : 7;
58 + $variables['page_nonce'] = $this->page_nonce;
59 + $variables['menu_url'] = $this->menu_url;
60 +
61 + if( WebTotem::isMultiSite() ){
62 + $variables['is_multisite'] = WebTotem::isMultiSite();
63 + $variables['is_super_admin'] = is_super_admin();
64 + $variables['hid'] = (WebTotemRequest::get('hid')) ? '&hid=' . WebTotemRequest::get('hid') : '';
65 + }
66 +
67 + $twig->addFilter(new \Twig\TwigFilter('trans', array( $this, 'translate' )));
68 + $twig->addFunction(new \Twig\TwigFunction('plural', array( $this, 'plural' )));
69 + $twig->addFilter(new \Twig\TwigFilter('t', array( $this, 'translate' )));
70 +
71 + return $twig->render($template, $variables);
72 + }
73 +
74 + /**
75 + * Page rendering based on array data.
76 + *
77 + * @param $params
78 + *
79 + * @return bool|string
80 + * @throws LoaderError
81 + * @throws RuntimeError
82 + * @throws SyntaxError
83 + */
84 + public function arrayRender($params) {
85 +
86 + $render = '';
87 + if(is_array($params)){
88 +
89 + if(array_key_exists('template', $params)){
90 + $template = $params['template'] . '.html.twig';
91 + $variables = (isset($params['variables'])) ? $params['variables'] : [];
92 +
93 + $render = $this->twigRender($template, $variables) ?: '';
94 + } else {
95 + foreach ($params as $param){
96 + $template = $param['template'] . '.html.twig';
97 + $variables = (isset($param['variables'])) ? $param['variables'] : [];
98 +
99 + $render .= $this->twigRender($template, $variables) ?: '';
100 + }
101 + }
102 +
103 + }
104 +
105 + return $render;
106 + }
107 +
108 + /**
109 + * Generate a page based on a basic template and content.
110 + *
111 + * @param $page_content
112 + *
113 + * @return bool|string
114 + * @throws LoaderError
115 + * @throws RuntimeError
116 + * @throws SyntaxError
117 + */
118 + public function baseTemplate($page_content) {
119 +
120 + if(WebTotemRequest::get('hid')){
121 + WebTotemOption::setSessionOptions(['host_id' => WebTotemRequest::get('hid')]);
122 + }
123 +
124 + $variables['menu_url'] = WebTotem::adminURL('admin.php?page=wtotem');
125 +
126 + $page = str_replace(['wtotem', '_'], '', WebTotemRequest::get('page'));
127 + $page = $page ?: 'dashboard';
128 + $variables['is_active'][$page] = 'wtotem_nav__link_active';
129 + $variables['page'] = $page;
130 +
131 + $variables['theme_mode'] = WebTotem::getThemeMode();
132 + $variables['notifications'] = WebTotem::getNotifications();
133 + $variables['current_year'] = date('Y');
134 + $variables['content'] = $page_content;
135 +
136 + return $this->twigRender('layout.html.twig', $variables);
137 + }
138 +
139 +
140 + /**
141 + * String translation.
142 + *
143 + * @param $string
144 + * @param array $params
145 + *
146 + * @return string
147 + */
148 + public static function translate($string, array $params = []) {
149 +
150 + global $locale;
151 +
152 + $string = ('en_US' !== $locale) ? translate($string, 'wtotem') : $string;
153 +
154 + if($params){
155 + foreach ($params as $key => $value){
156 + $string = str_replace($key, $value, $string);
157 + }
158 + }
159 +
160 + return (string) $string;
161 + }
162 +
163 + /**
164 + * @param array $params [single, plural, number]
165 + *
166 + * usage example
167 + * {{ plural({'single' : '%s month', 'plural' : '%s months', 'number' : 1}) }}
168 + *
169 + * @return string
170 + */
171 + public static function plural( array $params): string {
172 +
173 + $string = _n( $params['single'], $params['plural'], $params['number'],'wtotem' );
174 + $string = str_replace('%s', $params['number'], $string);
175 +
176 + return (string) $string;
177 + }
178 +
179 + /**
180 + * Get HTML without Twig
181 + *
182 + * @return string|bool
183 + */
184 + public function getHtml($template) {
185 + $templatePath = WEBTOTEM_PLUGIN_PATH . '/includes/templates/' . $template . '.html.twig';
186 + if(!file_exists($templatePath)) {
187 + return FALSE;
188 + }
189 +
190 + ob_start();
191 + include $templatePath;
192 + return ob_get_clean();
193 + }
194 +
195 +}