PluginProbe
SureDonation – Donation Forms, Fundraising Campaigns & Donor Management / 1.6.1
SureDonation – Donation Forms, Fundraising Campaigns & Donor Management v1.6.1
1.6.1 1.6.0 1.5.1 1.5.0 1.4.0 1.3.0 trunk 0.0.1 1.0.0 1.1.0 1.1.1 1.1.2 1.2.0
← All changes | plugin-loader.php +42 -0 1.1.0 → 1.6.1 View file →
@@ -8,18 +8,25 @@
8 8 namespace SureDonation;
9 9
10 10 use SureDonation\Inc\Admin\Admin;
11 11 use SureDonation\Inc\Admin\Admin_Ajax;
12 +use SureDonation\Inc\Admin\Admin_Bar;
12 13 use SureDonation\Inc\Admin\Analytics;
14 +use SureDonation\Inc\Admin\Notice_Manager;
15 +use SureDonation\Inc\Admin\Notices;
13 16 use SureDonation\Inc\Ajax\Donation_Handler;
17 +use SureDonation\Inc\Emails\Email_Handler;
18 +use SureDonation\Inc\Emails\Email_Reports;
14 19 use SureDonation\Inc\Assets\Register as Assets_Register;
15 20 use SureDonation\Inc\Blocks\Register as Blocks_Register;
16 21 use SureDonation\Inc\Campaigns\Campaign_Cpt;
22 +use SureDonation\Inc\Campaigns\Campaign_Meta_Tags;
17 23 use SureDonation\Inc\Campaigns\Campaign_Page;
18 24 use SureDonation\Inc\Database\Register as Database_Register;
19 25 use SureDonation\Inc\Donor_User_Link;
20 26 use SureDonation\Inc\FormEditor\Assets as FormEditor_Assets;
21 27 use SureDonation\Inc\Onboarding;
28 +use SureDonation\Inc\Privacy\Privacy_Data;
22 29 use SureDonation\Inc\Payments\Offline\Offline_Frontend;
23 30 use SureDonation\Inc\Payments\Offline\Offline_Settings;
24 31 use SureDonation\Inc\Payments\PayPal\PayPal_Frontend;
25 32 use SureDonation\Inc\Payments\PayPal\PayPal_Settings;
@@ -26,8 +33,9 @@
26 33 use SureDonation\Inc\Payments\PayPal\PayPal_Webhook_Listener;
27 34 use SureDonation\Inc\Payments\Stripe\Stripe_Frontend;
28 35 use SureDonation\Inc\Payments\Stripe\Stripe_Settings;
29 36 use SureDonation\Inc\Payments\Stripe\Stripe_Webhook;
37 +use SureDonation\Inc\Page_Builders\Page_Builders;
30 38 use SureDonation\Inc\Pdf\Pdf_Manager;
31 39 use SureDonation\Inc\Post_Types\Donation_Form;
32 40 use SureDonation\Inc\Rest_Api;
33 41 use SureDonation\Inc\Shortcodes\Donation_Form as Donation_Form_Shortcode;
@@ -121,8 +129,12 @@
121 129 public function load_plugin() {
122 130 // Initialize database tables.
123 131 Database_Register::init();
124 132
133 + // Back-fill notification identities once, in admin context only — it
134 + // writes, and the path it repairs runs during donor payment requests.
135 + add_action( 'admin_init', [ Email_Handler::class, 'backfill_notification_keys' ] );
136 +
125 137 // Initialize Campaign CPT.
126 138 Campaign_Cpt::get_instance();
127 139
128 140 // Initialize Campaign Page (default layout seeding + display block helpers).
@@ -127,8 +139,15 @@
127 139
128 140 // Initialize Campaign Page (default layout seeding + display block helpers).
129 141 Campaign_Page::get_instance();
130 142
143 + // Output Open Graph / Twitter Card tags on singular campaign pages.
144 + Campaign_Meta_Tags::get_instance();
145 +
146 + // Page-builder integrations (Bricks now; each self-gates on the builder).
147 + // Page-builder integrations (Elementor now; each self-gates on the builder).
148 + Page_Builders::get_instance();
149 +
131 150 // Initialize Donation Form CPT.
132 151 Donation_Form::get_instance();
133 152
134 153 // Initialize Admin.
@@ -136,10 +155,16 @@
136 155 Admin::get_instance();
137 156 Admin_Ajax::get_instance();
138 157 Pdf_Manager::get_instance();
139 158 Onboarding::get_instance();
159 + Notices::get_instance();
160 + Notice_Manager::get_instance();
140 161 }
141 162
163 + // Payment-mode toolbar indicator. Loaded outside is_admin() so it also
164 + // appears in the front-end admin bar; it self-gates on capability.
165 + Admin_Bar::get_instance();
166 +
142 167 // Initialize Analytics. Loaded outside is_admin() so usage events
143 168 // fired during REST requests (onboarding, campaign publish) are
144 169 // captured; the class gates its own admin-only behavior internally.
145 170 Analytics::get_instance();
@@ -161,8 +186,14 @@
161 186
162 187 // Initialize shortcodes.
163 188 Donation_Form_Shortcode::get_instance();
164 189
190 + // Register WordPress personal-data export/erase integration.
191 + Privacy_Data::get_instance();
192 +
193 + // Weekly donation digest: cron callback + schedule self-heal.
194 + Email_Reports::get_instance();
195 +
165 196 // Initialize Stripe payment gateway.
166 197 Stripe_Settings::get_instance();
167 198 Stripe_Webhook::get_instance();
168 199 Stripe_Frontend::get_instance();
@@ -204,8 +235,13 @@
204 235
205 236 // Set redirect flag for onboarding.
206 237 update_option( '__suredonation_do_redirect', true );
207 238
239 + // Record install time for the review-notice grace period.
240 + // add_option is a no-op if the value already exists, so it
241 + // never clobbers a real install time on re-activation.
242 + add_option( 'suredonation_install_time', time() );
243 +
208 244 // Register the donor role.
209 245 if ( ! get_role( 'suredonation_donor' ) ) {
210 246 add_role(
211 247 'suredonation_donor',
@@ -220,8 +256,14 @@
220 256 register_deactivation_hook(
221 257 SUREDONATION_FILE,
222 258 static function () {
223 259 update_option( '__suredonation_do_redirect', false );
260 +
261 + // Otherwise the webhook reconciliation stays in cron after the
262 + // plugin is gone, firing at a callback that no longer exists.
263 + wp_clear_scheduled_hook( Stripe_Settings::WEBHOOK_SYNC_HOOK );
264 + wp_clear_scheduled_hook( Email_Reports::CRON_HOOK );
265 + wp_clear_scheduled_hook( PayPal_Settings::RELAY_REGISTER_HOOK );
224 266 }
225 267 );
226 268
227 269 // Ensure donor role exists (for upgrades without re-activation).