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 / DonationForms / V2 / Actions / ConvertV2FormToV3Form.php

ConvertV2FormToV3Form.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.9, at src/DonationForms/V2/Actions/ConvertV2FormToV3Form.php

159 lines 4.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\DonationForms\V2\Actions;
4
5 use Give\DonationForms\FormDesigns\ClassicFormDesign\ClassicFormDesign;
6 use Give\DonationForms\FormDesigns\MultiStepFormDesign\MultiStepFormDesign;
7 use Give\DonationForms\V2\Models\DonationForm;
8 use Give\DonationForms\V2\ValueObjects\DonationFormStatus;
9 use Give\DonationForms\Models\DonationForm as V3DonationForm;
10 use Give\DonationForms\Properties\FormSettings;
11 use Give\DonationForms\ValueObjects\DonationFormMetaKeys as V3DonationFormMetaKeys;
12 use Give\DonationForms\ValueObjects\DonationFormStatus as V3DonationFormStatus;
13 use Give\DonationForms\ValueObjects\GoalType;
14 use Give\FormBuilder\Actions\GenerateDefaultDonationFormBlockCollection;
15 use Give\Framework\Blocks\BlockCollection;
16
17 /**
18 * @since 4.2.0
19 */
20 class ConvertV2FormToV3Form
21 {
22 public $form;
23
24 /**
25 * @since 4.2.0
26 */
27 public function __construct(DonationForm $form)
28 {
29 $this->form = $form;
30 }
31
32 /**
33 * @since 4.2.0
34 */
35 public function __invoke()
36 {
37 return new V3DonationForm([
38 'id' => $this->form->id,
39 'title' => $this->form->title,
40 'status' => $this->convertStatus(),
41 'settings' => $this->convertSettings(),
42 'blocks' => $this->convertBlocks(),
43 ]);
44 }
45
46 /**
47 * @since 4.2.0
48 */
49 public function convertSettings()
50 {
51 $v3Settings = give_get_meta($this->form->id, V3DonationFormMetaKeys::SETTINGS, true);
52
53 if ($v3Settings) {
54 return FormSettings::fromJson($v3Settings);
55 }
56
57 return FormSettings::fromArray([
58 'formTitle' => $this->form->title,
59 'designId' => $this->convertDesignId(),
60 'goalType' => $this->convertGoalType()->getValue(),
61 'enableDonationGoal' => $this->convertGoalEnabled(),
62 'goalAmount' => $this->convertGoalAmount(),
63 'enableAutoClose' => $this->convertAutoClose(),
64 ]);
65 }
66
67 /**
68 * @since 4.2.0
69 */
70 public function convertAutoClose()
71 {
72 return give_is_setting_enabled(give_get_meta($this->form->id, '_give_close_form_when_goal_achieved', 'disabled'));
73 }
74
75 /**
76 * @since 4.2.0
77 */
78 public function convertBlocks()
79 {
80 $v3Blocks = give_get_meta($this->form->id, V3DonationFormMetaKeys::FIELDS, true);
81
82 if ($v3Blocks) {
83 return BlockCollection::fromJson($v3Blocks);
84 }
85
86 return (new GenerateDefaultDonationFormBlockCollection())();
87 }
88
89 /**
90 * @since 4.2.0
91 */
92 public function convertStatus(): V3DonationFormStatus
93 {
94 switch ($this->form->status) {
95 case DonationFormStatus::DRAFT():
96 return V3DonationFormStatus::DRAFT();
97 case DonationFormStatus::PUBLISHED():
98 return V3DonationFormStatus::PUBLISHED();
99 case DonationFormStatus::TRASHED():
100 return V3DonationFormStatus::TRASHED();
101 case DonationFormStatus::PENDING():
102 return V3DonationFormStatus::PENDING();
103 case DonationFormStatus::PRIVATE():
104 return V3DonationFormStatus::PRIVATE();
105 default:
106 throw new \Exception('Invalid form status');
107 }
108 }
109
110 /**
111 * @since 4.2.0
112 */
113 public function convertGoalType(): GoalType
114 {
115 $goalFormat = give_get_meta($this->form->id, '_give_goal_format', true);
116 $recurringGoalFormat = (bool)give_get_meta($this->form->id, '_give_recurring_goal_format', true);
117
118 switch ($goalFormat) {
119 case 'donation':
120 return $recurringGoalFormat ? GoalType::SUBSCRIPTIONS() : GoalType::DONATIONS();
121 case 'donors':
122 return $recurringGoalFormat ? GoalType::DONORS_FROM_SUBSCRIPTIONS() : GoalType::DONORS();
123 default:
124 return $recurringGoalFormat ? GoalType::AMOUNT_FROM_SUBSCRIPTIONS() : GoalType::AMOUNT();
125 }
126 }
127
128 /**
129 * @since 4.2.0
130 */
131 public function convertGoalEnabled(): bool
132 {
133 return give_is_setting_enabled(give_get_meta($this->form->id, '_give_goal_option', 'disabled'));
134 }
135
136 /**
137 * @since 4.2.0
138 */
139 public function convertGoalAmount()
140 {
141 return give_get_meta($this->form->id, '_give_set_goal', true) ?? 0;
142 }
143
144 /**
145 * @since 4.2.0
146 */
147 public function convertDesignId()
148 {
149 $template = give_get_meta($this->form->id, '_give_form_template', true);
150
151 switch ($template) {
152 case 'sequoia':
153 return MultiStepFormDesign::id();
154 default:
155 return ClassicFormDesign::id();
156 }
157 }
158 }
159