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 / controller / e2pdf.php

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

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