PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.0
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / Subscriptions / DataTransferObjects / SubscriptionArgs.php
give / src / Subscriptions / DataTransferObjects Last commit date
SubscriptionArgs.php 4 years ago SubscriptionQueryData.php 4 years ago
SubscriptionArgs.php
176 lines
1 <?php
2
3 namespace Give\Subscriptions\DataTransferObjects;
4
5 /**
6 * Class SubscriptionArgs
7 * @since 2.18.0
8 */
9 class SubscriptionArgs {
10 /**
11 * @var string
12 */
13 public $period;
14 /**
15 * @var string
16 */
17 public $times;
18 /**
19 * @var string
20 */
21 public $frequency;
22 /**
23 * @var string
24 */
25 public $formTitle;
26 /**
27 * @var string
28 */
29 public $formId;
30 /**
31 * @var string
32 */
33 public $priceId;
34 /**
35 * @var string
36 */
37 public $price;
38 /**
39 * @var string
40 */
41 public $status;
42 /**
43 * @var float|int|string
44 */
45 public $initialAmount;
46 /**
47 * @var float|int|string
48 */
49 public $recurringAmount;
50 /**
51 * @var string
52 */
53 public $periodInterval;
54 /**
55 * @var float|int
56 */
57 public $frequencyIntervalCount;
58 /**
59 * @var int
60 */
61 public $billTimes;
62 /**
63 * @var int|mixed
64 */
65 public $recurringFeeAmount;
66 /**
67 * @var mixed|string
68 */
69 public $profileId;
70 /**
71 * @var mixed|string
72 */
73 public $transactionId;
74
75 /**
76 * Convert data from request into DTO
77 *
78 * @since 2.18.0
79 *
80 * @return self
81 */
82 public static function fromRequest( array $request ) {
83 $self = new static();
84
85 $self->period = $request['period'];
86 $self->times = $request['times'];
87 $self->frequency = $request['frequency'];
88 $self->formTitle = $request['formTitle'];
89 $self->formId = $request['formId'];
90 $self->priceId = $request['priceId'];
91 $self->price = $request['price'];
92 $self->status = $request['status'];
93 $self->initialAmount = give_sanitize_amount_for_db( $self->price );
94 $self->recurringAmount = give_sanitize_amount_for_db( $self->price );
95 $self->recurringFeeAmount = isset( $request['recurringFeeAmount'] ) ? $request['recurringFeeAmount'] : 0;
96 $self->profileId = isset( $request['profileId'] ) ? $request['profileId'] : '';
97 $self->transactionId = isset( $request['transactionId'] ) ? $request['transactionId'] : '';
98 $self->periodInterval = self::get_interval( $self->period, $self->frequency );
99 $self->frequencyIntervalCount = self::get_interval_count( $self->period, $self->frequency );
100 $self->billTimes = give_recurring_calculate_times( $self->times, $self->frequency );
101
102 return $self;
103 }
104
105 /**
106 * @since 2.18.0
107 *
108 * @return array
109 */
110 public function toArray() {
111 return [
112 'name' => $this->formTitle,
113 'id' => $this->formId,
114 // @TODO Deprecate w/ backwards compatiblity.
115 'form_id' => $this->formId,
116 'price_id' => $this->priceId,
117 'initial_amount' => $this->initialAmount,
118 // add fee here in future.
119 'recurring_amount' => $this->recurringAmount,
120 'period' => $this->periodInterval,
121 'frequency' => $this->frequencyIntervalCount,
122 // Passed interval. Example: charge every 3 weeks.
123 'bill_times' => $this->billTimes,
124 'profile_id' => '',
125 // Profile ID for this subscription - This is set by the payment gateway.
126 'transaction_id' => '',
127 // Transaction ID for this subscription - This is set by the payment gateway.
128 'status' => 'pending'
129 ];
130 }
131
132 /**
133 * Gets interval length and interval unit for Authorize.net based on Give subscription period.
134 *
135 * @since 2.18.0
136 *
137 * @param int $frequency
138 *
139 * @param string $period
140 *
141 * @return string
142 */
143 private static function get_interval( $period, $frequency ) {
144
145 $interval = $period;
146
147 if ( $period === 'quarter' ) {
148 $interval = 'month';
149 }
150
151 return $interval;
152 }
153
154 /**
155 * Gets interval length and interval unit for Authorize.net based on Give subscription period.
156 *
157 * @since 2.18.0
158 *
159 * @param int $frequency
160 *
161 * @param string $period
162 *
163 * @return float|int
164 */
165 private static function get_interval_count( $period, $frequency ) {
166
167 $interval_count = $frequency;
168
169 if ( $period === 'quarter' ) {
170 $interval_count = 3 * $frequency;
171 }
172
173 return $interval_count;
174 }
175 }
176