PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 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 / DonationForms / V2 / Actions / ConvertV2FormToV3Form.php
give / src / DonationForms / V2 / Actions Last commit date
ConvertV2FormToV3Form.php 1 year ago
ConvertV2FormToV3Form.php
159 lines
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