PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.02.02
E2Pdf – Export Pdf Tool for WordPress v1.02.02
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 / controller / e2pdf.php

e2pdf.php in E2Pdf – Export Pdf Tool for WordPress 1.02.02, at classes/controller/e2pdf.php

348 lines 9.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * E2pdf Controller
5 *
6 * @copyright Copyright 2017 https://e2pdf.com
7 * @license GPL v2
8 * @version 1
9 * @link https://e2pdf.com
10 * @since 0.00.01
11 */
12 if (!defined('ABSPATH')) {
13 die('Access denied.');
14 }
15
16 class Controller_E2pdf extends Helper_E2pdf_View {
17
18 /**
19 * @url admin.php?page=e2pdf
20 */
21 public function index_action() {
22
23 }
24
25 /**
26 * @url admin.php?page=e2pdf&action=export
27 */
28 public function export_action() {
29
30 $template_id = (int) $this->get->get('template_id');
31 $dataset_id = $this->get->get('dataset_id');
32
33 if ($template_id && $dataset_id) {
34
35 $template = new Model_E2pdf_Template();
36 $template->load($template_id);
37
38 if ($this->post->get()) {
39 foreach ($this->post->get('options') as $key => $value) {
40 $template->set($key, $value);
41 }
42 }
43
44 /*
45 * @since 0.01.34
46 */
47 $uid = false;
48 $uid_params = array();
49 $uid_params['template_id'] = $template_id;
50 $uid_params['dataset'] = $dataset_id;
51
52 $entry = new Model_E2pdf_Entry();
53 $entry->set('entry', $uid_params);
54
55 if ($entry->load_by_uid($entry->get('uid'))) {
56 $uid = $entry->get('uid');
57 }
58
59 $extension = new Model_E2pdf_Extension();
60 $extension->load($template->get('extension'));
61 $extension->set('item', $template->get('item'));
62 $extension->set('dataset', $dataset_id);
63
64 $template->set('name', $extension->render($template->get('name'), 'value'));
65 $template->set('password', $extension->render($template->get('password'), 'value'));
66
67 $template->fill($dataset_id, $uid);
68 $request = $template->render();
69
70 if (isset($request['error'])) {
71 $this->add_notification('error', $request['error']);
72 $this->render('blocks', 'notifications');
73 } else {
74 $filename = $template->get_filename();
75 $file = $request['file'];
76 $this->download_response('pdf', $file, $filename);
77 }
78 } else {
79 $this->error('404');
80 }
81 }
82
83 /**
84 * Get activated templates list
85 *
86 * @return array() - Activated templates list
87 */
88 public function get_active_templates() {
89 global $wpdb;
90 $model_e2pdf_template = new Model_E2pdf_Template();
91
92 $condition = array(
93 'trash' => array(
94 'condition' => '<>',
95 'value' => '1',
96 'type' => '%d'
97 ),
98 'activated' => array(
99 'condition' => '=',
100 'value' => '1',
101 'type' => '%d'
102 )
103 );
104
105 $order_condition = array(
106 'orderby' => 'id',
107 'order' => 'desc',
108 );
109
110 $where = $this->helper->load('db')->prepare_where($condition);
111 $orderby = $this->helper->load('db')->prepare_orderby($order_condition);
112
113
114 $templates = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $model_e2pdf_template->get_table() . $where['sql'] . $orderby . "", $where['filter']));
115 $export_templates = array();
116
117 $export_templates[] = array(
118 'key' => '',
119 'value' => __('--- Select ---', 'e2pdf')
120 );
121
122 if (!empty($templates)) {
123 foreach ($templates as $key => $value) {
124 $export_templates[] = array(
125 'key' => $value->ID,
126 'value' => $value->title
127 );
128 }
129 }
130
131 return $export_templates;
132 }
133
134 /**
135 * Get entries for template
136 *
137 * @return array() - Entries for template
138 */
139 public function get_datasets($template_id = false) {
140
141 $datasets = array();
142
143 $datasets[] = array(
144 'key' => '',
145 'value' => __('--- Select ---', 'e2pdf')
146 );
147
148 if ($template_id) {
149 $template = new Model_E2pdf_Template();
150 $template->load($template_id);
151
152 $extension = new Model_E2pdf_Extension();
153 $extension->load($template->get('extension'));
154
155 $datasets_tmp = $extension->
156 get_datasets(
157 $template->get('item'), $template->get('dataset_title')
158 );
159
160 if ($datasets_tmp && is_array($datasets_tmp)) {
161 $datasets = array_merge($datasets, $datasets_tmp);
162 }
163 }
164
165 return $datasets;
166 }
167
168 /**
169 * Get options to overwrite on template
170 *
171 * @return array() - List of options to overwrite
172 */
173 public function get_options($template_id = false) {
174
175 $options = array();
176
177 if ($template_id) {
178 $template = new Model_E2pdf_Template();
179 $template->load($template_id);
180 $options['name'] = $template->get('name');
181 $options['password'] = $template->get('password');
182 $options['flatten'] = $template->get('flatten');
183 }
184
185 return $options;
186 }
187
188 /**
189 * Get templates list via ajax
190 * action: wp_ajax_e2pdf_templates
191 * function: e2pdf_templates
192 *
193 * @return json - Templates list
194 */
195 public function ajax_templates() {
196
197 $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax');
198
199 $template_id = (int) $this->post->get('data');
200 $content = array();
201 $content['datasets'] = $this->get_datasets($template_id);
202 $content['options'] = $this->get_options($template_id);
203 $content['url'] = $this->helper->get_url(array('page' => 'e2pdf-templates', 'action' => 'edit', 'id' => $template_id));
204
205 $template = new Model_E2pdf_Template();
206 $extension = new Model_E2pdf_Extension();
207
208 if ($template->load($template_id) && $extension->load($template->get('extension'))) {
209 $content['delete_items'] = method_exists($extension->extension(), 'delete_items');
210 }
211
212 $response = array(
213 'content' => $content,
214 );
215
216 $this->json_response($response);
217 }
218
219 /**
220 * Get entries list via ajax
221 * action: wp_ajax_e2pdf_entry
222 * function: e2pdf_entry
223 *
224 * @return json - Entries list
225 */
226 public function ajax_dataset() {
227
228 $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax');
229
230 $data = $this->post->get('data');
231
232 $template_id = (int) $data['template'];
233 $dataset_id = (int) $data['dataset'];
234
235 $template = new Model_E2pdf_Template();
236 $template->load($template_id);
237
238 $extension = new Model_E2pdf_Extension();
239 $extension->load($template->get('extension'));
240
241 $dataset = $extension->get_dataset($dataset_id);
242
243 $content = array();
244 if ($dataset) {
245 $content['export'] = true;
246 $content['view'] = isset($dataset->url) && $dataset->url ? true : false;
247 $content['delete_item'] = method_exists($extension->extension(), 'delete_item');
248 $content['dataset'] = $dataset;
249 } else {
250 $content['export'] = false;
251 $content['view'] = false;
252 $content['delete_item'] = false;
253 $content['dataset'] = false;
254 }
255
256 $response = array(
257 'content' => $content,
258 );
259
260 $this->json_response($response);
261 }
262
263 public function ajax_delete_item() {
264
265 $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax');
266
267 $data = $this->post->get('data');
268
269 $template_id = (int) $data['template'];
270 $dataset_id = (int) $data['dataset'];
271
272 if (!$template_id || !$dataset_id) {
273 return;
274 }
275
276 $template = new Model_E2pdf_Template();
277 $extension = new Model_E2pdf_Extension();
278
279 $action = false;
280
281 if ($template->load($template_id) && $extension->load($template->get('extension'))) {
282 if (method_exists($extension->extension(), 'delete_item')) {
283 $action = $extension->delete_item($template_id, $dataset_id);
284 }
285 }
286
287 if ($action) {
288 $response = array(
289 'redirect' => $this->helper->get_url(array(
290 'page' => 'e2pdf',
291 'template_id' => $template_id
292 )
293 )
294 );
295
296 $this->add_notification('update', __('Dataset removed successfully', 'e2pdf'));
297 } else {
298 $response = array(
299 'error' => __("Dataset can't be removed!", 'e2pdf')
300 );
301 }
302
303 $this->json_response($response);
304 }
305
306 public function ajax_delete_items() {
307 $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax');
308
309 $data = $this->post->get('data');
310 $template_id = (int) $data['template'];
311
312
313 if (!$template_id) {
314 return;
315 }
316
317 $template = new Model_E2pdf_Template();
318 $extension = new Model_E2pdf_Extension();
319
320 $action = false;
321
322 if ($template->load($template_id) && $extension->load($template->get('extension'))) {
323 if (method_exists($extension->extension(), 'delete_items')) {
324 $action = $extension->delete_items($template_id);
325 }
326 }
327
328 if ($action) {
329 $response = array(
330 'redirect' => $this->helper->get_url(array(
331 'page' => 'e2pdf',
332 'template_id' => $template_id
333 )
334 )
335 );
336
337 $this->add_notification('update', __('Datasets removed successfully', 'e2pdf'));
338 } else {
339 $response = array(
340 'error' => __("Datasets can't be removed!", 'e2pdf')
341 );
342 }
343
344 $this->json_response($response);
345 }
346
347 }
348