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