PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.4
GiveWP – Donation Plugin and Fundraising Platform v2.9.4
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 / Revenue / Migrations / AddPastDonationsToRevenueTable.php
give / src / Revenue / Migrations Last commit date
AddPastDonationsToRevenueTable.php 5 years ago CreateRevenueTable.php 5 years ago
AddPastDonationsToRevenueTable.php
140 lines
1 <?php
2 namespace Give\Revenue\Migrations;
3
4 use Give\Framework\Migrations\Contracts\Migration;
5 use Give\Framework\Migrations\Exceptions\DatabaseMigrationException;
6 use Give\Revenue\Repositories\Revenue;
7 use Give\ValueObjects\Money;
8 use Give_Updates;
9 use InvalidArgumentException;
10 use WP_Query;
11 use Exception;
12
13 /**
14 * Class AddPastDonationToRevenueTable
15 *
16 * Use this table to migrated past donations data to revenue table.
17 * This data migration will perform in background.
18 *
19 * @package Give\Revenue\Migrations
20 *
21 * @since 2.9.0
22 */
23 class AddPastDonationsToRevenueTable extends Migration {
24 /**
25 * Register background update.
26 *
27 * @param Give_Updates $give_updates
28 *
29 * @since 2.9.0
30 */
31 public function register( $give_updates ) {
32 $give_updates->register(
33 [
34 'id' => self::id(),
35 'version' => '2.9.0',
36 'callback' => [ $this, 'run' ],
37 ]
38 );
39 }
40
41 /**
42 * @inheritdoc
43 */
44 public function run() {
45 global $post;
46
47 /* @var Revenue $revenueRepository */
48 $revenueRepository = give( Revenue::class );
49 $give_updates = Give_Updates::get_instance();
50
51 $donations = new WP_Query(
52 [
53 'paged' => $give_updates->step,
54 'status' => 'any',
55 'order' => 'ASC',
56 'post_type' => [ 'give_payment' ],
57 'posts_per_page' => 100,
58 ]
59 );
60
61 if ( $donations->have_posts() ) {
62 $give_updates->set_percentage( $donations->found_posts, $give_updates->step * 100 );
63
64 while ( $donations->have_posts() ) {
65 $donations->the_post();
66
67 if ( $revenueRepository->isDonationExist( $post->ID ) ) {
68 continue;
69 }
70
71 if ( ! ( $amount = give()->payment_meta->get_meta( $post->ID, '_give_cs_base_amount', true ) ) ) {
72 $amount = give_donation_amount( $post->ID );
73 }
74
75 $revenueData = [
76 'donation_id' => $post->ID,
77 'form_id' => give_get_payment_form_id( $post->ID ),
78 'amount' => Money::of( $amount, give_get_option( 'currency' ) )->getMinorAmount(),
79 ];
80
81 $revenueRepository->insert( $revenueData );
82 $this->pauseUpdateOnError( $give_updates, $revenueData );
83 }
84
85 wp_reset_postdata();
86 return;
87 }
88
89 // Update Ran Successfully.
90 give_set_upgrade_complete( self::id() );
91 }
92
93 /**
94 * @inheritdoc
95 */
96 public static function id() {
97 return 'add-past-donation-data-to-revenue-table';
98 }
99
100 /**
101 * @inheritdoc
102 */
103 public static function timestamp() {
104 return strtotime( '2019-09-24' );
105 }
106
107 /**
108 * Pause update process and add log.
109 *
110 * @since 2.9.2
111 * @since 2.9.4 Add second argument to function and mention donation data in exception message.
112 *
113 * @param Give_Updates $give_updates
114 *
115 * @param array $revenueData Donation data to insert into revenue table
116 */
117 private function pauseUpdateOnError( $give_updates, $revenueData ) {
118 global $wpdb;
119
120 if ( ! $wpdb->last_error ) {
121 return;
122 }
123
124 give()->logs->add(
125 'Update Error',
126 sprintf(
127 'An error occurred inserting data into the revenue table: ' . "\n" . '%1$s' . "\n" . '%2$s',
128 $wpdb->last_error,
129 print_r( $revenueData, true )
130 ),
131 0,
132 'update'
133 );
134
135 $give_updates->__pause_db_update( true );
136 update_option( 'give_upgrade_error', 1, false );
137 wp_die();
138 }
139 }
140