PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 All 255 releases
give / src / FormBuilder / EmailPreview / Actions / BuildEmailPreview.php

BuildEmailPreview.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.9, at src/FormBuilder/EmailPreview/Actions/BuildEmailPreview.php

78 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\FormBuilder\EmailPreview\Actions;
4
5 /**
6 * Build email preview.
7 *
8 * @since 3.0.0
9 */
10 class BuildEmailPreview
11 {
12 /**
13 * @var ApplyPreviewTemplateTags
14 */
15 protected $applyPreviewTemplateTagsAction;
16
17 /**
18 * @param ApplyPreviewTemplateTags $applyPreviewTemplateTagsAction
19 */
20 public function __construct(ApplyPreviewTemplateTags $applyPreviewTemplateTagsAction)
21 {
22 $this->applyPreviewTemplateTagsAction = $applyPreviewTemplateTagsAction;
23 }
24
25 /**
26 * @param string $emailHeader
27 * @return string
28 */
29 public function __invoke($request)
30 {
31 $formId = $request->get_param('form_id');
32 $emailType = $request->get_param('email_type');
33
34 /**
35 * The $emailNotification object is maintained for filter backward compatibility.
36 */
37 try {
38 /** @var \Give_Email_Notification $emailNotification */
39 $emailNotification = give(GetEmailNotificationByType::class)->__invoke($emailType);
40 } catch (\Exception $e) {
41 return new \WP_REST_Response($e->getMessage(), 400);
42 }
43
44 $emailHeader = apply_filters("give_{$emailType}_get_email_header", $request->get_param('email_heading'), $emailNotification, $formId);
45 $emailMessage = apply_filters("give_{$emailType}_get_email_message", $request->get_param('email_message'), $emailNotification, $formId);
46 $emailTemplate = apply_filters("give_{$emailType}_get_email_template", $request->get_param('email_template'), $emailNotification, $formId);
47 $contentType = apply_filters("give_{$emailType}_get_email_content_type", $request->get_param('email_content_type'), $emailNotification, $formId);
48
49 Give()->emails->__set('html', 'text/html' === $contentType);
50 Give()->emails->__set('content_type', $contentType);
51 Give()->emails->__set('heading', $this->applyPreviewTemplateTags($emailHeader));
52 Give()->emails->__set('template', 'text/html' === $contentType ? $emailTemplate : 'none');
53
54 if('text/plain' === $contentType) {
55 $emailMessage = wpautop($emailMessage);
56 }
57
58 add_filter('give_preview_email_receipt_header', '__return_false'); // Disable hard-coded preview switcher.
59 do_action( "give_{$emailType}_email_preview", $emailNotification );
60
61 return apply_filters( "give_{$emailType}_email_preview_message",
62 Give()->emails->build_email($this->applyPreviewTemplateTags($emailMessage)),
63 $email_preview_data = apply_filters( "give_{$emailType}_email_preview_data", array() ),
64 $emailNotification
65 );
66 }
67
68 /**
69 * @param $emailHeader
70 *
71 * @return string
72 */
73 protected function applyPreviewTemplateTags($emailHeader): string
74 {
75 return $this->applyPreviewTemplateTagsAction->__invoke($emailHeader);
76 }
77 }
78