PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.2
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 / TestData / Factories / DonationFactory.php
give / src / TestData / Factories Last commit date
DonationFactory.php 4 years ago DonationFormFactory.php 4 years ago DonorFactory.php 4 years ago LogFactory.php 4 years ago PageFactory.php 4 years ago RevenueFactory.php 4 years ago
DonationFactory.php
183 lines
1 <?php
2
3 namespace Give\TestData\Factories;
4
5 use DateTime;
6 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
7 use Give\TestData\Framework\Factory;
8
9 /**
10 * Class DonationFactory
11 * @package Give\TestData\Factories
12 */
13 class DonationFactory extends Factory
14 {
15 /**
16 * @var string
17 */
18 private $status;
19 /**
20 * @var int
21 */
22 private $amount;
23
24 /**
25 * @var string
26 */
27 private $currency;
28
29 /**
30 * @var string
31 */
32 private $startDate;
33
34 /**
35 * @param string $status
36 *
37 * @throws InvalidArgumentException
38 */
39 public function setDonationStatus($status)
40 {
41 if ( ! $this->checkDonationStatus($status)) {
42 throw new InvalidArgumentException("Invalid donation status {$status}");
43 }
44 $this->status = $status;
45 }
46
47 /**
48 * Check is valid donation status
49 *
50 * @param string $status
51 *
52 * @return bool
53 */
54 public function checkDonationStatus($status)
55 {
56 if ('random' === $status) {
57 return true;
58 }
59
60 return in_array($status, array_keys(give_get_payment_statuses()));
61 }
62
63 /**
64 * @return string
65 */
66 public function getDonationStatus()
67 {
68 if (is_null($this->status)) {
69 return 'publish';
70 }
71
72 if ('random' === $this->status) {
73 return $this->randomDonationStatus();
74 }
75
76 return $this->status;
77 }
78
79 /**
80 * @param int $amount
81 */
82 public function setDonationAmount($amount)
83 {
84 $this->amount = absint($amount);
85 }
86
87 /**
88 * @return int
89 */
90 public function getDonationAmount()
91 {
92 if (is_null($this->amount) || ! $this->amount) {
93 return $this->randomAmount();
94 }
95
96 return $this->amount;
97 }
98
99 /**
100 * @param string $currency
101 */
102 public function setDonationCurrency($currency)
103 {
104 $this->currency = $currency;
105 }
106
107 /**
108 * @return int
109 */
110 public function getDonationCurrency()
111 {
112 if (is_null($this->currency) || ! $this->currency) {
113 return give_get_option('currency');
114 }
115
116 return $this->currency;
117 }
118
119 /**
120 * @param string $date
121 *
122 * @throws InvalidArgumentException
123 */
124 public function setDonationStartDate($date)
125 {
126 if ( ! $this->isValidDate($date)) {
127 throw new InvalidArgumentException("Invalid date {$date}");
128 }
129 $this->startDate = $date;
130 }
131
132 /**
133 * @return string
134 */
135 public function getDonationDate()
136 {
137 if ( ! $this->isValidDate($this->startDate)) {
138 return $this->faker->dateTimeThisYear()->format('Y-m-d H:i:s');
139 }
140
141 return $this->faker->dateTimeBetween($this->startDate, $endDate = 'now')->format('Y-m-d H:i:s');
142 }
143
144 /**
145 * @param string $date
146 *
147 * @return bool
148 */
149 public function isValidDate($date)
150 {
151 $dateTime = DateTime::createFromFormat('Y-m-d', $date);
152 // check dates, if one of them is different than the other, the date is not valid
153 // example: 2020-02-35 will be converted to 2020-03-06
154 return $dateTime && $dateTime->format('Y-m-d') === $date;
155 }
156
157 /**
158 * Donation definition
159 *
160 * @return array
161 */
162 public function definition()
163 {
164 $donationForm = $this->randomDonationForm();
165 $donor = $this->RandomDonor();
166
167 return [
168 'donor_id' => $donor['id'],
169 'donor_name' => $donor['name'],
170 'donor_email' => $donor['email'],
171 'payment_form_id' => $donationForm['id'],
172 'payment_form_title' => $donationForm['post_title'],
173 'payment_total' => $this->getDonationAmount(),
174 'payment_currency' => $this->getDonationCurrency(),
175 'payment_gateway' => $this->randomGateway(),
176 'payment_mode' => $this->randomPaymentMode(),
177 'payment_status' => $this->getDonationStatus(),
178 'payment_purchase_key' => $this->faker->md5(),
179 'completed_date' => $this->getDonationDate(),
180 ];
181 }
182 }
183