Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/paid-memberships-pro/paid-memberships-pro.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Plugin Name: Paid Memberships Pro
4
+
* Plugin URI: https://www.paidmembershipspro.com
5
+
* Description: The Trusted Membership Platform That Grows with You
6
+
* Version: 3.6.2
7
+
* Author: Paid Memberships Pro
8
+
* Author URI: https://www.paidmembershipspro.com
9
+
* Text Domain: paid-memberships-pro
10
+
* Domain Path: /languages
11
+
*/
12
+
/**
13
+
* Copyright 2011-2025 Stranger Studios
14
+
* (email : info@paidmembershipspro.com)
15
+
* GPLv2 Full license details in license.txt
16
+
*/
17
+
18
+
// version constant
19
+
define( 'PMPRO_VERSION', '3.6.2' );
20
+
define( 'PMPRO_USER_AGENT', 'Paid Memberships Pro v' . PMPRO_VERSION . '; ' . site_url() );
21
+
define( 'PMPRO_MIN_PHP_VERSION', '5.6' );
22
+
23
+
/*
24
+
Includes
25
+
*/
26
+
define( 'PMPRO_BASE_FILE', __FILE__ );
27
+
define( 'PMPRO_DIR', dirname( __FILE__ ) );
28
+
29
+
30
+
require_once( PMPRO_DIR . '/classes/class-deny-network-activation.php' ); // stop PMPro from being network activated
31
+
require_once( PMPRO_DIR . '/includes/sessions.php' ); // start/close PHP session vars
32
+
33
+
require_once( PMPRO_DIR . '/includes/localization.php' ); // localization functions
34
+
require_once( PMPRO_DIR . '/includes/lib/glotpress-helper.php' ); // handles translation updates logic from our own server.
35
+
require_once( PMPRO_DIR . '/includes/lib/name-parser.php' ); // parses "Jason Coleman" into firstname=>Jason, lastname=>Coleman
36
+
require_once( PMPRO_DIR . '/includes/functions.php' ); // misc functions used by the plugin
37
+
require_once( PMPRO_DIR . '/includes/updates.php' ); // database and other updates
38
+
require_once( PMPRO_DIR . '/includes/upgradecheck.php' ); // database and other updates
39
+
require_once( PMPRO_DIR . '/includes/deprecated.php' ); // deprecated hooks and functions
40
+
require_once( PMPRO_DIR . '/includes/crons.php' ); // load cron functions for PMPro
41
+
42
+
if ( ! defined( 'PMPRO_LICENSE_SERVER' ) ) {
43
+
require_once( PMPRO_DIR . '/includes/license.php' ); // defines location of addons data and licenses
44
+
}
45
+
46
+
require_once( PMPRO_DIR . '/classes/class.memberorder.php' ); // class to process and save orders
47
+
require_once( PMPRO_DIR . '/classes/class.pmproemail.php' ); // setup and filter emails sent by PMPro
48
+
require_once( PMPRO_DIR . '/classes/class-pmpro-field.php' );
49
+
require_once( PMPRO_DIR . '/classes/class-pmpro-field-group.php' );
50
+
require_once( PMPRO_DIR . '/classes/class-pmpro-levels.php' );
51
+
require_once( PMPRO_DIR . '/classes/class-pmpro-subscription.php' );
52
+
require_once( PMPRO_DIR . '/classes/class-pmpro-admin-activity-email.php' ); // setup the admin activity email
53
+
54
+
// Add On Management
55
+
require_once( PMPRO_DIR . '/classes/class-pmpro-addons.php' ); // the PMPro Add On Management class
56
+
57
+
// New in 3.5: We now use Action Scheduler instead of WP Cron.
58
+
if ( ! class_exists( \ActionScheduler::class ) ) {
59
+
require_once PMPRO_DIR . '/includes/lib/action-scheduler/action-scheduler.php'; // Load Action Scheduler if it is not already loaded.
60
+
}
61
+
require_once( PMPRO_DIR . '/classes/class-pmpro-action-scheduler.php' ); // Our Action Scheduler Manager for PMPro
62
+
require_once( PMPRO_DIR . '/classes/class-pmpro-recurring-actions.php' ); // Load our recurring scheduled actions.
63
+
64
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template.php' ); // base class for email templates
65
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-cancel.php' ); // cancel email template
66
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-cancel-admin.php' ); // cancel email template
67
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-admin-change.php' ); // change email template
68
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-admin-change-admin.php' ); // change email template
69
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-refund.php' ); // refund email template
70
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-refund-admin.php' ); // refund email admin template
71
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-payment-action.php' ); // expiration email template
72
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-payment-action-admin.php' ); // expiration email template
73
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-invoice.php' ); // invoice email template
74
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-membership-recurring.php' ); // recurring payment email reminder template
75
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-membership-expiring.php' ); // expiring email template
76
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-membership-expired.php' ); // change email template
77
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-credit-card-expiring.php' ); // credit card expiring email template
78
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-checkout-check.php' );
79
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-checkout-check-admin.php' );
80
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-checkout-free.php' );
81
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-checkout-free-admin.php' );
82
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-checkout-paid.php' );
83
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-checkout-paid-admin.php' );
84
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-billing.php' ); // update billing email template
85
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-billing-admin.php' ); // update billing admin email template
86
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-billing-failure.php' ); // billing failure email template
87
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-billing-failure-admin.php' ); // billing failure email template
88
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-cancel-on-next-payment-date.php' ); //cancel auto renewals email template
89
+
require_once( PMPRO_DIR . '/classes/email-templates/class-pmpro-email-template-cancel-on-next-payment-date-admin.php' ); //cancel auto renewals admin email template
90
+
91
+
require_once( PMPRO_DIR . '/includes/filters.php' ); // filters, hacks, etc, moved into the plugin
92
+
require_once( PMPRO_DIR . '/includes/reports.php' ); // load reports for admin (reports may also include tracking code, etc)
93
+
94
+
require_once( PMPRO_DIR . '/adminpages/reports/logins.php' ); // load the Logins report
95
+
require_once( PMPRO_DIR . '/adminpages/reports/memberships.php' ); // load the Memberships report
96
+
require_once( PMPRO_DIR . '/adminpages/reports/members-per-level.php' ); // load the Members Per Level report
97
+
require_once( PMPRO_DIR . '/adminpages/reports/sales.php' ); // load the Sales report
98
+
99
+
require_once( PMPRO_DIR . '/adminpages/member-edit.php' ); // load the Member Edit admin page.
100
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-abstract-class-member-edit-panel.php' );
101
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-class-member-edit-panel-user-info.php' );
102
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-class-member-edit-panel-memberships.php' );
103
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-class-member-edit-panel-subscriptions.php' );
104
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-class-member-edit-panel-orders.php' );
105
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-class-member-edit-panel-tos.php' );
106
+
require_once( PMPRO_DIR . '/adminpages/member-edit/pmpro-class-member-edit-panel-user-fields.php' );
107
+
108
+
require_once( PMPRO_DIR . '/includes/admin.php' ); // admin notices and functionality
109
+
require_once( PMPRO_DIR . '/includes/adminpages.php' ); // dashboard pages
110
+
require_once( PMPRO_DIR . '/classes/class-pmpro-members-list-table.php' ); // Members List
111
+
require_once( PMPRO_DIR . '/classes/class-pmpro-orders-list-table.php' ); // Orders List
112
+
require_once( PMPRO_DIR . '/classes/class-pmpro-subscriptions-list-table.php' ); // Subscriptions List
113
+
require_once( PMPRO_DIR . '/classes/class-pmpro-discount-code-list-table.php' ); // Discount Code List
114
+
115
+
require_once( PMPRO_DIR . '/includes/services.php' ); // services loaded by AJAX and via webhook, etc
116
+
require_once( PMPRO_DIR . '/includes/metaboxes.php' ); // metaboxes for dashboard
117
+
require_once( PMPRO_DIR . '/includes/profile.php' ); // edit user/profile fields
118
+
require_once( PMPRO_DIR . '/includes/https.php' ); // code related to HTTPS/SSL
119
+
require_once( PMPRO_DIR . '/includes/menus.php' ); // custom menu functions for PMPro
120
+
require_once( PMPRO_DIR . '/includes/notifications.php' ); // check for notifications at PMPro, shown in PMPro settings
121
+
require_once( PMPRO_DIR . '/includes/init.php' ); // code run during init, set_current_user, and wp hooks
122
+
require_once( PMPRO_DIR . '/includes/scripts.php' ); // enqueue frontend and admin JS and CSS
123
+
require_once( PMPRO_DIR . '/includes/terms.php' ); // allow restricting terms by membership level
124
+
require_once( PMPRO_DIR . '/includes/page-templates.php' ); // page templates
125
+
126
+
require_once( PMPRO_DIR . '/includes/content.php' ); // code to check for membership and protect content
127
+
require_once( PMPRO_DIR . '/includes/compatibility.php' ); // code to support compatibility for popular page builders
128
+
require_once( PMPRO_DIR . '/includes/email.php' ); // code related to email
129
+
require_once( PMPRO_DIR . '/includes/fields.php' ); // user fields
130
+
require_once( PMPRO_DIR . '/includes/recaptcha.php' ); // load recaptcha files if needed
131
+
require_once( PMPRO_DIR . '/includes/cloudflare-turnstile.php' ); // load CloudFlare Turnstile files if needed
132
+
require_once( PMPRO_DIR . '/includes/terms-of-service.php' ); // code to add a terms of service checkbox to checkout
133
+
require_once( PMPRO_DIR . '/includes/cleanup.php' ); // clean things up when deletes happen, etc.
134
+
require_once( PMPRO_DIR . '/includes/login.php' ); // code to redirect away from login/register page
135
+
require_once( PMPRO_DIR . '/includes/capabilities.php' ); // manage PMPro capabilities for roles
136
+
require_once( PMPRO_DIR . '/includes/privacy.php' ); // code to aid with user data privacy, e.g. GDPR compliance
137
+
require_once( PMPRO_DIR . '/includes/pointers.php' ); // popover help pointers
138
+
require_once( PMPRO_DIR . '/includes/site-types.php' ); // site types and hubs for PMPro
139
+
require_once( PMPRO_DIR . '/includes/spam.php' ); // code to combat spam of various kinds
140
+
require_once( PMPRO_DIR . '/includes/abandoned-signups.php' ); // track users who were created at checkout but did not complete checkout.
141
+
require_once( PMPRO_DIR . '/includes/checkout.php' ); // Common functions used at checkout.
142
+
require_once( PMPRO_DIR . '/includes/level-groups.php' ); // Common functions for level groups.
143
+
require_once( PMPRO_DIR . '/includes/restricted-files.php' ); // Restrict access to files.
144
+
145
+
require_once( PMPRO_DIR . '/includes/xmlrpc.php' ); // xmlrpc methods
146
+
require_once( PMPRO_DIR . '/includes/rest-api.php' ); // rest API endpoints
147
+
require_once( PMPRO_DIR . '/includes/widgets.php' ); // widgets for PMPro
148
+
require_once( PMPRO_DIR . '/includes/gateway-request-handlers.php' ); // gateway request handlers
149
+
150
+
require_once( PMPRO_DIR . '/classes/class-pmpro-site-health.php' ); // Site Health information.
151
+
152
+
require_once( PMPRO_DIR . '/shortcodes/checkout_button.php' ); // [pmpro_checkout_button] shortcode to show link to checkout for a level
153
+
require_once( PMPRO_DIR . '/shortcodes/membership.php' ); // [membership] shortcode to hide/show member content
154
+
require_once( PMPRO_DIR . '/shortcodes/pmpro_account.php' ); // [pmpro_account] shortcode to show account information
155
+
require_once( PMPRO_DIR . '/shortcodes/pmpro_login.php' ); // [pmpro_login] shortcode to show a login form or logged in member info and menu.
156
+
require_once( PMPRO_DIR . '/shortcodes/pmpro_member.php' ); // [pmpro_member] shortcode to show user fields
157
+
require_once( PMPRO_DIR . '/shortcodes/pmpro_member_profile_edit.php' ); // [pmpro_member_profile_edit] shortcode to allow members to edit their profile
158
+
require_once( PMPRO_DIR . '/includes/blocks.php' ); // Set up blocks.
159
+
160
+
// load gateway
161
+
require_once( PMPRO_DIR . '/classes/gateways/class.pmprogateway.php' ); // loaded by memberorder class when needed
162
+
163
+
require_once( PMPRO_DIR . '/classes/class-pmpro-discount-codes.php' ); // loaded by memberorder class when needed
164
+
165
+
require_once( PMPRO_DIR . '/classes/gateways/class.pmprogateway_check.php' );
166
+
require_once( PMPRO_DIR . '/classes/gateways/class.pmprogateway_paypalexpress.php' );
167
+
168
+
pmpro_check_for_deprecated_gateways();
169
+
170
+
if ( version_compare( PHP_VERSION, '5.3.29', '>=' ) ) {
171
+
require_once( PMPRO_DIR . '/classes/gateways/class.pmprogateway_stripe.php' );
172
+
require_once( PMPRO_DIR . '/includes/lib/stripe-apple-pay/stripe-apple-pay.php' ); // rewrite rules to set up Apple Pay.
173
+
}
174
+
175
+
// Set up Wisdom tracking.
176
+
require_once PMPRO_DIR . '/classes/class-pmpro-wisdom-integration.php';
177
+
$wisdom_integration = PMPro_Wisdom_Integration::instance();
178
+
$wisdom_integration->setup_wisdom();
179
+
180
+
// Setup our PMPro Action Scheduler.
181
+
add_action( 'plugins_loaded', function() {
182
+
183
+
// Load our Action Scheduler class.
184
+
PMPro_Action_Scheduler::instance();
185
+
186
+
// Add our recurring actions.
187
+
PMPro_Recurring_Actions::instance();
188
+
189
+
} );
190
+
191
+
// Add On Management (Deprecated in 3.6, to be removed in 4.0.0)
192
+
require_once( PMPRO_DIR . '/includes/addons.php' );
193
+
194
+
// Add On Management: Ensure AJAX endpoints are available during admin-ajax requests even if no instance has been created.
195
+
add_action( 'init', function () {
196
+
$addons_instance = PMPro_AddOns::instance(); // Set up filters.
197
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
198
+
// If any of our handlers are already present, skip.
199
+
if ( has_action( 'pmpro_addon_install' ) ) {
200
+
return;
201
+
}
202
+
$addons_instance->register_ajax_endpoints();
203
+
}
204
+
} );
205
+
206
+
207
+
/*
208
+
Setup the DB and check for upgrades
209
+
*/
210
+
global $wpdb;
211
+
212
+
// check if the DB needs to be upgraded
213
+
if ( is_admin() || defined('WP_CLI') ) {
214
+
pmpro_checkForUpgrades();
215
+
}
216
+
217
+
/*
218
+
Definitions
219
+
*/
220
+
if ( ! defined( 'SITENAME' ) ) {
221
+
define( 'SITENAME', str_replace( ''', "'", get_bloginfo( 'name' ) ) );
222
+
}
223
+
if ( ! defined( 'SITEURL' ) ) {
224
+
$urlparts = explode( '//', home_url() );
225
+
define( 'SITEURL', $urlparts[1] );
226
+
}
227
+
228
+
if ( ! defined( 'SECUREURL' ) ) {
229
+
define( 'SECUREURL', str_replace( 'http://', 'https://', get_bloginfo( 'wpurl' ) ) );
230
+
}
231
+
define( 'PMPRO_URL', plugins_url( '', PMPRO_BASE_FILE ) );
232
+
define( 'PMPRO_DOMAIN', pmpro_getDomainFromURL( site_url() ) );
233
+
define( 'PAYPAL_BN_CODE', 'PaidMembershipsPro_SP' );
234
+
235
+
/*
236
+
Globals
237
+
*/
238
+
global $gateway_environment;
239
+
$gateway_environment = get_option( 'pmpro_gateway_environment' );
240
+
241
+
242
+
// Returns a list of all available gateway
243
+
function pmpro_gateways() {
244
+
$pmpro_gateways = array(
245
+
'' => esc_html__( 'Testing Only', 'paid-memberships-pro' ),
246
+
'check' => esc_html__( 'Pay by Check', 'paid-memberships-pro' ),
247
+
'stripe' => esc_html__( 'Stripe', 'paid-memberships-pro' ),
248
+
'paypalexpress' => esc_html__( 'PayPal Express', 'paid-memberships-pro' ),
249
+
);
250
+
251
+
if ( pmpro_onlyFreeLevels() ) {
252
+
$pmpro_gateways[''] = esc_html__( 'Default', 'paid-memberships-pro' );
253
+
}
254
+
255
+
$check_gateway_label = get_option( 'pmpro_check_gateway_label' );
256
+
if ( ! empty( $check_gateway_label ) ) {
257
+
$pmpro_gateways['check'] = esc_html( $check_gateway_label . ' (' . esc_html__( 'Pay by Check', 'paid-memberships-pro' ) . ')' );
258
+
}
259
+
260
+
return apply_filters( 'pmpro_gateways', $pmpro_gateways );
261
+
}
262
+
263
+
/**
264
+
* Returns the gateway nicename.
265
+
* Used for outputting the gateway's label value for customers.
266
+
*
267
+
* @since 3.6.1
268
+
*
269
+
* @param string $gateway The gateway's internal slug (i.e. paypalexpress).
270
+
* @return string The gateway's nicename (i.e. PayPal Express).
271
+
*/
272
+
function pmpro_get_gateway_nicename( $gateway ) {
273
+
$gateways = pmpro_gateways();
274
+
if ( array_key_exists( $gateway, $gateways ) ) {
275
+
$gateway_nicename = $gateways[ $gateway ];
276
+
} else {
277
+
$gateway_nicename = ucwords( $gateway );
278
+
}
279
+
280
+
return $gateway_nicename;
281
+
}
282
+
283
+
284
+
// when checking levels for users, we save the info here for caching. each key is a user id for level object for that user.
285
+
global $all_membership_levels;
286
+
287
+
// we sometimes refer to this array of levels
288
+
// DEPRECATED: Remove this in v3.0.
289
+
global $membership_levels;
290
+
$membership_levels = pmpro_sort_levels_by_order( pmpro_getAllLevels( true, true ) );
291
+
292
+
/*
293
+
Activation/Deactivation
294
+
*/
295
+
296
+
// activation
297
+
function pmpro_activation() {
298
+
pmpro_set_capabilities_for_role( 'administrator', 'enable' );
299
+
do_action( 'pmpro_activation' );
300
+
}
301
+
register_activation_hook( __FILE__, 'pmpro_activation' );
302
+
303
+
// deactivation
304
+
function pmpro_deactivation() {
305
+
// remove caps from admin role
306
+
pmpro_set_capabilities_for_role( 'administrator', 'disable' );
307
+
308
+
do_action( 'pmpro_deactivation' );
309
+
}
310
+
register_deactivation_hook( __FILE__, 'pmpro_deactivation' );
311
+