PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.06.02
E2Pdf – Export Pdf Tool for WordPress v1.06.02
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 1.08.09 All 71 releases
e2pdf / classes / model / e2pdf-action.php

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

199 lines 6.2 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']) || ($el_value['page_id'] != $page['page_id'])) {
51 unset($page['elements'][$el_key]);
52 }
53 }
54 }
55 }
56 }
57
58 return $page;
59 }
60
61 public function process_page_id($page) {
62 $elements = array();
63 if ($page && $this->extension) {
64 if (!empty($page['elements'])) {
65 foreach ($page['elements'] as $el_key => $el_value) {
66 if (isset($el_value['actions']) && !empty($el_value['actions'])) {
67 foreach ($el_value['actions'] as $action) {
68 if ($action['action'] == 'change' && isset($action['property']) && $action['property'] == 'page_id') {
69 $el_value = $this->process_action($el_value, $action);
70 }
71 }
72 if ($el_value['page_id'] != $page['page_id']) {
73 $elements[] = $el_value;
74 }
75 }
76 }
77 }
78 }
79 return $elements;
80 }
81
82 private function process_action($element, $action) {
83
84 $apply = false;
85 if (isset($action['conditions']) && !empty($action['conditions'])) {
86 foreach ($action['conditions'] as $condition) {
87 $apply = $this->process_condition($condition);
88 if ($action['apply'] == 'any' && $apply) {
89 break;
90 } elseif ($action['apply'] == 'all' && !$apply) {
91 break;
92 }
93 }
94 }
95
96 if ($apply) {
97 $element = $this->apply_action($element, $action);
98 }
99
100 return $element;
101 }
102
103 private function process_condition($condition) {
104
105 $result = false;
106
107 $if = $this->extension->render($condition['if'], 'value');
108 $value = $this->extension->render($condition['value'], 'value');
109
110 switch ($condition['condition']) {
111 case '=':
112 $result = $if == $value ? true : false;
113 break;
114
115 case '!=':
116 $result = $if != $value ? true : false;
117 break;
118
119 case '>':
120 $result = $if > $value ? true : false;
121 break;
122
123 case '>=':
124 $result = $if >= $value ? true : false;
125 break;
126
127 case '<':
128 $result = $if < $value ? true : false;
129 break;
130
131 case '<=':
132 $result = $if <= $value ? true : false;
133 break;
134
135 case 'like':
136 if (empty($value) && empty($if)) {
137 $result = true;
138 } else {
139 $result = !empty($value) && strpos($if, $value) !== false ? true : false;
140 }
141 break;
142
143 case 'not_like':
144 if (empty($value) && empty($if)) {
145 $result = false;
146 } elseif (empty($value) && !empty($if)) {
147 $result = true;
148 } else {
149 $result = !empty($value) && strpos($if, $value) === false ? true : false;
150 }
151 break;
152 }
153
154 return $result;
155 }
156
157 private function apply_action($element, $action) {
158 if ($action['action'] == 'hide') {
159 $element['hidden'] = true;
160 } elseif ($action['action'] == 'show') {
161 $element['hidden'] = false;
162 } elseif ($action['action'] == 'change' && $action['property']) {
163
164 $number_properties = array(
165 'width', 'height', 'left', 'top'
166 );
167
168 $not_properties = array(
169 'top', 'left', 'width', 'height', 'value', 'page_id'
170 );
171
172 if ($action['property'] == 'value') {
173 $change = $action['change'];
174 } else {
175 $change = $this->extension->render($action['change'], 'value');
176 }
177
178 if ((substr($change, 0, 1) === "+" || substr($change, 0, 1) === "-") && in_array($action['property'], $number_properties)) {
179 if (isset($element['element_id'])) {
180 $value = isset($element[$action['property']]) ? $element[$action['property']] : 0;
181 } else {
182 $value = isset($element['properties'][$action['property']]) ? $element['properties'][$action['property']] : 0;
183 }
184
185 $change = $value + floatval($change);
186 }
187
188 if (in_array($action['property'], $not_properties) && isset($element['element_id'])) {
189 $element[$action['property']] = $change;
190 } else {
191 $element['properties'][$action['property']] = $change;
192 }
193 }
194
195 return $element;
196 }
197
198 }
199