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