PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.23
E2Pdf – Export Pdf Tool for WordPress v1.32.23
1.32.49 1.32.48 1.32.43 1.32.40 1.32.34 1.32.32 1.32.31 1.32.26 1.32.22 1.32.23 1.32.18 1.32.17 1.32.15 trunk 1.00.00 1.00.13 1.01.01 1.02.02 1.03.07 1.04.07 1.05.03 1.06.02 1.07.11 1.08.00 1.08.06 All 72 releases
e2pdf / classes / model / e2pdf-extension.php

e2pdf-extension.php in E2Pdf – Export Pdf Tool for WordPress 1.32.23, at classes/model/e2pdf-extension.php

419 lines 14.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * File: /model/e2pdf-extension.php
5 *
6 * @package E2Pdf
7 * @license GPLv3
8 * @link https://e2pdf.com
9 */
10 if (!defined('ABSPATH')) {
11 die('Access denied.');
12 }
13
14 class Model_E2pdf_Extension extends Model_E2pdf_Model {
15
16 private $extension;
17
18 public function load($name) {
19 if (in_array($name, get_option('e2pdf_disabled_extensions', []), true)) {
20 return false;
21 }
22 $class = 'Extension_E2pdf_' . ucfirst($name);
23 if (class_exists($class)) {
24 $extension = new $class();
25 if ($extension->active()) {
26 $this->extension = $extension;
27 return true;
28 }
29 }
30 return false;
31 }
32
33 public function loaded($extension) {
34 if ($this->extension() && method_exists($this->extension(), 'info')) {
35 $info = $this->extension()->info();
36 if (isset($info[$extension])) {
37 return true;
38 }
39 }
40 return false;
41 }
42
43 public function info($attr = false) {
44 if ($this->extension() && method_exists($this->extension(), 'info')) {
45 return $this->extension()->info($attr);
46 }
47 return false;
48 }
49
50 public function extension() {
51 return $this->extension;
52 }
53
54 public function set($attr, $value) {
55 if ($this->extension() && method_exists($this->extension(), 'set')) {
56 return $this->extension()->set($attr, $value);
57 }
58 return false;
59 }
60
61 public function patch($key = false, $value = false, $entry = null) {
62 if ($this->extension()) {
63 switch ($key) {
64 case 'args':
65 if (!empty($value)) {
66 $this->extension()->set($key, $value);
67 if ($entry) {
68 $entry->set_data($key, $this->extension()->get($key));
69 }
70 }
71 break;
72 default:
73 if ($value !== false) {
74 $this->extension()->set($key, $value);
75 if ($entry) {
76 $entry->set_data($key, $this->extension()->get($key));
77 }
78 }
79 break;
80 }
81 }
82 }
83
84 public function get($attr) {
85 if ($this->extension() && method_exists($this->extension(), 'get')) {
86 return $this->extension()->get($attr);
87 }
88 return false;
89 }
90
91 public function verify() {
92 if ($this->extension() && method_exists($this->extension(), 'verify')) {
93 return $this->extension()->verify();
94 }
95 return false;
96 }
97
98 public function import($xml, $options = []) {
99 if ($this->extension() && method_exists($this->extension(), 'import')) {
100 return $this->extension()->import($xml, $options);
101 }
102 return false;
103 }
104
105 public function after_import($old_template_id, $new_template_id) {
106 if ($this->extension() && method_exists($this->extension(), 'after_import')) {
107 return $this->extension()->after_import($old_template_id, $new_template_id);
108 }
109 return false;
110 }
111
112 public function backup($xml = false) {
113 if ($this->extension() && method_exists($this->extension(), 'backup')) {
114 return $this->extension()->backup($xml);
115 }
116 return false;
117 }
118
119 public function item($item_id = false) {
120 if ($this->extension() && method_exists($this->extension(), 'item')) {
121 return $this->extension()->item($item_id);
122 }
123 return false;
124 }
125
126 public function items() {
127 if ($this->extension() && method_exists($this->extension(), 'items')) {
128 return $this->extension()->items();
129 }
130 return false;
131 }
132
133 // styles
134 public function styles($item = false) {
135 if ($this->extension() && method_exists($this->extension(), 'styles')) {
136 return $this->extension()->styles($item);
137 }
138 return false;
139 }
140
141 // render
142 public function render($value, $field = [], $convert_shortcodes = true, $raw = false) {
143 if ($this->extension() && method_exists($this->extension(), 'render')) {
144 $filter = has_filter('e2pdf_pdf_render_filter');
145 if (!$filter) {
146 $this->pre_render();
147 }
148 $content = $this->extension()->render($value, $field, $convert_shortcodes, $raw);
149 if (!$filter) {
150 $this->after_render();
151 }
152 $type = isset($field['type']) ? $field['type'] : false;
153 if ($type == 'e2pdf-image' || $type == 'e2pdf-signature' || $type == 'e2pdf-qrcode' || $type == 'e2pdf-barcode' || $type == 'e2pdf-graph') {
154 return $content;
155 } else {
156 return $this->helper->load('translator')->translate($content, 'full');
157 }
158 }
159 return '';
160 }
161
162 // datasets
163 public function datasets($item = false, $name = false) {
164 if ($this->extension() && method_exists($this->extension(), 'datasets')) {
165 $filter = has_filter('e2pdf_pdf_render_filter');
166 if (!$filter) {
167 $this->pre_render();
168 }
169 $content = $this->extension()->datasets($item, $name);
170 if (!$filter) {
171 $this->after_render();
172 }
173 return $content;
174 }
175 return false;
176 }
177
178 public function pre_render() {
179 add_filter('e2pdf_pdf_render_filter', [$this->helper, '__return_true'], 999);
180 add_filter('e2pdf_pdf_render', [$this->helper, '__return_true'], 999);
181 if (class_exists('ACF')) {
182 if (apply_filters('e2pdf_acf_enable_shortcodes', true)) {
183 add_filter('acf/settings/enable_shortcode', [$this->helper, '__return_true'], 999);
184 }
185 if (apply_filters('e2pdf_acf_allow_in_block_themes_outside_content', true)) {
186 add_filter('acf/shortcode/allow_in_block_themes_outside_content', [$this->helper, '__return_true'], 999);
187 }
188 if (apply_filters('e2pdf_acf_allow_in_bindings', false)) {
189 add_filter('acf/load_field', [$this, 'filter_acf_allow_in_bindings'], 999);
190 }
191 if (!apply_filters('e2pdf_prevent_access_to_fields_on_non_public_posts', true)) {
192 add_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999);
193 }
194 }
195 add_filter('jet-engine/listings/data/default-object', [$this, 'filter_jet_listings_data_default_object'], 999);
196 }
197
198 public function after_render() {
199 remove_filter('jet-engine/listings/data/default-object', [$this, 'filter_jet_listings_data_default_object'], 999);
200 if (class_exists('ACF')) {
201 if (apply_filters('e2pdf_acf_enable_shortcodes', true)) {
202 remove_filter('acf/settings/enable_shortcode', [$this->helper, '__return_true'], 999);
203 }
204 if (apply_filters('e2pdf_acf_allow_in_block_themes_outside_content', true)) {
205 remove_filter('acf/shortcode/allow_in_block_themes_outside_content', [$this->helper, '__return_true'], 999);
206 }
207 if (apply_filters('e2pdf_acf_allow_in_bindings', false)) {
208 remove_filter('acf/load_field', [$this, 'filter_acf_allow_in_bindings'], 999);
209 }
210 if (!apply_filters('e2pdf_prevent_access_to_fields_on_non_public_posts', true)) {
211 remove_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999);
212 }
213 }
214 remove_filter('e2pdf_pdf_render', [$this->helper, '__return_true'], 999);
215 remove_filter('e2pdf_pdf_render_filter', [$this->helper, '__return_true'], 999);
216 }
217
218 // convert shortcodes
219 public function convert_shortcodes($value, $to = false, $html = false) {
220 if ($this->extension() && method_exists($this->extension(), 'convert_shortcodes')) {
221 return $this->extension()->convert_shortcodes($value, $to, $html);
222 }
223 return false;
224 }
225
226 // dataset actions
227 public function get_dataset_actions($dataset_id = false) {
228 if ($this->extension() && method_exists($this->extension(), 'get_dataset_actions')) {
229 return $this->extension()->get_dataset_actions($dataset_id);
230 }
231 return false;
232 }
233
234 // template actions
235 public function get_template_actions($template_id = false) {
236 if ($this->extension() && method_exists($this->extension(), 'get_template_actions')) {
237 return $this->extension()->get_template_actions($template_id);
238 }
239 return false;
240 }
241
242 // storing engine
243 public function get_storing_engine() {
244 if ($this->extension() && method_exists($this->extension(), 'get_storing_engine')) {
245 return $this->extension()->get_storing_engine();
246 }
247 return false;
248 }
249
250 // extensions
251 public function extensions($load = true) {
252 $list = [];
253 $extentions_path = $this->helper->get('plugin_dir') . 'classes/extension/*';
254 foreach (array_filter(glob($extentions_path), 'is_file') as $file) {
255 $info = pathinfo($file);
256 $file_name = basename($file, '.' . $info['extension']);
257 $file_name = substr($file_name, 6);
258
259 if ($load) {
260 if ($this->load($file_name)) {
261 $list = array_merge($list, $this->extension->info());
262 }
263 } else {
264 $list[] = $file_name;
265 }
266 }
267 return $list;
268 }
269
270 // delete item
271 public function delete_item($template_id = false, $dataset_id = false) {
272 if ($this->extension() && method_exists($this->extension(), 'delete_item')) {
273 return $this->extension()->delete_item($template_id, $dataset_id);
274 }
275 return false;
276 }
277
278 // delete items
279 public function delete_items($template_id = false) {
280 if ($this->extension() && method_exists($this->extension(), 'delete_items')) {
281 return $this->extension()->delete_items($template_id);
282 }
283 return false;
284 }
285
286 // visual mapper
287 public function visual_mapper() {
288
289 if ($this->extension() && method_exists($this->extension(), 'visual_mapper')) {
290 if (!extension_loaded('libxml')) {
291 /* translators: %s: PHP Extension */
292 return sprintf(__('The PHP %s extension is required', 'e2pdf'), 'libxml');
293 }
294 if (!extension_loaded('Dom')) {
295 /* translators: %s: PHP Extension */
296 return sprintf(__('The PHP %s extension is required', 'e2pdf'), 'DOM');
297 }
298 if ($this->extension()->get('item') == '-2') {
299 $visual_mapper = '';
300 if ($this->extension()->get('item1')) {
301 $this->extension()->set('item', $this->extension()->get('item1'));
302
303 $output = $this->extension()->visual_mapper();
304 if ($output !== false) {
305 $visual_mapper .= $output;
306 }
307 }
308 if ($this->extension()->get('item2')) {
309 $this->extension()->set('item', $this->extension()->get('item2'));
310 $output = $this->extension()->visual_mapper();
311 if ($output !== false) {
312 $visual_mapper .= $output;
313 }
314 }
315 return $visual_mapper;
316 } else {
317 return $this->extension()->visual_mapper();
318 }
319 }
320 return false;
321 }
322
323 public function auto_form($template, $data = []) {
324 if ($this->extension() && method_exists($this->extension(), 'auto_form')) {
325 return $this->extension()->auto_form($template, $data);
326 }
327 return $template;
328 }
329
330 // auto map
331 public function auto_map($name = false) {
332 if ($this->extension() && method_exists($this->extension(), 'auto_map') && $name) {
333 return $this->extension()->auto_map($name);
334 }
335 return false;
336 }
337
338 // auto
339 public function auto() {
340 if ($this->extension() && method_exists($this->extension(), 'auto')) {
341 if ($this->extension()->get('item') == '-2') {
342 if (!$this->extension()->get('item1') && !$this->extension()->get('item2')) {
343 return false;
344 }
345 $data = [];
346 if ($this->extension()->get('item1')) {
347 $this->extension()->set('item', $this->extension()->get('item1'));
348 $data = $this->extension()->auto();
349 }
350 if ($this->extension()->get('item2')) {
351 $this->extension()->set('item', $this->extension()->get('item2'));
352
353 if (!empty($data)) {
354
355 $data2 = $this->extension()->auto();
356 $data['elements'] = array_merge($data['elements'], $data2['elements']);
357 } else {
358 $data = $this->extension()->auto();
359 }
360 }
361 return $data;
362 } else {
363 return $this->extension()->auto();
364 }
365 }
366 return false;
367 }
368
369 // method
370 public function method($attr = false) {
371 if ($attr && $this->extension() && method_exists($this->extension(), $attr)) {
372 return true;
373 }
374 return false;
375 }
376
377 // load actions
378 public function load_actions() {
379 if ($this->extension() && method_exists($this->extension(), 'load_actions')) {
380 return $this->extension()->load_actions();
381 }
382 return false;
383 }
384
385 // load filters
386 public function load_filters() {
387 if ($this->extension() && method_exists($this->extension(), 'load_filters')) {
388 return $this->extension()->load_filters();
389 }
390 return false;
391 }
392
393 // load shortcodes
394 public function load_shortcodes() {
395 if ($this->extension() && method_exists($this->extension(), 'load_shortcodes')) {
396 return $this->extension()->load_shortcodes();
397 }
398 return false;
399 }
400
401 // filter acf allow in bidnings
402 public function filter_acf_allow_in_bindings($field) {
403 if (isset($field['allow_in_bindings']) && !$field['allow_in_bindings']) {
404 $field['allow_in_bindings'] = 1;
405 }
406 return $field;
407 }
408
409 // filter jet engine default object
410 public function filter_jet_listings_data_default_object($default_object) {
411 if ($this->extension instanceof Extension_E2pdf_Wordpress || $this->extension instanceof Extension_E2pdf_Woocommerce) {
412 if ($this->get('item') != '-3' && $this->get('dataset')) {
413 $default_object = get_post($this->get('dataset'));
414 }
415 }
416 return $default_object;
417 }
418 }
419