PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.5.0
GiveWP – Donation Plugin and Fundraising Platform v4.5.0
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 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / FormBuilder / Actions / ConvertLegacyNotificationToEmailNotificationData.php
give / src / FormBuilder / Actions Last commit date
ConvertGlobalDefaultOptionsToDefaultBlocks.php 2 years ago ConvertLegacyNotificationToEmailNotificationData.php 1 year ago DequeueAdminScriptsInFormBuilder.php 2 years ago DequeueAdminStylesInFormBuilder.php 2 years ago GenerateDefaultDonationFormBlockCollection.php 1 year ago UpdateDonorCommentsMeta.php 2 years ago UpdateEmailSettingsMeta.php 2 years ago UpdateEmailTemplateMeta.php 2 years ago UpdateFormGridMeta.php 2 years ago
ConvertLegacyNotificationToEmailNotificationData.php
109 lines
1 <?php
2
3 namespace Give\FormBuilder\Actions;
4
5 use Give\FormBuilder\DataTransferObjects\EmailNotificationData;
6
7 /**
8 * Convert data from legacy configuration into DTO.
9 *
10 * @since 3.0.0
11 */
12 class ConvertLegacyNotificationToEmailNotificationData
13 {
14 /** @var string */
15 protected $id;
16
17 /** @var string */
18 protected $title;
19
20 /** @var array */
21 protected $fields;
22
23 public function __construct(array $notification)
24 {
25 $this->id = $notification['id'];
26 $this->title = $notification['title'];
27 $this->fields = $notification['fields'];
28 }
29
30 public function __invoke(): EmailNotificationData
31 {
32 $dto = new EmailNotificationData;
33
34 $dto->id = $this->id;
35 $dto->title = $this->title;
36 $dto->statusOptions = $this->getStatusOptions();
37 $dto->supportsRecipients = $this->hasRecipientField();
38 $dto->defaultValues = $this->getDefaultValues();
39
40 return $dto;
41 }
42
43 protected function getStatusOptions()
44 {
45 try {
46 $field = $this->findFieldBy('id', "_give_{$this->id}_notification");
47 $formattedOptions = [];
48 foreach($field['options'] as $value => $label) {
49 $formattedOptions[] = [
50 'value' => $value,
51 'label' => $label,
52 ];
53 }
54 return $formattedOptions;
55 } catch(\Exception $e) {
56 return [];
57 }
58 }
59
60 protected function hasRecipientField(): bool
61 {
62 try {
63 $this->findFieldBy('id', "_give_{$this->id}_recipient");
64 return true;
65 } catch(\Exception $e) {
66 return false;
67 }
68 }
69
70 protected function findFieldBy($key, $value)
71 {
72 foreach( $this->fields as $field ) {
73 if( isset($field[$key]) && $field[$key] === $value ) {
74 return $field;
75 }
76 }
77 throw new \Exception("Field not found with $key of '$value'");
78 }
79
80 protected function getDefaultValues(): array
81 {
82 $defaultValues = [];
83 foreach($this->fields as $field){
84 $key = str_replace("_give_{$this->id}_", '', $field['id']);
85 $defaultValues[$key] = $field['default'] ?? '';
86 }
87
88 if (!isset($defaultValues['email_message'])) {
89 foreach ($this->fields as $field) {
90 if (strpos($field['id'], '_message') !== false) {
91 $defaultValues['email_message'] = $field['default'] ?? '';
92 break;
93 }
94 }
95 }
96
97 if (!isset($defaultValues['email_subject'])) {
98 foreach ($this->fields as $field) {
99 if (strpos($field['id'], '_subject') !== false) {
100 $defaultValues['email_subject'] = $field['default'] ?? '';
101 break;
102 }
103 }
104 }
105
106 return $defaultValues;
107 }
108 }
109