PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.03.07
E2Pdf – Export Pdf Tool for WordPress v1.03.07
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-action.php

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

168 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * E2pdf Action Model
5 *
6 * @copyright Copyright 2017 https://e2pdf.com
7 * @license GPL v2
8 * @version 1
9 * @link https://e2pdf.com
10 * @since 0.01.63
11 */
12 if (!defined('ABSPATH')) {
13 die('Access denied.');
14 }
15
16 class Model_E2pdf_Action extends Model_E2pdf_Model {
17
18 private $extension;
19
20 function __construct() {
21 parent::__construct();
22 }
23
24 public function load($extension) {
25 $this->extension = $extension;
26 }
27
28 public function process_actions($page) {
29 if (!$page || !$this->extension) {
30 return $page;
31 }
32
33 if (isset($page['actions']) && !empty($page['actions'])) {
34 foreach ($page['actions'] as $action) {
35 $page = $this->process_action($page, $action);
36 }
37 if (isset($page['hidden']) && $page['hidden']) {
38 $page = false;
39 }
40 }
41
42 if ($page) {
43 if (!empty($page['elements'])) {
44 foreach ($page['elements'] as $el_key => $el_value) {
45 if (isset($el_value['actions']) && !empty($el_value['actions'])) {
46 foreach ($el_value['actions'] as $action) {
47 $el_value = $this->process_action($el_value, $action);
48 }
49 $page['elements'][$el_key] = $el_value;
50 if (isset($el_value['hidden']) && $el_value['hidden']) {
51 unset($page['elements'][$el_key]);
52 }
53 }
54 }
55 }
56 }
57
58 return $page;
59 }
60
61 private function process_action($element, $action) {
62
63 $apply = false;
64 if (isset($action['conditions']) && !empty($action['conditions'])) {
65 foreach ($action['conditions'] as $condition) {
66 $apply = $this->process_condition($condition);
67 if ($action['apply'] == 'any' && $apply) {
68 break;
69 } elseif ($action['apply'] == 'all' && !$apply) {
70 break;
71 }
72 }
73 }
74
75 if ($apply) {
76 $element = $this->apply_action($element, $action);
77 }
78
79 return $element;
80 }
81
82 private function process_condition($condition) {
83
84 $result = false;
85
86 $if = $this->extension->render($condition['if'], 'value');
87 $value = $this->extension->render($condition['value'], 'value');
88
89 switch ($condition['condition']) {
90 case '=':
91 $result = $if == $value ? true : false;
92 break;
93
94 case '!=':
95 $result = $if != $value ? true : false;
96 break;
97
98 case '>':
99 $result = $if > $value ? true : false;
100 break;
101
102 case '>=':
103 $result = $if >= $value ? true : false;
104 break;
105
106 case '<':
107 $result = $if < $value ? true : false;
108 break;
109
110 case '<=':
111 $result = $if <= $value ? true : false;
112 break;
113
114 case 'like':
115 $result = strpos($if, $value) !== false ? true : false;
116 break;
117
118 case 'not_like':
119 $result = strpos($if, $value) === false ? true : false;
120 break;
121 }
122
123 return $result;
124 }
125
126 private function apply_action($element, $action) {
127 if ($action['action'] == 'hide') {
128 $element['hidden'] = true;
129 } elseif ($action['action'] == 'show') {
130 $element['hidden'] = false;
131 } elseif ($action['action'] == 'change' && $action['property']) {
132
133 $number_properties = array(
134 'width', 'height', 'left', 'top'
135 );
136
137 $not_properties = array(
138 'top', 'left', 'width', 'height', 'value'
139 );
140
141 if ($action['property'] == 'value') {
142 $change = $action['change'];
143 } else {
144 $change = $this->extension->render($action['change'], 'value');
145 }
146
147 if ((substr($change, 0, 1) === "+" || substr($change, 0, 1) === "-") && in_array($action['property'], $number_properties)) {
148 if (isset($element['element_id'])) {
149 $value = isset($element[$action['property']]) ? $element[$action['property']] : 0;
150 } else {
151 $value = isset($element['properties'][$action['property']]) ? $element['properties'][$action['property']] : 0;
152 }
153
154 $change = $value + floatval($change);
155 }
156
157 if (in_array($action['property'], $not_properties) && isset($element['element_id'])) {
158 $element[$action['property']] = $change;
159 } else {
160 $element['properties'][$action['property']] = $change;
161 }
162 }
163
164 return $element;
165 }
166
167 }
168