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

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

818 lines 30.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * E2pdf Post Helper
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 Model_E2pdf_Shortcode extends Model_E2pdf_Model {
17
18 function __construct() {
19 parent::__construct();
20 }
21
22 /**
23 * [e2pdf-attachment] shortcode
24 *
25 * @param array $atts - Shortcode attributes
26 */
27 function e2pdf_attachment($atts = array()) {
28
29 $template_id = (int) $atts['id'];
30
31 $response = '';
32
33 if (!array_key_exists('apply', $atts) || !array_key_exists('dataset', $atts) || !$template_id) {
34 return $response;
35 }
36
37 $dataset = $atts['dataset'];
38
39 $template = new Model_E2pdf_Template();
40
41 if ($template->load($template_id)) {
42
43 $uid_params = array();
44 $uid_params['template_id'] = $template_id;
45 $uid_params['dataset'] = $dataset;
46
47 $extension = new Model_E2pdf_Extension();
48 $extension->load($template->get('extension'));
49 $extension->set('item', $template->get('item'));
50 $extension->set('dataset', $dataset);
51
52 if ($extension->verify()) {
53
54 if (array_key_exists('inline', $atts)) {
55 $inline = $atts['inline'] ? 1 : 0;
56 $uid_params['inline'] = $inline;
57 }
58
59 if (array_key_exists('flatten', $atts)) {
60 $flatten = (int) $atts['flatten'];
61 $uid_params['flatten'] = $flatten;
62 $template->set('flatten', $flatten);
63 }
64
65 if (array_key_exists('format', $atts)) {
66 $format = $atts['format'];
67 $uid_params['format'] = $format;
68 $template->set('format', $format);
69 }
70
71 if (array_key_exists('password', $atts)) {
72 if (!array_key_exists('filter', $atts)) {
73 $password = $extension->render($atts['password'], 'value');
74 } else {
75 $password = $atts['password'];
76 }
77 $uid_params['password'] = $password;
78 $template->set('password', $password);
79 } else {
80 $template->set('password', $extension->render($template->get('password'), 'value'));
81 }
82
83 if (array_key_exists('name', $atts)) {
84 if (!array_key_exists('filter', $atts)) {
85 $name = $extension->render($atts['name'], 'value');
86 } else {
87 $name = $atts['name'];
88 }
89 $uid_params['name'] = $name;
90 $template->set('name', $name);
91 } else {
92 $template->set('name', $extension->render($template->get('name'), 'value'));
93 }
94
95 $entry = new Model_E2pdf_Entry();
96 $entry->set('entry', $uid_params);
97 if (!$entry->load_by_uid($entry->get('uid'))) {
98 $entry->save();
99 }
100
101 $template->fill($dataset, $entry->get('uid'));
102 $request = $template->render();
103
104 if (!isset($request['error']) && $entry->get('ID')) {
105 $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '/';
106
107 $this->helper->create_dir($tmp_dir);
108
109 if ($template->get('name')) {
110 $name = $template->get('name');
111 } else {
112 $name = $extension->render($template->get_filename(), 'value');
113 }
114
115 $file_name = $name . '.pdf';
116 $file_path = $tmp_dir . $file_name;
117 file_put_contents($file_path, base64_decode($request['file']));
118
119 if (file_exists($file_path)) {
120 $entry->set('pdf_num', $entry->get('pdf_num') + 1);
121 $entry->save();
122
123 return $file_path;
124 }
125 }
126 }
127 }
128
129 return $response;
130 }
131
132 /**
133 * [e2pdf-download] shortcode
134 *
135 * @param array $atts - Shortcode attributes
136 */
137 function e2pdf_download($atts = array()) {
138
139 $template_id = (int) $atts['id'];
140
141 $response = '';
142
143 if (!$template_id) {
144 return $response;
145 }
146
147 if (array_key_exists('dataset', $atts)) {
148 $dataset = $atts['dataset'];
149 } else {
150 return $response;
151 }
152
153 $template = new Model_E2pdf_Template();
154
155 if ($template->load($template_id)) {
156
157 $uid_params = array();
158 $uid_params['template_id'] = $template_id;
159 $uid_params['dataset'] = $dataset;
160
161 if (array_key_exists('class', $atts)) {
162 $classes = explode(" ", $atts['class']);
163 } else {
164 $classes = array();
165 }
166
167 $classes[] = 'e2pdf-download';
168
169 $extension = new Model_E2pdf_Extension();
170 $extension->load($template->get('extension'));
171 $extension->set('item', $template->get('item'));
172 $extension->set('dataset', $dataset);
173
174 if ($extension->verify()) {
175 $extension->set('no_filter', true);
176
177 if (array_key_exists('auto', $atts)) {
178 $auto = $atts['auto'] ? 1 : 0;
179 } else {
180 $auto = $template->get('auto');
181 }
182
183 if ($auto) {
184 $classes[] = 'e2pdf-auto';
185 }
186
187 if (array_key_exists('inline', $atts)) {
188 $inline = $atts['inline'] ? 1 : 0;
189 $uid_params['inline'] = $inline;
190 } else {
191 $inline = $template->get('inline');
192 }
193
194 if ($inline) {
195 $classes[] = 'e2pdf-inline';
196 }
197
198 if (array_key_exists('flatten', $atts)) {
199 $flatten = (int) $atts['flatten'];
200 $uid_params['flatten'] = $flatten;
201 }
202
203 if (array_key_exists('format', $atts)) {
204 $format = $atts['format'];
205 $uid_params['format'] = $format;
206 }
207
208
209 if (array_key_exists('button-title', $atts)) {
210 if (!array_key_exists('filter', $atts)) {
211 $title = $extension->render($atts['button-title']);
212 } else {
213 $title = $atts['button-title'];
214 }
215 } elseif ($extension->render($template->get('button_title')) !== '') {
216 $title = $extension->render($template->get('button_title'));
217 } else {
218 $title = __('Download', 'e2pdf');
219 }
220
221 if (array_key_exists('password', $atts)) {
222 if (!array_key_exists('filter', $atts)) {
223 $password = $extension->render($atts['password'], 'value');
224 } else {
225 $password = $atts['password'];
226 }
227 $uid_params['password'] = $password;
228 }
229
230 if (array_key_exists('name', $atts)) {
231 if (!array_key_exists('filter', $atts)) {
232 $name = $extension->render($atts['name'], 'value');
233 } else {
234 $name = $atts['name'];
235 }
236 $uid_params['name'] = $name;
237 }
238
239 /*
240 * @since 0.01.33
241 */
242 $entry = new Model_E2pdf_Entry();
243 $entry->set('entry', $uid_params);
244 if (!$entry->load_by_uid($entry->get('uid'))) {
245 $entry->save();
246 }
247
248 if ($entry->get('ID')) {
249 $url = esc_url(add_query_arg(array(
250 'page' => 'e2pdf-download',
251 'uid' => $entry->get('uid'),
252 ), site_url('/')
253 ));
254
255 $response = "<a id='e2pdf-download' class='" . implode(" ", $classes) . "' target='_blank' href='{$url}'>{$title}</a>";
256 }
257 }
258 }
259
260 return $response;
261 }
262
263 /**
264 * @since 0.01.44
265 *
266 * [e2pdf-save] shortcode
267 *
268 * @param array $atts - Shortcode attributes
269 */
270 function e2pdf_save($atts = array()) {
271
272 $template_id = (int) $atts['id'];
273
274 $response = '';
275
276 if (!array_key_exists('apply', $atts) || !array_key_exists('dataset', $atts) || !$template_id) {
277 return $response;
278 }
279
280 $dataset = $atts['dataset'];
281
282 $template = new Model_E2pdf_Template();
283
284 if ($template->load($template_id)) {
285
286 $uid_params = array();
287 $uid_params['template_id'] = $template_id;
288 $uid_params['dataset'] = $dataset;
289
290 $extension = new Model_E2pdf_Extension();
291 $extension->load($template->get('extension'));
292 $extension->set('item', $template->get('item'));
293 $extension->set('dataset', $dataset);
294
295 if ($extension->verify()) {
296
297 if (array_key_exists('inline', $atts)) {
298 $inline = $atts['inline'] ? 1 : 0;
299 $uid_params['inline'] = $inline;
300 }
301
302 if (array_key_exists('flatten', $atts)) {
303 $flatten = (int) $atts['flatten'];
304 $uid_params['flatten'] = $flatten;
305 $template->set('flatten', $flatten);
306 }
307
308 if (array_key_exists('format', $atts)) {
309 $format = $atts['format'];
310 $uid_params['format'] = $format;
311 $template->set('format', $format);
312 }
313
314 if (array_key_exists('password', $atts)) {
315 if (!array_key_exists('filter', $atts)) {
316 $password = $extension->render($atts['password'], 'value');
317 } else {
318 $password = $atts['password'];
319 }
320 $uid_params['password'] = $password;
321 $template->set('password', $password);
322 } else {
323 $template->set('password', $extension->render($template->get('password'), 'value'));
324 }
325
326 if (array_key_exists('name', $atts)) {
327 if (!array_key_exists('filter', $atts)) {
328 $name = $extension->render($atts['name'], 'value');
329 } else {
330 $name = $atts['name'];
331 }
332 $uid_params['name'] = $name;
333 $template->set('name', $name);
334 } else {
335 $template->set('name', $extension->render($template->get('name'), 'value'));
336 }
337
338 $entry = new Model_E2pdf_Entry();
339 $entry->set('entry', $uid_params);
340 if (!$entry->load_by_uid($entry->get('uid'))) {
341 $entry->save();
342 }
343
344 $template->fill($dataset, $entry->get('uid'));
345 $request = $template->render();
346
347 if (isset($request['error'])) {
348 return false;
349 } else {
350 if ($entry->get('ID')) {
351
352 if (array_key_exists('dir', $atts)) {
353 $save_dir = $atts['dir'];
354 } else {
355 $tpl_dir = $this->helper->get('tpl_dir') . $template->get('ID') . "/";
356 $save_dir = $tpl_dir . "save/";
357 $this->helper->create_dir($tpl_dir);
358 $this->helper->create_dir($save_dir);
359 }
360
361 if (is_dir($save_dir) && is_writable($save_dir)) {
362
363 if ($template->get('name')) {
364 $name = $template->get('name');
365 } else {
366 $name = $extension->render($template->get_filename(), 'value');
367 }
368
369 $file_name = $name . '.pdf';
370 $file_path = $save_dir . $file_name;
371 file_put_contents($file_path, base64_decode($request['file']));
372
373 if (file_exists($file_path)) {
374 $entry->set('pdf_num', $entry->get('pdf_num') + 1);
375 $entry->save();
376 }
377 }
378 }
379 }
380 }
381 }
382
383 return $response;
384 }
385
386 /**
387 * [e2pdf-view] shortcode
388 *
389 * @param array $atts - Shortcode attributes
390 */
391 function e2pdf_view($atts = array()) {
392
393 $template_id = (int) $atts['id'];
394
395 $response = '';
396
397 $width = isset($atts['width']) ? $atts['width'] : '100%';
398 $height = isset($atts['height']) ? $atts['height'] : '500';
399 $pdf_url = isset($atts['pdf']) ? $atts['pdf'] : false;
400
401 if (array_key_exists('class', $atts)) {
402 $classes = explode(" ", $atts['class']);
403 } else {
404 $classes = array();
405 }
406 $classes[] = 'e2pdf-view';
407
408 if ($pdf_url) {
409 if (filter_var($pdf_url, FILTER_VALIDATE_URL)) {
410 $url = plugins_url('assets/pdf.js/web/viewer.html?file=' . urlencode($pdf_url), $this->helper->get('plugin_file_path'));
411 $response = "<iframe class='" . implode(" ", $classes) . "' width='{$width}' height='{$height}' src='{$url}'></iframe>";
412 }
413 } else {
414
415 if (!$template_id) {
416 return $response;
417 }
418
419 if (array_key_exists('dataset', $atts)) {
420 $dataset = $atts['dataset'];
421 } else {
422 return $response;
423 }
424
425 $template = new Model_E2pdf_Template();
426
427 if ($template->load($template_id)) {
428
429 $uid_params = array();
430 $uid_params['template_id'] = $template_id;
431 $uid_params['dataset'] = $dataset;
432
433 $extension = new Model_E2pdf_Extension();
434 $extension->load($template->get('extension'));
435 $extension->set('item', $template->get('item'));
436 $extension->set('dataset', $dataset);
437
438 if ($extension->verify()) {
439 $extension->set('no_filter', true);
440
441 if (array_key_exists('inline', $atts)) {
442 $inline = $atts['inline'] ? 1 : 0;
443 $uid_params['inline'] = $inline;
444 }
445
446 if (array_key_exists('flatten', $atts)) {
447 $flatten = (int) $atts['flatten'];
448 $uid_params['flatten'] = $flatten;
449 }
450
451 if (array_key_exists('format', $atts)) {
452 $format = $atts['format'];
453 $uid_params['format'] = $format;
454 }
455
456
457 if (array_key_exists('password', $atts)) {
458 if (!array_key_exists('filter', $atts)) {
459 $password = $extension->render($atts['password']);
460 } else {
461 $password = $atts['password'];
462 }
463 $uid_params['password'] = $password;
464 }
465
466 if (array_key_exists('name', $atts)) {
467 if (!array_key_exists('filter', $atts)) {
468 $name = $extension->render($atts['name'], 'value');
469 } else {
470 $name = $atts['name'];
471 }
472 $uid_params['name'] = $name;
473 }
474
475 $entry = new Model_E2pdf_Entry();
476 $entry->set('entry', $uid_params);
477 if (!$entry->load_by_uid($entry->get('uid'))) {
478 $entry->save();
479 }
480
481 if ($entry->get('ID')) {
482 $pdf_url = esc_url_raw(add_query_arg(array(
483 'page' => 'e2pdf-download',
484 'uid' => $entry->get('uid'),
485 ), site_url('/')
486 ));
487
488 $url = plugins_url('assets/pdf.js/web/viewer.html?file=' . urlencode($pdf_url), $this->helper->get('plugin_file_path'));
489 $response = "<iframe class='" . implode(" ", $classes) . "' width='{$width}' height='{$height}' src='{$url}'></iframe>";
490 }
491 }
492 }
493 }
494
495 return $response;
496 }
497
498 function e2pdf_adobesign($atts = array()) {
499
500 $template_id = (int) $atts['id'];
501
502 $response = '';
503
504 if (!array_key_exists('apply', $atts) || !array_key_exists('dataset', $atts) || !$template_id) {
505 return $response;
506 }
507
508 $dataset = $atts['dataset'];
509 $template = new Model_E2pdf_Template();
510 if ($template->load($template_id)) {
511 $uid_params = array();
512 $uid_params['template_id'] = $template_id;
513 $uid_params['dataset'] = $dataset;
514
515 $extension = new Model_E2pdf_Extension();
516 $extension->load($template->get('extension'));
517 $extension->set('item', $template->get('item'));
518 $extension->set('dataset', $dataset);
519
520 if ($extension->verify()) {
521
522 if (array_key_exists('inline', $atts)) {
523 $inline = $atts['inline'] ? 1 : 0;
524 $uid_params['inline'] = $inline;
525 }
526
527 if (array_key_exists('flatten', $atts)) {
528 $flatten = (int) $atts['flatten'];
529 $uid_params['flatten'] = $flatten;
530 $template->set('flatten', $flatten);
531 }
532
533 if (array_key_exists('format', $atts)) {
534 $format = $atts['format'];
535 $uid_params['format'] = $format;
536 $template->set('format', $format);
537 }
538
539 if (array_key_exists('password', $atts)) {
540 if (!array_key_exists('filter', $atts)) {
541 $password = $extension->render($atts['password'], 'value');
542 } else {
543 $password = $atts['password'];
544 }
545 $uid_params['password'] = $password;
546 $template->set('password', $password);
547 } else {
548 $template->set('password', $extension->render($template->get('password'), 'value'));
549 }
550
551 if (array_key_exists('name', $atts)) {
552 if (!array_key_exists('filter', $atts)) {
553 $name = $extension->render($atts['name'], 'value');
554 } else {
555 $name = $atts['name'];
556 }
557 $uid_params['name'] = $name;
558 $template->set('name', $name);
559 } else {
560 $template->set('name', $extension->render($template->get('name'), 'value'));
561 }
562
563 $disable = array();
564 if (array_key_exists('disable', $atts)) {
565 $disable = explode(',', $atts['disable']);
566 }
567
568
569 $entry = new Model_E2pdf_Entry();
570 $entry->set('entry', $uid_params);
571 if (!$entry->load_by_uid($entry->get('uid'))) {
572 $entry->save();
573 }
574
575 $template->fill($dataset, $entry->get('uid'));
576 $request = $template->render();
577
578 if (!isset($request['error']) && $entry->get('ID')) {
579 $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '/';
580 $this->helper->create_dir($tmp_dir);
581
582 if ($template->get('name')) {
583 $name = $template->get('name');
584 } else {
585 $name = $extension->render($template->get_filename(), 'value');
586 }
587
588 $file_name = $name . '.pdf';
589
590 $file_path = $tmp_dir . $file_name;
591
592 file_put_contents($file_path, base64_decode($request['file']));
593
594 if (file_exists($file_path)) {
595
596 $agreement_id = false;
597 $documents = array();
598 if (!in_array('post_transientDocuments', $disable)) {
599 $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();
600 $model_e2pdf_adobesign->set(array(
601 'action' => 'api/rest/v5/transientDocuments',
602 'headers' => array(
603 'Content-Type: multipart/form-data',
604 ),
605 'data' => array(
606 'File-Name' => $file_name,
607 'Mime-Type' => 'application/pdf',
608 'File' => class_exists('cURLFile') ? new cURLFile($file_path) : '@' . $file_path
609 ),
610 ));
611
612 if ($transientDocumentId = $model_e2pdf_adobesign->request('transientDocumentId')) {
613 $documents[] = array(
614 'transientDocumentId' => $transientDocumentId
615 );
616 }
617 $model_e2pdf_adobesign->flush();
618 }
619
620 $documents = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_fileInfos', $documents, $atts, $template, $entry, $extension, $file_path);
621
622 if (!in_array('post_agreements', $disable) && !empty($documents)) {
623
624 $output = false;
625 if (array_key_exists('output', $atts)) {
626 $output = $atts['output'];
627 }
628
629 $recipients = array();
630 if (array_key_exists('recipients', $atts)) {
631 $atts['recipients'] = $extension->render($atts['recipients']);
632 $recipients_list = explode(',', $atts['recipients']);
633
634 foreach ($recipients_list as $recipient_info) {
635 $recipients[] = array(
636 'recipientSetMemberInfos' => array(
637 'email' => trim($recipient_info)
638 ),
639 'recipientSetRole' => 'SIGNER'
640 );
641 }
642 }
643
644 $data = array(
645 'documentCreationInfo' => array(
646 'signatureType' => 'ESIGN',
647 'recipientSetInfos' => $recipients,
648 'signatureFlow' => 'SENDER_SIGNATURE_NOT_REQUIRED',
649 'fileInfos' => $documents,
650 'name' => $name
651 )
652 );
653
654 $data = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_post_agreements_data', $data, $atts, $template, $entry, $extension, $file_path, $documents);
655
656 $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();
657 $model_e2pdf_adobesign->set(array(
658 'action' => 'api/rest/v5/agreements',
659 'data' => $data,
660 ));
661
662 $agreement_id = $model_e2pdf_adobesign->request('agreementId');
663 $model_e2pdf_adobesign->flush();
664 }
665
666 $response = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_response', $response, $atts, $template, $entry, $extension, $file_path, $documents, $agreement_id);
667 }
668
669 $this->helper->delete_dir($tmp_dir);
670 return $response;
671 }
672 }
673 }
674
675 return $response;
676 }
677
678 /**
679 * [e2pdf-format-number] shortcode
680 *
681 * @param array $atts - Shortcode attributes
682 * @param string $value - Value
683 */
684 function e2pdf_format_number($atts = array(), $value = '') {
685
686 $dec_point = isset($atts['dec_point']) ? $atts['dec_point'] : '.';
687 $thousands_sep = isset($atts['thousands_sep']) ? $atts['thousands_sep'] : '';
688 $decimal = isset($atts['decimal']) ? $atts['decimal'] : false;
689 $explode = isset($atts['explode']) ? $atts['explode'] : '';
690 $implode = isset($atts['implode']) ? $atts['implode'] : '';
691
692 $new_value = array();
693 $value = array_filter((array) $value, 'strlen');
694 foreach ($value as $v) {
695 if ($explode && strpos($v, $explode)) {
696 $v = explode($explode, $v);
697 }
698 foreach ((array) $v as $n) {
699 $n = str_replace(array(" ", ","), array("", "."), $n);
700 $n = preg_replace('/\.(?=.*\.)/', '', $n);
701 $n = floatval($n);
702
703 if (!$decimal) {
704 $num = explode('.', $n);
705 $decimal = isset($num[1]) ? strlen($num[1]) : 0;
706 }
707
708 $n = number_format($n, $decimal, $dec_point, $thousands_sep);
709 $new_value[] = $n;
710 }
711 unset($v);
712 }
713 $new_value = array_filter((array) $new_value, 'strlen');
714 return implode($implode, $new_value);
715 }
716
717 function e2pdf_format_date($atts = array(), $value = '') {
718 $format = isset($atts['format']) ? $atts['format'] : get_option('date_format');
719 if (!$value) {
720 return '';
721 }
722 $value = date($format, strtotime($value));
723 return $value;
724 }
725
726 /**
727 * [e2pdf-format-output] shortcode
728 *
729 * @param array $atts - Shortcode attributes
730 * @param string $value - Value
731 */
732 function e2pdf_format_output($atts = array(), $value = '') {
733
734 $explode = isset($atts['explode']) ? $atts['explode'] : false;
735 $implode = isset($atts['implode']) ? $atts['implode'] : '';
736 $output = isset($atts['output']) ? $atts['output'] : false;
737 $filter = isset($atts['filter']) ? $atts['filter'] : false;
738
739 $new_value = array();
740 $value = array_filter((array) $value, 'strlen');
741
742 foreach ($value as $v) {
743 if ($explode && strpos($v, $explode)) {
744 $v = explode($explode, $v);
745 }
746 foreach ((array) $v as $n) {
747 if ($filter) {
748 if (strpos($filter, ',')) {
749 $filter = explode(',', $filter);
750 } else {
751 $filter = array_filter((array) $filter, 'strlen');
752 }
753 foreach ((array) $filter as $sub_filter) {
754 switch ($sub_filter) {
755 case 'trim':
756 $n = trim($n);
757 break;
758
759 case 'strip_tags':
760 $n = strip_tags($n);
761 break;
762
763 case 'strtolower':
764 if (function_exists('mb_strtolower')) {
765 $n = mb_strtolower($n);
766 } elseif (function_exists('strtolower')) {
767 $n = strtolower($n);
768 }
769 break;
770
771 case 'ucfirst':
772 if (function_exists('mb_strtoupper') && function_exists('mb_strtolower')) {
773 $fc = mb_strtoupper(mb_substr($n, 0, 1));
774 $n = $fc . mb_substr($n, 1);
775 } else if (function_exists('ucfirst') && function_exists('strtolower')) {
776 $n = ucfirst($n);
777 }
778 break;
779
780 case 'strtoupper':
781 if (function_exists('mb_strtoupper')) {
782 $n = mb_strtoupper($n);
783 } elseif (function_exists('strtoupper')) {
784 $n = strtoupper($n);
785 }
786 break;
787
788 case 'lines':
789 $n = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $n);
790 break;
791
792 default:
793 break;
794 }
795 }
796 }
797 $new_value[] = $n;
798 }
799 unset($v);
800 }
801
802 if ($output) {
803 $search = array();
804 $replace = array();
805
806 foreach ($new_value as $key => $value) {
807 $search[] = "{" . $key . "}";
808 $replace[] = $value;
809 }
810 $output = str_replace($search, $replace, $output);
811 return preg_replace('~(?:{/?)[^/}]+/?}~s', "", $output);
812 } else {
813 return implode($implode, $new_value);
814 }
815 }
816
817 }
818