PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.17
E2Pdf – Export Pdf Tool for WordPress v1.32.17
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.17, at classes/model/e2pdf-extension.php

407 lines 14.4 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 $this->pre_render();
145 $content = $this->extension()->render($value, $field, $convert_shortcodes, $raw);
146 $this->after_render();
147 $type = isset($field['type']) ? $field['type'] : false;
148 if ($type == 'e2pdf-image' || $type == 'e2pdf-signature' || $type == 'e2pdf-qrcode' || $type == 'e2pdf-barcode' || $type == 'e2pdf-graph') {
149 return $content;
150 } else {
151 return $this->helper->load('translator')->translate($content, 'full');
152 }
153 }
154 return '';
155 }
156
157 // datasets
158 public function datasets($item = false, $name = false) {
159 if ($this->extension() && method_exists($this->extension(), 'datasets')) {
160 $this->pre_render();
161 $content = $this->extension()->datasets($item, $name);
162 $this->after_render();
163 return $content;
164 }
165 return false;
166 }
167
168 public function pre_render() {
169 add_filter('e2pdf_pdf_render', [$this->helper, '__return_true'], 999);
170 if (class_exists('ACF')) {
171 if (apply_filters('e2pdf_acf_enable_shortcodes', true)) {
172 add_filter('acf/settings/enable_shortcode', [$this->helper, '__return_true'], 999);
173 }
174 if (apply_filters('e2pdf_acf_allow_in_block_themes_outside_content', true)) {
175 add_filter('acf/shortcode/allow_in_block_themes_outside_content', [$this->helper, '__return_true'], 999);
176 }
177 if (apply_filters('e2pdf_acf_allow_in_bindings', false)) {
178 add_filter('acf/load_field', [$this, 'filter_acf_allow_in_bindings'], 999);
179 }
180 if (!apply_filters('e2pdf_prevent_access_to_fields_on_non_public_posts', true)) {
181 add_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999);
182 }
183 }
184 add_filter('jet-engine/listings/data/default-object', [$this, 'filter_jet_listings_data_default_object'], 999);
185 }
186
187 public function after_render() {
188 remove_filter('jet-engine/listings/data/default-object', [$this, 'filter_jet_listings_data_default_object'], 999);
189 if (class_exists('ACF')) {
190 if (apply_filters('e2pdf_acf_enable_shortcodes', true)) {
191 remove_filter('acf/settings/enable_shortcode', [$this->helper, '__return_true'], 999);
192 }
193 if (apply_filters('e2pdf_acf_allow_in_block_themes_outside_content', true)) {
194 remove_filter('acf/shortcode/allow_in_block_themes_outside_content', [$this->helper, '__return_true'], 999);
195 }
196 if (apply_filters('e2pdf_acf_allow_in_bindings', false)) {
197 remove_filter('acf/load_field', [$this, 'filter_acf_allow_in_bindings'], 999);
198 }
199 if (!apply_filters('e2pdf_prevent_access_to_fields_on_non_public_posts', true)) {
200 remove_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999);
201 }
202 }
203 remove_filter('e2pdf_pdf_render', [$this->helper, '__return_true'], 999);
204 }
205
206 // convert shortcodes
207 public function convert_shortcodes($value, $to = false, $html = false) {
208 if ($this->extension() && method_exists($this->extension(), 'convert_shortcodes')) {
209 return $this->extension()->convert_shortcodes($value, $to, $html);
210 }
211 return false;
212 }
213
214 // dataset actions
215 public function get_dataset_actions($dataset_id = false) {
216 if ($this->extension() && method_exists($this->extension(), 'get_dataset_actions')) {
217 return $this->extension()->get_dataset_actions($dataset_id);
218 }
219 return false;
220 }
221
222 // template actions
223 public function get_template_actions($template_id = false) {
224 if ($this->extension() && method_exists($this->extension(), 'get_template_actions')) {
225 return $this->extension()->get_template_actions($template_id);
226 }
227 return false;
228 }
229
230 // storing engine
231 public function get_storing_engine() {
232 if ($this->extension() && method_exists($this->extension(), 'get_storing_engine')) {
233 return $this->extension()->get_storing_engine();
234 }
235 return false;
236 }
237
238 // extensions
239 public function extensions($load = true) {
240 $list = [];
241 $extentions_path = $this->helper->get('plugin_dir') . 'classes/extension/*';
242 foreach (array_filter(glob($extentions_path), 'is_file') as $file) {
243 $info = pathinfo($file);
244 $file_name = basename($file, '.' . $info['extension']);
245 $file_name = substr($file_name, 6);
246
247 if ($load) {
248 if ($this->load($file_name)) {
249 $list = array_merge($list, $this->extension->info());
250 }
251 } else {
252 $list[] = $file_name;
253 }
254 }
255 return $list;
256 }
257
258 // delete item
259 public function delete_item($template_id = false, $dataset_id = false) {
260 if ($this->extension() && method_exists($this->extension(), 'delete_item')) {
261 return $this->extension()->delete_item($template_id, $dataset_id);
262 }
263 return false;
264 }
265
266 // delete items
267 public function delete_items($template_id = false) {
268 if ($this->extension() && method_exists($this->extension(), 'delete_items')) {
269 return $this->extension()->delete_items($template_id);
270 }
271 return false;
272 }
273
274 // visual mapper
275 public function visual_mapper() {
276
277 if ($this->extension() && method_exists($this->extension(), 'visual_mapper')) {
278 if (!extension_loaded('libxml')) {
279 /* translators: %s: PHP Extension */
280 return sprintf(__('The PHP %s extension is required', 'e2pdf'), 'libxml');
281 }
282 if (!extension_loaded('Dom')) {
283 /* translators: %s: PHP Extension */
284 return sprintf(__('The PHP %s extension is required', 'e2pdf'), 'DOM');
285 }
286 if ($this->extension()->get('item') == '-2') {
287 $visual_mapper = '';
288 if ($this->extension()->get('item1')) {
289 $this->extension()->set('item', $this->extension()->get('item1'));
290
291 $output = $this->extension()->visual_mapper();
292 if ($output !== false) {
293 $visual_mapper .= $output;
294 }
295 }
296 if ($this->extension()->get('item2')) {
297 $this->extension()->set('item', $this->extension()->get('item2'));
298 $output = $this->extension()->visual_mapper();
299 if ($output !== false) {
300 $visual_mapper .= $output;
301 }
302 }
303 return $visual_mapper;
304 } else {
305 return $this->extension()->visual_mapper();
306 }
307 }
308 return false;
309 }
310
311 public function auto_form($template, $data = []) {
312 if ($this->extension() && method_exists($this->extension(), 'auto_form')) {
313 return $this->extension()->auto_form($template, $data);
314 }
315 return $template;
316 }
317
318 // auto map
319 public function auto_map($name = false) {
320 if ($this->extension() && method_exists($this->extension(), 'auto_map') && $name) {
321 return $this->extension()->auto_map($name);
322 }
323 return false;
324 }
325
326 // auto
327 public function auto() {
328 if ($this->extension() && method_exists($this->extension(), 'auto')) {
329 if ($this->extension()->get('item') == '-2') {
330 if (!$this->extension()->get('item1') && !$this->extension()->get('item2')) {
331 return false;
332 }
333 $data = [];
334 if ($this->extension()->get('item1')) {
335 $this->extension()->set('item', $this->extension()->get('item1'));
336 $data = $this->extension()->auto();
337 }
338 if ($this->extension()->get('item2')) {
339 $this->extension()->set('item', $this->extension()->get('item2'));
340
341 if (!empty($data)) {
342
343 $data2 = $this->extension()->auto();
344 $data['elements'] = array_merge($data['elements'], $data2['elements']);
345 } else {
346 $data = $this->extension()->auto();
347 }
348 }
349 return $data;
350 } else {
351 return $this->extension()->auto();
352 }
353 }
354 return false;
355 }
356
357 // method
358 public function method($attr = false) {
359 if ($attr && $this->extension() && method_exists($this->extension(), $attr)) {
360 return true;
361 }
362 return false;
363 }
364
365 // load actions
366 public function load_actions() {
367 if ($this->extension() && method_exists($this->extension(), 'load_actions')) {
368 return $this->extension()->load_actions();
369 }
370 return false;
371 }
372
373 // load filters
374 public function load_filters() {
375 if ($this->extension() && method_exists($this->extension(), 'load_filters')) {
376 return $this->extension()->load_filters();
377 }
378 return false;
379 }
380
381 // load shortcodes
382 public function load_shortcodes() {
383 if ($this->extension() && method_exists($this->extension(), 'load_shortcodes')) {
384 return $this->extension()->load_shortcodes();
385 }
386 return false;
387 }
388
389 // filter acf allow in bidnings
390 public function filter_acf_allow_in_bindings($field) {
391 if (isset($field['allow_in_bindings']) && !$field['allow_in_bindings']) {
392 $field['allow_in_bindings'] = 1;
393 }
394 return $field;
395 }
396
397 // filter jet engine default object
398 public function filter_jet_listings_data_default_object($default_object) {
399 if ($this->extension instanceof Extension_E2pdf_Wordpress || $this->extension instanceof Extension_E2pdf_Woocommerce) {
400 if ($this->get('item') != '-3' && $this->get('dataset')) {
401 $default_object = get_post($this->get('dataset'));
402 }
403 }
404 return $default_object;
405 }
406 }
407