PluginProbe ʕ •ᴥ•ʔ
Download Manager / trunk
Download Manager vtrunk
3.3.62 3.3.61 3.3.60 3.3.59 3.3.58 3.3.57 3.3.56 trunk 2.1.3 2.3.0 2.5.96 2.5.97 2.6.2 2.6.96 2.8.3 2.9.99 3.0.4 3.1.05 3.1.07 3.1.08 3.1.11 3.1.12 3.1.14 3.1.17 3.1.18 3.1.22 3.1.23 3.1.24 3.1.25 3.1.26 3.1.27 3.1.28 3.2.04 3.2.13 3.2.14 3.2.16 3.2.18 3.2.19 3.2.21 3.2.22 3.2.23 3.2.24 3.2.25 3.2.27 3.2.28 3.2.29 3.2.30 3.2.31 3.2.32 3.2.33 3.2.34 3.2.35 3.2.37 3.2.38 3.2.39 3.2.40 3.2.41 3.2.42 3.2.43 3.2.44 3.2.45 3.2.46 3.2.47 3.2.48 3.2.49 3.2.50 3.2.51 3.2.52 3.2.53 3.2.54 3.2.55 3.2.56 3.2.57 3.2.58 3.2.59 3.2.60 3.2.61 3.2.63 3.2.64 3.2.65 3.2.66 3.2.67 3.2.68 3.2.69 3.2.70 3.2.71 3.2.72 3.2.73 3.2.74 3.2.75 3.2.76 3.2.77 3.2.78 3.2.79 3.2.80 3.2.81 3.2.82 3.2.83 3.2.84 3.2.85 3.2.86 3.2.87 3.2.88 3.2.89 3.2.90 3.2.91 3.2.92 3.2.93 3.2.94 3.2.95 3.2.96 3.2.97 3.2.98 3.2.99 3.3.00 3.3.01 3.3.02 3.3.03 3.3.04 3.3.05 3.3.06 3.3.07 3.3.08 3.3.09 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.15 3.3.16 3.3.17 3.3.18 3.3.19 3.3.20 3.3.21 3.3.22 3.3.23 3.3.24 3.3.25 3.3.26 3.3.27 3.3.28 3.3.29 3.3.30 3.3.31 3.3.32 3.3.33 3.3.34 3.3.35 3.3.36 3.3.37 3.3.38 3.3.39 3.3.40 3.3.41 3.3.42 3.3.43 3.3.44 3.3.45 3.3.46 3.3.47 3.3.48 3.3.49 3.3.50 3.3.51 3.3.52 3.3.53 3.3.54 3.3.55
download-manager / src / Admin / PackageTemplate.php
download-manager / src / Admin Last commit date
Menu 1 week ago views 1 week ago AdminController.php 1 week ago DashboardWidgets.php 6 months ago PackageTemplate.php 4 years ago
PackageTemplate.php
294 lines
1 <?php
2
3
4 namespace WPDM\Admin;
5
6
7 use WPDM\__\FileSystem;
8
9 class PackageTemplate
10 {
11 public $templateType = 'link';
12 private $dir;
13
14 function __construct($templateType = 'link')
15 {
16 $this->templateType = $templateType;
17 $this->dir = WP_CONTENT_DIR . "/wpdm-assets/{$templateType}-templates/";
18 FileSystem::mkDir($this->dir, 0755, true);
19 }
20
21 function type($templateType)
22 {
23 $templateType = !in_array($templateType, ['link', 'page']) ? 'link' : $templateType;
24 $this->templateType = $templateType;
25 $this->dir = WP_CONTENT_DIR . "/wpdm-assets/{$templateType}-templates/";
26 FileSystem::mkDir($this->dir, 0755, true);
27 return $this;
28 }
29
30 function covertAll($templateType = null)
31 {
32 if ($templateType !== null)
33 $this->type($templateType);
34 if(!file_exists($this->dir)){
35 \WPDM\__\Messages::error("Failed to create template directory ( {$this->dir} )!", 0, 'notify');
36 return $this;
37 }
38 $tpldata = get_option("_fm_{$this->templateType}_templates", false);
39 if (!is_array($tpldata))
40 $tpldata = maybe_unserialize($tpldata);
41 if ($tpldata) {
42 delete_option("_fm_{$this->templateType}_templates");
43 foreach ($tpldata as $id => $tpl) {
44 $file = $this->dir . '/' . $id . '.xml';
45 $tpl['content'] = stripslashes_deep($tpl['content']);
46 $tpl['css'] = stripslashes_deep($tpl['css']);
47 $data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><template><tplid>{$id}</tplid><name>{$tpl['title']}</name><designer>Admin</designer><code><![CDATA[{$tpl['content']}]]></code><css><![CDATA[{$tpl['css']}]]></css></template>";
48 file_put_contents($file, $data);
49
50 }
51 }
52 return $this;
53 }
54
55 function import($url, $templateType = null)
56 {
57
58 if ($templateType !== null)
59 $this->type($templateType);
60 $data = wpdm_remote_get($url);
61 $local_file_path = $this->dir . '/' . basename($url);
62 file_put_contents($local_file_path, $data);
63
64 }
65
66 function add($id, $name, $code, $css = '', $templateType = null)
67 {
68 if ($templateType !== null)
69 $this->type($templateType);
70
71 $file = $this->dir . '/' . $id . '.xml';
72 $code = stripslashes_deep($code);
73 $data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><template><tplid>{$id}</tplid><name>{$name}</name><designer>Admin</designer><code><![CDATA[{$code}]]></code><css><![CDATA[{$css}]]></css></template>";
74 file_put_contents($file, $data);
75 return $this;
76 }
77
78 function delete($id, $templateType = null)
79 {
80 if ($templateType !== null)
81 $this->type($templateType);
82
83 $id = wpdm_sanitize_var($id, 'filename');
84 if ($id && file_exists($this->dir . $id . '.xml'))
85 @unlink($this->dir . $id . '.xml');
86
87 return $this;
88 }
89
90 function get($template, $templateType = null, $contentOnly = false)
91 {
92 if ($templateType !== null)
93 $this->type($templateType);
94 $template = str_replace(".xml", "", $template);
95 $file = $this->dir . $template . '.xml';
96 $tpl = [];
97 if (file_exists($file)) {
98 $data = file_get_contents($file);
99 $ddoc = new \DOMDocument();
100 $valid = $ddoc->loadXML($data);
101 if(!$valid || !is_object($ddoc->getElementsByTagName('code')->item(0))) return false;
102 $tpl = [];
103 $tpl['ID'] = $ddoc->getElementsByTagName('tplid')->item(0)->textContent;
104 $tpl['name'] = $ddoc->getElementsByTagName('name')->item(0)->textContent;
105 $tpl['content'] = $ddoc->getElementsByTagName('code')->item(0)->textContent;
106 $tpl['css'] = $ddoc->getElementsByTagName('css')->item(0)->textContent;
107 $tpl['file'] = $file;
108 $add_styles = $this->templateType === 'page' ? "<style>{$tpl['css']}</style>" : '';
109 return $contentOnly ? $tpl['content'] . $add_styles : $tpl;
110 }
111 return false;
112 }
113
114 function getInfo($template, $templateType = null)
115 {
116 if ($templateType !== null)
117 $this->type($templateType);
118
119 $info = $this->get($template, $templateType);
120 if (!$info) {
121 $theme_template_dir = get_stylesheet_directory().'/download-manager/'.$this->templateType . '-templates/';
122 $template_template_dir = get_template_directory().'/download-manager/'.$this->templateType . '-templates/';
123 $core_templates_dir = WPDM()->package->templateDir . $this->templateType . '-templates/';
124 $template_name = str_replace(".php", "", $template).".php";
125 $file = $core_templates_dir.str_replace(".php", "", $template).".php";
126 if(file_exists($theme_template_dir.$template_name))
127 $file = $theme_template_dir.$template_name;
128 else if(file_exists($template_template_dir.$template_name))
129 $file = $template_template_dir.$template_name;
130 if(file_exists($file)) {
131 $tmpdata = file_get_contents( $file );
132 $regx = "/WPDM.*Template[\s]*:([^\-\->]+)/";
133 $name = $template;
134 if ( preg_match( $regx, $tmpdata, $matches ) ) {
135 $name = $matches[1];
136 }
137 $info = ['ID' => $template, 'name' => $name, 'content' => $tmpdata, 'css' => '', 'file' => $file];
138 }
139 }
140 return $info;
141 }
142
143 function getCustomTemplates($templateType = null)
144 {
145 if ($templateType !== null)
146 $this->type($templateType);
147 $_templates = FileSystem::scanDir($this->dir, false, false, '.xml');
148 $templates = [];
149 foreach ($_templates as $tplid) {
150 $tplid = str_replace(".xml", "", $tplid);
151 $template = $this->get($tplid, $this->templateType);
152 $templates[$tplid] = $template;
153 }
154 return $templates;
155 }
156
157
158 function getTemplates($templateType = null, $activeOnly = false)
159 {
160 if ($templateType !== null)
161 $this->type($templateType);
162
163 $tplstatus = maybe_unserialize(get_option("_fm_{$this->templateType}_template_status"));
164
165 $xactivetpls = array();
166 $activetpls = array();
167 if (is_array($tplstatus)) {
168 foreach ($tplstatus as $tpl => $active) {
169 if (!$active)
170 $xactivetpls[] = $tpl;
171 else
172 $activetpls[] = $tpl;
173 }
174 }
175
176 $all_templates = array();
177
178
179 //Load custom templates
180 $custom_templates = $this->getCustomTemplates();
181 $all_templates = $custom_templates;
182
183 //Load all core template provided with the plugin
184 $core_templates_dir = WPDM()->package->templateDir . $this->templateType . '-templates/';
185 $core_templates = FileSystem::scanDir($core_templates_dir, false, true, '.php');
186 foreach ($core_templates as $core_template) {
187 $all_templates[basename($core_template)] = $core_template;
188 }
189
190 //Load all template from parent theme, override core template
191 if (get_stylesheet_directory() !== get_template_directory()) {
192 $parent_theme_dir = get_template_directory() . '/download-manager/' . $this->templateType . '-templates/';
193 $parent_theme_templates = FileSystem::scanDir($parent_theme_dir, false, true, '.php');
194 foreach ($parent_theme_templates as $theme_template) {
195 $all_templates[basename($theme_template)] = $theme_template;
196 }
197 }
198
199 //Load all template from active theme, override core or parent template
200 $theme_dir = get_stylesheet_directory() . '/download-manager/' . $this->templateType . '-templates/';
201 $theme_templates = FileSystem::scanDir($theme_dir, false, true, '.php');
202 foreach ($theme_templates as $theme_template) {
203 $all_templates[basename($theme_template)] = $theme_template;
204 }
205
206 return $all_templates;
207
208 }
209
210 function getStyles($templateType = null)
211 {
212 if ($templateType !== null)
213 $this->type($templateType);
214 $styles = []; //TempStorage::get('__wpdm_custom_link_template_styles');
215 //if( $styles !== '' ) return $styles;
216 $templates = $this->getCustomTemplates($this->templateType);
217
218 foreach ($templates as $template) {
219 $styles[$template['ID']] = stripslashes_deep($template['css']);
220 }
221 $styles = implode("\r\n", $styles);
222 //TempStorage::set("__wpdm_custom_link_template_styles", $styles);
223 //wpdmdd($styles);
224 return $styles;
225 }
226
227 function dropdown($params, $activeOnly = false)
228 {
229 extract($params);
230 $type = isset($type) && in_array($type, array('link', 'page', 'email')) ? esc_attr($type) : 'link';
231 $tplstatus = maybe_unserialize(get_option("_fm_{$type}_template_status"));
232
233 $xactivetpls = array();
234 $activetpls = array();
235 if (is_array($tplstatus)) {
236 foreach ($tplstatus as $tpl => $active) {
237 if (!$active)
238 $xactivetpls[] = $tpl;
239 else
240 $activetpls[] = $tpl;
241 }
242 }
243
244
245 $templates = $this->getTemplates($type);
246
247 //Field Name
248 $name = isset($name) ? $name : $type . '_template';
249
250 //Field css
251 $css = isset($css) ? "style='$css'" : '';
252
253 $class = isset($class) ? $class : '';
254
255 //Field ID
256 $id = isset($id) ? $id : uniqid();
257
258 //Default value
259 $default = $type == 'link' ? 'link-template-default.php' : 'page-template-default.php';
260 $xdf = str_replace(".php", "", $default);
261 if (is_array($xactivetpls) && count($xactivetpls) > 0)
262 $default = (in_array($xdf, $xactivetpls) || in_array($default, $xactivetpls)) && isset($activetpls[0]) ? $activetpls[0] : $default;
263
264 $html = "<select name='$name' id='$id' class='form-control {$class} template {$type}_template' {$css}><option value='$default'>Select " . ucfirst($type) . " Template</option>";
265 $data = array();
266 if (is_array($templates)) {
267 foreach ($templates as $id => $template) {
268 $name = null;
269 $_id = str_replace(".php", "", $id);
270 if (!$activeOnly || ($activeOnly && (!isset($tplstatus[$_id]) || (int)$tplstatus[$_id] === 1))) {
271 if (!is_array($template) && $template) {
272 $tmpdata = file_get_contents($template);
273 $regx = "/WPDM.*Template[\s]*:([^\-\->]+)/";
274 if (preg_match($regx, $tmpdata, $matches)) {
275 $name = $matches[1];
276 } else continue;
277 } else {
278 $name = $template['name'];
279 }
280 if ($name) {
281 $eselected = isset($selected) && $selected == $id ? 'selected=selected' : '';
282 $html .= "<option value='{$id}' {$eselected}>{$name}</option>";
283 }
284 }
285 }
286 }
287
288 $html .= "</select>";
289
290 return $html;
291 }
292
293 }
294