PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.2
GiveWP – Donation Plugin and Fundraising Platform v2.9.2
4.16.3 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
136 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 );
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 * @param Give_Updates $give_updates
111 *
112 * @since 2.9.2
113 */
114 private function pauseUpdateOnError( $give_updates ) {
115 global $wpdb;
116
117 if ( ! $wpdb->last_error ) {
118 return;
119 }
120
121 give()->logs->add(
122 'Update Error',
123 sprintf(
124 'An error occurred inserting data into the revenue table: ' . "\n" . '%1$s',
125 $wpdb->last_error
126 ),
127 0,
128 'update'
129 );
130
131 $give_updates->__pause_db_update( true );
132 update_option( 'give_upgrade_error', 1, false );
133 wp_die();
134 }
135 }
136