forked from strangerstudios/paid-memberships-pro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
paid-memberships-pro.php
189 lines (159 loc) · 7.77 KB
/
paid-memberships-pro.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<?php
/*
Plugin Name: Paid Memberships Pro
Plugin URI: http://www.paidmembershipspro.com
Description: Plugin to Handle Memberships
Version: 1.8.9
Author: Stranger Studios
Author URI: http://www.strangerstudios.com
*/
/*
Copyright 2011 Stranger Studios (email : [email protected])
GPLv2 Full license details in license.txt
*/
//version constant
define("PMPRO_VERSION", "1.8.9");
define("PMPRO_USER_AGENT", "Paid Memberships Pro v" . PMPRO_VERSION . "; " . site_url());
//if the session has been started yet, start it (ignore if running from command line)
if(defined('STDIN') )
{
//command line
}
else
{
if (version_compare(phpversion(), '5.4.0', '>=')) {
if (session_status() == PHP_SESSION_NONE)
session_start();
}
else {
if(!session_id())
session_start();
}
}
/*
Includes
*/
define("PMPRO_DIR", dirname(__FILE__));
require_once(PMPRO_DIR . "/includes/localization.php"); //localization functions
require_once(PMPRO_DIR . "/includes/lib/name-parser.php"); //parses "Jason Coleman" into firstname=>Jason, lastname=>Coleman
require_once(PMPRO_DIR . "/includes/functions.php"); //misc functions used by the plugin
require_once(PMPRO_DIR . "/includes/updates.php"); //database and other updates
require_once(PMPRO_DIR . "/includes/upgradecheck.php"); //database and other updates
if(!defined('PMPRO_LICENSE_SERVER'))
require_once(PMPRO_DIR . "/includes/license.php"); //defines location of addons data and licenses
require_once(PMPRO_DIR . "/scheduled/crons.php"); //crons for expiring members, sending expiration emails, etc
require_once(PMPRO_DIR . "/classes/class.memberorder.php"); //class to process and save orders
require_once(PMPRO_DIR . "/classes/class.pmproemail.php"); //setup and filter emails sent by PMPro
require_once(PMPRO_DIR . "/includes/filters.php"); //filters, hacks, etc, moved into the plugin
require_once(PMPRO_DIR . "/includes/reports.php"); //load reports for admin (reports may also include tracking code, etc)
require_once(PMPRO_DIR . "/includes/adminpages.php"); //dashboard pages
require_once(PMPRO_DIR . "/includes/services.php"); //services loaded by AJAX and via webhook, etc
require_once(PMPRO_DIR . "/includes/metaboxes.php"); //metaboxes for dashboard
require_once(PMPRO_DIR . "/includes/profile.php"); //edit user/profile fields
require_once(PMPRO_DIR . "/includes/https.php"); //code related to HTTPS/SSL
require_once(PMPRO_DIR . "/includes/notifications.php"); //check for notifications at PMPro, shown in PMPro settings
require_once(PMPRO_DIR . "/includes/init.php"); //code run during init, set_current_user, and wp hooks
require_once(PMPRO_DIR . "/includes/content.php"); //code to check for memebrship and protect content
require_once(PMPRO_DIR . "/includes/email.php"); //code related to email
require_once(PMPRO_DIR . "/includes/recaptcha.php"); //load recaptcha files if needed
require_once(PMPRO_DIR . "/includes/cleanup.php"); //clean things up when deletes happen, etc.
require_once(PMPRO_DIR . "/includes/login.php"); //code to redirect away from login/register page
require_once(PMPRO_DIR . "/includes/capabilities.php"); //manage PMPro capabilities for roles
require_once(PMPRO_DIR . "/includes/xmlrpc.php"); //xmlrpc methods
require_once(PMPRO_DIR . "/shortcodes/checkout_button.php"); //[checkout_button] shortcode to show link to checkout for a level
require_once(PMPRO_DIR . "/shortcodes/membership.php"); //[membership] shortcode to hide/show member content
require_once(PMPRO_DIR . "/shortcodes/pmpro_account.php"); //[pmpro_account] shortcode to show account information
//load gateway
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway.php"); //loaded by memberorder class when needed
//load payment gateway class
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_authorizenet.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_braintree.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_check.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_cybersource.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_payflowpro.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_paypal.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_paypalexpress.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_paypalstandard.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_stripe.php");
require_once(PMPRO_DIR . "/classes/gateways/class.pmprogateway_twocheckout.php");
/*
Setup the DB and check for upgrades
*/
global $wpdb;
//check if the DB needs to be upgraded
if(is_admin())
pmpro_checkForUpgrades();
//load plugin updater
if(is_admin())
require_once(PMPRO_DIR . "/includes/addons.php");
/*
Definitions
*/
define("SITENAME", str_replace("'", "'", get_bloginfo("name")));
$urlparts = explode("//", home_url());
define("SITEURL", $urlparts[1]);
define("SECUREURL", str_replace("http://", "https://", get_bloginfo("wpurl")));
define("PMPRO_URL", WP_PLUGIN_URL . "/paid-memberships-pro");
define("PMPRO_DOMAIN", pmpro_getDomainFromURL(site_url()));
define("PAYPAL_BN_CODE", "PaidMembershipsPro_SP");
/*
Globals
*/
global $gateway_environment;
$gateway_environment = pmpro_getOption("gateway_environment");
// Returns a list of all available gateway
function pmpro_gateways(){
$pmpro_gateways = array(
'' => __('Testing Only', 'pmpro'),
'check' => __('Pay by Check', 'pmpro'),
'stripe' => __('Stripe', 'pmpro'),
'paypalexpress' => __('PayPal Express', 'pmpro'),
'paypal' => __('PayPal Website Payments Pro', 'pmpro'),
'payflowpro' => __('PayPal Payflow Pro/PayPal Pro', 'pmpro'),
'paypalstandard' => __('PayPal Standard', 'pmpro'),
'authorizenet' => __('Authorize.net', 'pmpro'),
'braintree' => __('Braintree Payments', 'pmpro'),
'twocheckout' => __('2Checkout', 'pmpro'),
'cybersource' => __('Cybersource', 'pmpro')
);
return apply_filters( 'pmpro_gateways', $pmpro_gateways );
}
//when checking levels for users, we save the info here for caching. each key is a user id for level object for that user.
global $all_membership_levels;
//we sometimes refer to this array of levels
global $membership_levels;
$membership_levels = $wpdb->get_results( "SELECT * FROM {$wpdb->pmpro_membership_levels}", OBJECT );
/*
Activation/Deactivation
*/
//we need monthly crons
function pmpro_cron_schedules_monthly($schedules) {
$schedules['monthly'] = array(
'interval' => 2635200,
'display' => __('Once a month')
);
return $schedules;
}
add_filter( 'cron_schedules', 'pmpro_cron_schedules_monthly');
//activation
function pmpro_activation() {
//schedule crons
pmpro_maybe_schedule_event(current_time('timestamp'), 'daily', 'pmpro_cron_expire_memberships');
pmpro_maybe_schedule_event(current_time('timestamp')+1, 'daily', 'pmpro_cron_expiration_warnings');
pmpro_maybe_schedule_event(current_time('timestamp'), 'monthly', 'pmpro_cron_credit_card_expiring_warnings');
pmpro_set_capabilities_for_role( 'administrator', 'enable' );
do_action('pmpro_activation');
}
//deactivation
function pmpro_deactivation() {
//remove crons
wp_clear_scheduled_hook('pmpro_cron_expiration_warnings');
wp_clear_scheduled_hook('pmpro_cron_trial_ending_warnings');
wp_clear_scheduled_hook('pmpro_cron_expire_memberships');
wp_clear_scheduled_hook('pmpro_cron_credit_card_expiring_warnings');
//remove caps from admin role
pmpro_set_capabilities_for_role('administrator', 'disable');
do_action('pmpro_deactivation');
}
register_activation_hook(__FILE__, 'pmpro_activation');
register_deactivation_hook(__FILE__, 'pmpro_deactivation');