PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.5.0
GiveWP – Donation Plugin and Fundraising Platform v4.5.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 / TestData / Commands / DonationSeedCommand.php
give / src / TestData / Commands Last commit date
DonationSeedCommand.php 4 years ago DonationStatusCommand.php 4 years ago DonorSeedCommand.php 4 years ago FormSeedCommand.php 4 years ago LogsSeedCommand.php 4 years ago PageSeedCommand.php 4 years ago
DonationSeedCommand.php
145 lines
1 <?php
2
3 namespace Give\TestData\Commands;
4
5 use Exception;
6 use Give\TestData\Factories\DonationFactory as DonationFactory;
7 use Give\TestData\Repositories\DonationRepository as DonationRepository;
8 use WP_CLI;
9
10 /**
11 * Class DonationSeedCommand
12 * @package Give\TestData\Commands
13 *
14 * A WP-CLI command for seeding donations.
15 */
16 class DonationSeedCommand
17 {
18 /**
19 * @var DonationFactory
20 */
21 private $donationFactory;
22 /**
23 * @var DonationRepository
24 */
25 private $donationRepository;
26
27 /**
28 * @param DonationFactory $donationFactory
29 * @param DonationRepository $donationRepository
30 */
31 public function __construct(
32 DonationFactory $donationFactory,
33 DonationRepository $donationRepository
34 ) {
35 $this->donationFactory = $donationFactory;
36 $this->donationRepository = $donationRepository;
37 }
38
39 /**
40 * Generates Donations
41 *
42 * ## OPTIONS
43 *
44 * [--count=<count>]
45 * : Number of donations to generate
46 * default: 10
47 *
48 * [--status=<status>]
49 * : Donation status
50 * default: publish
51 * options:
52 * - publish
53 * - random
54 * get all available statuses with command:
55 * wp give test-donation-statuses
56 *
57 * [--total-revenue=<amount>]
58 * : Total revenue amount to be generated
59 * default: 0
60 *
61 * [--preview=<preview>]
62 * : Preview generated data
63 * default: false
64 *
65 * [--start-date=<date>]
66 * : Set donation start date. Date format is YYYY-MM-DD
67 * default: false
68 *
69 * [--params=<params>]
70 * : Additional params
71 * default: ''
72 *
73 * [--consistent=<consistent>]
74 * : Generate consistent data
75 * default: false
76 *
77 * ## EXAMPLES
78 *
79 * wp give test-donations --count=50 --status=random --total-revenue=10000 --start-date=2020-11-22 --params=donation_currency=EUR
80 *
81 * @when after_wp_load
82 */
83 public function __invoke($args, $assocArgs)
84 {
85 global $wpdb;
86 // Get CLI args
87 $count = WP_CLI\Utils\get_flag_value($assocArgs, 'count', $default = 10);
88 $preview = WP_CLI\Utils\get_flag_value($assocArgs, 'preview', $default = false);
89 $status = WP_CLI\Utils\get_flag_value($assocArgs, 'status', $default = 'publish');
90 $totalRevenue = WP_CLI\Utils\get_flag_value($assocArgs, 'total-revenue', $default = 0);
91 $startDate = WP_CLI\Utils\get_flag_value($assocArgs, 'start-date', $default = false);
92 $additional = WP_CLI\Utils\get_flag_value($assocArgs, 'params', $default = '');
93 $consistent = WP_CLI\Utils\get_flag_value($assocArgs, 'consistent', $default = false);
94
95 // Additional params
96 parse_str($additional, $params);
97
98 try {
99 // Factory config
100 $this->donationFactory->setDonationStatus($status);
101
102 if ($totalRevenue) {
103 $this->donationFactory->setDonationAmount(($totalRevenue / $count));
104 }
105
106 if ($startDate) {
107 $this->donationFactory->setDonationStartDate($startDate);
108 }
109
110 // Generate donations
111 $donations = $this->donationFactory->consistent($consistent)->make($count);
112 } catch (Exception $e) {
113 return WP_CLI::error($e->getMessage());
114 }
115
116 if ($preview) {
117 WP_CLI\Utils\format_items(
118 'table',
119 $donations,
120 array_keys($this->donationFactory->definition())
121 );
122 } else {
123 $progress = WP_CLI\Utils\make_progress_bar('Generating donations', $count);
124
125 // Start DB transaction
126 $wpdb->query('START TRANSACTION');
127
128 try {
129 foreach ($donations as $donation) {
130 $this->donationRepository->insertDonation($donation, $params);
131 $progress->tick();
132 }
133
134 $wpdb->query('COMMIT');
135
136 $progress->finish();
137 } catch (Exception $e) {
138 $wpdb->query('ROLLBACK');
139
140 WP_CLI::error($e->getMessage());
141 }
142 }
143 }
144 }
145