Version Description
- Fixed Braintree integration for production environments. Braintree needed to be told "production" instead of "live".
- Removed !!field!! lines from a couple of admin emails.
- Added login_link as data for the cancel_admin email template.
Download this release
Release Info
Developer | strangerstudios |
Plugin | Paid Memberships Pro |
Version | 1.6.0.1 |
Comparing to | |
See all releases |
Code changes from version 1.7.14 to 1.6.0.1
- adminpages/addons.php +0 -142
- adminpages/addons/hide-admin-bar-from-non-admins.php +0 -32
- adminpages/addons/images/pmpro-aweber.gif +0 -0
- adminpages/addons/images/pmpro-bbpress.jpg +0 -0
- adminpages/addons/images/pmpro-constant-contact.gif +0 -0
- adminpages/addons/images/pmpro-email-templates.gif +0 -0
- adminpages/addons/images/pmpro-infusionsoft.jpg +0 -0
- adminpages/addons/images/pmpro-mailchimp.jpg +0 -0
- adminpages/addons/images/pmpro-network.gif +0 -0
- adminpages/addons/images/pmpro-post-affiliate-pro.jpg +0 -0
- adminpages/addons/images/pmpro-register-helper.gif +0 -0
- adminpages/addons/images/pmpro-series.gif +0 -0
- adminpages/addons/images/pmpro-woocommerce.gif +0 -0
- adminpages/addons/images/pmpro-wp-affiliate-platform.jpg +0 -0
- adminpages/addons/images/wp-bouncer.gif +0 -0
- adminpages/addons/pmpro-addon-packages.php +0 -30
- adminpages/addons/pmpro-affiliates.php +0 -30
- adminpages/addons/pmpro-aweber.php +0 -31
- adminpages/addons/pmpro-bbpress.php +0 -31
- adminpages/addons/pmpro-constant-contact.php +0 -31
- adminpages/addons/pmpro-disable-emails.php +0 -28
- adminpages/addons/pmpro-email-templates.php +0 -31
- adminpages/addons/pmpro-expiration.php +0 -30
- adminpages/addons/pmpro-freeaddress.php +0 -30
- adminpages/addons/pmpro-infusionsoft.php +0 -31
- adminpages/addons/pmpro-international-addresses.php +0 -31
- adminpages/addons/pmpro-level-cost-text.php +0 -30
- adminpages/addons/pmpro-mailchimp.php +0 -31
- adminpages/addons/pmpro-network-subsite.php +0 -31
- adminpages/addons/pmpro-network.php +0 -31
- adminpages/addons/pmpro-post-affiliate-pro.php +0 -31
- adminpages/addons/pmpro-register-helper.php +0 -31
- adminpages/addons/pmpro-require-code-to-register.php +0 -28
- adminpages/addons/pmpro-series.php +0 -31
- adminpages/addons/pmpro-shipping.php +0 -31
- adminpages/addons/pmpro-user-pages.php +0 -30
- adminpages/addons/pmpro-woocommerce.php +0 -31
- adminpages/addons/pmpro-wp-affiliate.php +0 -31
- adminpages/addons/tml.php +0 -32
- adminpages/addons/wp-bouncer.php +0 -31
- adminpages/admin_footer.php +0 -1
- adminpages/admin_header.php +22 -71
- adminpages/advancedsettings.php +39 -123
- adminpages/dashboard.php +2 -2
- adminpages/discountcodes.php +648 -636
- adminpages/emailsettings.php +152 -181
- adminpages/functions.php +0 -222
- adminpages/membershiplevels.php +574 -588
- adminpages/memberslist-csv.php +37 -114
- adminpages/memberslist.php +205 -238
- adminpages/orders-csv.php +24 -136
- adminpages/orders.php +89 -389
- adminpages/pagesettings.php +28 -70
- adminpages/paymentsettings.php +484 -538
- adminpages/reports.php +0 -62
- adminpages/reports/login.php +0 -412
- adminpages/reports/memberships.php +0 -651
- adminpages/reports/sales.php +0 -397
- classes/class.memberorder.php +46 -112
- classes/class.pmproemail.php +57 -183
- classes/gateways/class.pmprogateway.php +7 -26
- classes/gateways/class.pmprogateway_authorizenet.php +13 -14
- classes/gateways/class.pmprogateway_braintree.php +23 -21
- classes/gateways/class.pmprogateway_check.php +10 -12
- classes/gateways/class.pmprogateway_cybersource.php +0 -765
- classes/gateways/class.pmprogateway_payflowpro.php +29 -183
- classes/gateways/class.pmprogateway_paypal.php +17 -20
- classes/gateways/class.pmprogateway_paypalexpress.php +25 -72
- classes/gateways/class.pmprogateway_paypalstandard.php +17 -35
- classes/gateways/class.pmprogateway_stripe.php +40 -91
- classes/gateways/class.pmprogateway_twocheckout.php +0 -145
- css/admin-rtl.css +0 -63
- css/admin.css +61 -97
- css/frontend-rtl.css +0 -111
- css/frontend.css +118 -173
- email/admin_change.html +1 -1
- email/billing.html +4 -1
- email/billing_failure.html +5 -1
- email/billing_failure_admin.html +5 -1
- email/cancel.html +1 -1
- email/cancel_admin.html +1 -1
- email/checkout_check.html +1 -1
- email/checkout_express.html +2 -2
- email/checkout_express_admin.html +2 -2
- email/checkout_freetrial.html +4 -1
- email/checkout_freetrial_admin.html +4 -1
- email/checkout_paid.html +4 -1
- email/checkout_paid_admin.html +4 -1
- email/checkout_trial.html +4 -1
- email/checkout_trial_admin.html +4 -1
- email/credit_card_expiring.html +0 -13
- email/invoice.html +6 -2
- images/Paid-Memberships-Pro.png +0 -0
- images/Paid-Memberships-Pro_watermark.png +0 -0
- images/icon-pmproadmin16-sprite.png +0 -0
- images/icon-pmproadmin16-sprite_2x.png +0 -0
- images/icon-pmproadmin32.png +0 -0
- images/icon-pmproadmin32_2x.png +0 -0
- includes/adminpages.php +0 -226
- includes/cleanup.php +0 -40
- includes/content.php +0 -405
- includes/currencies.php +3 -12
- includes/email.php +0 -111
- includes/filters.php +3 -41
- includes/functions.php +1505 -1742
- includes/https.php +0 -185
- includes/init.php +0 -240
- includes/lib/CyberSource/cyber_source_soap_client.php +0 -87
- includes/lib/Stripe/Stripe.php +0 -10
- includes/lib/Stripe/Stripe/Account.php +6 -5
- includes/lib/Stripe/Stripe/ApiRequestor.php +51 -153
- includes/lib/Stripe/Stripe/ApiResource.php +17 -51
- includes/lib/Stripe/Stripe/ApplicationFee.php +0 -53
- includes/lib/Stripe/Stripe/AttachedObject.php +0 -23
- includes/lib/Stripe/Stripe/Balance.php +0 -15
- includes/lib/Stripe/Stripe/BalanceTransaction.php +0 -39
- includes/lib/Stripe/Stripe/Card.php +0 -54
- includes/lib/Stripe/Stripe/CardError.php +2 -4
- includes/lib/Stripe/Stripe/Charge.php +7 -55
- includes/lib/Stripe/Stripe/Coupon.php +7 -24
- includes/lib/Stripe/Stripe/Customer.php +6 -61
- includes/lib/Stripe/Stripe/Error.php +7 -9
- includes/lib/Stripe/Stripe/Event.php +6 -12
- includes/lib/Stripe/Stripe/InvalidRequestError.php +2 -4
- includes/lib/Stripe/Stripe/Invoice.php +6 -30
- includes/lib/Stripe/Stripe/InvoiceItem.php +6 -24
- includes/lib/Stripe/Stripe/List.php +5 -25
- includes/lib/Stripe/Stripe/Object.php +12 -123
- includes/lib/Stripe/Stripe/Plan.php +6 -26
- includes/lib/Stripe/Stripe/Recipient.php +0 -75
- includes/lib/Stripe/Stripe/SingletonApiResource.php +0 -7
- includes/lib/Stripe/Stripe/Stripe.php +3 -49
- includes/lib/Stripe/Stripe/Subscription.php +0 -58
- includes/lib/Stripe/Stripe/Token.php +6 -12
- includes/lib/Stripe/Stripe/Transfer.php +6 -34
- includes/lib/Stripe/Stripe/Util.php +14 -42
- includes/lib/Twocheckout/Twocheckout.php +0 -31
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutAccount.php +0 -25
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutApi.php +0 -33
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutCoupon.php +0 -42
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutError.php +0 -14
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutOption.php +0 -42
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutPayment.php +0 -24
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutProduct.php +0 -42
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutSale.php +0 -104
- includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutUtil.php +0 -72
- includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php +0 -61
- includes/lib/Twocheckout/Twocheckout/TwocheckoutMessage.php +0 -13
- includes/lib/Twocheckout/Twocheckout/TwocheckoutNotification.php +0 -20
- includes/lib/Twocheckout/Twocheckout/TwocheckoutReturn.php +0 -21
- includes/localization.php +0 -30
- includes/login.php +0 -158
- includes/metaboxes.php +0 -108
- includes/notifications.php +0 -61
- includes/profile.php +0 -224
- includes/recaptcha.php +0 -22
- includes/reports.php +0 -27
- includes/services.php +0 -70
- includes/setup.sql +33 -43
- includes/upgradecheck.php +113 -214
- includes/xmlrpc.php +0 -80
- languages/email/da_DK/admin_change.html +0 -7
- languages/email/da_DK/admin_change_admin.html +0 -5
- languages/email/da_DK/billing.html +0 -16
- languages/email/da_DK/billing_admin.html +0 -17
- languages/email/da_DK/billing_failure.html +0 -11
- languages/email/da_DK/billing_failure_admin.html +0 -11
- languages/email/da_DK/cancel.html +0 -3
- languages/email/da_DK/cancel_admin.html +0 -8
- languages/email/da_DK/checkout_check.html +0 -17
- languages/email/da_DK/checkout_check_admin.html +0 -17
- languages/email/da_DK/checkout_express.html +0 -14
- languages/email/da_DK/checkout_express_admin.html +0 -14
- languages/email/da_DK/checkout_free.html +0 -8
- languages/email/da_DK/checkout_free_admin.html +0 -8
- languages/email/da_DK/checkout_freetrial.html +0 -19
- languages/email/da_DK/checkout_freetrial_admin.html +0 -19
- languages/email/da_DK/checkout_paid.html +0 -23
- languages/email/da_DK/checkout_paid_admin.html +0 -23
- languages/email/da_DK/checkout_trial.html +0 -23
- languages/email/da_DK/checkout_trial_admin.html +0 -23
- languages/email/da_DK/credit_card_expiring.html +0 -13
- languages/email/da_DK/default.html +0 -1
- languages/email/da_DK/footer.html +0 -4
- languages/email/da_DK/header.html +0 -1
- languages/email/da_DK/invoice.html +0 -19
- languages/email/da_DK/membership_expired.html +0 -7
- languages/email/da_DK/membership_expiring.html +0 -6
- languages/email/da_DK/trial_ending.html +0 -8
- languages/gettext.sh +0 -23
- languages/pmpro-cs_CZ.mo +0 -0
- languages/pmpro-cs_CZ.po +0 -2889
- languages/pmpro-da_DK.mo +0 -0
- languages/pmpro-da_DK.po +0 -2424
adminpages/addons.php
DELETED
@@ -1,142 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_addons")))
|
4 |
-
{
|
5 |
-
die(__("You do not have permissions to perform this action.", "pmpro"));
|
6 |
-
}
|
7 |
-
|
8 |
-
global $wpdb, $msg, $msgt, $pmpro_addons;
|
9 |
-
|
10 |
-
/*
|
11 |
-
Addon lists
|
12 |
-
*/
|
13 |
-
$pmpro_addon_lists = array(
|
14 |
-
'repo' => array('Plugins in the WordPress Repository', 'These official PMPro plugins are available in the WordPress repository and can be installed through Plugins --> Add New.'),
|
15 |
-
'thirdparty' => array('Third-party Integration', 'These official PMPro plugins integrate with specific third-party tools and software.'),
|
16 |
-
'recommended' => array('Recommended Plugins', 'These plugins are not developed by the PMPro team, but are recommended for sites running PMPro.'),
|
17 |
-
'github' => array('Plugins on GitHub', 'These official PMPro plugins must be downloaded from GitHub and installed through Plugins --> Add New --> Upload, then activated. These plugins cannot be automatically updated and may require more developer input.'),
|
18 |
-
'gists' => array('Code Gists', 'These are bits of code that generally must be added to your active theme\'s functions.php file or included in a custom plugin. Most gists require customization and are recommended for developers only.')
|
19 |
-
);
|
20 |
-
|
21 |
-
/*
|
22 |
-
Function to add an addon
|
23 |
-
*/
|
24 |
-
function pmpro_add_addon($list, $addon)
|
25 |
-
{
|
26 |
-
global $pmpro_addons;
|
27 |
-
|
28 |
-
//make sure we have the base array
|
29 |
-
if(empty($pmpro_addons))
|
30 |
-
$pmpro_addons = array();
|
31 |
-
|
32 |
-
//make sure we have an array for the list
|
33 |
-
if(empty($pmpro_addons[$list]))
|
34 |
-
$pmpro_addons[$list] = array();
|
35 |
-
|
36 |
-
//add addon to list
|
37 |
-
$pmpro_addons[$list][] = $addon;
|
38 |
-
}
|
39 |
-
|
40 |
-
/*
|
41 |
-
Load All Addons
|
42 |
-
*/
|
43 |
-
$pmpro_addons_dir = dirname(__FILE__) . "/../adminpages/addons/";
|
44 |
-
$cwd = getcwd();
|
45 |
-
chdir($pmpro_addons_dir);
|
46 |
-
$count = 0;
|
47 |
-
foreach (glob("*.php") as $filename)
|
48 |
-
{
|
49 |
-
$count++;
|
50 |
-
require_once($filename);
|
51 |
-
}
|
52 |
-
chdir($cwd);
|
53 |
-
|
54 |
-
require_once(dirname(__FILE__) . "/admin_header.php");
|
55 |
-
?>
|
56 |
-
|
57 |
-
<h2>Add Ons</h2>
|
58 |
-
<ul id="addon-filters" class="subsubsub">
|
59 |
-
<li id="addon-filters-all"><a href="javascript:void(0);" class="current all tab">All</a> <span>(<?php echo $count;?>)</span></li>
|
60 |
-
<?php foreach($pmpro_addon_lists as $list => $list_info) { ?>
|
61 |
-
<li id="addon-filters-<?php echo $list;?>"> | <a href="javascript:void(0);>" class="tab"><?php echo $list_info[0];?></a> <span>(<?php echo count($pmpro_addons[$list]);?>)</span></li>
|
62 |
-
<?php } ?>
|
63 |
-
</ul>
|
64 |
-
|
65 |
-
<?php foreach($pmpro_addon_lists as $list => $list_info) { ?>
|
66 |
-
<div id="pmpro-<?php echo $list;?>" class="pmpro-addon-list widgets-holder-wrap">
|
67 |
-
|
68 |
-
<h3 class="section-title"><?php echo $list_info[0];?></h3>
|
69 |
-
<p class="description"><?php echo $list_info[1];?></p>
|
70 |
-
<br class="clear" />
|
71 |
-
|
72 |
-
<div id="addons-list-<?php echo $list;?>" class="addon-list">
|
73 |
-
|
74 |
-
<?php foreach($pmpro_addons[$list] as $slug => $addon) { ?>
|
75 |
-
<div id="addon-<?php echo $slug;?>" class="widget <?php if($addon['enabled']) echo "enabled"; else echo "disabled";?>">
|
76 |
-
<div class="widget-top">
|
77 |
-
<div class="widget-title">
|
78 |
-
<h4>
|
79 |
-
<span class="status-label"><?php if($addon['enabled']) echo __("Enabled", "pmpro"); else echo __("Disabled", "pmpro");?></span>
|
80 |
-
<span class="title"><?php echo $addon['title'];?></span>
|
81 |
-
<span class="version pmpro_tag-grey"><?php echo $addon['version'];?></span>
|
82 |
-
<span class="in-widget-title"></span>
|
83 |
-
</h4>
|
84 |
-
</div> <!-- end widget-title -->
|
85 |
-
</div> <!-- end widget-top -->
|
86 |
-
<div class="widget-inside">
|
87 |
-
<?php call_user_func($addon['widget'], $addon);?>
|
88 |
-
</div> <!-- end addon-inside -->
|
89 |
-
</div> <!-- end widget -->
|
90 |
-
<?php } ?>
|
91 |
-
|
92 |
-
<br class="clear" />
|
93 |
-
</div> <!-- end addon-list -->
|
94 |
-
|
95 |
-
</div> <!-- end pmpro-<?php echo $list;?> -->
|
96 |
-
<?php } ?>
|
97 |
-
|
98 |
-
<script>
|
99 |
-
//tabs
|
100 |
-
jQuery(document).ready(function() {
|
101 |
-
jQuery('#addon-filters a.tab').click(function() {
|
102 |
-
//which tab?
|
103 |
-
var tab = jQuery(this).parent().attr('id').replace('addon-filters-', '');
|
104 |
-
|
105 |
-
//un select tabs
|
106 |
-
jQuery('#addon-filters a.tab').removeClass('current');
|
107 |
-
|
108 |
-
//select this tab
|
109 |
-
jQuery('#addon-filters-'+tab+' a').addClass('current');
|
110 |
-
|
111 |
-
//show all?
|
112 |
-
if(tab == 'all')
|
113 |
-
jQuery('div.pmpro-addon-list').show();
|
114 |
-
else
|
115 |
-
{
|
116 |
-
//hide all
|
117 |
-
jQuery('div.pmpro-addon-list').hide();
|
118 |
-
|
119 |
-
//show this one
|
120 |
-
jQuery('#pmpro-'+tab).show();
|
121 |
-
}
|
122 |
-
});
|
123 |
-
});
|
124 |
-
|
125 |
-
//resize addon boxes
|
126 |
-
jQuery(document).ready(function() {
|
127 |
-
jQuery('.addon-list').each(function() {
|
128 |
-
//what's the tallest p in the list?
|
129 |
-
var tallest = 32;
|
130 |
-
jQuery(this).find('div.info p').each(function() {
|
131 |
-
tallest = Math.max(tallest, jQuery(this).height());
|
132 |
-
});
|
133 |
-
|
134 |
-
//set all p's to match
|
135 |
-
jQuery(this).find('div.info p').css('height', tallest);
|
136 |
-
});
|
137 |
-
});
|
138 |
-
</script>
|
139 |
-
|
140 |
-
<?php
|
141 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
142 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/hide-admin-bar-from-non-admins.php
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: Hide Admin Bar From Non-Admins
|
4 |
-
Slug: hide-admin-bar-from-non-admins
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('repo', array(
|
7 |
-
'title' => 'Hide Admin Bar From Non-Admins',
|
8 |
-
'version' => '1.0',
|
9 |
-
'widget' => 'pmpro_addon_hide_admin_bar_from_non_admins_widget',
|
10 |
-
'enabled' => function_exists('habfna_disable_admin_bar')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_hide_admin_bar_from_non_admins_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Perfect for sites where there is only one admin who needs access to the dashboard and the admin bar. When activated only administrators will see the admin bar.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<form method="post" name="component-actions" action="">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../hide-admin-bar-from-non-admins/hide-admin-bar-from-non-admins.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=hide-admin-bar-from-non-admins/hide-admin-bar-from-non-admins.php'), 'activate-plugin_hide-admin-bar-from-non-admins/hide-admin-bar-from-non-admins.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=hide-admin-bar-from-non-admins'), 'install-plugin_hide-admin-bar-from-non-admins'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</form>
|
29 |
-
</div>
|
30 |
-
</div> <!-- end info -->
|
31 |
-
<?php
|
32 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/images/pmpro-aweber.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-bbpress.jpg
DELETED
Binary file
|
adminpages/addons/images/pmpro-constant-contact.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-email-templates.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-infusionsoft.jpg
DELETED
Binary file
|
adminpages/addons/images/pmpro-mailchimp.jpg
DELETED
Binary file
|
adminpages/addons/images/pmpro-network.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-post-affiliate-pro.jpg
DELETED
Binary file
|
adminpages/addons/images/pmpro-register-helper.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-series.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-woocommerce.gif
DELETED
Binary file
|
adminpages/addons/images/pmpro-wp-affiliate-platform.jpg
DELETED
Binary file
|
adminpages/addons/images/wp-bouncer.gif
DELETED
Binary file
|
adminpages/addons/pmpro-addon-packages.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Addon Packages
|
4 |
-
Slug: pmpro-addon-packages
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Addon Packages',
|
8 |
-
'version' => '.4.3',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_addon_packages_widget',
|
10 |
-
'enabled' => function_exists('pmproap_post_meta')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_addon_packages_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Sell access to individual pages or posts for a flat fee. This is a workaround if you would like to allow multiple membership levels per user.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a href="https://github.com/strangerstudios/pmpro-addon-packages/blob/master/readme.txt" class="button">Enabled</a>
|
22 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-addon-packages/pmpro-addon-packages.php")) { ?>
|
23 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-addon-packages/pmpro-addon-packages.php'), 'activate-plugin_pmpro-addon-packages/pmpro-addon-packages.php')?>" class="button button-primary">Activate</a>
|
24 |
-
<?php } else { ?>
|
25 |
-
<a href="https://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-addon-packages.zip" class="button button-primary">Download</a>
|
26 |
-
<?php } ?>
|
27 |
-
</div>
|
28 |
-
</div> <!-- end info -->
|
29 |
-
<?php
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-affiliates.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Affiliates
|
4 |
-
Slug: pmpro-affiliates
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Affiliates',
|
8 |
-
'version' => '.2.4',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_affiliates_widget',
|
10 |
-
'enabled' => function_exists('pmpro_affiliates_dependencies')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_affiliates_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Lightweight Affiliate system. Create affiliate accounts and codes; tracks checkouts by affiliate account.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a href="https://github.com/strangerstudios/pmpro-affiliates/blob/master/readme.txt" class="button">Enabled</a>
|
22 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-affiliates/pmpro-affiliates.php")) { ?>
|
23 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-affiliates/pmpro-affiliates.php'), 'activate-plugin_pmpro-affiliates/pmpro-affiliates.php')?>" class="button button-primary">Activate</a>
|
24 |
-
<?php } else { ?>
|
25 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-affiliates.zip" class="button button-primary">Download</a>
|
26 |
-
<?php } ?>
|
27 |
-
</div>
|
28 |
-
</div> <!-- end info -->
|
29 |
-
<?php
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-aweber.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro AWeber Integration
|
4 |
-
Slug: pmpro-aweber
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro AWeber Integration',
|
8 |
-
'version' => '1.0',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_aweber_widget',
|
10 |
-
'enabled' => function_exists('pmproaw_init')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_aweber_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-aweber.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Integrate User Registrations with AWeber. Adds members to lists based on their membership level. (Note: works without PMPro as well.)</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-aweber/pmpro-aweber.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-aweber/pmpro-aweber.php'), 'activate-plugin_pmpro-aweber/pmpro-aweber.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-aweber'), 'install-plugin_pmpro-aweber'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-bbpress.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro bbPress
|
4 |
-
Slug: pmpro-bbpress
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('repo', array(
|
7 |
-
'title' => 'PMPro bbPress',
|
8 |
-
'version' => '1.0.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_bbpress_widget',
|
10 |
-
'enabled' => function_exists('pmprobbp_add_meta_box')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_bbpress_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-bbpress.jpg" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Locking down bbPress Forums by Membership Level and Forum ID.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-bbpress/pmpro-bbpress.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-bbpress/pmpro-bbpress.php'), 'activate-plugin_pmpro-bbpress/pmpro-bbpress.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-bbpress'), 'install-plugin_pmpro-bbpress'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-constant-contact.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Constant Contact Integration
|
4 |
-
Slug: pmpro-constant-contact
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro Constant Contact Integration',
|
8 |
-
'version' => '1.0',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_constant_contact_widget',
|
10 |
-
'enabled' => function_exists('pmprocc_init')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_constant_contact_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-constant-contact.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Integrate User Registrations with Constant Contact . Adds members to lists based on their membership level. (Note: works without PMPro as well.)</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-constant-contact/pmpro-constant-contact.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-constant-contact/pmpro-constant-contact.php'), 'activate-plugin_pmpro-constant-contact/pmpro-constant-contact.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-constant-contact'), 'install-plugin_pmpro-constant-contact'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-disable-emails.php
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Disable PMPro Emails
|
4 |
-
Slug: pmpro-disable-emails
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('gists', array(
|
7 |
-
'title' => 'PMPro Disable Emails',
|
8 |
-
'version' => '.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_disable_emails_widget',
|
10 |
-
'enabled' => function_exists('dae_pmpro_email_recipient')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_disable_emails_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Disable all or specific emails sent by the PMPro plugin.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a target="_blank" href="https://gist.github.com/strangerstudios/3667545" class="button">Enabled</a>
|
22 |
-
<?php } else { ?>
|
23 |
-
<a target="_blank" href="https://gist.github.com/strangerstudios/3667545" class="button button-primary">View Gist</a>
|
24 |
-
<?php } ?>
|
25 |
-
</div>
|
26 |
-
</div> <!-- end info -->
|
27 |
-
<?php
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-email-templates.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Email Templates Editor
|
4 |
-
Slug: pmpro-email-templates-addon
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('repo', array(
|
7 |
-
'title' => 'PMPro Email Templates',
|
8 |
-
'version' => '.5.2',
|
9 |
-
'widget' => 'pmpro_addon_email_templates_widget',
|
10 |
-
'enabled' => function_exists('pmproet_scripts')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_email_templates_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-email-templates.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Easily edit system-generated Email Templates from the WordPress admin.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="http://wordpress.org/plugins/pmpro-email-templates-addon/" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-email-templates-addon/pmpro-email-templates.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-email-templates-addon/pmpro-email-templates.php'), 'activate-plugin_pmpro-email-templates-addon/pmpro-email-templates.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-email-templates-addon'), 'install-plugin_pmpro-email-templates-addon'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-expiration.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Expiration Date
|
4 |
-
Slug: pmpro-expiration
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Set Expiration Dates',
|
8 |
-
'version' => '.1.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_expiration_widget',
|
10 |
-
'enabled' => function_exists('pmprosed_pmpro_checkout_level')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_expiration_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Set a specific expiration date (e.g. 2013-12-31) for a PMPro membership level or discount code.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a href="https://github.com/strangerstudios/pmpro-set-expiration-dates/blob/master/readme.txt" class="button">Enabled</a>
|
22 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-set-expiration-dates/pmpro-set-expiration-dates.php")) { ?>
|
23 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-set-expiration-dates/pmpro-set-expiration-dates.php'), 'activate-plugin_pmpro-set-expiration-dates/pmpro-set-expiration-dates.php')?>" class="button button-primary">Activate</a>
|
24 |
-
<?php } else { ?>
|
25 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-set-expiration-dates.zip" class="button button-primary">Download</a>
|
26 |
-
<?php } ?>
|
27 |
-
</div>
|
28 |
-
</div> <!-- end info -->
|
29 |
-
<?php
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-freeaddress.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Require Name and Address for Free Level
|
4 |
-
Slug: pmpro-freerequire
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Require Name/Address for Free Level',
|
8 |
-
'version' => '.2',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_freerequire_widget',
|
10 |
-
'enabled' => function_exists('my_pmpro_checkout_boxes_require_address')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_freerequire_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Require name/address for free Membership Level checkout.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a href="https://github.com/strangerstudios/pmpro-address-for-free-levels" class="button">Enabled</a>
|
22 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-address-for-free-levels/pmpro-address-for-free-levels.php")) { ?>
|
23 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-address-for-free-levels/pmpro-address-for-free-levels.php'), 'activate-plugin_pmpro-address-for-free-levels/pmpro-address-for-free-levels.php')?>" class="button button-primary">Activate</a>
|
24 |
-
<?php } else { ?>
|
25 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-address-for-free-levels.zip" class="button button-primary">Download</a>
|
26 |
-
<?php } ?>
|
27 |
-
</div>
|
28 |
-
</div> <!-- end info -->
|
29 |
-
<?php
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-infusionsoft.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Infusionsoft Integration
|
4 |
-
Slug: pmpro-infusionsoft
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro Infusionsoft Integration',
|
8 |
-
'version' => '1.2',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_infusionsoft_widget',
|
10 |
-
'enabled' => function_exists('pmprois_init')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_infusionsoft_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-infusionsoft.jpg" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Integrate with Infusionsoft. Add members to email lists (groups, tags) based on their membership level. (Note: works without PMPro as well.)</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-infusionsoft/pmpro-infusionsoft.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-infusionsoft/pmpro-infusionsoft.php'), 'activate-plugin_pmpro-infusionsoft/pmpro-infusionsoft.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-infusionsoft'), 'install-plugin_pmpro-infusionsoft'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-international-addresses.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro International Addresses
|
4 |
-
Slug: pmpro-international-addresses
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro International Addresses',
|
8 |
-
'version' => '.2.2',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_international_addresses_widget',
|
10 |
-
'enabled' => function_exists('pmproia_pmpro_international_addresses')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_international_addresses_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<?php /* <img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-international-addresses.jpg" /> */ ?>
|
18 |
-
<div class="info">
|
19 |
-
<p>Adds long form addresses to the PMPro checkout.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-international-addresses/" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-international-addresses/pmpro-international-addresses.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-international-addresses/pmpro-international-addresses.php'), 'activate-plugin_pmpro-international-addresses/pmpro-international-addresses.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-international-addresses.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-level-cost-text.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Custom Level Cost Text
|
4 |
-
Slug: pmpro-level-cost-text
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Level Cost Text',
|
8 |
-
'version' => '.2',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_level_cost_text_widget',
|
10 |
-
'enabled' => function_exists('pclct_pmpro_discount_code_after_level_settings')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_level_cost_text_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Adds a "level cost text" field to PMPro Membership Levels and Discount Codes to allow you to override the automatically generated level cost text PMPro provides.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a href="https://github.com/strangerstudios/pmpro-level-cost-text/blob/master/readme.txt" class="button">Enabled</a>
|
22 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-level-cost-text/pmpro-level-cost-text.php")) { ?>
|
23 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-level-cost-text/pmpro-level-cost-text.php'), 'activate-plugin_pmpro-level-cost-text/pmpro-level-cost-text.php')?>" class="button button-primary">Activate</a>
|
24 |
-
<?php } else { ?>
|
25 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-level-cost-text.zip" class="button button-primary">Download</a>
|
26 |
-
<?php } ?>
|
27 |
-
</div>
|
28 |
-
</div> <!-- end info -->
|
29 |
-
<?php
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-mailchimp.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro MailChimp Integration
|
4 |
-
Slug: pmpro-mailchimp
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro MailChimp Integration',
|
8 |
-
'version' => '1.0',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_mailchimp_widget',
|
10 |
-
'enabled' => function_exists('pmpromc_init')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_mailchimp_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-mailchimp.jpg" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Integrate User Registrations with Mailchimp. Adds members to lists based on their membership level. (Note: works without PMPro as well.)</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-mailchimp/pmpro-mailchimp.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-mailchimp/pmpro-mailchimp.php'), 'activate-plugin_pmpro-mailchimp/pmpro-mailchimp.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-mailchimp'), 'install-plugin_pmpro-mailchimp'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-network-subsite.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Network
|
4 |
-
Slug: pmpro-network-subsite
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Network Subsite Helper',
|
8 |
-
'version' => '.2',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_network_subsite_widget',
|
10 |
-
'enabled' => function_exists('pmpron_subsite_activated_plugin')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_network_subsite_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-network.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Have network subsites use membership data from a "main" site to handle access restrictions.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-network-subsite" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-network-subsite/pmpro-network-subsite.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-network-subsite/pmpro-network-subsite.php'), 'activate-plugin_pmpro-network-subsite/pmpro-network-subsite.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-network-subsite.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-network.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Network
|
4 |
-
Slug: pmpro-network
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Network',
|
8 |
-
'version' => '.3.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_network_widget',
|
10 |
-
'enabled' => function_exists('pmpron_new_blogs_settings')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_network_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-network.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Allow users to checkout for a membership to create a site on your WordPress multisite network.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-network/blob/master/readme.txt" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-network/pmpro-network.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-network/pmpro-network.php'), 'activate-plugin_pmpro-network/pmpro-network.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-network.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-post-affiliate-pro.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Post Affiliate Pro Integration
|
4 |
-
Slug: pmpro-post-affiliate-pro
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro Post Affiliate Pro Integration',
|
8 |
-
'version' => '.2.1.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_post_affiliate_pro_widget',
|
10 |
-
'enabled' => function_exists('pap_pmpro_track_sale')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_post_affiliate_pro_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-post-affiliate-pro.jpg" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Integrate Paid Memberships Pro with the Post Affiliate Pro platform.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-post-affiliate-pro/blob/master/readme.txt" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-post-affiliate-pro/pmpro-post-affiliate-pro.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-post-affiliate-pro/pmpro-post-affiliate-pro.php'), 'activate-plugin_pmpro-post-affiliate-pro/pmpro-post-affiliate-pro.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-post-affiliate-pro.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-register-helper.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Register Helper
|
4 |
-
Slug: pmpro-register-helper
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Register Helper',
|
8 |
-
'version' => '.5.16.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_register_helper_widget',
|
10 |
-
'enabled' => class_exists('PMProRH_Field')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_register_helper_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-register-helper.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Add additional meta fields to your PMPro checkout page and/or "Your Profile" pages. Support for text, select, multi-select, textarea, hidden, and custom HTML. Loop into existing checkout/profile field sections or add new ones.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-register-helper/blob/master/readme.txt" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-register-helper/pmpro-register-helper.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-register-helper/pmpro-register-helper.php'), 'activate-plugin_pmpro-register-helper/pmpro-register-helper.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-register-helper.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-require-code-to-register.php
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Require Code to Register
|
4 |
-
Slug: pmpro-require-code-to-register
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('gists', array(
|
7 |
-
'title' => 'PMPro Require a Code to Register',
|
8 |
-
'version' => '.1',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_require_code_to_register_widget',
|
10 |
-
'enabled' => function_exists('my_pmpro_registration_checks_require_code_to_register')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_require_code_to_register_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Require a discount code to checkout for a specific level.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a target="_blank" href="https://gist.github.com/strangerstudios/5573829" class="button">Enabled</a>
|
22 |
-
<?php } else { ?>
|
23 |
-
<a target="_blank" href="https://gist.github.com/strangerstudios/5573829" class="button button-primary">View Gist</a>
|
24 |
-
<?php } ?>
|
25 |
-
</div>
|
26 |
-
</div> <!-- end info -->
|
27 |
-
<?php
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-series.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Series
|
4 |
-
Slug: pmpro-series
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Series',
|
8 |
-
'version' => '.3',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_series_widget',
|
10 |
-
'enabled' => class_exists("PMProSeries")
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_series_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-series.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>"Drip feed" content to your members over the course of their membership. Serializes content by # of days post-registration.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("edit.php?post_type=pmpro_series");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-series/pmpro-series.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-series/pmpro-series.php'), 'activate-plugin_pmpro-series/pmpro-series.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-series.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-shipping.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro Shipping Add On
|
4 |
-
Slug: pmpro-shipping
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro Shipping Add On',
|
8 |
-
'version' => '.2.6',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_shipping_widget',
|
10 |
-
'enabled' => function_exists('pmproship_pmpro_checkout_boxes')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_shipping_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<?php /* <img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-shipping.jpg" /> */ ?>
|
18 |
-
<div class="info">
|
19 |
-
<p>Adds shipping fields to the checkout page, confirmation page, confirmation emails, member's list and edit user profile pages.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-shipping/" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-shipping/pmpro-shipping.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-shipping/pmpro-shipping.php'), 'activate-plugin_pmpro-shipping/pmpro-shipping.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-shipping.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-user-pages.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro User Pages
|
4 |
-
Slug: pmpro-user-pages
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('github', array(
|
7 |
-
'title' => 'PMPro User Pages',
|
8 |
-
'version' => '.3',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_user_pages_widget',
|
10 |
-
'enabled' => function_exists('pmproup_pmpro_after_checkout')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_user_pages_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>Creates a unique page for each Member after checkout, giving the Admin access to write customized content for each specific member.</p>
|
19 |
-
<div class="actions">
|
20 |
-
<?php if($addon['enabled']) { ?>
|
21 |
-
<a href="https://github.com/strangerstudios/pmpro-user-pages/blob/master/readme.txt" class="button">Enabled</a>
|
22 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-user-pages/pmpro-user-pages.php")) { ?>
|
23 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-user-pages/pmpro-user-pages.php'), 'activate-plugin_pmpro-user-pages/pmpro-user-pages.php')?>" class="button button-primary">Activate</a>
|
24 |
-
<?php } else { ?>
|
25 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-user-pages.zip" class="button button-primary">Download</a>
|
26 |
-
<?php } ?>
|
27 |
-
</div>
|
28 |
-
</div> <!-- end info -->
|
29 |
-
<?php
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-woocommerce.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro WooCommerce
|
4 |
-
Slug: pmpro-woocommerce
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro WooCommerce',
|
8 |
-
'version' => '1.2.2',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_woocommerce_widget',
|
10 |
-
'enabled' => function_exists('pmprowoo_add_membership_from_order')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_woocommerce_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-woocommerce.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Use WooCommerce to purchase membership or set members-only product pricing.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-woocommerce/pmpro-woocommerce.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-woocommerce/pmpro-woocommerce.php'), 'activate-plugin_pmpro-woocommerce/pmpro-woocommerce.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-woocommerce'), 'install-plugin_pmpro-woocommerce'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/pmpro-wp-affiliate.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: PMPro WP Affiliate Platform Integration
|
4 |
-
Slug: pmpro-wp-affiliate
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('thirdparty', array(
|
7 |
-
'title' => 'PMPro WP Affiliate Platform Integration',
|
8 |
-
'version' => '.3',
|
9 |
-
'widget' => 'pmpro_addon_pmpro_wp_affiliate_widget',
|
10 |
-
'enabled' => function_exists('wpa_pmpro_after_checkout')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_pmpro_wp_affiliate_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/pmpro-wp-affiliate-platform.jpg" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Process an affiliate via WP Affiliate Platform after a PMPro checkout.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="https://github.com/strangerstudios/pmpro-wp-affiliate-platform/" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-wp-affiliate-platform/pmpro-wp-affiliate-platform.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-wp-affiliate-platform/pmpro-wp-affiliate-platform.php'), 'activate-plugin_pmpro-wp-affiliate-platform/pmpro-wp-affiliate-platform.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-wp-affiliate-platform.zip" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/tml.php
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: Theme My Login
|
4 |
-
Slug: pmpro-tml
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('recommended', array(
|
7 |
-
'title' => 'Theme My Login',
|
8 |
-
'widget' => 'pmpro_addon_tml_widget',
|
9 |
-
'enabled' => class_exists('Theme_My_Login'),
|
10 |
-
'version' => '6.3.10'
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_tml_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<div class="info">
|
18 |
-
<p>This plugin themes the WordPress login, registration and forgot password pages according to your current theme. By <a href="http://www.jfarthing.com/" target="_blank">Jeff Farthing</a></p>
|
19 |
-
<div class="actions">
|
20 |
-
<form method="post" name="component-actions" action="">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="<?php echo admin_url("plugins.php");?>" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../theme-my-login/theme-my-login.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=theme-my-login/theme-my-login.php'), 'activate-plugin_theme-my-login/theme-my-login.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=theme-my-login'), 'install-plugin_theme-my-login'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</form>
|
29 |
-
</div>
|
30 |
-
</div> <!-- end info -->
|
31 |
-
<?php
|
32 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/addons/wp-bouncer.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Addon: WP Bouncer
|
4 |
-
Slug: wp-bouncer
|
5 |
-
*/
|
6 |
-
pmpro_add_addon('repo', array(
|
7 |
-
'title' => 'WP Bouncer',
|
8 |
-
'version' => '1.1',
|
9 |
-
'widget' => 'pmpro_addon_wp_bouncer_widget',
|
10 |
-
'enabled' => class_exists('WP_Bouncer')
|
11 |
-
)
|
12 |
-
);
|
13 |
-
|
14 |
-
function pmpro_addon_wp_bouncer_widget($addon)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<img class="addon-thumb" src="<?php echo PMPRO_URL?>/adminpages/addons/images/wp-bouncer.gif" />
|
18 |
-
<div class="info">
|
19 |
-
<p>Make sure users are only logged in from one computer or device at a time.</p>
|
20 |
-
<div class="actions">
|
21 |
-
<?php if($addon['enabled']) { ?>
|
22 |
-
<a href="http://wordpress.org/plugins/wp-bouncer/" class="button">Enabled</a>
|
23 |
-
<?php } elseif(file_exists(dirname(__FILE__) . "/../../../wp-bouncer/wp-bouncer.php")) { ?>
|
24 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=wp-bouncer/wp-bouncer.php'), 'activate-plugin_wp-bouncer/wp-bouncer.php')?>" class="button button-primary">Activate</a>
|
25 |
-
<?php } else { ?>
|
26 |
-
<a href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=wp-bouncer'), 'install-plugin_wp-bouncer'); ?>" class="button button-primary">Download</a>
|
27 |
-
<?php } ?>
|
28 |
-
</div>
|
29 |
-
</div> <!-- end info -->
|
30 |
-
<?php
|
31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/admin_footer.php
CHANGED
@@ -1,2 +1 @@
|
|
1 |
-
<div class="clear"></div>
|
2 |
</div>
|
|
|
1 |
</div>
|
adminpages/admin_header.php
CHANGED
@@ -1,6 +1,4 @@
|
|
1 |
<?php
|
2 |
-
require_once(dirname(__FILE__) . "/functions.php");
|
3 |
-
|
4 |
if(isset($_REQUEST['page']))
|
5 |
$view = $_REQUEST['page'];
|
6 |
else
|
@@ -22,11 +20,11 @@
|
|
22 |
if(empty($msg))
|
23 |
$msg = -1;
|
24 |
if(empty($pmpro_level_ready) && empty($edit))
|
25 |
-
$msgt .= " <a href=\"?page=pmpro-membershiplevels&edit=-1\">
|
26 |
elseif($pmpro_level_ready && !$pmpro_pages_ready && $view != "pmpro-pagesettings")
|
27 |
-
$msgt .= " <a href=\"?page=pmpro-pagesettings\">
|
28 |
elseif($pmpro_level_ready && $pmpro_pages_ready && !$pmpro_gateway_ready && $view != "pmpro-paymentsettings")
|
29 |
-
$msgt .= " <a href=\"?page=pmpro-paymentsettings\">
|
30 |
|
31 |
if(empty($msgt))
|
32 |
$msg = false;
|
@@ -35,7 +33,7 @@
|
|
35 |
if(!pmpro_checkLevelForStripeCompatibility())
|
36 |
{
|
37 |
$msg = -1;
|
38 |
-
$msgt =
|
39 |
if($view == "pmpro-membershiplevels" && !empty($_REQUEST['edit']) && $_REQUEST['edit'] > 0)
|
40 |
{
|
41 |
if(!pmpro_checkLevelForStripeCompatibility($_REQUEST['edit']))
|
@@ -43,39 +41,19 @@
|
|
43 |
global $pmpro_stripe_error;
|
44 |
$pmpro_stripe_error = true;
|
45 |
$msg = -1;
|
46 |
-
$msgt =
|
47 |
-
}
|
48 |
-
}
|
49 |
-
elseif($view == "pmpro-membershiplevels")
|
50 |
-
$msgt .= " " . __("The levels with issues are highlighted below.", "pmpro");
|
51 |
-
else
|
52 |
-
$msgt .= " <a href=\"?page=pmpro-membershiplevels\">" . __("Please edit your levels", "pmpro") . "</a>.";
|
53 |
-
}
|
54 |
-
|
55 |
-
if(!pmpro_checkLevelForPayflowCompatibility())
|
56 |
-
{
|
57 |
-
$msg = -1;
|
58 |
-
$msgt = __("The billing details for some of your membership levels is not supported by Payflow.", "pmpro");
|
59 |
-
if($view == "pmpro-membershiplevels" && !empty($_REQUEST['edit']) && $_REQUEST['edit'] > 0)
|
60 |
-
{
|
61 |
-
if(!pmpro_checkLevelForPayflowCompatibility($_REQUEST['edit']))
|
62 |
-
{
|
63 |
-
global $pmpro_payflow_error;
|
64 |
-
$pmpro_payflow_error = true;
|
65 |
-
$msg = -1;
|
66 |
-
$msgt = __("The billing details for this level are not supported by Payflow. Please review the notes in the Billing Details section below.", "pmpro");
|
67 |
}
|
68 |
}
|
69 |
elseif($view == "pmpro-membershiplevels")
|
70 |
-
$msgt .= "
|
71 |
else
|
72 |
-
$msgt .= " <a href=\"?page=pmpro-membershiplevels\">
|
73 |
}
|
74 |
|
75 |
if(!pmpro_checkLevelForBraintreeCompatibility())
|
76 |
{
|
77 |
$msg = -1;
|
78 |
-
$msgt =
|
79 |
if($view == "pmpro-membershiplevels" && !empty($_REQUEST['edit']) && $_REQUEST['edit'] > 0)
|
80 |
{
|
81 |
if(!pmpro_checkLevelForBraintreeCompatibility($_REQUEST['edit']))
|
@@ -83,34 +61,13 @@
|
|
83 |
global $pmpro_braintree_error;
|
84 |
$pmpro_braintree_error = true;
|
85 |
$msg = -1;
|
86 |
-
$msgt =
|
87 |
-
}
|
88 |
-
}
|
89 |
-
elseif($view == "pmpro-membershiplevels")
|
90 |
-
$msgt .= " " . __("The levels with issues are highlighted below.", "pmpro");
|
91 |
-
else
|
92 |
-
$msgt .= " <a href=\"?page=pmpro-membershiplevels\">" . __("Please edit your levels", "pmpro") . "</a>.";
|
93 |
-
}
|
94 |
-
|
95 |
-
if(!pmpro_checkLevelForTwoCheckoutCompatibility())
|
96 |
-
{
|
97 |
-
$msg = -1;
|
98 |
-
$msgt = __("The billing details for some of your membership levels is not supported by TwoCheckout.", "pmpro");
|
99 |
-
if($view == "pmpro-membershiplevels" && !empty($_REQUEST['edit']) && $_REQUEST['edit'] > 0)
|
100 |
-
{
|
101 |
-
if(!pmpro_checkLevelForTwoCheckoutCompatibility($_REQUEST['edit']))
|
102 |
-
{
|
103 |
-
global $pmpro_twocheckout_error;
|
104 |
-
$pmpro_twocheckout_error = true;
|
105 |
-
|
106 |
-
$msg = -1;
|
107 |
-
$msgt = __("The billing details for this level are not supported by 2Checkout. Please review the notes in the Billing Details section below.", "pmpro");
|
108 |
}
|
109 |
}
|
110 |
elseif($view == "pmpro-membershiplevels")
|
111 |
-
$msgt .= "
|
112 |
else
|
113 |
-
$msgt .= " <a href=\"?page=pmpro-membershiplevels\">
|
114 |
}
|
115 |
|
116 |
if(!empty($msg))
|
@@ -122,12 +79,13 @@
|
|
122 |
|
123 |
?>
|
124 |
<div class="wrap pmpro_admin">
|
125 |
-
<div class="pmpro_banner">
|
126 |
-
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><img src="<?php echo PMPRO_URL?>/images/
|
127 |
-
<div class="
|
128 |
|
129 |
-
<
|
130 |
-
</div>
|
|
|
131 |
|
132 |
<div id="pmpro_notifications">
|
133 |
</div>
|
@@ -140,17 +98,10 @@
|
|
140 |
});
|
141 |
</script>
|
142 |
|
143 |
-
<?php
|
144 |
-
$settings_tabs = array("pmpro-membershiplevels", "pmpro-pagesettings", "pmpro-paymentsettings", "pmpro-emailsettings", "pmpro-advancedsettings", "pmpro-addons");
|
145 |
-
if(in_array($view, $settings_tabs))
|
146 |
-
{
|
147 |
-
?>
|
148 |
<h3 class="nav-tab-wrapper">
|
149 |
-
<a href="admin.php?page=pmpro-membershiplevels" class="nav-tab<?php if($view == 'pmpro-membershiplevels') { ?> nav-tab-active<?php } ?>"
|
150 |
-
<a href="admin.php?page=pmpro-pagesettings" class="nav-tab<?php if($view == 'pmpro-pagesettings') { ?> nav-tab-active<?php } ?>"
|
151 |
-
<a href="admin.php?page=pmpro-paymentsettings" class="nav-tab<?php if($view == 'pmpro-paymentsettings') { ?> nav-tab-active<?php } ?>"
|
152 |
-
<a href="admin.php?page=pmpro-emailsettings" class="nav-tab<?php if($view == 'pmpro-emailsettings') { ?> nav-tab-active<?php } ?>"
|
153 |
-
<a href="admin.php?page=pmpro-advancedsettings" class="nav-tab<?php if($view == 'pmpro-advancedsettings') { ?> nav-tab-active<?php } ?>"
|
154 |
-
<a href="admin.php?page=pmpro-addons" class="nav-tab<?php if($view == 'pmpro-addons') { ?> nav-tab-active<?php } ?>"><?php _e('Add Ons', 'pmpro');?></a>
|
155 |
</h3>
|
156 |
-
<?php } ?>
|
1 |
<?php
|
|
|
|
|
2 |
if(isset($_REQUEST['page']))
|
3 |
$view = $_REQUEST['page'];
|
4 |
else
|
20 |
if(empty($msg))
|
21 |
$msg = -1;
|
22 |
if(empty($pmpro_level_ready) && empty($edit))
|
23 |
+
$msgt .= " <a href=\"?page=pmpro-membershiplevels&edit=-1\">Add a membership level</a> to get started.";
|
24 |
elseif($pmpro_level_ready && !$pmpro_pages_ready && $view != "pmpro-pagesettings")
|
25 |
+
$msgt .= " <a href=\"?page=pmpro-pagesettings\">Setup the membership pages</a>.";
|
26 |
elseif($pmpro_level_ready && $pmpro_pages_ready && !$pmpro_gateway_ready && $view != "pmpro-paymentsettings")
|
27 |
+
$msgt .= " <a href=\"?page=pmpro-paymentsettings\">Setup your SSL certificate and payment gateway</a>.";
|
28 |
|
29 |
if(empty($msgt))
|
30 |
$msg = false;
|
33 |
if(!pmpro_checkLevelForStripeCompatibility())
|
34 |
{
|
35 |
$msg = -1;
|
36 |
+
$msgt = "The billing details for some of your membership levels is not supported by Stripe.";
|
37 |
if($view == "pmpro-membershiplevels" && !empty($_REQUEST['edit']) && $_REQUEST['edit'] > 0)
|
38 |
{
|
39 |
if(!pmpro_checkLevelForStripeCompatibility($_REQUEST['edit']))
|
41 |
global $pmpro_stripe_error;
|
42 |
$pmpro_stripe_error = true;
|
43 |
$msg = -1;
|
44 |
+
$msgt = "The billing details for this level are not supported by Stripe. Please review the notes in the Billing Details section below.";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
46 |
}
|
47 |
elseif($view == "pmpro-membershiplevels")
|
48 |
+
$msgt .= " The levels with issues are highlighted below.";
|
49 |
else
|
50 |
+
$msgt .= " <a href=\"?page=pmpro-membershiplevels\">Please edit your levels</a>.";
|
51 |
}
|
52 |
|
53 |
if(!pmpro_checkLevelForBraintreeCompatibility())
|
54 |
{
|
55 |
$msg = -1;
|
56 |
+
$msgt = "The billing details for some of your membership levels is not supported by Braintree.";
|
57 |
if($view == "pmpro-membershiplevels" && !empty($_REQUEST['edit']) && $_REQUEST['edit'] > 0)
|
58 |
{
|
59 |
if(!pmpro_checkLevelForBraintreeCompatibility($_REQUEST['edit']))
|
61 |
global $pmpro_braintree_error;
|
62 |
$pmpro_braintree_error = true;
|
63 |
$msg = -1;
|
64 |
+
$msgt = "The billing details for this level are not supported by Braintree. Please review the notes in the Billing Details section below.";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
}
|
67 |
elseif($view == "pmpro-membershiplevels")
|
68 |
+
$msgt .= " The levels with issues are highlighted below.";
|
69 |
else
|
70 |
+
$msgt .= " <a href=\"?page=pmpro-membershiplevels\">Please edit your levels</a>.";
|
71 |
}
|
72 |
|
73 |
if(!empty($msg))
|
79 |
|
80 |
?>
|
81 |
<div class="wrap pmpro_admin">
|
82 |
+
<div class="pmpro_banner">
|
83 |
+
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><img src="<?php echo PMPRO_URL?>/images/PaidMembershipsPro.gif" width="350" height="45" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
|
84 |
+
<div class="pmpro_tagline">Membership Plugin for WordPress</div>
|
85 |
|
86 |
+
<div class="pmpro_meta"><a href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>">Plugin Support</a> | <a href="http://www.paidmembershipspro.com/forums/">User Forum</a> | <strong>Version <?php echo PMPRO_VERSION?></strong></div>
|
87 |
+
</div>
|
88 |
+
<br style="clear:both;" />
|
89 |
|
90 |
<div id="pmpro_notifications">
|
91 |
</div>
|
98 |
});
|
99 |
</script>
|
100 |
|
|
|
|
|
|
|
|
|
|
|
101 |
<h3 class="nav-tab-wrapper">
|
102 |
+
<a href="admin.php?page=pmpro-membershiplevels" class="nav-tab<?php if($view == 'pmpro-membershiplevels') { ?> nav-tab-active<?php } ?>">Membership Levels</a>
|
103 |
+
<a href="admin.php?page=pmpro-pagesettings" class="nav-tab<?php if($view == 'pmpro-pagesettings') { ?> nav-tab-active<?php } ?>">Pages</a>
|
104 |
+
<a href="admin.php?page=pmpro-paymentsettings" class="nav-tab<?php if($view == 'pmpro-paymentsettings') { ?> nav-tab-active<?php } ?>">Payment Gateway & SSL</a>
|
105 |
+
<a href="admin.php?page=pmpro-emailsettings" class="nav-tab<?php if($view == 'pmpro-emailsettings') { ?> nav-tab-active<?php } ?>">Email</a>
|
106 |
+
<a href="admin.php?page=pmpro-advancedsettings" class="nav-tab<?php if($view == 'pmpro-advancedsettings') { ?> nav-tab-active<?php } ?>">Advanced</a>
|
|
|
107 |
</h3>
|
|
adminpages/advancedsettings.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") ||
|
4 |
{
|
5 |
-
die(
|
6 |
}
|
7 |
|
8 |
global $wpdb, $msg, $msgt;
|
@@ -14,7 +14,6 @@
|
|
14 |
pmpro_setOption("nonmembertext");
|
15 |
pmpro_setOption("notloggedintext");
|
16 |
pmpro_setOption("rsstext");
|
17 |
-
pmpro_setOption("filterqueries");
|
18 |
pmpro_setOption("showexcerpts");
|
19 |
pmpro_setOption("hideads");
|
20 |
pmpro_setOption("hideadslevels");
|
@@ -30,24 +29,16 @@
|
|
30 |
|
31 |
//footer link
|
32 |
pmpro_setOption("hide_footer_link");
|
33 |
-
|
34 |
-
// custom settings (added with pmpro_custom_advanced_settings hook)
|
35 |
-
foreach($_REQUEST as $key => $value ) {
|
36 |
-
if (strpos($key, 'custom_') === 0) {
|
37 |
-
pmpro_setOption($key);
|
38 |
-
}
|
39 |
-
}
|
40 |
|
41 |
//assume success
|
42 |
$msg = true;
|
43 |
-
$msgt =
|
44 |
}
|
45 |
|
46 |
$nonmembertext = pmpro_getOption("nonmembertext");
|
47 |
$notloggedintext = pmpro_getOption("notloggedintext");
|
48 |
$rsstext = pmpro_getOption("rsstext");
|
49 |
$hideads = pmpro_getOption("hideads");
|
50 |
-
$filterqueries = pmpro_getOption('filterqueries');
|
51 |
$showexcerpts = pmpro_getOption("showexcerpts");
|
52 |
$hideadslevels = pmpro_getOption("hideadslevels");
|
53 |
|
@@ -65,17 +56,17 @@
|
|
65 |
//default settings
|
66 |
if(!$nonmembertext)
|
67 |
{
|
68 |
-
$nonmembertext =
|
69 |
pmpro_setOption("nonmembertext", $nonmembertext);
|
70 |
}
|
71 |
if(!$notloggedintext)
|
72 |
{
|
73 |
-
$notloggedintext =
|
74 |
pmpro_setOption("notloggedintext", $notloggedintext);
|
75 |
}
|
76 |
if(!$rsstext)
|
77 |
{
|
78 |
-
$rsstext =
|
79 |
pmpro_setOption("rsstext", $rsstext);
|
80 |
}
|
81 |
|
@@ -85,77 +76,66 @@
|
|
85 |
?>
|
86 |
|
87 |
<form action="" method="post" enctype="multipart/form-data">
|
88 |
-
<h2
|
89 |
|
90 |
<table class="form-table">
|
91 |
<tbody>
|
92 |
<tr>
|
93 |
<th scope="row" valign="top">
|
94 |
-
<label for="nonmembertext"
|
95 |
</th>
|
96 |
<td>
|
97 |
<textarea name="nonmembertext" rows="3" cols="80"><?php echo stripslashes($nonmembertext)?></textarea><br />
|
98 |
-
<small class="litegray"
|
99 |
</td>
|
100 |
</tr>
|
101 |
<tr>
|
102 |
<th scope="row" valign="top">
|
103 |
-
<label for="notloggedintext"
|
104 |
</th>
|
105 |
<td>
|
106 |
<textarea name="notloggedintext" rows="3" cols="80"><?php echo stripslashes($notloggedintext)?></textarea><br />
|
107 |
-
<small class="litegray"
|
108 |
</td>
|
109 |
</tr>
|
110 |
<tr>
|
111 |
<th scope="row" valign="top">
|
112 |
-
<label for="rsstext"
|
113 |
</th>
|
114 |
<td>
|
115 |
<textarea name="rsstext" rows="3" cols="80"><?php echo stripslashes($rsstext)?></textarea><br />
|
116 |
-
<small class="litegray"
|
117 |
</td>
|
118 |
</tr>
|
119 |
|
120 |
<tr>
|
121 |
<th scope="row" valign="top">
|
122 |
-
<label for="
|
123 |
</th>
|
124 |
<td>
|
125 |
-
<select id="
|
126 |
-
<option value="0" <?php if(!$
|
127 |
-
<option value="1" <?php if($
|
128 |
</select>
|
129 |
</td>
|
130 |
</tr>
|
131 |
<tr>
|
132 |
-
<th scope="row" valign="top">
|
133 |
-
<label for="showexcerpts"><?php _e('Show Excerpts to Non-Members?', 'pmpro');?></label>
|
134 |
-
</th>
|
135 |
-
<td>
|
136 |
-
<select id="showexcerpts" name="showexcerpts">
|
137 |
-
<option value="0" <?php if(!$showexcerpts) { ?>selected="selected"<?php } ?>><?php _e('No - Hide excerpts.', 'pmpro');?></option>
|
138 |
-
<option value="1" <?php if($showexcerpts == 1) { ?>selected="selected"<?php } ?>><?php _e('Yes - Show excerpts.', 'pmpro');?></option>
|
139 |
-
</select>
|
140 |
-
</td>
|
141 |
-
</tr>
|
142 |
-
<tr>
|
143 |
<th scope="row" valign="top">
|
144 |
<label for="hideads">Hide Ads From Members?</label>
|
145 |
</th>
|
146 |
<td>
|
147 |
<select id="hideads" name="hideads" onchange="pmpro_updateHideAdsTRs();">
|
148 |
-
<option value="0" <?php if(!$hideads) { ?>selected="selected"<?php }
|
149 |
-
<option value="1" <?php if($hideads == 1) { ?>selected="selected"<?php }
|
150 |
-
<option value="2" <?php if($hideads == 2) { ?>selected="selected"<?php }
|
151 |
</select>
|
152 |
</td>
|
153 |
</tr>
|
154 |
<tr id="hideads_explanation" <?php if($hideads < 2) { ?>style="display: none;"<?php } ?>>
|
155 |
<th scope="row" valign="top"> </th>
|
156 |
<td>
|
157 |
-
<p class="top0em"
|
158 |
-
<p
|
159 |
<pre lang="PHP">
|
160 |
if(pmpro_displayAds())
|
161 |
{
|
@@ -166,7 +146,7 @@ if(pmpro_displayAds())
|
|
166 |
</tr>
|
167 |
<tr id="hideadslevels_tr" <?php if($hideads != 2) { ?>style="display: none;"<?php } ?>>
|
168 |
<th scope="row" valign="top">
|
169 |
-
<label for="hideadslevels"
|
170 |
</th>
|
171 |
<td>
|
172 |
<div class="checkbox_box" <?php if(count($levels) > 5) { ?>style="height: 100px; overflow: auto;"<?php } ?>>
|
@@ -200,49 +180,49 @@ if(pmpro_displayAds())
|
|
200 |
<?php if(is_multisite()) { ?>
|
201 |
<tr>
|
202 |
<th scope="row" valign="top">
|
203 |
-
<label for="redirecttosubscription"
|
204 |
</th>
|
205 |
<td>
|
206 |
<select id="redirecttosubscription" name="redirecttosubscription">
|
207 |
-
<option value="0" <?php if(!$redirecttosubscription) { ?>selected="selected"<?php }
|
208 |
-
<option value="1" <?php if($redirecttosubscription == 1) { ?>selected="selected"<?php }
|
209 |
</select>
|
210 |
</td>
|
211 |
</tr>
|
212 |
<?php } ?>
|
213 |
<tr>
|
214 |
<th scope="row" valign="top">
|
215 |
-
<label for="recaptcha"
|
216 |
</th>
|
217 |
<td>
|
218 |
<select id="recaptcha" name="recaptcha" onchange="pmpro_updateRecaptchaTRs();">
|
219 |
-
<option value="0" <?php if(!$recaptcha) { ?>selected="selected"<?php }
|
220 |
-
<option value="1" <?php if($recaptcha == 1) { ?>selected="selected"<?php }
|
221 |
-
<option value="2" <?php if($recaptcha == 2) { ?>selected="selected"<?php }
|
222 |
</select><br />
|
223 |
-
<small
|
224 |
</td>
|
225 |
</tr>
|
226 |
<tr id="recaptcha_tr" <?php if(!$recaptcha) { ?>style="display: none;"<?php } ?>>
|
227 |
<th scope="row" valign="top"> </th>
|
228 |
<td>
|
229 |
-
<label for="recaptcha_publickey"
|
230 |
<input type="text" name="recaptcha_publickey" size="60" value="<?php echo $recaptcha_publickey?>" />
|
231 |
<br /><br />
|
232 |
-
<label for="recaptcha_privatekey"
|
233 |
<input type="text" name="recaptcha_privatekey" size="60" value="<?php echo $recaptcha_privatekey?>" />
|
234 |
</td>
|
235 |
</tr>
|
236 |
<tr>
|
237 |
<th scope="row" valign="top">
|
238 |
-
<label for="tospage"
|
239 |
</th>
|
240 |
<td>
|
241 |
<?php
|
242 |
wp_dropdown_pages(array("name"=>"tospage", "show_option_none"=>"No", "selected"=>$tospage));
|
243 |
?>
|
244 |
<br />
|
245 |
-
<small
|
246 |
</td>
|
247 |
</tr>
|
248 |
|
@@ -257,73 +237,9 @@ if(pmpro_displayAds())
|
|
257 |
<option value="1" <?php if($hide_footer_link == 1) { ?>selected="selected"<?php } ?>>Yes - Hide the link.</option>
|
258 |
</select>
|
259 |
</td>
|
260 |
-
</tr>
|
261 |
-
*/
|
262 |
-
|
263 |
-
// Filter to Add More Advanced Settings for Misc Plugin Options, etc.
|
264 |
-
if (has_action('pmpro_custom_advanced_settings')) {
|
265 |
-
$custom_fields = apply_filters('pmpro_custom_advanced_settings', $custom_fields);
|
266 |
-
foreach ($custom_fields as $field) {
|
267 |
-
?>
|
268 |
-
<tr>
|
269 |
-
<th valign="top" scope="row">
|
270 |
-
<label
|
271 |
-
for="<?php _e($field['field_name'], 'pmpro'); ?>"><?php _e($field['label'], 'pmpro'); ?></label>
|
272 |
-
</th>
|
273 |
-
<td>
|
274 |
-
<?php
|
275 |
-
switch ($field['field_type']) {
|
276 |
-
case 'select':
|
277 |
-
?>
|
278 |
-
<select id="<?php _e($field['field_name'], 'pmpro'); ?>"
|
279 |
-
name="<?php _e($field['field_name'], 'pmpro'); ?>">
|
280 |
-
<?php foreach ($field['options'] as $option) {
|
281 |
-
?>
|
282 |
-
<option value="<?php _e($option, 'pmpro'); ?>"
|
283 |
-
<?php
|
284 |
-
if ($option == pmpro_getOption($field['field_name'])) {
|
285 |
-
_e('selected', 'pmpro');
|
286 |
-
}
|
287 |
-
?>
|
288 |
-
><?php _e($option, 'pmpro'); ?></option>
|
289 |
-
<?php
|
290 |
-
} ?>
|
291 |
-
</select>
|
292 |
-
<?php
|
293 |
-
break;
|
294 |
-
case 'text':
|
295 |
-
?>
|
296 |
-
<input id="<?php _e($field['field_name'], 'pmpro'); ?>"
|
297 |
-
name="<?php _e($field['field_name'], 'pmpro'); ?>"
|
298 |
-
type="<?php _e($field['field_type'], 'pmpro'); ?>"
|
299 |
-
value="<?php echo pmpro_getOption($field['field_name']); ?> ">
|
300 |
-
<?php
|
301 |
-
break;
|
302 |
-
case 'textarea':
|
303 |
-
?>
|
304 |
-
<textarea id="<?php _e($field['field_name'], 'pmpro'); ?>"
|
305 |
-
name="<?php _e($field['field_name'], 'pmpro'); ?>">
|
306 |
-
<?php echo pmpro_getOption($field['field_name']); ?>
|
307 |
-
</textarea>
|
308 |
-
<?php
|
309 |
-
break;
|
310 |
-
default:
|
311 |
-
break;
|
312 |
-
}
|
313 |
-
if (!empty($field['description'])) {
|
314 |
-
?>
|
315 |
-
<br>
|
316 |
-
<small><?php _e($field['description'], 'pmpro'); ?></small>
|
317 |
-
<?php
|
318 |
-
}
|
319 |
-
?>
|
320 |
-
</td>
|
321 |
-
<?php
|
322 |
-
}
|
323 |
-
}
|
324 |
-
?>
|
325 |
-
</tr>
|
326 |
-
</tbody>
|
327 |
</table>
|
328 |
<script>
|
329 |
function pmpro_updateHideAdsTRs()
|
@@ -365,7 +281,7 @@ if(pmpro_displayAds())
|
|
365 |
</script>
|
366 |
|
367 |
<p class="submit">
|
368 |
-
<input name="savesettings" type="submit" class="button
|
369 |
</p>
|
370 |
</form>
|
371 |
|
1 |
<?php
|
2 |
//only admins can get this
|
3 |
+
if(!function_exists("current_user_can") || !current_user_can("manage_options"))
|
4 |
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
}
|
7 |
|
8 |
global $wpdb, $msg, $msgt;
|
14 |
pmpro_setOption("nonmembertext");
|
15 |
pmpro_setOption("notloggedintext");
|
16 |
pmpro_setOption("rsstext");
|
|
|
17 |
pmpro_setOption("showexcerpts");
|
18 |
pmpro_setOption("hideads");
|
19 |
pmpro_setOption("hideadslevels");
|
29 |
|
30 |
//footer link
|
31 |
pmpro_setOption("hide_footer_link");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
//assume success
|
34 |
$msg = true;
|
35 |
+
$msgt = "Your advanced settings have been updated.";
|
36 |
}
|
37 |
|
38 |
$nonmembertext = pmpro_getOption("nonmembertext");
|
39 |
$notloggedintext = pmpro_getOption("notloggedintext");
|
40 |
$rsstext = pmpro_getOption("rsstext");
|
41 |
$hideads = pmpro_getOption("hideads");
|
|
|
42 |
$showexcerpts = pmpro_getOption("showexcerpts");
|
43 |
$hideadslevels = pmpro_getOption("hideadslevels");
|
44 |
|
56 |
//default settings
|
57 |
if(!$nonmembertext)
|
58 |
{
|
59 |
+
$nonmembertext = "This content is for !!levels!! members only. <a href=\"" . wp_login_url() . "?action=register\">Register here</a>.";
|
60 |
pmpro_setOption("nonmembertext", $nonmembertext);
|
61 |
}
|
62 |
if(!$notloggedintext)
|
63 |
{
|
64 |
+
$notloggedintext = "Please <a href=\"" . wp_login_url( get_permalink() ) . "\">login</a> to view this content. (<a href=\"" . wp_login_url() . "?action=register\">Register here</a>.)";
|
65 |
pmpro_setOption("notloggedintext", $notloggedintext);
|
66 |
}
|
67 |
if(!$rsstext)
|
68 |
{
|
69 |
+
$rsstext = "This content is for members only. Visit the site and log in/register to read.";
|
70 |
pmpro_setOption("rsstext", $rsstext);
|
71 |
}
|
72 |
|
76 |
?>
|
77 |
|
78 |
<form action="" method="post" enctype="multipart/form-data">
|
79 |
+
<h2>Advanced Settings</h2>
|
80 |
|
81 |
<table class="form-table">
|
82 |
<tbody>
|
83 |
<tr>
|
84 |
<th scope="row" valign="top">
|
85 |
+
<label for="nonmembertext">Message for Logged-in Non-members:</label>
|
86 |
</th>
|
87 |
<td>
|
88 |
<textarea name="nonmembertext" rows="3" cols="80"><?php echo stripslashes($nonmembertext)?></textarea><br />
|
89 |
+
<small class="litegray">This message replaces the post content for non-members. Available variables: !!levels!!, !!referrer!!</small>
|
90 |
</td>
|
91 |
</tr>
|
92 |
<tr>
|
93 |
<th scope="row" valign="top">
|
94 |
+
<label for="notloggedintext">Message for Logged-out Users:</label>
|
95 |
</th>
|
96 |
<td>
|
97 |
<textarea name="notloggedintext" rows="3" cols="80"><?php echo stripslashes($notloggedintext)?></textarea><br />
|
98 |
+
<small class="litegray">This message replaces the post content for logged-out visitors.</small>
|
99 |
</td>
|
100 |
</tr>
|
101 |
<tr>
|
102 |
<th scope="row" valign="top">
|
103 |
+
<label for="rsstext">Message for RSS Feed:</label>
|
104 |
</th>
|
105 |
<td>
|
106 |
<textarea name="rsstext" rows="3" cols="80"><?php echo stripslashes($rsstext)?></textarea><br />
|
107 |
+
<small class="litegray">This message replaces the post content in RSS feeds.</small>
|
108 |
</td>
|
109 |
</tr>
|
110 |
|
111 |
<tr>
|
112 |
<th scope="row" valign="top">
|
113 |
+
<label for="showexcerpts">Show Excerpts to Non-Members?</label>
|
114 |
</th>
|
115 |
<td>
|
116 |
+
<select id="showexcerpts" name="showexcerpts">
|
117 |
+
<option value="0" <?php if(!$showexcerpts) { ?>selected="selected"<?php } ?>>No - Hide excerpts.</option>
|
118 |
+
<option value="1" <?php if($showexcerpts == 1) { ?>selected="selected"<?php } ?>>Yes - Show excerpts.</option>
|
119 |
</select>
|
120 |
</td>
|
121 |
</tr>
|
122 |
<tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
<th scope="row" valign="top">
|
124 |
<label for="hideads">Hide Ads From Members?</label>
|
125 |
</th>
|
126 |
<td>
|
127 |
<select id="hideads" name="hideads" onchange="pmpro_updateHideAdsTRs();">
|
128 |
+
<option value="0" <?php if(!$hideads) { ?>selected="selected"<?php } ?>>No</option>
|
129 |
+
<option value="1" <?php if($hideads == 1) { ?>selected="selected"<?php } ?>>Hide Ads From All Members</option>
|
130 |
+
<option value="2" <?php if($hideads == 2) { ?>selected="selected"<?php } ?>>Hide Ads From Certain Members</option>
|
131 |
</select>
|
132 |
</td>
|
133 |
</tr>
|
134 |
<tr id="hideads_explanation" <?php if($hideads < 2) { ?>style="display: none;"<?php } ?>>
|
135 |
<th scope="row" valign="top"> </th>
|
136 |
<td>
|
137 |
+
<p class="top0em">Ads from the following plugins will be automatically turned off: <em>Easy Adsense</em>, ...</p>
|
138 |
+
<p>To hide ads in your template code, use code like the following:</p>
|
139 |
<pre lang="PHP">
|
140 |
if(pmpro_displayAds())
|
141 |
{
|
146 |
</tr>
|
147 |
<tr id="hideadslevels_tr" <?php if($hideads != 2) { ?>style="display: none;"<?php } ?>>
|
148 |
<th scope="row" valign="top">
|
149 |
+
<label for="hideadslevels">Choose Levels to Hide Ads From:</label>
|
150 |
</th>
|
151 |
<td>
|
152 |
<div class="checkbox_box" <?php if(count($levels) > 5) { ?>style="height: 100px; overflow: auto;"<?php } ?>>
|
180 |
<?php if(is_multisite()) { ?>
|
181 |
<tr>
|
182 |
<th scope="row" valign="top">
|
183 |
+
<label for="redirecttosubscription">Redirect all traffic from registration page to /susbcription/?: <em>(multisite only)</em></label>
|
184 |
</th>
|
185 |
<td>
|
186 |
<select id="redirecttosubscription" name="redirecttosubscription">
|
187 |
+
<option value="0" <?php if(!$redirecttosubscription) { ?>selected="selected"<?php } ?>>No</option>
|
188 |
+
<option value="1" <?php if($redirecttosubscription == 1) { ?>selected="selected"<?php } ?>>Yes</option>
|
189 |
</select>
|
190 |
</td>
|
191 |
</tr>
|
192 |
<?php } ?>
|
193 |
<tr>
|
194 |
<th scope="row" valign="top">
|
195 |
+
<label for="recaptcha">Use reCAPTCHA?:</label>
|
196 |
</th>
|
197 |
<td>
|
198 |
<select id="recaptcha" name="recaptcha" onchange="pmpro_updateRecaptchaTRs();">
|
199 |
+
<option value="0" <?php if(!$recaptcha) { ?>selected="selected"<?php } ?>>No</option>
|
200 |
+
<option value="1" <?php if($recaptcha == 1) { ?>selected="selected"<?php } ?>>Yes - Free memberships only.</option>
|
201 |
+
<option value="2" <?php if($recaptcha == 2) { ?>selected="selected"<?php } ?>>Yes - All memberships.</option>
|
202 |
</select><br />
|
203 |
+
<small>A free reCAPTCHA key is required. <a href="https://www.google.com/recaptcha/admin/create">Click here to signup for reCAPTCHA</a>.</small>
|
204 |
</td>
|
205 |
</tr>
|
206 |
<tr id="recaptcha_tr" <?php if(!$recaptcha) { ?>style="display: none;"<?php } ?>>
|
207 |
<th scope="row" valign="top"> </th>
|
208 |
<td>
|
209 |
+
<label for="recaptcha_publickey">reCAPTCHA Public Key:</label>
|
210 |
<input type="text" name="recaptcha_publickey" size="60" value="<?php echo $recaptcha_publickey?>" />
|
211 |
<br /><br />
|
212 |
+
<label for="recaptcha_privatekey">reCAPTCHA Private Key:</label>
|
213 |
<input type="text" name="recaptcha_privatekey" size="60" value="<?php echo $recaptcha_privatekey?>" />
|
214 |
</td>
|
215 |
</tr>
|
216 |
<tr>
|
217 |
<th scope="row" valign="top">
|
218 |
+
<label for="tospage">Require Terms of Service on signups?</label>
|
219 |
</th>
|
220 |
<td>
|
221 |
<?php
|
222 |
wp_dropdown_pages(array("name"=>"tospage", "show_option_none"=>"No", "selected"=>$tospage));
|
223 |
?>
|
224 |
<br />
|
225 |
+
<small>If yes, create a WordPress page containing your TOS agreement and assign it using the dropdown above.</small>
|
226 |
</td>
|
227 |
</tr>
|
228 |
|
237 |
<option value="1" <?php if($hide_footer_link == 1) { ?>selected="selected"<?php } ?>>Yes - Hide the link.</option>
|
238 |
</select>
|
239 |
</td>
|
240 |
+
</tr>
|
241 |
+
*/ ?>
|
242 |
+
</tbody>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
</table>
|
244 |
<script>
|
245 |
function pmpro_updateHideAdsTRs()
|
281 |
</script>
|
282 |
|
283 |
<p class="submit">
|
284 |
+
<input name="savesettings" type="submit" class="button-primary" value="Save Settings" />
|
285 |
</p>
|
286 |
</form>
|
287 |
|
adminpages/dashboard.php
CHANGED
@@ -105,9 +105,9 @@
|
|
105 |
|
106 |
echo '</ul>';
|
107 |
echo '<br class="clear"/><div style="margin-top:10px;border-top: 1px solid #ddd; padding-top: 10px; text-align:center;">';
|
108 |
-
echo '<a
|
109 |
echo ' ';
|
110 |
-
echo '<a
|
111 |
echo '<form class="alignright" method="post"><input type="hidden" name="pmpro_removedbwidget" value="true"/><input title="Remove this widget from all users dashboards" class="button" type="submit" value="X"/></form>';
|
112 |
echo '</div>';
|
113 |
}
|
105 |
|
106 |
echo '</ul>';
|
107 |
echo '<br class="clear"/><div style="margin-top:10px;border-top: 1px solid #ddd; padding-top: 10px; text-align:center;">';
|
108 |
+
echo '<a href="'.$pmpro_feed.'"><img src="'.get_bloginfo('wpurl').'/wp-includes/images/rss.png" alt=""/> Subscribe with RSS</a>';
|
109 |
echo ' ';
|
110 |
+
echo '<a href="http://www.paidmembershipspro.com/"><img src="'.get_bloginfo('wpurl').'/wp-includes/images/wpmini-blue.png" alt=""/> View Online</a>';
|
111 |
echo '<form class="alignright" method="post"><input type="hidden" name="pmpro_removedbwidget" value="true"/><input title="Remove this widget from all users dashboards" class="button" type="submit" value="X"/></form>';
|
112 |
echo '</div>';
|
113 |
}
|
adminpages/discountcodes.php
CHANGED
@@ -1,636 +1,648 @@
|
|
1 |
-
<?php
|
2 |
-
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_discountcodes")))
|
4 |
-
{
|
5 |
-
die(
|
6 |
-
}
|
7 |
-
|
8 |
-
//vars
|
9 |
-
global $wpdb, $pmpro_currency_symbol;
|
10 |
-
|
11 |
-
if(isset($_REQUEST['edit']))
|
12 |
-
$edit = $_REQUEST['edit'];
|
13 |
-
else
|
14 |
-
$edit = false;
|
15 |
-
|
16 |
-
if(isset($_REQUEST['delete']))
|
17 |
-
$delete = $_REQUEST['delete'];
|
18 |
-
else
|
19 |
-
$delete = false;
|
20 |
-
|
21 |
-
if(isset($_REQUEST['saveid']))
|
22 |
-
$saveid = $_POST['saveid'];
|
23 |
-
else
|
24 |
-
$saveid = false;
|
25 |
-
|
26 |
-
if($saveid)
|
27 |
-
{
|
28 |
-
//get vars
|
29 |
-
$code = $_POST['code'];
|
30 |
-
$starts_month = $_POST['starts_month'];
|
31 |
-
$starts_day = $_POST['starts_day'];
|
32 |
-
$starts_year = $_POST['starts_year'];
|
33 |
-
$expires_month = $_POST['expires_month'];
|
34 |
-
$expires_day = $_POST['expires_day'];
|
35 |
-
$expires_year = $_POST['expires_year'];
|
36 |
-
$uses = $_POST['uses'];
|
37 |
-
|
38 |
-
//fix up dates
|
39 |
-
$starts = date("Y-m-d", strtotime($starts_month . "/" . $starts_day . "/" . $starts_year
|
40 |
-
$expires = date("Y-m-d", strtotime($expires_month . "/" . $expires_day . "/" . $expires_year
|
41 |
-
|
42 |
-
//updating or new?
|
43 |
-
if($saveid > 0)
|
44 |
-
{
|
45 |
-
$sqlQuery = "UPDATE $wpdb->pmpro_discount_codes SET code = '" .
|
46 |
-
if($wpdb->query($sqlQuery) !== false)
|
47 |
-
{
|
48 |
-
$pmpro_msg =
|
49 |
-
$pmpro_msgt = "success";
|
50 |
-
$saved = true;
|
51 |
-
$edit = $saveid;
|
52 |
-
}
|
53 |
-
else
|
54 |
-
{
|
55 |
-
$pmpro_msg =
|
56 |
-
$pmpro_msgt = "error";
|
57 |
-
}
|
58 |
-
}
|
59 |
-
else
|
60 |
-
{
|
61 |
-
$sqlQuery = "INSERT INTO $wpdb->pmpro_discount_codes (code, starts, expires, uses) VALUES('" .
|
62 |
-
if($wpdb->query($sqlQuery) !== false)
|
63 |
-
{
|
64 |
-
$pmpro_msg =
|
65 |
-
$pmpro_msgt = "success";
|
66 |
-
$saved = true;
|
67 |
-
$edit = $wpdb->insert_id;
|
68 |
-
}
|
69 |
-
else
|
70 |
-
{
|
71 |
-
$pmpro_msg =
|
72 |
-
$pmpro_msgt = "error";
|
73 |
-
}
|
74 |
-
}
|
75 |
-
|
76 |
-
//now add the membership level rows
|
77 |
-
if($saved && $edit > 0)
|
78 |
-
{
|
79 |
-
//get the submitted values
|
80 |
-
$all_levels_a = $_REQUEST['all_levels'];
|
81 |
-
if(!empty($_REQUEST['levels']))
|
82 |
-
$levels_a = $_REQUEST['levels'];
|
83 |
-
else
|
84 |
-
$levels_a = array();
|
85 |
-
$initial_payment_a = $_REQUEST['initial_payment'];
|
86 |
-
if(!empty($_REQUEST['recurring']))
|
87 |
-
$recurring_a = $_REQUEST['recurring'];
|
88 |
-
$billing_amount_a = $_REQUEST['billing_amount'];
|
89 |
-
$cycle_number_a = $_REQUEST['cycle_number'];
|
90 |
-
$cycle_period_a = $_REQUEST['cycle_period'];
|
91 |
-
$billing_limit_a = $_REQUEST['billing_limit'];
|
92 |
-
if(!empty($_REQUEST['custom_trial']))
|
93 |
-
$custom_trial_a = $_REQUEST['custom_trial'];
|
94 |
-
$trial_amount_a = $_REQUEST['trial_amount'];
|
95 |
-
$trial_limit_a = $_REQUEST['trial_limit'];
|
96 |
-
if(!empty($_REQUEST['expiration']))
|
97 |
-
$expiration_a = $_REQUEST['expiration'];
|
98 |
-
$expiration_number_a = $_REQUEST['expiration_number'];
|
99 |
-
$expiration_period_a = $_REQUEST['expiration_period'];
|
100 |
-
|
101 |
-
//clear the old rows
|
102 |
-
$sqlQuery = "DELETE FROM $wpdb->pmpro_discount_codes_levels WHERE code_id = '" . $edit . "'";
|
103 |
-
$wpdb->query($sqlQuery);
|
104 |
-
|
105 |
-
//add a row for each checked level
|
106 |
-
if(!empty($levels_a))
|
107 |
-
{
|
108 |
-
foreach($levels_a as $level_id)
|
109 |
-
{
|
110 |
-
//get the values ready
|
111 |
-
$n = array_search($level_id, $all_levels_a); //this is the key location of this level's values
|
112 |
-
$initial_payment = $initial_payment_a[$n];
|
113 |
-
|
114 |
-
//is this recurring?
|
115 |
-
if(!empty($recurring_a))
|
116 |
-
{
|
117 |
-
if(in_array($level_id, $recurring_a))
|
118 |
-
$recurring = 1;
|
119 |
-
else
|
120 |
-
$recurring = 0;
|
121 |
-
}
|
122 |
-
else
|
123 |
-
$recurring = 0;
|
124 |
-
|
125 |
-
if(!empty($recurring))
|
126 |
-
{
|
127 |
-
$billing_amount = $billing_amount_a[$n];
|
128 |
-
$cycle_number = $cycle_number_a[$n];
|
129 |
-
$cycle_period = $cycle_period_a[$n];
|
130 |
-
$billing_limit = $billing_limit_a[$n];
|
131 |
-
|
132 |
-
//custom trial
|
133 |
-
if(!empty($custom_trial_a))
|
134 |
-
{
|
135 |
-
if(in_array($level_id, $custom_trial_a))
|
136 |
-
$custom_trial = 1;
|
137 |
-
else
|
138 |
-
$custom_trial = 0;
|
139 |
-
}
|
140 |
-
else
|
141 |
-
$custom_trial = 0;
|
142 |
-
|
143 |
-
if(!empty($custom_trial))
|
144 |
-
{
|
145 |
-
$trial_amount = $trial_amount_a[$n];
|
146 |
-
$trial_limit = $trial_limit_a[$n];
|
147 |
-
}
|
148 |
-
else
|
149 |
-
{
|
150 |
-
$trial_amount = '';
|
151 |
-
$trial_limit = '';
|
152 |
-
}
|
153 |
-
}
|
154 |
-
else
|
155 |
-
{
|
156 |
-
$billing_amount = '';
|
157 |
-
$cycle_number = '';
|
158 |
-
$cycle_period = 'Month';
|
159 |
-
$billing_limit = '';
|
160 |
-
$custom_trial = 0;
|
161 |
-
$trial_amount = '';
|
162 |
-
$trial_limit = '';
|
163 |
-
}
|
164 |
-
|
165 |
-
if(!empty($expiration_a))
|
166 |
-
{
|
167 |
-
if(in_array($level_id, $expiration_a))
|
168 |
-
$expiration = 1;
|
169 |
-
else
|
170 |
-
$expiration = 0;
|
171 |
-
}
|
172 |
-
else
|
173 |
-
$expiration = 0;
|
174 |
-
|
175 |
-
if(!empty($expiration))
|
176 |
-
{
|
177 |
-
$expiration_number = $expiration_number_a[$n];
|
178 |
-
$expiration_period = $expiration_period_a[$n];
|
179 |
-
}
|
180 |
-
else
|
181 |
-
{
|
182 |
-
$expiration_number = '';
|
183 |
-
$expiration_period = 'Month';
|
184 |
-
}
|
185 |
-
|
186 |
-
//okay, do the insert
|
187 |
-
$sqlQuery = "INSERT INTO $wpdb->pmpro_discount_codes_levels (code_id, level_id, initial_payment, billing_amount, cycle_number, cycle_period, billing_limit, trial_amount, trial_limit, expiration_number, expiration_period) VALUES('" .
|
188 |
-
|
189 |
-
if($wpdb->query($sqlQuery) !== false)
|
190 |
-
{
|
191 |
-
//okay
|
192 |
-
do_action("pmpro_save_discount_code_level", $
|
193 |
-
}
|
194 |
-
else
|
195 |
-
{
|
196 |
-
$level_errors[] =
|
197 |
-
}
|
198 |
-
}
|
199 |
-
}
|
200 |
-
|
201 |
-
//errors?
|
202 |
-
if(!empty($level_errors))
|
203 |
-
{
|
204 |
-
$pmpro_msg =
|
205 |
-
$pmpro_msgt = "error";
|
206 |
-
}
|
207 |
-
else
|
208 |
-
{
|
209 |
-
//all good. set edit = NULL so we go back to the overview page
|
210 |
-
$edit = NULL;
|
211 |
-
|
212 |
-
do_action("pmpro_save_discount_code", $saveid);
|
213 |
-
}
|
214 |
-
}
|
215 |
-
}
|
216 |
-
|
217 |
-
//are we deleting?
|
218 |
-
if(!empty($delete))
|
219 |
-
{
|
220 |
-
//is this a code?
|
221 |
-
$code = $wpdb->get_var("SELECT code FROM $wpdb->pmpro_discount_codes WHERE id = '" . $delete . "' LIMIT 1");
|
222 |
-
if(!empty($code))
|
223 |
-
{
|
224 |
-
//
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
if($edit > 0)
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
if(!empty($code->
|
336 |
-
$
|
337 |
-
else
|
338 |
-
$
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
$
|
343 |
-
|
344 |
-
|
345 |
-
if(!empty($code->
|
346 |
-
$
|
347 |
-
else
|
348 |
-
$
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
<
|
474 |
-
|
475 |
-
<
|
476 |
-
<
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
<
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
<
|
488 |
-
|
489 |
-
<
|
490 |
-
<
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
<?php
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
<th
|
565 |
-
<th
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
</
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
<?php
|
635 |
-
|
636 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//only admins can get this
|
3 |
+
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_discountcodes")))
|
4 |
+
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
+
}
|
7 |
+
|
8 |
+
//vars
|
9 |
+
global $wpdb, $pmpro_currency_symbol;
|
10 |
+
|
11 |
+
if(isset($_REQUEST['edit']))
|
12 |
+
$edit = $_REQUEST['edit'];
|
13 |
+
else
|
14 |
+
$edit = false;
|
15 |
+
|
16 |
+
if(isset($_REQUEST['delete']))
|
17 |
+
$delete = $_REQUEST['delete'];
|
18 |
+
else
|
19 |
+
$delete = false;
|
20 |
+
|
21 |
+
if(isset($_REQUEST['saveid']))
|
22 |
+
$saveid = $_POST['saveid'];
|
23 |
+
else
|
24 |
+
$saveid = false;
|
25 |
+
|
26 |
+
if($saveid)
|
27 |
+
{
|
28 |
+
//get vars
|
29 |
+
$code = $_POST['code'];
|
30 |
+
$starts_month = $_POST['starts_month'];
|
31 |
+
$starts_day = $_POST['starts_day'];
|
32 |
+
$starts_year = $_POST['starts_year'];
|
33 |
+
$expires_month = $_POST['expires_month'];
|
34 |
+
$expires_day = $_POST['expires_day'];
|
35 |
+
$expires_year = $_POST['expires_year'];
|
36 |
+
$uses = $_POST['uses'];
|
37 |
+
|
38 |
+
//fix up dates
|
39 |
+
$starts = date("Y-m-d", strtotime($starts_month . "/" . $starts_day . "/" . $starts_year));
|
40 |
+
$expires = date("Y-m-d", strtotime($expires_month . "/" . $expires_day . "/" . $expires_year));
|
41 |
+
|
42 |
+
//updating or new?
|
43 |
+
if($saveid > 0)
|
44 |
+
{
|
45 |
+
$sqlQuery = "UPDATE $wpdb->pmpro_discount_codes SET code = '" . $wpdb->escape($code) . "', starts = '" . $starts . "', expires = '" . $expires . "', uses = '" . intval($uses) . "' WHERE id = '" . $saveid . "' LIMIT 1";
|
46 |
+
if($wpdb->query($sqlQuery) !== false)
|
47 |
+
{
|
48 |
+
$pmpro_msg = "Discount code updated successfully.";
|
49 |
+
$pmpro_msgt = "success";
|
50 |
+
$saved = true;
|
51 |
+
$edit = $saveid;
|
52 |
+
}
|
53 |
+
else
|
54 |
+
{
|
55 |
+
$pmpro_msg = "Error updating discount code. That code may already be in use.";
|
56 |
+
$pmpro_msgt = "error";
|
57 |
+
}
|
58 |
+
}
|
59 |
+
else
|
60 |
+
{
|
61 |
+
$sqlQuery = "INSERT INTO $wpdb->pmpro_discount_codes (code, starts, expires, uses) VALUES('" . $wpdb->escape($code) . "', '" . $starts . "', '" . $expires . "', '" . intval($uses) . "')";
|
62 |
+
if($wpdb->query($sqlQuery) !== false)
|
63 |
+
{
|
64 |
+
$pmpro_msg = "Discount code added successfully.";
|
65 |
+
$pmpro_msgt = "success";
|
66 |
+
$saved = true;
|
67 |
+
$edit = $wpdb->insert_id;
|
68 |
+
}
|
69 |
+
else
|
70 |
+
{
|
71 |
+
$pmpro_msg = "Error adding discount code. That code may already be in use." . $wpdb->last_error;
|
72 |
+
$pmpro_msgt = "error";
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
//now add the membership level rows
|
77 |
+
if($saved && $edit > 0)
|
78 |
+
{
|
79 |
+
//get the submitted values
|
80 |
+
$all_levels_a = $_REQUEST['all_levels'];
|
81 |
+
if(!empty($_REQUEST['levels']))
|
82 |
+
$levels_a = $_REQUEST['levels'];
|
83 |
+
else
|
84 |
+
$levels_a = array();
|
85 |
+
$initial_payment_a = $_REQUEST['initial_payment'];
|
86 |
+
if(!empty($_REQUEST['recurring']))
|
87 |
+
$recurring_a = $_REQUEST['recurring'];
|
88 |
+
$billing_amount_a = $_REQUEST['billing_amount'];
|
89 |
+
$cycle_number_a = $_REQUEST['cycle_number'];
|
90 |
+
$cycle_period_a = $_REQUEST['cycle_period'];
|
91 |
+
$billing_limit_a = $_REQUEST['billing_limit'];
|
92 |
+
if(!empty($_REQUEST['custom_trial']))
|
93 |
+
$custom_trial_a = $_REQUEST['custom_trial'];
|
94 |
+
$trial_amount_a = $_REQUEST['trial_amount'];
|
95 |
+
$trial_limit_a = $_REQUEST['trial_limit'];
|
96 |
+
if(!empty($_REQUEST['expiration']))
|
97 |
+
$expiration_a = $_REQUEST['expiration'];
|
98 |
+
$expiration_number_a = $_REQUEST['expiration_number'];
|
99 |
+
$expiration_period_a = $_REQUEST['expiration_period'];
|
100 |
+
|
101 |
+
//clear the old rows
|
102 |
+
$sqlQuery = "DELETE FROM $wpdb->pmpro_discount_codes_levels WHERE code_id = '" . $edit . "'";
|
103 |
+
$wpdb->query($sqlQuery);
|
104 |
+
|
105 |
+
//add a row for each checked level
|
106 |
+
if(!empty($levels_a))
|
107 |
+
{
|
108 |
+
foreach($levels_a as $level_id)
|
109 |
+
{
|
110 |
+
//get the values ready
|
111 |
+
$n = array_search($level_id, $all_levels_a); //this is the key location of this level's values
|
112 |
+
$initial_payment = $initial_payment_a[$n];
|
113 |
+
|
114 |
+
//is this recurring?
|
115 |
+
if(!empty($recurring_a))
|
116 |
+
{
|
117 |
+
if(in_array($level_id, $recurring_a))
|
118 |
+
$recurring = 1;
|
119 |
+
else
|
120 |
+
$recurring = 0;
|
121 |
+
}
|
122 |
+
else
|
123 |
+
$recurring = 0;
|
124 |
+
|
125 |
+
if(!empty($recurring))
|
126 |
+
{
|
127 |
+
$billing_amount = $billing_amount_a[$n];
|
128 |
+
$cycle_number = $cycle_number_a[$n];
|
129 |
+
$cycle_period = $cycle_period_a[$n];
|
130 |
+
$billing_limit = $billing_limit_a[$n];
|
131 |
+
|
132 |
+
//custom trial
|
133 |
+
if(!empty($custom_trial_a))
|
134 |
+
{
|
135 |
+
if(in_array($level_id, $custom_trial_a))
|
136 |
+
$custom_trial = 1;
|
137 |
+
else
|
138 |
+
$custom_trial = 0;
|
139 |
+
}
|
140 |
+
else
|
141 |
+
$custom_trial = 0;
|
142 |
+
|
143 |
+
if(!empty($custom_trial))
|
144 |
+
{
|
145 |
+
$trial_amount = $trial_amount_a[$n];
|
146 |
+
$trial_limit = $trial_limit_a[$n];
|
147 |
+
}
|
148 |
+
else
|
149 |
+
{
|
150 |
+
$trial_amount = '';
|
151 |
+
$trial_limit = '';
|
152 |
+
}
|
153 |
+
}
|
154 |
+
else
|
155 |
+
{
|
156 |
+
$billing_amount = '';
|
157 |
+
$cycle_number = '';
|
158 |
+
$cycle_period = 'Month';
|
159 |
+
$billing_limit = '';
|
160 |
+
$custom_trial = 0;
|
161 |
+
$trial_amount = '';
|
162 |
+
$trial_limit = '';
|
163 |
+
}
|
164 |
+
|
165 |
+
if(!empty($expiration_a))
|
166 |
+
{
|
167 |
+
if(in_array($level_id, $expiration_a))
|
168 |
+
$expiration = 1;
|
169 |
+
else
|
170 |
+
$expiration = 0;
|
171 |
+
}
|
172 |
+
else
|
173 |
+
$expiration = 0;
|
174 |
+
|
175 |
+
if(!empty($expiration))
|
176 |
+
{
|
177 |
+
$expiration_number = $expiration_number_a[$n];
|
178 |
+
$expiration_period = $expiration_period_a[$n];
|
179 |
+
}
|
180 |
+
else
|
181 |
+
{
|
182 |
+
$expiration_number = '';
|
183 |
+
$expiration_period = 'Month';
|
184 |
+
}
|
185 |
+
|
186 |
+
//okay, do the insert
|
187 |
+
$sqlQuery = "INSERT INTO $wpdb->pmpro_discount_codes_levels (code_id, level_id, initial_payment, billing_amount, cycle_number, cycle_period, billing_limit, trial_amount, trial_limit, expiration_number, expiration_period) VALUES('" . $wpdb->escape($edit) . "', '" . $wpdb->escape($level_id) . "', '" . (double)$wpdb->escape($initial_payment) . "', '" . (double)$wpdb->escape($billing_amount) . "', '" . intval($wpdb->escape($cycle_number)) . "', '" . $wpdb->escape($cycle_period) . "', '" . intval($wpdb->escape($billing_limit)) . "', '" . (double)$wpdb->escape($trial_amount) . "', '" . intval($wpdb->escape($trial_limit)) . "', '" . intval($wpdb->escape($expiration_number)) . "', '" . $wpdb->escape($expiration_period) . "')";
|
188 |
+
|
189 |
+
if($wpdb->query($sqlQuery) !== false)
|
190 |
+
{
|
191 |
+
//okay
|
192 |
+
do_action("pmpro_save_discount_code_level", $saveid, $level_id);
|
193 |
+
}
|
194 |
+
else
|
195 |
+
{
|
196 |
+
$level_errors[] = "Error saving values for the " . $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1") . " level.";
|
197 |
+
}
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
//errors?
|
202 |
+
if(!empty($level_errors))
|
203 |
+
{
|
204 |
+
$pmpro_msg = "There were errors updating the level values: " . implode(" ", $level_errors);
|
205 |
+
$pmpro_msgt = "error";
|
206 |
+
}
|
207 |
+
else
|
208 |
+
{
|
209 |
+
//all good. set edit = NULL so we go back to the overview page
|
210 |
+
$edit = NULL;
|
211 |
+
|
212 |
+
do_action("pmpro_save_discount_code", $saveid);
|
213 |
+
}
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
//are we deleting?
|
218 |
+
if(!empty($delete))
|
219 |
+
{
|
220 |
+
//is this a code?
|
221 |
+
$code = $wpdb->get_var("SELECT code FROM $wpdb->pmpro_discount_codes WHERE id = '" . $delete . "' LIMIT 1");
|
222 |
+
if(!empty($code))
|
223 |
+
{
|
224 |
+
//delete the code levels
|
225 |
+
$r1 = $wpdb->query("DELETE FROM $wpdb->pmpro_discount_codes_levels WHERE code_id = '" . $delete . "'");
|
226 |
+
|
227 |
+
if($r1 !== false)
|
228 |
+
{
|
229 |
+
//delete the code
|
230 |
+
$r2 = $wpdb->query("DELETE FROM $wpdb->pmpro_discount_codes WHERE id = '" . $delete . "' LIMIT 1");
|
231 |
+
|
232 |
+
if($r2 !== false)
|
233 |
+
{
|
234 |
+
$pmpro_msg = "Code $code deleted successfully.";
|
235 |
+
$pmpro_msgt = "success";
|
236 |
+
}
|
237 |
+
else
|
238 |
+
{
|
239 |
+
$pmpro_msg = "Error deleting discount code. The code was only partially deleted. Please try again.";
|
240 |
+
$pmpro_msgt = "error";
|
241 |
+
}
|
242 |
+
}
|
243 |
+
else
|
244 |
+
{
|
245 |
+
$pmpro_msg = "Error deleting code. Please try again.";
|
246 |
+
$pmpro_msgt = "error";
|
247 |
+
}
|
248 |
+
}
|
249 |
+
else
|
250 |
+
{
|
251 |
+
$pmpro_msg = "Code not found.";
|
252 |
+
$pmpro_msgt = "error";
|
253 |
+
}
|
254 |
+
}
|
255 |
+
?>
|
256 |
+
<div class="wrap pmpro_admin">
|
257 |
+
<div class="pmpro_banner">
|
258 |
+
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><img src="<?php echo PMPRO_URL?>/images/PaidMembershipsPro.gif" width="350" height="45" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
|
259 |
+
<div class="pmpro_tagline">Membership Plugin for WordPress</div>
|
260 |
+
|
261 |
+
<div class="pmpro_meta"><a href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>">Plugin Support</a> | <a href="http://www.paidmembershipspro.com/forums/">User Forum</a> | <strong>Version <?php echo PMPRO_VERSION?></strong></div>
|
262 |
+
</div>
|
263 |
+
<br style="clear:both;" />
|
264 |
+
|
265 |
+
<?php
|
266 |
+
//include(pmpro_https_filter("http://www.paidmembershipspro.com/notifications/?v=" . PMPRO_VERSION));
|
267 |
+
?>
|
268 |
+
<div id="pmpro_notifications">
|
269 |
+
</div>
|
270 |
+
<script>
|
271 |
+
jQuery.get('<?php echo pmpro_https_filter("http://www.paidmembershipspro.com/notifications/?v=" . PMPRO_VERSION)?>', function(data) {
|
272 |
+
jQuery('#pmpro_notifications').html(data);
|
273 |
+
});
|
274 |
+
</script>
|
275 |
+
|
276 |
+
<?php if($edit) { ?>
|
277 |
+
|
278 |
+
<h2>
|
279 |
+
<?php
|
280 |
+
if($edit > 0)
|
281 |
+
echo "Edit Discount Code";
|
282 |
+
else
|
283 |
+
echo "Add New Discount Code";
|
284 |
+
?>
|
285 |
+
</h2>
|
286 |
+
|
287 |
+
<?php if(!empty($pmpro_msg)) { ?>
|
288 |
+
<div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
|
289 |
+
<?php } ?>
|
290 |
+
|
291 |
+
<div>
|
292 |
+
<?php
|
293 |
+
// get the code...
|
294 |
+
if($edit > 0)
|
295 |
+
{
|
296 |
+
$code = $wpdb->get_row("SELECT *, UNIX_TIMESTAMP(starts) as starts, UNIX_TIMESTAMP(expires) as expires FROM $wpdb->pmpro_discount_codes WHERE id = '" . $edit . "' LIMIT 1", OBJECT);
|
297 |
+
$uses = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $code->id . "'");
|
298 |
+
$levels = $wpdb->get_results("SELECT l.id, l.name, cl.initial_payment, cl.billing_amount, cl.cycle_number, cl.period, cl.billing_limit, cl.trial_amount, cl.trial_limit FROM $wpdb->pmpro_membership_levels l LEFT JOIN $wpdb->pmpro_discount_codes_levels cl ON l.id = cl.level_id WHERE cl.code_id = '" . $code->code . "'");
|
299 |
+
$temp_id = $code->id;
|
300 |
+
}
|
301 |
+
elseif(!empty($copy) && $copy > 0)
|
302 |
+
{
|
303 |
+
$code = $wpdb->get_row("SELECT *, UNIX_TIMESTAMP(starts) as starts, UNIX_TIMESTAMP(expires) as expires FROM $wpdb->pmpro_discount_codes WHERE id = '" . $copy . "' LIMIT 1", OBJECT);
|
304 |
+
$temp_id = $level->id;
|
305 |
+
$level->id = NULL;
|
306 |
+
}
|
307 |
+
|
308 |
+
// didn't find a discount code, let's add a new one...
|
309 |
+
if(empty($code->id)) $edit = -1;
|
310 |
+
|
311 |
+
//defaults for new codes
|
312 |
+
if($edit == -1)
|
313 |
+
{
|
314 |
+
$code = new stdClass();
|
315 |
+
$code->code = pmpro_getDiscountCode();
|
316 |
+
}
|
317 |
+
?>
|
318 |
+
<form action="" method="post">
|
319 |
+
<input name="saveid" type="hidden" value="<?php echo $edit?>" />
|
320 |
+
<table class="form-table">
|
321 |
+
<tbody>
|
322 |
+
<tr>
|
323 |
+
<th scope="row" valign="top"><label>ID:</label></th>
|
324 |
+
<td class="pmpro_lite"><?php if(!empty($code->id)) echo $code->id; else echo "This will be generated when you save.";?></td>
|
325 |
+
</tr>
|
326 |
+
|
327 |
+
<tr>
|
328 |
+
<th scope="row" valign="top"><label for="code">Code:</label></th>
|
329 |
+
<td><input name="code" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($code->code))?>" /></td>
|
330 |
+
</tr>
|
331 |
+
|
332 |
+
<?php
|
333 |
+
//some vars for the dates
|
334 |
+
$current_day = date("j");
|
335 |
+
if(!empty($code->starts))
|
336 |
+
$selected_starts_day = date("j", $code->starts);
|
337 |
+
else
|
338 |
+
$selected_starts_day = $current_day;
|
339 |
+
if(!empty($code->expires))
|
340 |
+
$selected_expires_day = date("j", $code->expires);
|
341 |
+
else
|
342 |
+
$selected_expires_day = $current_day;
|
343 |
+
|
344 |
+
$current_month = date("M");
|
345 |
+
if(!empty($code->starts))
|
346 |
+
$selected_starts_month = date("m", $code->starts);
|
347 |
+
else
|
348 |
+
$selected_starts_month = date("m");
|
349 |
+
if(!empty($code->expires))
|
350 |
+
$selected_expires_month = date("m", $code->expires);
|
351 |
+
else
|
352 |
+
$selected_expires_month = date("m");
|
353 |
+
|
354 |
+
$current_year = date("Y");
|
355 |
+
if(!empty($code->starts))
|
356 |
+
$selected_starts_year = date("Y", $code->starts);
|
357 |
+
else
|
358 |
+
$selected_starts_year = $current_year;
|
359 |
+
if(!empty($code->expires))
|
360 |
+
$selected_expires_year = date("Y", $code->expires);
|
361 |
+
else
|
362 |
+
$selected_expires_year = (int)$current_year + 1;
|
363 |
+
?>
|
364 |
+
|
365 |
+
<tr>
|
366 |
+
<th scope="row" valign="top"><label for="starts">Start Date:</label></th>
|
367 |
+
<td>
|
368 |
+
<select name="starts_month">
|
369 |
+
<?php
|
370 |
+
for($i = 1; $i < 13; $i++)
|
371 |
+
{
|
372 |
+
?>
|
373 |
+
<option value="<?php echo $i?>" <?php if($i == $selected_starts_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $current_year))?></option>
|
374 |
+
<?php
|
375 |
+
}
|
376 |
+
?>
|
377 |
+
</select>
|
378 |
+
<input name="starts_day" type="text" size="2" value="<?php echo $selected_starts_day?>" />
|
379 |
+
<input name="starts_year" type="text" size="4" value="<?php echo $selected_starts_year?>" />
|
380 |
+
</td>
|
381 |
+
</tr>
|
382 |
+
|
383 |
+
<tr>
|
384 |
+
<th scope="row" valign="top"><label for="expires">Expiration Date:</label></th>
|
385 |
+
<td>
|
386 |
+
<select name="expires_month">
|
387 |
+
<?php
|
388 |
+
for($i = 1; $i < 13; $i++)
|
389 |
+
{
|
390 |
+
?>
|
391 |
+
<option value="<?php echo $i?>" <?php if($i == $selected_expires_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $current_year))?></option>
|
392 |
+
<?php
|
393 |
+
}
|
394 |
+
?>
|
395 |
+
</select>
|
396 |
+
<input name="expires_day" type="text" size="2" value="<?php echo $selected_expires_day?>" />
|
397 |
+
<input name="expires_year" type="text" size="4" value="<?php echo $selected_expires_year?>" />
|
398 |
+
</td>
|
399 |
+
</tr>
|
400 |
+
|
401 |
+
<tr>
|
402 |
+
<th scope="row" valign="top"><label for="uses">Uses:</label></th>
|
403 |
+
<td>
|
404 |
+
<input name="uses" type="text" size="10" value="<?php if(!empty($code->uses)) echo str_replace("\"", """, stripslashes($code->uses));?>" />
|
405 |
+
<small class="pmpro_lite">Leave blank for unlimited uses.</small>
|
406 |
+
</td>
|
407 |
+
</tr>
|
408 |
+
|
409 |
+
</tbody>
|
410 |
+
</table>
|
411 |
+
|
412 |
+
<?php do_action("pmpro_discount_code_after_settings"); ?>
|
413 |
+
|
414 |
+
<h3>Which Levels Will This Code Apply To?</h3>
|
415 |
+
|
416 |
+
<div class="pmpro_discount_levels">
|
417 |
+
<?php
|
418 |
+
$levels = $wpdb->get_results("SELECT * FROM $wpdb->pmpro_membership_levels");
|
419 |
+
foreach($levels as $level)
|
420 |
+
{
|
421 |
+
//if this level is already managed for this discount code, use the code values
|
422 |
+
if($edit > 0)
|
423 |
+
{
|
424 |
+
$code_level = $wpdb->get_row("SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id WHERE cl.code_id = '" . $edit . "' AND cl.level_id = '" . $level->id . "' LIMIT 1");
|
425 |
+
if($code_level)
|
426 |
+
{
|
427 |
+
$level = $code_level;
|
428 |
+
$level->checked = true;
|
429 |
+
}
|
430 |
+
else
|
431 |
+
$level_checked = false;
|
432 |
+
}
|
433 |
+
else
|
434 |
+
$level_checked = false;
|
435 |
+
?>
|
436 |
+
<div>
|
437 |
+
<input type="hidden" name="all_levels[]" value="<?php echo $level->id?>" />
|
438 |
+
<input type="checkbox" name="levels[]" value="<?php echo $level->id?>" <?php if(!empty($level->checked)) { ?>checked="checked"<?php } ?> onclick="if(jQuery(this).is(':checked')) jQuery(this).next().show(); else jQuery(this).next().hide();" />
|
439 |
+
<?php echo $level->name?>
|
440 |
+
<div class="pmpro_discount_levels_pricing level_<?php echo $level->id?>" <?php if(empty($level->checked)) { ?>style="display: none;"<?php } ?>>
|
441 |
+
<table class="form-table">
|
442 |
+
<tbody>
|
443 |
+
<tr>
|
444 |
+
<th scope="row" valign="top"><label for="initial_payment">Initial Payment:</label></th>
|
445 |
+
<td><?php echo $pmpro_currency_symbol?><input name="initial_payment[]" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($level->initial_payment))?>" /> <small>The initial amount collected at registration.</small></td>
|
446 |
+
</tr>
|
447 |
+
|
448 |
+
<tr>
|
449 |
+
<th scope="row" valign="top"><label>Recurring Subscription:</label></th>
|
450 |
+
<td><input class="recurring_checkbox" name="recurring[]" type="checkbox" value="<?php echo $level->id?>" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).attr('checked')) { jQuery(this).parent().parent().siblings('.recurring_info').show(); if(!jQuery('#custom_trial_<?php echo $level->id?>').is(':checked')) jQuery(this).parent().parent().siblings('.trial_info').hide();} else jQuery(this).parent().parent().siblings('.recurring_info').hide();" /> <small>Check if this level has a recurring subscription payment.</small></td>
|
451 |
+
</tr>
|
452 |
+
|
453 |
+
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
454 |
+
<th scope="row" valign="top"><label for="billing_amount">Billing Amount:</label></th>
|
455 |
+
<td>
|
456 |
+
<?php echo $pmpro_currency_symbol?><input name="billing_amount[]" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($level->billing_amount))?>" /> <small>per</small>
|
457 |
+
<input name="cycle_number[]" type="text" size="10" value="<?php echo str_replace("\"", """, stripslashes($level->cycle_number))?>" />
|
458 |
+
<select name="cycle_period[]" onchange="updateCyclePeriod();">
|
459 |
+
<?php
|
460 |
+
$cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
|
461 |
+
foreach ( $cycles as $name => $value ) {
|
462 |
+
echo "<option value='$value'";
|
463 |
+
if ( $level->cycle_period == $value ) echo " selected='selected'";
|
464 |
+
echo ">$name</option>";
|
465 |
+
}
|
466 |
+
?>
|
467 |
+
</select>
|
468 |
+
<br /><small>The amount to be billed one cycle after the initial payment.</small>
|
469 |
+
</td>
|
470 |
+
</tr>
|
471 |
+
|
472 |
+
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
473 |
+
<th scope="row" valign="top"><label for="billing_limit">Billing Cycle Limit:</label></th>
|
474 |
+
<td>
|
475 |
+
<input name="billing_limit[]" type="text" size="20" value="<?php echo $level->billing_limit?>" />
|
476 |
+
<br /><small>The <strong>total</strong> number of billing cycles for this level, including the trial period (if applicable). Set to zero if membership is indefinite.</small>
|
477 |
+
</td>
|
478 |
+
</tr>
|
479 |
+
|
480 |
+
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
481 |
+
<th scope="row" valign="top"><label>Custom Trial:</label></th>
|
482 |
+
<td><input id="custom_trial_<?php echo $level->id?>" name="custom_trial[]" type="checkbox" value="<?php echo $level->id?>" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).attr('checked')) jQuery(this).parent().parent().siblings('.trial_info').show(); else jQuery(this).parent().parent().siblings('.trial_info').hide();" /> Check to add a custom trial period.</td>
|
483 |
+
</tr>
|
484 |
+
|
485 |
+
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
486 |
+
<th scope="row" valign="top"><label for="trial_amount">Trial Billing Amount:</label></th>
|
487 |
+
<td>
|
488 |
+
<?php echo $pmpro_currency_symbol?><input name="trial_amount[]" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($level->trial_amount))?>" />
|
489 |
+
<small>for the first</small>
|
490 |
+
<input name="trial_limit[]" type="text" size="10" value="<?php echo str_replace("\"", """, stripslashes($level->trial_limit))?>" />
|
491 |
+
<small>subscription payments.</small>
|
492 |
+
</td>
|
493 |
+
</tr>
|
494 |
+
|
495 |
+
<tr>
|
496 |
+
<th scope="row" valign="top"><label>Membership Expiration:</label></th>
|
497 |
+
<td><input id="expiration" name="expiration[]" type="checkbox" value="<?php echo $level->id?>" <?php if(pmpro_isLevelExpiring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).is(':checked')) { jQuery(this).parent().parent().siblings('.expiration_info').show(); } else { jQuery(this).parent().parent().siblings('.expiration_info').hide();}" /> <small>Check this to set an expiration date for new sign ups.</small></td>
|
498 |
+
</tr>
|
499 |
+
|
500 |
+
<tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
|
501 |
+
<th scope="row" valign="top"><label for="billing_amount">Expire In:</label></th>
|
502 |
+
<td>
|
503 |
+
<input id="expiration_number" name="expiration_number[]" type="text" size="10" value="<?php echo str_replace("\"", """, stripslashes($level->expiration_number))?>" />
|
504 |
+
<select id="expiration_period" name="expiration_period[]">
|
505 |
+
<?php
|
506 |
+
$cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
|
507 |
+
foreach ( $cycles as $name => $value ) {
|
508 |
+
echo "<option value='$value'";
|
509 |
+
if ( $level->expiration_period == $value ) echo " selected='selected'";
|
510 |
+
echo ">$name</option>";
|
511 |
+
}
|
512 |
+
?>
|
513 |
+
</select>
|
514 |
+
<br /><small>How long before the expiration expires. Not that any future payments will be canceled when the membership expires.</small>
|
515 |
+
</td>
|
516 |
+
</tr>
|
517 |
+
</tbody>
|
518 |
+
</table>
|
519 |
+
|
520 |
+
<?php do_action("pmpro_discount_code_after_level_settings", $edit, $level); ?>
|
521 |
+
|
522 |
+
</div>
|
523 |
+
</div>
|
524 |
+
<script>
|
525 |
+
|
526 |
+
</script>
|
527 |
+
<?php
|
528 |
+
}
|
529 |
+
?>
|
530 |
+
</div>
|
531 |
+
|
532 |
+
<p class="submit topborder">
|
533 |
+
<input name="save" type="submit" class="button-primary" value="Save Code" />
|
534 |
+
<input name="cancel" type="button" value="Cancel" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-discountcodes')?>';" />
|
535 |
+
</p>
|
536 |
+
</form>
|
537 |
+
</div>
|
538 |
+
|
539 |
+
<?php } else { ?>
|
540 |
+
|
541 |
+
<h2>
|
542 |
+
Memberships Discount Codes
|
543 |
+
<a href="admin.php?page=pmpro-discountcodes&edit=-1" class="button add-new-h2">Add New Discount Code</a>
|
544 |
+
</h2>
|
545 |
+
|
546 |
+
<?php if(!empty($pmpro_msg)) { ?>
|
547 |
+
<div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
|
548 |
+
<?php } ?>
|
549 |
+
|
550 |
+
<form id="posts-filter" method="get" action="">
|
551 |
+
<p class="search-box">
|
552 |
+
<label class="screen-reader-text" for="post-search-input">Search Discount Codes:</label>
|
553 |
+
<input type="hidden" name="page" value="pmpro-discountcodes" />
|
554 |
+
<input id="post-search-input" type="text" value="<?php if(!empty($s)) echo $s;?>" name="s" size="30" />
|
555 |
+
<input class="button" type="submit" value="Search" id="search-submit "/>
|
556 |
+
</p>
|
557 |
+
</form>
|
558 |
+
|
559 |
+
<br class="clear" />
|
560 |
+
|
561 |
+
<table class="widefat">
|
562 |
+
<thead>
|
563 |
+
<tr>
|
564 |
+
<th>ID</th>
|
565 |
+
<th>Code</th>
|
566 |
+
<th>Starts</th>
|
567 |
+
<th>Expires</th>
|
568 |
+
<th>Uses</th>
|
569 |
+
<th>Levels</th>
|
570 |
+
<th></th>
|
571 |
+
<th></th>
|
572 |
+
</tr>
|
573 |
+
</thead>
|
574 |
+
<tbody>
|
575 |
+
<?php
|
576 |
+
$sqlQuery = "SELECT *, UNIX_TIMESTAMP(starts) as starts, UNIX_TIMESTAMP(expires) as expires FROM $wpdb->pmpro_discount_codes ";
|
577 |
+
if(!empty($s))
|
578 |
+
$sqlQuery .= "WHERE code LIKE '%$s%' ";
|
579 |
+
$sqlQuery .= "ORDER BY id ASC";
|
580 |
+
|
581 |
+
$codes = $wpdb->get_results($sqlQuery, OBJECT);
|
582 |
+
|
583 |
+
if(!$codes)
|
584 |
+
{
|
585 |
+
?>
|
586 |
+
<tr><td colspan="7" class="pmpro_pad20">
|
587 |
+
<p>Discount codes allow you to offer your memberships at discounted prices to select customers. <a href="admin.php?page=pmpro-discountcodes&edit=-1">Create your first discount code now</a>.</p>
|
588 |
+
</td></tr>
|
589 |
+
<?php
|
590 |
+
}
|
591 |
+
else
|
592 |
+
{
|
593 |
+
foreach($codes as $code)
|
594 |
+
{
|
595 |
+
?>
|
596 |
+
<tr>
|
597 |
+
<td><?php echo $code->id?></td>
|
598 |
+
<td>
|
599 |
+
<a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php echo $code->code?></a>
|
600 |
+
</td>
|
601 |
+
<td>
|
602 |
+
<?php echo date(get_option('date_format'), $code->starts)?>
|
603 |
+
</td>
|
604 |
+
<td>
|
605 |
+
<?php echo date(get_option('date_format'), $code->expires)?>
|
606 |
+
</td>
|
607 |
+
<td>
|
608 |
+
<?php
|
609 |
+
$uses = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $code->id . "'");
|
610 |
+
if($code->uses > 0)
|
611 |
+
echo "<strong>" . (int)$uses . "</strong>/" . $code->uses;
|
612 |
+
else
|
613 |
+
echo "<strong>" . (int)$uses . "</strong>/unlimited";
|
614 |
+
?>
|
615 |
+
</td>
|
616 |
+
<td>
|
617 |
+
<?php
|
618 |
+
$sqlQuery = "SELECT l.id, l.name FROM $wpdb->pmpro_membership_levels l LEFT JOIN $wpdb->pmpro_discount_codes_levels cl ON l.id = cl.level_id WHERE cl.code_id = '" . $code->id . "'";
|
619 |
+
$levels = $wpdb->get_results($sqlQuery);
|
620 |
+
|
621 |
+
$level_names = array();
|
622 |
+
foreach($levels as $level)
|
623 |
+
$level_names[] = "<a target=\"_blank\" href=\"" . pmpro_url("checkout", "?level=" . $level->id . "&discount_code=" . $code->code) . "\">" . $level->name . "</a>";
|
624 |
+
if($level_names)
|
625 |
+
echo implode(", ", $level_names);
|
626 |
+
else
|
627 |
+
echo "None";
|
628 |
+
?>
|
629 |
+
</td>
|
630 |
+
<td>
|
631 |
+
<a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>">edit</a>
|
632 |
+
</td>
|
633 |
+
<td>
|
634 |
+
<a href="javascript:askfirst('Are you sure you want to delete the <?php echo $code->code?> discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', '?page=pmpro-discountcodes&delete=<?php echo $code->id?>'); void(0);">delete</a>
|
635 |
+
</td>
|
636 |
+
</tr>
|
637 |
+
<?php
|
638 |
+
}
|
639 |
+
}
|
640 |
+
?>
|
641 |
+
</tbody>
|
642 |
+
</table>
|
643 |
+
|
644 |
+
<?php } ?>
|
645 |
+
|
646 |
+
</div>
|
647 |
+
<?php
|
648 |
+
?>
|
adminpages/emailsettings.php
CHANGED
@@ -1,181 +1,152 @@
|
|
1 |
-
<?php
|
2 |
-
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_emailsettings")))
|
4 |
-
{
|
5 |
-
die(
|
6 |
-
}
|
7 |
-
|
8 |
-
global $wpdb, $msg, $msgt;
|
9 |
-
|
10 |
-
//get/set settings
|
11 |
-
global $pmpro_pages;
|
12 |
-
if(!empty($_REQUEST['savesettings']))
|
13 |
-
{
|
14 |
-
//email options
|
15 |
-
pmpro_setOption("from_email");
|
16 |
-
pmpro_setOption("from_name");
|
17 |
-
|
18 |
-
|
19 |
-
pmpro_setOption("
|
20 |
-
pmpro_setOption("
|
21 |
-
pmpro_setOption("
|
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 |
-
</td>
|
154 |
-
</tr>
|
155 |
-
</tbody>
|
156 |
-
</table>
|
157 |
-
|
158 |
-
<h3><?php _e('Send members emails', 'pmpro');?>:</h3>
|
159 |
-
|
160 |
-
<table class="form-table">
|
161 |
-
<tbody>
|
162 |
-
<tr>
|
163 |
-
<th scope="row" valign="top">
|
164 |
-
<label for="email_admin_checkout"><?php _e('New Users', 'pmpro');?>:</label>
|
165 |
-
</th>
|
166 |
-
<td>
|
167 |
-
<input type="checkbox" id="email_member_notification" name="email_member_notification" value="1" <?php if(!empty($email_member_notification)) { ?>checked="checked"<?php } ?> />
|
168 |
-
<?php _e('Default WP notification email. (Recommended: Leave unchecked. Members will still get an email confirmation from PMPro after checkout.)', 'pmpro');?>
|
169 |
-
</td>
|
170 |
-
</tr>
|
171 |
-
</tbody>
|
172 |
-
</table>
|
173 |
-
|
174 |
-
<p class="submit">
|
175 |
-
<input name="savesettings" type="submit" class="button-primary" value="Save Settings" />
|
176 |
-
</p>
|
177 |
-
</form>
|
178 |
-
|
179 |
-
<?php
|
180 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
181 |
-
?>
|
1 |
+
<?php
|
2 |
+
//only admins can get this
|
3 |
+
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_emailsettings")))
|
4 |
+
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
+
}
|
7 |
+
|
8 |
+
global $wpdb, $msg, $msgt;
|
9 |
+
|
10 |
+
//get/set settings
|
11 |
+
global $pmpro_pages;
|
12 |
+
if(!empty($_REQUEST['savesettings']))
|
13 |
+
{
|
14 |
+
//email options
|
15 |
+
pmpro_setOption("from_email");
|
16 |
+
pmpro_setOption("from_name");
|
17 |
+
|
18 |
+
pmpro_setOption("email_admin_checkout");
|
19 |
+
pmpro_setOption("email_admin_changes");
|
20 |
+
pmpro_setOption("email_admin_cancels");
|
21 |
+
pmpro_setOption("email_admin_billing");
|
22 |
+
|
23 |
+
pmpro_setOption("email_member_notification");
|
24 |
+
|
25 |
+
//assume success
|
26 |
+
$msg = true;
|
27 |
+
$msgt = "Your email settings have been updated.";
|
28 |
+
}
|
29 |
+
|
30 |
+
$from_email = pmpro_getOption("from_email");
|
31 |
+
$from_name = pmpro_getOption("from_name");
|
32 |
+
|
33 |
+
$email_admin_checkout = pmpro_getOption("email_admin_checkout");
|
34 |
+
$email_admin_changes = pmpro_getOption("email_admin_changes");
|
35 |
+
$email_admin_cancels = pmpro_getOption("email_admin_cancels");
|
36 |
+
$email_admin_billing = pmpro_getOption("email_admin_billing");
|
37 |
+
|
38 |
+
$email_member_notification = pmpro_getOption("email_member_notification");
|
39 |
+
|
40 |
+
if(empty($from_email))
|
41 |
+
{
|
42 |
+
$parsed = parse_url(home_url());
|
43 |
+
$hostname = $parsed[host];
|
44 |
+
$hostparts = split("\.", $hostname);
|
45 |
+
$email_domain = $hostparts[count($hostparts) - 2] . "." . $hostparts[count($hostparts) - 1];
|
46 |
+
$from_email = "wordpress@" . $email_domain;
|
47 |
+
pmpro_setOption("from_email", $from_email);
|
48 |
+
}
|
49 |
+
|
50 |
+
if(empty($from_name))
|
51 |
+
{
|
52 |
+
$from_name = "WordPress";
|
53 |
+
pmpro_setOption("from_name", $from_name);
|
54 |
+
}
|
55 |
+
|
56 |
+
require_once(dirname(__FILE__) . "/admin_header.php");
|
57 |
+
?>
|
58 |
+
|
59 |
+
<form action="" method="post" enctype="multipart/form-data">
|
60 |
+
<h2>Email Settings</h2>
|
61 |
+
<p>By default, system generated emails are sent from <em><strong>wordpress@yourdomain.com</strong></em>. You can update this from address using the fields below.</p>
|
62 |
+
|
63 |
+
<p>To modify the appearance of system generated emails, add the files <em>email_header.html</em> and <em>email_footer.html</em> to your theme's directory. This will modify both the WordPress default messages as well as messages generated by Paid Memberships Pro. <a title="Paid Memberships Pro - Member Communications" target="_blank" href="http://www.paidmembershipspro.com/support/member-communications/">Click here to learn more about Paid Memberships Pro emails</a>.</p>
|
64 |
+
|
65 |
+
<table class="form-table">
|
66 |
+
<tbody>
|
67 |
+
<tr>
|
68 |
+
<th scope="row" valign="top">
|
69 |
+
<label for="from_email">From Email:</label>
|
70 |
+
</th>
|
71 |
+
<td>
|
72 |
+
<input type="text" name="from_email" size="60" value="<?php echo $from_email?>" />
|
73 |
+
</td>
|
74 |
+
</tr>
|
75 |
+
<tr>
|
76 |
+
<th scope="row" valign="top">
|
77 |
+
<label for="from_name">From Name:</label>
|
78 |
+
</th>
|
79 |
+
<td>
|
80 |
+
<input type="text" name="from_name" size="60" value="<?php echo $from_name?>" />
|
81 |
+
</td>
|
82 |
+
</tr>
|
83 |
+
</tbody>
|
84 |
+
</table>
|
85 |
+
|
86 |
+
<h3>Send the site admin emails:</h3>
|
87 |
+
|
88 |
+
<table class="form-table">
|
89 |
+
<tbody>
|
90 |
+
<tr>
|
91 |
+
<th scope="row" valign="top">
|
92 |
+
<label for="email_admin_checkout">Checkout:</label>
|
93 |
+
</th>
|
94 |
+
<td>
|
95 |
+
<input type="checkbox" id="email_admin_checkout" name="email_admin_checkout" value="1" <?php if(!empty($email_admin_checkout)) { ?>checked="checked"<?php } ?> />
|
96 |
+
when a member checks out.
|
97 |
+
</td>
|
98 |
+
</tr>
|
99 |
+
<tr>
|
100 |
+
<th scope="row" valign="top">
|
101 |
+
<label for="email_admin_changes">Admin Changes:</label>
|
102 |
+
</th>
|
103 |
+
<td>
|
104 |
+
<input type="checkbox" id="email_admin_changes" name="email_admin_changes" value="1" <?php if(!empty($email_admin_changes)) { ?>checked="checked"<?php } ?> />
|
105 |
+
when an admin changes a user's membership level through the dashboard.
|
106 |
+
</td>
|
107 |
+
</tr>
|
108 |
+
<tr>
|
109 |
+
<th scope="row" valign="top">
|
110 |
+
<label for="email_admin_cancels">Cancellation:</label>
|
111 |
+
</th>
|
112 |
+
<td>
|
113 |
+
<input type="checkbox" id="email_admin_cancels" name="email_admin_cancels" value="1" <?php if(!empty($email_admin_cancels)) { ?>checked="checked"<?php } ?> />
|
114 |
+
when a user cancel's his or her account.
|
115 |
+
</td>
|
116 |
+
</tr>
|
117 |
+
<tr>
|
118 |
+
<th scope="row" valign="top">
|
119 |
+
<label for="email_admin_billing">Bill Updates:</label>
|
120 |
+
</th>
|
121 |
+
<td>
|
122 |
+
<input type="checkbox" id="email_admin_billing" name="email_admin_billing" value="1" <?php if(!empty($email_admin_billing)) { ?>checked="checked"<?php } ?> />
|
123 |
+
when a user updates his or her billing information.
|
124 |
+
</td>
|
125 |
+
</tr>
|
126 |
+
</tbody>
|
127 |
+
</table>
|
128 |
+
|
129 |
+
<h3>Send members emails:</h3>
|
130 |
+
|
131 |
+
<table class="form-table">
|
132 |
+
<tbody>
|
133 |
+
<tr>
|
134 |
+
<th scope="row" valign="top">
|
135 |
+
<label for="email_admin_checkout">New Users:</label>
|
136 |
+
</th>
|
137 |
+
<td>
|
138 |
+
<input type="checkbox" id="email_member_notification" name="email_member_notification" value="1" <?php if(!empty($email_member_notification)) { ?>checked="checked"<?php } ?> />
|
139 |
+
Default WP notification email. (Recommended: Leave unchecked. Members will still get an email confirmation from PMPro after checkout.)
|
140 |
+
</td>
|
141 |
+
</tr>
|
142 |
+
</tbody>
|
143 |
+
</table>
|
144 |
+
|
145 |
+
<p class="submit">
|
146 |
+
<input name="savesettings" type="submit" class="button-primary" value="Save Settings" />
|
147 |
+
</p>
|
148 |
+
</form>
|
149 |
+
|
150 |
+
<?php
|
151 |
+
require_once(dirname(__FILE__) . "/admin_footer.php");
|
152 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/functions.php
DELETED
@@ -1,222 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/****************************************************************
|
3 |
-
|
4 |
-
IMPORTANT. PLEASE READ.
|
5 |
-
|
6 |
-
DO NOT EDIT THIS FILE or any other file in the /wp-content/plugins/paid-memberships-pro/ directory.
|
7 |
-
Doing so could break the PMPro plugin and/or keep you from upgrading this plugin in the future.
|
8 |
-
We regularly release updates to the plugin, including important security fixes and new features.
|
9 |
-
You want to be able to upgrade.
|
10 |
-
|
11 |
-
If you were asked to insert code into "your functions.php file", it was meant that you edit the functions.php
|
12 |
-
in the root folder of your active theme. e.g. /wp-content/themes/twentytwelve/functions.php
|
13 |
-
You can also create a custom plugin to place customization code into. Instructions are here:
|
14 |
-
http://www.paidmembershipspro.com/2012/08/create-a-plugin-for-pmpro-customizations/
|
15 |
-
|
16 |
-
Further documentation for customizing Paid Memberships Pro can be found here:
|
17 |
-
http://www.paidmembershipspro.com/documentation/
|
18 |
-
|
19 |
-
****************************************************************/
|
20 |
-
|
21 |
-
/*
|
22 |
-
Checks if PMPro settings are complete or if there are any errors.
|
23 |
-
*/
|
24 |
-
function pmpro_checkLevelForStripeCompatibility($level = NULL)
|
25 |
-
{
|
26 |
-
$gateway = pmpro_getOption("gateway");
|
27 |
-
if($gateway == "stripe")
|
28 |
-
{
|
29 |
-
global $wpdb;
|
30 |
-
|
31 |
-
//check ALL the levels
|
32 |
-
if(empty($level))
|
33 |
-
{
|
34 |
-
$sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ORDER BY id ASC";
|
35 |
-
$levels = $wpdb->get_results($sqlQuery, OBJECT);
|
36 |
-
if(!empty($levels))
|
37 |
-
{
|
38 |
-
foreach($levels as $level)
|
39 |
-
{
|
40 |
-
/*
|
41 |
-
Stripe currently does not support:
|
42 |
-
* Trial Amounts > 0.
|
43 |
-
* Daily billing periods.
|
44 |
-
* Billing Limits.
|
45 |
-
*/
|
46 |
-
if($level->trial_amount > 0 ||
|
47 |
-
($level->cycle_number > 0 && $level->cycle_period == "Day") ||
|
48 |
-
$level->billing_limit > 0)
|
49 |
-
{
|
50 |
-
return false;
|
51 |
-
}
|
52 |
-
}
|
53 |
-
}
|
54 |
-
}
|
55 |
-
else
|
56 |
-
{
|
57 |
-
//need to look it up?
|
58 |
-
if(is_numeric($level))
|
59 |
-
$level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
|
60 |
-
|
61 |
-
//check this level
|
62 |
-
if($level->trial_amount > 0 ||
|
63 |
-
($level->cycle_number > 0 && $level->cycle_period == "Day") ||
|
64 |
-
$level->billing_limit > 0)
|
65 |
-
{
|
66 |
-
return false;
|
67 |
-
}
|
68 |
-
}
|
69 |
-
}
|
70 |
-
|
71 |
-
return true;
|
72 |
-
}
|
73 |
-
|
74 |
-
/*
|
75 |
-
Checks if PMPro settings are complete or if there are any errors.
|
76 |
-
*/
|
77 |
-
function pmpro_checkLevelForPayflowCompatibility($level = NULL)
|
78 |
-
{
|
79 |
-
$gateway = pmpro_getOption("gateway");
|
80 |
-
if($gateway == "payflowpro")
|
81 |
-
{
|
82 |
-
global $wpdb;
|
83 |
-
|
84 |
-
//check ALL the levels
|
85 |
-
if(empty($level))
|
86 |
-
{
|
87 |
-
$sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ORDER BY id ASC";
|
88 |
-
$levels = $wpdb->get_results($sqlQuery, OBJECT);
|
89 |
-
if(!empty($levels))
|
90 |
-
{
|
91 |
-
foreach($levels as $level)
|
92 |
-
{
|
93 |
-
/*
|
94 |
-
Payflow currently does not support:
|
95 |
-
* Trial Amounts > 0.
|
96 |
-
* Daily billing periods.
|
97 |
-
*/
|
98 |
-
|
99 |
-
if($level->trial_amount > 0 ||
|
100 |
-
$level->cycle_number > 1 ||
|
101 |
-
($level->cycle_number == 1 && $level->cycle_period == "Day"))
|
102 |
-
{
|
103 |
-
return false;
|
104 |
-
}
|
105 |
-
}
|
106 |
-
}
|
107 |
-
}
|
108 |
-
else
|
109 |
-
{
|
110 |
-
//need to look it up?
|
111 |
-
if(is_numeric($level))
|
112 |
-
$level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
|
113 |
-
|
114 |
-
//check this level
|
115 |
-
if($level->trial_amount > 0 ||
|
116 |
-
$level->cycle_number > 1 ||
|
117 |
-
($level->cycle_number == 1 && $level->cycle_period == "Day"))
|
118 |
-
{
|
119 |
-
return false;
|
120 |
-
}
|
121 |
-
}
|
122 |
-
}
|
123 |
-
|
124 |
-
return true;
|
125 |
-
}
|
126 |
-
|
127 |
-
/*
|
128 |
-
Checks if PMPro settings are complete or if there are any errors.
|
129 |
-
*/
|
130 |
-
function pmpro_checkLevelForBraintreeCompatibility($level = NULL)
|
131 |
-
{
|
132 |
-
$gateway = pmpro_getOption("gateway");
|
133 |
-
if($gateway == "braintree")
|
134 |
-
{
|
135 |
-
global $wpdb;
|
136 |
-
|
137 |
-
//check ALL the levels
|
138 |
-
if(empty($level))
|
139 |
-
{
|
140 |
-
$sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ORDER BY id ASC";
|
141 |
-
$levels = $wpdb->get_results($sqlQuery, OBJECT);
|
142 |
-
if(!empty($levels))
|
143 |
-
{
|
144 |
-
foreach($levels as $level)
|
145 |
-
{
|
146 |
-
/*
|
147 |
-
Braintree currently does not support:
|
148 |
-
* Trial Amounts > 0.
|
149 |
-
* Daily or Weekly billing periods.
|
150 |
-
*/
|
151 |
-
if($level->trial_amount > 0 ||
|
152 |
-
($level->cycle_number > 0 && ($level->cycle_period == "Day" || $level->cycle_period == "Week")))
|
153 |
-
{
|
154 |
-
return false;
|
155 |
-
}
|
156 |
-
}
|
157 |
-
}
|
158 |
-
}
|
159 |
-
else
|
160 |
-
{
|
161 |
-
//need to look it up?
|
162 |
-
if(is_numeric($level))
|
163 |
-
$level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
|
164 |
-
|
165 |
-
//check this level
|
166 |
-
if($level->trial_amount > 0 ||
|
167 |
-
($level->cycle_number > 0 && ($level->cycle_period == "Day" || $level->cycle_period == "Week")))
|
168 |
-
{
|
169 |
-
return false;
|
170 |
-
}
|
171 |
-
}
|
172 |
-
}
|
173 |
-
|
174 |
-
return true;
|
175 |
-
}
|
176 |
-
|
177 |
-
/*
|
178 |
-
Checks if PMPro settings are complete or if there are any errors.
|
179 |
-
*/
|
180 |
-
function pmpro_checkLevelForTwoCheckoutCompatibility($level = NULL)
|
181 |
-
{
|
182 |
-
$gateway = pmpro_getOption("gateway");
|
183 |
-
if($gateway == "twocheckout")
|
184 |
-
{
|
185 |
-
global $wpdb;
|
186 |
-
|
187 |
-
//check ALL the levels
|
188 |
-
if(empty($level))
|
189 |
-
{
|
190 |
-
$sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ORDER BY id ASC";
|
191 |
-
$levels = $wpdb->get_results($sqlQuery, OBJECT);
|
192 |
-
if(!empty($levels))
|
193 |
-
{
|
194 |
-
foreach($levels as $level)
|
195 |
-
{
|
196 |
-
/*
|
197 |
-
2Checkout currently does not support:
|
198 |
-
* Trial amounts less than or greater than the absolute value of amonthly recurring amount.
|
199 |
-
*/
|
200 |
-
if(pmpro_isLevelTrial($level))
|
201 |
-
{
|
202 |
-
return false;
|
203 |
-
}
|
204 |
-
}
|
205 |
-
}
|
206 |
-
}
|
207 |
-
else
|
208 |
-
{
|
209 |
-
//need to look it up?
|
210 |
-
if(is_numeric($level))
|
211 |
-
$level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
|
212 |
-
|
213 |
-
//check this level
|
214 |
-
if(pmpro_isLevelTrial($level))
|
215 |
-
{
|
216 |
-
return false;
|
217 |
-
}
|
218 |
-
}
|
219 |
-
}
|
220 |
-
|
221 |
-
return true;
|
222 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/membershiplevels.php
CHANGED
@@ -1,588 +1,574 @@
|
|
1 |
-
<?php
|
2 |
-
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_membershiplevels")))
|
4 |
-
{
|
5 |
-
die(
|
6 |
-
}
|
7 |
-
|
8 |
-
global $wpdb, $msg, $msgt, $pmpro_currency_symbol;
|
9 |
-
|
10 |
-
//some vars
|
11 |
-
$gateway = pmpro_getOption("gateway");
|
12 |
-
global $pmpro_stripe_error, $pmpro_braintree_error, $
|
13 |
-
|
14 |
-
if(isset($_REQUEST['edit']))
|
15 |
-
$edit = $_REQUEST['edit'];
|
16 |
-
else
|
17 |
-
$edit = false;
|
18 |
-
if(isset($_REQUEST['copy']))
|
19 |
-
$copy = $_REQUEST['copy'];
|
20 |
-
if(isset($_REQUEST['s']))
|
21 |
-
$s = $_REQUEST['s'];
|
22 |
-
else
|
23 |
-
$s = "";
|
24 |
-
|
25 |
-
if(isset($_REQUEST['action']))
|
26 |
-
$action = $_REQUEST['action'];
|
27 |
-
else
|
28 |
-
$action = false;
|
29 |
-
|
30 |
-
if(isset($_REQUEST['saveandnext']))
|
31 |
-
$saveandnext = $_REQUEST['saveandnext'];
|
32 |
-
|
33 |
-
if(isset($_REQUEST['saveid']))
|
34 |
-
$saveid = $_REQUEST['saveid'];
|
35 |
-
if(isset($_REQUEST['deleteid']))
|
36 |
-
$deleteid = $_REQUEST['deleteid'];
|
37 |
-
|
38 |
-
if($action == "save_membershiplevel")
|
39 |
-
{
|
40 |
-
$ml_name = addslashes($_REQUEST['name']);
|
41 |
-
$ml_description = $_REQUEST['description'];
|
42 |
-
$ml_confirmation = $_REQUEST['confirmation'];
|
43 |
-
$ml_initial_payment = addslashes($_REQUEST['initial_payment']);
|
44 |
-
if(!empty($_REQUEST['recurring']))
|
45 |
-
$ml_recurring = 1;
|
46 |
-
else
|
47 |
-
$ml_recurring = 0;
|
48 |
-
$ml_billing_amount = addslashes($_REQUEST['billing_amount']);
|
49 |
-
$ml_cycle_number = addslashes($_REQUEST['cycle_number']);
|
50 |
-
$ml_cycle_period = addslashes($_REQUEST['cycle_period']);
|
51 |
-
$ml_billing_limit = addslashes($_REQUEST['billing_limit']);
|
52 |
-
if(!empty($_REQUEST['custom_trial']))
|
53 |
-
$ml_custom_trial = 1;
|
54 |
-
else
|
55 |
-
$ml_custom_trial = 0;
|
56 |
-
$ml_trial_amount = addslashes($_REQUEST['trial_amount']);
|
57 |
-
$ml_trial_limit = addslashes($_REQUEST['trial_limit']);
|
58 |
-
if(!empty($_REQUEST['expiration']))
|
59 |
-
$ml_expiration = 1;
|
60 |
-
else
|
61 |
-
$ml_expiration = 0;
|
62 |
-
$ml_expiration_number = addslashes($_REQUEST['expiration_number']);
|
63 |
-
$ml_expiration_period = addslashes($_REQUEST['expiration_period']);
|
64 |
-
$ml_categories = array();
|
65 |
-
|
66 |
-
//reversing disable to allow here
|
67 |
-
if(empty($_REQUEST['disable_signups']))
|
68 |
-
$ml_allow_signups = 1;
|
69 |
-
else
|
70 |
-
$ml_allow_signups = 0;
|
71 |
-
|
72 |
-
foreach ( $_REQUEST as $key => $value )
|
73 |
-
{
|
74 |
-
if ( $value == 'yes' && preg_match( '/^membershipcategory_(\d+)$/i', $key, $matches ) )
|
75 |
-
{
|
76 |
-
$ml_categories[] = $matches[1];
|
77 |
-
}
|
78 |
-
}
|
79 |
-
|
80 |
-
//clearing out values if checkboxes aren't checked
|
81 |
-
if(empty($ml_recurring))
|
82 |
-
{
|
83 |
-
$ml_billing_amount = $ml_cycle_number = $ml_cycle_period = $ml_billing_limit = $ml_trial_amount = $ml_trial_limit = 0;
|
84 |
-
}
|
85 |
-
elseif(empty($ml_custom_trial))
|
86 |
-
{
|
87 |
-
$ml_trial_amount = $ml_trial_limit = 0;
|
88 |
-
}
|
89 |
-
if(empty($ml_expiration))
|
90 |
-
{
|
91 |
-
$ml_expiration_number = $ml_expiration_period = 0;
|
92 |
-
}
|
93 |
-
|
94 |
-
if($saveid > 0)
|
95 |
-
{
|
96 |
-
$sqlQuery = " UPDATE {$wpdb->pmpro_membership_levels}
|
97 |
-
SET name = '" .
|
98 |
-
description = '" .
|
99 |
-
confirmation = '" .
|
100 |
-
initial_payment = '" .
|
101 |
-
billing_amount = '" .
|
102 |
-
cycle_number = '" .
|
103 |
-
cycle_period = '" .
|
104 |
-
billing_limit = '" .
|
105 |
-
trial_amount = '" .
|
106 |
-
trial_limit = '" .
|
107 |
-
expiration_number = '" .
|
108 |
-
expiration_period = '" .
|
109 |
-
allow_signups = '" .
|
110 |
-
WHERE id = '$saveid' LIMIT 1;";
|
111 |
-
$wpdb->query($sqlQuery);
|
112 |
-
|
113 |
-
pmpro_updateMembershipCategories( $saveid, $ml_categories );
|
114 |
-
if(!mysql_errno())
|
115 |
-
{
|
116 |
-
$edit = false;
|
117 |
-
$msg = 2;
|
118 |
-
$msgt =
|
119 |
-
}
|
120 |
-
else
|
121 |
-
{
|
122 |
-
$msg = -2;
|
123 |
-
$msg = true;
|
124 |
-
$msgt =
|
125 |
-
}
|
126 |
-
}
|
127 |
-
else
|
128 |
-
{
|
129 |
-
$sqlQuery = " INSERT INTO {$wpdb->pmpro_membership_levels}
|
130 |
-
( name, description, confirmation, initial_payment, billing_amount, cycle_number, cycle_period, billing_limit, trial_amount, trial_limit, expiration_number, expiration_period, allow_signups)
|
131 |
-
VALUES
|
132 |
-
( '" .
|
133 |
-
$wpdb->query($sqlQuery);
|
134 |
-
if(!mysql_errno())
|
135 |
-
{
|
136 |
-
$saveid = $wpdb->insert_id;
|
137 |
-
pmpro_updateMembershipCategories( $saveid, $ml_categories );
|
138 |
-
|
139 |
-
$edit = false;
|
140 |
-
$msg = 1;
|
141 |
-
$msgt =
|
142 |
-
}
|
143 |
-
else
|
144 |
-
{
|
145 |
-
$msg = -1;
|
146 |
-
$msgt =
|
147 |
-
}
|
148 |
-
}
|
149 |
-
|
150 |
-
do_action("pmpro_save_membership_level", $saveid);
|
151 |
-
}
|
152 |
-
elseif($action == "delete_membership_level")
|
153 |
-
{
|
154 |
-
global $wpdb;
|
155 |
-
|
156 |
-
$ml_id = $_REQUEST['deleteid'];
|
157 |
-
|
158 |
-
if($ml_id > 0)
|
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 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
$
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
echo
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
$level
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
$level =
|
250 |
-
$level->
|
251 |
-
$level->
|
252 |
-
$level->
|
253 |
-
$level->
|
254 |
-
$level->
|
255 |
-
$level->
|
256 |
-
$level->
|
257 |
-
$level->
|
258 |
-
$level->
|
259 |
-
$
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
<
|
282 |
-
<
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
</
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
echo "
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
<?php
|
366 |
-
<br /><strong <?php if(!empty($
|
367 |
-
<?php }
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
<?php
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
<
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
<
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
<
|
502 |
-
<
|
503 |
-
<
|
504 |
-
<
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
<
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
<?php
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
<?php
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
<?php } ?>
|
556 |
-
</td>
|
557 |
-
<td>
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
</tr>
|
576 |
-
<?php
|
577 |
-
}
|
578 |
-
?>
|
579 |
-
</tbody>
|
580 |
-
</table>
|
581 |
-
<?php
|
582 |
-
}
|
583 |
-
?>
|
584 |
-
|
585 |
-
<?php
|
586 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
587 |
-
?>
|
588 |
-
|
1 |
+
<?php
|
2 |
+
//only admins can get this
|
3 |
+
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_membershiplevels")))
|
4 |
+
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
+
}
|
7 |
+
|
8 |
+
global $wpdb, $msg, $msgt, $pmpro_currency_symbol;
|
9 |
+
|
10 |
+
//some vars
|
11 |
+
$gateway = pmpro_getOption("gateway");
|
12 |
+
global $pmpro_stripe_error, $pmpro_braintree_error, $wp_version;
|
13 |
+
|
14 |
+
if(isset($_REQUEST['edit']))
|
15 |
+
$edit = $_REQUEST['edit'];
|
16 |
+
else
|
17 |
+
$edit = false;
|
18 |
+
if(isset($_REQUEST['copy']))
|
19 |
+
$copy = $_REQUEST['copy'];
|
20 |
+
if(isset($_REQUEST['s']))
|
21 |
+
$s = $_REQUEST['s'];
|
22 |
+
else
|
23 |
+
$s = "";
|
24 |
+
|
25 |
+
if(isset($_REQUEST['action']))
|
26 |
+
$action = $_REQUEST['action'];
|
27 |
+
else
|
28 |
+
$action = false;
|
29 |
+
|
30 |
+
if(isset($_REQUEST['saveandnext']))
|
31 |
+
$saveandnext = $_REQUEST['saveandnext'];
|
32 |
+
|
33 |
+
if(isset($_REQUEST['saveid']))
|
34 |
+
$saveid = $_REQUEST['saveid'];
|
35 |
+
if(isset($_REQUEST['deleteid']))
|
36 |
+
$deleteid = $_REQUEST['deleteid'];
|
37 |
+
|
38 |
+
if($action == "save_membershiplevel")
|
39 |
+
{
|
40 |
+
$ml_name = addslashes($_REQUEST['name']);
|
41 |
+
$ml_description = $_REQUEST['description'];
|
42 |
+
$ml_confirmation = $_REQUEST['confirmation'];
|
43 |
+
$ml_initial_payment = addslashes($_REQUEST['initial_payment']);
|
44 |
+
if(!empty($_REQUEST['recurring']))
|
45 |
+
$ml_recurring = 1;
|
46 |
+
else
|
47 |
+
$ml_recurring = 0;
|
48 |
+
$ml_billing_amount = addslashes($_REQUEST['billing_amount']);
|
49 |
+
$ml_cycle_number = addslashes($_REQUEST['cycle_number']);
|
50 |
+
$ml_cycle_period = addslashes($_REQUEST['cycle_period']);
|
51 |
+
$ml_billing_limit = addslashes($_REQUEST['billing_limit']);
|
52 |
+
if(!empty($_REQUEST['custom_trial']))
|
53 |
+
$ml_custom_trial = 1;
|
54 |
+
else
|
55 |
+
$ml_custom_trial = 0;
|
56 |
+
$ml_trial_amount = addslashes($_REQUEST['trial_amount']);
|
57 |
+
$ml_trial_limit = addslashes($_REQUEST['trial_limit']);
|
58 |
+
if(!empty($_REQUEST['expiration']))
|
59 |
+
$ml_expiration = 1;
|
60 |
+
else
|
61 |
+
$ml_expiration = 0;
|
62 |
+
$ml_expiration_number = addslashes($_REQUEST['expiration_number']);
|
63 |
+
$ml_expiration_period = addslashes($_REQUEST['expiration_period']);
|
64 |
+
$ml_categories = array();
|
65 |
+
|
66 |
+
//reversing disable to allow here
|
67 |
+
if(empty($_REQUEST['disable_signups']))
|
68 |
+
$ml_allow_signups = 1;
|
69 |
+
else
|
70 |
+
$ml_allow_signups = 0;
|
71 |
+
|
72 |
+
foreach ( $_REQUEST as $key => $value )
|
73 |
+
{
|
74 |
+
if ( $value == 'yes' && preg_match( '/^membershipcategory_(\d+)$/i', $key, $matches ) )
|
75 |
+
{
|
76 |
+
$ml_categories[] = $matches[1];
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
//clearing out values if checkboxes aren't checked
|
81 |
+
if(empty($ml_recurring))
|
82 |
+
{
|
83 |
+
$ml_billing_amount = $ml_cycle_number = $ml_cycle_period = $ml_billing_limit = $ml_trial_amount = $ml_trial_limit = 0;
|
84 |
+
}
|
85 |
+
elseif(empty($ml_custom_trial))
|
86 |
+
{
|
87 |
+
$ml_trial_amount = $ml_trial_limit = 0;
|
88 |
+
}
|
89 |
+
if(empty($ml_expiration))
|
90 |
+
{
|
91 |
+
$ml_expiration_number = $ml_expiration_period = 0;
|
92 |
+
}
|
93 |
+
|
94 |
+
if($saveid > 0)
|
95 |
+
{
|
96 |
+
$sqlQuery = " UPDATE {$wpdb->pmpro_membership_levels}
|
97 |
+
SET name = '" . $wpdb->escape($ml_name) . "',
|
98 |
+
description = '" . $wpdb->escape($ml_description) . "',
|
99 |
+
confirmation = '" . $wpdb->escape($ml_confirmation) . "',
|
100 |
+
initial_payment = '" . $wpdb->escape($ml_initial_payment) . "',
|
101 |
+
billing_amount = '" . $wpdb->escape($ml_billing_amount) . "',
|
102 |
+
cycle_number = '" . $wpdb->escape($ml_cycle_number) . "',
|
103 |
+
cycle_period = '" . $wpdb->escape($ml_cycle_period) . "',
|
104 |
+
billing_limit = '" . $wpdb->escape($ml_billing_limit) . "',
|
105 |
+
trial_amount = '" . $wpdb->escape($ml_trial_amount) . "',
|
106 |
+
trial_limit = '" . $wpdb->escape($ml_trial_limit) . "',
|
107 |
+
expiration_number = '" . $wpdb->escape($ml_expiration_number) . "',
|
108 |
+
expiration_period = '" . $wpdb->escape($ml_expiration_period) . "',
|
109 |
+
allow_signups = '" . $wpdb->escape($ml_allow_signups) . "'
|
110 |
+
WHERE id = '$saveid' LIMIT 1;";
|
111 |
+
$wpdb->query($sqlQuery);
|
112 |
+
|
113 |
+
pmpro_updateMembershipCategories( $saveid, $ml_categories );
|
114 |
+
if(!mysql_errno())
|
115 |
+
{
|
116 |
+
$edit = false;
|
117 |
+
$msg = 2;
|
118 |
+
$msgt = "Membership level updated successfully.";
|
119 |
+
}
|
120 |
+
else
|
121 |
+
{
|
122 |
+
$msg = -2;
|
123 |
+
$msg = true;
|
124 |
+
$msgt = "Error updating membership level.";
|
125 |
+
}
|
126 |
+
}
|
127 |
+
else
|
128 |
+
{
|
129 |
+
$sqlQuery = " INSERT INTO {$wpdb->pmpro_membership_levels}
|
130 |
+
( name, description, confirmation, initial_payment, billing_amount, cycle_number, cycle_period, billing_limit, trial_amount, trial_limit, expiration_number, expiration_period, allow_signups)
|
131 |
+
VALUES
|
132 |
+
( '" . $wpdb->escape($ml_name) . "', '" . $wpdb->escape($ml_description) . "', '" . $wpdb->escape($ml_confirmation) . "', '" . $wpdb->escape($ml_initial_payment) . "', '" . $wpdb->escape($ml_billing_amount) . "', '" . $wpdb->escape($ml_cycle_number) . "', '" . $wpdb->escape($ml_cycle_period) . "', '" . $wpdb->escape($ml_billing_limit) . "', '" . $wpdb->escape($ml_trial_amount) . "', '" . $wpdb->escape($ml_trial_limit) . "', '" . $wpdb->escape($ml_expiration_number) . "', '" . $wpdb->escape($ml_expiration_period) . "', '" . $wpdb->escape($ml_allow_signups) . "' )";
|
133 |
+
$wpdb->query($sqlQuery);
|
134 |
+
if(!mysql_errno())
|
135 |
+
{
|
136 |
+
$saveid = $wpdb->insert_id;
|
137 |
+
pmpro_updateMembershipCategories( $saveid, $ml_categories );
|
138 |
+
|
139 |
+
$edit = false;
|
140 |
+
$msg = 1;
|
141 |
+
$msgt = "Membership level added successfully.";
|
142 |
+
}
|
143 |
+
else
|
144 |
+
{
|
145 |
+
$msg = -1;
|
146 |
+
$msgt = "Error adding membership level.";
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
do_action("pmpro_save_membership_level", $saveid);
|
151 |
+
}
|
152 |
+
elseif($action == "delete_membership_level")
|
153 |
+
{
|
154 |
+
global $wpdb;
|
155 |
+
|
156 |
+
$ml_id = $_REQUEST['deleteid'];
|
157 |
+
|
158 |
+
if($ml_id > 0)
|
159 |
+
{
|
160 |
+
//remove any categories from the ml
|
161 |
+
$sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_categories WHERE membership_id = '$ml_id'";
|
162 |
+
$r1 = $wpdb->query($sqlQuery);
|
163 |
+
|
164 |
+
//cancel any subscriptions to the ml
|
165 |
+
$r2 = true;
|
166 |
+
$user_ids = $wpdb->get_col("SELECT user_id FROM $wpdb->pmpro_memberships_users WHERE membership_id = '$ml_id'");
|
167 |
+
foreach($user_ids as $user_id)
|
168 |
+
{
|
169 |
+
//change there membership level to none. that will handle the cancel
|
170 |
+
if(pmpro_changeMembershipLevel(0, $user_id))
|
171 |
+
{
|
172 |
+
//okay
|
173 |
+
}
|
174 |
+
else
|
175 |
+
{
|
176 |
+
//couldn't delete the subscription
|
177 |
+
//we should probably notify the admin
|
178 |
+
$pmproemail = new PMProEmail();
|
179 |
+
$pmproemail->data = array("body"=>"<p>There was an error canceling the subscription for user with ID=" . $user_id . ". You will want to check your payment gateway to see if their subscription is still active.</p>");
|
180 |
+
$last_order = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' ORDER BY timestamp DESC LIMIT 1");
|
181 |
+
if($last_order)
|
182 |
+
$pmproemail->data["body"] .= "<p>Last Invoice:<br />" . nl2br(var_export($last_order, true)) . "</p>";
|
183 |
+
$pmproemail->sendEmail(get_bloginfo("admin_email"));
|
184 |
+
|
185 |
+
$r2 = false;
|
186 |
+
}
|
187 |
+
}
|
188 |
+
|
189 |
+
//delete the ml
|
190 |
+
$sqlQuery = "DELETE FROM $wpdb->pmpro_membership_levels WHERE id = '$ml_id' LIMIT 1";
|
191 |
+
$r3 = $wpdb->query($sqlQuery);
|
192 |
+
|
193 |
+
if($r1 !== FALSE && $r2 !== FALSE && $r3 !== FALSE)
|
194 |
+
{
|
195 |
+
$msg = 3;
|
196 |
+
$msgt = "Membership level deleted successfully.";
|
197 |
+
}
|
198 |
+
else
|
199 |
+
{
|
200 |
+
$msg = -3;
|
201 |
+
$msgt = "Error deleting membership level.";
|
202 |
+
}
|
203 |
+
}
|
204 |
+
else
|
205 |
+
{
|
206 |
+
$msg = -3;
|
207 |
+
$msgt = "Error deleting membership level.";
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
require_once(dirname(__FILE__) . "/admin_header.php");
|
212 |
+
?>
|
213 |
+
|
214 |
+
<?php
|
215 |
+
if($edit)
|
216 |
+
{
|
217 |
+
?>
|
218 |
+
|
219 |
+
<h2>
|
220 |
+
<?php
|
221 |
+
if($edit > 0)
|
222 |
+
echo "Edit Membership Level";
|
223 |
+
else
|
224 |
+
echo "Add New Membership Level";
|
225 |
+
?>
|
226 |
+
</h2>
|
227 |
+
|
228 |
+
<div>
|
229 |
+
<?php
|
230 |
+
// get the level...
|
231 |
+
if(!empty($edit) && $edit > 0)
|
232 |
+
{
|
233 |
+
$level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '$edit' LIMIT 1", OBJECT);
|
234 |
+
$temp_id = $level->id;
|
235 |
+
}
|
236 |
+
elseif(!empty($copy) && $copy > 0)
|
237 |
+
{
|
238 |
+
$level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '$copy' LIMIT 1", OBJECT);
|
239 |
+
$temp_id = $level->id;
|
240 |
+
$level->id = NULL;
|
241 |
+
}
|
242 |
+
else
|
243 |
+
|
244 |
+
// didn't find a membership level, let's add a new one...
|
245 |
+
if(empty($level))
|
246 |
+
{
|
247 |
+
$level = new stdClass();
|
248 |
+
$level->id = NULL;
|
249 |
+
$level->name = NULL;
|
250 |
+
$level->description = NULL;
|
251 |
+
$level->confirmation = NULL;
|
252 |
+
$level->billing_amount = NULL;
|
253 |
+
$level->trial_amount = NULL;
|
254 |
+
$level->initial_payment = NULL;
|
255 |
+
$level->billing_limit = NULL;
|
256 |
+
$level->trial_limit = NULL;
|
257 |
+
$level->expiration_number = NULL;
|
258 |
+
$level->expiration_period = NULL;
|
259 |
+
$edit = -1;
|
260 |
+
}
|
261 |
+
|
262 |
+
//defaults for new levels
|
263 |
+
if(empty($copy) && $edit == -1)
|
264 |
+
{
|
265 |
+
$level->cycle_number = 1;
|
266 |
+
$level->cycle_period = "Month";
|
267 |
+
}
|
268 |
+
|
269 |
+
// grab the categories for the given level...
|
270 |
+
if(!empty($temp_id))
|
271 |
+
$level->categories = $wpdb->get_col("SELECT c.category_id
|
272 |
+
FROM $wpdb->pmpro_memberships_categories c
|
273 |
+
WHERE c.membership_id = '" . $temp_id . "'");
|
274 |
+
if(empty($level->categories))
|
275 |
+
$level->categories = array();
|
276 |
+
|
277 |
+
?>
|
278 |
+
<form action="" method="post" enctype="multipart/form-data">
|
279 |
+
<input name="saveid" type="hidden" value="<?php echo $edit?>" />
|
280 |
+
<input type="hidden" name="action" value="save_membershiplevel" />
|
281 |
+
<table class="form-table">
|
282 |
+
<tbody>
|
283 |
+
<tr>
|
284 |
+
<th scope="row" valign="top"><label>ID:</label></th>
|
285 |
+
<td>
|
286 |
+
<?php echo $level->id?>
|
287 |
+
</td>
|
288 |
+
</tr>
|
289 |
+
|
290 |
+
<tr>
|
291 |
+
<th scope="row" valign="top"><label for="name">Name:</label></th>
|
292 |
+
<td><input name="name" type="text" size="50" value="<?php echo str_replace("\"", """, stripslashes($level->name))?>" /></td>
|
293 |
+
</tr>
|
294 |
+
|
295 |
+
<tr>
|
296 |
+
<th scope="row" valign="top"><label for="description">Description:</label></th>
|
297 |
+
<td>
|
298 |
+
<div id="poststuff" class="pmpro_description">
|
299 |
+
<?php
|
300 |
+
if(version_compare($wp_version, "3.3") >= 0)
|
301 |
+
wp_editor(stripslashes($level->description), "description", array("textarea_rows"=>5));
|
302 |
+
else
|
303 |
+
{
|
304 |
+
?>
|
305 |
+
<textarea rows="10" cols="80" name="description" id="description"><?php echo stripslashes($level->description)?></textarea>
|
306 |
+
<?php
|
307 |
+
}
|
308 |
+
?>
|
309 |
+
</div>
|
310 |
+
</td>
|
311 |
+
</tr>
|
312 |
+
|
313 |
+
<tr>
|
314 |
+
<th scope="row" valign="top"><label for="confirmation">Confirmation Message:</label></th>
|
315 |
+
<td>
|
316 |
+
<div class="pmpro_confirmation">
|
317 |
+
<?php
|
318 |
+
if(version_compare($wp_version, "3.3") >= 0)
|
319 |
+
wp_editor(stripslashes($level->confirmation), "confirmation", array("textarea_rows"=>5));
|
320 |
+
else
|
321 |
+
{
|
322 |
+
?>
|
323 |
+
<textarea rows="10" cols="80" name="confirmation" id="confirmation"><?php echo stripslashes($level->confirmation)?></textarea>
|
324 |
+
<?php
|
325 |
+
}
|
326 |
+
?>
|
327 |
+
</div>
|
328 |
+
</td>
|
329 |
+
</tr>
|
330 |
+
</tbody>
|
331 |
+
</table>
|
332 |
+
|
333 |
+
<h3 class="topborder">Billing Details</h3>
|
334 |
+
<table class="form-table">
|
335 |
+
<tbody>
|
336 |
+
<tr>
|
337 |
+
<th scope="row" valign="top"><label for="initial_payment">Initial Payment:</label></th>
|
338 |
+
<td><?php echo $pmpro_currency_symbol?><input name="initial_payment" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($level->initial_payment))?>" /> <small>The initial amount collected at registration.</small></td>
|
339 |
+
</tr>
|
340 |
+
|
341 |
+
<tr>
|
342 |
+
<th scope="row" valign="top"><label>Recurring Subscription:</label></th>
|
343 |
+
<td><input id="recurring" name="recurring" type="checkbox" value="yes" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery('#recurring').is(':checked')) { jQuery('.recurring_info').show(); if(jQuery('#custom_trial').is(':checked')) {jQuery('.trial_info').show();} else {jQuery('.trial_info').hide();} } else { jQuery('.recurring_info').hide();}" /> <small>Check if this level has a recurring subscription payment.</small></td>
|
344 |
+
</tr>
|
345 |
+
|
346 |
+
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
347 |
+
<th scope="row" valign="top"><label for="billing_amount">Billing Amount:</label></th>
|
348 |
+
<td>
|
349 |
+
<?php echo $pmpro_currency_symbol?><input name="billing_amount" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($level->billing_amount))?>" /> <small>per</small>
|
350 |
+
<input id="cycle_number" name="cycle_number" type="text" size="10" value="<?php echo str_replace("\"", """, stripslashes($level->cycle_number))?>" />
|
351 |
+
<select id="cycle_period" name="cycle_period">
|
352 |
+
<?php
|
353 |
+
$cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
|
354 |
+
foreach ( $cycles as $name => $value ) {
|
355 |
+
echo "<option value='$value'";
|
356 |
+
if ( $level->cycle_period == $value ) echo " selected='selected'";
|
357 |
+
echo ">$name</option>";
|
358 |
+
}
|
359 |
+
?>
|
360 |
+
</select>
|
361 |
+
<br /><small>
|
362 |
+
The amount to be billed one cycle after the initial payment.
|
363 |
+
<?php if($gateway == "stripe") { ?>
|
364 |
+
<br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>>Stripe integration currently only supports billing periods of "Month" or "Year".
|
365 |
+
<?php } elseif($gateway == "braintree") { ?>
|
366 |
+
<br /><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>>Braintree integration currently only supports billing periods of "Month" or "Year".
|
367 |
+
<?php } ?>
|
368 |
+
</small>
|
369 |
+
<?php if($gateway == "braintree" && $edit < 0) { ?>
|
370 |
+
<p class="pmpro_message"><strong>Note:</strong> After saving this level, make note of the ID and create a "Plan" in your Braintree dashboard with the same settings and the "Plan ID" set to <em>pmpro_#</em>, where # is the level ID.</p>
|
371 |
+
<?php } elseif($gateway == "braintree") { ?>
|
372 |
+
<p class="pmpro_message"><strong>Note:</strong> You will need to create a "Plan" in your Braintree dashboard with the same settings and the "Plan ID" set to <em>pmpro_<?php echo $level->id;?></em>.</p>
|
373 |
+
<?php } ?>
|
374 |
+
</td>
|
375 |
+
</tr>
|
376 |
+
|
377 |
+
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
378 |
+
<th scope="row" valign="top"><label for="billing_limit">Billing Cycle Limit:</label></th>
|
379 |
+
<td>
|
380 |
+
<input name="billing_limit" type="text" size="20" value="<?php echo $level->billing_limit?>" />
|
381 |
+
<br /><small>
|
382 |
+
The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite.
|
383 |
+
<?php if($gateway == "stripe") { ?>
|
384 |
+
<br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>>Stripe integration currently does not support billing limits. You can still set an expiration date below.</strong>
|
385 |
+
<?php } ?>
|
386 |
+
</small>
|
387 |
+
</td>
|
388 |
+
</tr>
|
389 |
+
|
390 |
+
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
391 |
+
<th scope="row" valign="top"><label>Custom Trial:</label></th>
|
392 |
+
<td><input id="custom_trial" name="custom_trial" type="checkbox" value="yes" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="jQuery('.trial_info').toggle();" /> Check to add a custom trial period.</td>
|
393 |
+
</tr>
|
394 |
+
|
395 |
+
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
396 |
+
<th scope="row" valign="top"><label for="trial_amount">Trial Billing Amount:</label></th>
|
397 |
+
<td>
|
398 |
+
<?php echo $pmpro_currency_symbol?><input name="trial_amount" type="text" size="20" value="<?php echo str_replace("\"", """, stripslashes($level->trial_amount))?>" />
|
399 |
+
<small>for the first</small>
|
400 |
+
<input name="trial_limit" type="text" size="10" value="<?php echo str_replace("\"", """, stripslashes($level->trial_limit))?>" />
|
401 |
+
<small>subscription payments.</small>
|
402 |
+
<?php if($gateway == "stripe") { ?>
|
403 |
+
<br /><small>
|
404 |
+
<strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>>Stripe integration currently does not support trial amounts greater than $0.</strong>
|
405 |
+
</small>
|
406 |
+
<?php } elseif($gateway == "braintree") { ?>
|
407 |
+
<br /><small>
|
408 |
+
<strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>>Braintree integration currently does not support trial amounts greater than $0.</strong>
|
409 |
+
</small>
|
410 |
+
<?php } ?>
|
411 |
+
</td>
|
412 |
+
</tr>
|
413 |
+
|
414 |
+
</tbody>
|
415 |
+
</table>
|
416 |
+
<h3 class="topborder">Other Settings</h3>
|
417 |
+
<table class="form-table">
|
418 |
+
<tbody>
|
419 |
+
<tr>
|
420 |
+
<th scope="row" valign="top"><label>Disable New Signups:</label></th>
|
421 |
+
<td><input name="disable_signups" type="checkbox" value="yes" <?php if($level->id && !$level->allow_signups) { ?>checked="checked"<?php } ?> /> Check to hide this level from the membership levels page and disable registration.</td>
|
422 |
+
</tr>
|
423 |
+
|
424 |
+
<tr>
|
425 |
+
<th scope="row" valign="top"><label>Membership Expiration:</label></th>
|
426 |
+
<td><input id="expiration" name="expiration" type="checkbox" value="yes" <?php if(pmpro_isLevelExpiring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery('#expiration').is(':checked')) { jQuery('.expiration_info').show(); } else { jQuery('.expiration_info').hide();}" /> Check this to set an expiration date for new sign ups.</td>
|
427 |
+
</tr>
|
428 |
+
|
429 |
+
<tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
|
430 |
+
<th scope="row" valign="top"><label for="billing_amount">Expires In:</label></th>
|
431 |
+
<td>
|
432 |
+
<input id="expiration_number" name="expiration_number" type="text" size="10" value="<?php echo str_replace("\"", """, stripslashes($level->expiration_number))?>" />
|
433 |
+
<select id="expiration_period" name="expiration_period">
|
434 |
+
<?php
|
435 |
+
$cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
|
436 |
+
foreach ( $cycles as $name => $value ) {
|
437 |
+
echo "<option value='$value'";
|
438 |
+
if ( $level->expiration_period == $value ) echo " selected='selected'";
|
439 |
+
echo ">$name</option>";
|
440 |
+
}
|
441 |
+
?>
|
442 |
+
</select>
|
443 |
+
<br /><small>How long before the expiration expires. Note that any future payments will be canceled when the membership expires.</small>
|
444 |
+
</td>
|
445 |
+
</tr>
|
446 |
+
</tbody>
|
447 |
+
</table>
|
448 |
+
|
449 |
+
<?php do_action("pmpro_membership_level_after_other_settings"); ?>
|
450 |
+
|
451 |
+
<h3 class="topborder">Content Settings</h3>
|
452 |
+
<table class="form-table">
|
453 |
+
<tbody>
|
454 |
+
<tr>
|
455 |
+
<th scope="row" valign="top"><label>Categories:</label></th>
|
456 |
+
<td>
|
457 |
+
<?php
|
458 |
+
$categories = get_categories( array( 'hide_empty' => 0 ) );
|
459 |
+
echo "<ul>";
|
460 |
+
foreach ( $categories as $cat )
|
461 |
+
{
|
462 |
+
$checked = in_array( $cat->term_id, $level->categories ) ? "checked='checked'" : '';
|
463 |
+
echo "<li><input name='membershipcategory_{$cat->term_id}' type='checkbox' value='yes' $checked /> {$cat->name}</li>\n";
|
464 |
+
}
|
465 |
+
echo "</ul>";
|
466 |
+
?>
|
467 |
+
</td>
|
468 |
+
</tr>
|
469 |
+
</tbody>
|
470 |
+
</table>
|
471 |
+
<p class="submit topborder">
|
472 |
+
<input name="save" type="submit" class="button-primary" value="Save Level" />
|
473 |
+
<input name="cancel" type="button" value="Cancel" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-membershiplevels')?>';" />
|
474 |
+
</p>
|
475 |
+
</form>
|
476 |
+
</div>
|
477 |
+
|
478 |
+
<?php
|
479 |
+
}
|
480 |
+
else
|
481 |
+
{
|
482 |
+
?>
|
483 |
+
|
484 |
+
<h2>Membership Levels <a href="admin.php?page=pmpro-membershiplevels&edit=-1" class="button add-new-h2">Add New Level</a></h2>
|
485 |
+
<form id="posts-filter" method="get" action="">
|
486 |
+
<p class="search-box">
|
487 |
+
<label class="screen-reader-text" for="post-search-input">Search Levels:</label>
|
488 |
+
<input type="hidden" name="page" value="pmpro-membershiplevels" />
|
489 |
+
<input id="post-search-input" type="text" value="<?php echo $s?>" name="s" size="30" />
|
490 |
+
<input class="button" type="submit" value="Search Levels" id="search-submit "/>
|
491 |
+
</p>
|
492 |
+
</form>
|
493 |
+
|
494 |
+
<br class="clear" />
|
495 |
+
|
496 |
+
<table class="widefat">
|
497 |
+
<thead>
|
498 |
+
<tr>
|
499 |
+
<th>ID</th>
|
500 |
+
<th>Name</th>
|
501 |
+
<th>Initial Payment</th>
|
502 |
+
<th>Billing Cycle</th>
|
503 |
+
<th>Trial Cycle</th>
|
504 |
+
<th>Expiration</th>
|
505 |
+
<th>Allow Signups</th>
|
506 |
+
<th></th>
|
507 |
+
<th></th>
|
508 |
+
<th></th>
|
509 |
+
</tr>
|
510 |
+
</thead>
|
511 |
+
<tbody>
|
512 |
+
<?php
|
513 |
+
$sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ";
|
514 |
+
if($s)
|
515 |
+
$sqlQuery .= "WHERE name LIKE '%$s%' ";
|
516 |
+
$sqlQuery .= "ORDER BY id ASC";
|
517 |
+
|
518 |
+
$levels = $wpdb->get_results($sqlQuery, OBJECT);
|
519 |
+
|
520 |
+
foreach($levels as $level)
|
521 |
+
{
|
522 |
+
?>
|
523 |
+
<tr class="<?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level)) { ?>pmpro_error<?php } ?>">
|
524 |
+
<td><?php echo $level->id?></td>
|
525 |
+
<td><?php echo $level->name?></td>
|
526 |
+
<td>
|
527 |
+
<?php if(pmpro_isLevelFree($level)) { ?>
|
528 |
+
FREE
|
529 |
+
<?php } else { ?>
|
530 |
+
<?php echo $pmpro_currency_symbol?><?php echo $level->initial_payment?>
|
531 |
+
<?php } ?>
|
532 |
+
</td>
|
533 |
+
<td>
|
534 |
+
<?php if(!pmpro_isLevelRecurring($level)) { ?>
|
535 |
+
--
|
536 |
+
<?php } else { ?>
|
537 |
+
<?php echo $pmpro_currency_symbol?><?php echo $level->billing_amount?> every <?php echo $level->cycle_number.' '.sornot($level->cycle_period,$level->cycle_number)?>
|
538 |
+
|
539 |
+
<?php if($level->billing_limit) { ?>(for <?php echo $level->billing_limit?> <?php echo sornot($level->cycle_period,$level->billing_limit)?>)<?php } ?>
|
540 |
+
|
541 |
+
<?php } ?>
|
542 |
+
</td>
|
543 |
+
<td>
|
544 |
+
<?php if(!pmpro_isLevelTrial($level)) { ?>
|
545 |
+
--
|
546 |
+
<?php } else { ?>
|
547 |
+
<?php echo $pmpro_currency_symbol?><?php echo $level->trial_amount?> for <?php echo $level->trial_limit?> <?php echo sornot("payment",$level->trial_limit)?>
|
548 |
+
<?php } ?>
|
549 |
+
</td>
|
550 |
+
<td>
|
551 |
+
<?php if(!pmpro_isLevelExpiring($level)) { ?>
|
552 |
+
--
|
553 |
+
<?php } else { ?>
|
554 |
+
After <?php echo $level->expiration_number?> <?php echo sornot($level->expiration_period,$level->expiration_number)?>
|
555 |
+
<?php } ?>
|
556 |
+
</td>
|
557 |
+
<td><?php if($level->allow_signups) { ?>Yes<?php } else { ?>No<?php } ?></td>
|
558 |
+
<td align="center"><a href="admin.php?page=pmpro-membershiplevels&edit=<?php echo $level->id?>" class="edit">edit</a></td>
|
559 |
+
<td align="center"><a href="admin.php?page=pmpro-membershiplevels©=<?php echo $level->id?>&edit=-1" class="edit">copy</a></td>
|
560 |
+
<td align="center"><a href="javascript: askfirst('Are you sure you want to delete membership level <?php echo $level->name?>? All subscriptions will be canceled.','admin.php?page=pmpro-membershiplevels&action=delete_membership_level&deleteid=<?php echo $level->id?>'); void(0);" class="delete">delete</a></td>
|
561 |
+
</tr>
|
562 |
+
<?php
|
563 |
+
}
|
564 |
+
?>
|
565 |
+
</tbody>
|
566 |
+
</table>
|
567 |
+
<?php
|
568 |
+
}
|
569 |
+
?>
|
570 |
+
|
571 |
+
<?php
|
572 |
+
require_once(dirname(__FILE__) . "/admin_footer.php");
|
573 |
+
?>
|
574 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/memberslist-csv.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_memberslist_csv")))
|
4 |
{
|
5 |
-
die(
|
6 |
}
|
7 |
|
8 |
global $wpdb;
|
@@ -42,85 +42,26 @@
|
|
42 |
|
43 |
if($s)
|
44 |
{
|
45 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, u.user_login, u.user_nicename, u.user_url, u.user_registered, u.user_status, u.display_name, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id ";
|
46 |
-
|
47 |
-
if($l == "oldmembers")
|
48 |
-
$sqlQuery .= " LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON u.ID = mu2.user_id AND mu2.status = 'active' ";
|
49 |
-
|
50 |
-
$sqlQuery .= " WHERE mu.membership_id > 0 AND (u.user_login LIKE '%" . esc_sql($s) . "%' OR u.user_email LIKE '%" . esc_sql($s) . "%' OR um.meta_value LIKE '%" . esc_sql($s) . "%') ";
|
51 |
|
52 |
-
if($l
|
53 |
-
$sqlQuery .= " AND mu.
|
54 |
-
elseif($l)
|
55 |
-
$sqlQuery .= " AND mu.status = 'active' AND mu.membership_id = '" . esc_sql($l) . "' ";
|
56 |
-
else
|
57 |
-
$sqlQuery .= " AND mu.status = 'active' ";
|
58 |
|
59 |
-
$sqlQuery .= "GROUP BY u.ID ";
|
60 |
-
|
61 |
-
if($l == "oldmembers")
|
62 |
-
$sqlQuery .= "ORDER BY enddate DESC ";
|
63 |
-
else
|
64 |
-
$sqlQuery .= "ORDER BY u.user_registered DESC ";
|
65 |
-
|
66 |
-
if($limit)
|
67 |
-
$sqlQuery .= "LIMIT $start, $limit";
|
68 |
}
|
69 |
else
|
70 |
{
|
71 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, UNIX_TIMESTAMP(mu.enddate) as enddate FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id
|
72 |
-
|
73 |
-
if($l
|
74 |
-
|
75 |
-
|
76 |
-
$sqlQuery .= " WHERE mu.membership_id > 0 ";
|
77 |
-
|
78 |
-
if($l == "oldmembers")
|
79 |
-
$sqlQuery .= " AND mu.status = 'inactive' AND mu2.status IS NULL ";
|
80 |
-
elseif($l)
|
81 |
-
$sqlQuery .= " AND mu.status = 'active' AND mu.membership_id = '" . $l . "' ";
|
82 |
-
else
|
83 |
-
$sqlQuery .= " AND mu.status = 'active' ";
|
84 |
-
|
85 |
-
$sqlQuery .= "GROUP BY u.ID ";
|
86 |
-
|
87 |
-
if($l == "oldmembers")
|
88 |
-
$sqlQuery .= "ORDER BY enddate DESC ";
|
89 |
-
else
|
90 |
-
$sqlQuery .= "ORDER BY u.user_registered DESC ";
|
91 |
-
|
92 |
if($limit)
|
93 |
$sqlQuery .= "LIMIT $start, $limit";
|
94 |
}
|
95 |
-
|
96 |
-
//filter
|
97 |
-
$sqlQuery = apply_filters("pmpro_members_list_sql", $sqlQuery);
|
98 |
|
99 |
-
|
100 |
-
$
|
101 |
-
|
102 |
-
//begin output
|
103 |
-
header("Content-type: text/csv");
|
104 |
-
if($s && $l == "oldmembers")
|
105 |
-
header("Content-Disposition: attachment; filename=members_list_expired_" . sanitize_file_name($s) . ".csv");
|
106 |
-
elseif($s && $l)
|
107 |
-
header("Content-Disposition: attachment; filename=members_list_" . intval($l) . "_level_" . sanitize_file_name($s) . ".csv");
|
108 |
-
elseif($s)
|
109 |
-
header("Content-Disposition: attachment; filename=members_list_" . sanitize_file_name($s) . ".csv");
|
110 |
-
elseif($l == "oldmembers")
|
111 |
-
header("Content-Disposition: attachment; filename=members_list_expired.csv");
|
112 |
-
else
|
113 |
-
header("Content-Disposition: attachment; filename=members_list.csv");
|
114 |
-
|
115 |
-
$heading = "id,username,firstname,lastname,email,billing firstname,billing lastname,address1,address2,city,state,zipcode,country,phone,membership,initial payment,fee,term,discount_code_id,discount_code,joined";
|
116 |
-
|
117 |
-
if($l == "oldmembers")
|
118 |
-
$heading .= ",ended";
|
119 |
-
else
|
120 |
-
$heading .= ",expires";
|
121 |
-
|
122 |
-
$heading = apply_filters("pmpro_members_list_csv_heading", $heading);
|
123 |
-
$csvoutput = $heading;
|
124 |
|
125 |
//these are the meta_keys for the fields (arrays are object, property. so e.g. $theuser->ID)
|
126 |
$default_columns = array(
|
@@ -134,21 +75,16 @@
|
|
134 |
array("metavalues", "pmpro_baddress1"),
|
135 |
array("metavalues", "pmpro_baddress2"),
|
136 |
array("metavalues", "pmpro_bcity"),
|
137 |
-
array("metavalues", "
|
138 |
array("metavalues", "pmpro_bzipcode"),
|
139 |
array("metavalues", "pmpro_bcountry"),
|
140 |
array("metavalues", "pmpro_bphone"),
|
141 |
array("theuser", "membership"),
|
142 |
array("theuser", "initial_payment"),
|
143 |
array("theuser", "billing_amount"),
|
144 |
-
array("theuser", "cycle_period")
|
145 |
-
array("discount_code", "id"),
|
146 |
-
array("discount_code", "code")
|
147 |
//joindate and enddate are handled specifically below
|
148 |
);
|
149 |
-
|
150 |
-
//filter
|
151 |
-
$default_columns = apply_filters("pmpro_members_list_csv_default_columns", $default_columns);
|
152 |
|
153 |
//any extra columns
|
154 |
$extra_columns = apply_filters("pmpro_members_list_csv_extra_columns", array());
|
@@ -162,28 +98,15 @@
|
|
162 |
|
163 |
$csvoutput .= "\n";
|
164 |
|
165 |
-
//output
|
166 |
-
echo $csvoutput;
|
167 |
-
$csvoutput = "";
|
168 |
-
|
169 |
if($theusers)
|
170 |
{
|
171 |
-
foreach($theusers as $
|
172 |
{
|
173 |
-
//MULTI: This query will need to be updated to support multiple levels per user. Should probably just dump multiple rows for each membership.
|
174 |
//get meta
|
175 |
-
|
176 |
-
if($l == "oldmembers")
|
177 |
-
$theuser = $wpdb->get_row("SELECT u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, u.user_login, u.user_nicename, u.user_url, u.user_registered, u.user_status, u.display_name, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id WHERE u.ID = '" . $user_id . "' ORDER BY mu.id DESC LIMIT 1");
|
178 |
-
else
|
179 |
-
$theuser = $wpdb->get_row("SELECT u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, u.user_login, u.user_nicename, u.user_url, u.user_registered, u.user_status, u.display_name, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id AND mu.status = 'active' LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id WHERE u.ID = '" . $user_id . "' LIMIT 1");
|
180 |
-
|
181 |
-
$sqlQuery = "SELECT meta_key as `key`, meta_value as `value` FROM $wpdb->usermeta WHERE $wpdb->usermeta.user_id = '" . $user_id . "'";
|
182 |
$metavalues = pmpro_getMetavalues($sqlQuery);
|
183 |
$theuser->metavalues = $metavalues;
|
184 |
-
|
185 |
-
$discount_code = $wpdb->get_row($sqlQuery);
|
186 |
-
|
187 |
//default columns
|
188 |
if(!empty($default_columns))
|
189 |
{
|
@@ -203,41 +126,41 @@
|
|
203 |
|
204 |
//joindate and enddate
|
205 |
$csvoutput .= "," . pmpro_enclose(date("Y-m-d", $theuser->joindate)) . ",";
|
206 |
-
|
207 |
-
if($theuser->membership_id)
|
208 |
-
{
|
209 |
-
if($theuser->enddate)
|
210 |
-
$csvoutput .= pmpro_enclose(apply_filters("pmpro_memberslist_expires_column", date("Y-m-d", $theuser->enddate), $theuser));
|
211 |
-
else
|
212 |
-
$csvoutput .= pmpro_enclose(apply_filters("pmpro_memberslist_expires_column", "Never", $theuser));
|
213 |
-
}
|
214 |
-
elseif($l == "oldmembers" && $theuser->enddate)
|
215 |
-
{
|
216 |
$csvoutput .= pmpro_enclose(date("Y-m-d", $theuser->enddate));
|
217 |
-
}
|
218 |
else
|
219 |
-
$csvoutput .= "
|
220 |
-
|
221 |
//any extra columns
|
222 |
if(!empty($extra_columns))
|
223 |
{
|
224 |
foreach($extra_columns as $heading => $callback)
|
225 |
{
|
226 |
-
$csvoutput .= "," . pmpro_enclose(call_user_func($callback, $theuser
|
227 |
}
|
228 |
}
|
229 |
|
230 |
$csvoutput .= "\n";
|
231 |
-
|
232 |
-
//output
|
233 |
-
echo $csvoutput;
|
234 |
-
$csvoutput = "";
|
235 |
}
|
236 |
}
|
237 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
print $csvoutput;
|
239 |
|
240 |
function pmpro_enclose($s)
|
241 |
{
|
242 |
return "\"" . str_replace("\"", "\\\"", $s) . "\"";
|
243 |
-
}
|
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_memberslist_csv")))
|
4 |
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
}
|
7 |
|
8 |
global $wpdb;
|
42 |
|
43 |
if($s)
|
44 |
{
|
45 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, u.user_login, u.user_nicename, u.user_url, u.user_registered, u.user_status, u.display_name, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id WHERE mu.status = 'active' AND mu.membership_id > 0 AND (u.user_login LIKE '%" . $wpdb->escape($s) . "%' OR u.user_email LIKE '%" . $wpdb->escape($s) . "%' OR um.meta_value LIKE '%" . $wpdb->escape($s) . "%') ";
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
if($l)
|
48 |
+
$sqlQuery .= " AND mu.membership_id = '" . $wpdb->escape($l) . "' ";
|
|
|
|
|
|
|
|
|
49 |
|
50 |
+
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
}
|
52 |
else
|
53 |
{
|
54 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, u.user_login, u.user_nicename, u.user_url, u.user_registered, u.user_status, u.display_name, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id";
|
55 |
+
$sqlQuery .= " WHERE mu.membership_id > 0 AND mu.status = 'active' ";
|
56 |
+
if($l)
|
57 |
+
$sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
|
58 |
+
$sqlQuery .= "ORDER BY user_registered DESC ";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
if($limit)
|
60 |
$sqlQuery .= "LIMIT $start, $limit";
|
61 |
}
|
|
|
|
|
|
|
62 |
|
63 |
+
$theusers = $wpdb->get_results($sqlQuery);
|
64 |
+
$csvoutput = "id,username,firstname,lastname,email,billing firstname,billing lastname,address1,address2,city,state,zipcode,country,phone,membership,initial payment,fee,term,joined,expires";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
//these are the meta_keys for the fields (arrays are object, property. so e.g. $theuser->ID)
|
67 |
$default_columns = array(
|
75 |
array("metavalues", "pmpro_baddress1"),
|
76 |
array("metavalues", "pmpro_baddress2"),
|
77 |
array("metavalues", "pmpro_bcity"),
|
78 |
+
array("metavalues", "pmpro_bzipcode"),
|
79 |
array("metavalues", "pmpro_bzipcode"),
|
80 |
array("metavalues", "pmpro_bcountry"),
|
81 |
array("metavalues", "pmpro_bphone"),
|
82 |
array("theuser", "membership"),
|
83 |
array("theuser", "initial_payment"),
|
84 |
array("theuser", "billing_amount"),
|
85 |
+
array("theuser", "cycle_period")
|
|
|
|
|
86 |
//joindate and enddate are handled specifically below
|
87 |
);
|
|
|
|
|
|
|
88 |
|
89 |
//any extra columns
|
90 |
$extra_columns = apply_filters("pmpro_members_list_csv_extra_columns", array());
|
98 |
|
99 |
$csvoutput .= "\n";
|
100 |
|
|
|
|
|
|
|
|
|
101 |
if($theusers)
|
102 |
{
|
103 |
+
foreach($theusers as $theuser)
|
104 |
{
|
|
|
105 |
//get meta
|
106 |
+
$sqlQuery = "SELECT meta_key as `key`, meta_value as `value` FROM $wpdb->usermeta WHERE $wpdb->usermeta.user_id = '" . $theuser->ID . "'";
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
$metavalues = pmpro_getMetavalues($sqlQuery);
|
108 |
$theuser->metavalues = $metavalues;
|
109 |
+
|
|
|
|
|
110 |
//default columns
|
111 |
if(!empty($default_columns))
|
112 |
{
|
126 |
|
127 |
//joindate and enddate
|
128 |
$csvoutput .= "," . pmpro_enclose(date("Y-m-d", $theuser->joindate)) . ",";
|
129 |
+
if($theuser->enddate)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
$csvoutput .= pmpro_enclose(date("Y-m-d", $theuser->enddate));
|
|
|
131 |
else
|
132 |
+
$csvoutput .= pmpro_enclose("Never");
|
133 |
+
|
134 |
//any extra columns
|
135 |
if(!empty($extra_columns))
|
136 |
{
|
137 |
foreach($extra_columns as $heading => $callback)
|
138 |
{
|
139 |
+
$csvoutput .= "," . pmpro_enclose(call_user_func($callback, $theuser));
|
140 |
}
|
141 |
}
|
142 |
|
143 |
$csvoutput .= "\n";
|
144 |
+
|
|
|
|
|
|
|
145 |
}
|
146 |
}
|
147 |
+
|
148 |
+
$size_in_bytes = strlen($csvoutput);
|
149 |
+
header("Content-type: text/csv");
|
150 |
+
//header("Content-type: application/vnd.ms-excel");
|
151 |
+
if($s && $l)
|
152 |
+
header("Content-Disposition: attachment; filename=members_list_" . intval($l) . "_level" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
|
153 |
+
elseif($s)
|
154 |
+
header("Content-Disposition: attachment; filename=members_list_" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
|
155 |
+
elseif($l)
|
156 |
+
header("Content-Disposition: attachment; filename=members_list_level" . intval($l) . ".csv; size=$size_in_bytes");
|
157 |
+
else
|
158 |
+
header("Content-Disposition: attachment; filename=members_list.csv; size=$size_in_bytes");
|
159 |
+
|
160 |
print $csvoutput;
|
161 |
|
162 |
function pmpro_enclose($s)
|
163 |
{
|
164 |
return "\"" . str_replace("\"", "\\\"", $s) . "\"";
|
165 |
+
}
|
166 |
+
?>
|
adminpages/memberslist.php
CHANGED
@@ -1,238 +1,205 @@
|
|
1 |
-
<?php
|
2 |
-
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_memberslist")))
|
4 |
-
{
|
5 |
-
die(
|
6 |
-
}
|
7 |
-
|
8 |
-
//vars
|
9 |
-
global $wpdb, $pmpro_currency_symbol;
|
10 |
-
if(isset($_REQUEST['s']))
|
11 |
-
$s = $_REQUEST['s'];
|
12 |
-
else
|
13 |
-
$s = "";
|
14 |
-
|
15 |
-
if(isset($_REQUEST['l']))
|
16 |
-
$l = $_REQUEST['l'];
|
17 |
-
else
|
18 |
-
$l = false;
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
<?php
|
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 |
-
$sqlQuery .= "
|
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 |
-
</td>
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
<td><?php echo date(get_option("date_format"), strtotime($theuser->user_registered, current_time("timestamp")))?></td>
|
207 |
-
<td>
|
208 |
-
<?php
|
209 |
-
if($auser->enddate)
|
210 |
-
echo apply_filters("pmpro_memberslist_expires_column", date(get_option('date_format'), $auser->enddate), $auser);
|
211 |
-
else
|
212 |
-
echo __(apply_filters("pmpro_memberslist_expires_column", "Never", $auser), "pmpro");
|
213 |
-
?>
|
214 |
-
</td>
|
215 |
-
</tr>
|
216 |
-
<?php
|
217 |
-
}
|
218 |
-
|
219 |
-
if(!$theusers)
|
220 |
-
{
|
221 |
-
?>
|
222 |
-
<tr>
|
223 |
-
<td colspan="9"><p><?php _e("No members found.", "pmpro");?> <?php if($l) { ?><a href="?page=pmpro-memberslist&s=<?php echo $s?>"><?php _e("Search all levels", "pmpro");?></a>.<?php } ?></p></td>
|
224 |
-
</tr>
|
225 |
-
<?php
|
226 |
-
}
|
227 |
-
?>
|
228 |
-
</tbody>
|
229 |
-
</table>
|
230 |
-
</form>
|
231 |
-
|
232 |
-
<?php
|
233 |
-
echo pmpro_getPaginationString($pn, $totalrows, $limit, 1, get_admin_url(NULL, "/admin.php?page=pmpro-memberslist&s=" . urlencode($s)), "&l=$l&limit=$limit&pn=");
|
234 |
-
?>
|
235 |
-
|
236 |
-
<?php
|
237 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
238 |
-
?>
|
1 |
+
<?php
|
2 |
+
//only admins can get this
|
3 |
+
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_memberslist")))
|
4 |
+
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
+
}
|
7 |
+
|
8 |
+
//vars
|
9 |
+
global $wpdb, $pmpro_currency_symbol;
|
10 |
+
if(isset($_REQUEST['s']))
|
11 |
+
$s = $_REQUEST['s'];
|
12 |
+
else
|
13 |
+
$s = "";
|
14 |
+
|
15 |
+
if(isset($_REQUEST['l']))
|
16 |
+
$l = $_REQUEST['l'];
|
17 |
+
else
|
18 |
+
$l = false;
|
19 |
+
?>
|
20 |
+
<div class="wrap pmpro_admin">
|
21 |
+
<div class="pmpro_banner">
|
22 |
+
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><img src="<?php echo PMPRO_URL?>/images/PaidMembershipsPro.gif" width="350" height="45" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
|
23 |
+
<div class="pmpro_tagline">Membership Plugin for WordPress</div>
|
24 |
+
|
25 |
+
<div class="pmpro_meta"><a href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>">Plugin Support</a> | <a href="http://www.paidmembershipspro.com/forums/">User Forum</a> | <strong>Version <?php echo PMPRO_VERSION?></strong></div>
|
26 |
+
</div>
|
27 |
+
<br style="clear:both;" />
|
28 |
+
|
29 |
+
<form id="posts-filter" method="get" action="">
|
30 |
+
<h2>
|
31 |
+
Members Report
|
32 |
+
<small>(<a target="_blank" href="<?php echo admin_url('admin-ajax.php');?>?action=memberslist_csv&s=<?php echo $s?>&l=<?php echo $l?>">Export to CSV</a>)</small>
|
33 |
+
</h2>
|
34 |
+
<ul class="subsubsub">
|
35 |
+
<li>
|
36 |
+
Show <select name="l" onchange="jQuery('#posts-filter').submit();">
|
37 |
+
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>>All Levels</option>
|
38 |
+
<?php
|
39 |
+
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
40 |
+
foreach($levels as $level)
|
41 |
+
{
|
42 |
+
?>
|
43 |
+
<option value="<?php echo $level->id?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
44 |
+
<?php
|
45 |
+
}
|
46 |
+
?>
|
47 |
+
</select>
|
48 |
+
</li>
|
49 |
+
</ul>
|
50 |
+
<p class="search-box">
|
51 |
+
<label class="hidden" for="post-search-input">Search Members:</label>
|
52 |
+
<input type="hidden" name="page" value="pmpro-memberslist" />
|
53 |
+
<input id="post-search-input" type="text" value="<?php echo $s?>" name="s"/>
|
54 |
+
<input class="button" type="submit" value="Search Members"/>
|
55 |
+
</p>
|
56 |
+
<?php
|
57 |
+
//some vars for the search
|
58 |
+
if(isset($_REQUEST['pn']))
|
59 |
+
$pn = $_REQUEST['pn'];
|
60 |
+
else
|
61 |
+
$pn = 1;
|
62 |
+
|
63 |
+
if(isset($_REQUEST['limit']))
|
64 |
+
$limit = $_REQUEST['limit'];
|
65 |
+
else
|
66 |
+
$limit = 15;
|
67 |
+
|
68 |
+
$end = $pn * $limit;
|
69 |
+
$start = $end - $limit;
|
70 |
+
|
71 |
+
if($s)
|
72 |
+
{
|
73 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(mu.startdate) as startdate, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id WHERE mu.status = 'active' AND mu.membership_id > 0 AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
|
74 |
+
|
75 |
+
if($l)
|
76 |
+
$sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
|
77 |
+
|
78 |
+
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
79 |
+
}
|
80 |
+
else
|
81 |
+
{
|
82 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(mu.startdate) as startdate, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id";
|
83 |
+
$sqlQuery .= " WHERE mu.membership_id > 0 AND mu.status = 'active' ";
|
84 |
+
if($l)
|
85 |
+
$sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
|
86 |
+
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
87 |
+
}
|
88 |
+
|
89 |
+
$theusers = $wpdb->get_results($sqlQuery);
|
90 |
+
$totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
|
91 |
+
|
92 |
+
if($theusers)
|
93 |
+
{
|
94 |
+
$calculate_revenue = apply_filters("pmpro_memberslist_calculate_revenue", false);
|
95 |
+
if($calculate_revenue)
|
96 |
+
{
|
97 |
+
$initial_payments = pmpro_calculateInitialPaymentRevenue($s, $l);
|
98 |
+
$recurring_payments = pmpro_calculateRecurringRevenue($s, $l);
|
99 |
+
?>
|
100 |
+
<p class="clear"><?php echo strval($totalrows)?> members found. These members have paid <strong>$<?php echo number_format($initial_payments)?> in initial payments</strong> and will generate an estimated <strong>$<?php echo number_format($recurring_payments)?> in revenue over the next year</strong>, or <strong>$<?php echo number_format($recurring_payments/12)?>/month</strong>. <span class="pmpro_lite">(This estimate does not take into account trial periods or billing limits.)</span></p>
|
101 |
+
<?php
|
102 |
+
}
|
103 |
+
else
|
104 |
+
{
|
105 |
+
?>
|
106 |
+
<p class="clear"><?php echo strval($totalrows)?> members found.
|
107 |
+
<?php
|
108 |
+
}
|
109 |
+
}
|
110 |
+
?>
|
111 |
+
<table class="widefat">
|
112 |
+
<thead>
|
113 |
+
<tr class="thead">
|
114 |
+
<th>ID</th>
|
115 |
+
<th>Username</th>
|
116 |
+
<th>First Name</th>
|
117 |
+
<th>Last Name</th>
|
118 |
+
<th>Email</th>
|
119 |
+
<?php do_action("pmpro_memberslist_extra_cols_header", $theusers);?>
|
120 |
+
<th>Billing Address</th>
|
121 |
+
<th>Membership</th>
|
122 |
+
<th>Fee</th>
|
123 |
+
<th>Joined</th>
|
124 |
+
<th>Expires</th>
|
125 |
+
</tr>
|
126 |
+
</thead>
|
127 |
+
<tbody id="users" class="list:user user-list">
|
128 |
+
<?php
|
129 |
+
$count = 0;
|
130 |
+
foreach($theusers as $auser)
|
131 |
+
{
|
132 |
+
//get meta
|
133 |
+
$theuser = get_userdata($auser->ID);
|
134 |
+
?>
|
135 |
+
<tr <?php if($count++ % 2 == 0) { ?>class="alternate"<?php } ?>>
|
136 |
+
<td><?php echo $theuser->ID?></td>
|
137 |
+
<td>
|
138 |
+
<?php echo get_avatar($theuser->ID, 32)?>
|
139 |
+
<strong><a href="user-edit.php?user_id=<?php echo $theuser->ID?>"><?php echo $theuser->user_login?></a></strong>
|
140 |
+
</td>
|
141 |
+
<td><?php echo $theuser->first_name?></td>
|
142 |
+
<td><?php echo $theuser->last_name?></td>
|
143 |
+
<td><a href="mailto:<?php echo $theuser->user_email?>"><?php echo $theuser->user_email?></a></td>
|
144 |
+
<?php do_action("pmpro_memberslist_extra_cols_body", $theuser);?>
|
145 |
+
<td>
|
146 |
+
<?php
|
147 |
+
if(empty($theuser->pmpro_bfirstname))
|
148 |
+
$theuser->pmpro_bfirstname = "";
|
149 |
+
if(empty($theuser->pmpro_blastname))
|
150 |
+
$theuser->pmpro_blastname = "";
|
151 |
+
echo trim($theuser->pmpro_bfirstname . " " . $theuser->pmpro_blastname);
|
152 |
+
?><br />
|
153 |
+
<?php if(!empty($theuser->pmpro_baddress1)) { ?>
|
154 |
+
<?php echo $theuser->pmpro_baddress1; ?><br />
|
155 |
+
<?php if(!empty($theuser->pmpro_baddress2)) echo $theuser->pmpro_baddress2 . "<br />"; ?>
|
156 |
+
<?php if($theuser->pmpro_bcity && $theuser->pmpro_bstate) { ?>
|
157 |
+
<?php echo $theuser->pmpro_bcity?>, <?php echo $theuser->pmpro_bstate?> <?php echo $theuser->pmpro_bzipcode?> <?php if(!empty($theuser->pmpro_bcountry)) echo $theuser->pmpro_bcountry?><br />
|
158 |
+
<?php } ?>
|
159 |
+
<?php } ?>
|
160 |
+
<?php if(!empty($theuser->pmpro_bphone)) echo formatPhone($theuser->pmpro_bphone);?>
|
161 |
+
</td>
|
162 |
+
<td><?php echo $auser->membership?></td>
|
163 |
+
<td>
|
164 |
+
<?php if((float)$auser->initial_payment > 0) { ?>
|
165 |
+
<?php echo $pmpro_currency_symbol; ?><?php echo $auser->initial_payment?>
|
166 |
+
<?php } ?>
|
167 |
+
<?php if((float)$auser->initial_payment > 0 && (float)$auser->billing_amount > 0) { ?>+<br /><?php } ?>
|
168 |
+
<?php if((float)$auser->billing_amount > 0) { ?>
|
169 |
+
<?php echo $pmpro_currency_symbol; ?><?php echo $auser->billing_amount?>/<?php echo $auser->cycle_period?>
|
170 |
+
<?php } ?>
|
171 |
+
<?php if((float)$auser->initial_payment <= 0 && (float)$auser->billing_amount <= 0) { ?>
|
172 |
+
-
|
173 |
+
<?php } ?>
|
174 |
+
</td>
|
175 |
+
<td><?php echo date("m/d/Y", strtotime($theuser->user_registered))?></td>
|
176 |
+
<td>
|
177 |
+
<?php
|
178 |
+
if($auser->enddate)
|
179 |
+
echo date(get_option('date_format'), $auser->enddate);
|
180 |
+
else
|
181 |
+
echo "Never";
|
182 |
+
?>
|
183 |
+
</td>
|
184 |
+
</tr>
|
185 |
+
<?php
|
186 |
+
}
|
187 |
+
|
188 |
+
if(!$theusers)
|
189 |
+
{
|
190 |
+
?>
|
191 |
+
<tr>
|
192 |
+
<td colspan="9"><p>No members found. <?php if($l) { ?><a href="?page=pmpro-memberslist&s=<?php echo $s?>">Search all levels</a>.<?php } ?></p></td>
|
193 |
+
</tr>
|
194 |
+
<?php
|
195 |
+
}
|
196 |
+
?>
|
197 |
+
</tbody>
|
198 |
+
</table>
|
199 |
+
</form>
|
200 |
+
|
201 |
+
<?php
|
202 |
+
echo pmpro_getPaginationString($pn, $totalrows, $limit, 1, get_admin_url(NULL, "/admin.php?page=pmpro-memberslist&s=" . urlencode($s)), "&l=$l&limit=$limit&pn=");
|
203 |
+
?>
|
204 |
+
|
205 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/orders-csv.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_orders_csv")))
|
4 |
{
|
5 |
-
die(
|
6 |
}
|
7 |
|
8 |
global $wpdb;
|
@@ -17,51 +17,6 @@
|
|
17 |
$l = $_REQUEST['l'];
|
18 |
else
|
19 |
$l = false;
|
20 |
-
|
21 |
-
if(isset($_REQUEST['start-month']))
|
22 |
-
$start_month = $_REQUEST['start-month'];
|
23 |
-
else
|
24 |
-
$start_month = "1";
|
25 |
-
|
26 |
-
if(isset($_REQUEST['start-day']))
|
27 |
-
$start_day = $_REQUEST['start-day'];
|
28 |
-
else
|
29 |
-
$start_day = "1";
|
30 |
-
|
31 |
-
if(isset($_REQUEST['start-year']))
|
32 |
-
$start_year = $_REQUEST['start-year'];
|
33 |
-
else
|
34 |
-
$start_year = date("Y");
|
35 |
-
|
36 |
-
if(isset($_REQUEST['end-month']))
|
37 |
-
$end_month = $_REQUEST['end-month'];
|
38 |
-
else
|
39 |
-
$end_month = date("n");
|
40 |
-
|
41 |
-
if(isset($_REQUEST['end-day']))
|
42 |
-
$end_day = $_REQUEST['end-day'];
|
43 |
-
else
|
44 |
-
$end_day = date("j");
|
45 |
-
|
46 |
-
if(isset($_REQUEST['end-year']))
|
47 |
-
$end_year = $_REQUEST['end-year'];
|
48 |
-
else
|
49 |
-
$end_year = date("Y");
|
50 |
-
|
51 |
-
if(isset($_REQUEST['predefined-date']))
|
52 |
-
$predefined_date = $_REQUEST['predefined-date'];
|
53 |
-
else
|
54 |
-
$predefined_date = "This Month";
|
55 |
-
|
56 |
-
if(isset($_REQUEST['status']))
|
57 |
-
$status = $_REQUEST['status'];
|
58 |
-
else
|
59 |
-
$status = "";
|
60 |
-
|
61 |
-
if(isset($_REQUEST['filter']))
|
62 |
-
$filter = sanitize_text_field($_REQUEST['filter']);
|
63 |
-
else
|
64 |
-
$filter = "all";
|
65 |
|
66 |
//some vars for the search
|
67 |
if(!empty($_REQUEST['pn']))
|
@@ -85,62 +40,6 @@
|
|
85 |
$start = NULL;
|
86 |
}
|
87 |
|
88 |
-
//filters
|
89 |
-
if($filter == "all" || !$filter)
|
90 |
-
$condition = "1=1";
|
91 |
-
elseif($filter == "within-a-date-range")
|
92 |
-
{
|
93 |
-
$start_date = $start_year."-".$start_month."-".$start_day;
|
94 |
-
$end_date = $end_year."-".$end_month."-".$end_day;
|
95 |
-
|
96 |
-
//add times to dates
|
97 |
-
$start_date = $start_date . " 00:00:00";
|
98 |
-
$end_date = $end_date . " 23:59:59";
|
99 |
-
|
100 |
-
$condition = "timestamp BETWEEN '".$start_date."' AND '".$end_date."'";
|
101 |
-
}
|
102 |
-
elseif($filter == "predefined-date-range")
|
103 |
-
{
|
104 |
-
if($predefined_date == "Last Month")
|
105 |
-
{
|
106 |
-
$start_date = date("Y-m-d", strtotime("first day of last month", current_time("timestamp")));
|
107 |
-
$end_date = date("Y-m-d", strtotime("last day of last month", current_time("timestamp")));
|
108 |
-
}
|
109 |
-
elseif($predefined_date == "This Month")
|
110 |
-
{
|
111 |
-
$start_date = date("Y-m-d", strtotime("first day of this month", current_time("timestamp")));
|
112 |
-
$end_date = date("Y-m-d", strtotime("last day of this month", current_time("timestamp")));
|
113 |
-
}
|
114 |
-
elseif($predefined_date == "This Year")
|
115 |
-
{
|
116 |
-
$year = date('Y');
|
117 |
-
$start_date = date("Y-m-d", strtotime("first day of January $year", current_time("timestamp")));
|
118 |
-
$end_date = date("Y-m-d", strtotime("last day of December $year", current_time("timestamp")));
|
119 |
-
}
|
120 |
-
|
121 |
-
elseif($predefined_date == "Last Year")
|
122 |
-
{
|
123 |
-
$year = date('Y') - 1;
|
124 |
-
$start_date = date("Y-m-d", strtotime("first day of January $year", current_time("timestamp")));
|
125 |
-
$end_date = date("Y-m-d", strtotime("last day of December $year", current_time("timestamp")));
|
126 |
-
}
|
127 |
-
|
128 |
-
//add times to dates
|
129 |
-
$start_date = $start_date . " 00:00:00";
|
130 |
-
$end_date = $end_date . " 23:59:59";
|
131 |
-
|
132 |
-
$condition = "timestamp BETWEEN '".$start_date."' AND '".$end_date."'";
|
133 |
-
}
|
134 |
-
elseif($filter == "within-a-level")
|
135 |
-
{
|
136 |
-
$condition = "membership_id = $l";
|
137 |
-
}
|
138 |
-
elseif($filter == "within-a-status")
|
139 |
-
{
|
140 |
-
$condition = "status = '$status' ";
|
141 |
-
}
|
142 |
-
|
143 |
-
//string search
|
144 |
if($s)
|
145 |
{
|
146 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS o.id FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->users u ON o.user_id = u.ID LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id ";
|
@@ -150,42 +49,30 @@
|
|
150 |
$sqlQuery .= "LEFT JOIN $wpdb->usermeta um ON o.user_id = um.user_id ";
|
151 |
|
152 |
$sqlQuery .= "WHERE (1=2 ";
|
153 |
-
|
154 |
$fields = array("o.id", "o.code", "o.billing_name", "o.billing_street", "o.billing_city", "o.billing_state", "o.billing_zip", "o.billing_phone", "o.payment_type", "o.cardtype", "o.accountnumber", "o.status", "o.gateway", "o.gateway_environment", "o.payment_transaction_id", "o.subscription_transaction_id", "u.user_login", "u.user_email", "u.display_name", "l.name");
|
155 |
|
156 |
if($join_with_usermeta)
|
157 |
$fields[] = "um.meta_value";
|
158 |
-
|
159 |
$fields = apply_filters("pmpro_orders_search_fields", $fields);
|
160 |
|
161 |
foreach($fields as $field)
|
162 |
-
$sqlQuery .= " OR " . $field . " LIKE '%" .
|
163 |
$sqlQuery .= ") ";
|
164 |
-
|
165 |
-
$sqlQuery .= "AND " . $condition . " ";
|
166 |
-
|
167 |
-
$sqlQuery .= "GROUP BY o.id ORDER BY o.id DESC, o.timestamp DESC ";
|
168 |
}
|
169 |
else
|
170 |
{
|
171 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS id FROM $wpdb->pmpro_membership_orders
|
172 |
}
|
173 |
|
174 |
-
if(
|
175 |
$sqlQuery .= "LIMIT $start, $limit";
|
176 |
|
177 |
$order_ids = $wpdb->get_col($sqlQuery);
|
178 |
|
179 |
-
|
180 |
-
header("Content-type: text/csv");
|
181 |
-
|
182 |
-
$filename = "orders.csv";
|
183 |
-
/*
|
184 |
-
Insert logic here for building filename from $filter and other values.
|
185 |
-
*/
|
186 |
-
header("Content-Disposition: attachment; filename=$filename;");
|
187 |
-
|
188 |
-
$csvoutput = "id,user_id,user_login,first_name,last_name,user_email,billing_name,billing_street,billing_city,billing_state,billing_zip,billing_country,billing_phone,membership_id,level_name,subtotal,tax,couponamount,total,payment_type,cardtype,accountnumber,expirationmonth,expirationyear,status,gateway,gateway_environment,payment_transaction_id,subscription_transaction_id,discount_code_id,discount_code,timestamp";
|
189 |
|
190 |
//these are the meta_keys for the fields (arrays are object, property. so e.g. $theuser->ID)
|
191 |
$default_columns = array(
|
@@ -205,7 +92,7 @@
|
|
205 |
array("order", "membership_id"),
|
206 |
array("level", "name"),
|
207 |
array("order", "subtotal"),
|
208 |
-
array("order", "tax"),
|
209 |
array("order", "couponamount"),
|
210 |
array("order", "total"),
|
211 |
array("order", "payment_type"),
|
@@ -217,9 +104,7 @@
|
|
217 |
array("order", "gateway"),
|
218 |
array("order", "gateway_environment"),
|
219 |
array("order", "payment_transaction_id"),
|
220 |
-
array("order", "subscription_transactiond_id")
|
221 |
-
array("discount_code", "id"),
|
222 |
-
array("discount_code", "code")
|
223 |
);
|
224 |
|
225 |
//any extra columns
|
@@ -234,10 +119,6 @@
|
|
234 |
|
235 |
$csvoutput .= "\n";
|
236 |
|
237 |
-
//output
|
238 |
-
echo $csvoutput;
|
239 |
-
$csvoutput = "";
|
240 |
-
|
241 |
if($order_ids)
|
242 |
{
|
243 |
foreach($order_ids as $order_id)
|
@@ -247,8 +128,6 @@
|
|
247 |
$order->getMemberOrderByID($order_id);
|
248 |
$user = get_userdata($order->user_id);
|
249 |
$level = $order->getMembershipLevel();
|
250 |
-
$sqlQuery = "SELECT c.id, c.code FROM $wpdb->pmpro_discount_codes_uses cu LEFT JOIN $wpdb->pmpro_discount_codes c ON cu.code_id = c.id WHERE cu.order_id = '" . $order_id . "' LIMIT 1";
|
251 |
-
$discount_code = $wpdb->get_row($sqlQuery);
|
252 |
|
253 |
//default columns
|
254 |
if(!empty($default_columns))
|
@@ -282,12 +161,21 @@
|
|
282 |
}
|
283 |
|
284 |
$csvoutput .= "\n";
|
285 |
-
|
286 |
-
//output
|
287 |
-
echo $csvoutput;
|
288 |
-
$csvoutput = "";
|
289 |
}
|
290 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
|
292 |
print $csvoutput;
|
293 |
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_orders_csv")))
|
4 |
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
}
|
7 |
|
8 |
global $wpdb;
|
17 |
$l = $_REQUEST['l'];
|
18 |
else
|
19 |
$l = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
//some vars for the search
|
22 |
if(!empty($_REQUEST['pn']))
|
40 |
$start = NULL;
|
41 |
}
|
42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
if($s)
|
44 |
{
|
45 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS o.id FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->users u ON o.user_id = u.ID LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id ";
|
49 |
$sqlQuery .= "LEFT JOIN $wpdb->usermeta um ON o.user_id = um.user_id ";
|
50 |
|
51 |
$sqlQuery .= "WHERE (1=2 ";
|
52 |
+
|
53 |
$fields = array("o.id", "o.code", "o.billing_name", "o.billing_street", "o.billing_city", "o.billing_state", "o.billing_zip", "o.billing_phone", "o.payment_type", "o.cardtype", "o.accountnumber", "o.status", "o.gateway", "o.gateway_environment", "o.payment_transaction_id", "o.subscription_transaction_id", "u.user_login", "u.user_email", "u.display_name", "l.name");
|
54 |
|
55 |
if($join_with_usermeta)
|
56 |
$fields[] = "um.meta_value";
|
57 |
+
|
58 |
$fields = apply_filters("pmpro_orders_search_fields", $fields);
|
59 |
|
60 |
foreach($fields as $field)
|
61 |
+
$sqlQuery .= " OR " . $field . " LIKE '%" . $wpdb->escape($s) . "%' ";
|
62 |
$sqlQuery .= ") ";
|
63 |
+
$sqlQuery .= "ORDER BY o.timestamp DESC ";
|
|
|
|
|
|
|
64 |
}
|
65 |
else
|
66 |
{
|
67 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS id FROM $wpdb->pmpro_membership_orders ORDER BY timestamp DESC ";
|
68 |
}
|
69 |
|
70 |
+
if($limit)
|
71 |
$sqlQuery .= "LIMIT $start, $limit";
|
72 |
|
73 |
$order_ids = $wpdb->get_col($sqlQuery);
|
74 |
|
75 |
+
$csvoutput = "id,user_id,user_login,first_name,last_name,user_email,billing_name,billing_street,billing_city,billing_state,billing_zip,billing_country,billing_phone,membership_id,level_name,subtotal,tax,couponamount,total,payment_type,cardtype,accountnumber,expirationmonth,expirationyear,status,gateway,gateway_environment,payment_transaction_id,subscription_transaction_id,timestamp";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
//these are the meta_keys for the fields (arrays are object, property. so e.g. $theuser->ID)
|
78 |
$default_columns = array(
|
92 |
array("order", "membership_id"),
|
93 |
array("level", "name"),
|
94 |
array("order", "subtotal"),
|
95 |
+
array("order", "tax"),
|
96 |
array("order", "couponamount"),
|
97 |
array("order", "total"),
|
98 |
array("order", "payment_type"),
|
104 |
array("order", "gateway"),
|
105 |
array("order", "gateway_environment"),
|
106 |
array("order", "payment_transaction_id"),
|
107 |
+
array("order", "subscription_transactiond_id")
|
|
|
|
|
108 |
);
|
109 |
|
110 |
//any extra columns
|
119 |
|
120 |
$csvoutput .= "\n";
|
121 |
|
|
|
|
|
|
|
|
|
122 |
if($order_ids)
|
123 |
{
|
124 |
foreach($order_ids as $order_id)
|
128 |
$order->getMemberOrderByID($order_id);
|
129 |
$user = get_userdata($order->user_id);
|
130 |
$level = $order->getMembershipLevel();
|
|
|
|
|
131 |
|
132 |
//default columns
|
133 |
if(!empty($default_columns))
|
161 |
}
|
162 |
|
163 |
$csvoutput .= "\n";
|
164 |
+
|
|
|
|
|
|
|
165 |
}
|
166 |
+
}
|
167 |
+
|
168 |
+
$size_in_bytes = strlen($csvoutput);
|
169 |
+
header("Content-type: text/csv");
|
170 |
+
//header("Content-type: application/vnd.ms-excel");
|
171 |
+
if($s && $l)
|
172 |
+
header("Content-Disposition: attachment; filename=orders" . intval($l) . "_level" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
|
173 |
+
elseif($s)
|
174 |
+
header("Content-Disposition: attachment; filename=orders_" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
|
175 |
+
elseif($l)
|
176 |
+
header("Content-Disposition: attachment; filename=orders_level" . intval($l) . ".csv; size=$size_in_bytes");
|
177 |
+
else
|
178 |
+
header("Content-Disposition: attachment; filename=orders.csv; size=$size_in_bytes");
|
179 |
|
180 |
print $csvoutput;
|
181 |
|
adminpages/orders.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_orders")))
|
4 |
{
|
5 |
-
die(
|
6 |
}
|
7 |
|
8 |
//vars
|
@@ -16,47 +16,6 @@
|
|
16 |
$l = $_REQUEST['l'];
|
17 |
else
|
18 |
$l = false;
|
19 |
-
|
20 |
-
if(isset($_REQUEST['start-month']))
|
21 |
-
$start_month = $_REQUEST['start-month'];
|
22 |
-
else
|
23 |
-
$start_month = "1";
|
24 |
-
|
25 |
-
if(isset($_REQUEST['start-day']))
|
26 |
-
$start_day = $_REQUEST['start-day'];
|
27 |
-
else
|
28 |
-
$start_day = "1";
|
29 |
-
|
30 |
-
if(isset($_REQUEST['start-year']))
|
31 |
-
$start_year = $_REQUEST['start-year'];
|
32 |
-
else
|
33 |
-
$start_year = date("Y");
|
34 |
-
|
35 |
-
if(isset($_REQUEST['end-month']))
|
36 |
-
$end_month = $_REQUEST['end-month'];
|
37 |
-
else
|
38 |
-
$end_month = date("n");
|
39 |
-
|
40 |
-
if(isset($_REQUEST['end-day']))
|
41 |
-
$end_day = $_REQUEST['end-day'];
|
42 |
-
else
|
43 |
-
$end_day = date("j");
|
44 |
-
|
45 |
-
if(isset($_REQUEST['end-year']))
|
46 |
-
$end_year = $_REQUEST['end-year'];
|
47 |
-
else
|
48 |
-
$end_year = date("Y");
|
49 |
-
|
50 |
-
if(isset($_REQUEST['predefined-date']))
|
51 |
-
$predefined_date = $_REQUEST['predefined-date'];
|
52 |
-
else
|
53 |
-
$predefined_date = "This Month";
|
54 |
-
|
55 |
-
if(isset($_REQUEST['status']))
|
56 |
-
$status = $_REQUEST['status'];
|
57 |
-
else
|
58 |
-
$status = "";
|
59 |
-
|
60 |
|
61 |
//deleting?
|
62 |
if(!empty($_REQUEST['delete']))
|
@@ -64,25 +23,16 @@
|
|
64 |
$dorder = new MemberOrder(intval($_REQUEST['delete']));
|
65 |
if($dorder->deleteMe())
|
66 |
{
|
67 |
-
$pmpro_msg =
|
68 |
$pmpro_msgt = "success";
|
69 |
}
|
70 |
else
|
71 |
{
|
72 |
-
$pmpro_msg =
|
73 |
$pmpro_msgt = "error";
|
74 |
}
|
75 |
}
|
76 |
|
77 |
-
if(isset($_REQUEST['filter']))
|
78 |
-
$filter = sanitize_text_field($_REQUEST['filter']);
|
79 |
-
else
|
80 |
-
$filter = "all";
|
81 |
-
|
82 |
-
$thisyear = date("Y");
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
//this array stores fields that should be read only
|
87 |
$read_only_fields = apply_filters("pmpro_orders_read_only_fields", array("code", "payment_transaction_id", "subscription_transaction_id"));
|
88 |
|
@@ -166,18 +116,18 @@
|
|
166 |
//handle timestamp
|
167 |
if($order->updateTimestamp($_POST['ts_year'], $_POST['ts_month'], $_POST['ts_day']) !== false)
|
168 |
{
|
169 |
-
$pmpro_msg =
|
170 |
$pmpro_msgt = "success";
|
171 |
}
|
172 |
else
|
173 |
{
|
174 |
-
$pmpro_msg =
|
175 |
$pmpro_msgt = "error";
|
176 |
}
|
177 |
}
|
178 |
else
|
179 |
{
|
180 |
-
$pmpro_msg =
|
181 |
$pmpro_msgt = "error";
|
182 |
}
|
183 |
}
|
@@ -235,16 +185,23 @@
|
|
235 |
}
|
236 |
}
|
237 |
|
238 |
-
require_once(dirname(__FILE__) . "/admin_header.php");
|
239 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
|
241 |
<?php if(!empty($order)) { ?>
|
242 |
|
243 |
<h2>
|
244 |
<?php if(!empty($order->id)) { ?>
|
245 |
-
|
246 |
<?php } else { ?>
|
247 |
-
|
248 |
<?php } ?>
|
249 |
</h2>
|
250 |
|
@@ -258,21 +215,21 @@
|
|
258 |
<tbody>
|
259 |
<tr>
|
260 |
<th scope="row" valign="top"><label>ID:</label></th>
|
261 |
-
<td><?php if(!empty($order->id)) echo $order->id; else echo
|
262 |
</tr>
|
263 |
|
264 |
<tr>
|
265 |
-
<th scope="row" valign="top"><label for="code"
|
266 |
<td>
|
267 |
<?php if(in_array("code", $read_only_fields)) { echo $order->code; } else { ?>
|
268 |
<input id="code" name="code" type="text" size="50" value="<?php echo esc_attr($order->code);?>" />
|
269 |
<?php } ?>
|
270 |
-
<?php if($order_id < 0) { ?><small class="pmpro_lite"
|
271 |
</td>
|
272 |
</tr>
|
273 |
|
274 |
<tr>
|
275 |
-
<th scope="row" valign="top"><label for="user_id"
|
276 |
<td>
|
277 |
<?php if(in_array("user_id", $read_only_fields) && $order_id > 0) { echo $order->user_id; } else { ?>
|
278 |
<input id="user_id" name="user_id" type="text" size="50" value="<?php echo esc_attr($order->user_id);?>" />
|
@@ -281,7 +238,7 @@
|
|
281 |
</tr>
|
282 |
|
283 |
<tr>
|
284 |
-
<th scope="row" valign="top"><label for="membership_id"
|
285 |
<td>
|
286 |
<?php if(in_array("membership_id", $read_only_fields) && $order_id > 0) { echo $order->membership_id; } else { ?>
|
287 |
<input id="membership_id" name="membership_id" type="text" size="50" value="<?php echo esc_attr($order->membership_id);?>" />
|
@@ -290,7 +247,7 @@
|
|
290 |
</tr>
|
291 |
|
292 |
<tr>
|
293 |
-
<th scope="row" valign="top"><label for="billing_name"
|
294 |
<td>
|
295 |
<?php if(in_array("billing_name", $read_only_fields) && $order_id > 0) { echo $order->billing_name; } else { ?>
|
296 |
<input id="billing_name" name="billing_name" type="text" size="50" value="<?php echo esc_attr($order->billing->name);?>" />
|
@@ -298,35 +255,35 @@
|
|
298 |
</td>
|
299 |
</tr>
|
300 |
<tr>
|
301 |
-
<th scope="row" valign="top"><label for="billing_street"
|
302 |
<td>
|
303 |
<?php if(in_array("billing_street", $read_only_fields) && $order_id > 0) { echo $order->billing_street; } else { ?>
|
304 |
<input id="billing_street" name="billing_street" type="text" size="50" value="<?php echo esc_attr($order->billing->street);?>" /></td>
|
305 |
<?php } ?>
|
306 |
</tr>
|
307 |
<tr>
|
308 |
-
<th scope="row" valign="top"><label for="billing_city"
|
309 |
<td>
|
310 |
<?php if(in_array("billing_city", $read_only_fields) && $order_id > 0) { echo $order->billing_city; } else { ?>
|
311 |
<input id="billing_city" name="billing_city" type="text" size="50" value="<?php echo esc_attr($order->billing->city);?>" /></td>
|
312 |
<?php } ?>
|
313 |
</tr>
|
314 |
<tr>
|
315 |
-
<th scope="row" valign="top"><label for="billing_state"
|
316 |
<td>
|
317 |
<?php if(in_array("billing_state", $read_only_fields) && $order_id > 0) { echo $order->billing_state; } else { ?>
|
318 |
<input id="billing_state" name="billing_state" type="text" size="50" value="<?php echo esc_attr($order->billing->state);?>" /></td>
|
319 |
<?php } ?>
|
320 |
</tr>
|
321 |
<tr>
|
322 |
-
<th scope="row" valign="top"><label for="billing_zip"
|
323 |
<td>
|
324 |
<?php if(in_array("billing_zip", $read_only_fields) && $order_id > 0) { echo $order->billing_zip; } else { ?>
|
325 |
<input id="billing_zip" name="billing_zip" type="text" size="50" value="<?php echo esc_attr($order->billing->zip);?>" /></td>
|
326 |
<?php } ?>
|
327 |
</tr>
|
328 |
<tr>
|
329 |
-
<th scope="row" valign="top"><label for="billing_country"
|
330 |
<td>
|
331 |
<?php if(in_array("billing_country", $read_only_fields) && $order_id > 0) { echo $order->billing_country; } else { ?>
|
332 |
<input id="billing_country" name="billing_country" type="text" size="50" value="<?php echo esc_attr($order->billing->country);?>" />
|
@@ -334,7 +291,7 @@
|
|
334 |
</td>
|
335 |
</tr>
|
336 |
<tr>
|
337 |
-
<th scope="row" valign="top"><label for="billing_phone"
|
338 |
<td>
|
339 |
<?php if(in_array("billing_phone", $read_only_fields) && $order_id > 0) { echo $order->billing_phone; } else { ?>
|
340 |
<input id="billing_phone" name="billing_phone" type="text" size="50" value="<?php echo esc_attr($order->billing->phone);?>" />
|
@@ -343,7 +300,7 @@
|
|
343 |
</tr>
|
344 |
|
345 |
<tr>
|
346 |
-
<th scope="row" valign="top"><label for="subtotal"
|
347 |
<td>
|
348 |
<?php if(in_array("subtotal", $read_only_fields) && $order_id > 0) { echo $order->subtotal; } else { ?>
|
349 |
<input id="subtotal" name="subtotal" type="text" size="10" value="<?php echo esc_attr($order->subtotal);?>" />
|
@@ -351,7 +308,7 @@
|
|
351 |
</td>
|
352 |
</tr>
|
353 |
<tr>
|
354 |
-
<th scope="row" valign="top"><label for="tax"
|
355 |
<td>
|
356 |
<?php if(in_array("tax", $read_only_fields) && $order_id > 0) { echo $order->tax; } else { ?>
|
357 |
<input id="tax" name="tax" type="text" size="10" value="<?php echo esc_attr($order->tax);?>" />
|
@@ -359,7 +316,7 @@
|
|
359 |
</td>
|
360 |
</tr>
|
361 |
<tr>
|
362 |
-
<th scope="row" valign="top"><label for="couponamount"
|
363 |
<td>
|
364 |
<?php if(in_array("couponamount", $read_only_fields) && $order_id > 0) { echo $order->couponamount; } else { ?>
|
365 |
<input id="couponamount" name="couponamount" type="text" size="10" value="<?php echo esc_attr($order->couponamount);?>" />
|
@@ -367,52 +324,52 @@
|
|
367 |
</td>
|
368 |
</tr>
|
369 |
<tr>
|
370 |
-
<th scope="row" valign="top"><label for="total"
|
371 |
<td>
|
372 |
<?php if(in_array("total", $read_only_fields) && $order_id > 0) { echo $order->total; } else { ?>
|
373 |
<input id="total" name="total" type="text" size="10" value="<?php echo esc_attr($order->total);?>" />
|
374 |
<?php } ?>
|
375 |
-
<small class="pmpro_lite"
|
376 |
</td>
|
377 |
</tr>
|
378 |
|
379 |
<tr>
|
380 |
-
<th scope="row" valign="top"><label for="payment_type"
|
381 |
<td>
|
382 |
<?php if(in_array("payment_type", $read_only_fields) && $order_id > 0) { echo $order->payment_type; } else { ?>
|
383 |
<input id="payment_type" name="payment_type" type="text" size="50" value="<?php echo esc_attr($order->payment_type);?>" />
|
384 |
<?php } ?>
|
385 |
-
<small class="pmpro_lite"
|
386 |
</td>
|
387 |
</tr>
|
388 |
<tr>
|
389 |
-
<th scope="row" valign="top"><label for="cardtype"
|
390 |
<td>
|
391 |
<?php if(in_array("cardtype", $read_only_fields) && $order_id > 0) { echo $order->cardtype; } else { ?>
|
392 |
<input id="cardtype" name="cardtype" type="text" size="50" value="<?php echo esc_attr($order->cardtype);?>" />
|
393 |
<?php } ?>
|
394 |
-
<small class="pmpro_lite"
|
395 |
</td>
|
396 |
</tr>
|
397 |
<tr>
|
398 |
-
<th scope="row" valign="top"><label for="accountnumber"
|
399 |
<td>
|
400 |
<?php if(in_array("accountnumber", $read_only_fields) && $order_id > 0) { echo $order->accountnumber; } else { ?>
|
401 |
<input id="accountnumber" name="accountnumber" type="text" size="50" value="<?php echo esc_attr($order->accountnumber);?>" />
|
402 |
<?php } ?>
|
403 |
-
<small class="pmpro_lite"
|
404 |
</td>
|
405 |
</tr>
|
406 |
<?php if(in_array("ExpirationDate", $read_only_fields) && $order_id > 0) { echo $order->ExpirationDate; } else { ?>
|
407 |
<tr>
|
408 |
-
<th scope="row" valign="top"><label for="expirationmonth"
|
409 |
<td>
|
410 |
<input id="expirationmonth" name="expirationmonth" type="text" size="10" value="<?php echo esc_attr($order->expirationmonth);?>" />
|
411 |
<small class="pmpro_lite">MM</small>
|
412 |
</td>
|
413 |
</tr>
|
414 |
<tr>
|
415 |
-
<th scope="row" valign="top"><label for="expirationyear"
|
416 |
<td>
|
417 |
<input id="expirationyear" name="expirationyear" type="text" size="10" value="<?php echo esc_attr($order->expirationyear);?>" />
|
418 |
<small class="pmpro_lite">YYYY</small>
|
@@ -420,7 +377,7 @@
|
|
420 |
</tr>
|
421 |
<?php } ?>
|
422 |
<tr>
|
423 |
-
<th scope="row" valign="top"><label for="status"
|
424 |
<td>
|
425 |
<?php if(in_array("status", $read_only_fields) && $order_id > 0) { echo $order->status; } else { ?>
|
426 |
<?php
|
@@ -441,12 +398,12 @@
|
|
441 |
</tr>
|
442 |
|
443 |
<tr>
|
444 |
-
<th scope="row" valign="top"><label for="gateway"
|
445 |
<td>
|
446 |
<?php if(in_array("gateway", $read_only_fields) && $order_id > 0) { echo $order->gateway; } else { ?>
|
447 |
<select id="gateway" name="gateway" onchange="pmpro_changeGateway(jQuery(this).val());">
|
448 |
-
<option value="" <?php if(empty($order->gateway)) { ?>selected="selected"<?php }
|
449 |
-
<option value="check" <?php if($order->gateway == "check") { ?>selected="selected"<?php }
|
450 |
<option value="stripe" <?php if($order->gateway == "stripe") { ?>selected="selected"<?php } ?>>Stripe</option>
|
451 |
<option value="paypalstandard" <?php if($order->gateway == "paypalstandard") { ?>selected="selected"<?php } ?>>PayPal Standard</option>
|
452 |
<option value="paypalexpress" <?php if($order->gateway == "paypalexpress") { ?>selected="selected"<?php } ?>>PayPal Express</option>
|
@@ -458,38 +415,38 @@
|
|
458 |
</td>
|
459 |
</tr>
|
460 |
<tr>
|
461 |
-
<th scope="row" valign="top"><label for="gateway_environment"
|
462 |
<td>
|
463 |
<?php if(in_array("gateway_environment", $read_only_fields) && $order_id > 0) { echo $order->gateway_environment; } else { ?>
|
464 |
<select name="gateway_environment">
|
465 |
-
<option value="sandbox" <?php if($order->gateway_environment == "sandbox") { ?>selected="selected"<?php }
|
466 |
-
<option value="live" <?php if($order->gateway_environment == "live") { ?>selected="selected"<?php }
|
467 |
</select>
|
468 |
<?php } ?>
|
469 |
</td>
|
470 |
</tr>
|
471 |
|
472 |
<tr>
|
473 |
-
<th scope="row" valign="top"><label for="payment_transaction_id"
|
474 |
<td>
|
475 |
<?php if(in_array("payment_transaction_id", $read_only_fields) && $order_id > 0) { echo $order->payment_transaction_id; } else { ?>
|
476 |
<input id="payment_transaction_id" name="payment_transaction_id" type="text" size="50" value="<?php echo esc_attr($order->payment_transaction_id);?>" />
|
477 |
<?php } ?>
|
478 |
-
<small class="pmpro_lite"
|
479 |
</td>
|
480 |
</tr>
|
481 |
<tr>
|
482 |
-
<th scope="row" valign="top"><label for="subscription_transaction_id"
|
483 |
<td>
|
484 |
-
<?php if(in_array("
|
485 |
<input id="subscription_transaction_id" name="subscription_transaction_id" type="text" size="50" value="<?php echo esc_attr($order->subscription_transaction_id);?>" />
|
486 |
<?php } ?>
|
487 |
-
<small class="pmpro_lite"
|
488 |
</td>
|
489 |
</tr>
|
490 |
|
491 |
<tr>
|
492 |
-
<th scope="row" valign="top"><label for="ts_month"
|
493 |
<td>
|
494 |
<?php if(in_array("timestamp", $read_only_fields) && $order_id > 0) { echo date(option("date_format"), $order->timestamp); } else { ?>
|
495 |
<?php
|
@@ -497,7 +454,7 @@
|
|
497 |
if(!empty($order->timestamp))
|
498 |
$timestamp = $order->timestamp;
|
499 |
else
|
500 |
-
$timestamp =
|
501 |
|
502 |
$year = date("Y", $timestamp);
|
503 |
$month = date("n", $timestamp);
|
@@ -508,7 +465,7 @@
|
|
508 |
for($i = 1; $i < 13; $i++)
|
509 |
{
|
510 |
?>
|
511 |
-
<option value="<?php echo $i?>" <?php if($i == $month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $year
|
512 |
<?php
|
513 |
}
|
514 |
?>
|
@@ -524,7 +481,7 @@
|
|
524 |
if(!empty($affiliates)) {
|
525 |
?>
|
526 |
<tr>
|
527 |
-
<th scope="row" valign="top"><label for="affiliate_id"
|
528 |
<td>
|
529 |
<?php if(in_array("affiliate_id", $read_only_fields) && $order_id > 0) { echo $order->affiliate_id; } else { ?>
|
530 |
<input id="affiliate_id" name="affiliate_id" type="text" size="50" value="<?php echo esc_attr($order->affiliate_id);?>" />
|
@@ -532,7 +489,7 @@
|
|
532 |
</td>
|
533 |
</tr>
|
534 |
<tr>
|
535 |
-
<th scope="row" valign="top"><label for="affiliate_subid"
|
536 |
<td>
|
537 |
<?php if(in_array("affiliate_subid", $read_only_fields) && $order_id > 0) { echo $order->affiliate_subid; } else { ?>
|
538 |
<input id="affiliate_subid" name="affiliate_subid" type="text" size="50" value="<?php echo esc_attr($order->affiliate_subid);?>" />
|
@@ -542,7 +499,7 @@
|
|
542 |
<?php } ?>
|
543 |
|
544 |
<tr>
|
545 |
-
<th scope="row" valign="top"><label for="notes"
|
546 |
<td>
|
547 |
<?php if(in_array("notes", $read_only_fields) && $order_id > 0) { echo $order->notes; } else { ?>
|
548 |
<textarea id="notes" name="notes" rows="5" cols="80"><?php echo esc_textarea($order->notes);?></textarea>
|
@@ -557,8 +514,8 @@
|
|
557 |
|
558 |
<p class="submit topborder">
|
559 |
<input name="order" type="hidden" value="<?php if(!empty($order->id)) echo $order->id; else echo $order_id;?>" />
|
560 |
-
<input name="save" type="submit" class="button-primary" value="
|
561 |
-
<input name="cancel" type="button"
|
562 |
</p>
|
563 |
|
564 |
</form>
|
@@ -567,219 +524,26 @@
|
|
567 |
|
568 |
<form id="posts-filter" method="get" action="">
|
569 |
<h2>
|
570 |
-
|
571 |
-
<a href="admin.php?page=pmpro-orders&order=-1" class="add-new-h2">+
|
572 |
-
|
573 |
-
|
574 |
-
//build the export URL
|
575 |
-
$export_url = admin_url('admin-ajax.php') . "?action=orders_csv";
|
576 |
-
$url_params = array(
|
577 |
-
"filter"=>$filter,
|
578 |
-
"s"=>$s,
|
579 |
-
"l"=>$l,
|
580 |
-
"start-month"=>$start_month,
|
581 |
-
"start-day"=>$start_day,
|
582 |
-
"start-year"=>$start_year,
|
583 |
-
"end-month"=>$end_month,
|
584 |
-
"end-day"=>$end_day,
|
585 |
-
"end-year"=>$end_year,
|
586 |
-
"predefined-date"=>$predefined_date,
|
587 |
-
"status"=>$status
|
588 |
-
);
|
589 |
-
$export_url = add_query_arg($url_params, $export_url);
|
590 |
-
?>
|
591 |
-
<a target="_blank" href="<?php echo $export_url;?>" class="add-new-h2"><?php _e('Export to CSV', 'pmpro');?></a>
|
592 |
-
</h2>
|
593 |
-
|
594 |
-
|
595 |
|
596 |
<?php if(!empty($pmpro_msg)) { ?>
|
597 |
<div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
|
598 |
<?php } ?>
|
599 |
|
600 |
-
|
601 |
<ul class="subsubsub">
|
602 |
<li>
|
603 |
-
<?php _ex('Show', 'Dropdown label, e.g. Show Daily Orders for January', 'pmpro')?>
|
604 |
-
<select id="filter" name="filter">
|
605 |
-
<option value="all" <?php selected($filter, "all");?>><?php _e('All', 'pmpro');?></option>
|
606 |
-
<option value="within-a-date-range" <?php selected($filter, "within-a-date-range");?>><?php _e('Within a Date Range', 'pmpro');?></option>
|
607 |
-
<option value="predefined-date-range" <?php selected($filter, "predefined-date-range");?>><?php _e('Predefined Date Range', 'pmpro');?></option>
|
608 |
-
<option value="within-a-level" <?php selected($filter, "within-a-level");?>><?php _e('Within a Level', 'pmpro');?></option>
|
609 |
-
<option value="within-a-status" <?php selected($filter, "within-a-status");?>><?php _e('Within a Status', 'pmpro');?></option>
|
610 |
-
</select>
|
611 |
-
|
612 |
-
<span id="from"><?php _ex('From', 'Dropdown label', 'pmpro')?></span>
|
613 |
-
|
614 |
-
<select id="start-month" name="start-month">
|
615 |
-
<?php for($i = 1; $i < 13; $i++) { ?>
|
616 |
-
<option value="<?php echo $i;?>" <?php selected($start_month, $i);?>><?php echo date("F", mktime(0, 0, 0, $i));?></option>
|
617 |
-
<?php } ?>
|
618 |
-
</select>
|
619 |
-
|
620 |
-
<input id='start-day' name="start-day" type="text" size="2" value="<?php echo $start_day?>" />
|
621 |
-
<input id='start-year' name="start-year" type="text" size="4" value="<?php echo $start_year?>" />
|
622 |
-
|
623 |
-
|
624 |
-
<span id="to"><?php _ex('To', 'Dropdown label', 'pmpro')?></span>
|
625 |
-
|
626 |
-
<select id="end-month" name="end-month">
|
627 |
-
<?php for($i = 1; $i < 13; $i++) { ?>
|
628 |
-
<option value="<?php echo $i;?>" <?php selected($end_month, $i);?>><?php echo date("F", mktime(0, 0, 0, $i));?></option>
|
629 |
-
<?php } ?>
|
630 |
-
</select>
|
631 |
-
|
632 |
-
|
633 |
-
<input id='end-day' name="end-day" type="text" size="2" value="<?php echo $end_day?>" />
|
634 |
-
<input id='end-year' name="end-year" type="text" size="4" value="<?php echo $end_year?>" />
|
635 |
-
|
636 |
-
<span id="filterby"><?php _ex('filter by ', 'Dropdown label', 'pmpro')?></span>
|
637 |
-
|
638 |
-
<select id="predefined-date" name="predefined-date">
|
639 |
-
|
640 |
-
<option value="<?php echo "This Month";?>" <?php selected($predefined_date, "This Month");?>><?php echo "This Month";?></option>
|
641 |
-
<option value="<?php echo "Last Month";?>" <?php selected($predefined_date, "Last Month");?>><?php echo "Last Month";?></option>
|
642 |
-
<option value="<?php echo "This Year";?>" <?php selected($predefined_date, "This Year");?>><?php echo "This Year";?></option>
|
643 |
-
<option value="<?php echo "Last Year";?>" <?php selected($predefined_date, "Last Year");?>><?php echo "Last Year";?></option>
|
644 |
|
645 |
-
</select>
|
646 |
-
|
647 |
-
<?php
|
648 |
-
//Note: only orders belonging to current levels can be filtered. There is no option for orders belonging to deleted levels
|
649 |
-
$levels = pmpro_getAllLevels();
|
650 |
-
|
651 |
-
?>
|
652 |
-
<select id="l" name="l">
|
653 |
-
<?php foreach($levels as $level) { ?>
|
654 |
-
<option value="<?php echo $level->id;?>" <?php selected($l, $level->id);?>><?php echo $level->name;?></option>
|
655 |
-
<?php } ?>
|
656 |
-
|
657 |
-
</select>
|
658 |
-
|
659 |
-
<?php
|
660 |
-
$statuses = array();
|
661 |
-
$default_statuses = array("", "success", "cancelled", "review", "token", "refunded");
|
662 |
-
$used_statuses = $wpdb->get_col("SELECT DISTINCT(status) FROM $wpdb->pmpro_membership_orders");
|
663 |
-
$statuses = array_unique(array_merge($default_statuses, $used_statuses));
|
664 |
-
asort($statuses);
|
665 |
-
$statuses = apply_filters("pmpro_order_statuses", $statuses);
|
666 |
-
?>
|
667 |
-
<select id="status" name="status">
|
668 |
-
<?php foreach($statuses as $the_status) { ?>
|
669 |
-
<option value="<?php echo esc_attr($the_status);?>" <?php selected($the_status, $status);?>><?php echo $the_status;?></option>
|
670 |
-
<?php } ?>
|
671 |
-
</select>
|
672 |
-
|
673 |
-
|
674 |
-
<input id="submit" type="submit" value="<?php _ex('Filter', 'Submit button value.', 'pmpro');?>" />
|
675 |
</li>
|
676 |
</ul>
|
677 |
-
|
678 |
-
<script>
|
679 |
-
//update month/year when period dropdown is changed
|
680 |
-
jQuery(document).ready(function() {
|
681 |
-
jQuery('#filter').change(function() {
|
682 |
-
pmpro_ShowMonthOrYear();
|
683 |
-
});
|
684 |
-
});
|
685 |
-
|
686 |
-
function pmpro_ShowMonthOrYear()
|
687 |
-
{
|
688 |
-
var filter = jQuery('#filter').val();
|
689 |
-
if(filter == 'all')
|
690 |
-
{
|
691 |
-
jQuery('#start-month').hide();
|
692 |
-
jQuery('#start-day').hide();
|
693 |
-
jQuery('#start-year').hide();
|
694 |
-
jQuery('#end-month').hide();
|
695 |
-
jQuery('#end-day').hide();
|
696 |
-
jQuery('#end-year').hide();
|
697 |
-
jQuery('#predefined-date').hide();
|
698 |
-
jQuery('#status').hide();
|
699 |
-
jQuery('#l').hide();
|
700 |
-
jQuery('#from').hide();
|
701 |
-
jQuery('#to').hide();
|
702 |
-
jQuery('#submit').show();
|
703 |
-
jQuery('#filterby').hide();
|
704 |
-
}
|
705 |
-
else if(filter == 'within-a-date-range')
|
706 |
-
{
|
707 |
-
jQuery('#start-month').show();
|
708 |
-
jQuery('#start-day').show();
|
709 |
-
jQuery('#start-year').show();
|
710 |
-
jQuery('#end-month').show();
|
711 |
-
jQuery('#end-day').show();
|
712 |
-
jQuery('#end-year').show();
|
713 |
-
jQuery('#predefined-date').hide();
|
714 |
-
jQuery('#status').hide();
|
715 |
-
jQuery('#l').hide();
|
716 |
-
jQuery('#submit').show();
|
717 |
-
jQuery('#from').show();
|
718 |
-
jQuery('#to').show();
|
719 |
-
jQuery('#filterby').hide();
|
720 |
-
}
|
721 |
-
else if(filter == 'predefined-date-range')
|
722 |
-
{
|
723 |
-
jQuery('#start-month').hide();
|
724 |
-
jQuery('#start-day').hide();
|
725 |
-
jQuery('#start-year').hide();
|
726 |
-
jQuery('#end-month').hide();
|
727 |
-
jQuery('#end-day').hide();
|
728 |
-
jQuery('#end-year').hide();
|
729 |
-
jQuery('#predefined-date').show();
|
730 |
-
jQuery('#status').hide();
|
731 |
-
jQuery('#l').hide();
|
732 |
-
jQuery('#submit').show();
|
733 |
-
jQuery('#from').hide();
|
734 |
-
jQuery('#to').hide();
|
735 |
-
jQuery('#filterby').show();
|
736 |
-
}
|
737 |
-
else if(filter == 'within-a-level')
|
738 |
-
{
|
739 |
-
jQuery('#start-month').hide();
|
740 |
-
jQuery('#start-day').hide();
|
741 |
-
jQuery('#start-year').hide();
|
742 |
-
jQuery('#end-month').hide();
|
743 |
-
jQuery('#end-day').hide();
|
744 |
-
jQuery('#end-year').hide();
|
745 |
-
jQuery('#predefined-date').hide();
|
746 |
-
jQuery('#status').hide();
|
747 |
-
jQuery('#l').show();
|
748 |
-
jQuery('#submit').show();
|
749 |
-
jQuery('#from').hide();
|
750 |
-
jQuery('#to').hide();
|
751 |
-
jQuery('#filterby').show();
|
752 |
-
}
|
753 |
-
else if(filter == 'within-a-status')
|
754 |
-
{
|
755 |
-
jQuery('#start-month').hide();
|
756 |
-
jQuery('#start-day').hide();
|
757 |
-
jQuery('#start-year').hide();
|
758 |
-
jQuery('#end-month').hide();
|
759 |
-
jQuery('#end-day').hide();
|
760 |
-
jQuery('#end-year').hide();
|
761 |
-
jQuery('#predefined-date').hide();
|
762 |
-
jQuery('#status').show();
|
763 |
-
jQuery('#l').hide();
|
764 |
-
jQuery('#submit').show();
|
765 |
-
jQuery('#from').hide();
|
766 |
-
jQuery('#to').hide();
|
767 |
-
jQuery('#filterby').show();
|
768 |
-
}
|
769 |
-
}
|
770 |
-
|
771 |
-
pmpro_ShowMonthOrYear();
|
772 |
-
|
773 |
-
|
774 |
-
</script>
|
775 |
-
|
776 |
<p class="search-box">
|
777 |
-
<label class="hidden" for="post-search-input"
|
778 |
<input type="hidden" name="page" value="pmpro-orders" />
|
779 |
<input id="post-search-input" type="text" value="<?php echo $s?>" name="s"/>
|
780 |
-
<input class="button" type="submit" value="
|
781 |
</p>
|
782 |
-
|
783 |
<?php
|
784 |
//some vars for the search
|
785 |
if(isset($_REQUEST['pn']))
|
@@ -795,62 +559,6 @@
|
|
795 |
$end = $pn * $limit;
|
796 |
$start = $end - $limit;
|
797 |
|
798 |
-
//filters
|
799 |
-
if($filter == "all" || !$filter)
|
800 |
-
$condition = "1=1";
|
801 |
-
elseif($filter == "within-a-date-range")
|
802 |
-
{
|
803 |
-
$start_date = $start_year."-".$start_month."-".$start_day;
|
804 |
-
$end_date = $end_year."-".$end_month."-".$end_day;
|
805 |
-
|
806 |
-
//add times to dates
|
807 |
-
$start_date = $start_date . " 00:00:00";
|
808 |
-
$end_date = $end_date . " 23:59:59";
|
809 |
-
|
810 |
-
$condition = "timestamp BETWEEN '".$start_date."' AND '".$end_date."'";
|
811 |
-
}
|
812 |
-
elseif($filter == "predefined-date-range")
|
813 |
-
{
|
814 |
-
if($predefined_date == "Last Month")
|
815 |
-
{
|
816 |
-
$start_date = date("Y-m-d", strtotime("first day of last month", current_time("timestamp")));
|
817 |
-
$end_date = date("Y-m-d", strtotime("last day of last month", current_time("timestamp")));
|
818 |
-
}
|
819 |
-
elseif($predefined_date == "This Month")
|
820 |
-
{
|
821 |
-
$start_date = date("Y-m-d", strtotime("first day of this month", current_time("timestamp")));
|
822 |
-
$end_date = date("Y-m-d", strtotime("last day of this month", current_time("timestamp")));
|
823 |
-
}
|
824 |
-
elseif($predefined_date == "This Year")
|
825 |
-
{
|
826 |
-
$year = date('Y');
|
827 |
-
$start_date = date("Y-m-d", strtotime("first day of January $year", current_time("timestamp")));
|
828 |
-
$end_date = date("Y-m-d", strtotime("last day of December $year", current_time("timestamp")));
|
829 |
-
}
|
830 |
-
|
831 |
-
elseif($predefined_date == "Last Year")
|
832 |
-
{
|
833 |
-
$year = date('Y') - 1;
|
834 |
-
$start_date = date("Y-m-d", strtotime("first day of January $year", current_time("timestamp")));
|
835 |
-
$end_date = date("Y-m-d", strtotime("last day of December $year", current_time("timestamp")));
|
836 |
-
}
|
837 |
-
|
838 |
-
//add times to dates
|
839 |
-
$start_date = $start_date . " 00:00:00";
|
840 |
-
$end_date = $end_date . " 23:59:59";
|
841 |
-
|
842 |
-
$condition = "timestamp BETWEEN '".$start_date."' AND '".$end_date."'";
|
843 |
-
}
|
844 |
-
elseif($filter == "within-a-level")
|
845 |
-
{
|
846 |
-
$condition = "membership_id = $l";
|
847 |
-
}
|
848 |
-
elseif($filter == "within-a-status")
|
849 |
-
{
|
850 |
-
$condition = "status = '$status' ";
|
851 |
-
}
|
852 |
-
|
853 |
-
//string search
|
854 |
if($s)
|
855 |
{
|
856 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS o.id FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->users u ON o.user_id = u.ID LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id ";
|
@@ -869,45 +577,41 @@
|
|
869 |
$fields = apply_filters("pmpro_orders_search_fields", $fields);
|
870 |
|
871 |
foreach($fields as $field)
|
872 |
-
$sqlQuery .= " OR " . $field . " LIKE '%" .
|
873 |
$sqlQuery .= ") ";
|
874 |
-
|
875 |
-
$sqlQuery .= "AND " . $condition . " ";
|
876 |
-
|
877 |
$sqlQuery .= "GROUP BY o.id ORDER BY o.id DESC, o.timestamp DESC ";
|
878 |
}
|
879 |
else
|
880 |
{
|
881 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS id FROM $wpdb->pmpro_membership_orders
|
882 |
}
|
883 |
|
884 |
$sqlQuery .= "LIMIT $start, $limit";
|
885 |
|
886 |
$order_ids = $wpdb->get_col($sqlQuery);
|
887 |
-
|
888 |
$totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
|
889 |
|
890 |
if($order_ids)
|
891 |
{
|
892 |
?>
|
893 |
-
<p class="clear"><?php
|
894 |
<?php
|
895 |
}
|
896 |
?>
|
897 |
<table class="widefat">
|
898 |
<thead>
|
899 |
<tr class="thead">
|
900 |
-
<th
|
901 |
-
<th
|
902 |
-
<th
|
903 |
<?php do_action("pmpro_orders_extra_cols_header", $order_ids);?>
|
904 |
-
<th
|
905 |
-
<th
|
906 |
-
<th
|
907 |
-
<th
|
908 |
-
<th
|
909 |
-
<th
|
910 |
-
<th
|
911 |
<th></th>
|
912 |
<th></th>
|
913 |
<th></th>
|
@@ -930,7 +634,7 @@
|
|
930 |
<?php if(!empty($order->user)) { ?>
|
931 |
<a href="user-edit.php?user_id=<?php echo $order->user->ID?>"><?php echo $order->user->user_login?></a>
|
932 |
<?php } else { ?>
|
933 |
-
[
|
934 |
<?php } ?>
|
935 |
</td>
|
936 |
<?php do_action("pmpro_orders_extra_cols_body", $order);?>
|
@@ -951,20 +655,20 @@
|
|
951 |
</td>
|
952 |
<td><?php echo $order->gateway;?><?php if($order->gateway_environment == "test") echo "(test)";?></td>
|
953 |
<td>
|
954 |
-
|
955 |
<br />
|
956 |
-
|
957 |
</td>
|
958 |
<td><?php echo $order->status;?></td>
|
959 |
<td><?php echo date(get_option('date_format'), $order->timestamp);?></td>
|
960 |
<td align="center">
|
961 |
-
<a href="admin.php?page=pmpro-orders&order=<?php echo $order->id;?>"
|
962 |
</td>
|
963 |
<td align="center">
|
964 |
-
<a href="admin.php?page=pmpro-orders&order=-1©=<?php echo $order->id;?>"
|
965 |
</td>
|
966 |
<td align="center">
|
967 |
-
<a href="javascript:askfirst('
|
968 |
</td>
|
969 |
</tr>
|
970 |
<?php
|
@@ -974,7 +678,7 @@
|
|
974 |
{
|
975 |
?>
|
976 |
<tr>
|
977 |
-
<td colspan="9"><p
|
978 |
</tr>
|
979 |
<?php
|
980 |
}
|
@@ -984,13 +688,9 @@
|
|
984 |
</form>
|
985 |
|
986 |
<?php
|
987 |
-
|
988 |
-
$pagination_url = add_query_arg($url_params, get_admin_url(NULL, "/admin.php?page=pmpro-orders"));
|
989 |
-
echo pmpro_getPaginationString($pn, $totalrows, $limit, 1, $pagination_url, "&limit=$limit&pn=");
|
990 |
?>
|
991 |
|
992 |
<?php } ?>
|
993 |
|
994 |
-
|
995 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
996 |
-
?>
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_orders")))
|
4 |
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
}
|
7 |
|
8 |
//vars
|
16 |
$l = $_REQUEST['l'];
|
17 |
else
|
18 |
$l = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
//deleting?
|
21 |
if(!empty($_REQUEST['delete']))
|
23 |
$dorder = new MemberOrder(intval($_REQUEST['delete']));
|
24 |
if($dorder->deleteMe())
|
25 |
{
|
26 |
+
$pmpro_msg = "Order deleted successfully.";
|
27 |
$pmpro_msgt = "success";
|
28 |
}
|
29 |
else
|
30 |
{
|
31 |
+
$pmpro_msg = "Error deleting order.";
|
32 |
$pmpro_msgt = "error";
|
33 |
}
|
34 |
}
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
//this array stores fields that should be read only
|
37 |
$read_only_fields = apply_filters("pmpro_orders_read_only_fields", array("code", "payment_transaction_id", "subscription_transaction_id"));
|
38 |
|
116 |
//handle timestamp
|
117 |
if($order->updateTimestamp($_POST['ts_year'], $_POST['ts_month'], $_POST['ts_day']) !== false)
|
118 |
{
|
119 |
+
$pmpro_msg = "Order saved successfully.";
|
120 |
$pmpro_msgt = "success";
|
121 |
}
|
122 |
else
|
123 |
{
|
124 |
+
$pmpro_msg = "Error updating order timestamp.";
|
125 |
$pmpro_msgt = "error";
|
126 |
}
|
127 |
}
|
128 |
else
|
129 |
{
|
130 |
+
$pmpro_msg = "Error saving order.";
|
131 |
$pmpro_msgt = "error";
|
132 |
}
|
133 |
}
|
185 |
}
|
186 |
}
|
187 |
|
|
|
188 |
?>
|
189 |
+
<div class="wrap pmpro_admin">
|
190 |
+
<div class="pmpro_banner">
|
191 |
+
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><img src="<?php echo PMPRO_URL?>/images/PaidMembershipsPro.gif" width="350" height="45" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
|
192 |
+
<div class="pmpro_tagline">Membership Plugin for WordPress</div>
|
193 |
+
|
194 |
+
<div class="pmpro_meta"><a href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>">Plugin Support</a> | <a href="http://www.paidmembershipspro.com/forums/">User Forum</a> | <strong>Version <?php echo PMPRO_VERSION?></strong></div>
|
195 |
+
</div>
|
196 |
+
<br style="clear:both;" />
|
197 |
|
198 |
<?php if(!empty($order)) { ?>
|
199 |
|
200 |
<h2>
|
201 |
<?php if(!empty($order->id)) { ?>
|
202 |
+
Order #<?php echo $order->id?>: <?php echo $order->code?>
|
203 |
<?php } else { ?>
|
204 |
+
New Order
|
205 |
<?php } ?>
|
206 |
</h2>
|
207 |
|
215 |
<tbody>
|
216 |
<tr>
|
217 |
<th scope="row" valign="top"><label>ID:</label></th>
|
218 |
+
<td><?php if(!empty($order->id)) echo $order->id; else echo "This will be generated when you save.";?></td>
|
219 |
</tr>
|
220 |
|
221 |
<tr>
|
222 |
+
<th scope="row" valign="top"><label for="code">Code:</label></th>
|
223 |
<td>
|
224 |
<?php if(in_array("code", $read_only_fields)) { echo $order->code; } else { ?>
|
225 |
<input id="code" name="code" type="text" size="50" value="<?php echo esc_attr($order->code);?>" />
|
226 |
<?php } ?>
|
227 |
+
<?php if($order_id < 0) { ?><small class="pmpro_lite">Randomly generated for you.</small><?php } ?>
|
228 |
</td>
|
229 |
</tr>
|
230 |
|
231 |
<tr>
|
232 |
+
<th scope="row" valign="top"><label for="user_id">User ID:</label></th>
|
233 |
<td>
|
234 |
<?php if(in_array("user_id", $read_only_fields) && $order_id > 0) { echo $order->user_id; } else { ?>
|
235 |
<input id="user_id" name="user_id" type="text" size="50" value="<?php echo esc_attr($order->user_id);?>" />
|
238 |
</tr>
|
239 |
|
240 |
<tr>
|
241 |
+
<th scope="row" valign="top"><label for="membership_id">Membership Level ID:</label></th>
|
242 |
<td>
|
243 |
<?php if(in_array("membership_id", $read_only_fields) && $order_id > 0) { echo $order->membership_id; } else { ?>
|
244 |
<input id="membership_id" name="membership_id" type="text" size="50" value="<?php echo esc_attr($order->membership_id);?>" />
|
247 |
</tr>
|
248 |
|
249 |
<tr>
|
250 |
+
<th scope="row" valign="top"><label for="billing_name">Billing Name:</label></th>
|
251 |
<td>
|
252 |
<?php if(in_array("billing_name", $read_only_fields) && $order_id > 0) { echo $order->billing_name; } else { ?>
|
253 |
<input id="billing_name" name="billing_name" type="text" size="50" value="<?php echo esc_attr($order->billing->name);?>" />
|
255 |
</td>
|
256 |
</tr>
|
257 |
<tr>
|
258 |
+
<th scope="row" valign="top"><label for="billing_street">Billing Street:</label></th>
|
259 |
<td>
|
260 |
<?php if(in_array("billing_street", $read_only_fields) && $order_id > 0) { echo $order->billing_street; } else { ?>
|
261 |
<input id="billing_street" name="billing_street" type="text" size="50" value="<?php echo esc_attr($order->billing->street);?>" /></td>
|
262 |
<?php } ?>
|
263 |
</tr>
|
264 |
<tr>
|
265 |
+
<th scope="row" valign="top"><label for="billing_city">Billing City:</label></th>
|
266 |
<td>
|
267 |
<?php if(in_array("billing_city", $read_only_fields) && $order_id > 0) { echo $order->billing_city; } else { ?>
|
268 |
<input id="billing_city" name="billing_city" type="text" size="50" value="<?php echo esc_attr($order->billing->city);?>" /></td>
|
269 |
<?php } ?>
|
270 |
</tr>
|
271 |
<tr>
|
272 |
+
<th scope="row" valign="top"><label for="billing_state">Billing State:</label></th>
|
273 |
<td>
|
274 |
<?php if(in_array("billing_state", $read_only_fields) && $order_id > 0) { echo $order->billing_state; } else { ?>
|
275 |
<input id="billing_state" name="billing_state" type="text" size="50" value="<?php echo esc_attr($order->billing->state);?>" /></td>
|
276 |
<?php } ?>
|
277 |
</tr>
|
278 |
<tr>
|
279 |
+
<th scope="row" valign="top"><label for="billing_zip">Billing Postal Code:</label></th>
|
280 |
<td>
|
281 |
<?php if(in_array("billing_zip", $read_only_fields) && $order_id > 0) { echo $order->billing_zip; } else { ?>
|
282 |
<input id="billing_zip" name="billing_zip" type="text" size="50" value="<?php echo esc_attr($order->billing->zip);?>" /></td>
|
283 |
<?php } ?>
|
284 |
</tr>
|
285 |
<tr>
|
286 |
+
<th scope="row" valign="top"><label for="billing_country">Billing Country:</label></th>
|
287 |
<td>
|
288 |
<?php if(in_array("billing_country", $read_only_fields) && $order_id > 0) { echo $order->billing_country; } else { ?>
|
289 |
<input id="billing_country" name="billing_country" type="text" size="50" value="<?php echo esc_attr($order->billing->country);?>" />
|
291 |
</td>
|
292 |
</tr>
|
293 |
<tr>
|
294 |
+
<th scope="row" valign="top"><label for="billing_phone">Billing Phone:</label></th>
|
295 |
<td>
|
296 |
<?php if(in_array("billing_phone", $read_only_fields) && $order_id > 0) { echo $order->billing_phone; } else { ?>
|
297 |
<input id="billing_phone" name="billing_phone" type="text" size="50" value="<?php echo esc_attr($order->billing->phone);?>" />
|
300 |
</tr>
|
301 |
|
302 |
<tr>
|
303 |
+
<th scope="row" valign="top"><label for="subtotal">Sub Total:</label></th>
|
304 |
<td>
|
305 |
<?php if(in_array("subtotal", $read_only_fields) && $order_id > 0) { echo $order->subtotal; } else { ?>
|
306 |
<input id="subtotal" name="subtotal" type="text" size="10" value="<?php echo esc_attr($order->subtotal);?>" />
|
308 |
</td>
|
309 |
</tr>
|
310 |
<tr>
|
311 |
+
<th scope="row" valign="top"><label for="tax">Tax:</label></th>
|
312 |
<td>
|
313 |
<?php if(in_array("tax", $read_only_fields) && $order_id > 0) { echo $order->tax; } else { ?>
|
314 |
<input id="tax" name="tax" type="text" size="10" value="<?php echo esc_attr($order->tax);?>" />
|
316 |
</td>
|
317 |
</tr>
|
318 |
<tr>
|
319 |
+
<th scope="row" valign="top"><label for="couponamount">Coupon Amount:</label></th>
|
320 |
<td>
|
321 |
<?php if(in_array("couponamount", $read_only_fields) && $order_id > 0) { echo $order->couponamount; } else { ?>
|
322 |
<input id="couponamount" name="couponamount" type="text" size="10" value="<?php echo esc_attr($order->couponamount);?>" />
|
324 |
</td>
|
325 |
</tr>
|
326 |
<tr>
|
327 |
+
<th scope="row" valign="top"><label for="total">Total:</label></th>
|
328 |
<td>
|
329 |
<?php if(in_array("total", $read_only_fields) && $order_id > 0) { echo $order->total; } else { ?>
|
330 |
<input id="total" name="total" type="text" size="10" value="<?php echo esc_attr($order->total);?>" />
|
331 |
<?php } ?>
|
332 |
+
<small class="pmpro_lite">Should be subtotal + tax - couponamount.</small>
|
333 |
</td>
|
334 |
</tr>
|
335 |
|
336 |
<tr>
|
337 |
+
<th scope="row" valign="top"><label for="payment_type">Payment Type:</label></th>
|
338 |
<td>
|
339 |
<?php if(in_array("payment_type", $read_only_fields) && $order_id > 0) { echo $order->payment_type; } else { ?>
|
340 |
<input id="payment_type" name="payment_type" type="text" size="50" value="<?php echo esc_attr($order->payment_type);?>" />
|
341 |
<?php } ?>
|
342 |
+
<small class="pmpro_lite">e.g. PayPal Express, PayPal Standard, Credit Card.</small>
|
343 |
</td>
|
344 |
</tr>
|
345 |
<tr>
|
346 |
+
<th scope="row" valign="top"><label for="cardtype">Card Type:</label></th>
|
347 |
<td>
|
348 |
<?php if(in_array("cardtype", $read_only_fields) && $order_id > 0) { echo $order->cardtype; } else { ?>
|
349 |
<input id="cardtype" name="cardtype" type="text" size="50" value="<?php echo esc_attr($order->cardtype);?>" />
|
350 |
<?php } ?>
|
351 |
+
<small class="pmpro_lite">e.g. Visa, MasterCard, AMEX, etc</small>
|
352 |
</td>
|
353 |
</tr>
|
354 |
<tr>
|
355 |
+
<th scope="row" valign="top"><label for="accountnumber">Account Number:</label></th>
|
356 |
<td>
|
357 |
<?php if(in_array("accountnumber", $read_only_fields) && $order_id > 0) { echo $order->accountnumber; } else { ?>
|
358 |
<input id="accountnumber" name="accountnumber" type="text" size="50" value="<?php echo esc_attr($order->accountnumber);?>" />
|
359 |
<?php } ?>
|
360 |
+
<small class="pmpro_lite">Obscure all but last 4 digits.</small>
|
361 |
</td>
|
362 |
</tr>
|
363 |
<?php if(in_array("ExpirationDate", $read_only_fields) && $order_id > 0) { echo $order->ExpirationDate; } else { ?>
|
364 |
<tr>
|
365 |
+
<th scope="row" valign="top"><label for="expirationmonth">Expiration Month:</label></th>
|
366 |
<td>
|
367 |
<input id="expirationmonth" name="expirationmonth" type="text" size="10" value="<?php echo esc_attr($order->expirationmonth);?>" />
|
368 |
<small class="pmpro_lite">MM</small>
|
369 |
</td>
|
370 |
</tr>
|
371 |
<tr>
|
372 |
+
<th scope="row" valign="top"><label for="expirationyear">Expiration Year:</label></th>
|
373 |
<td>
|
374 |
<input id="expirationyear" name="expirationyear" type="text" size="10" value="<?php echo esc_attr($order->expirationyear);?>" />
|
375 |
<small class="pmpro_lite">YYYY</small>
|
377 |
</tr>
|
378 |
<?php } ?>
|
379 |
<tr>
|
380 |
+
<th scope="row" valign="top"><label for="status">Status:</label></th>
|
381 |
<td>
|
382 |
<?php if(in_array("status", $read_only_fields) && $order_id > 0) { echo $order->status; } else { ?>
|
383 |
<?php
|
398 |
</tr>
|
399 |
|
400 |
<tr>
|
401 |
+
<th scope="row" valign="top"><label for="gateway">Gateway:</label></th>
|
402 |
<td>
|
403 |
<?php if(in_array("gateway", $read_only_fields) && $order_id > 0) { echo $order->gateway; } else { ?>
|
404 |
<select id="gateway" name="gateway" onchange="pmpro_changeGateway(jQuery(this).val());">
|
405 |
+
<option value="" <?php if(empty($order->gateway)) { ?>selected="selected"<?php } ?>>Testing Only</option>
|
406 |
+
<option value="check" <?php if($order->gateway == "check") { ?>selected="selected"<?php } ?>>Pay by Check</option>
|
407 |
<option value="stripe" <?php if($order->gateway == "stripe") { ?>selected="selected"<?php } ?>>Stripe</option>
|
408 |
<option value="paypalstandard" <?php if($order->gateway == "paypalstandard") { ?>selected="selected"<?php } ?>>PayPal Standard</option>
|
409 |
<option value="paypalexpress" <?php if($order->gateway == "paypalexpress") { ?>selected="selected"<?php } ?>>PayPal Express</option>
|
415 |
</td>
|
416 |
</tr>
|
417 |
<tr>
|
418 |
+
<th scope="row" valign="top"><label for="gateway_environment">Gateway Environment:</label></th>
|
419 |
<td>
|
420 |
<?php if(in_array("gateway_environment", $read_only_fields) && $order_id > 0) { echo $order->gateway_environment; } else { ?>
|
421 |
<select name="gateway_environment">
|
422 |
+
<option value="sandbox" <?php if($order->gateway_environment == "sandbox") { ?>selected="selected"<?php } ?>>Sandbox/Testing</option>
|
423 |
+
<option value="live" <?php if($order->gateway_environment == "live") { ?>selected="selected"<?php } ?>>Live/Production</option>
|
424 |
</select>
|
425 |
<?php } ?>
|
426 |
</td>
|
427 |
</tr>
|
428 |
|
429 |
<tr>
|
430 |
+
<th scope="row" valign="top"><label for="payment_transaction_id">Payment Transaction ID:</label></th>
|
431 |
<td>
|
432 |
<?php if(in_array("payment_transaction_id", $read_only_fields) && $order_id > 0) { echo $order->payment_transaction_id; } else { ?>
|
433 |
<input id="payment_transaction_id" name="payment_transaction_id" type="text" size="50" value="<?php echo esc_attr($order->payment_transaction_id);?>" />
|
434 |
<?php } ?>
|
435 |
+
<small class="pmpro_lite">Generated by the gateway. Useful to cross reference orders.</small>
|
436 |
</td>
|
437 |
</tr>
|
438 |
<tr>
|
439 |
+
<th scope="row" valign="top"><label for="subscription_transaction_id">Subscription Transaction ID:</label></th>
|
440 |
<td>
|
441 |
+
<?php if(in_array("code", $read_only_fields) && $order_id > 0) { echo $order->code; } else { ?>
|
442 |
<input id="subscription_transaction_id" name="subscription_transaction_id" type="text" size="50" value="<?php echo esc_attr($order->subscription_transaction_id);?>" />
|
443 |
<?php } ?>
|
444 |
+
<small class="pmpro_lite">Generated by the gateway. Useful to cross reference subscriptions.</small>
|
445 |
</td>
|
446 |
</tr>
|
447 |
|
448 |
<tr>
|
449 |
+
<th scope="row" valign="top"><label for="ts_month">Date:</label></th>
|
450 |
<td>
|
451 |
<?php if(in_array("timestamp", $read_only_fields) && $order_id > 0) { echo date(option("date_format"), $order->timestamp); } else { ?>
|
452 |
<?php
|
454 |
if(!empty($order->timestamp))
|
455 |
$timestamp = $order->timestamp;
|
456 |
else
|
457 |
+
$timestamp = time();
|
458 |
|
459 |
$year = date("Y", $timestamp);
|
460 |
$month = date("n", $timestamp);
|
465 |
for($i = 1; $i < 13; $i++)
|
466 |
{
|
467 |
?>
|
468 |
+
<option value="<?php echo $i?>" <?php if($i == $month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $year))?></option>
|
469 |
<?php
|
470 |
}
|
471 |
?>
|
481 |
if(!empty($affiliates)) {
|
482 |
?>
|
483 |
<tr>
|
484 |
+
<th scope="row" valign="top"><label for="affiliate_id">Affiliate ID:</label></th>
|
485 |
<td>
|
486 |
<?php if(in_array("affiliate_id", $read_only_fields) && $order_id > 0) { echo $order->affiliate_id; } else { ?>
|
487 |
<input id="affiliate_id" name="affiliate_id" type="text" size="50" value="<?php echo esc_attr($order->affiliate_id);?>" />
|
489 |
</td>
|
490 |
</tr>
|
491 |
<tr>
|
492 |
+
<th scope="row" valign="top"><label for="affiliate_subid">Affiliate SubID:</label></th>
|
493 |
<td>
|
494 |
<?php if(in_array("affiliate_subid", $read_only_fields) && $order_id > 0) { echo $order->affiliate_subid; } else { ?>
|
495 |
<input id="affiliate_subid" name="affiliate_subid" type="text" size="50" value="<?php echo esc_attr($order->affiliate_subid);?>" />
|
499 |
<?php } ?>
|
500 |
|
501 |
<tr>
|
502 |
+
<th scope="row" valign="top"><label for="notes">Notes:</label></th>
|
503 |
<td>
|
504 |
<?php if(in_array("notes", $read_only_fields) && $order_id > 0) { echo $order->notes; } else { ?>
|
505 |
<textarea id="notes" name="notes" rows="5" cols="80"><?php echo esc_textarea($order->notes);?></textarea>
|
514 |
|
515 |
<p class="submit topborder">
|
516 |
<input name="order" type="hidden" value="<?php if(!empty($order->id)) echo $order->id; else echo $order_id;?>" />
|
517 |
+
<input name="save" type="submit" class="button-primary" value="Save Order" />
|
518 |
+
<input name="cancel" type="button" value="Cancel" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-orders')?>';" />
|
519 |
</p>
|
520 |
|
521 |
</form>
|
524 |
|
525 |
<form id="posts-filter" method="get" action="">
|
526 |
<h2>
|
527 |
+
Orders
|
528 |
+
<a href="admin.php?page=pmpro-orders&order=-1" class="button add-new-h2">+ Add New Order</a>
|
529 |
+
<a target="_blank" href="<?php echo admin_url('admin-ajax.php');?>?action=orders_csv&s=<?php echo $s?>&l=<?php echo $l?>" class="button add-new-h2">Export to CSV</a>
|
530 |
+
</h2>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
531 |
|
532 |
<?php if(!empty($pmpro_msg)) { ?>
|
533 |
<div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
|
534 |
<?php } ?>
|
535 |
|
|
|
536 |
<ul class="subsubsub">
|
537 |
<li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
538 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
539 |
</li>
|
540 |
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
541 |
<p class="search-box">
|
542 |
+
<label class="hidden" for="post-search-input">Search Orders:</label>
|
543 |
<input type="hidden" name="page" value="pmpro-orders" />
|
544 |
<input id="post-search-input" type="text" value="<?php echo $s?>" name="s"/>
|
545 |
+
<input class="button" type="submit" value="Search Orders"/>
|
546 |
</p>
|
|
|
547 |
<?php
|
548 |
//some vars for the search
|
549 |
if(isset($_REQUEST['pn']))
|
559 |
$end = $pn * $limit;
|
560 |
$start = $end - $limit;
|
561 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
if($s)
|
563 |
{
|
564 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS o.id FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->users u ON o.user_id = u.ID LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id ";
|
577 |
$fields = apply_filters("pmpro_orders_search_fields", $fields);
|
578 |
|
579 |
foreach($fields as $field)
|
580 |
+
$sqlQuery .= " OR " . $field . " LIKE '%" . $wpdb->escape($s) . "%' ";
|
581 |
$sqlQuery .= ") ";
|
|
|
|
|
|
|
582 |
$sqlQuery .= "GROUP BY o.id ORDER BY o.id DESC, o.timestamp DESC ";
|
583 |
}
|
584 |
else
|
585 |
{
|
586 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS id FROM $wpdb->pmpro_membership_orders ORDER BY id DESC, timestamp DESC ";
|
587 |
}
|
588 |
|
589 |
$sqlQuery .= "LIMIT $start, $limit";
|
590 |
|
591 |
$order_ids = $wpdb->get_col($sqlQuery);
|
|
|
592 |
$totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
|
593 |
|
594 |
if($order_ids)
|
595 |
{
|
596 |
?>
|
597 |
+
<p class="clear"><?php echo strval($totalrows)?> orders found.</span></p>
|
598 |
<?php
|
599 |
}
|
600 |
?>
|
601 |
<table class="widefat">
|
602 |
<thead>
|
603 |
<tr class="thead">
|
604 |
+
<th>ID</th>
|
605 |
+
<th>Code</th>
|
606 |
+
<th>User</th>
|
607 |
<?php do_action("pmpro_orders_extra_cols_header", $order_ids);?>
|
608 |
+
<th>Membership Level</th>
|
609 |
+
<th>Total</th>
|
610 |
+
<th>Payment</th>
|
611 |
+
<th>Gateway</th>
|
612 |
+
<th>Transaction IDs</th>
|
613 |
+
<th>Status</th>
|
614 |
+
<th>Date</th>
|
615 |
<th></th>
|
616 |
<th></th>
|
617 |
<th></th>
|
634 |
<?php if(!empty($order->user)) { ?>
|
635 |
<a href="user-edit.php?user_id=<?php echo $order->user->ID?>"><?php echo $order->user->user_login?></a>
|
636 |
<?php } else { ?>
|
637 |
+
[deleted]
|
638 |
<?php } ?>
|
639 |
</td>
|
640 |
<?php do_action("pmpro_orders_extra_cols_body", $order);?>
|
655 |
</td>
|
656 |
<td><?php echo $order->gateway;?><?php if($order->gateway_environment == "test") echo "(test)";?></td>
|
657 |
<td>
|
658 |
+
Payment: <?php if(!empty($order->payment_transaction_id)) echo $order->payment_transaction_id; else echo "N/A";?>
|
659 |
<br />
|
660 |
+
Subscription: <?php if(!empty($order->subscription_transaction_id)) echo $order->subscription_transaction_id; else echo "N/A";?>
|
661 |
</td>
|
662 |
<td><?php echo $order->status;?></td>
|
663 |
<td><?php echo date(get_option('date_format'), $order->timestamp);?></td>
|
664 |
<td align="center">
|
665 |
+
<a href="admin.php?page=pmpro-orders&order=<?php echo $order->id;?>">edit</a>
|
666 |
</td>
|
667 |
<td align="center">
|
668 |
+
<a href="admin.php?page=pmpro-orders&order=-1©=<?php echo $order->id;?>">copy</a>
|
669 |
</td>
|
670 |
<td align="center">
|
671 |
+
<a href="javascript:askfirst('Deleting orders is permanent and can affect active users. Are you sure you want to delete order <?php echo str_replace("'", "", $order->code);?>?', 'admin.php?page=pmpro-orders&delete=<?php echo $order->id;?>'); void(0);">delete</a>
|
672 |
</td>
|
673 |
</tr>
|
674 |
<?php
|
678 |
{
|
679 |
?>
|
680 |
<tr>
|
681 |
+
<td colspan="9"><p>No orders found.</p></td>
|
682 |
</tr>
|
683 |
<?php
|
684 |
}
|
688 |
</form>
|
689 |
|
690 |
<?php
|
691 |
+
echo pmpro_getPaginationString($pn, $totalrows, $limit, 1, get_admin_url(NULL, "/admin.php?page=pmpro-orders&s=" . urlencode($s)), "&l=$l&limit=$limit&pn=");
|
|
|
|
|
692 |
?>
|
693 |
|
694 |
<?php } ?>
|
695 |
|
696 |
+
</div>
|
|
|
|
adminpages/pagesettings.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_pagesettings")))
|
4 |
{
|
5 |
-
die(
|
6 |
}
|
7 |
|
8 |
global $wpdb, $msg, $msgt;
|
@@ -46,37 +46,9 @@
|
|
46 |
{
|
47 |
if(!$pmpro_page_id)
|
48 |
{
|
49 |
-
switch ($pmpro_page_name) {
|
50 |
-
case 'account':
|
51 |
-
$pmpro_page_title = __( 'Membership Account', 'pmpro' );
|
52 |
-
break;
|
53 |
-
case 'billing':
|
54 |
-
$pmpro_page_title = __( 'Membership Billing', 'pmpro' );
|
55 |
-
break;
|
56 |
-
case 'cancel':
|
57 |
-
$pmpro_page_title = __( 'Membership Cancel', 'pmpro' );
|
58 |
-
break;
|
59 |
-
case 'checkout':
|
60 |
-
$pmpro_page_title = __( 'Membership Checkout', 'pmpro' );
|
61 |
-
break;
|
62 |
-
case 'confirmation':
|
63 |
-
$pmpro_page_title = __( 'Membership Confirmation', 'pmpro' );
|
64 |
-
break;
|
65 |
-
case 'invoice':
|
66 |
-
$pmpro_page_title = __( 'Membership Invoice', 'pmpro' );
|
67 |
-
break;
|
68 |
-
case 'levels':
|
69 |
-
$pmpro_page_title = __( 'Membership Levels', 'pmpro' );
|
70 |
-
break;
|
71 |
-
|
72 |
-
default:
|
73 |
-
$pmpro_page_title = sprintf( __( 'Membership %s', 'Page title template', 'pmpro' ), ucwords($pmpro_page_name) );
|
74 |
-
break;
|
75 |
-
}
|
76 |
-
|
77 |
//no id set. create an array to store the page info
|
78 |
$insert = array(
|
79 |
-
'post_title' => $
|
80 |
'post_status' => 'publish',
|
81 |
'post_type' => 'page',
|
82 |
'post_content' => '[pmpro_' . $pmpro_page_name . ']',
|
@@ -108,7 +80,7 @@
|
|
108 |
if(!empty($pages_created))
|
109 |
{
|
110 |
$msg = true;
|
111 |
-
$msgt =
|
112 |
}
|
113 |
}
|
114 |
|
@@ -117,19 +89,19 @@
|
|
117 |
|
118 |
|
119 |
<form action="" method="post" enctype="multipart/form-data">
|
120 |
-
<h2
|
121 |
<?php
|
122 |
global $pmpro_pages_ready;
|
123 |
if($pmpro_pages_ready)
|
124 |
{
|
125 |
?>
|
126 |
-
<p
|
127 |
<?php
|
128 |
}
|
129 |
else
|
130 |
{
|
131 |
?>
|
132 |
-
<p
|
133 |
<?php
|
134 |
}
|
135 |
?>
|
@@ -137,118 +109,104 @@
|
|
137 |
<tbody>
|
138 |
<tr>
|
139 |
<th scope="row" valign="top">
|
140 |
-
<label for="account_page_id"
|
141 |
</th>
|
142 |
<td>
|
143 |
<?php
|
144 |
wp_dropdown_pages(array("name"=>"account_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['account']));
|
145 |
?>
|
146 |
<?php if(!empty($pmpro_pages['account'])) { ?>
|
147 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['account']
|
148 |
-
|
149 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['account']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
150 |
<?php } ?>
|
151 |
-
<br /><small class="pmpro_lite"
|
152 |
</td>
|
153 |
<tr>
|
154 |
<th scope="row" valign="top">
|
155 |
-
<label for="billing_page_id"
|
156 |
</th>
|
157 |
<td>
|
158 |
<?php
|
159 |
wp_dropdown_pages(array("name"=>"billing_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['billing']));
|
160 |
?>
|
161 |
<?php if(!empty($pmpro_pages['billing'])) { ?>
|
162 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['billing']?>&action=edit" class="
|
163 |
-
|
164 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['billing']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
165 |
<?php } ?>
|
166 |
-
<br /><small class="pmpro_lite"
|
167 |
</td>
|
168 |
<tr>
|
169 |
<th scope="row" valign="top">
|
170 |
-
<label for="cancel_page_id"
|
171 |
</th>
|
172 |
<td>
|
173 |
<?php
|
174 |
wp_dropdown_pages(array("name"=>"cancel_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['cancel']));
|
175 |
?>
|
176 |
<?php if(!empty($pmpro_pages['cancel'])) { ?>
|
177 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['cancel']?>&action=edit" class="
|
178 |
-
|
179 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['cancel']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
180 |
<?php } ?>
|
181 |
-
<br /><small class="pmpro_lite"
|
182 |
</td>
|
183 |
</tr>
|
184 |
<tr>
|
185 |
<th scope="row" valign="top">
|
186 |
-
<label for="checkout_page_id"
|
187 |
</th>
|
188 |
<td>
|
189 |
<?php
|
190 |
wp_dropdown_pages(array("name"=>"checkout_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['checkout']));
|
191 |
?>
|
192 |
<?php if(!empty($pmpro_pages['checkout'])) { ?>
|
193 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['checkout']?>&action=edit" class="
|
194 |
-
|
195 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['checkout']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
196 |
<?php } ?>
|
197 |
-
<br /><small class="pmpro_lite"
|
198 |
</td>
|
199 |
</tr>
|
200 |
<tr>
|
201 |
<th scope="row" valign="top">
|
202 |
-
<label for="confirmation_page_id"
|
203 |
</th>
|
204 |
<td>
|
205 |
<?php
|
206 |
wp_dropdown_pages(array("name"=>"confirmation_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['confirmation']));
|
207 |
?>
|
208 |
<?php if(!empty($pmpro_pages['confirmation'])) { ?>
|
209 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['confirmation']?>&action=edit" class="
|
210 |
-
|
211 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['confirmation']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
212 |
<?php } ?>
|
213 |
-
<br /><small class="pmpro_lite"
|
214 |
</td>
|
215 |
</tr>
|
216 |
<tr>
|
217 |
<th scope="row" valign="top">
|
218 |
-
<label for="invoice_page_id"
|
219 |
</th>
|
220 |
<td>
|
221 |
<?php
|
222 |
wp_dropdown_pages(array("name"=>"invoice_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['invoice']));
|
223 |
?>
|
224 |
<?php if(!empty($pmpro_pages['invoice'])) { ?>
|
225 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['invoice']?>&action=edit" class="
|
226 |
-
|
227 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['invoice']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
228 |
<?php } ?>
|
229 |
-
<br /><small class="pmpro_lite"
|
230 |
</td>
|
231 |
</tr>
|
232 |
<tr>
|
233 |
<th scope="row" valign="top">
|
234 |
-
<label for="levels_page_id"
|
235 |
</th>
|
236 |
<td>
|
237 |
<?php
|
238 |
wp_dropdown_pages(array("name"=>"levels_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['levels']));
|
239 |
?>
|
240 |
<?php if(!empty($pmpro_pages['levels'])) { ?>
|
241 |
-
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['levels']?>&action=edit" class="
|
242 |
-
|
243 |
-
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['levels']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
|
244 |
<?php } ?>
|
245 |
-
<br /><small class="pmpro_lite"
|
246 |
</td>
|
247 |
</tr>
|
248 |
</tbody>
|
249 |
</table>
|
250 |
<p class="submit">
|
251 |
-
<input name="savesettings" type="submit" class="button
|
252 |
</p>
|
253 |
</form>
|
254 |
|
2 |
//only admins can get this
|
3 |
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_pagesettings")))
|
4 |
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
}
|
7 |
|
8 |
global $wpdb, $msg, $msgt;
|
46 |
{
|
47 |
if(!$pmpro_page_id)
|
48 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
//no id set. create an array to store the page info
|
50 |
$insert = array(
|
51 |
+
'post_title' => 'Membership ' . ucwords($pmpro_page_name),
|
52 |
'post_status' => 'publish',
|
53 |
'post_type' => 'page',
|
54 |
'post_content' => '[pmpro_' . $pmpro_page_name . ']',
|
80 |
if(!empty($pages_created))
|
81 |
{
|
82 |
$msg = true;
|
83 |
+
$msgt = "The following pages have been created for you: " . implode(", ", $pages_created) . ".";
|
84 |
}
|
85 |
}
|
86 |
|
89 |
|
90 |
|
91 |
<form action="" method="post" enctype="multipart/form-data">
|
92 |
+
<h2>Pages</h2>
|
93 |
<?php
|
94 |
global $pmpro_pages_ready;
|
95 |
if($pmpro_pages_ready)
|
96 |
{
|
97 |
?>
|
98 |
+
<p>Manage the WordPress pages assigned to each required Paid Memberships Pro page.</p>
|
99 |
<?php
|
100 |
}
|
101 |
else
|
102 |
{
|
103 |
?>
|
104 |
+
<p>Assign the WordPress pages for each required Paid Memberships Pro page or <a href="?page=pmpro-pagesettings&createpages=1">click here to let us generate them for you</a>.</p>
|
105 |
<?php
|
106 |
}
|
107 |
?>
|
109 |
<tbody>
|
110 |
<tr>
|
111 |
<th scope="row" valign="top">
|
112 |
+
<label for="account_page_id">Account Page:</label>
|
113 |
</th>
|
114 |
<td>
|
115 |
<?php
|
116 |
wp_dropdown_pages(array("name"=>"account_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['account']));
|
117 |
?>
|
118 |
<?php if(!empty($pmpro_pages['account'])) { ?>
|
119 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['account']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
120 |
<?php } ?>
|
121 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_account].</small>
|
122 |
</td>
|
123 |
<tr>
|
124 |
<th scope="row" valign="top">
|
125 |
+
<label for="billing_page_id">Billing Information Page:</label>
|
126 |
</th>
|
127 |
<td>
|
128 |
<?php
|
129 |
wp_dropdown_pages(array("name"=>"billing_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['billing']));
|
130 |
?>
|
131 |
<?php if(!empty($pmpro_pages['billing'])) { ?>
|
132 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['billing']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
133 |
<?php } ?>
|
134 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_billing].</small>
|
135 |
</td>
|
136 |
<tr>
|
137 |
<th scope="row" valign="top">
|
138 |
+
<label for="cancel_page_id">Cancel Page:</label>
|
139 |
</th>
|
140 |
<td>
|
141 |
<?php
|
142 |
wp_dropdown_pages(array("name"=>"cancel_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['cancel']));
|
143 |
?>
|
144 |
<?php if(!empty($pmpro_pages['cancel'])) { ?>
|
145 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['cancel']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
146 |
<?php } ?>
|
147 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_cancel].</small>
|
148 |
</td>
|
149 |
</tr>
|
150 |
<tr>
|
151 |
<th scope="row" valign="top">
|
152 |
+
<label for="checkout_page_id">Checkout Page:</label>
|
153 |
</th>
|
154 |
<td>
|
155 |
<?php
|
156 |
wp_dropdown_pages(array("name"=>"checkout_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['checkout']));
|
157 |
?>
|
158 |
<?php if(!empty($pmpro_pages['checkout'])) { ?>
|
159 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['checkout']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
160 |
<?php } ?>
|
161 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_checkout].</small>
|
162 |
</td>
|
163 |
</tr>
|
164 |
<tr>
|
165 |
<th scope="row" valign="top">
|
166 |
+
<label for="confirmation_page_id">Confirmation Page:</label>
|
167 |
</th>
|
168 |
<td>
|
169 |
<?php
|
170 |
wp_dropdown_pages(array("name"=>"confirmation_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['confirmation']));
|
171 |
?>
|
172 |
<?php if(!empty($pmpro_pages['confirmation'])) { ?>
|
173 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['confirmation']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
174 |
<?php } ?>
|
175 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_confirmation].</small>
|
176 |
</td>
|
177 |
</tr>
|
178 |
<tr>
|
179 |
<th scope="row" valign="top">
|
180 |
+
<label for="invoice_page_id">Invoice Page:</label>
|
181 |
</th>
|
182 |
<td>
|
183 |
<?php
|
184 |
wp_dropdown_pages(array("name"=>"invoice_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['invoice']));
|
185 |
?>
|
186 |
<?php if(!empty($pmpro_pages['invoice'])) { ?>
|
187 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['invoice']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
188 |
<?php } ?>
|
189 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_invoice].</small>
|
190 |
</td>
|
191 |
</tr>
|
192 |
<tr>
|
193 |
<th scope="row" valign="top">
|
194 |
+
<label for="levels_page_id">Levels Page:</label>
|
195 |
</th>
|
196 |
<td>
|
197 |
<?php
|
198 |
wp_dropdown_pages(array("name"=>"levels_page_id", "show_option_none"=>"-- Choose One --", "selected"=>$pmpro_pages['levels']));
|
199 |
?>
|
200 |
<?php if(!empty($pmpro_pages['levels'])) { ?>
|
201 |
+
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['levels']?>&action=edit" class="pmpro_page_edit">edit page</a>
|
|
|
|
|
202 |
<?php } ?>
|
203 |
+
<br /><small class="pmpro_lite">Include the shortcode [pmpro_levels].</small>
|
204 |
</td>
|
205 |
</tr>
|
206 |
</tbody>
|
207 |
</table>
|
208 |
<p class="submit">
|
209 |
+
<input name="savesettings" type="submit" class="button-primary" value="Save Settings" />
|
210 |
</p>
|
211 |
</form>
|
212 |
|
adminpages/paymentsettings.php
CHANGED
@@ -1,538 +1,484 @@
|
|
1 |
-
<?php
|
2 |
-
//only admins can get this
|
3 |
-
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_paymentsettings")))
|
4 |
-
{
|
5 |
-
die(
|
6 |
-
}
|
7 |
-
|
8 |
-
global $wpdb, $pmpro_currency_symbol, $msg, $msgt;
|
9 |
-
|
10 |
-
//get/set settings
|
11 |
-
if(!empty($_REQUEST['savesettings']))
|
12 |
-
{
|
13 |
-
pmpro_setOption("sslseal");
|
14 |
-
pmpro_setOption("nuclear_HTTPS");
|
15 |
-
|
16 |
-
//gateway options
|
17 |
-
pmpro_setOption("gateway");
|
18 |
-
pmpro_setOption("gateway_environment");
|
19 |
-
pmpro_setOption("gateway_email");
|
20 |
-
pmpro_setOption("payflow_partner");
|
21 |
-
pmpro_setOption("payflow_vendor");
|
22 |
-
pmpro_setOption("payflow_user");
|
23 |
-
pmpro_setOption("payflow_pwd");
|
24 |
-
pmpro_setOption("apiusername");
|
25 |
-
pmpro_setOption("apipassword");
|
26 |
-
pmpro_setOption("apisignature");
|
27 |
-
pmpro_setOption("loginname");
|
28 |
-
pmpro_setOption("transactionkey");
|
29 |
-
pmpro_setOption("stripe_secretkey");
|
30 |
-
pmpro_setOption("stripe_publishablekey");
|
31 |
-
pmpro_setOption("
|
32 |
-
pmpro_setOption("
|
33 |
-
pmpro_setOption("
|
34 |
-
pmpro_setOption("
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
if(!empty($_REQUEST['
|
51 |
-
$pmpro_accepted_credit_cards[] = "
|
52 |
-
if(!empty($_REQUEST['
|
53 |
-
$pmpro_accepted_credit_cards[] = "
|
54 |
-
if(!empty($_REQUEST['
|
55 |
-
$pmpro_accepted_credit_cards[] = "
|
56 |
-
if(!empty($_REQUEST['
|
57 |
-
$pmpro_accepted_credit_cards[] = "
|
58 |
-
if(!empty($_REQUEST['
|
59 |
-
$pmpro_accepted_credit_cards[] = "
|
60 |
-
if(!empty($_REQUEST['
|
61 |
-
$pmpro_accepted_credit_cards[] = "
|
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 |
-
<option value=""
|
159 |
-
<option value="
|
160 |
-
<option value="
|
161 |
-
<option value="
|
162 |
-
<option value="
|
163 |
-
<option value="
|
164 |
-
<option value="
|
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 |
-
|
190 |
-
</
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
<tr class="gateway
|
259 |
-
<th scope="row" valign="top">
|
260 |
-
<label for="
|
261 |
-
</th>
|
262 |
-
<td>
|
263 |
-
<input type="text"
|
264 |
-
</td>
|
265 |
-
</tr>
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
<tr class="gateway
|
276 |
-
<th scope="row" valign="top">
|
277 |
-
<label for="
|
278 |
-
</th>
|
279 |
-
<td>
|
280 |
-
<input type="text"
|
281 |
-
</td>
|
282 |
-
</tr>
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
<tr class="gateway
|
293 |
-
<th scope="row" valign="top">
|
294 |
-
<label for="
|
295 |
-
</th>
|
296 |
-
<td>
|
297 |
-
<input type="text"
|
298 |
-
</td>
|
299 |
-
</tr>
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
<tr class="gateway
|
326 |
-
<th scope="row" valign="top">
|
327 |
-
<label for="
|
328 |
-
</th>
|
329 |
-
<td>
|
330 |
-
<
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
</
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
<
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
<
|
389 |
-
<
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
<
|
411 |
-
|
412 |
-
|
413 |
-
<
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
</td>
|
426 |
-
</tr>
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
<
|
438 |
-
</
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
<
|
473 |
-
</td>
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
<label><?php _e('IPN Handler URL', 'pmpro');?>:</label>
|
486 |
-
</th>
|
487 |
-
<td>
|
488 |
-
<p><?php _e('To fully integrate with PayPal, be sure to set your IPN Handler URL to ', 'pmpro');?> <pre><?php echo admin_url("admin-ajax.php") . "?action=ipnhandler";?></pre></p>
|
489 |
-
</td>
|
490 |
-
</tr>
|
491 |
-
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
492 |
-
<th scope="row" valign="top">
|
493 |
-
<label><?php _e('TwoCheckout INS URL', 'pmpro');?>:</label>
|
494 |
-
</th>
|
495 |
-
<td>
|
496 |
-
<p><?php _e('To fully integrate with 2Checkout, be sure to set your 2Checkout INS URL ', 'pmpro');?> <pre><?php echo admin_url("admin-ajax.php") . "?action=twocheckout-ins";?></pre></p>
|
497 |
-
</td>
|
498 |
-
</tr>
|
499 |
-
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
500 |
-
<th scope="row" valign="top">
|
501 |
-
<label><?php _e('Silent Post URL', 'pmpro');?>:</label>
|
502 |
-
</th>
|
503 |
-
<td>
|
504 |
-
<p><?php _e('To fully integrate with Authorize.net, be sure to set your Silent Post URL to', 'pmpro');?> <pre><?php echo admin_url("admin-ajax.php") . "?action=authnet_silent_post";?></pre></p>
|
505 |
-
</td>
|
506 |
-
</tr>
|
507 |
-
<tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
|
508 |
-
<th scope="row" valign="top">
|
509 |
-
<label><?php _e('Web Hook URL', 'pmpro');?>:</label>
|
510 |
-
</th>
|
511 |
-
<td>
|
512 |
-
<p><?php _e('To fully integrate with Stripe, be sure to set your Web Hook URL to', 'pmpro');?> <pre><?php echo admin_url("admin-ajax.php") . "?action=stripe_webhook";?></pre></p>
|
513 |
-
</td>
|
514 |
-
</tr>
|
515 |
-
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
516 |
-
<th scope="row" valign="top">
|
517 |
-
<label><?php _e('Web Hook URL', 'pmpro');?>:</label>
|
518 |
-
</th>
|
519 |
-
<td>
|
520 |
-
<p>
|
521 |
-
<?php _e('To fully integrate with Braintree, be sure to set your Web Hook URL to', 'pmpro');?>
|
522 |
-
<pre><?php
|
523 |
-
//echo admin_url("admin-ajax.php") . "?action=braintree_webhook";
|
524 |
-
echo PMPRO_URL . "/services/braintree-webhook.php";
|
525 |
-
?></pre>.
|
526 |
-
</p>
|
527 |
-
</td>
|
528 |
-
</tr>
|
529 |
-
</tbody>
|
530 |
-
</table>
|
531 |
-
<p class="submit">
|
532 |
-
<input name="savesettings" type="submit" class="button-primary" value="<?php _e('Save Settings', 'pmpro');?>" />
|
533 |
-
</p>
|
534 |
-
</form>
|
535 |
-
|
536 |
-
<?php
|
537 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
538 |
-
?>
|
1 |
+
<?php
|
2 |
+
//only admins can get this
|
3 |
+
if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_paymentsettings")))
|
4 |
+
{
|
5 |
+
die("You do not have permissions to perform this action.");
|
6 |
+
}
|
7 |
+
|
8 |
+
global $wpdb, $pmpro_currency_symbol, $msg, $msgt;
|
9 |
+
|
10 |
+
//get/set settings
|
11 |
+
if(!empty($_REQUEST['savesettings']))
|
12 |
+
{
|
13 |
+
pmpro_setOption("sslseal");
|
14 |
+
pmpro_setOption("nuclear_HTTPS");
|
15 |
+
|
16 |
+
//gateway options
|
17 |
+
pmpro_setOption("gateway");
|
18 |
+
pmpro_setOption("gateway_environment");
|
19 |
+
pmpro_setOption("gateway_email");
|
20 |
+
pmpro_setOption("payflow_partner");
|
21 |
+
pmpro_setOption("payflow_vendor");
|
22 |
+
pmpro_setOption("payflow_user");
|
23 |
+
pmpro_setOption("payflow_pwd");
|
24 |
+
pmpro_setOption("apiusername");
|
25 |
+
pmpro_setOption("apipassword");
|
26 |
+
pmpro_setOption("apisignature");
|
27 |
+
pmpro_setOption("loginname");
|
28 |
+
pmpro_setOption("transactionkey");
|
29 |
+
pmpro_setOption("stripe_secretkey");
|
30 |
+
pmpro_setOption("stripe_publishablekey");
|
31 |
+
pmpro_setOption("braintree_merchantid");
|
32 |
+
pmpro_setOption("braintree_publickey");
|
33 |
+
pmpro_setOption("braintree_privatekey");
|
34 |
+
pmpro_setOption("braintree_encryptionkey");
|
35 |
+
|
36 |
+
//currency
|
37 |
+
$currency_paypal = $_POST['currency_paypal'];
|
38 |
+
$currency_stripe = $_POST['currency_stripe'];
|
39 |
+
$currency_fixed = $_POST['currency_fixed'];
|
40 |
+
|
41 |
+
if($_POST['gateway'] == "authorizenet" || $_POST['gateway'] == "payflowpro")
|
42 |
+
pmpro_setOption("currency", $currency_fixed);
|
43 |
+
elseif($_POST['gateway'] == "stripe")
|
44 |
+
pmpro_setOption("currency", $currency_stripe);
|
45 |
+
else
|
46 |
+
pmpro_setOption("currency", $currency_paypal);
|
47 |
+
|
48 |
+
//credit cards
|
49 |
+
$pmpro_accepted_credit_cards = array();
|
50 |
+
if(!empty($_REQUEST['creditcards_visa']))
|
51 |
+
$pmpro_accepted_credit_cards[] = "Visa";
|
52 |
+
if(!empty($_REQUEST['creditcards_mastercard']))
|
53 |
+
$pmpro_accepted_credit_cards[] = "Mastercard";
|
54 |
+
if(!empty($_REQUEST['creditcards_amex']))
|
55 |
+
$pmpro_accepted_credit_cards[] = "American Express";
|
56 |
+
if(!empty($_REQUEST['creditcards_discover']))
|
57 |
+
$pmpro_accepted_credit_cards[] = "Discover";
|
58 |
+
if(!empty($_REQUEST['creditcards_dinersclub']))
|
59 |
+
$pmpro_accepted_credit_cards[] = "Diners Club";
|
60 |
+
if(!empty($_REQUEST['creditcards_enroute']))
|
61 |
+
$pmpro_accepted_credit_cards[] = "EnRoute";
|
62 |
+
if(!empty($_REQUEST['creditcards_jcb']))
|
63 |
+
$pmpro_accepted_credit_cards[] = "JCB";
|
64 |
+
|
65 |
+
//check instructions
|
66 |
+
pmpro_setOption("instructions");
|
67 |
+
|
68 |
+
//use_ssl is based on gateway
|
69 |
+
if($_REQUEST['gateway'] == "paypal" || $_REQUEST['gateway'] == "authorizenet" || $_REQUEST['gateway'] == "payflowpro")
|
70 |
+
pmpro_setOption("use_ssl", 1);
|
71 |
+
else
|
72 |
+
pmpro_setOption("use_ssl");
|
73 |
+
|
74 |
+
//tax
|
75 |
+
pmpro_setOption("tax_state");
|
76 |
+
pmpro_setOption("tax_rate");
|
77 |
+
|
78 |
+
pmpro_setOption("accepted_credit_cards", implode(",", $pmpro_accepted_credit_cards));
|
79 |
+
|
80 |
+
//assume success
|
81 |
+
$msg = true;
|
82 |
+
$msgt = "Your payment settings have been updated.";
|
83 |
+
}
|
84 |
+
|
85 |
+
$sslseal = pmpro_getOption("sslseal");
|
86 |
+
$nuclear_HTTPS = pmpro_getOption("nuclear_HTTPS");
|
87 |
+
|
88 |
+
$gateway = pmpro_getOption("gateway");
|
89 |
+
$gateway_environment = pmpro_getOption("gateway_environment");
|
90 |
+
$gateway_email = pmpro_getOption("gateway_email");
|
91 |
+
$payflow_partner = pmpro_getOption("payflow_partner");
|
92 |
+
$payflow_vendor = pmpro_getOption("payflow_vendor");
|
93 |
+
$payflow_user = pmpro_getOption("payflow_user");
|
94 |
+
$payflow_pwd = pmpro_getOption("payflow_pwd");
|
95 |
+
$apiusername = pmpro_getOption("apiusername");
|
96 |
+
$apipassword = pmpro_getOption("apipassword");
|
97 |
+
$apisignature = pmpro_getOption("apisignature");
|
98 |
+
$loginname = pmpro_getOption("loginname");
|
99 |
+
$transactionkey = pmpro_getOption("transactionkey");
|
100 |
+
$stripe_secretkey = pmpro_getOption("stripe_secretkey");
|
101 |
+
$stripe_publishablekey = pmpro_getOption("stripe_publishablekey");
|
102 |
+
$braintree_merchantid = pmpro_getOption("braintree_merchantid");
|
103 |
+
$braintree_publickey = pmpro_getOption("braintree_publickey");
|
104 |
+
$braintree_privatekey = pmpro_getOption("braintree_privatekey");
|
105 |
+
$braintree_encryptionkey = pmpro_getOption("braintree_encryptionkey");
|
106 |
+
|
107 |
+
$currency = pmpro_getOption("currency");
|
108 |
+
|
109 |
+
$pmpro_accepted_credit_cards = pmpro_getOption("accepted_credit_cards");
|
110 |
+
|
111 |
+
$instructions = pmpro_getOption("instructions");
|
112 |
+
|
113 |
+
$tax_state = pmpro_getOption("tax_state");
|
114 |
+
$tax_rate = pmpro_getOption("tax_rate");
|
115 |
+
|
116 |
+
//make sure the tax rate is not > 1
|
117 |
+
if((double)$tax_rate > 1)
|
118 |
+
{
|
119 |
+
//assume the entered X%
|
120 |
+
$tax_rate = $tax_rate / 100;
|
121 |
+
pmpro_setOption("tax_rate", $tax_rate);
|
122 |
+
}
|
123 |
+
|
124 |
+
$use_ssl = pmpro_getOption("use_ssl");
|
125 |
+
|
126 |
+
//default settings
|
127 |
+
if(empty($gateway_environment))
|
128 |
+
{
|
129 |
+
$gateway_environment = "sandbox";
|
130 |
+
pmpro_setOption("gateway_environment", $gateway_environment);
|
131 |
+
}
|
132 |
+
if(empty($pmpro_accepted_credit_cards))
|
133 |
+
{
|
134 |
+
$pmpro_accepted_credit_cards = "Visa,Mastercard,American Express,Discover";
|
135 |
+
pmpro_setOption("accepted_credit_cards", $pmpro_accepted_credit_cards);
|
136 |
+
}
|
137 |
+
|
138 |
+
$pmpro_accepted_credit_cards = explode(",", $pmpro_accepted_credit_cards);
|
139 |
+
|
140 |
+
require_once(dirname(__FILE__) . "/admin_header.php");
|
141 |
+
?>
|
142 |
+
|
143 |
+
<form action="" method="post" enctype="multipart/form-data">
|
144 |
+
<h2>Payment Gateway & SSL Settings</h2>
|
145 |
+
|
146 |
+
<p>Learn more about <a title="Paid Memberships Pro - SSL Settings" target="_blank" href="http://www.paidmembershipspro.com/support/initial-plugin-setup/ssl/">SSL</a> or <a title="Paid Memberships Pro - Payment Gateway Settings" target="_blank" href="http://www.paidmembershipspro.com/support/initial-plugin-setup/payment-gateway/">Payment Gateway Settings</a>.</p>
|
147 |
+
|
148 |
+
<table class="form-table">
|
149 |
+
<tbody>
|
150 |
+
<tr>
|
151 |
+
<th scope="row" valign="top">
|
152 |
+
<label for="gateway">Payment Gateway:</label>
|
153 |
+
</th>
|
154 |
+
<td>
|
155 |
+
<select id="gateway" name="gateway" onchange="pmpro_changeGateway(jQuery(this).val());">
|
156 |
+
<option value="">Testing Only</option>
|
157 |
+
<option value="check" <?php if($gateway == "check") { ?>selected="selected"<?php } ?>>Pay by Check</option>
|
158 |
+
<option value="stripe" <?php if($gateway == "stripe") { ?>selected="selected"<?php } ?>>Stripe</option>
|
159 |
+
<option value="paypalstandard" <?php if($gateway == "paypalstandard") { ?>selected="selected"<?php } ?>>PayPal Standard</option>
|
160 |
+
<option value="paypalexpress" <?php if($gateway == "paypalexpress") { ?>selected="selected"<?php } ?>>PayPal Express</option>
|
161 |
+
<option value="paypal" <?php if($gateway == "paypal") { ?>selected="selected"<?php } ?>>PayPal Website Payments Pro</option>
|
162 |
+
<option value="payflowpro" <?php if($gateway == "payflowpro") { ?>selected="selected"<?php } ?>>PayPal Payflow Pro</option>
|
163 |
+
<option value="authorizenet" <?php if($gateway == "authorizenet") { ?>selected="selected"<?php } ?>>Authorize.net</option>
|
164 |
+
<option value="braintree" <?php if($gateway == "braintree") { ?>selected="selected"<?php } ?>>Braintree Payments</option>
|
165 |
+
</select>
|
166 |
+
</td>
|
167 |
+
</tr>
|
168 |
+
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
169 |
+
<td colspan="2">
|
170 |
+
<strong>Note:</strong> Payflow Pro currently only supports one-time payments. Users will not be able to checkout for levels with recurring payments.
|
171 |
+
</td>
|
172 |
+
</tr>
|
173 |
+
<tr>
|
174 |
+
<th scope="row" valign="top">
|
175 |
+
<label for="gateway_environment">Gateway Environment:</label>
|
176 |
+
</th>
|
177 |
+
<td>
|
178 |
+
<select name="gateway_environment">
|
179 |
+
<option value="sandbox" <?php if($gateway_environment == "sandbox") { ?>selected="selected"<?php } ?>>Sandbox/Testing</option>
|
180 |
+
<option value="live" <?php if($gateway_environment == "live") { ?>selected="selected"<?php } ?>>Live/Production</option>
|
181 |
+
</select>
|
182 |
+
<script>
|
183 |
+
function pmpro_changeGateway(gateway)
|
184 |
+
{
|
185 |
+
//hide all gateway options
|
186 |
+
jQuery('tr.gateway').hide();
|
187 |
+
jQuery('tr.gateway_'+gateway).show();
|
188 |
+
}
|
189 |
+
pmpro_changeGateway(jQuery('#gateway').val());
|
190 |
+
</script>
|
191 |
+
</td>
|
192 |
+
</tr>
|
193 |
+
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
194 |
+
<th scope="row" valign="top">
|
195 |
+
<label for="payflow_partner">Partner:</label>
|
196 |
+
</th>
|
197 |
+
<td>
|
198 |
+
<input type="text" name="payflow_partner" size="60" value="<?php echo $payflow_partner?>" />
|
199 |
+
</td>
|
200 |
+
</tr>
|
201 |
+
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
202 |
+
<th scope="row" valign="top">
|
203 |
+
<label for="payflow_vendor">Vendor:</label>
|
204 |
+
</th>
|
205 |
+
<td>
|
206 |
+
<input type="text" name="payflow_vendor" size="60" value="<?php echo $payflow_vendor?>" />
|
207 |
+
</td>
|
208 |
+
</tr>
|
209 |
+
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
210 |
+
<th scope="row" valign="top">
|
211 |
+
<label for="payflow_user">User:</label>
|
212 |
+
</th>
|
213 |
+
<td>
|
214 |
+
<input type="text" name="payflow_user" size="60" value="<?php echo $payflow_user?>" />
|
215 |
+
</td>
|
216 |
+
</tr>
|
217 |
+
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
218 |
+
<th scope="row" valign="top">
|
219 |
+
<label for="payflow_pwd">Password:</label>
|
220 |
+
</th>
|
221 |
+
<td>
|
222 |
+
<input type="password" name="payflow_pwd" size="60" value="<?php echo $payflow_pwd?>" />
|
223 |
+
</td>
|
224 |
+
</tr>
|
225 |
+
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
226 |
+
<th scope="row" valign="top">
|
227 |
+
<label for="gateway_email">Gateway Account Email:</label>
|
228 |
+
</th>
|
229 |
+
<td>
|
230 |
+
<input type="text" name="gateway_email" size="60" value="<?php echo $gateway_email?>" />
|
231 |
+
</td>
|
232 |
+
</tr>
|
233 |
+
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
234 |
+
<th scope="row" valign="top">
|
235 |
+
<label for="apiusername">API Username:</label>
|
236 |
+
</th>
|
237 |
+
<td>
|
238 |
+
<input type="text" name="apiusername" size="60" value="<?php echo $apiusername?>" />
|
239 |
+
</td>
|
240 |
+
</tr>
|
241 |
+
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
242 |
+
<th scope="row" valign="top">
|
243 |
+
<label for="apipassword">API Password:</label>
|
244 |
+
</th>
|
245 |
+
<td>
|
246 |
+
<input type="text" name="apipassword" size="60" value="<?php echo $apipassword?>" />
|
247 |
+
</td>
|
248 |
+
</tr>
|
249 |
+
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
250 |
+
<th scope="row" valign="top">
|
251 |
+
<label for="apisignature">API Signature:</label>
|
252 |
+
</th>
|
253 |
+
<td>
|
254 |
+
<input type="text" name="apisignature" size="60" value="<?php echo $apisignature?>" />
|
255 |
+
</td>
|
256 |
+
</tr>
|
257 |
+
|
258 |
+
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
259 |
+
<th scope="row" valign="top">
|
260 |
+
<label for="loginname">Login Name:</label>
|
261 |
+
</th>
|
262 |
+
<td>
|
263 |
+
<input type="text" name="loginname" size="60" value="<?php echo $loginname?>" />
|
264 |
+
</td>
|
265 |
+
</tr>
|
266 |
+
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
267 |
+
<th scope="row" valign="top">
|
268 |
+
<label for="transactionkey">Transaction Key:</label>
|
269 |
+
</th>
|
270 |
+
<td>
|
271 |
+
<input type="text" name="transactionkey" size="60" value="<?php echo $transactionkey?>" />
|
272 |
+
</td>
|
273 |
+
</tr>
|
274 |
+
|
275 |
+
<tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
|
276 |
+
<th scope="row" valign="top">
|
277 |
+
<label for="stripe_secretkey">Secret Key:</label>
|
278 |
+
</th>
|
279 |
+
<td>
|
280 |
+
<input type="text" name="stripe_secretkey" size="60" value="<?php echo $stripe_secretkey?>" />
|
281 |
+
</td>
|
282 |
+
</tr>
|
283 |
+
<tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
|
284 |
+
<th scope="row" valign="top">
|
285 |
+
<label for="stripe_publishablekey">Publishable Key:</label>
|
286 |
+
</th>
|
287 |
+
<td>
|
288 |
+
<input type="text" name="stripe_publishablekey" size="60" value="<?php echo $stripe_publishablekey?>" />
|
289 |
+
</td>
|
290 |
+
</tr>
|
291 |
+
|
292 |
+
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
293 |
+
<th scope="row" valign="top">
|
294 |
+
<label for="braintree_merchantid">Merchant ID:</label>
|
295 |
+
</th>
|
296 |
+
<td>
|
297 |
+
<input type="text" name="braintree_merchantid" size="60" value="<?php echo $braintree_merchantid?>" />
|
298 |
+
</td>
|
299 |
+
</tr>
|
300 |
+
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
301 |
+
<th scope="row" valign="top">
|
302 |
+
<label for="braintree_publickey">Public Key:</label>
|
303 |
+
</th>
|
304 |
+
<td>
|
305 |
+
<input type="text" name="braintree_publickey" size="60" value="<?php echo $braintree_publickey?>" />
|
306 |
+
</td>
|
307 |
+
</tr>
|
308 |
+
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
309 |
+
<th scope="row" valign="top">
|
310 |
+
<label for="braintree_privatekey">Private Key:</label>
|
311 |
+
</th>
|
312 |
+
<td>
|
313 |
+
<input type="text" name="braintree_privatekey" size="60" value="<?php echo $braintree_privatekey?>" />
|
314 |
+
</td>
|
315 |
+
</tr>
|
316 |
+
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
317 |
+
<th scope="row" valign="top">
|
318 |
+
<label for="braintree_encryptionkey">Client-Side Encryption Key:</label>
|
319 |
+
</th>
|
320 |
+
<td>
|
321 |
+
<textarea id="braintree_encryptionkey" name="braintree_encryptionkey" rows="3" cols="80"><?php echo esc_textarea($braintree_encryptionkey)?></textarea>
|
322 |
+
</td>
|
323 |
+
</tr>
|
324 |
+
|
325 |
+
<tr class="gateway gateway_authorizenet gateway_payflowpro" <?php if($gateway != "authorizenet" && $gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
326 |
+
<th scope="row" valign="top">
|
327 |
+
<label for="transactionkey">Currency:</label>
|
328 |
+
</th>
|
329 |
+
<td>
|
330 |
+
<input type="hidden" name="currency_fixed" size="60" value="USD" />
|
331 |
+
USD
|
332 |
+
</td>
|
333 |
+
</tr>
|
334 |
+
|
335 |
+
<tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
|
336 |
+
<th scope="row" valign="top">
|
337 |
+
<label for="transactionkey">Currency:</label>
|
338 |
+
</th>
|
339 |
+
<td>
|
340 |
+
<select name="currency_stripe">
|
341 |
+
<?php
|
342 |
+
global $pmpro_stripe_currencies;
|
343 |
+
foreach($pmpro_stripe_currencies as $ccode => $cdescription)
|
344 |
+
{
|
345 |
+
?>
|
346 |
+
<option value="<?php echo $ccode?>" <?php if($currency == $ccode) { ?>selected="selected"<?php } ?>><?php echo $cdescription?></option>
|
347 |
+
<?php
|
348 |
+
}
|
349 |
+
?>
|
350 |
+
</select>
|
351 |
+
</td>
|
352 |
+
</tr>
|
353 |
+
|
354 |
+
<tr class="gateway gateway_ gateway_paypal gateway_paypalexpress gateway_paypalstandard gateway_braintree" <?php if(!empty($gateway) && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard" && $gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
355 |
+
<th scope="row" valign="top">
|
356 |
+
<label for="transactionkey">Currency:</label>
|
357 |
+
</th>
|
358 |
+
<td>
|
359 |
+
<select name="currency_paypal">
|
360 |
+
<?php
|
361 |
+
global $pmpro_currencies;
|
362 |
+
foreach($pmpro_currencies as $ccode => $cdescription)
|
363 |
+
{
|
364 |
+
?>
|
365 |
+
<option value="<?php echo $ccode?>" <?php if($currency == $ccode) { ?>selected="selected"<?php } ?>><?php echo $cdescription?></option>
|
366 |
+
<?php
|
367 |
+
}
|
368 |
+
?>
|
369 |
+
</select>
|
370 |
+
</td>
|
371 |
+
</tr>
|
372 |
+
|
373 |
+
<tr class="gateway gateway_ gateway_stripe gateway_authorizenet gateway_paypal gateway_payflowpro gateway_braintree" <?php if(!empty($gateway) && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "stripe" && $gateway != "payflowpro" && $gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
374 |
+
<th scope="row" valign="top">
|
375 |
+
<label for="creditcards">Accepted Credit Card Types</label>
|
376 |
+
</th>
|
377 |
+
<td>
|
378 |
+
<input type="checkbox" name="creditcards_visa" value="1" <?php if(in_array("Visa", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> Visa<br />
|
379 |
+
<input type="checkbox" name="creditcards_mastercard" value="1" <?php if(in_array("Mastercard", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> Mastercard<br />
|
380 |
+
<input type="checkbox" name="creditcards_amex" value="1" <?php if(in_array("American Express", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> American Express<br />
|
381 |
+
<input type="checkbox" name="creditcards_discover" value="1" <?php if(in_array("Discover", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> Discover<br />
|
382 |
+
<input type="checkbox" name="creditcards_dinersclub" value="1" <?php if(in_array("Diners Club", $pmpro_accepted_credit_cards)) {?>checked="checked"<?php } ?> /> Diner's Club<br />
|
383 |
+
<input type="checkbox" name="creditcards_enroute" value="1" <?php if(in_array("EnRoute", $pmpro_accepted_credit_cards)) {?>checked="checked"<?php } ?> /> EnRoute<br />
|
384 |
+
<input type="checkbox" name="creditcards_jcb" value="1" <?php if(in_array("JCB", $pmpro_accepted_credit_cards)) {?>checked="checked"<?php } ?> /> JCB<br />
|
385 |
+
</td>
|
386 |
+
</tr>
|
387 |
+
<tr class="gateway gateway_check" <?php if($gateway != "check") { ?>style="display: none;"<?php } ?>>
|
388 |
+
<th scope="row" valign="top">
|
389 |
+
<label for="instructions">Instructions</label>
|
390 |
+
</th>
|
391 |
+
<td>
|
392 |
+
<textarea id="instructions" name="instructions" rows="3" cols="80"><?php echo esc_textarea($instructions)?></textarea>
|
393 |
+
<p><small>Who to write the check out to. Where to mail it. Shown on checkout, confirmation, and invoice pages.</small></p>
|
394 |
+
</td>
|
395 |
+
</tr>
|
396 |
+
<tr class="gateway gateway_ gateway_stripe gateway_authorizenet gateway_paypal gateway_paypalexpress gateway_check gateway_paypalstandard gateway_payflowpro gateway_braintree" <?php if(!empty($gateway) && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "payflowpro" && $gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
397 |
+
<th scope="row" valign="top">
|
398 |
+
<label for="tax">Sales Tax <small>(optional)</small></label>
|
399 |
+
</th>
|
400 |
+
<td>
|
401 |
+
Tax State:
|
402 |
+
<input type="text" name="tax_state" size="4" value="<?php echo $tax_state?>" /> <small>(abbreviation, e.g. "PA")</small>
|
403 |
+
Tax Rate:
|
404 |
+
<input type="text" name="tax_rate" size="10" value="<?php echo $tax_rate?>" /> <small>(decimal, e.g. "0.06")</small>
|
405 |
+
<p><small>If values are given, tax will be applied for any members ordering from the selected state. For more complex tax rules, use the "pmpro_tax" filter.</small></p>
|
406 |
+
</td>
|
407 |
+
</tr>
|
408 |
+
<tr class="gateway gateway_ gateway_stripe gateway_paypalexpress gateway_check gateway_paypalstandard gateway_braintree" <?php if(!empty($gateway) && $gateway != "stripe" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
409 |
+
<th scope="row" valign="top">
|
410 |
+
<label for="use_ssl">Use SSL:</label>
|
411 |
+
</th>
|
412 |
+
<td>
|
413 |
+
<select id="use_ssl" name="use_ssl">
|
414 |
+
<option value="0" <?php if(empty($use_ssl)) { ?>selected="selected"<?php } ?>>No</option>
|
415 |
+
<option value="1" <?php if(!empty($use_ssl)) { ?>selected="selected"<?php } ?>>Yes</option>
|
416 |
+
</select>
|
417 |
+
</td>
|
418 |
+
</tr>
|
419 |
+
<tr class="gateway gateway_paypal gateway_authorizenet gateway_payflowpro" <?php if($gateway != "paypal" && $gateway != "authorizenet" && $gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
420 |
+
<th scope="row" valign="top">
|
421 |
+
<label for="use_ssl">Use SSL:</label>
|
422 |
+
</th>
|
423 |
+
<td>
|
424 |
+
Yes. (Required by this Gateway Option)
|
425 |
+
</td>
|
426 |
+
</tr>
|
427 |
+
<tr>
|
428 |
+
<th scope="row" valign="top">
|
429 |
+
<label for="sslseal">SSL Seal Code:</label>
|
430 |
+
</th>
|
431 |
+
<td>
|
432 |
+
<textarea id="sslseal" name="sslseal" rows="3" cols="80"><?php echo stripslashes($sslseal)?></textarea>
|
433 |
+
</td>
|
434 |
+
</tr>
|
435 |
+
<tr>
|
436 |
+
<th scope="row" valign="top">
|
437 |
+
<label for="nuclear_HTTPS">HTTPS Nuclear Option:</label>
|
438 |
+
</th>
|
439 |
+
<td>
|
440 |
+
<input type="checkbox" id="nuclear_HTTPS" name="nuclear_HTTPS" value="1" <?php if(!empty($nuclear_HTTPS)) { ?>checked="checked"<?php } ?> /> Use the "Nuclear Option" to use secure (HTTPS) URLs on your secure pages. Check this if you are using SSL and have warnings on your checkout pages.
|
441 |
+
</td>
|
442 |
+
</tr>
|
443 |
+
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard gateway_payflowpro" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard" && $gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
444 |
+
<th scope="row" valign="top">
|
445 |
+
<label>IPN Handler URL:</label>
|
446 |
+
</th>
|
447 |
+
<td>
|
448 |
+
<p>To fully integrate with PayPal, be sure to set your IPN Handler URL to <pre><?php echo admin_url("admin-ajax.php") . "?action=ipnhandler";?></pre>.</p>
|
449 |
+
</td>
|
450 |
+
</tr>
|
451 |
+
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
452 |
+
<th scope="row" valign="top">
|
453 |
+
<label>Silent Post URL:</label>
|
454 |
+
</th>
|
455 |
+
<td>
|
456 |
+
<p>To fully integrate with Authorize.net, be sure to set your Silent Post URL to <pre><?php echo admin_url("admin-ajax.php") . "?action=authnet_silent_post";?></pre>.</p>
|
457 |
+
</td>
|
458 |
+
</tr>
|
459 |
+
<tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
|
460 |
+
<th scope="row" valign="top">
|
461 |
+
<label>Web Hook URL:</label>
|
462 |
+
</th>
|
463 |
+
<td>
|
464 |
+
<p>To fully integrate with Stripe, be sure to set your Web Hook URL to <pre><?php echo admin_url("admin-ajax.php") . "?action=stripe_webhook";?></pre>.</p>
|
465 |
+
</td>
|
466 |
+
</tr>
|
467 |
+
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
468 |
+
<th scope="row" valign="top">
|
469 |
+
<label>Web Hook URL:</label>
|
470 |
+
</th>
|
471 |
+
<td>
|
472 |
+
<p>To fully integrate with Braintree, be sure to set your Web Hook URL to <pre><?php echo admin_url("admin-ajax.php") . "?action=braintree_webhook";?></pre>.</p>
|
473 |
+
</td>
|
474 |
+
</tr>
|
475 |
+
</tbody>
|
476 |
+
</table>
|
477 |
+
<p class="submit">
|
478 |
+
<input name="savesettings" type="submit" class="button-primary" value="Save Settings" />
|
479 |
+
</p>
|
480 |
+
</form>
|
481 |
+
|
482 |
+
<?php
|
483 |
+
require_once(dirname(__FILE__) . "/admin_footer.php");
|
484 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/reports.php
DELETED
@@ -1,62 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
global $pmpro_reports;
|
3 |
-
|
4 |
-
require_once(dirname(__FILE__) . "/admin_header.php");
|
5 |
-
|
6 |
-
//default view, report widgets
|
7 |
-
if(empty($_REQUEST['report']))
|
8 |
-
{
|
9 |
-
//wrapper
|
10 |
-
?>
|
11 |
-
<div id="dashboard-widgets-wrap">
|
12 |
-
<div id="dashboard-widgets" class="metabox-holder pmpro_reports-holder columns-2">
|
13 |
-
<div id="postbox-container-1" class="postbox-container">
|
14 |
-
<div id="normal-sortables" class="meta-box-sortables ui-sortable">
|
15 |
-
<?php
|
16 |
-
|
17 |
-
//report widgets
|
18 |
-
$count = 0;
|
19 |
-
$nreports = count($pmpro_reports);
|
20 |
-
$split = false;
|
21 |
-
foreach($pmpro_reports as $report => $title)
|
22 |
-
{
|
23 |
-
//make sure title is translated (since these are set before translations happen)
|
24 |
-
$title = __($title, "pmpro");
|
25 |
-
|
26 |
-
//put half of the report widgets in postbox-container-2
|
27 |
-
if(!$split && $count++ > $nreports/2)
|
28 |
-
{
|
29 |
-
$split = true;
|
30 |
-
?>
|
31 |
-
</div></div><div id="postbox-container-2" class="postbox-container"><div id="side-sortables" class="meta-box-sortables ui-sortable">
|
32 |
-
<?php
|
33 |
-
}
|
34 |
-
?>
|
35 |
-
<div id="pmpro_report_<?php echo $report; ?>" class="postbox pmpro_clickable" onclick="location.href='<?php echo admin_url("admin.php?page=pmpro-reports&report=" . $report);?>';">
|
36 |
-
<h3 class="hndle"><span><?php echo $title; ?></span></h3>
|
37 |
-
<div class="inside">
|
38 |
-
<?php call_user_func("pmpro_report_" . $report . "_widget"); ?>
|
39 |
-
<div style="margin-top:10px;border-top: 1px solid #ddd; padding-top: 10px; text-align:center;">
|
40 |
-
<a class="button button-primary" href="<?php echo admin_url("admin.php?page=pmpro-reports&report=" . $report);?>"><?php _e('Details', 'pmpro');?></a>
|
41 |
-
</div>
|
42 |
-
</div>
|
43 |
-
</div>
|
44 |
-
<?php
|
45 |
-
}
|
46 |
-
|
47 |
-
//end wrapper
|
48 |
-
?>
|
49 |
-
</div>
|
50 |
-
</div>
|
51 |
-
</div>
|
52 |
-
<?php
|
53 |
-
}
|
54 |
-
else
|
55 |
-
{
|
56 |
-
//view a single report
|
57 |
-
$report = $_REQUEST['report'];
|
58 |
-
call_user_func("pmpro_report_" . $report . "_page");
|
59 |
-
}
|
60 |
-
|
61 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
62 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/reports/login.php
DELETED
@@ -1,412 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
PMPro Report
|
4 |
-
Title: Logins
|
5 |
-
Slug: login
|
6 |
-
|
7 |
-
For each report, add a line like:
|
8 |
-
global $pmpro_reports;
|
9 |
-
$pmpro_reports['slug'] = 'Title';
|
10 |
-
|
11 |
-
For each report, also write two functions:
|
12 |
-
* pmpro_report_{slug}_widget() to show up on the report homepage.
|
13 |
-
* pmpro_report_{slug}_page() to show up when users click on the report page widget.
|
14 |
-
*/
|
15 |
-
global $pmpro_reports;
|
16 |
-
$pmpro_reports['login'] = __('Visits, Views, and Logins', 'pmpro');
|
17 |
-
|
18 |
-
function pmpro_report_login_widget()
|
19 |
-
{
|
20 |
-
global $wpdb;
|
21 |
-
$visits = get_option("pmpro_visits", array("today"=>0, "thisday"=>date("Y-m-d"), "alltime"=>0, "month"=>0, "thismonth"=>date("n")));
|
22 |
-
$views = get_option("pmpro_views", array("today"=>0, "thisday"=>date("Y-m-d"), "alltime"=>0, "month"=>0, "thismonth"=>date("n")));
|
23 |
-
$logins = get_option("pmpro_logins", array("today"=>0, "thisday"=>date("Y-m-d"), "alltime"=>0, "month"=>0, "thismonth"=>date("n")));
|
24 |
-
?>
|
25 |
-
<div style="width: 33%; float: left;">
|
26 |
-
<p><?php _e('Visits Today', 'pmpro')?>: <?php echo $visits['today'];?></p>
|
27 |
-
<p><?php _e('Visits This Month', 'pmpro')?>: <?php echo $visits['month'];?></p>
|
28 |
-
<p><?php _e('Visits All Time', 'pmpro')?>: <?php echo $visits['alltime'];?></p>
|
29 |
-
</div>
|
30 |
-
<div style="width: 33%; float: left;">
|
31 |
-
<p><?php _e('Views Today', 'pmpro')?>: <?php echo $views['today'];?></p>
|
32 |
-
<p><?php _e('Views This Month', 'pmpro')?>: <?php echo $views['month'];?></p>
|
33 |
-
<p><?php _e('Views All Time', 'pmpro')?>: <?php echo $views['alltime'];?></p>
|
34 |
-
</div>
|
35 |
-
<div style="width: 33%; float: left;">
|
36 |
-
<p><?php _e('Logins Today', 'pmpro')?>: <?php echo $logins['today'];?></p>
|
37 |
-
<p><?php _e('Logins This Month', 'pmpro')?>: <?php echo $logins['month'];?></p>
|
38 |
-
<p><?php _e('Logins All Time', 'pmpro')?>: <?php echo $logins['alltime'];?></p>
|
39 |
-
</div>
|
40 |
-
<div class="clear"></div>
|
41 |
-
<?php
|
42 |
-
}
|
43 |
-
|
44 |
-
function pmpro_report_login_page()
|
45 |
-
{
|
46 |
-
global $wpdb;
|
47 |
-
|
48 |
-
//vars
|
49 |
-
if(!empty($_REQUEST['s']))
|
50 |
-
$s = $_REQUEST['s'];
|
51 |
-
else
|
52 |
-
$s = "";
|
53 |
-
|
54 |
-
if(!empty($_REQUEST['l']))
|
55 |
-
$l = $_REQUEST['l'];
|
56 |
-
else
|
57 |
-
$l = "";
|
58 |
-
?>
|
59 |
-
<form id="posts-filter" method="get" action="">
|
60 |
-
<h2>
|
61 |
-
<?php _e('Visits, Views, and Logins Report', 'pmpro');?>
|
62 |
-
</h2>
|
63 |
-
<ul class="subsubsub">
|
64 |
-
<li>
|
65 |
-
<?php _ex('Show', 'Dropdown label, e.g. Show All Users', 'pmpro')?> <select name="l" onchange="jQuery('#posts-filter').submit();">
|
66 |
-
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php _e('All Users', 'pmpro')?></option>
|
67 |
-
<option value="all" <?php if($l == "all") { ?>selected="selected"<?php } ?>><?php _e('All Levels', 'pmpro')?></option>
|
68 |
-
<?php
|
69 |
-
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
70 |
-
foreach($levels as $level)
|
71 |
-
{
|
72 |
-
?>
|
73 |
-
<option value="<?php echo $level->id?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
74 |
-
<?php
|
75 |
-
}
|
76 |
-
?>
|
77 |
-
</select>
|
78 |
-
</li>
|
79 |
-
</ul>
|
80 |
-
<p class="search-box">
|
81 |
-
<label class="hidden" for="post-search-input"><?php _ex('Search', 'Search form label', 'pmpro')?> <?php if(empty($l)) echo "Users"; else echo "Members";?>:</label>
|
82 |
-
<input type="hidden" name="page" value="pmpro-reports" />
|
83 |
-
<input type="hidden" name="report" value="login" />
|
84 |
-
<input id="post-search-input" type="text" value="<?php echo $s?>" name="s"/>
|
85 |
-
<input class="button" type="submit" value="Search Members"/>
|
86 |
-
</p>
|
87 |
-
<?php
|
88 |
-
//some vars for the search
|
89 |
-
if(isset($_REQUEST['pn']))
|
90 |
-
$pn = $_REQUEST['pn'];
|
91 |
-
else
|
92 |
-
$pn = 1;
|
93 |
-
|
94 |
-
if(isset($_REQUEST['limit']))
|
95 |
-
$limit = $_REQUEST['limit'];
|
96 |
-
else
|
97 |
-
$limit = 15;
|
98 |
-
|
99 |
-
$end = $pn * $limit;
|
100 |
-
$start = $end - $limit;
|
101 |
-
|
102 |
-
if($s)
|
103 |
-
{
|
104 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(mu.startdate) as startdate, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id AND mu.status = 'active' LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id WHERE (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
|
105 |
-
|
106 |
-
if($l == "all")
|
107 |
-
$sqlQuery .= " AND mu.status = 'active' AND mu.membership_id > 0 ";
|
108 |
-
elseif($l)
|
109 |
-
$sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
|
110 |
-
|
111 |
-
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
112 |
-
}
|
113 |
-
else
|
114 |
-
{
|
115 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(mu.startdate) as startdate, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id AND mu.status = 'active' LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id";
|
116 |
-
$sqlQuery .= " WHERE 1=1 ";
|
117 |
-
|
118 |
-
if($l == "all")
|
119 |
-
$sqlQuery .= " AND mu.membership_id > 0 AND mu.status = 'active' ";
|
120 |
-
elseif($l)
|
121 |
-
$sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
|
122 |
-
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
123 |
-
}
|
124 |
-
|
125 |
-
$sqlQuery = apply_filters("pmpro_members_list_sql", $sqlQuery);
|
126 |
-
|
127 |
-
$theusers = $wpdb->get_results($sqlQuery);
|
128 |
-
$totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
|
129 |
-
|
130 |
-
if($theusers)
|
131 |
-
{
|
132 |
-
?>
|
133 |
-
<p class="clear"><?php echo strval($totalrows)?> <?php if(empty($l)) echo "users"; else echo "members";?> found.
|
134 |
-
<?php
|
135 |
-
}
|
136 |
-
?>
|
137 |
-
<table class="widefat">
|
138 |
-
<thead>
|
139 |
-
<tr class="thead">
|
140 |
-
<th><?php _e('ID', 'pmpro')?></th>
|
141 |
-
<th><?php _e('User', 'pmpro')?></th>
|
142 |
-
<th><?php _e('Name', 'pmpro')?></th>
|
143 |
-
<th><?php _e('Membership', 'pmpro')?></th>
|
144 |
-
<th><?php _e('Joined', 'pmpro')?></th>
|
145 |
-
<th><?php _e('Expires', 'pmpro')?></th>
|
146 |
-
<th><?php _e('Last Visit', 'pmpro')?></th>
|
147 |
-
<th><?php _e('Visits This Month', 'pmpro')?></th>
|
148 |
-
<th><?php _e('Total Visits', 'pmpro')?></th>
|
149 |
-
<th><?php _e('Views This Month', 'pmpro')?></th>
|
150 |
-
<th><?php _e('Total Views', 'pmpro')?></th>
|
151 |
-
<th><?php _e('Last Login', 'pmpro')?></th>
|
152 |
-
<th><?php _e('Logins This Month', 'pmpro')?></th>
|
153 |
-
<th><?php _e('Total Logins', 'pmpro')?></th>
|
154 |
-
</tr>
|
155 |
-
</thead>
|
156 |
-
<tbody id="users" class="list:user user-list">
|
157 |
-
<?php
|
158 |
-
$count = 0;
|
159 |
-
foreach($theusers as $auser)
|
160 |
-
{
|
161 |
-
//get meta
|
162 |
-
$theuser = get_userdata($auser->ID);
|
163 |
-
$visits = get_user_meta($auser->ID, "pmpro_visits", true);
|
164 |
-
$views = get_user_meta($auser->ID, "pmpro_views", true);
|
165 |
-
$logins = get_user_meta($auser->ID, "pmpro_logins", true);
|
166 |
-
if(empty($logins))
|
167 |
-
$logins = array("last"=>"N/A", "month"=>"N/A", "alltime"=>"N/A");
|
168 |
-
?>
|
169 |
-
<tr <?php if($count++ % 2 == 0) { ?>class="alternate"<?php } ?>>
|
170 |
-
<td><?php echo $theuser->ID?></td>
|
171 |
-
<td>
|
172 |
-
<?php echo get_avatar($theuser->ID, 32)?>
|
173 |
-
<strong>
|
174 |
-
<?php
|
175 |
-
$userlink = '<a href="user-edit.php?user_id=' . $theuser->ID . '">' . $theuser->user_login . '</a>';
|
176 |
-
$userlink = apply_filters("pmpro_members_list_user_link", $userlink, $theuser);
|
177 |
-
echo $userlink;
|
178 |
-
?>
|
179 |
-
</strong>
|
180 |
-
</td>
|
181 |
-
<td>
|
182 |
-
<?php echo $theuser->display_name;?>
|
183 |
-
</td>
|
184 |
-
<td><?php echo $auser->membership?></td>
|
185 |
-
<td><?php echo date("m/d/Y", strtotime($theuser->user_registered, current_time("timestamp")))?></td>
|
186 |
-
<td>
|
187 |
-
<?php
|
188 |
-
if($auser->enddate)
|
189 |
-
echo date(get_option('date_format'), $auser->enddate);
|
190 |
-
else
|
191 |
-
echo "Never";
|
192 |
-
?>
|
193 |
-
</td>
|
194 |
-
<td><?php if(!empty($visits['last'])) echo $visits['last'];?></td>
|
195 |
-
<td><?php if(!empty($visits['month'])) echo $visits['month'];?></td>
|
196 |
-
<td><?php if(!empty($visits['alltime'])) echo $visits['alltime'];?></td>
|
197 |
-
<td><?php if(!empty($visits['month'])) echo $views['month'];?></td>
|
198 |
-
<td><?php if(!empty($visits['alltime'])) echo $views['alltime'];?></td>
|
199 |
-
<td><?php if(!empty($visits['last'])) echo $logins['last'];?></td>
|
200 |
-
<td><?php if(!empty($visits['month'])) echo $logins['month'];?></td>
|
201 |
-
<td><?php if(!empty($visits['alltime'])) echo $logins['alltime'];?></td>
|
202 |
-
</tr>
|
203 |
-
<?php
|
204 |
-
}
|
205 |
-
|
206 |
-
if(!$theusers)
|
207 |
-
{
|
208 |
-
?>
|
209 |
-
<tr>
|
210 |
-
<td colspan="9"><p><?php _e('No members found.', 'pmpro')?> <?php if($l) { ?><a href="?page=pmpro-memberslist&s=<?php echo $s?>"><?php _e('Search all levels', 'pmpro')?></a>.<?php } ?></p></td>
|
211 |
-
</tr>
|
212 |
-
<?php
|
213 |
-
}
|
214 |
-
?>
|
215 |
-
</tbody>
|
216 |
-
</table>
|
217 |
-
</form>
|
218 |
-
|
219 |
-
<?php
|
220 |
-
echo pmpro_getPaginationString($pn, $totalrows, $limit, 1, get_admin_url(NULL, "/admin.php?page=pmpro-reports&report=login&s=" . urlencode($s)), "&l=$l&limit=$limit&pn=");
|
221 |
-
?>
|
222 |
-
<?php
|
223 |
-
}
|
224 |
-
|
225 |
-
/*
|
226 |
-
Other code required for your reports. This file is loaded every time WP loads with PMPro enabled.
|
227 |
-
*/
|
228 |
-
|
229 |
-
//track visits
|
230 |
-
function pmpro_report_login_wp_visits()
|
231 |
-
{
|
232 |
-
//don't track admin
|
233 |
-
if(is_admin())
|
234 |
-
return;
|
235 |
-
|
236 |
-
//only track logged in users
|
237 |
-
if(!is_user_logged_in())
|
238 |
-
return;
|
239 |
-
|
240 |
-
//check for cookie
|
241 |
-
if(!empty($_COOKIE['pmpro_visit']))
|
242 |
-
return;
|
243 |
-
|
244 |
-
//set cookie, then track
|
245 |
-
setcookie("pmpro_visit", "1", NULL, COOKIEPATH, COOKIE_DOMAIN, false);
|
246 |
-
|
247 |
-
global $current_user;
|
248 |
-
//track for user
|
249 |
-
if(!empty($current_user->ID))
|
250 |
-
{
|
251 |
-
$visits = $current_user->pmpro_visits;
|
252 |
-
if(empty($visits))
|
253 |
-
$visits = array("last"=>"N/A", "thisdate"=>NULL, "month"=>0, "thismonth"=>NULL, "alltime"=>0);
|
254 |
-
|
255 |
-
//track logins for user
|
256 |
-
$visits['last'] = date(get_option("date_format"));
|
257 |
-
$visits['alltime']++;
|
258 |
-
$thismonth = date("n");
|
259 |
-
if($thismonth == $visits['thismonth'])
|
260 |
-
$visits['month']++;
|
261 |
-
else
|
262 |
-
{
|
263 |
-
$visits['month'] = 1;
|
264 |
-
$visits['thismonth'] = $thismonth;
|
265 |
-
}
|
266 |
-
|
267 |
-
//update user data
|
268 |
-
update_user_meta($current_user->ID, "pmpro_visits", $visits);
|
269 |
-
}
|
270 |
-
|
271 |
-
//track for all
|
272 |
-
$visits = get_option("pmpro_visits");
|
273 |
-
if(empty($visits))
|
274 |
-
$visits = array("today"=>0, "thisdate"=>NULL, "month"=>0, "thismonth"=> NULL, "alltime"=>0);
|
275 |
-
|
276 |
-
$visits['alltime']++;
|
277 |
-
$thisdate = date("Y-d-m");
|
278 |
-
if($thisdate == $visits['thisdate'])
|
279 |
-
$visits['today']++;
|
280 |
-
else
|
281 |
-
{
|
282 |
-
$visits['today'] = 1;
|
283 |
-
$visits['thisdate'] = $thisdate;
|
284 |
-
}
|
285 |
-
if($thismonth == $visits['thismonth'])
|
286 |
-
$visits['month']++;
|
287 |
-
else
|
288 |
-
{
|
289 |
-
$visits['month'] = 1;
|
290 |
-
$visits['thismonth'] = $thismonth;
|
291 |
-
}
|
292 |
-
|
293 |
-
update_option("pmpro_visits", $visits);
|
294 |
-
}
|
295 |
-
add_action("wp", "pmpro_report_login_wp_visits");
|
296 |
-
|
297 |
-
//we want to clear the pmpro_visit cookie on login/logout
|
298 |
-
function pmpro_report_login_clear_visit_cookie()
|
299 |
-
{
|
300 |
-
if(isset($_COOKIE['pmpro_visit']))
|
301 |
-
unset($_COOKIE['pmpro_visit']);
|
302 |
-
}
|
303 |
-
add_action("wp_login", "pmpro_report_login_clear_visit_cookie");
|
304 |
-
add_action("wp_logout", "pmpro_report_login_clear_visit_cookie");
|
305 |
-
|
306 |
-
//track views
|
307 |
-
function pmpro_report_login_wp_views()
|
308 |
-
{
|
309 |
-
//don't track admin
|
310 |
-
if(is_admin())
|
311 |
-
return;
|
312 |
-
|
313 |
-
global $current_user;
|
314 |
-
//track for user
|
315 |
-
if(!empty($current_user->ID))
|
316 |
-
{
|
317 |
-
$views = $current_user->pmpro_views;
|
318 |
-
if(empty($views))
|
319 |
-
$views = array("last"=>"N/A", "month"=>0, "alltime"=>0);
|
320 |
-
|
321 |
-
//track logins for user
|
322 |
-
$views['last'] = date(get_option("date_format"));
|
323 |
-
$views['alltime']++;
|
324 |
-
$thismonth = date("n");
|
325 |
-
if(isset($views['thismonth']) && $thismonth == $views['thismonth'])
|
326 |
-
$views['month']++;
|
327 |
-
else
|
328 |
-
{
|
329 |
-
$views['month'] = 1;
|
330 |
-
$views['thismonth'] = $thismonth;
|
331 |
-
}
|
332 |
-
|
333 |
-
//update user data
|
334 |
-
update_user_meta($current_user->ID, "pmpro_views", $views);
|
335 |
-
}
|
336 |
-
|
337 |
-
//track for all
|
338 |
-
$views = get_option("pmpro_views");
|
339 |
-
if(empty($views))
|
340 |
-
$views = array("today"=>0, "thisdate"=> NULL, "month"=>0, "thismonth"=> NULL, "alltime"=>0);
|
341 |
-
|
342 |
-
$views['alltime']++;
|
343 |
-
$thisdate = date("Y-d-m");
|
344 |
-
if($thisdate == $views['thisdate'])
|
345 |
-
$views['today']++;
|
346 |
-
else
|
347 |
-
{
|
348 |
-
$views['today'] = 1;
|
349 |
-
$views['thisdate'] = $thisdate;
|
350 |
-
}
|
351 |
-
$thismonth = date("n");
|
352 |
-
if(isset($views['thismonth']) && $thismonth == $views['thismonth'])
|
353 |
-
$views['month']++;
|
354 |
-
else
|
355 |
-
{
|
356 |
-
$views['month'] = 1;
|
357 |
-
$views['thismonth'] = $thismonth;
|
358 |
-
}
|
359 |
-
|
360 |
-
update_option("pmpro_views", $views);
|
361 |
-
}
|
362 |
-
add_action("wp", "pmpro_report_login_wp_views");
|
363 |
-
|
364 |
-
//track logins
|
365 |
-
function pmpro_report_login_wp_login($user_login)
|
366 |
-
{
|
367 |
-
//get user data
|
368 |
-
$user = get_user_by("login", $user_login);
|
369 |
-
$logins = $user->pmpro_logins;
|
370 |
-
if(empty($logins))
|
371 |
-
$logins = array("last"=>"N/A", "thisdate"=>NULL, "month"=>0, "thismonth"=> NULL, "alltime"=>0);
|
372 |
-
|
373 |
-
//track logins for user
|
374 |
-
$logins['last'] = date(get_option("date_format"));
|
375 |
-
$logins['alltime']++;
|
376 |
-
$thismonth = date("n");
|
377 |
-
if($thismonth == $logins['thismonth'])
|
378 |
-
$logins['month']++;
|
379 |
-
else
|
380 |
-
{
|
381 |
-
$logins['month'] = 1;
|
382 |
-
$logins['thismonth'] = $thismonth;
|
383 |
-
}
|
384 |
-
|
385 |
-
//update user data
|
386 |
-
update_user_meta($user->ID, "pmpro_logins", $logins);
|
387 |
-
|
388 |
-
//track logins overall
|
389 |
-
$logins = get_option("pmpro_logins");
|
390 |
-
if(empty($logins))
|
391 |
-
$logins = array("today"=>0, "thisdate"=>NULL, "month"=>0, "thismonth"=>NULL, "alltime"=>0);
|
392 |
-
|
393 |
-
$logins['alltime']++;
|
394 |
-
$thisdate = date("Y-d-m");
|
395 |
-
if($thisdate == $logins['thisdate'])
|
396 |
-
$logins['today']++;
|
397 |
-
else
|
398 |
-
{
|
399 |
-
$logins['today'] = 1;
|
400 |
-
$logins['thisdate'] = $thisdate;
|
401 |
-
}
|
402 |
-
if($thismonth == $logins['thismonth'])
|
403 |
-
$logins['month']++;
|
404 |
-
else
|
405 |
-
{
|
406 |
-
$logins['month'] = 1;
|
407 |
-
$logins['thismonth'] = $thismonth;
|
408 |
-
}
|
409 |
-
|
410 |
-
update_option("pmpro_logins", $logins);
|
411 |
-
}
|
412 |
-
add_action("wp_login", "pmpro_report_login_wp_login");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/reports/memberships.php
DELETED
@@ -1,651 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
PMPro Report
|
4 |
-
Title: Membership Stats
|
5 |
-
Slug: memberships
|
6 |
-
|
7 |
-
For each report, add a line like:
|
8 |
-
global $pmpro_reports;
|
9 |
-
$pmpro_reports['slug'] = 'Title';
|
10 |
-
|
11 |
-
For each report, also write two functions:
|
12 |
-
* pmpro_report_{slug}_widget() to show up on the report homepage.
|
13 |
-
* pmpro_report_{slug}_page() to show up when users click on the report page widget.
|
14 |
-
*/
|
15 |
-
|
16 |
-
global $pmpro_reports;
|
17 |
-
|
18 |
-
$pmpro_reports['memberships'] = __('Membership Stats', 'pmpro');
|
19 |
-
|
20 |
-
//queue Google Visualization JS on report page
|
21 |
-
function pmpro_report_memberships_init() {
|
22 |
-
if(is_admin() && isset($_REQUEST['report']) && $_REQUEST['report'] == "memberships" && isset($_REQUEST['page']) && $_REQUEST['page'] == "pmpro-reports")
|
23 |
-
wp_enqueue_script("jsapi", "https://www.google.com/jsapi");
|
24 |
-
}
|
25 |
-
add_action( 'init', 'pmpro_report_memberships_init' );
|
26 |
-
|
27 |
-
|
28 |
-
//widget
|
29 |
-
function pmpro_report_memberships_widget() {
|
30 |
-
global $wpdb, $pmpro_currency_symbol;
|
31 |
-
?>
|
32 |
-
<style type="text/css">
|
33 |
-
#pmpro_report_memberships .section-label {
|
34 |
-
margin: 15px 0;
|
35 |
-
font-size: 18px;
|
36 |
-
text-align: left;
|
37 |
-
display: block;
|
38 |
-
}
|
39 |
-
|
40 |
-
#pmpro_report_memberships .section-label:first-child {
|
41 |
-
margin-top: 0;
|
42 |
-
}
|
43 |
-
|
44 |
-
#pmpro_report_memberships div {text-align: center;}
|
45 |
-
#pmpro_report_memberships em {display: block; font-style: normal; font-size: 2em; margin: 5px; line-height: 26px;}
|
46 |
-
</style>
|
47 |
-
<span id="pmpro_report_memberships">
|
48 |
-
<label class="section-label"><?php _e('Signups', 'pmpro');?>:</label>
|
49 |
-
<div style="width: 25%; float: left;">
|
50 |
-
<label><?php _e('All Time', 'pmpro');?></label>
|
51 |
-
<em><?php echo pmpro_getSignups( 'all time' ); ?></em>
|
52 |
-
</div>
|
53 |
-
<div style="width: 25%; float: left;">
|
54 |
-
<label><?php _e('This Year', 'pmpro');?></label>
|
55 |
-
<em><?php echo pmpro_getSignups( 'this year' ); ?></em>
|
56 |
-
</div>
|
57 |
-
<div style="width: 25%; float: left;">
|
58 |
-
<label><?php _e('This Month', 'pmpro');?></label>
|
59 |
-
<em><?php echo pmpro_getSignups( 'this month' ); ?></em>
|
60 |
-
</div>
|
61 |
-
<div style="width: 25%; float: left;">
|
62 |
-
<label><?php _e('Today', 'pmpro');?></label>
|
63 |
-
<em><?php echo pmpro_getSignups( 'today' ); ?></em>
|
64 |
-
</div>
|
65 |
-
<div class="clear"></div>
|
66 |
-
|
67 |
-
<label class="section-label"><?php _e('Cancellations', 'pmpro');?>:</label>
|
68 |
-
<div style="width: 25%; float: left;">
|
69 |
-
<label><?php _e('All Time', 'pmpro');?></label>
|
70 |
-
<em><?php echo pmpro_getCancellations( 'all time' ); ?></em>
|
71 |
-
</div>
|
72 |
-
<div style="width: 25%; float: left;">
|
73 |
-
<label><?php _e('This Year', 'pmpro');?></label>
|
74 |
-
<em><?php echo pmpro_getCancellations( 'this year' ); ?></em>
|
75 |
-
</div>
|
76 |
-
<div style="width: 25%; float: left;">
|
77 |
-
<label><?php _e('This Month', 'pmpro');?></label>
|
78 |
-
<em><?php echo pmpro_getCancellations( 'this month' ); ?></em>
|
79 |
-
</div>
|
80 |
-
<div style="width: 25%; float: left;">
|
81 |
-
<label><?php _e('Today', 'pmpro');?></label>
|
82 |
-
<em><?php echo pmpro_getCancellations( 'today' ); ?></em>
|
83 |
-
</div>
|
84 |
-
<div class="clear"></div>
|
85 |
-
|
86 |
-
<label class="section-label"><?php _e('Other Stats', 'pmpro');?>:</label>
|
87 |
-
<div style="width: 33%; float: left;">
|
88 |
-
<label><?php _e('Monthly Recurring Revenue (MRR)', 'pmpro');?></label>
|
89 |
-
<em><?php echo $pmpro_currency_symbol . $pmpro_mrr = number_format(pmpro_getMRR( 'all time' ), 2); ?></em>
|
90 |
-
</div>
|
91 |
-
<div style="width: 33%; float: left;">
|
92 |
-
<label><?php _e('Cancellation Rate', 'pmpro');?></label>
|
93 |
-
<em><?php echo pmpro_getCancellationRate('all time' ); ?>%</em>
|
94 |
-
</div>
|
95 |
-
<div style="width: 33%; float: left;">
|
96 |
-
<label><?php _e('Lifetime Value (LTV)', 'pmpro');?></label>
|
97 |
-
<em><?php echo $pmpro_currency_symbol . number_format(pmpro_getLTV('all time' ), 2); ?></em>
|
98 |
-
</div>
|
99 |
-
<div class="clear"></div>
|
100 |
-
</span>
|
101 |
-
<?php
|
102 |
-
}
|
103 |
-
|
104 |
-
function pmpro_report_memberships_page()
|
105 |
-
{
|
106 |
-
global $wpdb, $pmpro_currency_symbol;
|
107 |
-
|
108 |
-
//get values from form
|
109 |
-
if(isset($_REQUEST['type']))
|
110 |
-
$type = sanitize_text_field($_REQUEST['type']);
|
111 |
-
else
|
112 |
-
$type = "signup_v_cancel";
|
113 |
-
|
114 |
-
if(isset($_REQUEST['period']))
|
115 |
-
$period = sanitize_text_field($_REQUEST['period']);
|
116 |
-
else
|
117 |
-
$period = "monthly";
|
118 |
-
|
119 |
-
if(isset($_REQUEST['month']))
|
120 |
-
$month = intval($_REQUEST['month']);
|
121 |
-
else
|
122 |
-
$month = date("n");
|
123 |
-
|
124 |
-
$thisyear = date("Y");
|
125 |
-
if(isset($_REQUEST['year']))
|
126 |
-
$year = intval($_REQUEST['year']);
|
127 |
-
else
|
128 |
-
$year = date("Y");
|
129 |
-
|
130 |
-
if(isset($_REQUEST['level']))
|
131 |
-
$l = intval($_REQUEST['level']);
|
132 |
-
else
|
133 |
-
$l = "";
|
134 |
-
|
135 |
-
//calculate start date and how to group dates returned from DB
|
136 |
-
if($period == "daily")
|
137 |
-
{
|
138 |
-
$startdate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-01';
|
139 |
-
$enddate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-31';
|
140 |
-
$date_function = 'DAY';
|
141 |
-
}
|
142 |
-
elseif($period == "monthly")
|
143 |
-
{
|
144 |
-
$startdate = $year . '-01-01';
|
145 |
-
$enddate = strval(intval($year)+1) . '-01-01';
|
146 |
-
$date_function = 'MONTH';
|
147 |
-
}
|
148 |
-
elseif($period == "annual")
|
149 |
-
{
|
150 |
-
$startdate = '1960-01-01'; //all time
|
151 |
-
$date_function = 'YEAR';
|
152 |
-
}
|
153 |
-
|
154 |
-
//testing or live data
|
155 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
156 |
-
|
157 |
-
//get data
|
158 |
-
if ( $type === "signup_v_cancel" ) {
|
159 |
-
$sqlQuery = "SELECT $date_function(startdate) as date, COUNT(DISTINCT user_id) as signups
|
160 |
-
FROM $wpdb->pmpro_memberships_users WHERE startdate >= '" . $startdate . "' ";
|
161 |
-
|
162 |
-
if(!empty($enddate))
|
163 |
-
$sqlQuery .= "AND startdate < '" . $enddate . "' ";
|
164 |
-
}
|
165 |
-
if ( $type === "mrr_ltv" ) {
|
166 |
-
// Get total revenue, number of months in system, and date
|
167 |
-
if ( $period == 'annual' )
|
168 |
-
$sqlQuery = "SELECT SUM(total) as total, COUNT(DISTINCT MONTH(timestamp)) as months, $date_function(timestamp) as date
|
169 |
-
FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token')
|
170 |
-
AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
|
171 |
-
|
172 |
-
if ( $period == 'monthly' )
|
173 |
-
$sqlQuery = "SELECT SUM(total) as total, $date_function(timestamp) as date
|
174 |
-
FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token')
|
175 |
-
AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
|
176 |
-
|
177 |
-
if(!empty($enddate))
|
178 |
-
$sqlQuery .= "AND timestamp < '" . $enddate . "' ";
|
179 |
-
}
|
180 |
-
|
181 |
-
if(!empty($l))
|
182 |
-
$sqlQuery .= "AND membership_id IN(" . $l . ") ";
|
183 |
-
|
184 |
-
$sqlQuery .= " GROUP BY date ORDER BY date ";
|
185 |
-
|
186 |
-
$dates = $wpdb->get_results($sqlQuery);
|
187 |
-
|
188 |
-
//fill in blanks in dates
|
189 |
-
$cols = array();
|
190 |
-
if($period == "daily")
|
191 |
-
{
|
192 |
-
$lastday = date("t", $startdate);
|
193 |
-
|
194 |
-
for($i = 1; $i <= $lastday; $i++)
|
195 |
-
{
|
196 |
-
// Signups vs. Cancellations
|
197 |
-
if ( $type === "signup_v_cancel" ) {
|
198 |
-
$cols[$i] = new stdClass();
|
199 |
-
$cols[$i]->signups = 0;
|
200 |
-
foreach($dates as $date)
|
201 |
-
{
|
202 |
-
if( $date->date == $i ) {
|
203 |
-
$cols[$i]->signups = $date->signups;
|
204 |
-
}
|
205 |
-
}
|
206 |
-
}
|
207 |
-
}
|
208 |
-
}
|
209 |
-
elseif($period == "monthly")
|
210 |
-
{
|
211 |
-
for($i = 1; $i < 13; $i++)
|
212 |
-
{
|
213 |
-
// Signups vs. Cancellations
|
214 |
-
if ( $type === "signup_v_cancel" ) {
|
215 |
-
$cols[$i] = new stdClass();
|
216 |
-
$cols[$i]->date = $i;
|
217 |
-
$cols[$i]->signups = 0;
|
218 |
-
foreach($dates as $date)
|
219 |
-
{
|
220 |
-
if( $date->date == $i ) {
|
221 |
-
$cols[$i]->date = $date->date;
|
222 |
-
$cols[$i]->signups = $date->signups;
|
223 |
-
}
|
224 |
-
}
|
225 |
-
}
|
226 |
-
|
227 |
-
// MRR & LTV
|
228 |
-
if ( $type === "mrr_ltv" ) {
|
229 |
-
$cols[$i] = new stdClass();
|
230 |
-
$cols[$i]->date = $i;
|
231 |
-
$cols[$i]->months = 1;
|
232 |
-
foreach($dates as $date)
|
233 |
-
{
|
234 |
-
if( $date->date == $i ) {
|
235 |
-
$cols[$i]->total = $date->total;
|
236 |
-
}
|
237 |
-
}
|
238 |
-
}
|
239 |
-
}
|
240 |
-
}
|
241 |
-
elseif($period == "annual") //annual
|
242 |
-
{
|
243 |
-
}
|
244 |
-
|
245 |
-
$dates = ( ! empty( $cols ) ) ? $cols : $dates;
|
246 |
-
|
247 |
-
// Signups vs. cancellations
|
248 |
-
if ( $type === "signup_v_cancel" )
|
249 |
-
{
|
250 |
-
$sqlQuery = "SELECT $date_function(mu1.modified) as date, COUNT(DISTINCT mu1.user_id) as cancellations
|
251 |
-
FROM $wpdb->pmpro_memberships_users mu1
|
252 |
-
LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON mu1.user_id = mu2.user_id AND
|
253 |
-
mu2.modified > mu1.enddate AND
|
254 |
-
DATE_ADD(mu1.modified, INTERVAL 1 DAY) > mu2.startdate
|
255 |
-
WHERE mu1.status = 'inactive'
|
256 |
-
AND mu2.id IS NULL
|
257 |
-
AND mu1.startdate >= '" . $startdate . "'
|
258 |
-
AND mu1.startdate < '" . $enddate . "' ";
|
259 |
-
|
260 |
-
//restrict by level
|
261 |
-
if(!empty($l))
|
262 |
-
$sqlQuery .= "AND membership_id IN(" . $l . ") ";
|
263 |
-
|
264 |
-
$sqlQuery .= " GROUP BY date ORDER BY date ";
|
265 |
-
|
266 |
-
$cdates = $wpdb->get_results($sqlQuery, OBJECT_K);
|
267 |
-
|
268 |
-
foreach( $dates as &$date )
|
269 |
-
{
|
270 |
-
if(!empty($cdates[$date->date]))
|
271 |
-
$date->cancellations = $cdates[$date->date]->cancellations;
|
272 |
-
else
|
273 |
-
$date->cancellations = 0;
|
274 |
-
}
|
275 |
-
}
|
276 |
-
|
277 |
-
// MRR & LTV
|
278 |
-
if ( $type === "mrr_ltv" && count( $dates ) === 1 ) {
|
279 |
-
$dummy_date = new stdClass();
|
280 |
-
$dummy_date->total = 0;
|
281 |
-
$dummy_date->months = 0;
|
282 |
-
$dummy_date->date = $dates[0]->date - 1;
|
283 |
-
array_unshift( $dates, $dummy_date ); // Add to beginning
|
284 |
-
}
|
285 |
-
?>
|
286 |
-
<form id="posts-filter" method="get" action="">
|
287 |
-
<h2>
|
288 |
-
<?php _e('Membership Stats', 'pmpro');?>
|
289 |
-
</h2>
|
290 |
-
<ul class="subsubsub">
|
291 |
-
<li>
|
292 |
-
<?php _ex('Show', 'Dropdown label, e.g. Show Daily Revenue for January', 'pmpro')?>
|
293 |
-
<select id="period" name="period">
|
294 |
-
<option value="daily" <?php selected($period, "daily");?>><?php _e('Daily', 'pmpro');?></option>
|
295 |
-
<option value="monthly" <?php selected($period, "monthly");?>><?php _e('Monthly', 'pmpro');?></option>
|
296 |
-
<option value="annual" <?php selected($period, "annual");?>><?php _e('Annual', 'pmpro');?></option>
|
297 |
-
</select>
|
298 |
-
<select id="type" name="type">
|
299 |
-
<option value="signup_v_cancel" <?php selected($type, "signup_v_cancel");?>><?php _e('Signups vs. Cancellations', 'pmpro');?></option>
|
300 |
-
<?php /*
|
301 |
-
<option value="mrr_ltv" <?php selected($type, "mrr_ltv");?>><?php _e('MRR & LTV', 'pmpro');?></option>
|
302 |
-
*/ ?>
|
303 |
-
</select>
|
304 |
-
<span id="for"><?php _ex('for', 'Dropdown label, e.g. Show Daily Revenue for January', 'pmpro')?></span>
|
305 |
-
<select id="month" name="month">
|
306 |
-
<?php for($i = 1; $i < 13; $i++) { ?>
|
307 |
-
<option value="<?php echo $i;?>" <?php selected($month, $i);?>><?php echo date("F", mktime(0, 0, 0, $i));?></option>
|
308 |
-
<?php } ?>
|
309 |
-
</select>
|
310 |
-
<select id="year" name="year">
|
311 |
-
<?php for($i = $thisyear; $i > 2007; $i--) { ?>
|
312 |
-
<option value="<?php echo $i;?>" <?php selected($year, $i);?>><?php echo $i;?></option>
|
313 |
-
<?php } ?>
|
314 |
-
</select>
|
315 |
-
<span id="for"><?php _ex('for', 'Dropdown label, e.g. Show Daily Revenue for January', 'pmpro')?></span>
|
316 |
-
<select name="level">
|
317 |
-
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php _e('All Levels', 'pmpro');?></option>
|
318 |
-
<?php
|
319 |
-
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
320 |
-
foreach($levels as $level)
|
321 |
-
{
|
322 |
-
?>
|
323 |
-
<option value="<?php echo $level->id?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
324 |
-
<?php
|
325 |
-
}
|
326 |
-
?>
|
327 |
-
</select>
|
328 |
-
|
329 |
-
<input type="hidden" name="page" value="pmpro-reports" />
|
330 |
-
<input type="hidden" name="report" value="memberships" />
|
331 |
-
<input type="submit" value="<?php _ex('Generate Report', 'Submit button value.', 'pmpro');?>" />
|
332 |
-
</li>
|
333 |
-
</ul>
|
334 |
-
|
335 |
-
<div id="chart_div" style="clear: both; width: 100%; height: 500px;"></div>
|
336 |
-
|
337 |
-
<script>
|
338 |
-
//update month/year when period dropdown is changed
|
339 |
-
jQuery(document).ready(function() {
|
340 |
-
jQuery('#period').change(function() {
|
341 |
-
pmpro_ShowMonthOrYear();
|
342 |
-
});
|
343 |
-
});
|
344 |
-
|
345 |
-
function pmpro_ShowMonthOrYear()
|
346 |
-
{
|
347 |
-
var period = jQuery('#period').val();
|
348 |
-
if(period == 'daily')
|
349 |
-
{
|
350 |
-
jQuery('#for').show();
|
351 |
-
jQuery('#month').show();
|
352 |
-
jQuery('#year').show();
|
353 |
-
}
|
354 |
-
else if(period == 'monthly')
|
355 |
-
{
|
356 |
-
jQuery('#for').show();
|
357 |
-
jQuery('#month').hide();
|
358 |
-
jQuery('#year').show();
|
359 |
-
}
|
360 |
-
else
|
361 |
-
{
|
362 |
-
jQuery('#for').hide();
|
363 |
-
jQuery('#month').hide();
|
364 |
-
jQuery('#year').hide();
|
365 |
-
}
|
366 |
-
}
|
367 |
-
|
368 |
-
pmpro_ShowMonthOrYear();
|
369 |
-
|
370 |
-
//draw the chart
|
371 |
-
google.load("visualization", "1", {packages:["corechart"]});
|
372 |
-
google.setOnLoadCallback(drawChart);
|
373 |
-
function drawChart() {
|
374 |
-
|
375 |
-
var data = google.visualization.arrayToDataTable([
|
376 |
-
<?php if ( $type === "signup_v_cancel" ) : // Signups vs. cancellations ?>
|
377 |
-
['<?php echo $date_function;?>', 'Signups', 'Cancellations'],
|
378 |
-
<?php foreach($dates as $key => $value) { ?>
|
379 |
-
['<?php if($period == "monthly") echo date("M", mktime(0,0,0,$value->date)); else if($period == "daily") echo $key; else echo $value->date;?>', <?php echo $value->signups; ?>, <?php echo $value->cancellations; ?>],
|
380 |
-
<?php } ?>
|
381 |
-
<?php endif; ?>
|
382 |
-
|
383 |
-
<?php if ( $type === "mrr_ltv" ) : // Signups vs. cancellations ?>
|
384 |
-
['<?php echo $date_function;?>', 'MRR', 'LTV'],
|
385 |
-
<?php foreach($dates as $key => $value) { ?>
|
386 |
-
['<?php if($period == "monthly") echo date("M", mktime(0,0,0,$value->date)); else if($period == "daily") echo $key; else echo $value->date;?>', <?php echo (($mrr = $value->total / $value->months) && $mrr != 0) ? $mrr : 0; ?>, <?php echo pmpro_getLTV($period, NULL, $mrr ); ?>],
|
387 |
-
<?php } ?>
|
388 |
-
<?php endif; ?>
|
389 |
-
]);
|
390 |
-
|
391 |
-
var options = {
|
392 |
-
colors: ['#0099c6', '#dc3912'],
|
393 |
-
hAxis: {title: '<?php echo $date_function;?>', titleTextStyle: {color: 'black'}, maxAlternation: 1},
|
394 |
-
vAxis: {color: 'green', titleTextStyle: {color: '#51a351'}},
|
395 |
-
};
|
396 |
-
|
397 |
-
<?php if ( $type === "signup_v_cancel" ) : // Signups vs. cancellations ?>
|
398 |
-
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
|
399 |
-
<?php elseif ( $type === "mrr_ltv" ) : // MRR & LTV ?>
|
400 |
-
var formatter = new google.visualization.NumberFormat({prefix: '<?php echo html_entity_decode($pmpro_currency_symbol);?>'});
|
401 |
-
formatter.format(data, 2);
|
402 |
-
var formatter = new google.visualization.NumberFormat({prefix: '<?php echo html_entity_decode($pmpro_currency_symbol);?>'});
|
403 |
-
formatter.format(data, 1);
|
404 |
-
|
405 |
-
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
|
406 |
-
<?php endif; ?>
|
407 |
-
chart.draw(data, options);
|
408 |
-
}
|
409 |
-
</script>
|
410 |
-
|
411 |
-
</form>
|
412 |
-
<?php
|
413 |
-
}
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
/*
|
418 |
-
Other code required for your reports. This file is loaded every time WP loads with PMPro enabled.
|
419 |
-
*/
|
420 |
-
|
421 |
-
//get signups
|
422 |
-
function pmpro_getSignups($period = false, $levels = 'all')
|
423 |
-
{
|
424 |
-
//check for a transient
|
425 |
-
$cache = get_transient( 'pmpro_report_memberships_signups' );
|
426 |
-
if( ! empty( $cache ) && ! empty( $cache[$period] ) && ! empty( $cache[$period][$levels] ) )
|
427 |
-
return $cache[$period][$levels];
|
428 |
-
|
429 |
-
//a sale is an order with status = success
|
430 |
-
if( $period == 'today' )
|
431 |
-
$startdate = date(' Y-m-d' );
|
432 |
-
elseif( $period == 'this month')
|
433 |
-
$startdate = date( 'Y-m' ) . '-01';
|
434 |
-
elseif( $period == 'this year')
|
435 |
-
$startdate = date( 'Y' ) . '-01-01';
|
436 |
-
else
|
437 |
-
$startdate = '';
|
438 |
-
|
439 |
-
|
440 |
-
//build query
|
441 |
-
global $wpdb;
|
442 |
-
|
443 |
-
$sqlQuery = "SELECT COUNT(DISTINCT user_id) FROM $wpdb->pmpro_memberships_users WHERE startdate >= '" . $startdate . "' ";
|
444 |
-
|
445 |
-
//restrict by level
|
446 |
-
if(!empty($levels) && $levels != 'all')
|
447 |
-
$sqlQuery .= "AND membership_id IN(" . $levels . ") ";
|
448 |
-
|
449 |
-
$signups = $wpdb->get_var($sqlQuery);
|
450 |
-
|
451 |
-
//save in cache
|
452 |
-
if(!empty($cache) && !empty($cache[$period]))
|
453 |
-
$cache[$period][$levels] = $signups;
|
454 |
-
elseif(!empty($cache))
|
455 |
-
$cache[$period] = array($levels => $signups);
|
456 |
-
else
|
457 |
-
$cache = array($period => array($levels => $signups));
|
458 |
-
|
459 |
-
set_transient("pmpro_report_memberships_signups", $cache, 3600*24);
|
460 |
-
|
461 |
-
return $signups;
|
462 |
-
}
|
463 |
-
|
464 |
-
//get cancellations
|
465 |
-
function pmpro_getCancellations($period = false, $levels = 'all')
|
466 |
-
{
|
467 |
-
//check for a transient
|
468 |
-
$cache = get_transient( 'pmpro_report_memberships_cancellations' );
|
469 |
-
if( ! empty( $cache ) && ! empty( $cache[$period] ) && ! empty( $cache[$period][$levels] ) )
|
470 |
-
return $cache[$period][$levels];
|
471 |
-
|
472 |
-
//figure out start date
|
473 |
-
if( $period == 'today' )
|
474 |
-
$startdate = date(' Y-m-d' );
|
475 |
-
elseif( $period == 'this month')
|
476 |
-
$startdate = date( 'Y-m' ) . '-01';
|
477 |
-
elseif( $period == 'this year')
|
478 |
-
$startdate = date( 'Y' ) . '-01-01';
|
479 |
-
else
|
480 |
-
$startdate = '';
|
481 |
-
|
482 |
-
$startdate_plus_one = strtotime( $startdate . + ' + 1 day', current_time("timestamp") );
|
483 |
-
|
484 |
-
/*
|
485 |
-
build query.
|
486 |
-
cancellations are marked in the memberships users table with status = 'inactive'
|
487 |
-
we try to ignore cancellations when the user gets a new level with 24 hours (probably an upgrade or downgrade)
|
488 |
-
*/
|
489 |
-
global $wpdb;
|
490 |
-
|
491 |
-
//$sqlQuery = "SELECT mu1.user_id, mu2.user_id FROM $wpdb->pmpro_memberships_users mu1 LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON mu1.user_id = mu2.user_id AND mu2.status = 'inactive' AND mu2.startdate > mu1.startdate";
|
492 |
-
$sqlQuery = "SELECT COUNT(mu1.id)
|
493 |
-
FROM $wpdb->pmpro_memberships_users mu1
|
494 |
-
LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON mu1.user_id = mu2.user_id AND
|
495 |
-
mu2.modified > mu1.enddate AND
|
496 |
-
DATE_ADD(mu1.modified, INTERVAL 1 DAY) > mu2.startdate
|
497 |
-
WHERE mu1.status = 'inactive'
|
498 |
-
AND mu2.id IS NULL
|
499 |
-
AND mu1.startdate >= '" . $startdate . "' ";
|
500 |
-
|
501 |
-
//restrict by level
|
502 |
-
if(!empty($levels) && $levels != 'all')
|
503 |
-
$sqlQuery .= "AND membership_id IN(" . $levels . ") ";
|
504 |
-
|
505 |
-
$cancellations = $wpdb->get_var($sqlQuery);
|
506 |
-
|
507 |
-
//save in cache
|
508 |
-
if(!empty($cache) && !empty($cache[$period]) && is_array($cache[$period]))
|
509 |
-
$cache[$period][$levels] = $cancellations;
|
510 |
-
elseif(!empty($cache))
|
511 |
-
$cache[$period] = array($levels => $cancellations);
|
512 |
-
else
|
513 |
-
$cache = array($period => array($levels => $cancellations));
|
514 |
-
|
515 |
-
set_transient("pmpro_report_memberships_cancellations", $cache, 3600*24);
|
516 |
-
|
517 |
-
return $cancellations;
|
518 |
-
}
|
519 |
-
|
520 |
-
//get MRR
|
521 |
-
function pmpro_getMRR($period, $levels = 'all')
|
522 |
-
{
|
523 |
-
//check for a transient
|
524 |
-
//$cache = get_transient("pmpro_report_mrr");
|
525 |
-
if(!empty($cache) && !empty($cache[$period]) && !empty($cache[$period][$levels]))
|
526 |
-
return $cache[$period][$levels];
|
527 |
-
|
528 |
-
//a sale is an order with status NOT IN refunded, review, token, error
|
529 |
-
if($period == "this month")
|
530 |
-
$startdate = date("Y-m") . "-01";
|
531 |
-
elseif($period == "this year")
|
532 |
-
$startdate = date("Y") . "-01-01";
|
533 |
-
else
|
534 |
-
$startdate = "";
|
535 |
-
|
536 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
537 |
-
|
538 |
-
//build query
|
539 |
-
global $wpdb;
|
540 |
-
// Get total revenue
|
541 |
-
$sqlQuery = "SELECT SUM(total) FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token', 'error') AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
|
542 |
-
|
543 |
-
//restrict by level
|
544 |
-
if(!empty($levels) && $levels != 'all') {
|
545 |
-
$sqlQuery .= "AND membership_id IN(" . $levels . ") ";
|
546 |
-
}
|
547 |
-
|
548 |
-
$revenue = $wpdb->get_var($sqlQuery);
|
549 |
-
|
550 |
-
//when was the first order
|
551 |
-
$first_order_timestamp = $wpdb->get_var("SELECT UNIX_TIMESTAMP(`timestamp`) FROM $wpdb->pmpro_membership_orders WHERE `timestamp` IS NOT NULL AND `timestamp` > '0000-00-00 00:00:00' ORDER BY `timestamp` LIMIT 1");
|
552 |
-
|
553 |
-
//if we don't have a timestamp, we can't do this
|
554 |
-
if(empty($first_order_timestamp))
|
555 |
-
return false;
|
556 |
-
|
557 |
-
//how many months ago was the first order
|
558 |
-
$months = $wpdb->get_var("SELECT PERIOD_DIFF('" . date("Ym") . "', '" . date("Ym", $first_order_timestamp) . "')");
|
559 |
-
|
560 |
-
/* this works in PHP 5.3+ without using MySQL to get the diff
|
561 |
-
$date1 = new DateTime(date("Y-m-d", $first_order_timestamp));
|
562 |
-
$date2 = new DateTime(date("Y-m-d"));
|
563 |
-
$interval = $date1->diff($date2);
|
564 |
-
$years = intval($interval->format('%y'));
|
565 |
-
$months = $years*12 + intval($interval->format('%m'));
|
566 |
-
*/
|
567 |
-
|
568 |
-
if($months > 0)
|
569 |
-
$mrr = $revenue / $months;
|
570 |
-
else
|
571 |
-
$mrr = 0;
|
572 |
-
|
573 |
-
//save in cache
|
574 |
-
if(!empty($cache) && !empty($cache[$period]))
|
575 |
-
$cache[$period][$levels] = $mrr;
|
576 |
-
elseif(!empty($cache))
|
577 |
-
$cache[$period] = array($levels => $mrr);
|
578 |
-
else
|
579 |
-
$cache = array($period => array($levels => $mrr));
|
580 |
-
|
581 |
-
set_transient("pmpro_report_mrr", $cache, 3600*24);
|
582 |
-
|
583 |
-
return $mrr;
|
584 |
-
}
|
585 |
-
|
586 |
-
//get Cancellation Rate
|
587 |
-
function pmpro_getCancellationRate($period, $levels = 'all')
|
588 |
-
{
|
589 |
-
//check for a transient
|
590 |
-
$cache = get_transient("pmpro_report_cancellation_rate");
|
591 |
-
if(!empty($cache) && !empty($cache[$period]) && !empty($cache[$period][$levels]))
|
592 |
-
return $cache[$period][$levels];
|
593 |
-
|
594 |
-
$signups = pmpro_getSignups($period, $levels);
|
595 |
-
$cancellations = pmpro_getCancellations($period, $levels);
|
596 |
-
|
597 |
-
if(empty($signups))
|
598 |
-
return false;
|
599 |
-
|
600 |
-
$rate = number_format(($cancellations / $signups)*100, 2);
|
601 |
-
|
602 |
-
//save in cache
|
603 |
-
if(!empty($cache) && !empty($cache[$period]))
|
604 |
-
$cache[$period][$levels] = $rate;
|
605 |
-
elseif(!empty($cache))
|
606 |
-
$cache[$period] = array($levels => $rate);
|
607 |
-
else
|
608 |
-
$cache = array($period => array($levels => $rate));
|
609 |
-
|
610 |
-
set_transient("pmpro_report_cancellation_rate", $cache, 3600*24);
|
611 |
-
|
612 |
-
return $rate;
|
613 |
-
}
|
614 |
-
|
615 |
-
//get LTV
|
616 |
-
function pmpro_getLTV($period, $levels = 'all', $mrr = NULL, $signups = NULL, $cancellation_rate = NULL)
|
617 |
-
{
|
618 |
-
if(empty($mrr))
|
619 |
-
$mrr = pmpro_getMRR($period, $levels);
|
620 |
-
if(empty($signups))
|
621 |
-
$signups = pmpro_getSignups($period, $levels);
|
622 |
-
if(empty($cancellation_rate))
|
623 |
-
$cancellation_rate = pmpro_getCancellationRate($period, $levels);
|
624 |
-
|
625 |
-
//average monthly spend
|
626 |
-
if(empty($signups))
|
627 |
-
return false;
|
628 |
-
|
629 |
-
if($signups > 0)
|
630 |
-
$ams = $mrr / $signups;
|
631 |
-
else
|
632 |
-
$ams = 0;
|
633 |
-
|
634 |
-
if($cancellation_rate > 0)
|
635 |
-
$ltv = $ams * (1/$cancellation_rate);
|
636 |
-
else
|
637 |
-
$ltv = $ams;
|
638 |
-
|
639 |
-
return $ltv;
|
640 |
-
}
|
641 |
-
|
642 |
-
//delete transients when an order goes through
|
643 |
-
function pmpro_report_memberships_delete_transients()
|
644 |
-
{
|
645 |
-
delete_transient("pmpro_report_mrr");
|
646 |
-
delete_transient("pmpro_report_cancellation_rate");
|
647 |
-
delete_transient("pmpro_report_memberships_cancellations");
|
648 |
-
delete_transient("pmpro_report_memberships_signups");
|
649 |
-
}
|
650 |
-
add_action("pmpro_after_checkout", "pmpro_report_memberships_delete_transients");
|
651 |
-
add_action("pmpro_updated_order", "pmpro_report_memberships_delete_transients");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adminpages/reports/sales.php
DELETED
@@ -1,397 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
PMPro Report
|
4 |
-
Title: Sales
|
5 |
-
Slug: sales
|
6 |
-
|
7 |
-
For each report, add a line like:
|
8 |
-
global $pmpro_reports;
|
9 |
-
$pmpro_reports['slug'] = 'Title';
|
10 |
-
|
11 |
-
For each report, also write two functions:
|
12 |
-
* pmpro_report_{slug}_widget() to show up on the report homepage.
|
13 |
-
* pmpro_report_{slug}_page() to show up when users click on the report page widget.
|
14 |
-
*/
|
15 |
-
global $pmpro_reports;
|
16 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
17 |
-
if($gateway_environment == "sandbox")
|
18 |
-
$pmpro_reports['sales'] = __('Sales and Revenue (Testing/Sandbox)', 'pmpro');
|
19 |
-
else
|
20 |
-
$pmpro_reports['sales'] = __('Sales and Revenue', 'pmpro');
|
21 |
-
|
22 |
-
//queue Google Visualization JS on report page
|
23 |
-
function pmpro_report_sales_init()
|
24 |
-
{
|
25 |
-
if(is_admin() && isset($_REQUEST['report']) && $_REQUEST['report'] == "sales" && isset($_REQUEST['page']) && $_REQUEST['page'] == "pmpro-reports")
|
26 |
-
{
|
27 |
-
wp_enqueue_script("jsapi", "https://www.google.com/jsapi");
|
28 |
-
}
|
29 |
-
}
|
30 |
-
add_action("init", "pmpro_report_sales_init");
|
31 |
-
|
32 |
-
//widget
|
33 |
-
function pmpro_report_sales_widget()
|
34 |
-
{
|
35 |
-
global $wpdb, $pmpro_currency_symbol;
|
36 |
-
?>
|
37 |
-
<style>
|
38 |
-
#pmpro_report_sales div {text-align: center;}
|
39 |
-
#pmpro_report_sales em {display: block; font-style: normal; font-size: 2em; margin: 5px;}
|
40 |
-
</style>
|
41 |
-
<span id="#pmpro_report_sales">
|
42 |
-
<div style="width: 25%; float: left;">
|
43 |
-
<em><?php echo pmpro_getSales("all time");?></em>
|
44 |
-
<label>All Time</label>
|
45 |
-
<em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("all time"), 2);?></em>
|
46 |
-
</div>
|
47 |
-
<div style="width: 25%; float: left;">
|
48 |
-
<em><?php echo pmpro_getSales("this year");?></em>
|
49 |
-
<label>This Year</label>
|
50 |
-
<em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("this year"), 2);?></em>
|
51 |
-
</div>
|
52 |
-
<div style="width: 25%; float: left;">
|
53 |
-
<em><?php echo pmpro_getSales("this month");?></em>
|
54 |
-
<label>This Month</label>
|
55 |
-
<em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("this month"), 2);?></em>
|
56 |
-
</div>
|
57 |
-
<div style="width: 25%; float: left;">
|
58 |
-
<em><?php echo pmpro_getSales("today");?></em>
|
59 |
-
<label>Today</label>
|
60 |
-
<em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("today"), 2);?></em>
|
61 |
-
</div>
|
62 |
-
<div class="clear"></div>
|
63 |
-
</span>
|
64 |
-
<?php
|
65 |
-
}
|
66 |
-
|
67 |
-
function pmpro_report_sales_page()
|
68 |
-
{
|
69 |
-
global $wpdb, $pmpro_currency_symbol;
|
70 |
-
|
71 |
-
//get values from form
|
72 |
-
if(isset($_REQUEST['type']))
|
73 |
-
$type = sanitize_text_field($_REQUEST['type']);
|
74 |
-
else
|
75 |
-
$type = "revenue";
|
76 |
-
|
77 |
-
if($type == "sales")
|
78 |
-
$type_function = "COUNT";
|
79 |
-
else
|
80 |
-
$type_function = "SUM";
|
81 |
-
|
82 |
-
if(isset($_REQUEST['period']))
|
83 |
-
$period = sanitize_text_field($_REQUEST['period']);
|
84 |
-
else
|
85 |
-
$period = "daily";
|
86 |
-
|
87 |
-
if(isset($_REQUEST['month']))
|
88 |
-
$month = intval($_REQUEST['month']);
|
89 |
-
else
|
90 |
-
$month = date("n");
|
91 |
-
|
92 |
-
$thisyear = date("Y");
|
93 |
-
if(isset($_REQUEST['year']))
|
94 |
-
$year = intval($_REQUEST['year']);
|
95 |
-
else
|
96 |
-
$year = $thisyear;
|
97 |
-
|
98 |
-
if(isset($_REQUEST['level']))
|
99 |
-
$l = intval($_REQUEST['level']);
|
100 |
-
else
|
101 |
-
$l = "";
|
102 |
-
|
103 |
-
//calculate start date and how to group dates returned from DB
|
104 |
-
if($period == "daily")
|
105 |
-
{
|
106 |
-
$startdate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-01';
|
107 |
-
$enddate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-31';
|
108 |
-
$date_function = 'DAY';
|
109 |
-
}
|
110 |
-
elseif($period == "monthly")
|
111 |
-
{
|
112 |
-
$startdate = $year . '-01-01';
|
113 |
-
$enddate = strval(intval($year)+1) . '-01-01';
|
114 |
-
$date_function = 'MONTH';
|
115 |
-
}
|
116 |
-
else
|
117 |
-
{
|
118 |
-
$startdate = '1960-01-01'; //all time
|
119 |
-
$date_function = 'YEAR';
|
120 |
-
}
|
121 |
-
|
122 |
-
//testing or live data
|
123 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
124 |
-
|
125 |
-
//get data
|
126 |
-
$sqlQuery = "SELECT $date_function(timestamp) as date, $type_function(total) as value FROM $wpdb->pmpro_membership_orders WHERE timestamp >= '" . $startdate . "' AND status NOT IN('refunded', 'review', 'token', 'error') AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
|
127 |
-
|
128 |
-
if(!empty($enddate))
|
129 |
-
$sqlQuery .= "AND timestamp < '" . $enddate . "' ";
|
130 |
-
|
131 |
-
if(!empty($l))
|
132 |
-
$sqlQuery .= "AND membership_id IN(" . $l . ") ";
|
133 |
-
|
134 |
-
$sqlQuery .= " GROUP BY date ORDER BY date ";
|
135 |
-
|
136 |
-
$dates = $wpdb->get_results($sqlQuery);
|
137 |
-
|
138 |
-
//fill in blanks in dates
|
139 |
-
$cols = array();
|
140 |
-
if($period == "daily")
|
141 |
-
{
|
142 |
-
$lastday = date("t", $startdate);
|
143 |
-
|
144 |
-
for($i = 1; $i <= $lastday; $i++)
|
145 |
-
{
|
146 |
-
$cols[$i] = 0;
|
147 |
-
foreach($dates as $date)
|
148 |
-
{
|
149 |
-
if($date->date == $i)
|
150 |
-
$cols[$i] = $date->value;
|
151 |
-
}
|
152 |
-
}
|
153 |
-
}
|
154 |
-
elseif($period == "monthly")
|
155 |
-
{
|
156 |
-
for($i = 1; $i < 13; $i++)
|
157 |
-
{
|
158 |
-
$cols[$i] = 0;
|
159 |
-
foreach($dates as $date)
|
160 |
-
{
|
161 |
-
if($date->date == $i)
|
162 |
-
$cols[$i] = $date->value;
|
163 |
-
}
|
164 |
-
}
|
165 |
-
}
|
166 |
-
else //annual
|
167 |
-
{
|
168 |
-
//get min and max years
|
169 |
-
$min = 9999;
|
170 |
-
$max = 0;
|
171 |
-
foreach($dates as $date)
|
172 |
-
{
|
173 |
-
$min = min($min, $date->date);
|
174 |
-
$max = max($max, $date->date);
|
175 |
-
}
|
176 |
-
|
177 |
-
for($i = $min; $i <= $max; $i++)
|
178 |
-
{
|
179 |
-
foreach($dates as $date)
|
180 |
-
{
|
181 |
-
if($date->date == $i)
|
182 |
-
$cols[$i] = $date->value;
|
183 |
-
}
|
184 |
-
}
|
185 |
-
}
|
186 |
-
?>
|
187 |
-
<form id="posts-filter" method="get" action="">
|
188 |
-
<h2>
|
189 |
-
<?php _e('Sales and Revenue', 'pmpro');?>
|
190 |
-
</h2>
|
191 |
-
|
192 |
-
<div class="tablenav top">
|
193 |
-
<?php _ex('Show', 'Dropdown label, e.g. Show Daily Revenue for January', 'pmpro')?>
|
194 |
-
<select id="period" name="period">
|
195 |
-
<option value="daily" <?php selected($period, "daily");?>><?php _e('Daily', 'pmpro');?></option>
|
196 |
-
<option value="monthly" <?php selected($period, "monthly");?>><?php _e('Monthly', 'pmpro');?></option>
|
197 |
-
<option value="annual" <?php selected($period, "annual");?>><?php _e('Annual', 'pmpro');?></option>
|
198 |
-
</select>
|
199 |
-
<select name="type">
|
200 |
-
<option value="revenue" <?php selected($type, "revenue");?>><?php _e('Revenue', 'pmpro');?></option>
|
201 |
-
<option value="sales" <?php selected($type, "sales");?>><?php _e('Sales', 'pmpro');?></option>
|
202 |
-
</select>
|
203 |
-
<span id="for"><?php _ex('for', 'Dropdown label, e.g. Show Daily Revenue for January', 'pmpro')?></span>
|
204 |
-
<select id="month" name="month">
|
205 |
-
<?php for($i = 1; $i < 13; $i++) { ?>
|
206 |
-
<option value="<?php echo $i;?>" <?php selected($month, $i);?>><?php echo date("F", mktime(0, 0, 0, $i));?></option>
|
207 |
-
<?php } ?>
|
208 |
-
</select>
|
209 |
-
<select id="year" name="year">
|
210 |
-
<?php for($i = $thisyear; $i > 2007; $i--) { ?>
|
211 |
-
<option value="<?php echo $i;?>" <?php selected($year, $i);?>><?php echo $i;?></option>
|
212 |
-
<?php } ?>
|
213 |
-
</select>
|
214 |
-
<span id="for"><?php _ex('for', 'Dropdown label, e.g. Show Daily Revenue for January', 'pmpro')?></span>
|
215 |
-
<select name="level">
|
216 |
-
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php _e('All Levels', 'pmpro');?></option>
|
217 |
-
<?php
|
218 |
-
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
219 |
-
foreach($levels as $level)
|
220 |
-
{
|
221 |
-
?>
|
222 |
-
<option value="<?php echo $level->id?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
223 |
-
<?php
|
224 |
-
}
|
225 |
-
?>
|
226 |
-
</select>
|
227 |
-
|
228 |
-
<input type="hidden" name="page" value="pmpro-reports" />
|
229 |
-
<input type="hidden" name="report" value="sales" />
|
230 |
-
<input type="submit" class="button action" value="<?php _ex('Generate Report', 'Submit button value.', 'pmpro');?>" />
|
231 |
-
</div>
|
232 |
-
|
233 |
-
<div id="chart_div" style="clear: both; width: 100%; height: 500px;"></div>
|
234 |
-
|
235 |
-
<script>
|
236 |
-
//update month/year when period dropdown is changed
|
237 |
-
jQuery(document).ready(function() {
|
238 |
-
jQuery('#period').change(function() {
|
239 |
-
pmpro_ShowMonthOrYear();
|
240 |
-
});
|
241 |
-
});
|
242 |
-
|
243 |
-
function pmpro_ShowMonthOrYear()
|
244 |
-
{
|
245 |
-
var period = jQuery('#period').val();
|
246 |
-
if(period == 'daily')
|
247 |
-
{
|
248 |
-
jQuery('#for').show();
|
249 |
-
jQuery('#month').show();
|
250 |
-
jQuery('#year').show();
|
251 |
-
}
|
252 |
-
else if(period == 'monthly')
|
253 |
-
{
|
254 |
-
jQuery('#for').show();
|
255 |
-
jQuery('#month').hide();
|
256 |
-
jQuery('#year').show();
|
257 |
-
}
|
258 |
-
else
|
259 |
-
{
|
260 |
-
jQuery('#for').hide();
|
261 |
-
jQuery('#month').hide();
|
262 |
-
jQuery('#year').hide();
|
263 |
-
}
|
264 |
-
}
|
265 |
-
|
266 |
-
pmpro_ShowMonthOrYear();
|
267 |
-
|
268 |
-
//draw the chart
|
269 |
-
google.load("visualization", "1", {packages:["corechart"]});
|
270 |
-
google.setOnLoadCallback(drawChart);
|
271 |
-
function drawChart() {
|
272 |
-
|
273 |
-
var data = google.visualization.arrayToDataTable([
|
274 |
-
['<?php echo $date_function;?>', '<?php echo ucwords($type);?>'],
|
275 |
-
<?php foreach($cols as $date => $value) { ?>
|
276 |
-
['<?php if($period == "monthly") echo date("M", mktime(0,0,0,$date)); else echo $date;?>', <?php echo $value;?>],
|
277 |
-
<?php } ?>
|
278 |
-
]);
|
279 |
-
|
280 |
-
var options = {
|
281 |
-
colors: ['#51a351', '#387038'],
|
282 |
-
hAxis: {title: '<?php echo $date_function;?>', titleTextStyle: {color: 'black'}, maxAlternation: 1},
|
283 |
-
vAxis: {color: 'green', titleTextStyle: {color: '#51a351'}},
|
284 |
-
};
|
285 |
-
|
286 |
-
<?php if($type != "sales") { ?>
|
287 |
-
var formatter = new google.visualization.NumberFormat({prefix: '<?php echo html_entity_decode($pmpro_currency_symbol);?>'});
|
288 |
-
formatter.format(data, 1);
|
289 |
-
<?php } ?>
|
290 |
-
|
291 |
-
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
|
292 |
-
chart.draw(data, options);
|
293 |
-
}
|
294 |
-
</script>
|
295 |
-
|
296 |
-
</form>
|
297 |
-
<?php
|
298 |
-
}
|
299 |
-
|
300 |
-
/*
|
301 |
-
Other code required for your reports. This file is loaded every time WP loads with PMPro enabled.
|
302 |
-
*/
|
303 |
-
|
304 |
-
//get sales
|
305 |
-
function pmpro_getSales($period, $levels = NULL)
|
306 |
-
{
|
307 |
-
//check for a transient
|
308 |
-
$cache = get_transient("pmpro_report_sales");
|
309 |
-
if(!empty($cache) && !empty($cache[$period]) && !empty($cache[$period][$levels]))
|
310 |
-
return $cache[$period][$levels];
|
311 |
-
|
312 |
-
//a sale is an order with status NOT IN('refunded', 'review', 'token', 'error')
|
313 |
-
if($period == "today")
|
314 |
-
$startdate = date("Y-m-d");
|
315 |
-
elseif($period == "this month")
|
316 |
-
$startdate = date("Y-m") . "-01";
|
317 |
-
elseif($period == "this year")
|
318 |
-
$startdate = date("Y") . "-01-01";
|
319 |
-
else
|
320 |
-
$startdate = "";
|
321 |
-
|
322 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
323 |
-
|
324 |
-
//build query
|
325 |
-
global $wpdb;
|
326 |
-
$sqlQuery = "SELECT COUNT(*) FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token', 'error') AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
|
327 |
-
|
328 |
-
//restrict by level
|
329 |
-
if(!empty($levels))
|
330 |
-
$sqlQuery .= "AND membership_id IN(" . $levels . ") ";
|
331 |
-
|
332 |
-
$sales = $wpdb->get_var($sqlQuery);
|
333 |
-
|
334 |
-
//save in cache
|
335 |
-
if(!empty($cache) && !empty($cache[$period]))
|
336 |
-
$cache[$period][$levels] = $sales;
|
337 |
-
elseif(!empty($cache))
|
338 |
-
$cache[$period] = array($levels => $sales);
|
339 |
-
else
|
340 |
-
$cache = array($period => array($levels => $sales));
|
341 |
-
|
342 |
-
set_transient("pmpro_report_sales", $cache, 3600*24);
|
343 |
-
|
344 |
-
return $sales;
|
345 |
-
}
|
346 |
-
|
347 |
-
//get revenue
|
348 |
-
function pmpro_getRevenue($period, $levels = NULL)
|
349 |
-
{
|
350 |
-
//check for a transient
|
351 |
-
$cache = get_transient("pmpro_report_revenue");
|
352 |
-
if(!empty($cache) && !empty($cache[$period]) && !empty($cache[$period][$levels]))
|
353 |
-
return $cache[$period][$levels];
|
354 |
-
|
355 |
-
//a sale is an order with status NOT IN('refunded', 'review', 'token', 'error')
|
356 |
-
if($period == "today")
|
357 |
-
$startdate = date("Y-m-d");
|
358 |
-
elseif($period == "this month")
|
359 |
-
$startdate = date("Y-m") . "-01";
|
360 |
-
elseif($period == "this year")
|
361 |
-
$startdate = date("Y") . "-01-01";
|
362 |
-
else
|
363 |
-
$startdate = "";
|
364 |
-
|
365 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
366 |
-
|
367 |
-
//build query
|
368 |
-
global $wpdb;
|
369 |
-
$sqlQuery = "SELECT SUM(total) FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token', 'error') AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
|
370 |
-
|
371 |
-
//restrict by level
|
372 |
-
if(!empty($levels))
|
373 |
-
$sqlQuery .= "AND membership_id IN(" . $levels . ") ";
|
374 |
-
|
375 |
-
$revenue = $wpdb->get_var($sqlQuery);
|
376 |
-
|
377 |
-
//save in cache
|
378 |
-
if(!empty($cache) && !empty($cache[$period]))
|
379 |
-
$cache[$period][$levels] = $revenue;
|
380 |
-
elseif(!empty($cache))
|
381 |
-
$cache[$period] = array($levels => $revenue);
|
382 |
-
else
|
383 |
-
$cache = array($period => array($levels => $revenue));
|
384 |
-
|
385 |
-
set_transient("pmpro_report_revenue", $cache, 3600*24);
|
386 |
-
|
387 |
-
return $revenue;
|
388 |
-
}
|
389 |
-
|
390 |
-
//delete transients when an order goes through
|
391 |
-
function pmpro_report_sales_delete_transients()
|
392 |
-
{
|
393 |
-
delete_transient("pmpro_report_sales");
|
394 |
-
delete_transient("pmpro_report_revenue");
|
395 |
-
}
|
396 |
-
add_action("pmpro_after_checkout", "pmpro_report_sales_delete_transients");
|
397 |
-
add_action("pmpro_updated_order", "pmpro_report_sales_delete_transients");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/class.memberorder.php
CHANGED
@@ -109,7 +109,7 @@
|
|
109 |
|
110 |
//which one to load?
|
111 |
$classname = "PMProGateway"; //default test gateway
|
112 |
-
if(!empty($this->gateway)
|
113 |
$classname .= "_" . $this->gateway; //adding the gateway suffix
|
114 |
|
115 |
//try to load it
|
@@ -125,7 +125,7 @@
|
|
125 |
return $this->Gateway;
|
126 |
}
|
127 |
|
128 |
-
function getLastMemberOrder($user_id = NULL, $status = 'success'
|
129 |
{
|
130 |
global $current_user, $wpdb;
|
131 |
if(!$user_id)
|
@@ -139,10 +139,7 @@
|
|
139 |
if(!empty($status) && is_array($status))
|
140 |
$this->sqlQuery .= "AND status IN('" . implode("','", $status) . "') ";
|
141 |
elseif(!empty($status))
|
142 |
-
$this->sqlQuery .= "AND status = '" .
|
143 |
-
|
144 |
-
if(!empty($membership_id))
|
145 |
-
$this->sqlQuery .= "AND membership_id = '" . $membership_id . "' ";
|
146 |
$this->sqlQuery .= "ORDER BY timestamp DESC LIMIT 1";
|
147 |
|
148 |
//get id
|
@@ -151,9 +148,6 @@
|
|
151 |
return $this->getMemberOrderByID($id);
|
152 |
}
|
153 |
|
154 |
-
/*
|
155 |
-
Returns the order using the given order code.
|
156 |
-
*/
|
157 |
function getMemberOrderByCode($code)
|
158 |
{
|
159 |
global $wpdb;
|
@@ -164,17 +158,10 @@
|
|
164 |
return false;
|
165 |
}
|
166 |
|
167 |
-
/*
|
168 |
-
Returns the last order using the given payment_transaction_id.
|
169 |
-
*/
|
170 |
function getMemberOrderByPaymentTransactionID($payment_transaction_id)
|
171 |
{
|
172 |
-
//did they pass a trans id?
|
173 |
-
if(empty($payment_transaction_id))
|
174 |
-
return false;
|
175 |
-
|
176 |
global $wpdb;
|
177 |
-
$id = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE payment_transaction_id = '" .
|
178 |
if($id)
|
179 |
return $this->getMemberOrderByID($id);
|
180 |
else
|
@@ -186,13 +173,8 @@
|
|
186 |
*/
|
187 |
function getLastMemberOrderBySubscriptionTransactionID($subscription_transaction_id)
|
188 |
{
|
189 |
-
//did they pass a sub id?
|
190 |
-
if(empty($subscription_transaction_id))
|
191 |
-
return false;
|
192 |
-
|
193 |
global $wpdb;
|
194 |
-
$id = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE subscription_transaction_id = '" .
|
195 |
-
|
196 |
if($id)
|
197 |
return $this->getMemberOrderByID($id);
|
198 |
else
|
@@ -217,9 +199,6 @@
|
|
217 |
global $wpdb;
|
218 |
$this->discount_code = $wpdb->get_row("SELECT dc.* FROM $wpdb->pmpro_discount_codes dc LEFT JOIN $wpdb->pmpro_discount_codes_uses dcu ON dc.id = dcu.code_id WHERE dcu.order_id = '" . $this->id . "' LIMIT 1");
|
219 |
|
220 |
-
//filter @since v1.7.14
|
221 |
-
$this->discount_code = apply_filters("pmpro_order_discount_code", $this->discount_code, $this);
|
222 |
-
|
223 |
return $this->discount_code;
|
224 |
}
|
225 |
|
@@ -255,13 +234,7 @@
|
|
255 |
//okay, do I have a discount code to check? (if there is no membership_level->membership_id value, that means there was no entry in memberships_users)
|
256 |
if(!empty($this->discount_code) && empty($this->membership_level->membership_id))
|
257 |
{
|
258 |
-
|
259 |
-
$discount_code = $this->discount_code->code;
|
260 |
-
else
|
261 |
-
$discount_code = $this->discount_code;
|
262 |
-
|
263 |
-
$sqlQuery = "SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id LEFT JOIN $wpdb->pmpro_discount_codes dc ON dc.id = cl.code_id WHERE dc.code = '" . $discount_code . "' AND cl.level_id = '" . $this->membership_id . "' LIMIT 1";
|
264 |
-
|
265 |
$this->membership_level = $wpdb->get_row($sqlQuery);
|
266 |
}
|
267 |
|
@@ -287,7 +260,7 @@
|
|
287 |
if($tax_state && $tax_rate)
|
288 |
{
|
289 |
//we have values, is this order in the tax state?
|
290 |
-
if(
|
291 |
{
|
292 |
//return value, pass through filter
|
293 |
$tax = round((float)$price * (float)$tax_rate, 2);
|
@@ -375,11 +348,10 @@
|
|
375 |
//these fix some warnings/notices
|
376 |
if(empty($this->billing))
|
377 |
{
|
378 |
-
$this->billing = new stdClass();
|
379 |
$this->billing->name = $this->billing->street = $this->billing->city = $this->billing->state = $this->billing->zip = $this->billing->country = $this->billing->phone = "";
|
380 |
}
|
381 |
if(empty($this->user_id))
|
382 |
-
$this->user_id =
|
383 |
if(empty($this->paypal_token))
|
384 |
$this->paypal_token = "";
|
385 |
if(empty($this->couponamount))
|
@@ -395,15 +367,7 @@
|
|
395 |
if(empty($this->affiliate_subid))
|
396 |
$this->affiliate_subid = "";
|
397 |
if(empty($this->session_id))
|
398 |
-
$this->session_id = "";
|
399 |
-
if(empty($this->accountnumber))
|
400 |
-
$this->accountnumber = "";
|
401 |
-
if(empty($this->cardtype))
|
402 |
-
$this->cardtype = "";
|
403 |
-
if(empty($this->ExpirationDate))
|
404 |
-
$this->ExpirationDate = "";
|
405 |
-
if (empty($this->status))
|
406 |
-
$this->status = "";
|
407 |
|
408 |
if(empty($this->gateway))
|
409 |
$this->gateway = pmpro_getOption("gateway");
|
@@ -423,20 +387,20 @@
|
|
423 |
$this->sqlQuery = "UPDATE $wpdb->pmpro_membership_orders
|
424 |
SET `code` = '" . $this->code . "',
|
425 |
`session_id` = '" . $this->session_id . "',
|
426 |
-
`user_id` = " .
|
427 |
-
`membership_id` = " .
|
428 |
`paypal_token` = '" . $this->paypal_token . "',
|
429 |
-
`billing_name` = '" .
|
430 |
-
`billing_street` = '" .
|
431 |
-
`billing_city` = '" .
|
432 |
-
`billing_state` = '" .
|
433 |
-
`billing_zip` = '" .
|
434 |
-
`billing_country` = '" .
|
435 |
-
`billing_phone` = '" .
|
436 |
`subtotal` = '" . $this->subtotal . "',
|
437 |
`tax` = '" . $this->tax . "',
|
438 |
`couponamount` = '" . $this->couponamount . "',
|
439 |
-
`certificate_id` = " .
|
440 |
`certificateamount` = '" . $this->certificateamount . "',
|
441 |
`total` = '" . $this->total . "',
|
442 |
`payment_type` = '" . $this->payment_type . "',
|
@@ -444,14 +408,14 @@
|
|
444 |
`accountnumber` = '" . $this->accountnumber . "',
|
445 |
`expirationmonth` = '" . $this->expirationmonth . "',
|
446 |
`expirationyear` = '" . $this->expirationyear . "',
|
447 |
-
`status` = '" .
|
448 |
`gateway` = '" . $this->gateway . "',
|
449 |
`gateway_environment` = '" . $this->gateway_environment . "',
|
450 |
-
`payment_transaction_id` = '" .
|
451 |
-
`subscription_transaction_id` = '" .
|
452 |
-
`affiliate_id` = '" .
|
453 |
-
`affiliate_subid` = '" .
|
454 |
-
`notes` = '" .
|
455 |
WHERE id = '" . $this->id . "'
|
456 |
LIMIT 1";
|
457 |
}
|
@@ -465,20 +429,20 @@
|
|
465 |
(`code`, `session_id`, `user_id`, `membership_id`, `paypal_token`, `billing_name`, `billing_street`, `billing_city`, `billing_state`, `billing_zip`, `billing_country`, `billing_phone`, `subtotal`, `tax`, `couponamount`, `certificate_id`, `certificateamount`, `total`, `payment_type`, `cardtype`, `accountnumber`, `expirationmonth`, `expirationyear`, `status`, `gateway`, `gateway_environment`, `payment_transaction_id`, `subscription_transaction_id`, `timestamp`, `affiliate_id`, `affiliate_subid`, `notes`)
|
466 |
VALUES('" . $this->code . "',
|
467 |
'" . session_id() . "',
|
468 |
-
" .
|
469 |
-
" .
|
470 |
'" . $this->paypal_token . "',
|
471 |
-
'" .
|
472 |
-
'" .
|
473 |
-
'" .
|
474 |
-
'" .
|
475 |
-
'" .
|
476 |
-
'" .
|
477 |
'" . cleanPhone($this->billing->phone) . "',
|
478 |
'" . $amount . "',
|
479 |
'" . $tax . "',
|
480 |
'" . $this->couponamount. "',
|
481 |
-
" . intval($this->certificate_id) . ",
|
482 |
'" . $this->certificateamount . "',
|
483 |
'" . $total . "',
|
484 |
'" . $this->payment_type . "',
|
@@ -486,15 +450,15 @@
|
|
486 |
'" . hideCardNumber($this->accountnumber, false) . "',
|
487 |
'" . substr($this->ExpirationDate, 0, 2) . "',
|
488 |
'" . substr($this->ExpirationDate, 2, 4) . "',
|
489 |
-
'" .
|
490 |
'" . $this->gateway . "',
|
491 |
'" . $this->gateway_environment . "',
|
492 |
-
'" .
|
493 |
-
'" .
|
494 |
-
|
495 |
-
'" .
|
496 |
-
'" .
|
497 |
-
'" .
|
498 |
)";
|
499 |
}
|
500 |
|
@@ -518,9 +482,8 @@
|
|
518 |
|
519 |
while(empty($code))
|
520 |
{
|
521 |
-
$scramble = md5(AUTH_KEY .
|
522 |
$code = substr($scramble, 0, 10);
|
523 |
-
$code = apply_filters("pmpro_random_code", $code, $this); //filter
|
524 |
$check = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE code = '$code' LIMIT 1");
|
525 |
if($check || is_numeric($code))
|
526 |
$code = NULL;
|
@@ -537,7 +500,7 @@
|
|
537 |
return false;
|
538 |
|
539 |
$this->status = $newstatus;
|
540 |
-
$this->sqlQuery = "UPDATE $wpdb->pmpro_membership_orders SET status = '" .
|
541 |
if($wpdb->query($this->sqlQuery) !== false)
|
542 |
return true;
|
543 |
else
|
@@ -550,7 +513,7 @@
|
|
550 |
}
|
551 |
|
552 |
function cancel()
|
553 |
-
{
|
554 |
//only need to cancel on the gateway if there is a subscription id
|
555 |
if(empty($this->subscription_transaction_id))
|
556 |
{
|
@@ -559,28 +522,9 @@
|
|
559 |
return true;
|
560 |
}
|
561 |
else
|
562 |
-
{
|
563 |
//cancel the gateway subscription first
|
564 |
-
|
565 |
-
if($result == false)
|
566 |
-
{
|
567 |
-
//there was an error, but cancel the order no matter what
|
568 |
-
$this->updateStatus("cancelled");
|
569 |
-
|
570 |
-
//we should probably notify the admin
|
571 |
-
$pmproemail = new PMProEmail();
|
572 |
-
$pmproemail->template = "subscription_cancel_error";
|
573 |
-
$pmproemail->data = array("body"=>"<p>" . sprintf(__("There was an error canceling the subscription for user with ID=%s. You will want to check your payment gateway to see if their subscription is still active.", "pmpro"), strval($this->user_id)) . "</p><p>Error: " . $this->error . "</p>");
|
574 |
-
$pmproemail->data["body"] .= "<p>Associated Order:<br />" . nl2br(var_export($this, true)) . "</p>";
|
575 |
-
$pmproemail->sendEmail(get_bloginfo("admin_email"));
|
576 |
-
|
577 |
-
return false;
|
578 |
-
}
|
579 |
-
else
|
580 |
-
{
|
581 |
-
//would have been cancelled by the gateway class
|
582 |
-
return $result;
|
583 |
-
}
|
584 |
}
|
585 |
}
|
586 |
|
@@ -589,16 +533,6 @@
|
|
589 |
return $this->Gateway->update($this);
|
590 |
}
|
591 |
|
592 |
-
function getGatewaySubscriptionStatus()
|
593 |
-
{
|
594 |
-
return $this->Gateway->getSubscriptionStatus($this);
|
595 |
-
}
|
596 |
-
|
597 |
-
function getGatewayTransactionStatus()
|
598 |
-
{
|
599 |
-
return $this->Gateway->getTransactionStatus($this);
|
600 |
-
}
|
601 |
-
|
602 |
function deleteMe()
|
603 |
{
|
604 |
if(empty($this->id))
|
109 |
|
110 |
//which one to load?
|
111 |
$classname = "PMProGateway"; //default test gateway
|
112 |
+
if(!empty($this->gateway))
|
113 |
$classname .= "_" . $this->gateway; //adding the gateway suffix
|
114 |
|
115 |
//try to load it
|
125 |
return $this->Gateway;
|
126 |
}
|
127 |
|
128 |
+
function getLastMemberOrder($user_id = NULL, $status = 'success')
|
129 |
{
|
130 |
global $current_user, $wpdb;
|
131 |
if(!$user_id)
|
139 |
if(!empty($status) && is_array($status))
|
140 |
$this->sqlQuery .= "AND status IN('" . implode("','", $status) . "') ";
|
141 |
elseif(!empty($status))
|
142 |
+
$this->sqlQuery .= "AND status = '" . $wpdb->escape($status) . "' ";
|
|
|
|
|
|
|
143 |
$this->sqlQuery .= "ORDER BY timestamp DESC LIMIT 1";
|
144 |
|
145 |
//get id
|
148 |
return $this->getMemberOrderByID($id);
|
149 |
}
|
150 |
|
|
|
|
|
|
|
151 |
function getMemberOrderByCode($code)
|
152 |
{
|
153 |
global $wpdb;
|
158 |
return false;
|
159 |
}
|
160 |
|
|
|
|
|
|
|
161 |
function getMemberOrderByPaymentTransactionID($payment_transaction_id)
|
162 |
{
|
|
|
|
|
|
|
|
|
163 |
global $wpdb;
|
164 |
+
$id = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE payment_transaction_id = '" . $wpdb->escape($payment_transaction_id) . "' LIMIT 1");
|
165 |
if($id)
|
166 |
return $this->getMemberOrderByID($id);
|
167 |
else
|
173 |
*/
|
174 |
function getLastMemberOrderBySubscriptionTransactionID($subscription_transaction_id)
|
175 |
{
|
|
|
|
|
|
|
|
|
176 |
global $wpdb;
|
177 |
+
$id = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE subscription_transaction_id = '" . $wpdb->escape($subscription_transaction_id) . "' ORDER BY id DESC LIMIT 1");
|
|
|
178 |
if($id)
|
179 |
return $this->getMemberOrderByID($id);
|
180 |
else
|
199 |
global $wpdb;
|
200 |
$this->discount_code = $wpdb->get_row("SELECT dc.* FROM $wpdb->pmpro_discount_codes dc LEFT JOIN $wpdb->pmpro_discount_codes_uses dcu ON dc.id = dcu.code_id WHERE dcu.order_id = '" . $this->id . "' LIMIT 1");
|
201 |
|
|
|
|
|
|
|
202 |
return $this->discount_code;
|
203 |
}
|
204 |
|
234 |
//okay, do I have a discount code to check? (if there is no membership_level->membership_id value, that means there was no entry in memberships_users)
|
235 |
if(!empty($this->discount_code) && empty($this->membership_level->membership_id))
|
236 |
{
|
237 |
+
$sqlQuery = "SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id LEFT JOIN $wpdb->pmpro_discount_codes dc ON dc.id = cl.code_id WHERE dc.code = '" . $this->discount_code . "' AND cl.level_id = '" . $this->membership_id . "' LIMIT 1";
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
$this->membership_level = $wpdb->get_row($sqlQuery);
|
239 |
}
|
240 |
|
260 |
if($tax_state && $tax_rate)
|
261 |
{
|
262 |
//we have values, is this order in the tax state?
|
263 |
+
if(trim(strtoupper($this->billing->state)) == trim(strtoupper($tax_state)))
|
264 |
{
|
265 |
//return value, pass through filter
|
266 |
$tax = round((float)$price * (float)$tax_rate, 2);
|
348 |
//these fix some warnings/notices
|
349 |
if(empty($this->billing))
|
350 |
{
|
|
|
351 |
$this->billing->name = $this->billing->street = $this->billing->city = $this->billing->state = $this->billing->zip = $this->billing->country = $this->billing->phone = "";
|
352 |
}
|
353 |
if(empty($this->user_id))
|
354 |
+
$this->user_id = "";
|
355 |
if(empty($this->paypal_token))
|
356 |
$this->paypal_token = "";
|
357 |
if(empty($this->couponamount))
|
367 |
if(empty($this->affiliate_subid))
|
368 |
$this->affiliate_subid = "";
|
369 |
if(empty($this->session_id))
|
370 |
+
$this->session_id = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
371 |
|
372 |
if(empty($this->gateway))
|
373 |
$this->gateway = pmpro_getOption("gateway");
|
387 |
$this->sqlQuery = "UPDATE $wpdb->pmpro_membership_orders
|
388 |
SET `code` = '" . $this->code . "',
|
389 |
`session_id` = '" . $this->session_id . "',
|
390 |
+
`user_id` = '" . $this->user_id . "',
|
391 |
+
`membership_id` = '" . $this->membership_id . "',
|
392 |
`paypal_token` = '" . $this->paypal_token . "',
|
393 |
+
`billing_name` = '" . $wpdb->escape($this->billing->name) . "',
|
394 |
+
`billing_street` = '" . $wpdb->escape($this->billing->street) . "',
|
395 |
+
`billing_city` = '" . $wpdb->escape($this->billing->city) . "',
|
396 |
+
`billing_state` = '" . $wpdb->escape($this->billing->state) . "',
|
397 |
+
`billing_zip` = '" . $wpdb->escape($this->billing->zip) . "',
|
398 |
+
`billing_country` = '" . $wpdb->escape($this->billing->country) . "',
|
399 |
+
`billing_phone` = '" . $wpdb->escape($this->billing->phone) . "',
|
400 |
`subtotal` = '" . $this->subtotal . "',
|
401 |
`tax` = '" . $this->tax . "',
|
402 |
`couponamount` = '" . $this->couponamount . "',
|
403 |
+
`certificate_id` = '" . $this->certificate_id . "',
|
404 |
`certificateamount` = '" . $this->certificateamount . "',
|
405 |
`total` = '" . $this->total . "',
|
406 |
`payment_type` = '" . $this->payment_type . "',
|
408 |
`accountnumber` = '" . $this->accountnumber . "',
|
409 |
`expirationmonth` = '" . $this->expirationmonth . "',
|
410 |
`expirationyear` = '" . $this->expirationyear . "',
|
411 |
+
`status` = '" . $wpdb->escape($this->status) . "',
|
412 |
`gateway` = '" . $this->gateway . "',
|
413 |
`gateway_environment` = '" . $this->gateway_environment . "',
|
414 |
+
`payment_transaction_id` = '" . $wpdb->escape($this->payment_transaction_id) . "',
|
415 |
+
`subscription_transaction_id` = '" . $wpdb->escape($this->subscription_transaction_id) . "',
|
416 |
+
`affiliate_id` = '" . $wpdb->escape($this->affiliate_id) . "',
|
417 |
+
`affiliate_subid` = '" . $wpdb->escape($this->affiliate_subid) . "',
|
418 |
+
`notes` = '" . $wpdb->escape($this->notes) . "'
|
419 |
WHERE id = '" . $this->id . "'
|
420 |
LIMIT 1";
|
421 |
}
|
429 |
(`code`, `session_id`, `user_id`, `membership_id`, `paypal_token`, `billing_name`, `billing_street`, `billing_city`, `billing_state`, `billing_zip`, `billing_country`, `billing_phone`, `subtotal`, `tax`, `couponamount`, `certificate_id`, `certificateamount`, `total`, `payment_type`, `cardtype`, `accountnumber`, `expirationmonth`, `expirationyear`, `status`, `gateway`, `gateway_environment`, `payment_transaction_id`, `subscription_transaction_id`, `timestamp`, `affiliate_id`, `affiliate_subid`, `notes`)
|
430 |
VALUES('" . $this->code . "',
|
431 |
'" . session_id() . "',
|
432 |
+
'" . $this->user_id . "',
|
433 |
+
'" . $this->membership_id . "',
|
434 |
'" . $this->paypal_token . "',
|
435 |
+
'" . $wpdb->escape(trim($this->billing->name)) . "',
|
436 |
+
'" . $wpdb->escape(trim($this->billing->street)) . "',
|
437 |
+
'" . $wpdb->escape($this->billing->city) . "',
|
438 |
+
'" . $wpdb->escape($this->billing->state) . "',
|
439 |
+
'" . $wpdb->escape($this->billing->zip) . "',
|
440 |
+
'" . $wpdb->escape($this->billing->country) . "',
|
441 |
'" . cleanPhone($this->billing->phone) . "',
|
442 |
'" . $amount . "',
|
443 |
'" . $tax . "',
|
444 |
'" . $this->couponamount. "',
|
445 |
+
'" . intval($this->certificate_id) . "',
|
446 |
'" . $this->certificateamount . "',
|
447 |
'" . $total . "',
|
448 |
'" . $this->payment_type . "',
|
450 |
'" . hideCardNumber($this->accountnumber, false) . "',
|
451 |
'" . substr($this->ExpirationDate, 0, 2) . "',
|
452 |
'" . substr($this->ExpirationDate, 2, 4) . "',
|
453 |
+
'" . $wpdb->escape($this->status) . "',
|
454 |
'" . $this->gateway . "',
|
455 |
'" . $this->gateway_environment . "',
|
456 |
+
'" . $wpdb->escape($this->payment_transaction_id) . "',
|
457 |
+
'" . $wpdb->escape($this->subscription_transaction_id) . "',
|
458 |
+
now(),
|
459 |
+
'" . $wpdb->escape($this->affiliate_id) . "',
|
460 |
+
'" . $wpdb->escape($this->affiliate_subid) . "',
|
461 |
+
'" . $wpdb->escape($this->notes) . "'
|
462 |
)";
|
463 |
}
|
464 |
|
482 |
|
483 |
while(empty($code))
|
484 |
{
|
485 |
+
$scramble = md5(AUTH_KEY . time() . SECURE_AUTH_KEY);
|
486 |
$code = substr($scramble, 0, 10);
|
|
|
487 |
$check = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE code = '$code' LIMIT 1");
|
488 |
if($check || is_numeric($code))
|
489 |
$code = NULL;
|
500 |
return false;
|
501 |
|
502 |
$this->status = $newstatus;
|
503 |
+
$this->sqlQuery = "UPDATE $wpdb->pmpro_membership_orders SET status = '" . $wpdb->escape($newstatus) . "' WHERE id = '" . $this->id . "' LIMIT 1";
|
504 |
if($wpdb->query($this->sqlQuery) !== false)
|
505 |
return true;
|
506 |
else
|
513 |
}
|
514 |
|
515 |
function cancel()
|
516 |
+
{
|
517 |
//only need to cancel on the gateway if there is a subscription id
|
518 |
if(empty($this->subscription_transaction_id))
|
519 |
{
|
522 |
return true;
|
523 |
}
|
524 |
else
|
525 |
+
{
|
526 |
//cancel the gateway subscription first
|
527 |
+
return $this->Gateway->cancel($this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
528 |
}
|
529 |
}
|
530 |
|
533 |
return $this->Gateway->update($this);
|
534 |
}
|
535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
function deleteMe()
|
537 |
{
|
538 |
if(empty($this->id))
|
classes/class.pmproemail.php
CHANGED
@@ -34,7 +34,7 @@
|
|
34 |
$this->fromname = pmpro_getOption("from_name");
|
35 |
|
36 |
if(!$this->subject)
|
37 |
-
$this->subject =
|
38 |
|
39 |
//decode the subject line in case there are apostrophes/etc in it
|
40 |
$this->subject = html_entity_decode($this->subject, ENT_QUOTES, 'UTF-8');
|
@@ -44,25 +44,16 @@
|
|
44 |
|
45 |
$this->headers = array("Content-Type: text/html");
|
46 |
|
47 |
-
$this->attachments = NULL;
|
48 |
-
|
49 |
//load the template
|
50 |
-
$locale = apply_filters("plugin_locale", get_locale(), "pmpro");
|
51 |
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/email/" . $this->template . ".html"))
|
52 |
-
$this->body = file_get_contents(get_stylesheet_directory() . "/paid-memberships-pro/email/" . $this->template . ".html");
|
53 |
elseif(file_exists(get_stylesheet_directory() . "/membership-email-" . $this->template . ".html"))
|
54 |
-
$this->body = file_get_contents(get_stylesheet_directory() . "/membership-email-" . $this->template . ".html");
|
55 |
elseif(file_exists(TEMPLATEPATH . "/membership-email-" . $this->template . ".html"))
|
56 |
-
$this->body = file_get_contents(TEMPLATEPATH . "/membership-email-" . $this->template . ".html");
|
57 |
-
elseif(file_exists(WP_LANG_DIR . '/pmpro/email/' . $this->template . ".html"))
|
58 |
-
$this->body = file_get_contents(WP_LANG_DIR . '/pmpro/email/' . $this->template . ".html"); //email folder in WP language folder
|
59 |
-
elseif(file_exists(PMPRO_DIR . "/languages/" . $locale . "/" . $this->template . ".html"))
|
60 |
-
$this->body = file_get_contents(PMPRO_DIR . "/languages/" . $locale . "/" . $this->template . ".html"); //email folder in PMPro language folder
|
61 |
elseif(file_exists(PMPRO_DIR . "/email/" . $this->template . ".html"))
|
62 |
-
$this->body = file_get_contents(PMPRO_DIR . "/email/" . $this->template . ".html");
|
63 |
-
|
64 |
-
$this->body = $this->data['body'];
|
65 |
-
|
66 |
//header and footer
|
67 |
/* This is handled for all emails via the pmpro_send_html function in paid-memberships-pro now
|
68 |
if(file_exists(TEMPLATEPATH . "/email_header.html"))
|
@@ -100,9 +91,8 @@
|
|
100 |
$this->template = apply_filters("pmpro_email_template", $temail->template, $this);
|
101 |
$this->body = apply_filters("pmpro_email_body", $temail->body, $this);
|
102 |
$this->headers = apply_filters("pmpro_email_headers", $temail->headers, $this);
|
103 |
-
$this->attachments = apply_filters("pmpro_email_attachments", $temail->attachments, $this);
|
104 |
|
105 |
-
if(wp_mail($this->email,$this->subject,$this->body,$this->headers
|
106 |
{
|
107 |
return true;
|
108 |
}
|
@@ -122,7 +112,7 @@
|
|
122 |
return false;
|
123 |
|
124 |
$this->email = $user->user_email;
|
125 |
-
$this->subject =
|
126 |
$this->template = "cancel";
|
127 |
$this->data = array("name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"));
|
128 |
|
@@ -144,10 +134,9 @@
|
|
144 |
return true; //didn't send, but we also don't want to indicate failure because the settings say to not send
|
145 |
|
146 |
$this->email = get_bloginfo("admin_email");
|
147 |
-
$this->subject =
|
148 |
$this->template = "cancel_admin";
|
149 |
$this->data = array("user_login" => $user->user_login, "user_email" => $user->user_email, "display_name" => $user->display_name, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"), "login_link" => wp_login_url());
|
150 |
-
$this->data['membership_id'] = $old_level_id;
|
151 |
$this->data['membership_level_name'] = $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $old_level_id . "' LIMIT 1");
|
152 |
|
153 |
//start and end date
|
@@ -175,7 +164,7 @@
|
|
175 |
return false;
|
176 |
|
177 |
$this->email = $user->user_email;
|
178 |
-
$this->subject =
|
179 |
|
180 |
$this->data = array(
|
181 |
"subject" => $this->subject,
|
@@ -183,15 +172,14 @@
|
|
183 |
"user_login" => $user->user_login,
|
184 |
"sitename" => get_option("blogname"),
|
185 |
"siteemail" => pmpro_getOption("from_email"),
|
186 |
-
"membership_id" => $user->membership_level->id,
|
187 |
"membership_level_name" => $user->membership_level->name,
|
188 |
"membership_cost" => pmpro_getLevelCost($user->membership_level),
|
189 |
-
"login_link" =>
|
190 |
"display_name" => $user->display_name,
|
191 |
"user_email" => $user->user_email,0
|
192 |
);
|
193 |
-
|
194 |
-
if(
|
195 |
{
|
196 |
if($invoice->gateway == "paypalexpress")
|
197 |
$this->template = "checkout_express";
|
@@ -218,17 +206,9 @@
|
|
218 |
$this->data["accountnumber"] = hideCardNumber($invoice->accountnumber);
|
219 |
$this->data["expirationmonth"] = $invoice->expirationmonth;
|
220 |
$this->data["expirationyear"] = $invoice->expirationyear;
|
221 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
222 |
-
$invoice->billing->street,
|
223 |
-
"", //address 2
|
224 |
-
$invoice->billing->city,
|
225 |
-
$invoice->billing->state,
|
226 |
-
$invoice->billing->zip,
|
227 |
-
$invoice->billing->country,
|
228 |
-
$invoice->billing->phone);
|
229 |
|
230 |
if($invoice->getDiscountCode())
|
231 |
-
$this->data["discount_code"] = "<p>
|
232 |
else
|
233 |
$this->data["discount_code"] = "";
|
234 |
}
|
@@ -237,23 +217,19 @@
|
|
237 |
$this->template = "checkout_free";
|
238 |
global $discount_code;
|
239 |
if(!empty($discount_code))
|
240 |
-
$this->data["discount_code"] = "<p>
|
241 |
else
|
242 |
$this->data["discount_code"] = "";
|
243 |
}
|
244 |
else
|
245 |
{
|
246 |
$this->template = "checkout_freetrial";
|
247 |
-
|
248 |
-
if(!empty($discount_code))
|
249 |
-
$this->data["discount_code"] = "<p>" . __("Discount Code", "pmpro") . ": " . $discount_code . "</p>\n";
|
250 |
-
else
|
251 |
-
$this->data["discount_code"] = "";
|
252 |
}
|
253 |
|
254 |
$enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
|
255 |
if($enddate)
|
256 |
-
$this->data["membership_expiration"] = "<p>
|
257 |
else
|
258 |
$this->data["membership_expiration"] = "";
|
259 |
|
@@ -275,7 +251,7 @@
|
|
275 |
return true; //didn't send, but we also don't want to indicate failure because the settings say to not send
|
276 |
|
277 |
$this->email = get_bloginfo("admin_email");
|
278 |
-
$this->subject =
|
279 |
|
280 |
$this->data = array(
|
281 |
"subject" => $this->subject,
|
@@ -283,15 +259,14 @@
|
|
283 |
"user_login" => $user->user_login,
|
284 |
"sitename" => get_option("blogname"),
|
285 |
"siteemail" => pmpro_getOption("from_email"),
|
286 |
-
"membership_id" => $user->membership_level->id,
|
287 |
"membership_level_name" => $user->membership_level->name,
|
288 |
"membership_cost" => pmpro_getLevelCost($user->membership_level),
|
289 |
-
"login_link" =>
|
290 |
"display_name" => $user->display_name,
|
291 |
"user_email" => $user->user_email,0
|
292 |
);
|
293 |
|
294 |
-
if(
|
295 |
{
|
296 |
if($invoice->gateway == "paypalexpress")
|
297 |
$this->template = "checkout_express_admin";
|
@@ -315,17 +290,9 @@
|
|
315 |
$this->data["accountnumber"] = hideCardNumber($invoice->accountnumber);
|
316 |
$this->data["expirationmonth"] = $invoice->expirationmonth;
|
317 |
$this->data["expirationyear"] = $invoice->expirationyear;
|
318 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
319 |
-
$invoice->billing->street,
|
320 |
-
"", //address 2
|
321 |
-
$invoice->billing->city,
|
322 |
-
$invoice->billing->state,
|
323 |
-
$invoice->billing->zip,
|
324 |
-
$invoice->billing->country,
|
325 |
-
$invoice->billing->phone);
|
326 |
|
327 |
if($invoice->getDiscountCode())
|
328 |
-
$this->data["discount_code"] = "<p>
|
329 |
else
|
330 |
$this->data["discount_code"] = "";
|
331 |
}
|
@@ -334,7 +301,7 @@
|
|
334 |
$this->template = "checkout_free_admin";
|
335 |
global $discount_code;
|
336 |
if(!empty($discount_code))
|
337 |
-
$this->data["discount_code"] = "<p>
|
338 |
else
|
339 |
$this->data["discount_code"] = "";
|
340 |
}
|
@@ -342,11 +309,11 @@
|
|
342 |
{
|
343 |
$this->template = "checkout_freetrial_admin";
|
344 |
$this->data["discount_code"] = "";
|
345 |
-
}
|
346 |
|
347 |
$enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
|
348 |
if($enddate)
|
349 |
-
$this->data["membership_expiration"] = "<p>
|
350 |
else
|
351 |
$this->data["membership_expiration"] = "";
|
352 |
|
@@ -363,7 +330,7 @@
|
|
363 |
return false;
|
364 |
|
365 |
$this->email = $user->user_email;
|
366 |
-
$this->subject =
|
367 |
$this->template = "billing";
|
368 |
|
369 |
$this->data = array(
|
@@ -372,7 +339,6 @@
|
|
372 |
"user_login" => $user->user_login,
|
373 |
"sitename" => get_option("blogname"),
|
374 |
"siteemail" => pmpro_getOption("from_email"),
|
375 |
-
"membership_id" => $user->membership_level->id,
|
376 |
"membership_level_name" => $user->membership_level->name,
|
377 |
"display_name" => $user->display_name,
|
378 |
"user_email" => $user->user_email,
|
@@ -387,16 +353,8 @@
|
|
387 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
388 |
"expirationmonth" => $invoice->expirationmonth,
|
389 |
"expirationyear" => $invoice->expirationyear,
|
390 |
-
"login_link" =>
|
391 |
);
|
392 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
393 |
-
$invoice->billing->street,
|
394 |
-
"", //address 2
|
395 |
-
$invoice->billing->city,
|
396 |
-
$invoice->billing->state,
|
397 |
-
$invoice->billing->zip,
|
398 |
-
$invoice->billing->country,
|
399 |
-
$invoice->billing->phone);
|
400 |
|
401 |
return $this->sendEmail();
|
402 |
}
|
@@ -416,7 +374,7 @@
|
|
416 |
return true; //didn't send, but we also don't want to indicate failure because the settings say to not send
|
417 |
|
418 |
$this->email = get_bloginfo("admin_email");
|
419 |
-
$this->subject =
|
420 |
$this->template = "billing_admin";
|
421 |
|
422 |
$this->data = array(
|
@@ -425,7 +383,6 @@
|
|
425 |
"user_login" => $user->user_login,
|
426 |
"sitename" => get_option("blogname"),
|
427 |
"siteemail" => pmpro_getOption("from_email"),
|
428 |
-
"membership_id" => $user->membership_level->id,
|
429 |
"membership_level_name" => $user->membership_level->name,
|
430 |
"display_name" => $user->display_name,
|
431 |
"user_email" => $user->user_email,
|
@@ -442,14 +399,6 @@
|
|
442 |
"expirationyear" => $invoice->expirationyear,
|
443 |
"login_link" => wp_login_url()
|
444 |
);
|
445 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
446 |
-
$invoice->billing->street,
|
447 |
-
"", //address 2
|
448 |
-
$invoice->billing->city,
|
449 |
-
$invoice->billing->state,
|
450 |
-
$invoice->billing->zip,
|
451 |
-
$invoice->billing->country,
|
452 |
-
$invoice->billing->phone);
|
453 |
|
454 |
return $this->sendEmail();
|
455 |
}
|
@@ -464,7 +413,7 @@
|
|
464 |
return false;
|
465 |
|
466 |
$this->email = $user->user_email;
|
467 |
-
$this->subject =
|
468 |
$this->template = "billing_failure";
|
469 |
|
470 |
$this->data = array(
|
@@ -473,7 +422,6 @@
|
|
473 |
"user_login" => $user->user_login,
|
474 |
"sitename" => get_option("blogname"),
|
475 |
"siteemail" => pmpro_getOption("from_email"),
|
476 |
-
"membership_id" => $user->membership_level->id,
|
477 |
"membership_level_name" => $user->membership_level->name,
|
478 |
"display_name" => $user->display_name,
|
479 |
"user_email" => $user->user_email,
|
@@ -488,19 +436,11 @@
|
|
488 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
489 |
"expirationmonth" => $invoice->expirationmonth,
|
490 |
"expirationyear" => $invoice->expirationyear,
|
491 |
-
"login_link" =>
|
492 |
);
|
493 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
494 |
-
$invoice->billing->street,
|
495 |
-
"", //address 2
|
496 |
-
$invoice->billing->city,
|
497 |
-
$invoice->billing->state,
|
498 |
-
$invoice->billing->zip,
|
499 |
-
$invoice->billing->country,
|
500 |
-
$invoice->billing->phone);
|
501 |
|
502 |
return $this->sendEmail();
|
503 |
-
}
|
504 |
|
505 |
function sendBillingFailureAdminEmail($email, $invoice = NULL)
|
506 |
{
|
@@ -510,7 +450,7 @@
|
|
510 |
$user = get_userdata($invoice->user_id);
|
511 |
|
512 |
$this->email = $email;
|
513 |
-
$this->subject =
|
514 |
$this->template = "billing_failure_admin";
|
515 |
|
516 |
$this->data = array(
|
@@ -519,7 +459,6 @@
|
|
519 |
"user_login" => $user->user_login,
|
520 |
"sitename" => get_option("blogname"),
|
521 |
"siteemail" => pmpro_getOption("from_email"),
|
522 |
-
"membership_id" => $user->membership_level->id,
|
523 |
"membership_level_name" => $user->membership_level->name,
|
524 |
"display_name" => $user->display_name,
|
525 |
"user_email" => $user->user_email,
|
@@ -534,63 +473,8 @@
|
|
534 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
535 |
"expirationmonth" => $invoice->expirationmonth,
|
536 |
"expirationyear" => $invoice->expirationyear,
|
537 |
-
"login_link" =>
|
538 |
);
|
539 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
540 |
-
$invoice->billing->street,
|
541 |
-
"", //address 2
|
542 |
-
$invoice->billing->city,
|
543 |
-
$invoice->billing->state,
|
544 |
-
$invoice->billing->zip,
|
545 |
-
$invoice->billing->country,
|
546 |
-
$invoice->billing->phone);
|
547 |
-
return $this->sendEmail();
|
548 |
-
}
|
549 |
-
|
550 |
-
function sendCreditCardExpiringEmail($user = NULL, $invoice = NULL)
|
551 |
-
{
|
552 |
-
global $current_user;
|
553 |
-
if(!$user)
|
554 |
-
$user = $current_user;
|
555 |
-
|
556 |
-
if(!$user || !$invoice)
|
557 |
-
return false;
|
558 |
-
|
559 |
-
$this->email = $user->user_email;
|
560 |
-
$this->subject = sprintf(__("Credit Card on File Expiring Soon at %s", "pmpro"), get_option("blogname"));
|
561 |
-
$this->template = "credit_card_expiring";
|
562 |
-
|
563 |
-
$this->data = array(
|
564 |
-
"subject" => $this->subject,
|
565 |
-
"name" => $user->display_name,
|
566 |
-
"user_login" => $user->user_login,
|
567 |
-
"sitename" => get_option("blogname"),
|
568 |
-
"siteemail" => pmpro_getOption("from_email"),
|
569 |
-
"membership_id" => $user->membership_level->id,
|
570 |
-
"membership_level_name" => $user->membership_level->name,
|
571 |
-
"display_name" => $user->display_name,
|
572 |
-
"user_email" => $user->user_email,
|
573 |
-
"billing_name" => $invoice->billing->name,
|
574 |
-
"billing_street" => $invoice->billing->street,
|
575 |
-
"billing_city" => $invoice->billing->city,
|
576 |
-
"billing_state" => $invoice->billing->state,
|
577 |
-
"billing_zip" => $invoice->billing->zip,
|
578 |
-
"billing_country" => $invoice->billing->country,
|
579 |
-
"billing_phone" => $invoice->billing->phone,
|
580 |
-
"cardtype" => $invoice->cardtype,
|
581 |
-
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
582 |
-
"expirationmonth" => $invoice->expirationmonth,
|
583 |
-
"expirationyear" => $invoice->expirationyear,
|
584 |
-
"login_link" => wp_login_url(pmpro_url("billing"))
|
585 |
-
);
|
586 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
587 |
-
$invoice->billing->street,
|
588 |
-
"", //address 2
|
589 |
-
$invoice->billing->city,
|
590 |
-
$invoice->billing->state,
|
591 |
-
$invoice->billing->zip,
|
592 |
-
$invoice->billing->country,
|
593 |
-
$invoice->billing->phone);
|
594 |
|
595 |
return $this->sendEmail();
|
596 |
}
|
@@ -605,7 +489,7 @@
|
|
605 |
return false;
|
606 |
|
607 |
$this->email = $user->user_email;
|
608 |
-
$this->subject =
|
609 |
$this->template = "invoice";
|
610 |
|
611 |
$this->data = array(
|
@@ -614,11 +498,10 @@
|
|
614 |
"user_login" => $user->user_login,
|
615 |
"sitename" => get_option("blogname"),
|
616 |
"siteemail" => pmpro_getOption("from_email"),
|
617 |
-
"membership_id" => $user->membership_level->id,
|
618 |
"membership_level_name" => $user->membership_level->name,
|
619 |
"display_name" => $user->display_name,
|
620 |
"user_email" => $user->user_email,
|
621 |
-
"invoice_id" => $invoice->
|
622 |
"invoice_total" => $pmpro_currency_symbol . number_format($invoice->total, 2),
|
623 |
"invoice_date" => date(get_option('date_format'), $invoice->timestamp),
|
624 |
"billing_name" => $invoice->billing->name,
|
@@ -632,26 +515,18 @@
|
|
632 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
633 |
"expirationmonth" => $invoice->expirationmonth,
|
634 |
"expirationyear" => $invoice->expirationyear,
|
635 |
-
"login_link" =>
|
636 |
-
"invoice_link" =>
|
637 |
-
)
|
638 |
-
$this->data["billing_address"] = pmpro_formatAddress($invoice->billing->name,
|
639 |
-
$invoice->billing->street,
|
640 |
-
"", //address 2
|
641 |
-
$invoice->billing->city,
|
642 |
-
$invoice->billing->state,
|
643 |
-
$invoice->billing->zip,
|
644 |
-
$invoice->billing->country,
|
645 |
-
$invoice->billing->phone);
|
646 |
|
647 |
if($invoice->getDiscountCode())
|
648 |
-
$this->data["discount_code"] = "<p>
|
649 |
else
|
650 |
$this->data["discount_code"] = "";
|
651 |
|
652 |
$enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
|
653 |
if($enddate)
|
654 |
-
$this->data["membership_expiration"] = "<p>
|
655 |
else
|
656 |
$this->data["membership_expiration"] = "";
|
657 |
|
@@ -676,16 +551,15 @@
|
|
676 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
677 |
|
678 |
$this->email = $user->user_email;
|
679 |
-
$this->subject =
|
680 |
$this->template = "trial_ending";
|
681 |
$this->data = array(
|
682 |
"subject" => $this->subject,
|
683 |
"name" => $user->display_name,
|
684 |
"user_login" => $user->user_login,
|
685 |
"sitename" => get_option("blogname"),
|
686 |
-
"membership_id" => $user->membership_level->id,
|
687 |
"membership_level_name" => $user->membership_level->name,
|
688 |
-
"siteemail" =>
|
689 |
"login_link" => wp_login_url(),
|
690 |
"display_name" => $user->display_name,
|
691 |
"user_email" => $user->user_email,
|
@@ -694,7 +568,7 @@
|
|
694 |
"cycle_period" => $user->membership_level->cycle_period,
|
695 |
"trial_amount" => $pmpro_currency_symbol . $user->membership_level->trial_amount,
|
696 |
"trial_limit" => $user->membership_level->trial_limit,
|
697 |
-
"trial_end" => date(get_option('date_format'), strtotime(date("m/d/Y", $user->membership_level->startdate) . " + " . $user->membership_level->trial_limit . " " . $user->membership_level->cycle_period)
|
698 |
);
|
699 |
|
700 |
return $this->sendEmail();
|
@@ -710,9 +584,9 @@
|
|
710 |
return false;
|
711 |
|
712 |
$this->email = $user->user_email;
|
713 |
-
$this->subject =
|
714 |
$this->template = "membership_expired";
|
715 |
-
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "siteemail" =>
|
716 |
|
717 |
return $this->sendEmail();
|
718 |
}
|
@@ -735,9 +609,9 @@
|
|
735 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
736 |
|
737 |
$this->email = $user->user_email;
|
738 |
-
$this->subject =
|
739 |
$this->template = "membership_expiring";
|
740 |
-
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "
|
741 |
|
742 |
return $this->sendEmail();
|
743 |
}
|
@@ -755,21 +629,21 @@
|
|
755 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
756 |
|
757 |
$this->email = $user->user_email;
|
758 |
-
$this->subject =
|
759 |
$this->template = "admin_change";
|
760 |
-
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "
|
761 |
if($user->membership_level->ID)
|
762 |
-
$this->data["membership_change"] =
|
763 |
else
|
764 |
-
$this->data["membership_change"] =
|
765 |
|
766 |
if(!empty($user->membership_level->enddate))
|
767 |
{
|
768 |
-
$this->data["membership_change"] .= ".
|
769 |
}
|
770 |
elseif(!empty($this->expiration_changed))
|
771 |
{
|
772 |
-
$this->data["membership_change"] .= ".
|
773 |
}
|
774 |
|
775 |
return $this->sendEmail();
|
@@ -793,21 +667,21 @@
|
|
793 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
794 |
|
795 |
$this->email = get_bloginfo("admin_email");
|
796 |
-
$this->subject =
|
797 |
$this->template = "admin_change_admin";
|
798 |
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "membership_level_name" => $user->membership_level->name, "siteemail" => get_bloginfo("admin_email"), "login_link" => wp_login_url());
|
799 |
if($user->membership_level->ID)
|
800 |
-
$this->data["membership_change"] =
|
801 |
else
|
802 |
-
$this->data["membership_change"] =
|
803 |
|
804 |
if(!empty($user->membership_level->enddate))
|
805 |
{
|
806 |
-
$this->data["membership_change"] .= ".
|
807 |
}
|
808 |
elseif(!empty($this->expiration_changed))
|
809 |
{
|
810 |
-
$this->data["membership_change"] .= ".
|
811 |
}
|
812 |
|
813 |
return $this->sendEmail();
|
34 |
$this->fromname = pmpro_getOption("from_name");
|
35 |
|
36 |
if(!$this->subject)
|
37 |
+
$this->subject = "An Email From " . get_option("blogname");
|
38 |
|
39 |
//decode the subject line in case there are apostrophes/etc in it
|
40 |
$this->subject = html_entity_decode($this->subject, ENT_QUOTES, 'UTF-8');
|
44 |
|
45 |
$this->headers = array("Content-Type: text/html");
|
46 |
|
|
|
|
|
47 |
//load the template
|
|
|
48 |
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/email/" . $this->template . ".html"))
|
49 |
+
$this->body = file_get_contents(get_stylesheet_directory() . "/paid-memberships-pro/email/" . $this->template . ".html");
|
50 |
elseif(file_exists(get_stylesheet_directory() . "/membership-email-" . $this->template . ".html"))
|
51 |
+
$this->body = file_get_contents(get_stylesheet_directory() . "/membership-email-" . $this->template . ".html");
|
52 |
elseif(file_exists(TEMPLATEPATH . "/membership-email-" . $this->template . ".html"))
|
53 |
+
$this->body = file_get_contents(TEMPLATEPATH . "/membership-email-" . $this->template . ".html");
|
|
|
|
|
|
|
|
|
54 |
elseif(file_exists(PMPRO_DIR . "/email/" . $this->template . ".html"))
|
55 |
+
$this->body = file_get_contents(PMPRO_DIR . "/email/" . $this->template . ".html");
|
56 |
+
|
|
|
|
|
57 |
//header and footer
|
58 |
/* This is handled for all emails via the pmpro_send_html function in paid-memberships-pro now
|
59 |
if(file_exists(TEMPLATEPATH . "/email_header.html"))
|
91 |
$this->template = apply_filters("pmpro_email_template", $temail->template, $this);
|
92 |
$this->body = apply_filters("pmpro_email_body", $temail->body, $this);
|
93 |
$this->headers = apply_filters("pmpro_email_headers", $temail->headers, $this);
|
|
|
94 |
|
95 |
+
if(wp_mail($this->email,$this->subject,$this->body,$this->headers))
|
96 |
{
|
97 |
return true;
|
98 |
}
|
112 |
return false;
|
113 |
|
114 |
$this->email = $user->user_email;
|
115 |
+
$this->subject = "Your membership at " . get_option("blogname") . " has been CANCELED";
|
116 |
$this->template = "cancel";
|
117 |
$this->data = array("name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"));
|
118 |
|
134 |
return true; //didn't send, but we also don't want to indicate failure because the settings say to not send
|
135 |
|
136 |
$this->email = get_bloginfo("admin_email");
|
137 |
+
$this->subject = "Membership for " . $user->user_login . " at " . get_option("blogname") . " has been CANCELED";
|
138 |
$this->template = "cancel_admin";
|
139 |
$this->data = array("user_login" => $user->user_login, "user_email" => $user->user_email, "display_name" => $user->display_name, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"), "login_link" => wp_login_url());
|
|
|
140 |
$this->data['membership_level_name'] = $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $old_level_id . "' LIMIT 1");
|
141 |
|
142 |
//start and end date
|
164 |
return false;
|
165 |
|
166 |
$this->email = $user->user_email;
|
167 |
+
$this->subject = "Your membership confirmation for " . get_option("blogname");
|
168 |
|
169 |
$this->data = array(
|
170 |
"subject" => $this->subject,
|
172 |
"user_login" => $user->user_login,
|
173 |
"sitename" => get_option("blogname"),
|
174 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
175 |
"membership_level_name" => $user->membership_level->name,
|
176 |
"membership_cost" => pmpro_getLevelCost($user->membership_level),
|
177 |
+
"login_link" => pmpro_url("account"),
|
178 |
"display_name" => $user->display_name,
|
179 |
"user_email" => $user->user_email,0
|
180 |
);
|
181 |
+
|
182 |
+
if($invoice)
|
183 |
{
|
184 |
if($invoice->gateway == "paypalexpress")
|
185 |
$this->template = "checkout_express";
|
206 |
$this->data["accountnumber"] = hideCardNumber($invoice->accountnumber);
|
207 |
$this->data["expirationmonth"] = $invoice->expirationmonth;
|
208 |
$this->data["expirationyear"] = $invoice->expirationyear;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
|
210 |
if($invoice->getDiscountCode())
|
211 |
+
$this->data["discount_code"] = "<p>Discount Code: " . $invoice->discount_code->code . "</p>\n";
|
212 |
else
|
213 |
$this->data["discount_code"] = "";
|
214 |
}
|
217 |
$this->template = "checkout_free";
|
218 |
global $discount_code;
|
219 |
if(!empty($discount_code))
|
220 |
+
$this->data["discount_code"] = "<p>Discount Code: " . $discount_code . "</p>\n";
|
221 |
else
|
222 |
$this->data["discount_code"] = "";
|
223 |
}
|
224 |
else
|
225 |
{
|
226 |
$this->template = "checkout_freetrial";
|
227 |
+
$this->data["discount_code"] = "";
|
|
|
|
|
|
|
|
|
228 |
}
|
229 |
|
230 |
$enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
|
231 |
if($enddate)
|
232 |
+
$this->data["membership_expiration"] = "<p>This membership will expire on " . date(get_option('date_format'), $enddate) . ".</p>\n";
|
233 |
else
|
234 |
$this->data["membership_expiration"] = "";
|
235 |
|
251 |
return true; //didn't send, but we also don't want to indicate failure because the settings say to not send
|
252 |
|
253 |
$this->email = get_bloginfo("admin_email");
|
254 |
+
$this->subject = "Member Checkout for " . $user->membership_level->name . " at " . get_option("blogname");
|
255 |
|
256 |
$this->data = array(
|
257 |
"subject" => $this->subject,
|
259 |
"user_login" => $user->user_login,
|
260 |
"sitename" => get_option("blogname"),
|
261 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
262 |
"membership_level_name" => $user->membership_level->name,
|
263 |
"membership_cost" => pmpro_getLevelCost($user->membership_level),
|
264 |
+
"login_link" => pmpro_url("account"),
|
265 |
"display_name" => $user->display_name,
|
266 |
"user_email" => $user->user_email,0
|
267 |
);
|
268 |
|
269 |
+
if($invoice)
|
270 |
{
|
271 |
if($invoice->gateway == "paypalexpress")
|
272 |
$this->template = "checkout_express_admin";
|
290 |
$this->data["accountnumber"] = hideCardNumber($invoice->accountnumber);
|
291 |
$this->data["expirationmonth"] = $invoice->expirationmonth;
|
292 |
$this->data["expirationyear"] = $invoice->expirationyear;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
|
294 |
if($invoice->getDiscountCode())
|
295 |
+
$this->data["discount_code"] = "<p>Discount Code: " . $invoice->discount_code->code . "</p>\n";
|
296 |
else
|
297 |
$this->data["discount_code"] = "";
|
298 |
}
|
301 |
$this->template = "checkout_free_admin";
|
302 |
global $discount_code;
|
303 |
if(!empty($discount_code))
|
304 |
+
$this->data["discount_code"] = "<p>Discount Code: " . $discount_code . "</p>\n";
|
305 |
else
|
306 |
$this->data["discount_code"] = "";
|
307 |
}
|
309 |
{
|
310 |
$this->template = "checkout_freetrial_admin";
|
311 |
$this->data["discount_code"] = "";
|
312 |
+
}
|
313 |
|
314 |
$enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
|
315 |
if($enddate)
|
316 |
+
$this->data["membership_expiration"] = "<p>This membership will expire on " . date(get_option('date_format'), $enddate) . ".</p>\n";
|
317 |
else
|
318 |
$this->data["membership_expiration"] = "";
|
319 |
|
330 |
return false;
|
331 |
|
332 |
$this->email = $user->user_email;
|
333 |
+
$this->subject = "Your billing information has been udpated at " . get_option("blogname");
|
334 |
$this->template = "billing";
|
335 |
|
336 |
$this->data = array(
|
339 |
"user_login" => $user->user_login,
|
340 |
"sitename" => get_option("blogname"),
|
341 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
342 |
"membership_level_name" => $user->membership_level->name,
|
343 |
"display_name" => $user->display_name,
|
344 |
"user_email" => $user->user_email,
|
353 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
354 |
"expirationmonth" => $invoice->expirationmonth,
|
355 |
"expirationyear" => $invoice->expirationyear,
|
356 |
+
"login_link" => pmpro_url("account")
|
357 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
|
359 |
return $this->sendEmail();
|
360 |
}
|
374 |
return true; //didn't send, but we also don't want to indicate failure because the settings say to not send
|
375 |
|
376 |
$this->email = get_bloginfo("admin_email");
|
377 |
+
$this->subject = "Billing information has been udpated for " . $user->user_login . " at " . get_option("blogname");
|
378 |
$this->template = "billing_admin";
|
379 |
|
380 |
$this->data = array(
|
383 |
"user_login" => $user->user_login,
|
384 |
"sitename" => get_option("blogname"),
|
385 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
386 |
"membership_level_name" => $user->membership_level->name,
|
387 |
"display_name" => $user->display_name,
|
388 |
"user_email" => $user->user_email,
|
399 |
"expirationyear" => $invoice->expirationyear,
|
400 |
"login_link" => wp_login_url()
|
401 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
402 |
|
403 |
return $this->sendEmail();
|
404 |
}
|
413 |
return false;
|
414 |
|
415 |
$this->email = $user->user_email;
|
416 |
+
$this->subject = "Membership Payment Failed at " . get_option("blogname");
|
417 |
$this->template = "billing_failure";
|
418 |
|
419 |
$this->data = array(
|
422 |
"user_login" => $user->user_login,
|
423 |
"sitename" => get_option("blogname"),
|
424 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
425 |
"membership_level_name" => $user->membership_level->name,
|
426 |
"display_name" => $user->display_name,
|
427 |
"user_email" => $user->user_email,
|
436 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
437 |
"expirationmonth" => $invoice->expirationmonth,
|
438 |
"expirationyear" => $invoice->expirationyear,
|
439 |
+
"login_link" => pmpro_url("billing")
|
440 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
441 |
|
442 |
return $this->sendEmail();
|
443 |
+
}
|
444 |
|
445 |
function sendBillingFailureAdminEmail($email, $invoice = NULL)
|
446 |
{
|
450 |
$user = get_userdata($invoice->user_id);
|
451 |
|
452 |
$this->email = $email;
|
453 |
+
$this->subject = "Membership Payment Failed For " . $user->display_name . " at " . get_option("blogname");
|
454 |
$this->template = "billing_failure_admin";
|
455 |
|
456 |
$this->data = array(
|
459 |
"user_login" => $user->user_login,
|
460 |
"sitename" => get_option("blogname"),
|
461 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
462 |
"membership_level_name" => $user->membership_level->name,
|
463 |
"display_name" => $user->display_name,
|
464 |
"user_email" => $user->user_email,
|
473 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
474 |
"expirationmonth" => $invoice->expirationmonth,
|
475 |
"expirationyear" => $invoice->expirationyear,
|
476 |
+
"login_link" => pmpro_url("billing")
|
477 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
|
479 |
return $this->sendEmail();
|
480 |
}
|
489 |
return false;
|
490 |
|
491 |
$this->email = $user->user_email;
|
492 |
+
$this->subject = "INVOICE for " . get_option("blogname") . " membership";
|
493 |
$this->template = "invoice";
|
494 |
|
495 |
$this->data = array(
|
498 |
"user_login" => $user->user_login,
|
499 |
"sitename" => get_option("blogname"),
|
500 |
"siteemail" => pmpro_getOption("from_email"),
|
|
|
501 |
"membership_level_name" => $user->membership_level->name,
|
502 |
"display_name" => $user->display_name,
|
503 |
"user_email" => $user->user_email,
|
504 |
+
"invoice_id" => $invoice->payment_transaction_id,
|
505 |
"invoice_total" => $pmpro_currency_symbol . number_format($invoice->total, 2),
|
506 |
"invoice_date" => date(get_option('date_format'), $invoice->timestamp),
|
507 |
"billing_name" => $invoice->billing->name,
|
515 |
"accountnumber" => hideCardNumber($invoice->accountnumber),
|
516 |
"expirationmonth" => $invoice->expirationmonth,
|
517 |
"expirationyear" => $invoice->expirationyear,
|
518 |
+
"login_link" => pmpro_url("account"),
|
519 |
+
"invoice_link" => pmpro_url("invoice", "?invoice=" . $invoice->code)
|
520 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
521 |
|
522 |
if($invoice->getDiscountCode())
|
523 |
+
$this->data["discount_code"] = "<p>Discount Code: " . $invoice->discount_code . "</p>\n";
|
524 |
else
|
525 |
$this->data["discount_code"] = "";
|
526 |
|
527 |
$enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
|
528 |
if($enddate)
|
529 |
+
$this->data["membership_expiration"] = "<p>This membership will expire on " . date(get_option('date_format'), $enddate) . ".</p>\n";
|
530 |
else
|
531 |
$this->data["membership_expiration"] = "";
|
532 |
|
551 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
552 |
|
553 |
$this->email = $user->user_email;
|
554 |
+
$this->subject = "Your trial membership at " . get_option("blogname") . " is ending soon";
|
555 |
$this->template = "trial_ending";
|
556 |
$this->data = array(
|
557 |
"subject" => $this->subject,
|
558 |
"name" => $user->display_name,
|
559 |
"user_login" => $user->user_login,
|
560 |
"sitename" => get_option("blogname"),
|
|
|
561 |
"membership_level_name" => $user->membership_level->name,
|
562 |
+
"siteemail" => get_bloginfo("admin_email"),
|
563 |
"login_link" => wp_login_url(),
|
564 |
"display_name" => $user->display_name,
|
565 |
"user_email" => $user->user_email,
|
568 |
"cycle_period" => $user->membership_level->cycle_period,
|
569 |
"trial_amount" => $pmpro_currency_symbol . $user->membership_level->trial_amount,
|
570 |
"trial_limit" => $user->membership_level->trial_limit,
|
571 |
+
"trial_end" => date(get_option('date_format'), strtotime(date("m/d/Y", $user->membership_level->startdate) . " + " . $user->membership_level->trial_limit . " " . $user->membership_level->cycle_period))
|
572 |
);
|
573 |
|
574 |
return $this->sendEmail();
|
584 |
return false;
|
585 |
|
586 |
$this->email = $user->user_email;
|
587 |
+
$this->subject = "Your membership at " . get_option("blogname") . " has ended";
|
588 |
$this->template = "membership_expired";
|
589 |
+
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "siteemail" => get_bloginfo("admin_email"), "login_link" => wp_login_url(), "display_name" => $user->display_name, "user_email" => $user->user_email, "levels_link" => pmpro_url("levels"));
|
590 |
|
591 |
return $this->sendEmail();
|
592 |
}
|
609 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
610 |
|
611 |
$this->email = $user->user_email;
|
612 |
+
$this->subject = "Your membership at " . get_option("blogname") . " will end soon";
|
613 |
$this->template = "membership_expiring";
|
614 |
+
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "membership_level_name" => $user->membership_level->name, "siteemail" => get_bloginfo("admin_email"), "login_link" => wp_login_url(), "enddate" => date(get_option('date_format'), $user->membership_level->enddate), "display_name" => $user->display_name, "user_email" => $user->user_email);
|
615 |
|
616 |
return $this->sendEmail();
|
617 |
}
|
629 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
630 |
|
631 |
$this->email = $user->user_email;
|
632 |
+
$this->subject = "Your membership at " . get_option("blogname") . " has been changed";
|
633 |
$this->template = "admin_change";
|
634 |
+
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "membership_level_name" => $user->membership_level->name, "siteemail" => get_bloginfo("admin_email"), "login_link" => wp_login_url());
|
635 |
if($user->membership_level->ID)
|
636 |
+
$this->data["membership_change"] = "new level is " . $user->membership_level->name . ". This membership is free";
|
637 |
else
|
638 |
+
$this->data["membership_change"] = "membership has been canceled";
|
639 |
|
640 |
if(!empty($user->membership_level->enddate))
|
641 |
{
|
642 |
+
$this->data["membership_change"] .= ". Your membership will expire on " . date(get_option('date_format'), $user->membership_level->enddate);
|
643 |
}
|
644 |
elseif(!empty($this->expiration_changed))
|
645 |
{
|
646 |
+
$this->data["membership_change"] .= ". Your membership does not expire";
|
647 |
}
|
648 |
|
649 |
return $this->sendEmail();
|
667 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
668 |
|
669 |
$this->email = get_bloginfo("admin_email");
|
670 |
+
$this->subject = "Membership for " . $user->user_login . " at " . get_option("blogname") . " has been changed";
|
671 |
$this->template = "admin_change_admin";
|
672 |
$this->data = array("subject" => $this->subject, "name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "membership_level_name" => $user->membership_level->name, "siteemail" => get_bloginfo("admin_email"), "login_link" => wp_login_url());
|
673 |
if($user->membership_level->ID)
|
674 |
+
$this->data["membership_change"] = "The new level is " . $user->membership_level->name . ". This membership is free";
|
675 |
else
|
676 |
+
$this->data["membership_change"] = "membership has been canceled";
|
677 |
|
678 |
if(!empty($user->membership_level->enddate))
|
679 |
{
|
680 |
+
$this->data["membership_change"] .= ". This membership will expire on " . date(get_option('date_format'), $user->membership_level->enddate);
|
681 |
}
|
682 |
elseif(!empty($this->expiration_changed))
|
683 |
{
|
684 |
+
$this->data["membership_change"] .= ". This membership does not expire";
|
685 |
}
|
686 |
|
687 |
return $this->sendEmail();
|
classes/gateways/class.pmprogateway.php
CHANGED
@@ -43,7 +43,7 @@
|
|
43 |
else
|
44 |
{
|
45 |
//add a period to the start date to account for the initial payment
|
46 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
47 |
}
|
48 |
|
49 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
@@ -52,7 +52,7 @@
|
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
-
$order->error =
|
56 |
return false;
|
57 |
}
|
58 |
}
|
@@ -90,7 +90,7 @@
|
|
90 |
else
|
91 |
{
|
92 |
//add a period to the start date to account for the initial payment
|
93 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $this->BillingFrequency . " " . $this->BillingPeriod
|
94 |
}
|
95 |
|
96 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
@@ -103,14 +103,14 @@
|
|
103 |
if($this->void($order))
|
104 |
{
|
105 |
if(!$order->error)
|
106 |
-
$order->error =
|
107 |
}
|
108 |
else
|
109 |
{
|
110 |
if(!$order->error)
|
111 |
-
$order->error =
|
112 |
|
113 |
-
$order->error .= "
|
114 |
}
|
115 |
|
116 |
return false;
|
@@ -126,7 +126,7 @@
|
|
126 |
else
|
127 |
{
|
128 |
if(empty($order->error))
|
129 |
-
$order->error =
|
130 |
|
131 |
return false;
|
132 |
}
|
@@ -174,9 +174,6 @@
|
|
174 |
//create a code for the order
|
175 |
if(empty($order->code))
|
176 |
$order->code = $order->getRandomCode();
|
177 |
-
|
178 |
-
//filter order before subscription. use with care.
|
179 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
180 |
|
181 |
//simulate a successful subscription processing
|
182 |
$order->status = "success";
|
@@ -200,21 +197,5 @@
|
|
200 |
$order->updateStatus("cancelled");
|
201 |
return true;
|
202 |
}
|
203 |
-
|
204 |
-
function getSubscriptionStatus(&$order)
|
205 |
-
{
|
206 |
-
//require a subscription id
|
207 |
-
if(empty($order->subscription_transaction_id))
|
208 |
-
return false;
|
209 |
-
|
210 |
-
//this looks different for each gateway, but generally an array of some sort
|
211 |
-
return array();
|
212 |
-
}
|
213 |
-
|
214 |
-
function getTransactionStatus(&$order)
|
215 |
-
{
|
216 |
-
//this looks different for each gateway, but generally an array of some sort
|
217 |
-
return array();
|
218 |
-
}
|
219 |
}
|
220 |
?>
|
43 |
else
|
44 |
{
|
45 |
//add a period to the start date to account for the initial payment
|
46 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
47 |
}
|
48 |
|
49 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
+
$order->error = "Unknown error: Authorization failed.";
|
56 |
return false;
|
57 |
}
|
58 |
}
|
90 |
else
|
91 |
{
|
92 |
//add a period to the start date to account for the initial payment
|
93 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $this->BillingFrequency . " " . $this->BillingPeriod)) . "T0:0:0";
|
94 |
}
|
95 |
|
96 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
103 |
if($this->void($order))
|
104 |
{
|
105 |
if(!$order->error)
|
106 |
+
$order->error = "Unknown error: Payment failed.";
|
107 |
}
|
108 |
else
|
109 |
{
|
110 |
if(!$order->error)
|
111 |
+
$order->error = "Unknown error: Payment failed.";
|
112 |
|
113 |
+
$order->error .= " A partial payment was made that we could not void. Please contact the site owner immediately to correct this.";
|
114 |
}
|
115 |
|
116 |
return false;
|
126 |
else
|
127 |
{
|
128 |
if(empty($order->error))
|
129 |
+
$order->error = "Unknown error: Payment failed.";
|
130 |
|
131 |
return false;
|
132 |
}
|
174 |
//create a code for the order
|
175 |
if(empty($order->code))
|
176 |
$order->code = $order->getRandomCode();
|
|
|
|
|
|
|
177 |
|
178 |
//simulate a successful subscription processing
|
179 |
$order->status = "success";
|
197 |
$order->updateStatus("cancelled");
|
198 |
return true;
|
199 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
201 |
?>
|
classes/gateways/class.pmprogateway_authorizenet.php
CHANGED
@@ -43,7 +43,7 @@
|
|
43 |
else
|
44 |
{
|
45 |
//add a period to the start date to account for the initial payment
|
46 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
47 |
}
|
48 |
|
49 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
@@ -52,7 +52,7 @@
|
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
-
$order->error =
|
56 |
return false;
|
57 |
}
|
58 |
}
|
@@ -90,7 +90,7 @@
|
|
90 |
else
|
91 |
{
|
92 |
//add a period to the start date to account for the initial payment
|
93 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
94 |
}
|
95 |
|
96 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
@@ -103,13 +103,14 @@
|
|
103 |
if($this->void($order))
|
104 |
{
|
105 |
if(!$order->error)
|
106 |
-
$order->error =
|
107 |
}
|
108 |
else
|
109 |
{
|
110 |
if(!$order->error)
|
111 |
-
$order->error =
|
112 |
-
|
|
|
113 |
}
|
114 |
|
115 |
return false;
|
@@ -125,7 +126,7 @@
|
|
125 |
else
|
126 |
{
|
127 |
if(empty($order->error))
|
128 |
-
$order->error =
|
129 |
|
130 |
return false;
|
131 |
}
|
@@ -184,7 +185,7 @@
|
|
184 |
"x_exp_date" => $order->ExpirationDate,
|
185 |
|
186 |
"x_amount" => $amount,
|
187 |
-
"x_description" => $order->membership_level->name . "
|
188 |
|
189 |
"x_first_name" => $order->FirstName,
|
190 |
"x_last_name" => $order->LastName,
|
@@ -434,9 +435,6 @@
|
|
434 |
if(empty($order->code))
|
435 |
$order->code = $order->getRandomCode();
|
436 |
|
437 |
-
//filter order before subscription. use with care.
|
438 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
439 |
-
|
440 |
if(!empty($order->gateway_environment))
|
441 |
$gateway_environment = $order->gateway_environment;
|
442 |
if(empty($gateway_environment))
|
@@ -490,7 +488,8 @@
|
|
490 |
//taxes
|
491 |
$amount_tax = $order->getTaxForPrice($amount);
|
492 |
$trial_tax = $order->getTaxForPrice($trialAmount);
|
493 |
-
|
|
|
494 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
495 |
$trialAmount = round((float)$trialAmount + (float)$trial_tax, 2);
|
496 |
|
@@ -784,8 +783,8 @@
|
|
784 |
else
|
785 |
{
|
786 |
$order->status = "error";
|
787 |
-
$order->error =
|
788 |
-
$order->shorterror =
|
789 |
return false;
|
790 |
}
|
791 |
}
|
43 |
else
|
44 |
{
|
45 |
//add a period to the start date to account for the initial payment
|
46 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
47 |
}
|
48 |
|
49 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
+
$order->error = "Unknown error: Authorization failed.";
|
56 |
return false;
|
57 |
}
|
58 |
}
|
90 |
else
|
91 |
{
|
92 |
//add a period to the start date to account for the initial payment
|
93 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
94 |
}
|
95 |
|
96 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
103 |
if($this->void($order))
|
104 |
{
|
105 |
if(!$order->error)
|
106 |
+
$order->error = "Unknown error: Payment failed.";
|
107 |
}
|
108 |
else
|
109 |
{
|
110 |
if(!$order->error)
|
111 |
+
$order->error = "Unknown error: Payment failed.";
|
112 |
+
|
113 |
+
$order->error .= " A partial payment was made that we could not void. Please contact the site owner immediately to correct this.";
|
114 |
}
|
115 |
|
116 |
return false;
|
126 |
else
|
127 |
{
|
128 |
if(empty($order->error))
|
129 |
+
$order->error = "Unknown error: Payment failed.";
|
130 |
|
131 |
return false;
|
132 |
}
|
185 |
"x_exp_date" => $order->ExpirationDate,
|
186 |
|
187 |
"x_amount" => $amount,
|
188 |
+
"x_description" => $order->membership_level->name . " Membership",
|
189 |
|
190 |
"x_first_name" => $order->FirstName,
|
191 |
"x_last_name" => $order->LastName,
|
435 |
if(empty($order->code))
|
436 |
$order->code = $order->getRandomCode();
|
437 |
|
|
|
|
|
|
|
438 |
if(!empty($order->gateway_environment))
|
439 |
$gateway_environment = $order->gateway_environment;
|
440 |
if(empty($gateway_environment))
|
488 |
//taxes
|
489 |
$amount_tax = $order->getTaxForPrice($amount);
|
490 |
$trial_tax = $order->getTaxForPrice($trialAmount);
|
491 |
+
|
492 |
+
$order->subtotal = $amount;
|
493 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
494 |
$trialAmount = round((float)$trialAmount + (float)$trial_tax, 2);
|
495 |
|
783 |
else
|
784 |
{
|
785 |
$order->status = "error";
|
786 |
+
$order->error = "Could not connect to Authorize.net";
|
787 |
+
$order->shorterror = "Could not connect to Authorize.net";
|
788 |
return false;
|
789 |
}
|
790 |
}
|
classes/gateways/class.pmprogateway_braintree.php
CHANGED
@@ -23,7 +23,7 @@
|
|
23 |
}
|
24 |
|
25 |
function process(&$order)
|
26 |
-
{
|
27 |
//check for initial payment
|
28 |
if(floatval($order->InitialPayment) == 0)
|
29 |
{
|
@@ -58,7 +58,7 @@
|
|
58 |
else
|
59 |
{
|
60 |
if(empty($order->error))
|
61 |
-
$order->error =
|
62 |
return false;
|
63 |
}
|
64 |
}
|
@@ -117,7 +117,7 @@
|
|
117 |
else
|
118 |
{
|
119 |
$order->errorcode = true;
|
120 |
-
$order->error =
|
121 |
$order->shorterror = $response->message;
|
122 |
return false;
|
123 |
}
|
@@ -126,7 +126,7 @@
|
|
126 |
{
|
127 |
//$order->status = "error";
|
128 |
$order->errorcode = true;
|
129 |
-
$order->error =
|
130 |
$order->shorterror = $response->message;
|
131 |
return false;
|
132 |
}
|
@@ -183,19 +183,19 @@
|
|
183 |
'expirationDate' => $order->braintree->expiration_date,
|
184 |
'cardholderName' => trim($order->FirstName . " " . $order->LastName),
|
185 |
'options' => array(
|
186 |
-
'updateExistingToken' => $
|
187 |
)
|
188 |
)
|
189 |
)
|
190 |
);
|
191 |
-
|
192 |
if($response->success)
|
193 |
{
|
194 |
-
$this->customer = $
|
195 |
}
|
196 |
else
|
197 |
{
|
198 |
-
$order->error =
|
199 |
$order->shorterror = $order->error;
|
200 |
return false;
|
201 |
}
|
@@ -208,7 +208,7 @@
|
|
208 |
//assume no customer found
|
209 |
}
|
210 |
}
|
211 |
-
|
212 |
//no customer id, create one
|
213 |
if(!empty($order->accountnumber))
|
214 |
{
|
@@ -243,14 +243,14 @@
|
|
243 |
}
|
244 |
else
|
245 |
{
|
246 |
-
$order->error =
|
247 |
$order->shorterror = $order->error;
|
248 |
return false;
|
249 |
}
|
250 |
}
|
251 |
catch (Exception $e)
|
252 |
{
|
253 |
-
$order->error =
|
254 |
$order->shorterror = $order->error;
|
255 |
return false;
|
256 |
}
|
@@ -275,7 +275,8 @@
|
|
275 |
|
276 |
//figure out the amounts
|
277 |
$amount = $order->PaymentAmount;
|
278 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
|
|
279 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
280 |
|
281 |
/*
|
@@ -296,13 +297,13 @@
|
|
296 |
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
297 |
|
298 |
//convert to a profile start date
|
299 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day"
|
300 |
|
301 |
//filter the start date
|
302 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
303 |
|
304 |
//convert back to days
|
305 |
-
$trial_period_days = ceil(abs(strtotime(date("Y-m-d")) - strtotime($order->ProfileStartDate
|
306 |
|
307 |
//now add the actual trial set by the site
|
308 |
if(!empty($order->TrialBillingCycles))
|
@@ -341,7 +342,7 @@
|
|
341 |
}
|
342 |
catch (Exception $e)
|
343 |
{
|
344 |
-
$order->error =
|
345 |
//return error
|
346 |
$order->shorterror = $order->error;
|
347 |
return false;
|
@@ -356,7 +357,7 @@
|
|
356 |
}
|
357 |
else
|
358 |
{
|
359 |
-
$order->error =
|
360 |
$order->shorterror = $result->message;
|
361 |
return false;
|
362 |
}
|
@@ -367,12 +368,12 @@
|
|
367 |
//we just have to run getCustomer which will look for the customer and update it with the new token
|
368 |
$this->getCustomer($order);
|
369 |
|
370 |
-
if(!empty($this->customer)
|
371 |
{
|
372 |
return true;
|
373 |
}
|
374 |
else
|
375 |
-
{
|
376 |
return false; //couldn't find the customer
|
377 |
}
|
378 |
}
|
@@ -394,7 +395,7 @@
|
|
394 |
catch(Exception $e)
|
395 |
{
|
396 |
$order->updateStatus("cancelled"); //assume it's been cancelled already
|
397 |
-
$order->error =
|
398 |
$order->shorterror = $order->error;
|
399 |
return false; //no subscription found
|
400 |
}
|
@@ -407,16 +408,17 @@
|
|
407 |
else
|
408 |
{
|
409 |
$order->updateStatus("cancelled"); //assume it's been cancelled already
|
410 |
-
$order->error =
|
411 |
$order->shorterror = $order->error;
|
412 |
return false; //no subscription found
|
413 |
}
|
414 |
}
|
415 |
else
|
416 |
{
|
417 |
-
$order->error =
|
418 |
$order->shorterror = $order->error;
|
419 |
return false; //no customer found
|
420 |
}
|
421 |
}
|
422 |
}
|
|
23 |
}
|
24 |
|
25 |
function process(&$order)
|
26 |
+
{
|
27 |
//check for initial payment
|
28 |
if(floatval($order->InitialPayment) == 0)
|
29 |
{
|
58 |
else
|
59 |
{
|
60 |
if(empty($order->error))
|
61 |
+
$order->error = "Unknown error: Initial payment failed.";
|
62 |
return false;
|
63 |
}
|
64 |
}
|
117 |
else
|
118 |
{
|
119 |
$order->errorcode = true;
|
120 |
+
$order->error = "Error during settlement: " . $response->message;
|
121 |
$order->shorterror = $response->message;
|
122 |
return false;
|
123 |
}
|
126 |
{
|
127 |
//$order->status = "error";
|
128 |
$order->errorcode = true;
|
129 |
+
$order->error = "Error during charge: " . $response->message;
|
130 |
$order->shorterror = $response->message;
|
131 |
return false;
|
132 |
}
|
183 |
'expirationDate' => $order->braintree->expiration_date,
|
184 |
'cardholderName' => trim($order->FirstName . " " . $order->LastName),
|
185 |
'options' => array(
|
186 |
+
'updateExistingToken' => $customer_id
|
187 |
)
|
188 |
)
|
189 |
)
|
190 |
);
|
191 |
+
|
192 |
if($response->success)
|
193 |
{
|
194 |
+
$this->customer = $result->customer;
|
195 |
}
|
196 |
else
|
197 |
{
|
198 |
+
$order->error = "Failed to update customer.";
|
199 |
$order->shorterror = $order->error;
|
200 |
return false;
|
201 |
}
|
208 |
//assume no customer found
|
209 |
}
|
210 |
}
|
211 |
+
|
212 |
//no customer id, create one
|
213 |
if(!empty($order->accountnumber))
|
214 |
{
|
243 |
}
|
244 |
else
|
245 |
{
|
246 |
+
$order->error = "Failed to create customer.";
|
247 |
$order->shorterror = $order->error;
|
248 |
return false;
|
249 |
}
|
250 |
}
|
251 |
catch (Exception $e)
|
252 |
{
|
253 |
+
$order->error = "Error creating customer record with Braintree: " . $e->getMessage();
|
254 |
$order->shorterror = $order->error;
|
255 |
return false;
|
256 |
}
|
275 |
|
276 |
//figure out the amounts
|
277 |
$amount = $order->PaymentAmount;
|
278 |
+
$amount_tax = $order->getTaxForPrice($amount);
|
279 |
+
$order->subtotal = $amount;
|
280 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
281 |
|
282 |
/*
|
297 |
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
298 |
|
299 |
//convert to a profile start date
|
300 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day")) . "T0:0:0";
|
301 |
|
302 |
//filter the start date
|
303 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
304 |
|
305 |
//convert back to days
|
306 |
+
$trial_period_days = ceil(abs(strtotime(date("Y-m-d")) - strtotime($order->ProfileStartDate)) / 86400);
|
307 |
|
308 |
//now add the actual trial set by the site
|
309 |
if(!empty($order->TrialBillingCycles))
|
342 |
}
|
343 |
catch (Exception $e)
|
344 |
{
|
345 |
+
$order->error = "Error subscribing customer to plan with B:" . $e->getMessage();
|
346 |
//return error
|
347 |
$order->shorterror = $order->error;
|
348 |
return false;
|
357 |
}
|
358 |
else
|
359 |
{
|
360 |
+
$order->error = "Failed to subscribe with Braintree: " . $result->message;
|
361 |
$order->shorterror = $result->message;
|
362 |
return false;
|
363 |
}
|
368 |
//we just have to run getCustomer which will look for the customer and update it with the new token
|
369 |
$this->getCustomer($order);
|
370 |
|
371 |
+
if(!empty($this->customer))
|
372 |
{
|
373 |
return true;
|
374 |
}
|
375 |
else
|
376 |
+
{
|
377 |
return false; //couldn't find the customer
|
378 |
}
|
379 |
}
|
395 |
catch(Exception $e)
|
396 |
{
|
397 |
$order->updateStatus("cancelled"); //assume it's been cancelled already
|
398 |
+
$order->error = "Could not find the subscription.";
|
399 |
$order->shorterror = $order->error;
|
400 |
return false; //no subscription found
|
401 |
}
|
408 |
else
|
409 |
{
|
410 |
$order->updateStatus("cancelled"); //assume it's been cancelled already
|
411 |
+
$order->error = "Could not find the subscription.";
|
412 |
$order->shorterror = $order->error;
|
413 |
return false; //no subscription found
|
414 |
}
|
415 |
}
|
416 |
else
|
417 |
{
|
418 |
+
$order->error = "Could not find the subscription.";
|
419 |
$order->shorterror = $order->error;
|
420 |
return false; //no customer found
|
421 |
}
|
422 |
}
|
423 |
}
|
424 |
+
?>
|
classes/gateways/class.pmprogateway_check.php
CHANGED
@@ -48,7 +48,7 @@
|
|
48 |
else
|
49 |
{
|
50 |
//add a period to the start date to account for the initial payment
|
51 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
52 |
}
|
53 |
|
54 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
@@ -57,7 +57,7 @@
|
|
57 |
else
|
58 |
{
|
59 |
if(empty($order->error))
|
60 |
-
$order->error =
|
61 |
return false;
|
62 |
}
|
63 |
}
|
@@ -95,7 +95,7 @@
|
|
95 |
else
|
96 |
{
|
97 |
//add a period to the start date to account for the initial payment
|
98 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $this->BillingFrequency . " " . $this->BillingPeriod
|
99 |
}
|
100 |
|
101 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
@@ -108,14 +108,14 @@
|
|
108 |
if($this->void($order))
|
109 |
{
|
110 |
if(!$order->error)
|
111 |
-
$order->error =
|
112 |
}
|
113 |
else
|
114 |
{
|
115 |
if(!$order->error)
|
116 |
-
$order->error =
|
117 |
|
118 |
-
$order->error .= "
|
119 |
}
|
120 |
|
121 |
return false;
|
@@ -131,7 +131,7 @@
|
|
131 |
else
|
132 |
{
|
133 |
if(empty($order->error))
|
134 |
-
$order->error =
|
135 |
|
136 |
return false;
|
137 |
}
|
@@ -179,10 +179,7 @@
|
|
179 |
//create a code for the order
|
180 |
if(empty($order->code))
|
181 |
$order->code = $order->getRandomCode();
|
182 |
-
|
183 |
-
//filter order before subscription. use with care.
|
184 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
185 |
-
|
186 |
//simulate a successful subscription processing
|
187 |
$order->status = "success";
|
188 |
$order->subscription_transaction_id = "CHECK" . $order->code;
|
@@ -205,4 +202,5 @@
|
|
205 |
$order->updateStatus("cancelled");
|
206 |
return true;
|
207 |
}
|
208 |
-
}
|
|
48 |
else
|
49 |
{
|
50 |
//add a period to the start date to account for the initial payment
|
51 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
52 |
}
|
53 |
|
54 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
57 |
else
|
58 |
{
|
59 |
if(empty($order->error))
|
60 |
+
$order->error = "Unknown error: Authorization failed.";
|
61 |
return false;
|
62 |
}
|
63 |
}
|
95 |
else
|
96 |
{
|
97 |
//add a period to the start date to account for the initial payment
|
98 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $this->BillingFrequency . " " . $this->BillingPeriod)) . "T0:0:0";
|
99 |
}
|
100 |
|
101 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
108 |
if($this->void($order))
|
109 |
{
|
110 |
if(!$order->error)
|
111 |
+
$order->error = "Unknown error: Payment failed.";
|
112 |
}
|
113 |
else
|
114 |
{
|
115 |
if(!$order->error)
|
116 |
+
$order->error = "Unknown error: Payment failed.";
|
117 |
|
118 |
+
$order->error .= " A partial payment was made that we could not void. Please contact the site owner immediately to correct this.";
|
119 |
}
|
120 |
|
121 |
return false;
|
131 |
else
|
132 |
{
|
133 |
if(empty($order->error))
|
134 |
+
$order->error = "Unknown error: Payment failed.";
|
135 |
|
136 |
return false;
|
137 |
}
|
179 |
//create a code for the order
|
180 |
if(empty($order->code))
|
181 |
$order->code = $order->getRandomCode();
|
182 |
+
|
|
|
|
|
|
|
183 |
//simulate a successful subscription processing
|
184 |
$order->status = "success";
|
185 |
$order->subscription_transaction_id = "CHECK" . $order->code;
|
202 |
$order->updateStatus("cancelled");
|
203 |
return true;
|
204 |
}
|
205 |
+
}
|
206 |
+
?>
|
classes/gateways/class.pmprogateway_cybersource.php
DELETED
@@ -1,765 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
require_once(dirname(__FILE__) . "/class.pmprogateway.php");
|
3 |
-
if(!class_exists("CyberSourceSoapClient"))
|
4 |
-
require_once(dirname(__FILE__) . "/../../includes/lib/CyberSource/cyber_source_soap_client.php");
|
5 |
-
class PMProGateway_cybersource
|
6 |
-
{
|
7 |
-
function PMProGateway_cybersource($gateway = NULL)
|
8 |
-
{
|
9 |
-
$this->gateway = $gateway;
|
10 |
-
return $this->gateway;
|
11 |
-
}
|
12 |
-
|
13 |
-
function process(&$order)
|
14 |
-
{
|
15 |
-
//check for initial payment
|
16 |
-
if(floatval($order->InitialPayment) == 0)
|
17 |
-
{
|
18 |
-
//auth first, then process
|
19 |
-
if($this->authorize($order))
|
20 |
-
{
|
21 |
-
$this->void($order);
|
22 |
-
if(!pmpro_isLevelTrial($order->membership_level))
|
23 |
-
{
|
24 |
-
//subscription will start today with a 1 period trial
|
25 |
-
$order->ProfileStartDate = date("Y-m-d") . "T0:0:0";
|
26 |
-
$order->TrialBillingPeriod = $order->BillingPeriod;
|
27 |
-
$order->TrialBillingFrequency = $order->BillingFrequency;
|
28 |
-
$order->TrialBillingCycles = 1;
|
29 |
-
$order->TrialAmount = 0;
|
30 |
-
|
31 |
-
//add a billing cycle to make up for the trial, if applicable
|
32 |
-
if(!empty($order->TotalBillingCycles))
|
33 |
-
$order->TotalBillingCycles++;
|
34 |
-
}
|
35 |
-
elseif($order->InitialPayment == 0 && $order->TrialAmount == 0)
|
36 |
-
{
|
37 |
-
//it has a trial, but the amount is the same as the initial payment, so we can squeeze it in there
|
38 |
-
$order->ProfileStartDate = date("Y-m-d") . "T0:0:0";
|
39 |
-
$order->TrialBillingCycles++;
|
40 |
-
|
41 |
-
//add a billing cycle to make up for the trial, if applicable
|
42 |
-
if($order->TotalBillingCycles)
|
43 |
-
$order->TotalBillingCycles++;
|
44 |
-
}
|
45 |
-
else
|
46 |
-
{
|
47 |
-
//add a period to the start date to account for the initial payment
|
48 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
|
49 |
-
}
|
50 |
-
|
51 |
-
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
52 |
-
return $this->subscribe($order);
|
53 |
-
}
|
54 |
-
else
|
55 |
-
{
|
56 |
-
if(empty($order->error))
|
57 |
-
$order->error = __("Unknown error: Authorization failed.", "pmpro");
|
58 |
-
return false;
|
59 |
-
}
|
60 |
-
}
|
61 |
-
else
|
62 |
-
{
|
63 |
-
//charge first payment
|
64 |
-
if($this->charge($order))
|
65 |
-
{
|
66 |
-
//setup recurring billing
|
67 |
-
if(pmpro_isLevelRecurring($order->membership_level))
|
68 |
-
{
|
69 |
-
if(!pmpro_isLevelTrial($order->membership_level))
|
70 |
-
{
|
71 |
-
//subscription will start today with a 1 period trial
|
72 |
-
$order->ProfileStartDate = date("Y-m-d") . "T0:0:0";
|
73 |
-
$order->TrialBillingPeriod = $order->BillingPeriod;
|
74 |
-
$order->TrialBillingFrequency = $order->BillingFrequency;
|
75 |
-
$order->TrialBillingCycles = 1;
|
76 |
-
$order->TrialAmount = 0;
|
77 |
-
|
78 |
-
//add a billing cycle to make up for the trial, if applicable
|
79 |
-
if(!empty($order->TotalBillingCycles))
|
80 |
-
$order->TotalBillingCycles++;
|
81 |
-
}
|
82 |
-
elseif($order->InitialPayment == 0 && $order->TrialAmount == 0)
|
83 |
-
{
|
84 |
-
//it has a trial, but the amount is the same as the initial payment, so we can squeeze it in there
|
85 |
-
$order->ProfileStartDate = date("Y-m-d") . "T0:0:0";
|
86 |
-
$order->TrialBillingCycles++;
|
87 |
-
|
88 |
-
//add a billing cycle to make up for the trial, if applicable
|
89 |
-
if(!empty($order->TotalBillingCycles))
|
90 |
-
$order->TotalBillingCycles++;
|
91 |
-
}
|
92 |
-
else
|
93 |
-
{
|
94 |
-
//add a period to the start date to account for the initial payment
|
95 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $this->BillingFrequency . " " . $this->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
|
96 |
-
}
|
97 |
-
|
98 |
-
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
99 |
-
if($this->subscribe($order))
|
100 |
-
{
|
101 |
-
return true;
|
102 |
-
}
|
103 |
-
else
|
104 |
-
{
|
105 |
-
if($this->void($order))
|
106 |
-
{
|
107 |
-
if(!$order->error)
|
108 |
-
$order->error = __("Unknown error: Payment failed.", "pmpro");
|
109 |
-
}
|
110 |
-
else
|
111 |
-
{
|
112 |
-
if(!$order->error)
|
113 |
-
$order->error = __("Unknown error: Payment failed.", "pmpro");
|
114 |
-
|
115 |
-
$order->error .= " " . __("A partial payment was made that we could not void. Please contact the site owner immediately to correct this.", "pmpro");
|
116 |
-
}
|
117 |
-
|
118 |
-
return false;
|
119 |
-
}
|
120 |
-
}
|
121 |
-
else
|
122 |
-
{
|
123 |
-
//only a one time charge
|
124 |
-
$order->status = "success"; //saved on checkout page
|
125 |
-
return true;
|
126 |
-
}
|
127 |
-
}
|
128 |
-
else
|
129 |
-
{
|
130 |
-
if(empty($order->error))
|
131 |
-
$order->error = __("Unknown error: Payment failed.", "pmpro");
|
132 |
-
|
133 |
-
return false;
|
134 |
-
}
|
135 |
-
}
|
136 |
-
}
|
137 |
-
|
138 |
-
function getCardType($name)
|
139 |
-
{
|
140 |
-
$card_types = array(
|
141 |
-
'Visa' => '001',
|
142 |
-
'MasterCard' => '002',
|
143 |
-
'Master Card' => '002',
|
144 |
-
'AMEX' => '003',
|
145 |
-
'American Express' => '003',
|
146 |
-
'Discover' => '004',
|
147 |
-
'Diners Club' => '005',
|
148 |
-
'Carte Blanche' => '006',
|
149 |
-
'JCB' => '007'
|
150 |
-
);
|
151 |
-
|
152 |
-
if(isset($card_types[$name]))
|
153 |
-
return $card_types[$name];
|
154 |
-
else
|
155 |
-
return false;
|
156 |
-
}
|
157 |
-
|
158 |
-
function getWSDL($order)
|
159 |
-
{
|
160 |
-
//which gateway environment?
|
161 |
-
if(empty($order->gateway_environment))
|
162 |
-
$gateway_environment = pmpro_getOption("gateway_environment");
|
163 |
-
else
|
164 |
-
$gateway_environment = $order->gateway_environment;
|
165 |
-
|
166 |
-
//which host?
|
167 |
-
if($gateway_environment == "live")
|
168 |
-
$host = "ics2ws.ic3.com";
|
169 |
-
else
|
170 |
-
$host = "ics2wstest.ic3.com";
|
171 |
-
|
172 |
-
//path
|
173 |
-
$path = "/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.90.wsdl";
|
174 |
-
|
175 |
-
//build url
|
176 |
-
$wsdl_url = "https://" . $host . $path;
|
177 |
-
|
178 |
-
//filter
|
179 |
-
$wsdl_url = apply_filters("pmpro_cybersource_wsdl_url", $wsdl_url, $gateway_environment);
|
180 |
-
|
181 |
-
return $wsdl_url;
|
182 |
-
}
|
183 |
-
|
184 |
-
function authorize(&$order)
|
185 |
-
{
|
186 |
-
if(empty($order->code))
|
187 |
-
$order->code = $order->getRandomCode();
|
188 |
-
|
189 |
-
$wsdl_url = $this->getWSDL($order);
|
190 |
-
|
191 |
-
//what amount to authorize? just $1 to test
|
192 |
-
$amount = "1.00";
|
193 |
-
|
194 |
-
//combine address
|
195 |
-
$address = $order->Address1;
|
196 |
-
if(!empty($order->Address2))
|
197 |
-
$address .= "\n" . $order->Address2;
|
198 |
-
|
199 |
-
//customer stuff
|
200 |
-
$customer_email = $order->Email;
|
201 |
-
$customer_phone = $order->billing->phone;
|
202 |
-
|
203 |
-
if(!isset($order->membership_level->name))
|
204 |
-
$order->membership_level->name = "";
|
205 |
-
|
206 |
-
//to store our request
|
207 |
-
$request = new stdClass();
|
208 |
-
|
209 |
-
//which service?
|
210 |
-
$ccAuthService = new stdClass();
|
211 |
-
$ccAuthService->run = "true";
|
212 |
-
$request->ccAuthService = $ccAuthService;
|
213 |
-
|
214 |
-
//merchant id and order code
|
215 |
-
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
216 |
-
$request->merchantReferenceCode = $order->code;
|
217 |
-
|
218 |
-
//bill to
|
219 |
-
$billTo = new stdClass();
|
220 |
-
$billTo->firstName = $order->FirstName;
|
221 |
-
$billTo->lastName = $order->LastName;
|
222 |
-
$billTo->street1 = $address;
|
223 |
-
$billTo->city = $order->billing->city;
|
224 |
-
$billTo->state = $order->billing->state;
|
225 |
-
$billTo->postalCode = $order->billing->zip;
|
226 |
-
$billTo->country = $order->billing->country;
|
227 |
-
$billTo->email = $order->Email;
|
228 |
-
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
229 |
-
$request->billTo = $billTo;
|
230 |
-
|
231 |
-
//card
|
232 |
-
$card = new stdClass();
|
233 |
-
$card->cardType = $this->getCardType($order->cardtype);
|
234 |
-
$card->accountNumber = $order->accountnumber;
|
235 |
-
$card->expirationMonth = $order->expirationmonth;
|
236 |
-
$card->expirationYear = $order->expirationyear;
|
237 |
-
$card->cvNumber = $order->CVV2;
|
238 |
-
$request->card = $card;
|
239 |
-
|
240 |
-
//currency
|
241 |
-
$purchaseTotals = new stdClass();
|
242 |
-
$purchaseTotals->currency = pmpro_getOption("currency");
|
243 |
-
$request->purchaseTotals = $purchaseTotals;
|
244 |
-
|
245 |
-
//item/price
|
246 |
-
$item0 = new stdClass();
|
247 |
-
$item0->unitPrice = $amount;
|
248 |
-
$item0->quantity = "1";
|
249 |
-
$item0->productName = $order->membership_level->name . " Membership";
|
250 |
-
$item0->productSKU = $order->membership_level->id;
|
251 |
-
$item0->id = $order->membership_id;
|
252 |
-
$request->item = array($item0);
|
253 |
-
|
254 |
-
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>pmpro_getOption("cybersource_merchantid"), "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
255 |
-
$reply = $soapClient->runTransaction($request);
|
256 |
-
|
257 |
-
if($reply->reasonCode == "100")
|
258 |
-
{
|
259 |
-
//success
|
260 |
-
$order->payment_transaction_id = $reply->requestID;
|
261 |
-
$order->updateStatus("authorized");
|
262 |
-
return true;
|
263 |
-
}
|
264 |
-
else
|
265 |
-
{
|
266 |
-
//error
|
267 |
-
$order->errorcode = $reply->reasonCode;
|
268 |
-
$order->error = $this->getErrorFromCode($reply->reasonCode);
|
269 |
-
$order->shorterror = $this->getErrorFromCode($reply->reasonCode);
|
270 |
-
return false;
|
271 |
-
}
|
272 |
-
}
|
273 |
-
|
274 |
-
function void(&$order)
|
275 |
-
{
|
276 |
-
//need a transaction id
|
277 |
-
if(empty($order->payment_transaction_id))
|
278 |
-
return false;
|
279 |
-
|
280 |
-
//get wsdl
|
281 |
-
$wsdl_url = $this->getWSDL($order);
|
282 |
-
|
283 |
-
//to store our request
|
284 |
-
$request = new stdClass();
|
285 |
-
|
286 |
-
//which service?
|
287 |
-
$voidService = new stdClass();
|
288 |
-
$voidService->run = "true";
|
289 |
-
$voidService->voidRequestID = $order->payment_transaction_id;
|
290 |
-
$request->voidService = $voidService;
|
291 |
-
|
292 |
-
//merchant id and order code
|
293 |
-
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
294 |
-
$request->merchantReferenceCode = $order->code;
|
295 |
-
|
296 |
-
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>pmpro_getOption("cybersource_merchantid"), "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
297 |
-
$reply = $soapClient->runTransaction($request);
|
298 |
-
|
299 |
-
if($reply->reasonCode == "100")
|
300 |
-
{
|
301 |
-
//success
|
302 |
-
$order->payment_transaction_id = $reply->requestID;
|
303 |
-
$order->updateStatus("voided");
|
304 |
-
return true;
|
305 |
-
}
|
306 |
-
else
|
307 |
-
{
|
308 |
-
//error
|
309 |
-
$order->errorcode = $reply->reasonCode;
|
310 |
-
$order->error = $this->getErrorFromCode($reply->reasonCode);
|
311 |
-
$order->shorterror = $this->getErrorFromCode($reply->reasonCode);
|
312 |
-
return false;
|
313 |
-
}
|
314 |
-
}
|
315 |
-
|
316 |
-
function charge(&$order)
|
317 |
-
{
|
318 |
-
//get a code
|
319 |
-
if(empty($order->code))
|
320 |
-
$order->code = $order->getRandomCode();
|
321 |
-
|
322 |
-
//get wsdl
|
323 |
-
$wsdl_url = $this->getWSDL($order);
|
324 |
-
|
325 |
-
//what amount to charge?
|
326 |
-
$amount = $order->InitialPayment;
|
327 |
-
|
328 |
-
//tax
|
329 |
-
$order->subtotal = $amount;
|
330 |
-
$tax = $order->getTax(true);
|
331 |
-
$amount = round((float)$order->subtotal + (float)$tax, 2);
|
332 |
-
|
333 |
-
//combine address
|
334 |
-
$address = $order->Address1;
|
335 |
-
if(!empty($order->Address2))
|
336 |
-
$address .= "\n" . $order->Address2;
|
337 |
-
|
338 |
-
//customer stuff
|
339 |
-
$customer_email = $order->Email;
|
340 |
-
$customer_phone = $order->billing->phone;
|
341 |
-
|
342 |
-
if(!isset($order->membership_level->name))
|
343 |
-
$order->membership_level->name = "";
|
344 |
-
|
345 |
-
//to store our request
|
346 |
-
$request = new stdClass();
|
347 |
-
|
348 |
-
//authorize and capture
|
349 |
-
$ccAuthService = new stdClass();
|
350 |
-
$ccAuthService->run = "true";
|
351 |
-
$request->ccAuthService = $ccAuthService;
|
352 |
-
|
353 |
-
$ccCaptureService = new stdClass();
|
354 |
-
$ccCaptureService->run = "true";
|
355 |
-
$request->ccCaptureService = $ccCaptureService;
|
356 |
-
|
357 |
-
//merchant id and order code
|
358 |
-
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
359 |
-
$request->merchantReferenceCode = $order->code;
|
360 |
-
|
361 |
-
//bill to
|
362 |
-
$billTo = new stdClass();
|
363 |
-
$billTo->firstName = $order->FirstName;
|
364 |
-
$billTo->lastName = $order->LastName;
|
365 |
-
$billTo->street1 = $address;
|
366 |
-
$billTo->city = $order->billing->city;
|
367 |
-
$billTo->state = $order->billing->state;
|
368 |
-
$billTo->postalCode = $order->billing->zip;
|
369 |
-
$billTo->country = $order->billing->country;
|
370 |
-
$billTo->email = $order->Email;
|
371 |
-
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
372 |
-
$request->billTo = $billTo;
|
373 |
-
|
374 |
-
//card
|
375 |
-
$card = new stdClass();
|
376 |
-
$card->cardType = $this->getCardType($order->cardtype);
|
377 |
-
$card->accountNumber = $order->accountnumber;
|
378 |
-
$card->expirationMonth = $order->expirationmonth;
|
379 |
-
$card->expirationYear = $order->expirationyear;
|
380 |
-
$card->cvNumber = $order->CVV2;
|
381 |
-
$request->card = $card;
|
382 |
-
|
383 |
-
//currency
|
384 |
-
$purchaseTotals = new stdClass();
|
385 |
-
$purchaseTotals->currency = pmpro_getOption("currency");
|
386 |
-
$request->purchaseTotals = $purchaseTotals;
|
387 |
-
|
388 |
-
//item/price
|
389 |
-
$item0 = new stdClass();
|
390 |
-
$item0->unitPrice = $amount;
|
391 |
-
$item0->quantity = "1";
|
392 |
-
$item0->productName = $order->membership_level->name . " Membership";
|
393 |
-
$item0->productSKU = $order->membership_level->id;
|
394 |
-
$item0->id = $order->membership_id;
|
395 |
-
$request->item = array($item0);
|
396 |
-
|
397 |
-
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>pmpro_getOption("cybersource_merchantid"), "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
398 |
-
$reply = $soapClient->runTransaction($request);
|
399 |
-
|
400 |
-
if($reply->reasonCode == "100")
|
401 |
-
{
|
402 |
-
//success
|
403 |
-
$order->payment_transaction_id = $reply->requestID;
|
404 |
-
$order->updateStatus("success");
|
405 |
-
return true;
|
406 |
-
}
|
407 |
-
else
|
408 |
-
{
|
409 |
-
//error
|
410 |
-
$order->errorcode = $reply->reasonCode;
|
411 |
-
$order->error = $this->getErrorFromCode($reply->reasonCode);
|
412 |
-
$order->shorterror = $this->getErrorFromCode($reply->reasonCode);
|
413 |
-
return false;
|
414 |
-
}
|
415 |
-
}
|
416 |
-
|
417 |
-
function subscribe(&$order)
|
418 |
-
{
|
419 |
-
//create a code for the order
|
420 |
-
if(empty($order->code))
|
421 |
-
$order->code = $order->getRandomCode();
|
422 |
-
|
423 |
-
//filter order before subscription. use with care.
|
424 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
425 |
-
|
426 |
-
//get wsdl
|
427 |
-
$wsdl_url = $this->getWSDL($order);
|
428 |
-
|
429 |
-
//to store our request
|
430 |
-
$request = new stdClass();
|
431 |
-
|
432 |
-
//set service type
|
433 |
-
$paySubscriptionCreateService = new stdClass();
|
434 |
-
$paySubscriptionCreateService->run = 'true';
|
435 |
-
$paySubscriptionCreateService->disableAutoAuth = 'true'; //we do our own auth check
|
436 |
-
$request->paySubscriptionCreateService = $paySubscriptionCreateService;
|
437 |
-
|
438 |
-
//merchant id and order code
|
439 |
-
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
440 |
-
$request->merchantReferenceCode = $order->code;
|
441 |
-
|
442 |
-
/*
|
443 |
-
setup billing amount/etc
|
444 |
-
*/
|
445 |
-
//figure out the amounts
|
446 |
-
$amount = $order->PaymentAmount;
|
447 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
448 |
-
$order->subtotal = $amount;
|
449 |
-
$amount = round((float)$amount + (float)$amount_tax, 2);
|
450 |
-
|
451 |
-
/*
|
452 |
-
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
453 |
-
since we are doing the first payment as a separate transaction.
|
454 |
-
The second part is the actual "trial" set by the admin.
|
455 |
-
*/
|
456 |
-
//figure out the trial length (first payment handled by initial charge)
|
457 |
-
if($order->BillingPeriod == "Year")
|
458 |
-
$trial_period_days = $order->BillingFrequency * 365; //annual
|
459 |
-
elseif($order->BillingPeriod == "Day")
|
460 |
-
$trial_period_days = $order->BillingFrequency * 1; //daily
|
461 |
-
elseif($order->BillingPeriod == "Week")
|
462 |
-
$trial_period_days = $order->BillingFrequency * 7; //weekly
|
463 |
-
else
|
464 |
-
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
465 |
-
|
466 |
-
//convert to a profile start date
|
467 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day", current_time("timestamp"))) . "T0:0:0";
|
468 |
-
|
469 |
-
//filter the start date
|
470 |
-
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
471 |
-
|
472 |
-
//convert back to days
|
473 |
-
$trial_period_days = ceil(abs(strtotime(date("Y-m-d"), current_time('timestamp')) - strtotime($order->ProfileStartDate, current_time("timestamp"))) / 86400);
|
474 |
-
|
475 |
-
//now add the actual trial set by the site
|
476 |
-
if(!empty($order->TrialBillingCycles))
|
477 |
-
{
|
478 |
-
$trialOccurrences = (int)$order->TrialBillingCycles;
|
479 |
-
if($order->BillingPeriod == "Year")
|
480 |
-
$trial_period_days = $trial_period_days + (365 * $order->BillingFrequency * $trialOccurrences); //annual
|
481 |
-
elseif($order->BillingPeriod == "Day")
|
482 |
-
$trial_period_days = $trial_period_days + (1 * $order->BillingFrequency * $trialOccurrences); //daily
|
483 |
-
elseif($order->BillingPeriod == "Week")
|
484 |
-
$trial_period_days = $trial_period_days + (7 * $order->BillingFrequency * $trialOccurrences); //weekly
|
485 |
-
else
|
486 |
-
$trial_period_days = $trial_period_days + (30 * $order->BillingFrequency * $trialOccurrences); //assume monthly
|
487 |
-
}
|
488 |
-
|
489 |
-
//convert back into a date
|
490 |
-
$profile_start_date = date("Ymd", strtotime("+ " . $trial_period_days . " Days"));
|
491 |
-
|
492 |
-
//figure out the frequency
|
493 |
-
if($order->BillingPeriod == "Year")
|
494 |
-
{
|
495 |
-
$frequency = "annually"; //ignoring BillingFrequency set on level.
|
496 |
-
}
|
497 |
-
elseif($order->BillingPeriod == "Month")
|
498 |
-
{
|
499 |
-
if($order->BillingFrequency == 6)
|
500 |
-
$frequency = "semi annually";
|
501 |
-
elseif($order->BillingFrequency == 3)
|
502 |
-
$frequency = "quarterly";
|
503 |
-
else
|
504 |
-
$frequency = "monthly";
|
505 |
-
}
|
506 |
-
elseif($order->BillingPeriod == "Week")
|
507 |
-
{
|
508 |
-
if($order->BillingFrequency == 4)
|
509 |
-
$frequency = "quad-weekly";
|
510 |
-
elseif($order->BillingFrequency == 2)
|
511 |
-
$frequency = "bi-weekly";
|
512 |
-
else
|
513 |
-
$frequency = "weekly";
|
514 |
-
}
|
515 |
-
elseif($order->BillingPeriod == "Day")
|
516 |
-
{
|
517 |
-
if($order->BillingFrequency == 365)
|
518 |
-
$frequency = "annually";
|
519 |
-
elseif($order->BillingFrequency == 182)
|
520 |
-
$frequency = "semi annually";
|
521 |
-
elseif($order->BillingFrequency == 183)
|
522 |
-
$frequency = "semi annually";
|
523 |
-
elseif($order->BillingFrequency == 90)
|
524 |
-
$frequency = "quaterly";
|
525 |
-
elseif($order->BillingFrequency == 30)
|
526 |
-
$frequency = "monthly";
|
527 |
-
elseif($order->BillingFrequency == 15)
|
528 |
-
$frequency = "semi-monthly";
|
529 |
-
elseif($order->BillingFrequency == 28)
|
530 |
-
$frequency = "quad-weekly";
|
531 |
-
elseif($order->BillingFrequency == 14)
|
532 |
-
$frequency = "bi-weekly";
|
533 |
-
elseif($order->BillingFrequency == 7)
|
534 |
-
$frequency = "weekly";
|
535 |
-
}
|
536 |
-
|
537 |
-
//set subscription info for API
|
538 |
-
$subscription = new stdClass();
|
539 |
-
$subscription->title = $order->membership_level->name;
|
540 |
-
$subscription->paymentMethod = "credit card";
|
541 |
-
$request->subscription = $subscription;
|
542 |
-
|
543 |
-
//recurring info
|
544 |
-
$recurringSubscriptionInfo = new stdClass();
|
545 |
-
$recurringSubscriptionInfo->amount = number_format($amount, 2);
|
546 |
-
$recurringSubscriptionInfo->startDate = $profile_start_date;
|
547 |
-
$recurringSubscriptionInfo->frequency = $frequency;
|
548 |
-
if(!empty($order->TotalBillingCycles))
|
549 |
-
$recurringSubscriptionInfo->numberOfPayments = $order->TotalBillingCycles;
|
550 |
-
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
551 |
-
|
552 |
-
//combine address
|
553 |
-
$address = $order->Address1;
|
554 |
-
if(!empty($order->Address2))
|
555 |
-
$address .= "\n" . $order->Address2;
|
556 |
-
|
557 |
-
//bill to
|
558 |
-
$billTo = new stdClass();
|
559 |
-
$billTo->firstName = $order->FirstName;
|
560 |
-
$billTo->lastName = $order->LastName;
|
561 |
-
$billTo->street1 = $address;
|
562 |
-
$billTo->city = $order->billing->city;
|
563 |
-
$billTo->state = $order->billing->state;
|
564 |
-
$billTo->postalCode = $order->billing->zip;
|
565 |
-
$billTo->country = $order->billing->country;
|
566 |
-
$billTo->email = $order->Email;
|
567 |
-
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
568 |
-
$request->billTo = $billTo;
|
569 |
-
|
570 |
-
//card
|
571 |
-
$card = new stdClass();
|
572 |
-
$card->cardType = $this->getCardType($order->cardtype);
|
573 |
-
$card->accountNumber = $order->accountnumber;
|
574 |
-
$card->expirationMonth = $order->expirationmonth;
|
575 |
-
$card->expirationYear = $order->expirationyear;
|
576 |
-
$card->cvNumber = $order->CVV2;
|
577 |
-
$request->card = $card;
|
578 |
-
|
579 |
-
//currency
|
580 |
-
$purchaseTotals = new stdClass();
|
581 |
-
$purchaseTotals->currency = pmpro_getOption("currency");
|
582 |
-
$request->purchaseTotals = $purchaseTotals;
|
583 |
-
|
584 |
-
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>pmpro_getOption("cybersource_merchantid"), "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
585 |
-
$reply = $soapClient->runTransaction($request);
|
586 |
-
|
587 |
-
if($reply->reasonCode == "100")
|
588 |
-
{
|
589 |
-
//success
|
590 |
-
$order->subscription_transaction_id = $reply->requestID;
|
591 |
-
$order->status = "success";
|
592 |
-
return true;
|
593 |
-
}
|
594 |
-
else
|
595 |
-
{
|
596 |
-
//error
|
597 |
-
$order->status = "error";
|
598 |
-
$order->errorcode = $reply->reasonCode;
|
599 |
-
$order->error = $this->getErrorFromCode($reply->reasonCode);
|
600 |
-
$order->shorterror = $this->getErrorFromCode($reply->reasonCode);
|
601 |
-
return false;
|
602 |
-
}
|
603 |
-
}
|
604 |
-
|
605 |
-
function update(&$order)
|
606 |
-
{
|
607 |
-
//get wsdl
|
608 |
-
$wsdl_url = $this->getWSDL($order);
|
609 |
-
|
610 |
-
//to store our request
|
611 |
-
$request = new stdClass();
|
612 |
-
|
613 |
-
//set service type
|
614 |
-
$paySubscriptionUpdateService = new stdClass();
|
615 |
-
$paySubscriptionUpdateService ->run = "true";
|
616 |
-
$request->paySubscriptionUpdateService = $paySubscriptionUpdateService ;
|
617 |
-
|
618 |
-
//merchant id and order code
|
619 |
-
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
620 |
-
$request->merchantReferenceCode = $order->code;
|
621 |
-
|
622 |
-
//set subscription info for API
|
623 |
-
$recurringSubscriptionInfo = new stdClass();
|
624 |
-
$recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id;
|
625 |
-
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
626 |
-
|
627 |
-
//combine address
|
628 |
-
$address = $order->Address1;
|
629 |
-
if(!empty($order->Address2))
|
630 |
-
$address .= "\n" . $order->Address2;
|
631 |
-
|
632 |
-
//bill to
|
633 |
-
$billTo = new stdClass();
|
634 |
-
$billTo->firstName = $order->FirstName;
|
635 |
-
$billTo->lastName = $order->LastName;
|
636 |
-
$billTo->street1 = $address;
|
637 |
-
$billTo->city = $order->billing->city;
|
638 |
-
$billTo->state = $order->billing->state;
|
639 |
-
$billTo->postalCode = $order->billing->zip;
|
640 |
-
$billTo->country = $order->billing->country;
|
641 |
-
$billTo->email = $order->Email;
|
642 |
-
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
643 |
-
$request->billTo = $billTo;
|
644 |
-
|
645 |
-
//card
|
646 |
-
$card = new stdClass();
|
647 |
-
$card->cardType = $this->getCardType($order->cardtype);
|
648 |
-
$card->accountNumber = $order->accountnumber;
|
649 |
-
$card->expirationMonth = $order->expirationmonth;
|
650 |
-
$card->expirationYear = $order->expirationyear;
|
651 |
-
$card->cvNumber = $order->CVV2;
|
652 |
-
$request->card = $card;
|
653 |
-
|
654 |
-
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>pmpro_getOption("cybersource_merchantid"), "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
655 |
-
$reply = $soapClient->runTransaction($request);
|
656 |
-
|
657 |
-
if($reply->reasonCode == "100")
|
658 |
-
{
|
659 |
-
//success
|
660 |
-
return true;
|
661 |
-
}
|
662 |
-
else
|
663 |
-
{
|
664 |
-
//error
|
665 |
-
$order->errorcode = $reply->reasonCode;
|
666 |
-
$order->error = $this->getErrorFromCode($reply->reasonCode);
|
667 |
-
$order->shorterror = $this->getErrorFromCode($reply->reasonCode);
|
668 |
-
return false;
|
669 |
-
}
|
670 |
-
}
|
671 |
-
|
672 |
-
function cancel(&$order)
|
673 |
-
{
|
674 |
-
//require a subscription id
|
675 |
-
if(empty($order->subscription_transaction_id))
|
676 |
-
return false;
|
677 |
-
|
678 |
-
//get wsdl
|
679 |
-
$wsdl_url = $this->getWSDL($order);
|
680 |
-
|
681 |
-
//to store our request
|
682 |
-
$request = new stdClass();
|
683 |
-
|
684 |
-
//which service?
|
685 |
-
$paySubscriptionDeleteService = new stdClass();
|
686 |
-
$paySubscriptionDeleteService ->run = "true";
|
687 |
-
$request->paySubscriptionDeleteService = $paySubscriptionDeleteService ;
|
688 |
-
|
689 |
-
//which order
|
690 |
-
$recurringSubscriptionInfo = new stdClass();
|
691 |
-
$recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id;
|
692 |
-
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
693 |
-
|
694 |
-
//merchant id and order code
|
695 |
-
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
696 |
-
$request->merchantReferenceCode = $order->code;
|
697 |
-
|
698 |
-
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>pmpro_getOption("cybersource_merchantid"), "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
699 |
-
$reply = $soapClient->runTransaction($request);
|
700 |
-
|
701 |
-
if($reply->reasonCode == "100")
|
702 |
-
{
|
703 |
-
//success
|
704 |
-
$order->updateStatus("cancelled");
|
705 |
-
return true;
|
706 |
-
}
|
707 |
-
else
|
708 |
-
{
|
709 |
-
//error
|
710 |
-
$order->errorcode = $reply->reasonCode;
|
711 |
-
$order->error = $this->getErrorFromCode($reply->reasonCode);
|
712 |
-
$order->shorterror = $this->getErrorFromCode($reply->reasonCode);
|
713 |
-
return false;
|
714 |
-
}
|
715 |
-
}
|
716 |
-
|
717 |
-
function getErrorFromCode($code)
|
718 |
-
{
|
719 |
-
$error_messages = array(
|
720 |
-
"100" => "Successful transaction.",
|
721 |
-
"101" => "The request is missing one or more required fields.",
|
722 |
-
"102" => "One or more fields in the request contains invalid data. Check that your billing address is valid.",
|
723 |
-
"104" => "Duplicate order detected.",
|
724 |
-
"110" => "Only partial amount was approved.",
|
725 |
-
"150" => "Error: General system failure.",
|
726 |
-
"151" => "Error: The request was received but there was a server timeout.",
|
727 |
-
"152" => "Error: The request was received, but a service did not finish running in time. ",
|
728 |
-
"200" => "Address Verification Service (AVS) failure.",
|
729 |
-
"201" => "Authorization failed.",
|
730 |
-
"202" => "Expired card or invalid expiration date.",
|
731 |
-
"203" => "The card was declined.",
|
732 |
-
"204" => "Insufficient funds in the account.",
|
733 |
-
"205" => "Stolen or lost card.",
|
734 |
-
"207" => "Issuing bank unavailable.",
|
735 |
-
"208" => "Inactive card or card not authorized for card-not-present transactions.",
|
736 |
-
"209" => "American Express Card Identification Digits (CID) did not match.",
|
737 |
-
"210" => "The card has reached the credit limit. ",
|
738 |
-
"211" => "Invalid card verification number.",
|
739 |
-
"221" => "The customer matched an entry on the processors negative file. ",
|
740 |
-
"230" => "Card verification (CV) check failed.",
|
741 |
-
"231" => "Invalid account number.",
|
742 |
-
"232" => "The card type is not accepted by the payment processor.",
|
743 |
-
"233" => "General decline by the processor.",
|
744 |
-
"234" => "There is a problem with your CyberSource merchant configuration.",
|
745 |
-
"235" => "The requested amount exceeds the originally authorized amount.",
|
746 |
-
"236" => "Processor failure.",
|
747 |
-
"237" => "The authorization has already been reversed.",
|
748 |
-
"238" => "The authorization has already been captured.",
|
749 |
-
"239" => "The requested transaction amount must match the previous transaction amount.",
|
750 |
-
"240" => "The card type sent is invalid or does not correlate with the credit card number.",
|
751 |
-
"241" => "The referenced request id is invalid for all follow-on transactions.",
|
752 |
-
"242" => "The request ID is invalid.",
|
753 |
-
"243" => "The transaction has already been settled or reversed.",
|
754 |
-
"246" => "The capture or credit is not voidable because the capture or credit information has already been submitted to your processor. Or, you requested a void for a type of transaction that cannot be voided.",
|
755 |
-
"247" => "You requested a credit for a capture that was previously voided.",
|
756 |
-
"250" => "Error: The request was received, but there was a timeout at the payment processor.",
|
757 |
-
"520" => "Smart Authorization failed."
|
758 |
-
);
|
759 |
-
|
760 |
-
if(isset($error_messages[$code]))
|
761 |
-
return $error_messages[$code];
|
762 |
-
else
|
763 |
-
return "Unknown error.";
|
764 |
-
}
|
765 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/gateways/class.pmprogateway_payflowpro.php
CHANGED
@@ -16,27 +16,34 @@
|
|
16 |
$authorization_id = $this->authorize($order);
|
17 |
if($authorization_id)
|
18 |
{
|
19 |
-
$this->void($order, $authorization_id);
|
20 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
21 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
22 |
return $this->subscribe($order);
|
23 |
}
|
24 |
else
|
25 |
{
|
26 |
if(empty($order->error))
|
27 |
-
$order->error =
|
28 |
return false;
|
29 |
}
|
30 |
}
|
31 |
else
|
32 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
//charge first payment
|
34 |
if($this->charge($order))
|
35 |
{
|
36 |
//setup recurring billing
|
37 |
if(pmpro_isLevelRecurring($order->membership_level))
|
38 |
{
|
39 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
40 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
41 |
if($this->subscribe($order))
|
42 |
{
|
@@ -47,14 +54,14 @@
|
|
47 |
if($this->void($order, $order->payment_transaction_id))
|
48 |
{
|
49 |
if(empty($order->error))
|
50 |
-
$order->error =
|
51 |
}
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
-
$order->error =
|
56 |
|
57 |
-
$order->error .= "
|
58 |
}
|
59 |
|
60 |
return false;
|
@@ -91,7 +98,7 @@
|
|
91 |
else
|
92 |
$cardtype = $order->cardtype;
|
93 |
|
94 |
-
if(!empty($
|
95 |
$nvpStr .= "&ACCT=" . $order->accountnumber . "&EXPDATE=" . $order->expirationmonth . substr($order->expirationyear, 2, 2) . "&CVV2=" . $order->CVV2;
|
96 |
|
97 |
//billing address, etc
|
@@ -109,7 +116,7 @@
|
|
109 |
$this->nvpStr = $nvpStr;
|
110 |
|
111 |
$this->httpParsedResponseAr = $this->PPHttpPost('A', $nvpStr);
|
112 |
-
|
113 |
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
114 |
$order->authorization_id = $this->httpParsedResponseAr['PNREF'];
|
115 |
$order->updateStatus("authorized");
|
@@ -131,8 +138,8 @@
|
|
131 |
//paypal profile stuff
|
132 |
$nvpStr="&ORIGID=" . $authorization_id;
|
133 |
|
134 |
-
$this->httpParsedResponseAr = $this->PPHttpPost('
|
135 |
-
|
136 |
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
137 |
return true;
|
138 |
} else {
|
@@ -159,7 +166,7 @@
|
|
159 |
|
160 |
//paypal profile stuff
|
161 |
$nvpStr = "";
|
162 |
-
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax
|
163 |
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
164 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
165 |
|
@@ -179,7 +186,7 @@
|
|
179 |
$nvpStr .= "&CITY=" . $order->billing->city . "&STATE=" . $order->billing->state . "&BILLTOCOUNTRY=" . $order->billing->country . "&ZIP=" . $order->billing->zip . "&PHONENUM=" . $order->billing->phone;
|
180 |
}
|
181 |
|
182 |
-
$this->nvpStr = $nvpStr;
|
183 |
$this->httpParsedResponseAr = $this->PPHttpPost('S', $nvpStr);
|
184 |
|
185 |
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
@@ -197,160 +204,14 @@
|
|
197 |
|
198 |
function subscribe(&$order)
|
199 |
{
|
200 |
-
|
201 |
-
|
202 |
-
if(empty($order->code))
|
203 |
-
$order->code = $order->getRandomCode();
|
204 |
-
|
205 |
-
//filter order before subscription. use with care.
|
206 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
207 |
-
|
208 |
-
//taxes on the amount
|
209 |
-
$amount = $order->PaymentAmount;
|
210 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
211 |
-
$amount = round((float)$amount + (float)$amount_tax, 2);
|
212 |
-
|
213 |
-
if($order->BillingPeriod == "Week")
|
214 |
-
$payperiod = "WEEK";
|
215 |
-
elseif($order->BillingPeriod == "Month")
|
216 |
-
$payperiod = "MONT";
|
217 |
-
elseif($order->BillingPeriod == "Year")
|
218 |
-
$payperiod = "YEAR";
|
219 |
-
|
220 |
-
//paypal profile stuff
|
221 |
-
$nvpStr = "&ACTION=A";
|
222 |
-
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCY=" . $pmpro_currency;
|
223 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
224 |
-
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
225 |
-
|
226 |
-
$nvpStr .= "&PROFILENAME=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
|
227 |
-
|
228 |
-
$nvpStr .= "&PAYPERIOD=" . $payperiod;
|
229 |
-
|
230 |
-
$nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR']; // . "&INVNUM=" . $order->code;
|
231 |
-
|
232 |
-
//if billing cycles are defined
|
233 |
-
if(!empty($order->TotalBillingCycles))
|
234 |
-
$nvpStr .= "&TERM=" . $order->TotalBillingCycles;
|
235 |
-
else
|
236 |
-
$nvpStr .= "&TERM=0";
|
237 |
-
|
238 |
-
if(!empty($order->accountnumber))
|
239 |
-
$nvpStr .= "&ACCT=" . $order->accountnumber . "&EXPDATE=" . $order->expirationmonth . substr($order->expirationyear, 2, 2) . "&CVV2=" . $order->CVV2;
|
240 |
-
|
241 |
-
/*
|
242 |
-
Let's figure out the start date. There are two parts.
|
243 |
-
1. We need to add the billing period to the start date to account for the initial payment.
|
244 |
-
2. We can allow for free trials by further delaying the start date of the subscription.
|
245 |
-
*/
|
246 |
-
if($order->BillingPeriod == "Year")
|
247 |
-
$trial_period_days = $order->BillingFrequency * 365; //annual
|
248 |
-
elseif($order->BillingPeriod == "Day")
|
249 |
-
$trial_period_days = $order->BillingFrequency * 1; //daily
|
250 |
-
elseif($order->BillingPeriod == "Week")
|
251 |
-
$trial_period_days = $order->BillingFrequency * 7; //weekly
|
252 |
-
else
|
253 |
-
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
254 |
-
|
255 |
-
//convert to a profile start date
|
256 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day", current_time("timestamp"))) . "T0:0:0";
|
257 |
-
|
258 |
-
//filter the start date
|
259 |
-
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
260 |
-
|
261 |
-
//convert back to days
|
262 |
-
$trial_period_days = ceil(abs(strtotime(date("Y-m-d"), current_time('timestamp')) - strtotime($order->ProfileStartDate, current_time("timestamp"))) / 86400);
|
263 |
-
|
264 |
-
//now add the actual trial set by the site
|
265 |
-
if(!empty($order->TrialBillingCycles))
|
266 |
-
{
|
267 |
-
$trialOccurrences = (int)$order->TrialBillingCycles;
|
268 |
-
if($order->BillingPeriod == "Year")
|
269 |
-
$trial_period_days = $trial_period_days + (365 * $order->BillingFrequency * $trialOccurrences); //annual
|
270 |
-
elseif($order->BillingPeriod == "Day")
|
271 |
-
$trial_period_days = $trial_period_days + (1 * $order->BillingFrequency * $trialOccurrences); //daily
|
272 |
-
elseif($order->BillingPeriod == "Week")
|
273 |
-
$trial_period_days = $trial_period_days + (7 * $order->BillingFrequency * $trialOccurrences); //weekly
|
274 |
-
else
|
275 |
-
$trial_period_days = $trial_period_days + (30 * $order->BillingFrequency * $trialOccurrences); //assume monthly
|
276 |
-
}
|
277 |
-
|
278 |
-
//convert back into a date
|
279 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day", current_time("timestamp"))) . "T0:0:0";
|
280 |
-
|
281 |
-
//start date
|
282 |
-
$nvpStr .= "&START=" . date("mdY", strtotime($order->ProfileStartDate));
|
283 |
-
|
284 |
-
if(!empty($order->accountnumber))
|
285 |
-
$nvpStr .= "&ACCT=" . $order->accountnumber . "&EXPDATE=" . $order->expirationmonth . substr($order->expirationyear, 2, 2) . "&CVV2=" . $order->CVV2;
|
286 |
-
|
287 |
-
//billing address, etc
|
288 |
-
if($order->Address1)
|
289 |
-
{
|
290 |
-
$nvpStr .= "&EMAIL=" . $order->Email . "&FIRSTNAME=" . $order->FirstName . "&LASTNAME=" . $order->LastName . "&STREET=" . $order->Address1;
|
291 |
-
|
292 |
-
if($order->Address2)
|
293 |
-
$nvpStr .= " " . $order->Address2;
|
294 |
-
|
295 |
-
$nvpStr .= "&CITY=" . $order->billing->city . "&STATE=" . $order->billing->state . "&BILLTOCOUNTRY=" . $order->billing->country . "&ZIP=" . $order->billing->zip . "&PHONENUM=" . $order->billing->phone;
|
296 |
-
}
|
297 |
-
|
298 |
-
$this->nvpStr = $nvpStr;
|
299 |
-
$this->httpParsedResponseAr = $this->PPHttpPost('R', $nvpStr);
|
300 |
-
|
301 |
-
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
302 |
-
$order->subscription_transaction_id = $this->httpParsedResponseAr['PROFILEID'];
|
303 |
-
$order->status = "success";
|
304 |
-
return true;
|
305 |
-
} else {
|
306 |
-
$order->status = "error";
|
307 |
-
$order->errorcode = $this->httpParsedResponseAr['RESULT'];
|
308 |
-
$order->error = urldecode($this->httpParsedResponseAr['RESPMSG']);
|
309 |
-
$order->shorterror = urldecode($this->httpParsedResponseAr['RESPMSG']);
|
310 |
-
return false;
|
311 |
-
}
|
312 |
}
|
313 |
|
314 |
function update(&$order)
|
315 |
{
|
316 |
-
$order->
|
317 |
-
|
318 |
-
//paypal profile stuff
|
319 |
-
$nvpStr = "&ORIGPROFILEID=" . $order->subscription_transaction_id . "&ACTION=M";
|
320 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
321 |
-
|
322 |
-
$nvpStr .= "&PROFILENAME=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
|
323 |
-
|
324 |
-
$nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR']; // . "&INVNUM=" . $order->code;
|
325 |
-
|
326 |
-
if(!empty($order->accountnumber))
|
327 |
-
$nvpStr .= "&ACCT=" . $order->accountnumber . "&EXPDATE=" . $order->expirationmonth . substr($order->expirationyear, 2, 2) . "&CVV2=" . $order->CVV2;
|
328 |
-
|
329 |
-
//billing address, etc
|
330 |
-
if($order->Address1)
|
331 |
-
{
|
332 |
-
$nvpStr .= "&EMAIL=" . $order->Email . "&FIRSTNAME=" . $order->FirstName . "&LASTNAME=" . $order->LastName . "&STREET=" . $order->Address1;
|
333 |
-
|
334 |
-
if($order->Address2)
|
335 |
-
$nvpStr .= " " . $order->Address2;
|
336 |
-
|
337 |
-
$nvpStr .= "&CITY=" . $order->billing->city . "&STATE=" . $order->billing->state . "&BILLTOCOUNTRY=" . $order->billing->country . "&ZIP=" . $order->billing->zip . "&PHONENUM=" . $order->billing->phone;
|
338 |
-
}
|
339 |
-
|
340 |
-
$this->nvpStr = $nvpStr;
|
341 |
-
$this->httpParsedResponseAr = $this->PPHttpPost('R', $nvpStr);
|
342 |
-
|
343 |
-
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
344 |
-
$order->subscription_transaction_id = $this->httpParsedResponseAr['PROFILEID'];
|
345 |
-
$order->updateStatus("success");
|
346 |
-
return true;
|
347 |
-
} else {
|
348 |
-
$order->status = "error";
|
349 |
-
$order->errorcode = $this->httpParsedResponseAr['RESULT'];
|
350 |
-
$order->error = urldecode($this->httpParsedResponseAr['RESPMSG']);
|
351 |
-
$order->shorterror = urldecode($this->httpParsedResponseAr['RESPMSG']);
|
352 |
-
return false;
|
353 |
-
}
|
354 |
}
|
355 |
|
356 |
function cancel(&$order)
|
@@ -359,25 +220,9 @@
|
|
359 |
if(empty($order->subscription_transaction_id))
|
360 |
return false;
|
361 |
|
362 |
-
//
|
363 |
-
$
|
364 |
-
|
365 |
-
$this->nvpStr = $nvpStr;
|
366 |
-
$this->httpParsedResponseAr = $this->PPHttpPost('R', $nvpStr);
|
367 |
-
|
368 |
-
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"]))
|
369 |
-
{
|
370 |
-
$order->updateStatus("cancelled");
|
371 |
-
return true;
|
372 |
-
}
|
373 |
-
else
|
374 |
-
{
|
375 |
-
$order->status = "error";
|
376 |
-
$order->errorcode = $this->httpParsedResponseAr['RESULT'];
|
377 |
-
$order->error = urldecode($this->httpParsedResponseAr['RESPMSG']);
|
378 |
-
$order->shorterror = urldecode($this->httpParsedResponseAr['RESPMSG']);
|
379 |
-
return false;
|
380 |
-
}
|
381 |
}
|
382 |
|
383 |
/**
|
@@ -446,3 +291,4 @@
|
|
446 |
return $httpParsedResponseAr;
|
447 |
}
|
448 |
}
|
|
16 |
$authorization_id = $this->authorize($order);
|
17 |
if($authorization_id)
|
18 |
{
|
19 |
+
$this->void($order, $authorization_id);
|
20 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
21 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
22 |
return $this->subscribe($order);
|
23 |
}
|
24 |
else
|
25 |
{
|
26 |
if(empty($order->error))
|
27 |
+
$order->error = "Unknown error: Authorization failed.";
|
28 |
return false;
|
29 |
}
|
30 |
}
|
31 |
else
|
32 |
+
{
|
33 |
+
//let's return an error for recurring levels for now
|
34 |
+
if(pmpro_isLevelRecurring($order->membership_level))
|
35 |
+
{
|
36 |
+
$order->error = "Recurring payments with Payflow is not supported by Paid Memberships Pro at this time.";
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
//charge first payment
|
41 |
if($this->charge($order))
|
42 |
{
|
43 |
//setup recurring billing
|
44 |
if(pmpro_isLevelRecurring($order->membership_level))
|
45 |
{
|
46 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
47 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
48 |
if($this->subscribe($order))
|
49 |
{
|
54 |
if($this->void($order, $order->payment_transaction_id))
|
55 |
{
|
56 |
if(empty($order->error))
|
57 |
+
$order->error = "Unknown error: Payment failed.";
|
58 |
}
|
59 |
else
|
60 |
{
|
61 |
if(empty($order->error))
|
62 |
+
$order->error = "Unknown error: Payment failed.";
|
63 |
|
64 |
+
$order->error .= " A partial payment was made that we could not refund. Please contact the site owner immediately to correct this.";
|
65 |
}
|
66 |
|
67 |
return false;
|
98 |
else
|
99 |
$cardtype = $order->cardtype;
|
100 |
|
101 |
+
if(!empty($accountnumber))
|
102 |
$nvpStr .= "&ACCT=" . $order->accountnumber . "&EXPDATE=" . $order->expirationmonth . substr($order->expirationyear, 2, 2) . "&CVV2=" . $order->CVV2;
|
103 |
|
104 |
//billing address, etc
|
116 |
$this->nvpStr = $nvpStr;
|
117 |
|
118 |
$this->httpParsedResponseAr = $this->PPHttpPost('A', $nvpStr);
|
119 |
+
|
120 |
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
121 |
$order->authorization_id = $this->httpParsedResponseAr['PNREF'];
|
122 |
$order->updateStatus("authorized");
|
138 |
//paypal profile stuff
|
139 |
$nvpStr="&ORIGID=" . $authorization_id;
|
140 |
|
141 |
+
$this->httpParsedResponseAr = $this->PPHttpPost('C', $nvpStr);
|
142 |
+
|
143 |
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
144 |
return true;
|
145 |
} else {
|
166 |
|
167 |
//paypal profile stuff
|
168 |
$nvpStr = "";
|
169 |
+
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax;
|
170 |
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
171 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
172 |
|
186 |
$nvpStr .= "&CITY=" . $order->billing->city . "&STATE=" . $order->billing->state . "&BILLTOCOUNTRY=" . $order->billing->country . "&ZIP=" . $order->billing->zip . "&PHONENUM=" . $order->billing->phone;
|
187 |
}
|
188 |
|
189 |
+
$this->nvpStr = $nvpStr;
|
190 |
$this->httpParsedResponseAr = $this->PPHttpPost('S', $nvpStr);
|
191 |
|
192 |
if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
|
204 |
|
205 |
function subscribe(&$order)
|
206 |
{
|
207 |
+
$order->error = "Recurring subscriptions with Payflow are not currently supported by Paid Memberships Pro";
|
208 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
}
|
210 |
|
211 |
function update(&$order)
|
212 |
{
|
213 |
+
$order->error = "Updated billing with Payflow is not currently supported by Paid Memberships Pro";
|
214 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
}
|
216 |
|
217 |
function cancel(&$order)
|
220 |
if(empty($order->subscription_transaction_id))
|
221 |
return false;
|
222 |
|
223 |
+
//simulate a successful cancel
|
224 |
+
$order->updateStatus("cancelled");
|
225 |
+
return true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
}
|
227 |
|
228 |
/**
|
291 |
return $httpParsedResponseAr;
|
292 |
}
|
293 |
}
|
294 |
+
?>
|
classes/gateways/class.pmprogateway_paypal.php
CHANGED
@@ -17,14 +17,14 @@
|
|
17 |
if($authorization_id)
|
18 |
{
|
19 |
$this->void($order, $authorization_id);
|
20 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
21 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
22 |
return $this->subscribe($order);
|
23 |
}
|
24 |
else
|
25 |
{
|
26 |
if(empty($order->error))
|
27 |
-
$order->error =
|
28 |
return false;
|
29 |
}
|
30 |
}
|
@@ -36,7 +36,7 @@
|
|
36 |
//setup recurring billing
|
37 |
if(pmpro_isLevelRecurring($order->membership_level))
|
38 |
{
|
39 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
40 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
41 |
if($this->subscribe($order))
|
42 |
{
|
@@ -47,14 +47,14 @@
|
|
47 |
if($this->refund($order, $order->payment_transaction_id))
|
48 |
{
|
49 |
if(empty($order->error))
|
50 |
-
$order->error =
|
51 |
}
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
$order->error = "Unknown error: Payment failed.";
|
56 |
|
57 |
-
$order->error .= "
|
58 |
}
|
59 |
|
60 |
return false;
|
@@ -239,12 +239,10 @@
|
|
239 |
if(empty($order->code))
|
240 |
$order->code = $order->getRandomCode();
|
241 |
|
242 |
-
//filter order before subscription. use with care.
|
243 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
244 |
-
|
245 |
//taxes on the amount
|
246 |
$amount = $order->PaymentAmount;
|
247 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
|
|
248 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
249 |
|
250 |
//paypal profile stuff
|
@@ -369,23 +367,21 @@
|
|
369 |
{
|
370 |
//paypal profile stuff
|
371 |
$nvpStr = "";
|
372 |
-
$nvpStr .= "&PROFILEID=" .
|
373 |
|
374 |
$this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
|
375 |
|
376 |
-
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]))
|
377 |
-
{
|
378 |
$order->updateStatus("cancelled");
|
379 |
-
return true;
|
380 |
-
|
381 |
-
else
|
382 |
-
{
|
383 |
$order->status = "error";
|
384 |
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
385 |
-
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0'])
|
386 |
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
387 |
-
|
388 |
-
|
389 |
}
|
390 |
}
|
391 |
|
@@ -453,4 +449,5 @@
|
|
453 |
|
454 |
return $httpParsedResponseAr;
|
455 |
}
|
456 |
-
}
|
|
17 |
if($authorization_id)
|
18 |
{
|
19 |
$this->void($order, $authorization_id);
|
20 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
21 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
22 |
return $this->subscribe($order);
|
23 |
}
|
24 |
else
|
25 |
{
|
26 |
if(empty($order->error))
|
27 |
+
$order->error = "Unknown error: Authorization failed.";
|
28 |
return false;
|
29 |
}
|
30 |
}
|
36 |
//setup recurring billing
|
37 |
if(pmpro_isLevelRecurring($order->membership_level))
|
38 |
{
|
39 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
40 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
41 |
if($this->subscribe($order))
|
42 |
{
|
47 |
if($this->refund($order, $order->payment_transaction_id))
|
48 |
{
|
49 |
if(empty($order->error))
|
50 |
+
$order->error = "Unknown error: Payment failed.";
|
51 |
}
|
52 |
else
|
53 |
{
|
54 |
if(empty($order->error))
|
55 |
$order->error = "Unknown error: Payment failed.";
|
56 |
|
57 |
+
$order->error .= " A partial payment was made that we could not refund. Please contact the site owner immediately to correct this.";
|
58 |
}
|
59 |
|
60 |
return false;
|
239 |
if(empty($order->code))
|
240 |
$order->code = $order->getRandomCode();
|
241 |
|
|
|
|
|
|
|
242 |
//taxes on the amount
|
243 |
$amount = $order->PaymentAmount;
|
244 |
+
$amount_tax = $order->getTaxForPrice($amount);
|
245 |
+
$order->subtotal = $amount;
|
246 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
247 |
|
248 |
//paypal profile stuff
|
367 |
{
|
368 |
//paypal profile stuff
|
369 |
$nvpStr = "";
|
370 |
+
$nvpStr .= "&PROFILEID=" . $order->subscription_transaction_id . "&ACTION=Cancel&NOTE=User requested cancel.";
|
371 |
|
372 |
$this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
|
373 |
|
374 |
+
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]) || $this->httpParsedResponseAr['L_ERRORCODE0'] == "11556") {
|
|
|
375 |
$order->updateStatus("cancelled");
|
376 |
+
return true;
|
377 |
+
//exit('CreateRecurringPaymentsProfile Completed Successfully: '.print_r($this->httpParsedResponseAr, true));
|
378 |
+
} else {
|
|
|
379 |
$order->status = "error";
|
380 |
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
381 |
+
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
|
382 |
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
383 |
+
return false;
|
384 |
+
//exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
|
385 |
}
|
386 |
}
|
387 |
|
449 |
|
450 |
return $httpParsedResponseAr;
|
451 |
}
|
452 |
+
}
|
453 |
+
?>
|
classes/gateways/class.pmprogateway_paypalexpress.php
CHANGED
@@ -9,10 +9,10 @@
|
|
9 |
}
|
10 |
|
11 |
function process(&$order)
|
12 |
-
{
|
13 |
if(pmpro_isLevelRecurring($order->membership_level))
|
14 |
{
|
15 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
16 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
17 |
return $this->subscribe($order);
|
18 |
}
|
@@ -40,20 +40,17 @@
|
|
40 |
|
41 |
//taxes on the amount
|
42 |
$amount = $order->PaymentAmount;
|
43 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
44 |
$order->subtotal = $amount;
|
45 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
46 |
|
47 |
//paypal profile stuff
|
48 |
$nvpStr = "";
|
49 |
-
$nvpStr .="&AMT=" . $initial_payment . "&CURRENCYCODE=" . $pmpro_currency;
|
50 |
-
|
51 |
-
$nvpStr .= "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
52 |
-
if(!empty($order->BillingFrequency))
|
53 |
-
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLAMT=AddToNextBilling&L_BILLINGTYPE0=RecurringPayments";
|
54 |
$nvpStr .= "&DESC=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
|
55 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
56 |
-
$nvpStr .= "&NOSHIPPING=1&L_BILLINGAGREEMENTDESCRIPTION0=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127)) . "&L_PAYMENTTYPE0=Any";
|
57 |
|
58 |
//if billing cycles are defined
|
59 |
if(!empty($order->TotalBillingCycles))
|
@@ -88,16 +85,7 @@
|
|
88 |
}
|
89 |
|
90 |
$nvpStr .= "&CANCELURL=" . urlencode(pmpro_url("levels"));
|
91 |
-
|
92 |
-
$account_optional = apply_filters('pmpro_paypal_account_optional', true);
|
93 |
-
if ($account_optional)
|
94 |
-
$nvpStr .= '&SOLUTIONTYPE=Sole&LANDINGPAGE=Billing';
|
95 |
-
|
96 |
-
$nvpStr = apply_filters("pmpro_set_express_checkout_nvpstr", $nvpStr, $order);
|
97 |
-
|
98 |
-
///echo str_replace("&", "&<br />", $nvpStr);
|
99 |
-
///exit;
|
100 |
-
|
101 |
$this->httpParsedResponseAr = $this->PPHttpPost('SetExpressCheckout', $nvpStr);
|
102 |
|
103 |
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
|
@@ -178,13 +166,10 @@
|
|
178 |
$nvpStr = "";
|
179 |
if(!empty($order->Token))
|
180 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
181 |
-
$nvpStr .="&AMT=" . $amount . "&CURRENCYCODE=" . $pmpro_currency;
|
182 |
-
/*
|
183 |
if(!empty($amount_tax))
|
184 |
$nvpStr .= "&TAXAMT=" . $amount_tax;
|
185 |
-
|
186 |
-
if(!empty($order->BillingFrequency))
|
187 |
-
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLAMT=AddToNextBilling";
|
188 |
$nvpStr .= "&DESC=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
|
189 |
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
190 |
$nvpStr .= "&NOSHIPPING=1";
|
@@ -193,7 +178,7 @@
|
|
193 |
$order->nvpStr = $nvpStr;
|
194 |
|
195 |
$this->httpParsedResponseAr = $this->PPHttpPost('DoExpressCheckoutPayment', $nvpStr);
|
196 |
-
|
197 |
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
|
198 |
$order->payment_transaction_id = urldecode($this->httpParsedResponseAr['TRANSACTIONID']);
|
199 |
$order->status = "success";
|
@@ -218,10 +203,7 @@
|
|
218 |
|
219 |
if(empty($order->code))
|
220 |
$order->code = $order->getRandomCode();
|
221 |
-
|
222 |
-
//filter order before subscription. use with care.
|
223 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
224 |
-
|
225 |
//taxes on initial amount
|
226 |
$initial_payment = $order->InitialPayment;
|
227 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
@@ -229,8 +211,9 @@
|
|
229 |
|
230 |
//taxes on the amount
|
231 |
$amount = $order->PaymentAmount;
|
232 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
233 |
-
|
|
|
234 |
|
235 |
//paypal profile stuff
|
236 |
$nvpStr = "";
|
@@ -260,10 +243,7 @@
|
|
260 |
$nvpStr .= "&TRIALTOTALBILLINGCYCLES=" . $order->TrialBillingCycles;
|
261 |
|
262 |
$this->nvpStr = $nvpStr;
|
263 |
-
|
264 |
-
///echo str_replace("&", "&<br />", $nvpStr);
|
265 |
-
///exit;
|
266 |
-
|
267 |
$this->httpParsedResponseAr = $this->PPHttpPost('CreateRecurringPaymentsProfile', $nvpStr);
|
268 |
|
269 |
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
|
@@ -289,51 +269,23 @@
|
|
289 |
{
|
290 |
//paypal profile stuff
|
291 |
$nvpStr = "";
|
292 |
-
$nvpStr .= "&PROFILEID=" .
|
293 |
|
294 |
$this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
|
295 |
-
|
296 |
-
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]))
|
297 |
-
{
|
298 |
$order->updateStatus("cancelled");
|
299 |
-
return true;
|
300 |
-
|
301 |
-
else
|
302 |
-
{
|
303 |
$order->status = "error";
|
304 |
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
305 |
-
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0'])
|
306 |
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
307 |
|
308 |
-
return false;
|
309 |
-
}
|
310 |
-
}
|
311 |
-
|
312 |
-
function getSubscriptionStatus(&$order)
|
313 |
-
{
|
314 |
-
if(empty($order->subscription_transaction_id))
|
315 |
return false;
|
316 |
-
|
317 |
-
//paypal profile stuff
|
318 |
-
$nvpStr = "";
|
319 |
-
$nvpStr .= "&PROFILEID=" . urlencode($order->subscription_transaction_id);
|
320 |
-
|
321 |
-
$this->httpParsedResponseAr = $this->PPHttpPost('GetRecurringPaymentsProfileDetails', $nvpStr);
|
322 |
-
|
323 |
-
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]))
|
324 |
-
{
|
325 |
-
return $this->httpParsedResponseAr;
|
326 |
-
}
|
327 |
-
else
|
328 |
-
{
|
329 |
-
$order->status = "error";
|
330 |
-
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
331 |
-
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
|
332 |
-
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
333 |
-
|
334 |
-
return false;
|
335 |
}
|
336 |
-
}
|
337 |
|
338 |
/**
|
339 |
* PAYPAL Function
|
@@ -400,3 +352,4 @@
|
|
400 |
return $httpParsedResponseAr;
|
401 |
}
|
402 |
}
|
|
9 |
}
|
10 |
|
11 |
function process(&$order)
|
12 |
+
{
|
13 |
if(pmpro_isLevelRecurring($order->membership_level))
|
14 |
{
|
15 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
16 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
17 |
return $this->subscribe($order);
|
18 |
}
|
40 |
|
41 |
//taxes on the amount
|
42 |
$amount = $order->PaymentAmount;
|
43 |
+
$amount_tax = $order->getTaxForPrice($amount);
|
44 |
$order->subtotal = $amount;
|
45 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
46 |
|
47 |
//paypal profile stuff
|
48 |
$nvpStr = "";
|
49 |
+
$nvpStr .="&AMT=" . $initial_payment . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
50 |
+
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLAMT=AddToNextBilling";
|
|
|
|
|
|
|
51 |
$nvpStr .= "&DESC=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
|
52 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
53 |
+
$nvpStr .= "&NOSHIPPING=1&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127)) . "&L_PAYMENTTYPE0=Any";
|
54 |
|
55 |
//if billing cycles are defined
|
56 |
if(!empty($order->TotalBillingCycles))
|
85 |
}
|
86 |
|
87 |
$nvpStr .= "&CANCELURL=" . urlencode(pmpro_url("levels"));
|
88 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
$this->httpParsedResponseAr = $this->PPHttpPost('SetExpressCheckout', $nvpStr);
|
90 |
|
91 |
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
|
166 |
$nvpStr = "";
|
167 |
if(!empty($order->Token))
|
168 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
169 |
+
$nvpStr .="&AMT=" . $amount . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
|
|
170 |
if(!empty($amount_tax))
|
171 |
$nvpStr .= "&TAXAMT=" . $amount_tax;
|
172 |
+
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLAMT=AddToNextBilling";
|
|
|
|
|
173 |
$nvpStr .= "&DESC=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
|
174 |
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
|
175 |
$nvpStr .= "&NOSHIPPING=1";
|
178 |
$order->nvpStr = $nvpStr;
|
179 |
|
180 |
$this->httpParsedResponseAr = $this->PPHttpPost('DoExpressCheckoutPayment', $nvpStr);
|
181 |
+
|
182 |
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
|
183 |
$order->payment_transaction_id = urldecode($this->httpParsedResponseAr['TRANSACTIONID']);
|
184 |
$order->status = "success";
|
203 |
|
204 |
if(empty($order->code))
|
205 |
$order->code = $order->getRandomCode();
|
206 |
+
|
|
|
|
|
|
|
207 |
//taxes on initial amount
|
208 |
$initial_payment = $order->InitialPayment;
|
209 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
211 |
|
212 |
//taxes on the amount
|
213 |
$amount = $order->PaymentAmount;
|
214 |
+
$amount_tax = $order->getTaxForPrice($amount);
|
215 |
+
$order->subtotal = $amount;
|
216 |
+
$amount = round((float)$amount + (float)$amount_tax, 2);
|
217 |
|
218 |
//paypal profile stuff
|
219 |
$nvpStr = "";
|
243 |
$nvpStr .= "&TRIALTOTALBILLINGCYCLES=" . $order->TrialBillingCycles;
|
244 |
|
245 |
$this->nvpStr = $nvpStr;
|
246 |
+
|
|
|
|
|
|
|
247 |
$this->httpParsedResponseAr = $this->PPHttpPost('CreateRecurringPaymentsProfile', $nvpStr);
|
248 |
|
249 |
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
|
269 |
{
|
270 |
//paypal profile stuff
|
271 |
$nvpStr = "";
|
272 |
+
$nvpStr .= "&PROFILEID=" . $order->subscription_transaction_id . "&ACTION=Cancel&NOTE=User requested cancel.";
|
273 |
|
274 |
$this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
|
275 |
+
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]) || $this->httpParsedResponseAr['L_ERRORCODE0'] == "11556") {
|
|
|
|
|
276 |
$order->updateStatus("cancelled");
|
277 |
+
return true;
|
278 |
+
//exit('CreateRecurringPaymentsProfile Completed Successfully: '.print_r($this->httpParsedResponseAr, true));
|
279 |
+
} else {
|
|
|
280 |
$order->status = "error";
|
281 |
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
282 |
+
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
|
283 |
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
284 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
return false;
|
286 |
+
//exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
287 |
}
|
288 |
+
}
|
289 |
|
290 |
/**
|
291 |
* PAYPAL Function
|
352 |
return $httpParsedResponseAr;
|
353 |
}
|
354 |
}
|
355 |
+
?>
|
classes/gateways/class.pmprogateway_paypalstandard.php
CHANGED
@@ -69,7 +69,7 @@
|
|
69 |
$paypal_args = array(
|
70 |
'cmd' => '_xclick-subscriptions',
|
71 |
'a1' => number_format($initial_payment, 2),
|
72 |
-
'p1' =>
|
73 |
't1' => $period,
|
74 |
'a3' => number_format($amount, 2),
|
75 |
'p3' => $order->BillingFrequency,
|
@@ -114,13 +114,13 @@
|
|
114 |
else
|
115 |
{
|
116 |
//we can try to work in any change in ProfileStartDate
|
117 |
-
$psd = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod
|
118 |
$adjusted_psd = apply_filters("pmpro_profile_start_date", $psd, $order);
|
119 |
if($psd != $adjusted_psd)
|
120 |
{
|
121 |
//someone is trying to push the start date back
|
122 |
-
$adjusted_psd_time = strtotime($adjusted_psd
|
123 |
-
$seconds_til_psd = $adjusted_psd_time -
|
124 |
$days_til_psd = floor($seconds_til_psd/(60*60*24));
|
125 |
|
126 |
//push back trial one by days_til_psd
|
@@ -144,20 +144,9 @@
|
|
144 |
if(!empty($order->TotalBillingCycles))
|
145 |
{
|
146 |
if(!empty($trial_amount))
|
147 |
-
|
148 |
-
|
149 |
-
$srt = intval($order->TotalBillingCycles) - 1; //subtract one for the trial period
|
150 |
-
}
|
151 |
-
else
|
152 |
-
{
|
153 |
-
$srt = intval($order->TotalBillingCycles);
|
154 |
-
}
|
155 |
-
|
156 |
-
//srt must be at least 2 or the subscription is not "recurring" according to paypal
|
157 |
-
if($srt > 1)
|
158 |
-
$paypal_args['srt'] = $srt;
|
159 |
else
|
160 |
-
$paypal_args['
|
161 |
}
|
162 |
else
|
163 |
$paypal_args['srt'] = '0'; //indefinite subscription
|
@@ -195,17 +184,11 @@
|
|
195 |
foreach($additional_parameters as $key => $value)
|
196 |
$nvpStr .= urlencode("&" . $key . "=" . $value);
|
197 |
}
|
198 |
-
|
199 |
-
$account_optional = apply_filters('pmpro_paypal_account_optional', true);
|
200 |
-
if ($account_optional)
|
201 |
-
$nvpStr .= '&SOLUTIONTYPE=Sole&LANDINGPAGE=Billing';
|
202 |
|
203 |
-
$nvpStr = apply_filters("pmpro_paypal_standard_nvpstr", $nvpStr, $order);
|
204 |
-
|
205 |
//redirect to paypal
|
206 |
$paypal_url .= $nvpStr;
|
207 |
|
208 |
-
//
|
209 |
|
210 |
wp_redirect($paypal_url);
|
211 |
exit;
|
@@ -215,23 +198,21 @@
|
|
215 |
{
|
216 |
//paypal profile stuff
|
217 |
$nvpStr = "";
|
218 |
-
$nvpStr .= "&PROFILEID=" .
|
219 |
|
220 |
$this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
|
221 |
-
|
222 |
-
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]))
|
223 |
-
{
|
224 |
$order->updateStatus("cancelled");
|
225 |
-
return true;
|
226 |
-
|
227 |
-
else
|
228 |
-
{
|
229 |
$order->status = "error";
|
230 |
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
231 |
-
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0'])
|
232 |
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
233 |
|
234 |
-
return false;
|
|
|
235 |
}
|
236 |
}
|
237 |
|
@@ -271,7 +252,7 @@
|
|
271 |
|
272 |
// NVPRequest for submitting to server
|
273 |
$nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_";
|
274 |
-
|
275 |
// setting the nvpreq as POST FIELD to curl
|
276 |
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
|
277 |
|
@@ -300,3 +281,4 @@
|
|
300 |
return $httpParsedResponseAr;
|
301 |
}
|
302 |
}
|
|
69 |
$paypal_args = array(
|
70 |
'cmd' => '_xclick-subscriptions',
|
71 |
'a1' => number_format($initial_payment, 2),
|
72 |
+
'p1' => '1',
|
73 |
't1' => $period,
|
74 |
'a3' => number_format($amount, 2),
|
75 |
'p3' => $order->BillingFrequency,
|
114 |
else
|
115 |
{
|
116 |
//we can try to work in any change in ProfileStartDate
|
117 |
+
$psd = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod)) . "T0:0:0";
|
118 |
$adjusted_psd = apply_filters("pmpro_profile_start_date", $psd, $order);
|
119 |
if($psd != $adjusted_psd)
|
120 |
{
|
121 |
//someone is trying to push the start date back
|
122 |
+
$adjusted_psd_time = strtotime($adjusted_psd);
|
123 |
+
$seconds_til_psd = $adjusted_psd_time - time();
|
124 |
$days_til_psd = floor($seconds_til_psd/(60*60*24));
|
125 |
|
126 |
//push back trial one by days_til_psd
|
144 |
if(!empty($order->TotalBillingCycles))
|
145 |
{
|
146 |
if(!empty($trial_amount))
|
147 |
+
$paypal_args['srt'] = intval($order->TotalBillingCycles) - 1; //subtract 1 for the trial period
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
else
|
149 |
+
$paypal_args['srt'] = intval($order->TotalBillingCycles);
|
150 |
}
|
151 |
else
|
152 |
$paypal_args['srt'] = '0'; //indefinite subscription
|
184 |
foreach($additional_parameters as $key => $value)
|
185 |
$nvpStr .= urlencode("&" . $key . "=" . $value);
|
186 |
}
|
|
|
|
|
|
|
|
|
187 |
|
|
|
|
|
188 |
//redirect to paypal
|
189 |
$paypal_url .= $nvpStr;
|
190 |
|
191 |
+
//die($paypal_url);
|
192 |
|
193 |
wp_redirect($paypal_url);
|
194 |
exit;
|
198 |
{
|
199 |
//paypal profile stuff
|
200 |
$nvpStr = "";
|
201 |
+
$nvpStr .= "&PROFILEID=" . $order->subscription_transaction_id . "&ACTION=Cancel&NOTE=User requested cancel.";
|
202 |
|
203 |
$this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
|
204 |
+
if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]) || $this->httpParsedResponseAr['L_ERRORCODE0'] == "11556") {
|
|
|
|
|
205 |
$order->updateStatus("cancelled");
|
206 |
+
return true;
|
207 |
+
//exit('CreateRecurringPaymentsProfile Completed Successfully: '.print_r($this->httpParsedResponseAr, true));
|
208 |
+
} else {
|
|
|
209 |
$order->status = "error";
|
210 |
$order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
|
211 |
+
$order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
|
212 |
$order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
|
213 |
|
214 |
+
return false;
|
215 |
+
//exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
|
216 |
}
|
217 |
}
|
218 |
|
252 |
|
253 |
// NVPRequest for submitting to server
|
254 |
$nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_";
|
255 |
+
|
256 |
// setting the nvpreq as POST FIELD to curl
|
257 |
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
|
258 |
|
281 |
return $httpParsedResponseAr;
|
282 |
}
|
283 |
}
|
284 |
+
?>
|
classes/gateways/class.pmprogateway_stripe.php
CHANGED
@@ -50,7 +50,7 @@
|
|
50 |
else
|
51 |
{
|
52 |
if(empty($order->error))
|
53 |
-
$order->error =
|
54 |
return false;
|
55 |
}
|
56 |
}
|
@@ -58,8 +58,6 @@
|
|
58 |
|
59 |
function charge(&$order)
|
60 |
{
|
61 |
-
global $pmpro_currency;
|
62 |
-
|
63 |
//create a code for the order
|
64 |
if(empty($order->code))
|
65 |
$order->code = $order->getRandomCode();
|
@@ -85,7 +83,7 @@
|
|
85 |
{
|
86 |
$response = Stripe_Charge::create(array(
|
87 |
"amount" => $amount * 100, # amount in cents, again
|
88 |
-
"currency" =>
|
89 |
"customer" => $this->customer->id,
|
90 |
"description" => "Order #" . $order->code . ", " . trim($order->FirstName . " " . $order->LastName) . " (" . $order->Email . ")"
|
91 |
)
|
@@ -164,21 +162,13 @@
|
|
164 |
//update the customer description and card
|
165 |
if(!empty($order->stripeToken))
|
166 |
{
|
167 |
-
$
|
168 |
-
|
169 |
-
if (empty($name))
|
170 |
-
{
|
171 |
-
$name = trim($current_user->first_name . " " . $current_user->last_name);
|
172 |
-
}
|
173 |
-
|
174 |
-
$this->customer->description = $name . " (" . $order->Email . ")";
|
175 |
-
$this->customer->email = $order->Email;
|
176 |
$this->customer->card = $order->stripeToken;
|
177 |
$this->customer->save();
|
178 |
}
|
179 |
|
180 |
return $this->customer;
|
181 |
-
}
|
182 |
catch (Exception $e)
|
183 |
{
|
184 |
//assume no customer found
|
@@ -192,36 +182,19 @@
|
|
192 |
{
|
193 |
$this->customer = Stripe_Customer::create(array(
|
194 |
"description" => trim($order->FirstName . " " . $order->LastName) . " (" . $order->Email . ")",
|
195 |
-
"email" => $order->Email,
|
196 |
"card" => $order->stripeToken
|
197 |
));
|
198 |
}
|
199 |
catch (Exception $e)
|
200 |
{
|
201 |
-
$order->error =
|
202 |
$order->shorterror = $order->error;
|
203 |
return false;
|
204 |
}
|
205 |
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
update_user_meta($user_id, "pmpro_stripe_customerid", $this->customer->id);
|
210 |
-
}
|
211 |
-
else
|
212 |
-
{
|
213 |
-
//user not registered yet, queue it up
|
214 |
-
global $pmpro_stripe_customer_id;
|
215 |
-
$pmpro_stripe_customer_id = $this->customer->id;
|
216 |
-
function pmpro_user_register_stripe_customerid($user_id)
|
217 |
-
{
|
218 |
-
global $pmpro_stripe_customer_id;
|
219 |
-
update_user_meta($user_id, "pmpro_stripe_customerid", $pmpro_stripe_customer_id);
|
220 |
-
}
|
221 |
-
add_action("user_register", "pmpro_user_register_stripe_customerid");
|
222 |
-
}
|
223 |
-
|
224 |
-
return apply_filters('pmpro_stripe_create_customer', $this->customer);
|
225 |
}
|
226 |
|
227 |
return false;
|
@@ -229,15 +202,10 @@
|
|
229 |
|
230 |
function subscribe(&$order)
|
231 |
{
|
232 |
-
global $pmpro_currency;
|
233 |
-
|
234 |
//create a code for the order
|
235 |
if(empty($order->code))
|
236 |
$order->code = $order->getRandomCode();
|
237 |
|
238 |
-
//filter order before subscription. use with care.
|
239 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
240 |
-
|
241 |
//setup customer
|
242 |
$this->getCustomer($order);
|
243 |
if(empty($this->customer))
|
@@ -245,7 +213,8 @@
|
|
245 |
|
246 |
//figure out the amounts
|
247 |
$amount = $order->PaymentAmount;
|
248 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
|
|
249 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
250 |
|
251 |
/*
|
@@ -266,13 +235,13 @@
|
|
266 |
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
267 |
|
268 |
//convert to a profile start date
|
269 |
-
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day"
|
270 |
|
271 |
//filter the start date
|
272 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
273 |
|
274 |
//convert back to days
|
275 |
-
$trial_period_days = ceil(abs(strtotime(date("Y-m-d")
|
276 |
|
277 |
//now add the actual trial set by the site
|
278 |
if(!empty($order->TrialBillingCycles))
|
@@ -290,22 +259,20 @@
|
|
290 |
|
291 |
//create a plan
|
292 |
try
|
293 |
-
{
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
$plan = Stripe_Plan::create(apply_filters('pmpro_stripe_create_plan_array', $plan));
|
305 |
}
|
306 |
catch (Exception $e)
|
307 |
{
|
308 |
-
$order->error =
|
309 |
$order->shorterror = $order->error;
|
310 |
return false;
|
311 |
}
|
@@ -321,7 +288,7 @@
|
|
321 |
$plan->delete();
|
322 |
|
323 |
//return error
|
324 |
-
$order->error =
|
325 |
$order->shorterror = $order->error;
|
326 |
return false;
|
327 |
}
|
@@ -353,55 +320,37 @@
|
|
353 |
|
354 |
function cancel(&$order)
|
355 |
{
|
356 |
-
//no matter what happens below, we're going to cancel the order in our system
|
357 |
-
$order->updateStatus("cancelled");
|
358 |
-
|
359 |
//require a subscription id
|
360 |
if(empty($order->subscription_transaction_id))
|
361 |
return false;
|
362 |
|
363 |
//find the customer
|
364 |
-
$this->getCustomer($order);
|
365 |
|
366 |
if(!empty($this->customer))
|
367 |
{
|
368 |
-
//
|
369 |
-
|
370 |
-
|
371 |
-
|
|
|
|
|
372 |
{
|
373 |
-
//
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
{
|
379 |
-
if($sub->data[0]->plan->id == $order->code)
|
380 |
-
{
|
381 |
-
//found it, cancel it
|
382 |
-
try
|
383 |
-
{
|
384 |
-
$this->customer->subscriptions->retrieve($sub->data[0]->id)->cancel();
|
385 |
-
break;
|
386 |
-
}
|
387 |
-
catch(Exception $e)
|
388 |
-
{
|
389 |
-
$order->error = __("Could not cancel old subscription.", "pmpro");
|
390 |
-
$order->shorterror = $order->error;
|
391 |
-
|
392 |
-
return false;
|
393 |
-
}
|
394 |
-
}
|
395 |
-
}
|
396 |
-
}
|
397 |
|
|
|
398 |
return true;
|
399 |
}
|
400 |
else
|
401 |
{
|
402 |
-
$order->error =
|
403 |
$order->shorterror = $order->error;
|
404 |
return false; //no customer found
|
405 |
}
|
406 |
}
|
407 |
-
}
|
|
50 |
else
|
51 |
{
|
52 |
if(empty($order->error))
|
53 |
+
$order->error = "Unknown error: Initial payment failed.";
|
54 |
return false;
|
55 |
}
|
56 |
}
|
58 |
|
59 |
function charge(&$order)
|
60 |
{
|
|
|
|
|
61 |
//create a code for the order
|
62 |
if(empty($order->code))
|
63 |
$order->code = $order->getRandomCode();
|
83 |
{
|
84 |
$response = Stripe_Charge::create(array(
|
85 |
"amount" => $amount * 100, # amount in cents, again
|
86 |
+
"currency" => strtolower(pmpro_getOption("currency")),
|
87 |
"customer" => $this->customer->id,
|
88 |
"description" => "Order #" . $order->code . ", " . trim($order->FirstName . " " . $order->LastName) . " (" . $order->Email . ")"
|
89 |
)
|
162 |
//update the customer description and card
|
163 |
if(!empty($order->stripeToken))
|
164 |
{
|
165 |
+
$this->customer->description = trim($order->FirstName . " " . $order->LastName) . " (" . $order->Email . ")";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
$this->customer->card = $order->stripeToken;
|
167 |
$this->customer->save();
|
168 |
}
|
169 |
|
170 |
return $this->customer;
|
171 |
+
}
|
172 |
catch (Exception $e)
|
173 |
{
|
174 |
//assume no customer found
|
182 |
{
|
183 |
$this->customer = Stripe_Customer::create(array(
|
184 |
"description" => trim($order->FirstName . " " . $order->LastName) . " (" . $order->Email . ")",
|
|
|
185 |
"card" => $order->stripeToken
|
186 |
));
|
187 |
}
|
188 |
catch (Exception $e)
|
189 |
{
|
190 |
+
$order->error = "Error creating customer record with Stripe: " . $e->getMessage();
|
191 |
$order->shorterror = $order->error;
|
192 |
return false;
|
193 |
}
|
194 |
|
195 |
+
update_user_meta($user_id, "pmpro_stripe_customerid", $customer->id);
|
196 |
+
|
197 |
+
return $this->customer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
}
|
199 |
|
200 |
return false;
|
202 |
|
203 |
function subscribe(&$order)
|
204 |
{
|
|
|
|
|
205 |
//create a code for the order
|
206 |
if(empty($order->code))
|
207 |
$order->code = $order->getRandomCode();
|
208 |
|
|
|
|
|
|
|
209 |
//setup customer
|
210 |
$this->getCustomer($order);
|
211 |
if(empty($this->customer))
|
213 |
|
214 |
//figure out the amounts
|
215 |
$amount = $order->PaymentAmount;
|
216 |
+
$amount_tax = $order->getTaxForPrice($amount);
|
217 |
+
$order->subtotal = $amount;
|
218 |
$amount = round((float)$amount + (float)$amount_tax, 2);
|
219 |
|
220 |
/*
|
235 |
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
236 |
|
237 |
//convert to a profile start date
|
238 |
+
$order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day")) . "T0:0:0";
|
239 |
|
240 |
//filter the start date
|
241 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
242 |
|
243 |
//convert back to days
|
244 |
+
$trial_period_days = ceil(abs(strtotime(date("Y-m-d")) - strtotime($order->ProfileStartDate)) / 86400);
|
245 |
|
246 |
//now add the actual trial set by the site
|
247 |
if(!empty($order->TrialBillingCycles))
|
259 |
|
260 |
//create a plan
|
261 |
try
|
262 |
+
{
|
263 |
+
$plan = Stripe_Plan::create(array(
|
264 |
+
"amount" => $amount * 100,
|
265 |
+
"interval_count" => $order->BillingFrequency,
|
266 |
+
"interval" => strtolower($order->BillingPeriod),
|
267 |
+
"trial_period_days" => $trial_period_days,
|
268 |
+
"name" => $order->membership_name . " for order " . $order->code,
|
269 |
+
"currency" => strtolower(pmpro_getOption("currency")),
|
270 |
+
"id" => $order->code)
|
271 |
+
);
|
|
|
|
|
272 |
}
|
273 |
catch (Exception $e)
|
274 |
{
|
275 |
+
$order->error = "Error creating plan with Stripe:" . $e->getMessage();
|
276 |
$order->shorterror = $order->error;
|
277 |
return false;
|
278 |
}
|
288 |
$plan->delete();
|
289 |
|
290 |
//return error
|
291 |
+
$order->error = "Error subscribing customer to plan with Stripe:" . $e->getMessage();
|
292 |
$order->shorterror = $order->error;
|
293 |
return false;
|
294 |
}
|
320 |
|
321 |
function cancel(&$order)
|
322 |
{
|
|
|
|
|
|
|
323 |
//require a subscription id
|
324 |
if(empty($order->subscription_transaction_id))
|
325 |
return false;
|
326 |
|
327 |
//find the customer
|
328 |
+
$this->getCustomer($order);
|
329 |
|
330 |
if(!empty($this->customer))
|
331 |
{
|
332 |
+
//cancel
|
333 |
+
try
|
334 |
+
{
|
335 |
+
$this->customer->cancelSubscription();
|
336 |
+
}
|
337 |
+
catch(Exception $e)
|
338 |
{
|
339 |
+
$order->updateStatus("cancelled"); //assume it's been cancelled already
|
340 |
+
$order->error = "Could not find the subscription.";
|
341 |
+
$order->shorterror = $order->error;
|
342 |
+
return false; //no subscription found
|
343 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
344 |
|
345 |
+
$order->updateStatus("cancelled");
|
346 |
return true;
|
347 |
}
|
348 |
else
|
349 |
{
|
350 |
+
$order->error = "Could not find the subscription.";
|
351 |
$order->shorterror = $order->error;
|
352 |
return false; //no customer found
|
353 |
}
|
354 |
}
|
355 |
+
}
|
356 |
+
?>
|
classes/gateways/class.pmprogateway_twocheckout.php
DELETED
@@ -1,145 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
require_once(dirname(__FILE__) . "/class.pmprogateway.php");
|
3 |
-
if(!class_exists("Twocheckout"))
|
4 |
-
require_once(dirname(__FILE__) . "/../../includes/lib/Twocheckout/Twocheckout.php");
|
5 |
-
class PMProGateway_Twocheckout
|
6 |
-
{
|
7 |
-
function PMProGateway_Twocheckout($gateway = NULL)
|
8 |
-
{
|
9 |
-
$this->gateway = $gateway;
|
10 |
-
return $this->gateway;
|
11 |
-
}
|
12 |
-
|
13 |
-
function process(&$order)
|
14 |
-
{
|
15 |
-
if(empty($order->code))
|
16 |
-
$order->code = $order->getRandomCode();
|
17 |
-
|
18 |
-
//clean up a couple values
|
19 |
-
$order->payment_type = "2CheckOut";
|
20 |
-
$order->CardType = "";
|
21 |
-
$order->cardtype = "";
|
22 |
-
|
23 |
-
//just save, the user will go to 2checkout to pay
|
24 |
-
$order->status = "review";
|
25 |
-
$order->saveOrder();
|
26 |
-
|
27 |
-
return true;
|
28 |
-
}
|
29 |
-
|
30 |
-
function sendToTwocheckout(&$order)
|
31 |
-
{
|
32 |
-
global $pmpro_currency;
|
33 |
-
// Set up credentials
|
34 |
-
Twocheckout::setCredentials( pmpro_getOption("twocheckout_apiusername"), pmpro_getOption("twocheckout_apipassword") );
|
35 |
-
|
36 |
-
$tco_args = array(
|
37 |
-
'sid' => pmpro_getOption("twocheckout_accountnumber"),
|
38 |
-
'mode' => '2CO', // will always be 2CO according to docs (@see https://www.2checkout.com/documentation/checkout/parameter-sets/pass-through-products/)
|
39 |
-
'li_0_type' => 'product',
|
40 |
-
'li_0_name' => substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127),
|
41 |
-
'li_0_quantity' => 1,
|
42 |
-
'li_0_tangible' => 'N',
|
43 |
-
'li_0_product_id' => $order->code,
|
44 |
-
'merchant_order_id' => $order->code,
|
45 |
-
'currency_code' => $pmpro_currency,
|
46 |
-
'pay_method' => 'CC',
|
47 |
-
'purchase_step' => 'billing-information',
|
48 |
-
'x_receipt_link_url' => admin_url("admin-ajax.php") . "?action=twocheckout-ins" //pmpro_url("confirmation", "?level=" . $order->membership_level->id)
|
49 |
-
);
|
50 |
-
|
51 |
-
//taxes on initial amount
|
52 |
-
$initial_payment = $order->InitialPayment;
|
53 |
-
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
54 |
-
$initial_payment = round((float)$initial_payment + (float)$initial_payment_tax, 2);
|
55 |
-
|
56 |
-
//taxes on the amount (NOT CURRENTLY USED)
|
57 |
-
$amount = $order->PaymentAmount;
|
58 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
59 |
-
$order->subtotal = $amount;
|
60 |
-
$amount = round((float)$amount + (float)$amount_tax, 2);
|
61 |
-
|
62 |
-
// Recurring membership
|
63 |
-
if( pmpro_isLevelRecurring( $order->membership_level ) ) {
|
64 |
-
$tco_args['li_0_startup_fee'] = number_format($initial_payment - $amount, 2); //negative amount for lower initial payments
|
65 |
-
$recurring_payment = $order->membership_level->billing_amount;
|
66 |
-
$recurring_payment_tax = $order->getTaxForPrice($recurring_payment);
|
67 |
-
$recurring_payment = round((float)$recurring_payment + (float)$recurring_payment_tax, 2);
|
68 |
-
$tco_args['li_0_price'] = number_format($recurring_payment, 2);
|
69 |
-
|
70 |
-
$tco_args['li_0_recurrence'] = ( $order->BillingFrequency == 1 ) ? $order->BillingFrequency . ' ' . $order->BillingPeriod : $order->BillingFrequency . ' ' . $order->BillingPeriod . 's';
|
71 |
-
|
72 |
-
if( property_exists( $order, 'TotalBillingCycles' ) )
|
73 |
-
$tco_args['li_0_duration'] = ($order->BillingFrequency * $order->TotalBillingCycles ) . ' ' . $order->BillingPeriod;
|
74 |
-
else
|
75 |
-
$tco_args['li_0_duration'] = 'Forever';
|
76 |
-
}
|
77 |
-
// Non-recurring membership
|
78 |
-
else {
|
79 |
-
$tco_args['li_0_price'] = $initial_payment;
|
80 |
-
}
|
81 |
-
|
82 |
-
// Demo mode?
|
83 |
-
$environment = pmpro_getOption("gateway_environment");
|
84 |
-
if("sandbox" === $environment || "beta-sandbox" === $environment)
|
85 |
-
$tco_args['demo'] = 'Y';
|
86 |
-
|
87 |
-
// Trial?
|
88 |
-
//li_#_startup_fee Any start up fees for the product or service. Can be negative to provide discounted first installment pricing, but cannot equal or surpass the product price.
|
89 |
-
if(!empty($order->TrialBillingPeriod)) {
|
90 |
-
$trial_amount = $order->TrialAmount;
|
91 |
-
$trial_tax = $order->getTaxForPrice($trial_amount);
|
92 |
-
$trial_amount = round((float)$trial_amount + (float)$trial_tax, 2);
|
93 |
-
$tco_args['li_0_startup_fee'] = $trial_amount; // Negative trial amount
|
94 |
-
}
|
95 |
-
|
96 |
-
$ptpStr = '';
|
97 |
-
foreach( $tco_args as $key => $value ) {
|
98 |
-
reset( $tco_args ); // Used to verify whether or not we're on the first argument
|
99 |
-
$ptpStr .= ( $key == key($tco_args) ) ? '?' . $key . '=' . urlencode( $value ) : '&' . $key . '=' . urlencode( $value );
|
100 |
-
}
|
101 |
-
|
102 |
-
//anything modders might add
|
103 |
-
$additional_parameters = apply_filters( 'pmpro_twocheckout_return_url_parameters', array() );
|
104 |
-
if( ! empty( $additional_parameters ) )
|
105 |
-
foreach( $additional_parameters as $key => $value )
|
106 |
-
$ptpStr .= "&" . urlencode($key) . "=" . urlencode($value);
|
107 |
-
|
108 |
-
$ptpStr = apply_filters( 'pmpro_twocheckout_ptpstr', $ptpStr, $order );
|
109 |
-
|
110 |
-
//echo str_replace("&", "&<br />", $ptpStr);
|
111 |
-
//exit;
|
112 |
-
|
113 |
-
//redirect to 2checkout
|
114 |
-
$tco_url = 'https://www.2checkout.com/checkout/purchase' . $ptpStr;
|
115 |
-
|
116 |
-
//echo $tco_url;
|
117 |
-
//die();
|
118 |
-
wp_redirect( $tco_url );
|
119 |
-
exit;
|
120 |
-
}
|
121 |
-
|
122 |
-
function cancel(&$order) {
|
123 |
-
// If recurring, stop the recurring payment
|
124 |
-
if(pmpro_isLevelRecurring($order->membership_level)) {
|
125 |
-
$params['sale_id'] = $order->payment_transaction_id;
|
126 |
-
$result = Twocheckout_Sale::stop( $params ); // Stop the recurring billing
|
127 |
-
|
128 |
-
// Successfully cancelled
|
129 |
-
if (isset($result['response_code']) && $result['response_code'] === 'OK') {
|
130 |
-
$order->updateStatus("cancelled");
|
131 |
-
return true;
|
132 |
-
}
|
133 |
-
// Failed
|
134 |
-
else {
|
135 |
-
$order->status = "error";
|
136 |
-
$order->errorcode = $result->getCode();
|
137 |
-
$order->error = $result->getMessage();
|
138 |
-
|
139 |
-
return false;
|
140 |
-
}
|
141 |
-
}
|
142 |
-
|
143 |
-
return $order;
|
144 |
-
}
|
145 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/admin-rtl.css
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
.pmpro_admin {
|
2 |
-
background: url(../images/Paid-Memberships-Pro_watermark.png) bottom left no-repeat !important;
|
3 |
-
}
|
4 |
-
|
5 |
-
.pmpro_admin .pmpro_banner h2 {
|
6 |
-
float: right;
|
7 |
-
}
|
8 |
-
|
9 |
-
.pmpro_admin .pmpro_banner .pmpro_meta {
|
10 |
-
float: right;
|
11 |
-
}
|
12 |
-
|
13 |
-
.pmpro_admin .pmpro_banner .pmpro_meta .pmpro_tag-blue {
|
14 |
-
margin: 0 5px 0 0;
|
15 |
-
}
|
16 |
-
|
17 |
-
.pmpro_admin .pmpro_banner .pmpro_logo {
|
18 |
-
float: right;
|
19 |
-
margin: 0 0 0 1em;
|
20 |
-
}
|
21 |
-
|
22 |
-
.pmpro_admin .pmpro_banner ul.pmpro_menu li {
|
23 |
-
border-left: 1px solid #CCC;
|
24 |
-
border-right: none;
|
25 |
-
}
|
26 |
-
|
27 |
-
/* messages */
|
28 |
-
.pmpro_message {
|
29 |
-
padding: 6px 25px 6px 6px;
|
30 |
-
}
|
31 |
-
|
32 |
-
/* highlighted trs */
|
33 |
-
|
34 |
-
/* discount levels */
|
35 |
-
|
36 |
-
/* pagination */
|
37 |
-
div.pmpro_pagination {
|
38 |
-
float: left;
|
39 |
-
}
|
40 |
-
|
41 |
-
/* add ons */
|
42 |
-
|
43 |
-
.pmpro_admin .widgets-holder-wrap .widget {
|
44 |
-
float: right;
|
45 |
-
margin: 0 0 1% 1%;
|
46 |
-
}
|
47 |
-
|
48 |
-
.pmpro_admin .widgets-holder-wrap .widget-title .status-label {
|
49 |
-
float: right;
|
50 |
-
margin: 0 0 0 5px;
|
51 |
-
}
|
52 |
-
|
53 |
-
.pmpro_admin .widgets-holder-wrap .widget-title .version {
|
54 |
-
left: 10px;
|
55 |
-
left: auto;
|
56 |
-
}
|
57 |
-
|
58 |
-
.pmpro_admin .widgets-holder-wrap .widget-inside .addon-thumb {
|
59 |
-
float: left;
|
60 |
-
margin: 10px 10px 0 0;
|
61 |
-
}
|
62 |
-
|
63 |
-
/* Generated by the RTLer - http://l0uy.com/rtler/ */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/admin.css
CHANGED
@@ -1,97 +1,61 @@
|
|
1 |
-
.pmpro_admin {background: url(../images/
|
2 |
-
|
3 |
-
.pmpro_admin .pmpro_banner
|
4 |
-
.pmpro_admin .pmpro_banner .pmpro_meta {float:
|
5 |
-
.pmpro_admin .pmpro_banner .
|
6 |
-
.pmpro_admin .pmpro_banner .
|
7 |
-
.pmpro_admin .pmpro_banner ul.pmpro_menu {clear: both; border: 1px solid #CCC; border-radius: 5px; -moz-border-radius: 5px; background: #FFF; }
|
8 |
-
.pmpro_admin .pmpro_banner ul.pmpro_menu li {display: inline-block; margin: 10px 0; padding: 0px 10px; border-right: 1px solid #CCC; }
|
9 |
-
.pmpro_admin .pmpro_banner ul.pmpro_menu li a, .pmpro_admin .pmpro_banner ul.pmpro_menu li a:link {color: #1e0741; text-decoration: none; }
|
10 |
-
.pmpro_admin .pmpro_banner ul.pmpro_menu li a:hover {text-decoration: underline; color: #412f5b; }
|
11 |
-
|
12 |
-
.pmpro_admin .
|
13 |
-
.pmpro_admin
|
14 |
-
.pmpro_admin
|
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 |
-
div.pmpro_pagination {padding:
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
.pmpro_admin .widgets-holder-wrap {clear: both; margin-top: 20px; padding: 0 8px; }
|
63 |
-
.pmpro_admin .widgets-holder-wrap .widget {float: left; width: 32%; margin: 0 1% 1% 0; position: relative; }
|
64 |
-
.pmpro_admin .widgets-holder-wrap p.description {padding: 0; }
|
65 |
-
.pmpro_admin .widgets-holder-wrap .widget-top {height: auto; cursor: default; }
|
66 |
-
.pmpro_admin .widgets-holder-wrap .widget-inside {display: block; height: 130px; overflow: hidden; }
|
67 |
-
.pmpro_admin .widgets-holder-wrap .widget-inside p {height: 80px; overflow: hidden; }
|
68 |
-
.pmpro_admin #pmpro-gists.widgets-holder-wrap .widget-inside, .pmpro_admin #pmpro-gists.widgets-holder-wrap .widget-inside p {height: auto; }
|
69 |
-
.pmpro_admin .widgets-holder-wrap .widget-title { }
|
70 |
-
.pmpro_admin .widgets-holder-wrap .widget-title h4 { }
|
71 |
-
.pmpro_admin .widgets-holder-wrap .widget-title .status-label {display: block; float: left; margin: 0 5px 0 0; width: 10px;
|
72 |
-
height: 10px; overflow: hidden; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border: 1px solid #DFDFDF; text-indent: -9999em; }
|
73 |
-
.pmpro_admin .widgets-holder-wrap .disabled .widget-title .status-label {background: #F00; }
|
74 |
-
.pmpro_admin .widgets-holder-wrap .enabled .widget-title .status-label {background: #0C0; }
|
75 |
-
|
76 |
-
.pmpro_admin .widgets-holder-wrap .widget-title .version {position: absolute; top: 13px; right: 10px; }
|
77 |
-
.pmpro_admin .widgets-holder-wrap .widget-inside .addon-thumb {width: 100px; height: 100px; float: right; margin: 10px 0 0 10px; border: 1px solid #DFDFDF; background: #FFF; padding: 2px;}
|
78 |
-
|
79 |
-
/*@media (min-width: 1200px) {
|
80 |
-
.auto-fold .pmpro_admin .widgets-holder-wrap .widget-inside, .auto-fold .pmpro_admin .widgets-holder-wrap .widget-inside p {height: auto; }
|
81 |
-
}
|
82 |
-
*/
|
83 |
-
@media (max-width:900px) {
|
84 |
-
.auto-fold .pmpro_admin .widgets-holder-wrap .widget {float: none; width: 100%; }
|
85 |
-
.auto-fold .pmpro_admin .widgets-holder-wrap .widget-inside, .auto-fold .pmpro_admin .widgets-holder-wrap .widget-inside p {height: auto; }
|
86 |
-
}
|
87 |
-
|
88 |
-
/* misc */
|
89 |
-
.pmpro_lite {color: #AAA;}
|
90 |
-
.pmpro_pad20 {padding: 20px !important;}
|
91 |
-
.pmpro_red {color: #CC0000;}
|
92 |
-
.pmpro_green {color: #00AA00;}
|
93 |
-
|
94 |
-
/* reports */
|
95 |
-
.pmpro_reports-holder { }
|
96 |
-
.pmpro_clickable {cursor: pointer;}
|
97 |
-
.js .postbox.pmpro_clickable h3 {cursor: pointer;}
|
1 |
+
.pmpro_admin {background: url(../images/PaidMembershipsPro-grey.gif) bottom right no-repeat !important; padding-bottom: 70px; }
|
2 |
+
|
3 |
+
.pmpro_admin .pmpro_banner {margin: 2em 0; font-family: Georgia, "Times New Roman", Times, serif; }
|
4 |
+
.pmpro_admin .pmpro_banner .pmpro_meta {float: right; margin: 2em 0 1em 1em; font-size: 12px; font-style: italic; }
|
5 |
+
.pmpro_admin .pmpro_banner .pmpro_logo {float: left; margin: 0 1em 1em 0; width: 350px; }
|
6 |
+
.pmpro_admin .pmpro_banner .pmpro_tagline {float: left; width: 350px; font-family: "Arial Black", Gadget, sans-serif; color: #412f5b; text-transform: uppercase; font-size: 13px; padding: 15px 0; }
|
7 |
+
.pmpro_admin .pmpro_banner ul.pmpro_menu {clear: both; border: 1px solid #CCC; border-radius: 5px; -moz-border-radius: 5px; background: #FFF; }
|
8 |
+
.pmpro_admin .pmpro_banner ul.pmpro_menu li {display: inline-block; margin: 10px 0; padding: 0px 10px; border-right: 1px solid #CCC; }
|
9 |
+
.pmpro_admin .pmpro_banner ul.pmpro_menu li a, .pmpro_admin .pmpro_banner ul.pmpro_menu li a:link {color: #1e0741; text-decoration: none; }
|
10 |
+
.pmpro_admin .pmpro_banner ul.pmpro_menu li a:hover {text-decoration: underline; color: #412f5b; }
|
11 |
+
|
12 |
+
.pmpro_admin .topborder {border-top: 1px solid #CCC; margin-top: 1em; padding-top: 1em; }
|
13 |
+
.pmpro_admin #editorcontainer #description {width: 100%; height: 180px; }
|
14 |
+
.pmpro_admin .widefat {margin-top: 1em; }
|
15 |
+
|
16 |
+
.ssp_description #description {width: 100%;}
|
17 |
+
.checkbox_box {width: 300px; background: #FFFFFF; border: 1px solid #CCC;}
|
18 |
+
.checkbox_box div {border-bottom: 1px solid #CCC; padding: 3px;}
|
19 |
+
.checkbox_box .clickable {cursor: pointer;}
|
20 |
+
.checkbox_box .clickable:hover {background: #FFC;}
|
21 |
+
.top0em {margin-top: 0;}
|
22 |
+
|
23 |
+
tr.pmpro_gray td {color: #AAA;}
|
24 |
+
|
25 |
+
/* messages */
|
26 |
+
.pmpro_message {background-color: #D5E4F7; background-image: url(../images/icon_information.gif); background-position: 3px 5px; background-repeat: no-repeat; margin: .5em 0; padding: 6px 6px 6px 25px; color: #345395; font-size: 11px; font-weight: bold; line-height: 1.3em; }
|
27 |
+
|
28 |
+
.pmpro_success {background-color: #CFEECA; background-image: url(../images/icon_success.gif); color: #208A1B; }
|
29 |
+
.pmpro_error {background-color: #F9D6CB; background-image: url(../images/icon_error.gif); color: #E36154; }
|
30 |
+
.pmpro_alert {background-color: #FFF6CC; background-image: url(../images/icon_alert.gif); color: #CF8516; }
|
31 |
+
|
32 |
+
.pmpro_message a {color: #345395; }
|
33 |
+
.pmpro_success a {color: #208A1B; }
|
34 |
+
.pmpro_error a {color: #E36154; }
|
35 |
+
.pmpro_alert a {color: #CF8516; }
|
36 |
+
|
37 |
+
/* highlighted trs */
|
38 |
+
tr.pmpro_message {background-image: none;}
|
39 |
+
tr.pmpro_success {background-image: none;}
|
40 |
+
tr.pmpro_error {background-image: none;}
|
41 |
+
tr.pmpro_alert {background-image: none;}
|
42 |
+
|
43 |
+
/* discount levels */
|
44 |
+
.pmpro_discount_levels {border: 1px solid #CCC;}
|
45 |
+
.pmpro_discount_levels div {padding: 5px; border: 1px solid #CCC;}
|
46 |
+
.pmpro_discount_levels div div {margin-top: 5px; background: #F5F5F5;}
|
47 |
+
|
48 |
+
/* pagination */
|
49 |
+
div.pmpro_pagination {padding: 3px; margin: 5px 0px 5px 0px; font-size: 10px; float: right; }
|
50 |
+
div.pmpro_pagination a {padding: 2px 5px 2px 5px; margin: 1px; border: 1px solid #666; text-decoration: none; /* no underline */ color: #666; background: #EEE; }
|
51 |
+
div.pmpro_pagination a:hover, div.pmpro_pagination a:active {background: #FFF; }
|
52 |
+
div.pmpro_pagination span.current {border: 1px solid #FFF; color: #FFF; background: #666; padding: 2px 5px 2px 5px; margin: 1px; font-weight: bold; }
|
53 |
+
div.pmpro_pagination span.disabled {padding: 2px 5px 2px 5px; margin: 2px; border: 1px solid #BBB; color: #BBB; background: #EFEFEF;}
|
54 |
+
|
55 |
+
p.pmpro_meta_notice {font-size: .6em; padding-top: 5px; border-top: 1px solid #CCC;}
|
56 |
+
|
57 |
+
/* misc */
|
58 |
+
.pmpro_lite {color: #AAA;}
|
59 |
+
.pmpro_pad20 {padding: 20px !important;}
|
60 |
+
.pmpro_red {color: #CC0000;}
|
61 |
+
.pmpro_green {color: #00AA00;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/frontend-rtl.css
DELETED
@@ -1,111 +0,0 @@
|
|
1 |
-
/*---------------------------------------
|
2 |
-
Buttons
|
3 |
-
---------------------------------------*/
|
4 |
-
|
5 |
-
/*---------------------------------------
|
6 |
-
Forms
|
7 |
-
---------------------------------------*/
|
8 |
-
form.pmpro_form div {
|
9 |
-
clear: right;
|
10 |
-
}
|
11 |
-
|
12 |
-
form.pmpro_form label {
|
13 |
-
float: right;
|
14 |
-
margin: 3px 0 0 10px;
|
15 |
-
text-align: left;
|
16 |
-
}
|
17 |
-
|
18 |
-
form.pmpro_form .input, form.pmpro_form textarea, .input, form.pmpro_form select {
|
19 |
-
margin: 0 0 0 3px;
|
20 |
-
}
|
21 |
-
|
22 |
-
form.pmpro_form .leftmar {
|
23 |
-
margin: 8px 130px 0 0;
|
24 |
-
}
|
25 |
-
|
26 |
-
form.pmpro_form .pmpro_captcha {
|
27 |
-
margin: 0 130px 0 0 !important;
|
28 |
-
}
|
29 |
-
|
30 |
-
form.pmpro_form .pmpro_submit {
|
31 |
-
margin-right: 130px;
|
32 |
-
margin-left: auto;
|
33 |
-
}
|
34 |
-
|
35 |
-
form.pmpro_form .pmpro_submit span {
|
36 |
-
float: right;
|
37 |
-
}
|
38 |
-
|
39 |
-
form.pmpro_form #pmpro_processing_message {
|
40 |
-
margin: 5px 10px 0 0;
|
41 |
-
}
|
42 |
-
|
43 |
-
/*--------------------------------------------------
|
44 |
-
Messages - Success, Error, Alert
|
45 |
-
----------------------------------------------------*/
|
46 |
-
|
47 |
-
.pmpro_content_message a {
|
48 |
-
margin: 5px 0 0 5px;
|
49 |
-
}
|
50 |
-
|
51 |
-
/*---------------------------------------
|
52 |
-
Membership Checkout
|
53 |
-
---------------------------------------*/
|
54 |
-
|
55 |
-
.pmpro_checkout ul {
|
56 |
-
margin: 5px 20px 0 0;
|
57 |
-
}
|
58 |
-
|
59 |
-
.pmpro_checkout td.rtbdr {
|
60 |
-
border-left: 1px solid #CCC;
|
61 |
-
border-right: none;
|
62 |
-
}
|
63 |
-
|
64 |
-
.pmpro_thead-msg {
|
65 |
-
float: left;
|
66 |
-
text-align: left;
|
67 |
-
}
|
68 |
-
|
69 |
-
.pmpro_ordersummary {
|
70 |
-
float: left;
|
71 |
-
}
|
72 |
-
|
73 |
-
.pmpro_sslseal {
|
74 |
-
float: left;
|
75 |
-
}
|
76 |
-
|
77 |
-
/*---------------------------------------
|
78 |
-
Membership Invoice
|
79 |
-
---------------------------------------*/
|
80 |
-
|
81 |
-
/*---------------------------------------
|
82 |
-
Membership Account
|
83 |
-
---------------------------------------*/
|
84 |
-
|
85 |
-
li.pmpro_more {
|
86 |
-
margin-right: -20px;
|
87 |
-
padding-right: 0;
|
88 |
-
padding-left: 0;
|
89 |
-
margin-left: auto;
|
90 |
-
}
|
91 |
-
|
92 |
-
/*---------------------------------------
|
93 |
-
Membership Levels
|
94 |
-
---------------------------------------*/
|
95 |
-
|
96 |
-
/*---------------------------------------
|
97 |
-
Misc
|
98 |
-
---------------------------------------*/
|
99 |
-
.pmpro_a-right {
|
100 |
-
float: left;
|
101 |
-
text-align: left;
|
102 |
-
}
|
103 |
-
|
104 |
-
.pmpro_a-print {
|
105 |
-
float: left;
|
106 |
-
background: url(../images/printer.gif) top right no-repeat;
|
107 |
-
padding: 0px 20px 2px 0px;
|
108 |
-
}
|
109 |
-
|
110 |
-
|
111 |
-
/* Generated by the RTLer - http://l0uy.com/rtler/ */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/frontend.css
CHANGED
@@ -1,174 +1,119 @@
|
|
1 |
-
/*---------------------------------------
|
2 |
-
Buttons
|
3 |
-
---------------------------------------*/
|
4 |
-
.pmpro_btn
|
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 |
-
.pmpro_thead-msg {display: block; float: right; width: auto; font-style: italic; font-weight: normal; text-align: right; white-space: nowrap; }
|
121 |
-
|
122 |
-
.pmpro_ordersummary {float: right; }
|
123 |
-
|
124 |
-
#pmpro_license { background: #FFF; padding: 5px; border: 1px solid #CCC; height: 200px; margin: 3px; color: #666; overflow: auto; }
|
125 |
-
|
126 |
-
.pmpro_sslseal {float: right; clear: none !important; margin: 0 !important; }
|
127 |
-
|
128 |
-
a.pmpro_radio {text-decoration: none; color: #000;}
|
129 |
-
|
130 |
-
/*---------------------------------------
|
131 |
-
Membership Invoice
|
132 |
-
---------------------------------------*/
|
133 |
-
.pmpro_invoice { }
|
134 |
-
|
135 |
-
|
136 |
-
/*---------------------------------------
|
137 |
-
Membership Account
|
138 |
-
---------------------------------------*/
|
139 |
-
#pmpro_account .pmpro_box {border-top: 1px solid #CCC; padding: 1em 0; margin: 1em 0; }
|
140 |
-
#pmpro_account .pmpro_box h3 {margin: 0; padding: 0; border: none; background: none; }
|
141 |
-
#pmpro_account .pmpro_box p {margin: .5em 0 0 0; padding: 0; }
|
142 |
-
#pmpro_account .pmpro_box ul {margin-bottom: 0; }
|
143 |
-
|
144 |
-
#pmpro_account #pmpro_account-membership { }
|
145 |
-
#pmpro_account #pmpro_account-profile { }
|
146 |
-
#pmpro_account #pmpro_account-billing { }
|
147 |
-
#pmpro_account #pmpro_account-invoices { }
|
148 |
-
#pmpro_account #pmpro_account-links { }
|
149 |
-
|
150 |
-
|
151 |
-
.pmpro_hidden {display: none;}
|
152 |
-
li.pmpro_more {list-style-type: none; text-align: center; margin-left: -20px; padding-left: 0;}
|
153 |
-
|
154 |
-
/*---------------------------------------
|
155 |
-
Membership Levels
|
156 |
-
---------------------------------------*/
|
157 |
-
#pmpro_levels_table {background: #FFF; }
|
158 |
-
#pmpro_levels_table .pmpro_btn {display: block; }
|
159 |
-
|
160 |
-
/*---------------------------------------
|
161 |
-
Misc
|
162 |
-
---------------------------------------*/
|
163 |
-
.pmpro_a-right {float: right; width: auto; text-align: right; text-decoration: underline; font-size: 11px; }
|
164 |
-
.pmpro_a-print {float: right; width: auto; text-decoration: none; color: #345395; background: url(../images/printer.gif) top left no-repeat; padding: 0px 0px 2px 20px; font-size: 11px; line-height: 16px; cursor: pointer; }
|
165 |
-
|
166 |
-
.pmpro_red {color: #CC0000; }
|
167 |
-
.pmpro_grey {color: #999; }
|
168 |
-
|
169 |
-
.top1em {margin-top: 1em;}
|
170 |
-
.bot1em {margin-bottom: 1em;}
|
171 |
-
.bot0em {margin-bottom: 0em;}
|
172 |
-
.clear {clear: both; }
|
173 |
-
|
174 |
.pmpro_small {font-size: .8em;}
|
1 |
+
/*---------------------------------------
|
2 |
+
Buttons
|
3 |
+
---------------------------------------*/
|
4 |
+
.pmpro_btn {display: inline-block; margin: 0; cursor: pointer; }
|
5 |
+
.pmpro_btn:hover { }
|
6 |
+
|
7 |
+
/*---------------------------------------
|
8 |
+
Forms
|
9 |
+
---------------------------------------*/
|
10 |
+
form.pmpro_form div {clear: left; margin: .5em 0 1em 0; }
|
11 |
+
form.pmpro_form label {float: left; margin: 3px 10px 0 0; width: 120px; font-weight: bold; text-align: right; }
|
12 |
+
/*form.pmpro_form div div {width: 380px; margin-left: 130px; clear: none;}*/
|
13 |
+
form.pmpro_form .likelabel {font-weight: bold; }
|
14 |
+
form.pmpro_form .input, form.pmpro_form textarea, .input, form.pmpro_form select {padding: 3px; border: 1px solid #AAA; margin: 0 3px 0 0; }
|
15 |
+
form.pmpro_form textarea {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
|
16 |
+
form.pmpro_form select {margin: 2px 0 0 0 ; font-size: 12px;}
|
17 |
+
form.pmpro_form .lite {color: #666; }
|
18 |
+
form.pmpro_form .leftmar {margin: 8px 0 0 130px; }
|
19 |
+
|
20 |
+
form.pmpro_form .pmpro_captcha {margin: 0 0 0 130px !important; }
|
21 |
+
form.pmpro_form .pmpro_captcha div {clear: none; margin: 0; }
|
22 |
+
form.pmpro_form .pmpro_submit {margin-left: 140px; }
|
23 |
+
form.pmpro_form .pmpro_submit span {float: left; }
|
24 |
+
form.pmpro_form #pmpro_processing_message {margin: 5px 0 0 10px; font-style: italic; color: #999; }
|
25 |
+
|
26 |
+
/*--------------------------------------------------
|
27 |
+
Messages - Success, Error, Alert
|
28 |
+
----------------------------------------------------*/
|
29 |
+
.pmpro_message, .pmpro_content_message {background-color: #D5E4F7; background-image: url(../images/icon_information.gif); background-position: 3px 5px; background-repeat: no-repeat; margin: .5em 0; padding: 6px 6px 6px 25px; color: #345395; font-size: 11px; font-weight: bold; line-height: 1.3em; }
|
30 |
+
|
31 |
+
.pmpro_success {background-color: #CFEECA; background-image: url(../images/icon_success.gif); color: #208A1B; }
|
32 |
+
.pmpro_error {background-color: #F9D6CB; background-image: url(../images/icon_error.gif); color: #E36154; }
|
33 |
+
.pmpro_alert, .pmpro_content_message {background-color: #FFF6CC; background-image: url(../images/icon_alert.gif); color: #CF8516; }
|
34 |
+
.pmpro_content_message {background-position: 5px 10px; }
|
35 |
+
|
36 |
+
.pmpro_message a {color: #345395; }
|
37 |
+
.pmpro_success a {color: #208A1B; }
|
38 |
+
.pmpro_error a {color: #E36154; }
|
39 |
+
.pmpro_alert a {color: #CF8516; }
|
40 |
+
|
41 |
+
input.pmpro_error {background-image: none;}
|
42 |
+
|
43 |
+
/*---------------------------------------
|
44 |
+
Membership Checkout
|
45 |
+
---------------------------------------*/
|
46 |
+
.pmpro_checkout thead th {font-weight: bold; color: #444; padding: 10px; }
|
47 |
+
.pmpro_checkout tbody td {padding: 10px; }
|
48 |
+
.pmpro_checkout tr.odd td {background: #FAFAFA; }
|
49 |
+
.pmpro_checkout tr.selected td {background: #FFC; }
|
50 |
+
.pmpro_checkout tr.active td {background: #FFC; }
|
51 |
+
.pmpro_checkout .name {font-weight: bold; }
|
52 |
+
.pmpro_checkout ul {margin: 5px 0 0 20px; padding: 0; font-size: .8em; color: #444; }
|
53 |
+
|
54 |
+
.pmpro_checkout tfoot td {padding: 10px; color: #444; }
|
55 |
+
.pmpro_checkout .topfoot td {border-top: 2px solid #CCC;}
|
56 |
+
.pmpro_checkout .total td {border-top: 1px solid #CCC; font-size: 1.2em; font-weight: bold; padding-bottom: 30px;}
|
57 |
+
.pmpro_checkout tfoot .entercode td {background: #EEE; }
|
58 |
+
|
59 |
+
.pmpro_checkout td.rtbdr {border-right: 1px solid #CCC; }
|
60 |
+
|
61 |
+
.pmpro_checkout select {font-size: 11px; }
|
62 |
+
|
63 |
+
.pmpro_thead-msg {display: block; float: right; width: auto; font-style: italic; font-weight: normal; text-align: right; }
|
64 |
+
|
65 |
+
.pmpro_ordersummary {float: right; }
|
66 |
+
|
67 |
+
#pmpro_license { background: #FFF; padding: 5px; border: 1px solid #CCC; height: 200px; margin: 3px; color: #666; overflow: auto; }
|
68 |
+
|
69 |
+
.pmpro_sslseal {float: right; clear: none !important; margin: 0 !important; }
|
70 |
+
|
71 |
+
a.pmpro_radio {text-decoration: none; color: #000;}
|
72 |
+
|
73 |
+
/* button styles from member lite */
|
74 |
+
.pmpro_btn, .pmpro_btn:link, #pmpro_levels_table tbody a, #pmpro_levels_table tbody a:link, .pmpro_btn-submit-checkout, .pmpro_yeslink, .pmpro_nolink, .pmpro_yeslink:link, .pmpro_nolink:link, .pmpro_content_message a {display: inline-block; margin: 0; background-position: top left; background-repeat: repeat-x; cursor: pointer; border-radius: 4px; -moz-border-radius: 4px; padding: 5px 10px; text-decoration: none; text-shadow: 1px 1px 3px #000; border: none; font-family: Arial, Helvetica, sans-serif; }
|
75 |
+
.pmpro_btn:hover {background-position: bottom left; }
|
76 |
+
.pmpro_btn-grey, .pmpro_btn-grey:link, .pmpro_nolink, .pmpro_nolink:link {background: #EEE url(../images/bg_grad-grey.gif) 0px -5px repeat-x; border: 1px solid #CCC; text-shadow: none; }
|
77 |
+
.pmpro_btn-inactive {color: #AAA; text-shadow: none; border: 1px solid #CCC; cursor: not-allowed; }
|
78 |
+
.pmpro_btn {font-size: 14px; }
|
79 |
+
.pmpro_btn-primary, .pmpro_btn-primary:link, #pmpro_levels_table tbody a, #pmpro_levels_table tbody a:link, .pmpro_btn-submit-checkout, .pmpro_yeslink, .pmpro_yeslink:link {background-color: #666; background-image: url(../images/bg_grad-chrome.gif); color: #FFF; }
|
80 |
+
.pmpro_btn-primary:hover, #pmpro_levels_table tbody a:hover, .pmpro_btn-submit-checkout:hover, .pmpro_yeslink:hover {background: #444; color: #FFF; }
|
81 |
+
.pmpro_btn-inactive, .pmpro_btn-inactive:hover {background: #EEE url(../images/bg_grad-grey.gif) 0px -5px repeat-x; }
|
82 |
+
|
83 |
+
.pmpro_content_message a, .pmpro_content_message a:link {text-shadow: none; background: #EEE url(../images/bg_grad-grey.gif) 0px -5px repeat-x; border: 1px solid #CCC; color: #666; text-decoration: none; margin: 0 0 0 5px; }
|
84 |
+
.pmpro_content_message a:hover {background: #FFF; }
|
85 |
+
|
86 |
+
/*---------------------------------------
|
87 |
+
Membership Invoice
|
88 |
+
---------------------------------------*/
|
89 |
+
.pmpro_invoice { }
|
90 |
+
|
91 |
+
|
92 |
+
/*---------------------------------------
|
93 |
+
Membership Account
|
94 |
+
---------------------------------------*/
|
95 |
+
.pmpro_left {float: left; width: 49%; }
|
96 |
+
.pmpro_right {float: right; width: 49%; }
|
97 |
+
|
98 |
+
.pmpro_box {border: 1px solid #CCC; padding: 1em; margin: 0 0 1em 0; }
|
99 |
+
.pmpro_box h3 {border:none; background: none; border-bottom: 1px solid #CCC; padding: 0 0 .5em 0; margin: 0 0 .5em 0; }
|
100 |
+
|
101 |
+
.pmpro_hidden {display: none;}
|
102 |
+
li.pmpro_more {list-style-type: none; text-align: center; margin-left: -20px; padding-left: 0;}
|
103 |
+
|
104 |
+
|
105 |
+
/*---------------------------------------
|
106 |
+
Misc
|
107 |
+
---------------------------------------*/
|
108 |
+
.pmpro_a-right {float: right; width: auto; text-align: right; text-decoration: underline; font-size: 11px; }
|
109 |
+
.pmpro_a-print {float: right; width: auto; text-decoration: none; color: #345395; background: url(../images/printer.gif) top left no-repeat; padding: 0px 0px 2px 20px; font-size: 11px; line-height: 16px; cursor: pointer; }
|
110 |
+
|
111 |
+
.pmpro_red {color: #CC0000; }
|
112 |
+
.pmpro_grey {color: #999; }
|
113 |
+
|
114 |
+
.top1em {margin-top: 1em;}
|
115 |
+
.bot1em {margin-bottom: 1em;}
|
116 |
+
.bot0em {margin-bottom: 0em;}
|
117 |
+
.clear {clear: both; }
|
118 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
.pmpro_small {font-size: .8em;}
|
email/admin_change.html
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<p>An administrator at !!sitename!! has changed your membership level.</p>
|
2 |
|
3 |
-
<p
|
4 |
|
5 |
<p>If you did not request this membership change and would like more information please contact us at !!siteemail!!</p>
|
6 |
|
1 |
<p>An administrator at !!sitename!! has changed your membership level.</p>
|
2 |
|
3 |
+
<p>Your !!membership_change!!.</p>
|
4 |
|
5 |
<p>If you did not request this membership change and would like more information please contact us at !!siteemail!!</p>
|
6 |
|
email/billing.html
CHANGED
@@ -3,7 +3,10 @@
|
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>
|
5 |
Billing Information:<br />
|
6 |
-
!!
|
|
|
|
|
|
|
7 |
</p>
|
8 |
|
9 |
<p>
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>
|
5 |
Billing Information:<br />
|
6 |
+
!!billing_name!!<br />
|
7 |
+
!!billing_street!!<br />
|
8 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
9 |
+
!!billing_phone!!
|
10 |
</p>
|
11 |
|
12 |
<p>
|
email/billing_failure.html
CHANGED
@@ -3,7 +3,11 @@
|
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>The most recent account information we have on file is:</p>
|
5 |
|
6 |
-
<p>!!
|
|
|
|
|
|
|
|
|
7 |
|
8 |
<p>
|
9 |
!!cardtype!!: !!accountnumber!!<br />
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>The most recent account information we have on file is:</p>
|
5 |
|
6 |
+
<p>!!billing_name!!</br />
|
7 |
+
!!billing_street!!<br />
|
8 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
9 |
+
!!billing_phone!!
|
10 |
+
</p>
|
11 |
|
12 |
<p>
|
13 |
!!cardtype!!: !!accountnumber!!<br />
|
email/billing_failure_admin.html
CHANGED
@@ -3,7 +3,11 @@
|
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>The most recent account information we have on file is:</p>
|
5 |
|
6 |
-
<p>!!
|
|
|
|
|
|
|
|
|
7 |
|
8 |
<p>
|
9 |
!!cardtype!!: !!accountnumber!!<br />
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>The most recent account information we have on file is:</p>
|
5 |
|
6 |
+
<p>!!billing_name!!</br />
|
7 |
+
!!billing_street!!<br />
|
8 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
9 |
+
!!billing_phone!!
|
10 |
+
</p>
|
11 |
|
12 |
<p>
|
13 |
!!cardtype!!: !!accountnumber!!<br />
|
email/cancel.html
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
-
<p>Your membership at !!sitename!! has been
|
2 |
|
3 |
<p>If you did not request this cancellation and would like more information please contact us at !!siteemail!!</p>
|
1 |
+
<p>Your membership at !!sitename!! has been canceled.</p>
|
2 |
|
3 |
<p>If you did not request this cancellation and would like more information please contact us at !!siteemail!!</p>
|
email/cancel_admin.html
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<p>The membership for !!user_login!! at !!sitename!! has been
|
2 |
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>Membership Level: !!membership_level_name!!</p>
|
1 |
+
<p>The membership for !!user_login!! at !!sitename!! has been canceled.</p>
|
2 |
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>Membership Level: !!membership_level_name!!</p>
|
email/checkout_check.html
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
|
12 |
<p>
|
13 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
14 |
-
Total Billed:
|
15 |
</p>
|
16 |
|
17 |
<p>Log in to your membership account here: !!login_link!!</p>
|
11 |
|
12 |
<p>
|
13 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
14 |
+
Total Billed: $!!invoice_total!!
|
15 |
</p>
|
16 |
|
17 |
<p>Log in to your membership account here: !!login_link!!</p>
|
email/checkout_express.html
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
|
9 |
<p>
|
10 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Total Billed:
|
12 |
</p>
|
13 |
|
14 |
-
<p>Log in to your membership account here: !!login_link!!</p>
|
8 |
|
9 |
<p>
|
10 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
+
Total Billed: $!!invoice_total!!
|
12 |
</p>
|
13 |
|
14 |
+
<p>Log in to your membership account here: !!login_link!!</p>
|
email/checkout_express_admin.html
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
|
9 |
<p>
|
10 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Total Billed:
|
12 |
</p>
|
13 |
|
14 |
-
<p>Log in to your membership account here: !!login_link!!</p>
|
8 |
|
9 |
<p>
|
10 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
+
Total Billed: $!!invoice_total!!
|
12 |
</p>
|
13 |
|
14 |
+
<p>Log in to your membership account here: !!login_link!!</p>
|
email/checkout_freetrial.html
CHANGED
@@ -8,7 +8,10 @@
|
|
8 |
|
9 |
<p>
|
10 |
Billing Information on File:<br />
|
11 |
-
!!
|
|
|
|
|
|
|
12 |
</p>
|
13 |
|
14 |
<p>
|
8 |
|
9 |
<p>
|
10 |
Billing Information on File:<br />
|
11 |
+
!!billing_name!!<br />
|
12 |
+
!!billing_street!!<br />
|
13 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
14 |
+
!!billing_phone!!
|
15 |
</p>
|
16 |
|
17 |
<p>
|
email/checkout_freetrial_admin.html
CHANGED
@@ -8,7 +8,10 @@
|
|
8 |
|
9 |
<p>
|
10 |
Billing Information on File:<br />
|
11 |
-
!!
|
|
|
|
|
|
|
12 |
</p>
|
13 |
|
14 |
<p>
|
8 |
|
9 |
<p>
|
10 |
Billing Information on File:<br />
|
11 |
+
!!billing_name!!<br />
|
12 |
+
!!billing_street!!<br />
|
13 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
14 |
+
!!billing_phone!!
|
15 |
</p>
|
16 |
|
17 |
<p>
|
email/checkout_paid.html
CHANGED
@@ -12,7 +12,10 @@
|
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
-
!!
|
|
|
|
|
|
|
16 |
</p>
|
17 |
|
18 |
<p>
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
+
!!billing_name!!<br />
|
16 |
+
!!billing_street!!<br />
|
17 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
18 |
+
!!billing_phone!!
|
19 |
</p>
|
20 |
|
21 |
<p>
|
email/checkout_paid_admin.html
CHANGED
@@ -12,7 +12,10 @@
|
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
-
!!
|
|
|
|
|
|
|
16 |
</p>
|
17 |
|
18 |
<p>
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
+
!!billing_name!!<br />
|
16 |
+
!!billing_street!!<br />
|
17 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
18 |
+
!!billing_phone!!
|
19 |
</p>
|
20 |
|
21 |
<p>
|
email/checkout_trial.html
CHANGED
@@ -12,7 +12,10 @@
|
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
-
!!
|
|
|
|
|
|
|
16 |
</p>
|
17 |
|
18 |
<p>
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
+
!!billing_name!!<br />
|
16 |
+
!!billing_street!!<br />
|
17 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
18 |
+
!!billing_phone!!
|
19 |
</p>
|
20 |
|
21 |
<p>
|
email/checkout_trial_admin.html
CHANGED
@@ -12,7 +12,10 @@
|
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
-
!!
|
|
|
|
|
|
|
16 |
</p>
|
17 |
|
18 |
<p>
|
12 |
</p>
|
13 |
<p>
|
14 |
Billing Information:<br />
|
15 |
+
!!billing_name!!<br />
|
16 |
+
!!billing_street!!<br />
|
17 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
18 |
+
!!billing_phone!!
|
19 |
</p>
|
20 |
|
21 |
<p>
|
email/credit_card_expiring.html
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<p>The payment method used for your membership at !!sitename!! will expire soon. <strong>Please click the following link to log in and update your billing information to avoid account suspension. !!login_link!!</strong></p>
|
2 |
-
|
3 |
-
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>The most recent account information we have on file is:</p>
|
5 |
-
|
6 |
-
<p>!!billing_name!!</br />
|
7 |
-
!!billing_address!!
|
8 |
-
</p>
|
9 |
-
|
10 |
-
<p>
|
11 |
-
!!cardtype!!: !!accountnumber!!<br />
|
12 |
-
Expires: !!expirationmonth!!/!!expirationyear!!
|
13 |
-
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
email/invoice.html
CHANGED
@@ -3,11 +3,15 @@
|
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>
|
5 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
6 |
-
Total Billed:
|
7 |
</p>
|
8 |
<p>
|
9 |
Billing Information:<br />
|
10 |
-
!!
|
|
|
|
|
|
|
|
|
11 |
</p>
|
12 |
|
13 |
<p>
|
3 |
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
<p>
|
5 |
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
6 |
+
Total Billed: $!!invoice_total!!
|
7 |
</p>
|
8 |
<p>
|
9 |
Billing Information:<br />
|
10 |
+
!!billing_name!!<br />
|
11 |
+
!!billing_street!!<br />
|
12 |
+
!!billing_city!!, !!billing_state!! !!billing_zip!!<br />
|
13 |
+
!!billing_country!!<br />
|
14 |
+
!!billing_phone!!
|
15 |
</p>
|
16 |
|
17 |
<p>
|
images/Paid-Memberships-Pro.png
DELETED
Binary file
|
images/Paid-Memberships-Pro_watermark.png
DELETED
Binary file
|
images/icon-pmproadmin16-sprite.png
DELETED
Binary file
|
images/icon-pmproadmin16-sprite_2x.png
DELETED
Binary file
|
images/icon-pmproadmin32.png
DELETED
Binary file
|
images/icon-pmproadmin32_2x.png
DELETED
Binary file
|
includes/adminpages.php
DELETED
@@ -1,226 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Get array of PMPro Capabilities
|
4 |
-
*/
|
5 |
-
function pmpro_getPMProCaps()
|
6 |
-
{
|
7 |
-
$pmpro_caps = array(
|
8 |
-
//pmpro_memberships_menu //this controls viewing the menu itself
|
9 |
-
'pmpro_membershiplevels',
|
10 |
-
'pmpro_pagesettings',
|
11 |
-
'pmpro_paymentsettings',
|
12 |
-
'pmpro_emailsettings',
|
13 |
-
'pmpro_advancedsettings',
|
14 |
-
'pmpro_addons',
|
15 |
-
'pmpro_memberslist',
|
16 |
-
'pmpro_reports',
|
17 |
-
'pmpro_orders',
|
18 |
-
'pmpro_discountcodes'
|
19 |
-
);
|
20 |
-
|
21 |
-
return $pmpro_caps;
|
22 |
-
}
|
23 |
-
|
24 |
-
/*
|
25 |
-
Dashboard Menu
|
26 |
-
*/
|
27 |
-
function pmpro_add_pages()
|
28 |
-
{
|
29 |
-
global $wpdb;
|
30 |
-
|
31 |
-
//array of all caps in the menu
|
32 |
-
$pmpro_caps = pmpro_getPMProCaps();
|
33 |
-
|
34 |
-
//the top level menu links to the first page they have access to
|
35 |
-
foreach($pmpro_caps as $cap)
|
36 |
-
{
|
37 |
-
if(current_user_can($cap))
|
38 |
-
{
|
39 |
-
$top_menu_cap = $cap;
|
40 |
-
break;
|
41 |
-
}
|
42 |
-
}
|
43 |
-
|
44 |
-
if(empty($top_menu_cap))
|
45 |
-
return;
|
46 |
-
|
47 |
-
add_menu_page(__('Memberships', 'pmpro'), __('Memberships', 'pmpro'), 'pmpro_memberships_menu', 'pmpro-membershiplevels', $top_menu_cap, PMPRO_URL . '/images/menu_users.png');
|
48 |
-
add_submenu_page('pmpro-membershiplevels', __('Page Settings', 'pmpro'), __('Page Settings', 'pmpro'), 'pmpro_pagesettings', 'pmpro-pagesettings', 'pmpro_pagesettings');
|
49 |
-
add_submenu_page('pmpro-membershiplevels', __('Payment Settings', 'pmpro'), __('Payment Settings', 'pmpro'), 'pmpro_paymentsettings', 'pmpro-paymentsettings', 'pmpro_paymentsettings');
|
50 |
-
add_submenu_page('pmpro-membershiplevels', __('Email Settings', 'pmpro'), __('Email Settings', 'pmpro'), 'pmpro_emailsettings', 'pmpro-emailsettings', 'pmpro_emailsettings');
|
51 |
-
add_submenu_page('pmpro-membershiplevels', __('Advanced Settings', 'pmpro'), __('Advanced Settings', 'pmpro'), 'pmpro_advancedsettings', 'pmpro-advancedsettings', 'pmpro_advancedsettings');
|
52 |
-
add_submenu_page('pmpro-membershiplevels', __('Add Ons', 'pmpro'), __('Add Ons', 'pmpro'), 'pmpro_addons', 'pmpro-addons', 'pmpro_addons');
|
53 |
-
add_submenu_page('pmpro-membershiplevels', __('Members List', 'pmpro'), __('Members List', 'pmpro'), 'pmpro_memberslist', 'pmpro-memberslist', 'pmpro_memberslist');
|
54 |
-
add_submenu_page('pmpro-membershiplevels', __('Reports', 'pmpro'), __('Reports', 'pmpro'), 'pmpro_reports', 'pmpro-reports', 'pmpro_reports');
|
55 |
-
add_submenu_page('pmpro-membershiplevels', __('Orders', 'pmpro'), __('Orders', 'pmpro'), 'pmpro_orders', 'pmpro-orders', 'pmpro_orders');
|
56 |
-
add_submenu_page('pmpro-membershiplevels', __('Discount Codes', 'pmpro'), __('Discount Codes', 'pmpro'), 'pmpro_discountcodes', 'pmpro-discountcodes', 'pmpro_discountcodes');
|
57 |
-
|
58 |
-
//rename the automatically added Memberships submenu item
|
59 |
-
global $submenu;
|
60 |
-
if(!empty($submenu['pmpro-membershiplevels']))
|
61 |
-
{
|
62 |
-
if(current_user_can("pmpro_membershiplevels"))
|
63 |
-
{
|
64 |
-
$submenu['pmpro-membershiplevels'][0][0] = __( 'Membership Levels', 'pmpro' );
|
65 |
-
$submenu['pmpro-membershiplevels'][0][3] = __( 'Membership Levels', 'pmpro' );
|
66 |
-
}
|
67 |
-
else
|
68 |
-
{
|
69 |
-
unset($submenu['pmpro-membershiplevels']);
|
70 |
-
}
|
71 |
-
}
|
72 |
-
}
|
73 |
-
add_action('admin_menu', 'pmpro_add_pages');
|
74 |
-
|
75 |
-
/*
|
76 |
-
Admin Bar
|
77 |
-
*/
|
78 |
-
function pmpro_admin_bar_menu() {
|
79 |
-
global $wp_admin_bar;
|
80 |
-
|
81 |
-
//view menu at all?
|
82 |
-
if ( !current_user_can('pmpro_memberships_menu') || !is_admin_bar_showing() )
|
83 |
-
return;
|
84 |
-
|
85 |
-
//array of all caps in the menu
|
86 |
-
$pmpro_caps = pmpro_getPMProCaps();
|
87 |
-
|
88 |
-
//the top level menu links to the first page they have access to
|
89 |
-
foreach($pmpro_caps as $cap)
|
90 |
-
{
|
91 |
-
if(current_user_can($cap))
|
92 |
-
{
|
93 |
-
$top_menu_page = str_replace("_", "-", $cap);
|
94 |
-
break;
|
95 |
-
}
|
96 |
-
}
|
97 |
-
|
98 |
-
$wp_admin_bar->add_menu( array(
|
99 |
-
'id' => 'paid-memberships-pro',
|
100 |
-
'title' => __( 'Memberships', 'pmpro'),
|
101 |
-
'href' => get_admin_url(NULL, '/admin.php?page=' . $top_menu_page) ) );
|
102 |
-
|
103 |
-
if(current_user_can('pmpro_membershiplevels'))
|
104 |
-
$wp_admin_bar->add_menu( array(
|
105 |
-
'id' => 'pmpro-membership-levels',
|
106 |
-
'parent' => 'paid-memberships-pro',
|
107 |
-
'title' => __( 'Membership Levels', 'pmpro'),
|
108 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-membershiplevels') ) );
|
109 |
-
|
110 |
-
if(current_user_can('pmpro_pagesettings'))
|
111 |
-
$wp_admin_bar->add_menu( array(
|
112 |
-
'id' => 'pmpro-page-settings',
|
113 |
-
'parent' => 'paid-memberships-pro',
|
114 |
-
'title' => __( 'Page Settings', 'pmpro'),
|
115 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-pagesettings') ) );
|
116 |
-
|
117 |
-
if(current_user_can('pmpro_paymentsettings'))
|
118 |
-
$wp_admin_bar->add_menu( array(
|
119 |
-
'id' => 'pmpro-payment-settings',
|
120 |
-
'parent' => 'paid-memberships-pro',
|
121 |
-
'title' => __( 'Payment Settings', 'pmpro'),
|
122 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-paymentsettings') ) );
|
123 |
-
|
124 |
-
if(current_user_can('pmpro_emailsettings'))
|
125 |
-
$wp_admin_bar->add_menu( array(
|
126 |
-
'id' => 'pmpro-email-settings',
|
127 |
-
'parent' => 'paid-memberships-pro',
|
128 |
-
'title' => __( 'Email Settings', 'pmpro'),
|
129 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-emailsettings') ) );
|
130 |
-
|
131 |
-
if(current_user_can('pmpro_advancedsettings'))
|
132 |
-
$wp_admin_bar->add_menu( array(
|
133 |
-
'id' => 'pmpro-advanced-settings',
|
134 |
-
'parent' => 'paid-memberships-pro',
|
135 |
-
'title' => __( 'Advanced Settings', 'pmpro'),
|
136 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-advancedsettings') ) );
|
137 |
-
|
138 |
-
if(current_user_can('pmpro_addons'))
|
139 |
-
$wp_admin_bar->add_menu( array(
|
140 |
-
'id' => 'pmpro-addons',
|
141 |
-
'parent' => 'paid-memberships-pro',
|
142 |
-
'title' => __( 'Add Ons', 'pmpro'),
|
143 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-addons') ) );
|
144 |
-
|
145 |
-
if(current_user_can('pmpro_memberslist'))
|
146 |
-
$wp_admin_bar->add_menu( array(
|
147 |
-
'id' => 'pmpro-members-list',
|
148 |
-
'parent' => 'paid-memberships-pro',
|
149 |
-
'title' => __( 'Members List', 'pmpro'),
|
150 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-memberslist') ) );
|
151 |
-
|
152 |
-
if(current_user_can('pmpro_reports'))
|
153 |
-
$wp_admin_bar->add_menu( array(
|
154 |
-
'id' => 'pmpro-reports',
|
155 |
-
'parent' => 'paid-memberships-pro',
|
156 |
-
'title' => __( 'Reports', 'pmpro'),
|
157 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-reports') ) );
|
158 |
-
|
159 |
-
if(current_user_can('pmpro_orders'))
|
160 |
-
$wp_admin_bar->add_menu( array(
|
161 |
-
'id' => 'pmpro-orders',
|
162 |
-
'parent' => 'paid-memberships-pro',
|
163 |
-
'title' => __( 'Orders', 'pmpro'),
|
164 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-orders') ) );
|
165 |
-
|
166 |
-
if(current_user_can('pmpro_discountcodes'))
|
167 |
-
$wp_admin_bar->add_menu( array(
|
168 |
-
'id' => 'pmpro-discount-codes',
|
169 |
-
'parent' => 'paid-memberships-pro',
|
170 |
-
'title' => __( 'Discount Codes', 'pmpro'),
|
171 |
-
'href' => get_admin_url(NULL, '/admin.php?page=pmpro-discountcodes') ) );
|
172 |
-
}
|
173 |
-
add_action('admin_bar_menu', 'pmpro_admin_bar_menu', 1000);
|
174 |
-
|
175 |
-
/*
|
176 |
-
Functions to load pages from adminpages directory
|
177 |
-
*/
|
178 |
-
function pmpro_reports()
|
179 |
-
{
|
180 |
-
require_once(PMPRO_DIR . "/adminpages/reports.php");
|
181 |
-
}
|
182 |
-
|
183 |
-
function pmpro_memberslist()
|
184 |
-
{
|
185 |
-
require_once(PMPRO_DIR . "/adminpages/memberslist.php");
|
186 |
-
}
|
187 |
-
|
188 |
-
function pmpro_discountcodes()
|
189 |
-
{
|
190 |
-
require_once(PMPRO_DIR . "/adminpages/discountcodes.php");
|
191 |
-
}
|
192 |
-
|
193 |
-
function pmpro_membershiplevels()
|
194 |
-
{
|
195 |
-
require_once(PMPRO_DIR . "/adminpages/membershiplevels.php");
|
196 |
-
}
|
197 |
-
|
198 |
-
function pmpro_pagesettings()
|
199 |
-
{
|
200 |
-
require_once(PMPRO_DIR . "/adminpages/pagesettings.php");
|
201 |
-
}
|
202 |
-
|
203 |
-
function pmpro_paymentsettings()
|
204 |
-
{
|
205 |
-
require_once(PMPRO_DIR . "/adminpages/paymentsettings.php");
|
206 |
-
}
|
207 |
-
|
208 |
-
function pmpro_emailsettings()
|
209 |
-
{
|
210 |
-
require_once(PMPRO_DIR . "/adminpages/emailsettings.php");
|
211 |
-
}
|
212 |
-
|
213 |
-
function pmpro_advancedsettings()
|
214 |
-
{
|
215 |
-
require_once(PMPRO_DIR . "/adminpages/advancedsettings.php");
|
216 |
-
}
|
217 |
-
|
218 |
-
function pmpro_addons()
|
219 |
-
{
|
220 |
-
require_once(PMPRO_DIR . "/adminpages/addons.php");
|
221 |
-
}
|
222 |
-
|
223 |
-
function pmpro_orders()
|
224 |
-
{
|
225 |
-
require_once(PMPRO_DIR . "/adminpages/orders.php");
|
226 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/cleanup.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Clean things up when deletes happen, etc. (This stuff needs a better home.)
|
4 |
-
*/
|
5 |
-
//deleting a user? remove their account info.
|
6 |
-
function pmpro_delete_user($user_id = NULL)
|
7 |
-
{
|
8 |
-
global $wpdb;
|
9 |
-
|
10 |
-
//changing their membership level to 0 will cancel any subscription and remove their membership level entry
|
11 |
-
//we don't remove the orders because it would affect reporting
|
12 |
-
if(pmpro_changeMembershipLevel(0, $user_id))
|
13 |
-
{
|
14 |
-
//okay
|
15 |
-
}
|
16 |
-
else
|
17 |
-
{
|
18 |
-
//okay, guessing they didn't have a level
|
19 |
-
}
|
20 |
-
}
|
21 |
-
add_action('delete_user', 'pmpro_delete_user');
|
22 |
-
add_action('wpmu_delete_user', 'pmpro_delete_user');
|
23 |
-
|
24 |
-
//deleting a category? remove any level associations
|
25 |
-
function pmpro_delete_category($cat_id = NULL)
|
26 |
-
{
|
27 |
-
global $wpdb;
|
28 |
-
$sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_categories WHERE category_id = '" . $cat_id . "'";
|
29 |
-
$wpdb->query($sqlQuery);
|
30 |
-
}
|
31 |
-
add_action('delete_category', 'pmpro_delete_category');
|
32 |
-
|
33 |
-
//deleting a post? remove any level associations
|
34 |
-
function pmpro_delete_post($post_id = NULL)
|
35 |
-
{
|
36 |
-
global $wpdb;
|
37 |
-
$sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_pages WHERE page_id = '" . $post_id . "'";
|
38 |
-
$wpdb->query($sqlQuery);
|
39 |
-
}
|
40 |
-
add_action('delete_post', 'pmpro_delete_post');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/content.php
DELETED
@@ -1,405 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Functions to detect member content and protect it.
|
4 |
-
*/
|
5 |
-
function pmpro_has_membership_access($post_id = NULL, $user_id = NULL, $return_membership_levels = false)
|
6 |
-
{
|
7 |
-
global $post, $wpdb, $current_user;
|
8 |
-
//use globals if no values supplied
|
9 |
-
if(!$post_id)
|
10 |
-
$post_id = $post->ID;
|
11 |
-
if(!$user_id)
|
12 |
-
$user_id = $current_user->ID;
|
13 |
-
|
14 |
-
//no post, return true (changed from false in version 1.7.2)
|
15 |
-
if(!$post_id)
|
16 |
-
return true;
|
17 |
-
|
18 |
-
//if no post or current_user object, set them up
|
19 |
-
if(!empty($post->ID) && $post_id == $post->ID)
|
20 |
-
$mypost = $post;
|
21 |
-
else
|
22 |
-
$mypost = get_post($post_id);
|
23 |
-
|
24 |
-
if($user_id == $current_user->ID)
|
25 |
-
$myuser = $current_user;
|
26 |
-
else
|
27 |
-
$myuser = get_userdata($user_id);
|
28 |
-
|
29 |
-
//for these post types, we want to check the parent
|
30 |
-
if($mypost->post_type == "attachment" || $mypost->post_type == "revision")
|
31 |
-
{
|
32 |
-
$mypost = get_post($mypost->post_parent);
|
33 |
-
}
|
34 |
-
|
35 |
-
if($mypost->post_type == "post")
|
36 |
-
{
|
37 |
-
$post_categories = wp_get_post_categories($mypost->ID);
|
38 |
-
|
39 |
-
if(!$post_categories)
|
40 |
-
{
|
41 |
-
//just check for entries in the memberships_pages table
|
42 |
-
$sqlQuery = "SELECT m.id, m.name FROM $wpdb->pmpro_memberships_pages mp LEFT JOIN $wpdb->pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '" . $mypost->ID . "'";
|
43 |
-
}
|
44 |
-
else
|
45 |
-
{
|
46 |
-
//are any of the post categories associated with membership levels? also check the memberships_pages table
|
47 |
-
$sqlQuery = "(SELECT m.id, m.name FROM $wpdb->pmpro_memberships_categories mc LEFT JOIN $wpdb->pmpro_membership_levels m ON mc.membership_id = m.id WHERE mc.category_id IN(" . implode(",", $post_categories) . ") AND m.id IS NOT NULL) UNION (SELECT m.id, m.name FROM $wpdb->pmpro_memberships_pages mp LEFT JOIN $wpdb->pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '" . $mypost->ID . "')";
|
48 |
-
}
|
49 |
-
}
|
50 |
-
else
|
51 |
-
{
|
52 |
-
//are any membership levels associated with this page?
|
53 |
-
$sqlQuery = "SELECT m.id, m.name FROM $wpdb->pmpro_memberships_pages mp LEFT JOIN $wpdb->pmpro_membership_levels m ON mp.membership_id = m.id WHERE mp.page_id = '" . $mypost->ID . "'";
|
54 |
-
}
|
55 |
-
|
56 |
-
|
57 |
-
$post_membership_levels = $wpdb->get_results($sqlQuery);
|
58 |
-
|
59 |
-
$post_membership_levels_ids = array();
|
60 |
-
$post_membership_levels_names = array();
|
61 |
-
|
62 |
-
if(!$post_membership_levels)
|
63 |
-
{
|
64 |
-
$hasaccess = true;
|
65 |
-
}
|
66 |
-
else
|
67 |
-
{
|
68 |
-
//we need to see if the user has access
|
69 |
-
foreach($post_membership_levels as $level)
|
70 |
-
{
|
71 |
-
$post_membership_levels_ids[] = $level->id;
|
72 |
-
$post_membership_levels_names[] = $level->name;
|
73 |
-
}
|
74 |
-
|
75 |
-
//levels found. check if this is in a feed or if the current user is in at least one of those membership levels
|
76 |
-
if(is_feed())
|
77 |
-
{
|
78 |
-
//always block restricted feeds
|
79 |
-
$hasaccess = false;
|
80 |
-
}
|
81 |
-
elseif(!empty($myuser->ID))
|
82 |
-
{
|
83 |
-
$myuser->membership_level = pmpro_getMembershipLevelForUser($myuser->ID);
|
84 |
-
if(!empty($myuser->membership_level->ID) && in_array($myuser->membership_level->ID, $post_membership_levels_ids))
|
85 |
-
{
|
86 |
-
//the users membership id is one that will grant access
|
87 |
-
$hasaccess = true;
|
88 |
-
}
|
89 |
-
else
|
90 |
-
{
|
91 |
-
//user isn't a member of a level with access
|
92 |
-
$hasaccess = false;
|
93 |
-
}
|
94 |
-
}
|
95 |
-
else
|
96 |
-
{
|
97 |
-
//user is not logged in and this content requires membership
|
98 |
-
$hasaccess = false;
|
99 |
-
}
|
100 |
-
}
|
101 |
-
|
102 |
-
/*
|
103 |
-
Filters
|
104 |
-
The generic filter is run first. Then if there is a filter for this post type, that is run.
|
105 |
-
*/
|
106 |
-
//general filter for all posts
|
107 |
-
$hasaccess = apply_filters("pmpro_has_membership_access_filter", $hasaccess, $mypost, $myuser, $post_membership_levels);
|
108 |
-
//filter for this post type
|
109 |
-
if(has_filter("pmpro_has_membership_access_filter_" . $mypost->post_type))
|
110 |
-
$hasaccess = apply_filters("pmpro_has_membership_access_filter_" . $mypost->post_type, $hasaccess, $mypost, $myuser, $post_membership_levels);
|
111 |
-
|
112 |
-
//return
|
113 |
-
if($return_membership_levels)
|
114 |
-
return array($hasaccess, $post_membership_levels_ids, $post_membership_levels_names);
|
115 |
-
else
|
116 |
-
return $hasaccess;
|
117 |
-
}
|
118 |
-
|
119 |
-
function pmpro_search_filter($query)
|
120 |
-
{
|
121 |
-
global $current_user, $wpdb, $pmpro_pages;
|
122 |
-
|
123 |
-
//hide pmpro pages from search results
|
124 |
-
if(!$query->is_admin && $query->is_search && empty($query->query['post_parent']))
|
125 |
-
{
|
126 |
-
$query->set('post__not_in', $pmpro_pages ); // id of page or post
|
127 |
-
}
|
128 |
-
|
129 |
-
//hide member pages from non-members (make sure they aren't hidden from members)
|
130 |
-
if(!$query->is_admin &&
|
131 |
-
!$query->is_singular &&
|
132 |
-
empty($query->query['post_parent']) &&
|
133 |
-
(
|
134 |
-
empty($query->query_vars['post_type']) ||
|
135 |
-
in_array($query->query_vars['post_type'], apply_filters('pmpro_search_filter_post_types', array("page", "post")))
|
136 |
-
)
|
137 |
-
)
|
138 |
-
{
|
139 |
-
//get page ids that are in my levels
|
140 |
-
$levels = pmpro_getMembershipLevelsForUser($current_user->ID);
|
141 |
-
$my_pages = array();
|
142 |
-
|
143 |
-
if($levels) {
|
144 |
-
foreach($levels as $key => $level) {
|
145 |
-
//get restricted posts for level
|
146 |
-
$sql = "SELECT page_id FROM $wpdb->pmpro_memberships_pages WHERE membership_id=" . $current_user->membership_level->ID;
|
147 |
-
$member_pages = $wpdb->get_col($sql);
|
148 |
-
$my_pages = array_unique(array_merge($my_pages, $member_pages));
|
149 |
-
}
|
150 |
-
}
|
151 |
-
|
152 |
-
//get hidden page ids
|
153 |
-
if(!empty($my_pages))
|
154 |
-
$sql = "SELECT page_id FROM $wpdb->pmpro_memberships_pages WHERE page_id NOT IN(" . implode(',', $my_pages) . ")";
|
155 |
-
else
|
156 |
-
$sql = "SELECT page_id FROM $wpdb->pmpro_memberships_pages";
|
157 |
-
$hidden_page_ids = array_values(array_unique($wpdb->get_col($sql)));
|
158 |
-
|
159 |
-
if($hidden_page_ids)
|
160 |
-
$query->set('post__not_in', $hidden_page_ids);
|
161 |
-
|
162 |
-
//get categories that are filtered by level, but not my level
|
163 |
-
$my_cats = array();
|
164 |
-
|
165 |
-
if($levels) {
|
166 |
-
foreach($levels as $key => $level) {
|
167 |
-
$member_cats = pmpro_getMembershipCategories($level->id);
|
168 |
-
$my_cats = array_unique(array_merge($my_cats, $member_cats));
|
169 |
-
}
|
170 |
-
}
|
171 |
-
|
172 |
-
//get hidden cats
|
173 |
-
if(!empty($my_cats))
|
174 |
-
$sql = "SELECT category_id FROM $wpdb->pmpro_memberships_categories WHERE category_id NOT IN(" . implode(',', $my_cats) . ")";
|
175 |
-
else
|
176 |
-
$sql = "SELECT category_id FROM $wpdb->pmpro_memberships_categories";
|
177 |
-
|
178 |
-
$hidden_cat_ids = array_values(array_unique($wpdb->get_col($sql)));
|
179 |
-
|
180 |
-
//make this work
|
181 |
-
if($hidden_cat_ids)
|
182 |
-
$query->set('category__not_in', $hidden_cat_ids);
|
183 |
-
}
|
184 |
-
|
185 |
-
return $query;
|
186 |
-
}
|
187 |
-
$filterqueries = pmpro_getOption("filterqueries");
|
188 |
-
if(!empty($filterqueries))
|
189 |
-
add_filter( 'pre_get_posts', 'pmpro_search_filter' );
|
190 |
-
|
191 |
-
function pmpro_membership_content_filter($content, $skipcheck = false)
|
192 |
-
{
|
193 |
-
global $post, $current_user;
|
194 |
-
|
195 |
-
if(!$skipcheck)
|
196 |
-
{
|
197 |
-
$hasaccess = pmpro_has_membership_access(NULL, NULL, true);
|
198 |
-
if(is_array($hasaccess))
|
199 |
-
{
|
200 |
-
//returned an array to give us the membership level values
|
201 |
-
$post_membership_levels_ids = $hasaccess[1];
|
202 |
-
$post_membership_levels_names = $hasaccess[2];
|
203 |
-
$hasaccess = $hasaccess[0];
|
204 |
-
}
|
205 |
-
}
|
206 |
-
|
207 |
-
if($hasaccess)
|
208 |
-
{
|
209 |
-
//all good, return content
|
210 |
-
return $content;
|
211 |
-
}
|
212 |
-
else
|
213 |
-
{
|
214 |
-
//if show excerpts is set, return just the excerpt
|
215 |
-
if(pmpro_getOption("showexcerpts"))
|
216 |
-
{
|
217 |
-
//show excerpt
|
218 |
-
global $post;
|
219 |
-
if($post->post_excerpt)
|
220 |
-
{
|
221 |
-
//defined exerpt
|
222 |
-
$content = wpautop($post->post_excerpt);
|
223 |
-
}
|
224 |
-
elseif(strpos($content, "<span id=\"more-" . $post->ID . "\"></span>") !== false)
|
225 |
-
{
|
226 |
-
//more tag
|
227 |
-
$pos = strpos($content, "<span id=\"more-" . $post->ID . "\"></span>");
|
228 |
-
$content = wpautop(substr($content, 0, $pos));
|
229 |
-
}
|
230 |
-
elseif(strpos($content, 'class="more-link">') !== false)
|
231 |
-
{
|
232 |
-
//more link
|
233 |
-
$content = preg_replace("/\<a.*class\=\"more\-link\".*\>.*\<\/a\>/", "", $content);
|
234 |
-
}
|
235 |
-
else
|
236 |
-
{
|
237 |
-
//auto generated excerpt. pulled from wp_trim_excerpt
|
238 |
-
$content = strip_shortcodes( $content );
|
239 |
-
$content = str_replace(']]>', ']]>', $content);
|
240 |
-
$content = strip_tags($content);
|
241 |
-
$excerpt_length = apply_filters('excerpt_length', 55);
|
242 |
-
$words = preg_split("/[\n\r\t ]+/", $content, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
|
243 |
-
if ( count($words) > $excerpt_length ) {
|
244 |
-
array_pop($words);
|
245 |
-
$content = implode(' ', $words);
|
246 |
-
$content = $content . "... ";
|
247 |
-
} else {
|
248 |
-
$content = implode(' ', $words) . "... ";
|
249 |
-
}
|
250 |
-
|
251 |
-
$content = wpautop($content);
|
252 |
-
}
|
253 |
-
}
|
254 |
-
else
|
255 |
-
{
|
256 |
-
//else hide everything
|
257 |
-
$content = "";
|
258 |
-
}
|
259 |
-
|
260 |
-
if(empty($post_membership_levels_ids))
|
261 |
-
$post_membership_levels_ids = array();
|
262 |
-
|
263 |
-
if(empty($post_membership_levels_names))
|
264 |
-
$post_membership_levels_names = array();
|
265 |
-
|
266 |
-
$pmpro_content_message_pre = '<div class="pmpro_content_message">';
|
267 |
-
$pmpro_content_message_post = '</div>';
|
268 |
-
|
269 |
-
$sr_search = array("!!levels!!", "!!referrer!!");
|
270 |
-
$sr_replace = array(pmpro_implodeToEnglish($post_membership_levels_names), $_SERVER['REQUEST_URI']);
|
271 |
-
|
272 |
-
//get the correct message to show at the bottom
|
273 |
-
if(is_feed())
|
274 |
-
{
|
275 |
-
$newcontent = apply_filters("pmpro_rss_text_filter", stripslashes(pmpro_getOption("rsstext")));
|
276 |
-
$content .= $pmpro_content_message_pre . str_replace($sr_search, $sr_replace, $newcontent) . $pmpro_content_message_post;
|
277 |
-
}
|
278 |
-
elseif($current_user->ID)
|
279 |
-
{
|
280 |
-
//not a member
|
281 |
-
$newcontent = apply_filters("pmpro_non_member_text_filter", stripslashes(pmpro_getOption("nonmembertext")));
|
282 |
-
$content .= $pmpro_content_message_pre . str_replace($sr_search, $sr_replace, $newcontent) . $pmpro_content_message_post;
|
283 |
-
}
|
284 |
-
else
|
285 |
-
{
|
286 |
-
//not logged in!
|
287 |
-
$newcontent = apply_filters("pmpro_not_logged_in_text_filter", stripslashes(pmpro_getOption("notloggedintext")));
|
288 |
-
$content .= $pmpro_content_message_pre . str_replace($sr_search, $sr_replace, $newcontent) . $pmpro_content_message_post;
|
289 |
-
}
|
290 |
-
}
|
291 |
-
|
292 |
-
return $content;
|
293 |
-
}
|
294 |
-
add_filter('the_content', 'pmpro_membership_content_filter', 5);
|
295 |
-
add_filter('the_content_rss', 'pmpro_membership_content_filter', 5);
|
296 |
-
add_filter('comment_text_rss', 'pmpro_membership_content_filter', 5);
|
297 |
-
|
298 |
-
/*
|
299 |
-
If the_excerpt is called, we want to disable the_content filters so the PMPro messages aren't added to the content before AND after the ecerpt.
|
300 |
-
*/
|
301 |
-
function pmpro_membership_excerpt_filter($content, $skipcheck = false)
|
302 |
-
{
|
303 |
-
remove_filter('the_content', 'pmpro_membership_content_filter', 5);
|
304 |
-
$content = pmpro_membership_content_filter($content, $skipcheck);
|
305 |
-
add_filter('the_content', 'pmpro_membership_content_filter', 5);
|
306 |
-
|
307 |
-
return $content;
|
308 |
-
}
|
309 |
-
function pmpro_membership_get_excerpt_filter_start($content, $skipcheck = false)
|
310 |
-
{
|
311 |
-
remove_filter('the_content', 'pmpro_membership_content_filter', 5);
|
312 |
-
return $content;
|
313 |
-
}
|
314 |
-
function pmpro_membership_get_excerpt_filter_end($content, $skipcheck = false)
|
315 |
-
{
|
316 |
-
add_filter('the_content', 'pmpro_membership_content_filter', 5);
|
317 |
-
return $content;
|
318 |
-
}
|
319 |
-
add_filter('the_excerpt', 'pmpro_membership_excerpt_filter', 15);
|
320 |
-
add_filter('get_the_excerpt', 'pmpro_membership_get_excerpt_filter_start', 1);
|
321 |
-
add_filter('get_the_excerpt', 'pmpro_membership_get_excerpt_filter_end', 100);
|
322 |
-
|
323 |
-
function pmpro_comments_filter($comments, $post_id = NULL)
|
324 |
-
{
|
325 |
-
global $post, $wpdb, $current_user;
|
326 |
-
if(!$post_id)
|
327 |
-
$post_id = $post->ID;
|
328 |
-
|
329 |
-
if(!$comments)
|
330 |
-
return $comments; //if they are closed anyway, we don't need to check
|
331 |
-
|
332 |
-
global $post, $current_user;
|
333 |
-
|
334 |
-
$hasaccess = pmpro_has_membership_access(NULL, NULL, true);
|
335 |
-
if(is_array($hasaccess))
|
336 |
-
{
|
337 |
-
//returned an array to give us the membership level values
|
338 |
-
$post_membership_levels_ids = $hasaccess[1];
|
339 |
-
$post_membership_levels_names = $hasaccess[2];
|
340 |
-
$hasaccess = $hasaccess[0];
|
341 |
-
}
|
342 |
-
|
343 |
-
if($hasaccess)
|
344 |
-
{
|
345 |
-
//all good, return content
|
346 |
-
return $comments;
|
347 |
-
}
|
348 |
-
else
|
349 |
-
{
|
350 |
-
if(!$post_membership_levels_ids)
|
351 |
-
$post_membership_levels_ids = array();
|
352 |
-
|
353 |
-
if(!$post_membership_levels_names)
|
354 |
-
$post_membership_levels_names = array();
|
355 |
-
|
356 |
-
//get the correct message
|
357 |
-
if(is_feed())
|
358 |
-
{
|
359 |
-
if(is_array($comments))
|
360 |
-
return array();
|
361 |
-
else
|
362 |
-
return false;
|
363 |
-
}
|
364 |
-
elseif($current_user->ID)
|
365 |
-
{
|
366 |
-
//not a member
|
367 |
-
if(is_array($comments))
|
368 |
-
return array();
|
369 |
-
else
|
370 |
-
return false;
|
371 |
-
}
|
372 |
-
else
|
373 |
-
{
|
374 |
-
//not logged in!
|
375 |
-
if(is_array($comments))
|
376 |
-
return array();
|
377 |
-
else
|
378 |
-
return false;
|
379 |
-
}
|
380 |
-
}
|
381 |
-
|
382 |
-
return $comments;
|
383 |
-
}
|
384 |
-
add_filter("comments_array", "pmpro_comments_filter");
|
385 |
-
add_filter("comments_open", "pmpro_comments_filter");
|
386 |
-
|
387 |
-
//keep non-members from getting to certain pages (attachments, etc)
|
388 |
-
function pmpro_hide_pages_redirect()
|
389 |
-
{
|
390 |
-
global $post;
|
391 |
-
|
392 |
-
if(!is_admin() && !empty($post->ID))
|
393 |
-
{
|
394 |
-
if($post->post_type == "attachment")
|
395 |
-
{
|
396 |
-
//check if the user has access to the parent
|
397 |
-
if(!pmpro_has_membership_access($post->ID))
|
398 |
-
{
|
399 |
-
wp_redirect(pmpro_url("levels"));
|
400 |
-
exit;
|
401 |
-
}
|
402 |
-
}
|
403 |
-
}
|
404 |
-
}
|
405 |
-
add_action('wp', 'pmpro_hide_pages_redirect');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/currencies.php
CHANGED
@@ -10,13 +10,10 @@
|
|
10 |
'AUD' => __('Australian Dollars ($)', 'pmpro'),
|
11 |
'BRL' => __('Brazilian Real ($)', 'pmpro'),
|
12 |
'CAD' => __('Canadian Dollars ($)', 'pmpro'),
|
13 |
-
'CNY' => __('Chinese Yuan', 'pmpro'),
|
14 |
'CZK' => __('Czech Koruna', 'pmpro'),
|
15 |
'DKK' => __('Danish Krone', 'pmpro'),
|
16 |
'HKD' => __('Hong Kong Dollar ($)', 'pmpro'),
|
17 |
'HUF' => __('Hungarian Forint', 'pmpro'),
|
18 |
-
'INR' => __('Indian Rupee', 'pmpro'),
|
19 |
-
'IDR' => __('Indonesia Rupiah', 'pmpro'),
|
20 |
'ILS' => __('Israeli Shekel', 'pmpro'),
|
21 |
'JPY' => __('Japanese Yen (¥)', 'pmpro'),
|
22 |
'MYR' => __('Malaysian Ringgits', 'pmpro'),
|
@@ -26,24 +23,18 @@
|
|
26 |
'PHP' => __('Philippine Pesos', 'pmpro'),
|
27 |
'PLN' => __('Polish Zloty', 'pmpro'),
|
28 |
'SGD' => __('Singapore Dollar ($)', 'pmpro'),
|
29 |
-
'ZAR' => __('South African Rand', 'pmpro'),
|
30 |
-
'KRW' => __('South Korean Won', 'pmpro'),
|
31 |
'SEK' => __('Swedish Krona', 'pmpro'),
|
32 |
'CHF' => __('Swiss Franc', 'pmpro'),
|
33 |
'TWD' => __('Taiwan New Dollars', 'pmpro'),
|
34 |
-
'THB' => __('Thai Baht', 'pmpro')
|
35 |
-
'TRY' => __('Turkish Lira', 'pmpro'),
|
36 |
-
'VND' => __('Vietnamese Dong', 'pmpro')
|
37 |
);
|
38 |
|
39 |
$pmpro_currencies = apply_filters("pmpro_currencies", $pmpro_currencies);
|
40 |
|
41 |
-
//stripe only supports a few
|
42 |
global $pmpro_stripe_currencies;
|
43 |
$pmpro_stripe_currencies = array(
|
44 |
'USD' => __('US Dollars ($)', 'pmpro'),
|
45 |
-
'CAD' => __('Canadian Dollars ($)', 'pmpro')
|
46 |
-
'GBP' => __('Pounds Sterling (£)', 'pmpro'),
|
47 |
-
'EUR' => __('Euros (€)', 'pmpro')
|
48 |
);
|
49 |
?>
|
10 |
'AUD' => __('Australian Dollars ($)', 'pmpro'),
|
11 |
'BRL' => __('Brazilian Real ($)', 'pmpro'),
|
12 |
'CAD' => __('Canadian Dollars ($)', 'pmpro'),
|
|
|
13 |
'CZK' => __('Czech Koruna', 'pmpro'),
|
14 |
'DKK' => __('Danish Krone', 'pmpro'),
|
15 |
'HKD' => __('Hong Kong Dollar ($)', 'pmpro'),
|
16 |
'HUF' => __('Hungarian Forint', 'pmpro'),
|
|
|
|
|
17 |
'ILS' => __('Israeli Shekel', 'pmpro'),
|
18 |
'JPY' => __('Japanese Yen (¥)', 'pmpro'),
|
19 |
'MYR' => __('Malaysian Ringgits', 'pmpro'),
|
23 |
'PHP' => __('Philippine Pesos', 'pmpro'),
|
24 |
'PLN' => __('Polish Zloty', 'pmpro'),
|
25 |
'SGD' => __('Singapore Dollar ($)', 'pmpro'),
|
|
|
|
|
26 |
'SEK' => __('Swedish Krona', 'pmpro'),
|
27 |
'CHF' => __('Swiss Franc', 'pmpro'),
|
28 |
'TWD' => __('Taiwan New Dollars', 'pmpro'),
|
29 |
+
'THB' => __('Thai Baht', 'pmpro')
|
|
|
|
|
30 |
);
|
31 |
|
32 |
$pmpro_currencies = apply_filters("pmpro_currencies", $pmpro_currencies);
|
33 |
|
34 |
+
//stripe only supports a few
|
35 |
global $pmpro_stripe_currencies;
|
36 |
$pmpro_stripe_currencies = array(
|
37 |
'USD' => __('US Dollars ($)', 'pmpro'),
|
38 |
+
'CAD' => __('Canadian Dollars ($)', 'pmpro')
|
|
|
|
|
39 |
);
|
40 |
?>
|
includes/email.php
DELETED
@@ -1,111 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Nicer default emails
|
4 |
-
*/
|
5 |
-
function pmpro_wp_mail_from_name($from_name)
|
6 |
-
{
|
7 |
-
$default_from_name = 'WordPress';
|
8 |
-
|
9 |
-
//make sure it's the default from name
|
10 |
-
if($from_name == $default_from_name)
|
11 |
-
{
|
12 |
-
$pmpro_from_name = pmpro_getOption("from_name");
|
13 |
-
if ($pmpro_from_name)
|
14 |
-
$from_name = $pmpro_from_name;
|
15 |
-
}
|
16 |
-
|
17 |
-
return $from_name;
|
18 |
-
}
|
19 |
-
function pmpro_wp_mail_from($from_email)
|
20 |
-
{
|
21 |
-
// default from email wordpress@sitename
|
22 |
-
$sitename = strtolower( $_SERVER['SERVER_NAME'] );
|
23 |
-
if ( substr( $sitename, 0, 4 ) == 'www.' ) {
|
24 |
-
$sitename = substr( $sitename, 4 );
|
25 |
-
}
|
26 |
-
$default_from_email = 'wordpress@' . $sitename;
|
27 |
-
|
28 |
-
//make sure it's the default email address
|
29 |
-
if($from_email == $default_from_email)
|
30 |
-
{
|
31 |
-
$pmpro_from_email = pmpro_getOption("from_email");
|
32 |
-
if ($pmpro_from_email && is_email( $pmpro_from_email ) )
|
33 |
-
$from_email = $pmpro_from_email;
|
34 |
-
}
|
35 |
-
|
36 |
-
return $from_email;
|
37 |
-
}
|
38 |
-
|
39 |
-
$only_filter_pmpro_emails = pmpro_getOption("only_filter_pmpro_emails");
|
40 |
-
if($only_filter_pmpro_emails)
|
41 |
-
{
|
42 |
-
add_filter('pmpro_email_sender_name', 'pmpro_wp_mail_from_name');
|
43 |
-
add_filter('pmpro_email_sender', 'pmpro_wp_mail_from');
|
44 |
-
}
|
45 |
-
else
|
46 |
-
{
|
47 |
-
add_filter('wp_mail_from_name', 'pmpro_wp_mail_from_name');
|
48 |
-
add_filter('wp_mail_from', 'pmpro_wp_mail_from');
|
49 |
-
}
|
50 |
-
|
51 |
-
/*
|
52 |
-
If the $email_member_notification option is empty, disable the wp_new_user_notification email at checkout.
|
53 |
-
*/
|
54 |
-
$email_member_notification = pmpro_getOption("email_member_notification");
|
55 |
-
if(empty($email_member_notification))
|
56 |
-
add_filter("pmpro_wp_new_user_notification", "__return_false", 0);
|
57 |
-
|
58 |
-
/*
|
59 |
-
Adds template files and changes content type to html if using PHPMailer directly.
|
60 |
-
*/
|
61 |
-
function pmpro_send_html( $phpmailer ) {
|
62 |
-
|
63 |
-
// Set the original plain text message
|
64 |
-
$phpmailer->AltBody = wp_specialchars_decode($phpmailer->Body, ENT_QUOTES);
|
65 |
-
// Clean < and > around text links in WP 3.1
|
66 |
-
$phpmailer->Body = preg_replace('#<(http://[^*]+)>#', '$1', $phpmailer->Body);
|
67 |
-
// Convert line breaks & make links clickable
|
68 |
-
$phpmailer->Body = make_clickable ($phpmailer->Body);
|
69 |
-
|
70 |
-
// Add header to message if found
|
71 |
-
if(file_exists(get_stylesheet_directory() . "/email_header.html"))
|
72 |
-
$phpmailer->Body = file_get_contents(get_stylesheet_directory() . "/email_header.html") . "\n" . $phpmailer->Body;
|
73 |
-
elseif(file_exists(get_template_directory() . "/email_header.html"))
|
74 |
-
$phpmailer->Body = file_get_contents(get_template_directory() . "/email_header.html") . "\n" . $phpmailer->Body;
|
75 |
-
|
76 |
-
// Add footer to message if found
|
77 |
-
if(file_exists(get_stylesheet_directory() . "/email_footer.html"))
|
78 |
-
$phpmailer->Body = $phpmailer->Body . "\n" . file_get_contents(get_stylesheet_directory() . "/email_footer.html");
|
79 |
-
elseif(file_exists(get_template_directory() . "/email_footer.html"))
|
80 |
-
$phpmailer->Body = $phpmailer->Body . "\n" . file_get_contents(get_template_directory() . "/email_footer.html");
|
81 |
-
|
82 |
-
// Replace variables in email
|
83 |
-
global $current_user;
|
84 |
-
$data = array(
|
85 |
-
"name" => $current_user->display_name,
|
86 |
-
"sitename" => get_option("blogname"),
|
87 |
-
"login_link" => pmpro_url("account"),
|
88 |
-
"display_name" => $current_user->display_name,
|
89 |
-
"user_email" => $current_user->user_email,
|
90 |
-
"subject" => $phpmailer->Subject
|
91 |
-
);
|
92 |
-
foreach($data as $key => $value)
|
93 |
-
{
|
94 |
-
$phpmailer->Body = str_replace("!!" . $key . "!!", $value, $phpmailer->Body);
|
95 |
-
}
|
96 |
-
|
97 |
-
do_action("pmpro_after_phpmailer_init", $phpmailer);
|
98 |
-
do_action("pmpro_after_pmpmailer_init", $phpmailer); //typo left in for backwards compatibility
|
99 |
-
}
|
100 |
-
|
101 |
-
function pmpro_wp_mail_content_type( $content_type ) {
|
102 |
-
add_action('phpmailer_init', 'pmpro_send_html');
|
103 |
-
|
104 |
-
//change to html if not already
|
105 |
-
if( $content_type == 'text/plain')
|
106 |
-
{
|
107 |
-
$content_type = 'text/html';
|
108 |
-
}
|
109 |
-
return $content_type;
|
110 |
-
}
|
111 |
-
add_filter('wp_mail_content_type', 'pmpro_wp_mail_content_type');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/filters.php
CHANGED
@@ -19,7 +19,7 @@ function pmpro_checkout_level_extend_memberships($level)
|
|
19 |
$expiration_date = $current_user->membership_level->enddate;
|
20 |
|
21 |
//calculate days left
|
22 |
-
$todays_date =
|
23 |
$time_left = $expiration_date - $todays_date;
|
24 |
|
25 |
//time left?
|
@@ -62,7 +62,7 @@ function pmpro_ipnhandler_level_extend_memberships($level, $user_id)
|
|
62 |
$expiration_date = $user_level->enddate;
|
63 |
|
64 |
//calculate days left
|
65 |
-
$todays_date =
|
66 |
$time_left = $expiration_date - $todays_date;
|
67 |
|
68 |
//time left?
|
@@ -100,7 +100,7 @@ function pmpro_checkout_start_date_keep_startdate($startdate, $user_id, $level)
|
|
100 |
if(pmpro_hasMembershipLevel($level->id, $user_id))
|
101 |
{
|
102 |
global $wpdb;
|
103 |
-
$sqlQuery = "SELECT startdate FROM $wpdb->pmpro_memberships_users WHERE user_id = '" .
|
104 |
$old_startdate = $wpdb->get_var($sqlQuery);
|
105 |
|
106 |
if(!empty($old_startdate))
|
@@ -110,41 +110,3 @@ function pmpro_checkout_start_date_keep_startdate($startdate, $user_id, $level)
|
|
110 |
return $startdate;
|
111 |
}
|
112 |
add_filter("pmpro_checkout_start_date", "pmpro_checkout_start_date_keep_startdate", 10, 3);
|
113 |
-
|
114 |
-
/*
|
115 |
-
Stripe Lite Pulled into Core Plugin
|
116 |
-
*/
|
117 |
-
//Stripe Lite, Set the Globals/etc
|
118 |
-
$stripe_billingaddress = pmpro_getOption("stripe_billingaddress");
|
119 |
-
if(empty($stripe_billingaddress))
|
120 |
-
{
|
121 |
-
global $pmpro_stripe_lite;
|
122 |
-
$pmpro_stripe_lite = true;
|
123 |
-
add_filter("pmpro_stripe_lite", "__return_true");
|
124 |
-
add_filter("pmpro_required_billing_fields", "pmpro_required_billing_fields_stripe_lite");
|
125 |
-
}
|
126 |
-
|
127 |
-
//Stripe Lite, Don't Require Billing Fields
|
128 |
-
function pmpro_required_billing_fields_stripe_lite($fields)
|
129 |
-
{
|
130 |
-
global $gateway;
|
131 |
-
|
132 |
-
//ignore if not using stripe
|
133 |
-
if($gateway != "stripe")
|
134 |
-
return $fields;
|
135 |
-
|
136 |
-
//some fields to remove
|
137 |
-
$remove = array('bfirstname', 'blastname', 'baddress1', 'bcity', 'bstate', 'bzipcode', 'bphone', 'bcountry', 'CardType');
|
138 |
-
|
139 |
-
//if a user is logged in, don't require bemail either
|
140 |
-
global $current_user;
|
141 |
-
if(!empty($current_user->user_email))
|
142 |
-
$remove[] = 'bemail';
|
143 |
-
|
144 |
-
//remove the fields
|
145 |
-
foreach($remove as $field)
|
146 |
-
unset($fields[$field]);
|
147 |
-
|
148 |
-
//ship it!
|
149 |
-
return $fields;
|
150 |
-
}
|
19 |
$expiration_date = $current_user->membership_level->enddate;
|
20 |
|
21 |
//calculate days left
|
22 |
+
$todays_date = time();
|
23 |
$time_left = $expiration_date - $todays_date;
|
24 |
|
25 |
//time left?
|
62 |
$expiration_date = $user_level->enddate;
|
63 |
|
64 |
//calculate days left
|
65 |
+
$todays_date = time();
|
66 |
$time_left = $expiration_date - $todays_date;
|
67 |
|
68 |
//time left?
|
100 |
if(pmpro_hasMembershipLevel($level->id, $user_id))
|
101 |
{
|
102 |
global $wpdb;
|
103 |
+
$sqlQuery = "SELECT startdate FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $wpdb->escape($user_id) . "' AND membership_id = '" . $wpdb->escape($level->id) . "' AND status = 'active' ORDER BY id DESC LIMIT 1";
|
104 |
$old_startdate = $wpdb->get_var($sqlQuery);
|
105 |
|
106 |
if(!empty($old_startdate))
|
110 |
return $startdate;
|
111 |
}
|
112 |
add_filter("pmpro_checkout_start_date", "pmpro_checkout_start_date_keep_startdate", 10, 3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/functions.php
CHANGED
@@ -1,1742 +1,1505 @@
|
|
1 |
-
<?php
|
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 |
-
return
|
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 |
-
|
190 |
-
|
191 |
-
|
192 |
-
{
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
if(
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
}
|
297 |
-
|
298 |
-
|
299 |
-
{
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
{
|
319 |
-
|
320 |
-
|
321 |
-
}
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
{
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
}
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
$
|
394 |
-
|
395 |
-
$
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
if(
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
elseif(
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
$
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
$
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
{
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
if
|
694 |
-
{
|
695 |
-
$
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
$pagination .= "
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
$
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
$
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
$
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
$
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
$
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
//
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
if(
|
1151 |
-
{
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
$
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
}
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
}
|
1275 |
-
|
1276 |
-
/*
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
$
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
|
1423 |
-
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
1487 |
-
|
1488 |
-
if(
|
1489 |
-
{
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
-
|
1505 |
-
|
1506 |
-
/*
|
1507 |
-
How long has this member been a member
|
1508 |
-
*/
|
1509 |
-
if(!function_exists("pmpro_getMemberDays"))
|
1510 |
-
{
|
1511 |
-
function pmpro_getMemberDays($user_id = NULL, $level_id = 0)
|
1512 |
-
{
|
1513 |
-
if(empty($user_id))
|
1514 |
-
{
|
1515 |
-
global $current_user;
|
1516 |
-
$user_id = $current_user->ID;
|
1517 |
-
}
|
1518 |
-
|
1519 |
-
global $pmpro_member_days;
|
1520 |
-
if(empty($pmpro_member_days[$user_id][$level_id]))
|
1521 |
-
{
|
1522 |
-
$startdate = pmpro_getMemberStartdate($user_id, $level_id);
|
1523 |
-
|
1524 |
-
//check that there was a startdate at all
|
1525 |
-
if(empty($startdate))
|
1526 |
-
$pmpro_member_days[$user_id][$level_id] = 0;
|
1527 |
-
else
|
1528 |
-
{
|
1529 |
-
$now = current_time('timestamp');
|
1530 |
-
$days = ($now - $startdate)/3600/24;
|
1531 |
-
|
1532 |
-
$pmpro_member_days[$user_id][$level_id] = $days;
|
1533 |
-
}
|
1534 |
-
}
|
1535 |
-
|
1536 |
-
return $pmpro_member_days[$user_id][$level_id];
|
1537 |
-
}
|
1538 |
-
}
|
1539 |
-
|
1540 |
-
//the start of a message handling script
|
1541 |
-
function pmpro_setMessage($message, $type, $force = false)
|
1542 |
-
{
|
1543 |
-
global $pmpro_msg, $pmpro_msgt;
|
1544 |
-
|
1545 |
-
//for now, we only show the first message generated
|
1546 |
-
if($force || empty($pmpro_msg))
|
1547 |
-
{
|
1548 |
-
$pmpro_msg = $message;
|
1549 |
-
$pmpro_msgt = $type;
|
1550 |
-
}
|
1551 |
-
}
|
1552 |
-
|
1553 |
-
//used in class definitions for input fields to see if there was an error
|
1554 |
-
function pmpro_getClassForField($field)
|
1555 |
-
{
|
1556 |
-
global $pmpro_error_fields, $pmpro_required_billing_fields, $pmpro_required_user_fields;
|
1557 |
-
$classes = array();
|
1558 |
-
|
1559 |
-
//error on this field?
|
1560 |
-
if(in_array($field, $pmpro_error_fields))
|
1561 |
-
{
|
1562 |
-
$classes[] = "pmpro_error";
|
1563 |
-
}
|
1564 |
-
|
1565 |
-
$required_fields = array_merge(array_keys($pmpro_required_billing_fields), array_keys($pmpro_required_user_fields));
|
1566 |
-
|
1567 |
-
//required?
|
1568 |
-
if(in_array($field, $required_fields))
|
1569 |
-
{
|
1570 |
-
$classes[] = "pmpro_required";
|
1571 |
-
}
|
1572 |
-
|
1573 |
-
$classes = apply_filters("pmpro_field_classes", $classes, $field);
|
1574 |
-
|
1575 |
-
if(!empty($classes))
|
1576 |
-
return implode(" ", $classes);
|
1577 |
-
else
|
1578 |
-
return "";
|
1579 |
-
}
|
1580 |
-
|
1581 |
-
//get a var from $_GET or $_POST
|
1582 |
-
function pmpro_getParam($index, $method = "REQUEST", $default = "")
|
1583 |
-
{
|
1584 |
-
if($method == "REQUEST")
|
1585 |
-
{
|
1586 |
-
if(!empty($_REQUEST[$index]))
|
1587 |
-
return $_REQUEST[$index];
|
1588 |
-
}
|
1589 |
-
elseif($method == "POST")
|
1590 |
-
{
|
1591 |
-
if(!empty($_POST[$index]))
|
1592 |
-
return $_POST[$index];
|
1593 |
-
}
|
1594 |
-
elseif($method == "GET")
|
1595 |
-
{
|
1596 |
-
if(!empty($_GET[$index]))
|
1597 |
-
return $_GET[$index];
|
1598 |
-
}
|
1599 |
-
|
1600 |
-
return $default;
|
1601 |
-
}
|
1602 |
-
|
1603 |
-
/*
|
1604 |
-
Format an address from address, city, state, zip, country, and phone
|
1605 |
-
*/
|
1606 |
-
function pmpro_formatAddress($name, $address1, $address2, $city, $state, $zip, $country, $phone, $nl2br = true)
|
1607 |
-
{
|
1608 |
-
$address = "";
|
1609 |
-
|
1610 |
-
if(!empty($name))
|
1611 |
-
$address .= $name . "\n";
|
1612 |
-
|
1613 |
-
if(!empty($address1))
|
1614 |
-
$address .= $address1 . "\n";
|
1615 |
-
|
1616 |
-
if(!empty($address2))
|
1617 |
-
$address .= $address2 . "\n";
|
1618 |
-
|
1619 |
-
if(!empty($city) && !empty($state))
|
1620 |
-
{
|
1621 |
-
$address .= $city . ", " . $state;
|
1622 |
-
|
1623 |
-
if(!empty($zip))
|
1624 |
-
$address .= " " . $zip;
|
1625 |
-
|
1626 |
-
$address .= "\n";
|
1627 |
-
}
|
1628 |
-
|
1629 |
-
if(!empty($country))
|
1630 |
-
$address .= $country . "\n";
|
1631 |
-
|
1632 |
-
if(!empty($phone))
|
1633 |
-
$address .= formatPhone($phone);
|
1634 |
-
|
1635 |
-
if($nl2br)
|
1636 |
-
$address = nl2br($address);
|
1637 |
-
|
1638 |
-
return $address;
|
1639 |
-
}
|
1640 |
-
|
1641 |
-
/*
|
1642 |
-
Checks if all required settings are set.
|
1643 |
-
*/
|
1644 |
-
function pmpro_is_ready()
|
1645 |
-
{
|
1646 |
-
global $wpdb, $pmpro_pages, $pmpro_level_ready, $pmpro_gateway_ready, $pmpro_pages_ready;
|
1647 |
-
|
1648 |
-
//check if there is at least one level
|
1649 |
-
$pmpro_level_ready = (bool)$wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_levels LIMIT 1");
|
1650 |
-
|
1651 |
-
//check if the gateway settings are good. first check if it's needed (is there paid membership level)
|
1652 |
-
$paid_membership_level = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_levels WHERE allow_signups = 1 AND (initial_payment > 0 OR billing_amount > 0 OR trial_amount > 0) LIMIT 1");
|
1653 |
-
$paid_user_subscription = $wpdb->get_var("SELECT user_id FROM $wpdb->pmpro_memberships_users WHERE initial_payment > 0 OR billing_amount > 0 OR trial_amount > 0 LIMIT 1");
|
1654 |
-
|
1655 |
-
if(empty($paid_membership_level) && empty($paid_user_subscription))
|
1656 |
-
{
|
1657 |
-
//no paid membership level now or attached to a user. we don't need the gateway setup
|
1658 |
-
$pmpro_gateway_ready = true;
|
1659 |
-
}
|
1660 |
-
else
|
1661 |
-
{
|
1662 |
-
$gateway = pmpro_getOption("gateway");
|
1663 |
-
if($gateway == "authorizenet")
|
1664 |
-
{
|
1665 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("loginname") && pmpro_getOption("transactionkey"))
|
1666 |
-
$pmpro_gateway_ready = true;
|
1667 |
-
else
|
1668 |
-
$pmpro_gateway_ready = false;
|
1669 |
-
}
|
1670 |
-
elseif($gateway == "paypal" || $gateway == "paypalexpress")
|
1671 |
-
{
|
1672 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("gateway_email") && pmpro_getOption("apiusername") && pmpro_getOption("apipassword") && pmpro_getOption("apisignature"))
|
1673 |
-
$pmpro_gateway_ready = true;
|
1674 |
-
else
|
1675 |
-
$pmpro_gateway_ready = false;
|
1676 |
-
}
|
1677 |
-
elseif($gateway == "paypalstandard")
|
1678 |
-
{
|
1679 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("gateway_email"))
|
1680 |
-
$pmpro_gateway_ready = true;
|
1681 |
-
else
|
1682 |
-
$pmpro_gateway_ready = false;
|
1683 |
-
}
|
1684 |
-
elseif($gateway == "payflowpro")
|
1685 |
-
{
|
1686 |
-
if(pmpro_getOption("payflow_partner") && pmpro_getOption("payflow_vendor") && pmpro_getOption("payflow_user") && pmpro_getOption("payflow_pwd"))
|
1687 |
-
$pmpro_gateway_ready = true;
|
1688 |
-
else
|
1689 |
-
$pmpro_gateway_ready = false;
|
1690 |
-
}
|
1691 |
-
elseif($gateway == "stripe")
|
1692 |
-
{
|
1693 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("stripe_secretkey") && pmpro_getOption("stripe_publishablekey"))
|
1694 |
-
$pmpro_gateway_ready = true;
|
1695 |
-
else
|
1696 |
-
$pmpro_gateway_ready = false;
|
1697 |
-
}
|
1698 |
-
elseif($gateway == "braintree")
|
1699 |
-
{
|
1700 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("braintree_merchantid") && pmpro_getOption("braintree_publickey") && pmpro_getOption("braintree_privatekey"))
|
1701 |
-
$pmpro_gateway_ready = true;
|
1702 |
-
else
|
1703 |
-
$pmpro_gateway_ready = false;
|
1704 |
-
}
|
1705 |
-
elseif($gateway == "twocheckout")
|
1706 |
-
{
|
1707 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("twocheckout_apiusername") && pmpro_getOption("twocheckout_apipassword"))
|
1708 |
-
$pmpro_gateway_ready = true;
|
1709 |
-
else
|
1710 |
-
$pmpro_gateway_ready = false;
|
1711 |
-
}
|
1712 |
-
elseif($gateway == "cybersource")
|
1713 |
-
{
|
1714 |
-
if(pmpro_getOption("gateway_environment") && pmpro_getOption("cybersource_merchantid") && pmpro_getOption("cybersource_securitykey"))
|
1715 |
-
$pmpro_gateway_ready = true;
|
1716 |
-
else
|
1717 |
-
$pmpro_gateway_ready = false;
|
1718 |
-
}
|
1719 |
-
else
|
1720 |
-
{
|
1721 |
-
$pmpro_gateway_ready = false;
|
1722 |
-
}
|
1723 |
-
}
|
1724 |
-
|
1725 |
-
//check if we have all pages
|
1726 |
-
if($pmpro_pages["account"] &&
|
1727 |
-
$pmpro_pages["billing"] &&
|
1728 |
-
$pmpro_pages["cancel"] &&
|
1729 |
-
$pmpro_pages["checkout"] &&
|
1730 |
-
$pmpro_pages["confirmation"] &&
|
1731 |
-
$pmpro_pages["invoice"] &&
|
1732 |
-
$pmpro_pages["levels"])
|
1733 |
-
$pmpro_pages_ready = true;
|
1734 |
-
else
|
1735 |
-
$pmpro_pages_ready = false;
|
1736 |
-
|
1737 |
-
//now check both
|
1738 |
-
if($pmpro_gateway_ready && $pmpro_pages_ready)
|
1739 |
-
return true;
|
1740 |
-
else
|
1741 |
-
return false;
|
1742 |
-
}
|
1 |
+
<?php
|
2 |
+
if(!function_exists("sornot"))
|
3 |
+
{
|
4 |
+
function sornot($t, $n)
|
5 |
+
{
|
6 |
+
if($n == 1)
|
7 |
+
return $t;
|
8 |
+
else
|
9 |
+
return $t . "s";
|
10 |
+
}
|
11 |
+
}
|
12 |
+
|
13 |
+
//setup wpdb for the tables we need
|
14 |
+
function pmpro_setDBTables()
|
15 |
+
{
|
16 |
+
global $table_prefix, $wpdb;
|
17 |
+
$wpdb->hide_errors();
|
18 |
+
$wpdb->pmpro_membership_levels = $table_prefix . 'pmpro_membership_levels';
|
19 |
+
$wpdb->pmpro_memberships_users = $table_prefix . 'pmpro_memberships_users';
|
20 |
+
$wpdb->pmpro_memberships_categories = $table_prefix . 'pmpro_memberships_categories';
|
21 |
+
$wpdb->pmpro_memberships_pages = $table_prefix . 'pmpro_memberships_pages';
|
22 |
+
$wpdb->pmpro_membership_orders = $table_prefix . 'pmpro_membership_orders';
|
23 |
+
$wpdb->pmpro_discount_codes = $wpdb->prefix . 'pmpro_discount_codes';
|
24 |
+
$wpdb->pmpro_discount_codes_levels = $wpdb->prefix . 'pmpro_discount_codes_levels';
|
25 |
+
$wpdb->pmpro_discount_codes_uses = $wpdb->prefix . 'pmpro_discount_codes_uses';
|
26 |
+
}
|
27 |
+
pmpro_setDBTables();
|
28 |
+
|
29 |
+
//from: http://stackoverflow.com/questions/5266945/wordpress-how-detect-if-current-page-is-the-login-page/5892694#5892694
|
30 |
+
function pmpro_is_login_page() {
|
31 |
+
return (in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')) || is_page("login"));
|
32 |
+
}
|
33 |
+
|
34 |
+
//thanks: http://wordpress.org/support/topic/is_plugin_active
|
35 |
+
function pmpro_is_plugin_active( $plugin ) {
|
36 |
+
return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
|
37 |
+
}
|
38 |
+
|
39 |
+
//scraping - override n if you have more than 1 group of matches and don't want the first group
|
40 |
+
function pmpro_getMatches($p, $s, $firstvalue = FALSE, $n = 1)
|
41 |
+
{
|
42 |
+
$ok = preg_match_all($p, $s, $matches);
|
43 |
+
|
44 |
+
if(!$ok)
|
45 |
+
return false;
|
46 |
+
else
|
47 |
+
{
|
48 |
+
if($firstvalue)
|
49 |
+
return $matches[$n][0];
|
50 |
+
else
|
51 |
+
return $matches[$n];
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
function pmpro_br2nl($text, $tags = "br")
|
56 |
+
{
|
57 |
+
if(!is_array($tags))
|
58 |
+
$tags = explode(" ", $tags);
|
59 |
+
|
60 |
+
foreach($tags as $tag)
|
61 |
+
{
|
62 |
+
$text = eregi_replace("<" . $tag . "[^>]*>", "\n", $text);
|
63 |
+
$text = eregi_replace("</" . $tag . "[^>]*>", "\n", $text);
|
64 |
+
}
|
65 |
+
|
66 |
+
return($text);
|
67 |
+
}
|
68 |
+
|
69 |
+
function pmpro_getOption($s, $force = false)
|
70 |
+
{
|
71 |
+
if(isset($_REQUEST[$s]) && !$force)
|
72 |
+
return $_REQUEST[$s];
|
73 |
+
elseif(get_option("pmpro_" . $s))
|
74 |
+
return get_option("pmpro_" . $s);
|
75 |
+
else
|
76 |
+
return "";
|
77 |
+
}
|
78 |
+
|
79 |
+
function pmpro_setOption($s, $v = NULL)
|
80 |
+
{
|
81 |
+
//no value is given, set v to the request var
|
82 |
+
if($v === NULL && isset($_REQUEST[$s]))
|
83 |
+
$v = $_REQUEST[$s];
|
84 |
+
|
85 |
+
if(is_array($v))
|
86 |
+
$v = implode(",", $v);
|
87 |
+
|
88 |
+
return update_option("pmpro_" . $s, $v);
|
89 |
+
}
|
90 |
+
|
91 |
+
function pmpro_get_slug($post_id)
|
92 |
+
{
|
93 |
+
global $pmpro_slugs, $wpdb;
|
94 |
+
if(!$pmpro_slugs[$post_id])
|
95 |
+
$pmpro_slugs[$post_id] = $wpdb->get_var("SELECT post_name FROM $wpdb->posts WHERE ID = '" . $post_id . "' LIMIT 1");
|
96 |
+
|
97 |
+
return $pmpro_slugs[$post_id];
|
98 |
+
}
|
99 |
+
|
100 |
+
function pmpro_url($page = NULL, $querystring = "", $scheme = NULL)
|
101 |
+
{
|
102 |
+
global $besecure;
|
103 |
+
$besecure = apply_filters("besecure", $besecure);
|
104 |
+
|
105 |
+
if(!$scheme && $besecure)
|
106 |
+
$scheme = "https";
|
107 |
+
elseif(!$scheme)
|
108 |
+
$scheme = "http";
|
109 |
+
|
110 |
+
if(!$page)
|
111 |
+
$page = "levels";
|
112 |
+
|
113 |
+
global $pmpro_pages;
|
114 |
+
|
115 |
+
//? vs &
|
116 |
+
if(strpos(get_permalink($pmpro_pages[$page]), "?"))
|
117 |
+
return home_url(str_replace(home_url(), "", get_permalink($pmpro_pages[$page])) . str_replace("?", "&", $querystring), $scheme);
|
118 |
+
else
|
119 |
+
return home_url(str_replace(home_url(), "", get_permalink($pmpro_pages[$page])) . $querystring, $scheme);
|
120 |
+
}
|
121 |
+
|
122 |
+
function pmpro_isLevelFree(&$level)
|
123 |
+
{
|
124 |
+
if($level->initial_payment <= 0 && $level->billing_amount <= 0 && $level->trial_amount <= 0)
|
125 |
+
return true;
|
126 |
+
else
|
127 |
+
return false;
|
128 |
+
}
|
129 |
+
|
130 |
+
function pmpro_isLevelRecurring(&$level)
|
131 |
+
{
|
132 |
+
if($level->billing_amount > 0 || $level->trial_amount > 0)
|
133 |
+
return true;
|
134 |
+
else
|
135 |
+
return false;
|
136 |
+
}
|
137 |
+
|
138 |
+
function pmpro_isLevelTrial(&$level)
|
139 |
+
{
|
140 |
+
if($level->trial_limit > 0)
|
141 |
+
{
|
142 |
+
return true;
|
143 |
+
}
|
144 |
+
else
|
145 |
+
return false;
|
146 |
+
}
|
147 |
+
|
148 |
+
function pmpro_isLevelExpiring(&$level)
|
149 |
+
{
|
150 |
+
if($level->expiration_number > 0)
|
151 |
+
return true;
|
152 |
+
else
|
153 |
+
return false;
|
154 |
+
}
|
155 |
+
|
156 |
+
function pmpro_getLevelCost(&$level, $tags = true)
|
157 |
+
{
|
158 |
+
global $pmpro_currency_symbol;
|
159 |
+
$r = '
|
160 |
+
The price for membership is <strong>' . $pmpro_currency_symbol . number_format($level->initial_payment, 2) . '</strong> now';
|
161 |
+
if($level->billing_amount != '0.00')
|
162 |
+
{
|
163 |
+
$r .= ' and then <strong>' . $pmpro_currency_symbol . $level->billing_amount;
|
164 |
+
if($level->cycle_number == '1')
|
165 |
+
{
|
166 |
+
$r .= ' per ';
|
167 |
+
}
|
168 |
+
elseif($level->billing_limit == 1)
|
169 |
+
{
|
170 |
+
$r .= ' after ' . $level->cycle_number . ' ';
|
171 |
+
}
|
172 |
+
else
|
173 |
+
{
|
174 |
+
$r .= ' every ' . $level->cycle_number . ' ';
|
175 |
+
}
|
176 |
+
|
177 |
+
$r .= sornot($level->cycle_period,$level->cycle_number);
|
178 |
+
|
179 |
+
if($level->billing_limit > 1)
|
180 |
+
{
|
181 |
+
$r .= ' for ' . $level->billing_limit . ' more ' . sornot("payment",$level->billing_limit) . '.';
|
182 |
+
}
|
183 |
+
else
|
184 |
+
$r .= '.';
|
185 |
+
|
186 |
+
$r .= '</strong>';
|
187 |
+
}
|
188 |
+
else
|
189 |
+
$r .= '.';
|
190 |
+
|
191 |
+
if($level->trial_limit)
|
192 |
+
{
|
193 |
+
$r .= ' After your initial payment, your first ';
|
194 |
+
if($level->trial_amount == '0.00')
|
195 |
+
{
|
196 |
+
if($level->trial_limit == '1')
|
197 |
+
{
|
198 |
+
$r .= 'payment is Free.';
|
199 |
+
}
|
200 |
+
else
|
201 |
+
{
|
202 |
+
$r .= $level->trial_limit . ' payments are Free.';
|
203 |
+
}
|
204 |
+
}
|
205 |
+
else
|
206 |
+
{
|
207 |
+
$r .= $level->trial_limit.' ' .sornot("payment", $level->trial_limit) . ' will cost ' . $pmpro_currency_symbol . $level->trial_amount . '.';
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
//taxes?
|
212 |
+
$tax_state = pmpro_getOption("tax_state");
|
213 |
+
$tax_rate = pmpro_getOption("tax_rate");
|
214 |
+
|
215 |
+
if($tax_state && $tax_rate && !pmpro_isLevelFree($level))
|
216 |
+
{
|
217 |
+
$r .= " Customers in " . $tax_state . " will be charged " . round($tax_rate * 100, 2) . "% tax.";
|
218 |
+
}
|
219 |
+
|
220 |
+
if(!$tags)
|
221 |
+
$r = strip_tags($r);
|
222 |
+
|
223 |
+
$r = apply_filters("pmpro_level_cost_text", $r, $level);
|
224 |
+
return $r;
|
225 |
+
}
|
226 |
+
|
227 |
+
function pmpro_getLevelExpiration(&$level)
|
228 |
+
{
|
229 |
+
if($level->expiration_number)
|
230 |
+
{
|
231 |
+
$expiration_text = "Membership expires after " . $level->expiration_number . " " . sornot(strtolower($level->expiration_period), $level->expiration_number) . ".";
|
232 |
+
}
|
233 |
+
else
|
234 |
+
$expiration_text = "";
|
235 |
+
|
236 |
+
$expiration_text = apply_filters("pmpro_level_expiration_text", $expiration_text, $level);
|
237 |
+
return $expiration_text;
|
238 |
+
}
|
239 |
+
|
240 |
+
function pmpro_hideAds()
|
241 |
+
{
|
242 |
+
global $pmpro_display_ads;
|
243 |
+
return !$pmpro_display_ads;
|
244 |
+
}
|
245 |
+
|
246 |
+
function pmpro_displayAds()
|
247 |
+
{
|
248 |
+
global $pmpro_display_ads;
|
249 |
+
return $pmpro_display_ads;
|
250 |
+
}
|
251 |
+
|
252 |
+
function pmpro_next_payment($user_id = NULL)
|
253 |
+
{
|
254 |
+
global $wpdb, $current_user;
|
255 |
+
if(!$user_id)
|
256 |
+
$user_id = $current_user->ID;
|
257 |
+
|
258 |
+
if(!$user_id)
|
259 |
+
return false;
|
260 |
+
|
261 |
+
//when were they last billed
|
262 |
+
$lastdate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(timestamp) as timestamp FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' ORDER BY timestamp DESC LIMIT 1");
|
263 |
+
|
264 |
+
if($lastdate)
|
265 |
+
{
|
266 |
+
//next payment will be same day, following month
|
267 |
+
$lastmonth = date("n", $lastdate);
|
268 |
+
$lastday = date("j", $lastdate);
|
269 |
+
$lastyear = date("Y", $lastdate);
|
270 |
+
|
271 |
+
$nextmonth = ((int)$lastmonth) + 1;
|
272 |
+
if($nextmonth == 13)
|
273 |
+
{
|
274 |
+
$nextmonth = 1;
|
275 |
+
$nextyear = ((int)$lastyear) + 1;
|
276 |
+
}
|
277 |
+
else
|
278 |
+
$nextyear = $lastyear;
|
279 |
+
|
280 |
+
$daysinnextmonth = date("t", strtotime($nextyear . "-" . $nextmonth . "-1"));
|
281 |
+
|
282 |
+
if($daysinnextmonth < $lastday)
|
283 |
+
{
|
284 |
+
$nextday = $daysinnextmonth;
|
285 |
+
}
|
286 |
+
else
|
287 |
+
$nextday = $lastday;
|
288 |
+
|
289 |
+
return strtotime($nextyear . "-" . $nextmonth . "-" . $nextday);
|
290 |
+
}
|
291 |
+
else
|
292 |
+
{
|
293 |
+
return false;
|
294 |
+
}
|
295 |
+
|
296 |
+
}
|
297 |
+
|
298 |
+
if(!function_exists("last4"))
|
299 |
+
{
|
300 |
+
function last4($t)
|
301 |
+
{
|
302 |
+
return substr($t, strlen($t) - 4, 4);
|
303 |
+
}
|
304 |
+
}
|
305 |
+
|
306 |
+
if(!function_exists("hideCardNumber"))
|
307 |
+
{
|
308 |
+
function hideCardNumber($c, $dashes = true)
|
309 |
+
{
|
310 |
+
if($c)
|
311 |
+
{
|
312 |
+
if($dashes)
|
313 |
+
return "XXXX-XXXX-XXXX-" . substr($c, strlen($c) - 4, 4);
|
314 |
+
else
|
315 |
+
return "XXXXXXXXXXXX" . substr($c, strlen($c) - 4, 4);
|
316 |
+
}
|
317 |
+
else
|
318 |
+
{
|
319 |
+
return "";
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
if(!function_exists("cleanPhone"))
|
325 |
+
{
|
326 |
+
function cleanPhone($phone)
|
327 |
+
{
|
328 |
+
//if a + is passed, just pass it along
|
329 |
+
if(strpos($phone, "+") !== false)
|
330 |
+
return $phone;
|
331 |
+
|
332 |
+
//clean the phone
|
333 |
+
$phone = str_replace("-", "", $phone);
|
334 |
+
$phone = str_replace(".", "", $phone);
|
335 |
+
$phone = str_replace("(", "", $phone);
|
336 |
+
$phone = str_replace(")", "", $phone);
|
337 |
+
$phone = str_replace(" ", "", $phone);
|
338 |
+
|
339 |
+
return $phone;
|
340 |
+
}
|
341 |
+
}
|
342 |
+
|
343 |
+
if(!function_exists("formatPhone"))
|
344 |
+
{
|
345 |
+
function formatPhone($phone)
|
346 |
+
{
|
347 |
+
$phone = cleanPhone($phone);
|
348 |
+
|
349 |
+
if(strlen($phone) == 11)
|
350 |
+
return substr($phone, 0, 1) . " (" . substr($phone, 1, 3) . ") " . substr($phone, 4, 3) . "-" . substr($phone, 7, 4);
|
351 |
+
elseif(strlen($phone) == 10)
|
352 |
+
return "(" . substr($phone, 0, 3) . ") " . substr($phone, 3, 3) . "-" . substr($phone, 6, 4);
|
353 |
+
elseif(strlen($phone) == 7)
|
354 |
+
return substr($phone, 0, 3) . "-" . substr($phone, 3, 4);
|
355 |
+
else
|
356 |
+
return $phone;
|
357 |
+
}
|
358 |
+
}
|
359 |
+
|
360 |
+
function pmpro_showRequiresMembershipMessage()
|
361 |
+
{
|
362 |
+
//get the correct message
|
363 |
+
if(is_feed())
|
364 |
+
{
|
365 |
+
$content = pmpro_getOption("rsstext");
|
366 |
+
$content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
|
367 |
+
}
|
368 |
+
elseif($current_user->ID)
|
369 |
+
{
|
370 |
+
//not a member
|
371 |
+
$content = pmpro_getOption("nonmembertext");
|
372 |
+
$content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
|
373 |
+
}
|
374 |
+
else
|
375 |
+
{
|
376 |
+
//not logged in!
|
377 |
+
$content = pmpro_getOption("notloggedintext");
|
378 |
+
$content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
|
379 |
+
}
|
380 |
+
}
|
381 |
+
|
382 |
+
/* pmpro_hasMembershipLevel() checks if the passed user is a member of the passed level
|
383 |
+
*
|
384 |
+
* $level may either be the ID or name of the desired membership_level. (or an array of such)
|
385 |
+
* If $user_id is omitted, the value will be retrieved from $current_user.
|
386 |
+
*
|
387 |
+
* Return values:
|
388 |
+
* Success returns boolean true.
|
389 |
+
* Failure returns a string containing the error message.
|
390 |
+
*/
|
391 |
+
function pmpro_hasMembershipLevel($levels = NULL, $user_id = NULL)
|
392 |
+
{
|
393 |
+
global $current_user, $all_membership_levels, $wpdb;
|
394 |
+
|
395 |
+
$return = false;
|
396 |
+
|
397 |
+
if(empty($user_id)) //no user_id passed, check the current user
|
398 |
+
{
|
399 |
+
$user_id = $current_user->ID;
|
400 |
+
$membership_levels = $current_user->membership_levels;
|
401 |
+
}
|
402 |
+
else //get membership levels for given user
|
403 |
+
{
|
404 |
+
$membership_levels = pmpro_getMembershipLevelsForUser($user_id);
|
405 |
+
}
|
406 |
+
|
407 |
+
if($levels === "0" || $levels === 0) //if 0 was passed, return true if they have no level and false if they have any
|
408 |
+
{
|
409 |
+
$return = empty($membership_levels);
|
410 |
+
}
|
411 |
+
elseif(empty($levels)) //if no level var was passed, we're just checking if they have any level
|
412 |
+
{
|
413 |
+
$return = !empty($membership_levels);
|
414 |
+
}
|
415 |
+
else
|
416 |
+
{
|
417 |
+
if(!is_array($levels)) //make an array out of a single element so we can use the same code
|
418 |
+
{
|
419 |
+
$levels = array($levels);
|
420 |
+
}
|
421 |
+
|
422 |
+
if(empty($membership_levels))
|
423 |
+
{
|
424 |
+
//user has no levels just check if 0 was sent in one of the levels
|
425 |
+
if(in_array(0, $levels) || in_array("0", $levels))
|
426 |
+
$return = true;
|
427 |
+
}
|
428 |
+
else
|
429 |
+
{
|
430 |
+
foreach($levels as $level)
|
431 |
+
{
|
432 |
+
$level_obj = pmpro_getLevel(is_numeric($level) ? abs(intval($level)) : $level); //make sure our level is in a proper format
|
433 |
+
if(empty($level_obj)){continue;} //invalid level
|
434 |
+
$found_level = false;
|
435 |
+
foreach($membership_levels as $membership_level)
|
436 |
+
{
|
437 |
+
if($membership_level->id == $level_obj->id) //found a match
|
438 |
+
{
|
439 |
+
$found_level = true;
|
440 |
+
}
|
441 |
+
}
|
442 |
+
|
443 |
+
if(is_numeric($level) and intval($level) < 0 and !$found_level) //checking for the absence of this level
|
444 |
+
{
|
445 |
+
$return = true;
|
446 |
+
}
|
447 |
+
else if($found_level) //checking for the presence of this level
|
448 |
+
{
|
449 |
+
$return = true;
|
450 |
+
}
|
451 |
+
}
|
452 |
+
}
|
453 |
+
}
|
454 |
+
|
455 |
+
$return = apply_filters("pmpro_has_membership_level", $return, $user_id, $levels);
|
456 |
+
return $return;
|
457 |
+
}
|
458 |
+
|
459 |
+
/* pmpro_changeMembershipLevel() creates or updates the membership level of the given user to the given level.
|
460 |
+
*
|
461 |
+
* $level may either be the ID or name of the desired membership_level.
|
462 |
+
* If $user_id is omitted, the value will be retrieved from $current_user.
|
463 |
+
*
|
464 |
+
* Return values:
|
465 |
+
* Success returns boolean true.
|
466 |
+
* Failure returns boolean false.
|
467 |
+
*/
|
468 |
+
function pmpro_changeMembershipLevel($level, $user_id = NULL)
|
469 |
+
{
|
470 |
+
global $wpdb;
|
471 |
+
global $current_user, $pmpro_error;
|
472 |
+
|
473 |
+
if(empty($user_id))
|
474 |
+
{
|
475 |
+
$user_id = $current_user->ID;
|
476 |
+
}
|
477 |
+
|
478 |
+
if(empty($user_id))
|
479 |
+
{
|
480 |
+
$pmpro_error = "User ID not found.";
|
481 |
+
return false;
|
482 |
+
}
|
483 |
+
|
484 |
+
if(empty($level)) //cancelling membership
|
485 |
+
{
|
486 |
+
$level = 0;
|
487 |
+
}
|
488 |
+
else if(is_array($level))
|
489 |
+
{
|
490 |
+
//custom level
|
491 |
+
}
|
492 |
+
else
|
493 |
+
{
|
494 |
+
$level_obj = pmpro_getLevel($level);
|
495 |
+
if(empty($level_obj))
|
496 |
+
{
|
497 |
+
$pmpro_error = "Invalid level.";
|
498 |
+
return false;
|
499 |
+
}
|
500 |
+
$level = $level_obj->id;
|
501 |
+
}
|
502 |
+
|
503 |
+
|
504 |
+
//if it's a custom level, they're changing
|
505 |
+
if(!is_array($level))
|
506 |
+
{
|
507 |
+
//are they even changing?
|
508 |
+
if(pmpro_hasMembershipLevel($level, $user_id)) {
|
509 |
+
$pmpro_error = "not is changing?";
|
510 |
+
return false; //not changing
|
511 |
+
}
|
512 |
+
}
|
513 |
+
|
514 |
+
$old_levels = pmpro_getMembershipLevelsForUser($user_id);
|
515 |
+
|
516 |
+
$pmpro_cancel_previous_subscriptions = apply_filters("pmpro_cancel_previous_subscriptions", true);
|
517 |
+
if($pmpro_cancel_previous_subscriptions)
|
518 |
+
{
|
519 |
+
//deactivate old memberships (updates pmpro_memberships_users table)
|
520 |
+
if(!empty($old_levels))
|
521 |
+
{
|
522 |
+
foreach($old_levels as $old_level) {
|
523 |
+
$sql = "UPDATE $wpdb->pmpro_memberships_users SET `status`='inactive', `enddate`=NOW() WHERE `id`=".$old_level->subscription_id;
|
524 |
+
if(!$wpdb->query($sql))
|
525 |
+
{
|
526 |
+
$pmpro_error = "Error interacting with database: ".(mysql_errno()?mysql_error():'unavailable');
|
527 |
+
return false;
|
528 |
+
}
|
529 |
+
}
|
530 |
+
}
|
531 |
+
|
532 |
+
//cancel any other subscriptions they have (updates pmpro_membership_orders table)
|
533 |
+
$other_order_ids = $wpdb->get_col("SELECT id FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' AND status = 'success' ORDER BY id DESC");
|
534 |
+
foreach($other_order_ids as $order_id)
|
535 |
+
{
|
536 |
+
$c_order = new MemberOrder($order_id);
|
537 |
+
$c_order->cancel();
|
538 |
+
}
|
539 |
+
}
|
540 |
+
|
541 |
+
//insert current membership
|
542 |
+
if(!empty($level)) //are we getting a new one or just cancelling the old ones
|
543 |
+
{
|
544 |
+
if(is_array($level))
|
545 |
+
{
|
546 |
+
//make sure the dates are in good formats
|
547 |
+
if($level['startdate'] != "NOW()" && $level['startdate'] != "NULL" && substr($level['startdate'], 0, 1) != "'")
|
548 |
+
$level['startdate'] = "'" . $level['startdate'] . "'";
|
549 |
+
|
550 |
+
if($level['enddate'] != "NOW()" && $level['enddate'] != "NULL" && substr($level['enddate'], 0, 1) != "'")
|
551 |
+
$level['enddate'] = "'" . $level['enddate'] . "'";
|
552 |
+
|
553 |
+
$sql = "INSERT INTO $wpdb->pmpro_memberships_users (user_id, membership_id, code_id, initial_payment, billing_amount, cycle_number, cycle_period, billing_limit, trial_amount, trial_limit, startdate, enddate)
|
554 |
+
VALUES('" . $level['user_id'] . "',
|
555 |
+
'" . $level['membership_id'] . "',
|
556 |
+
'" . intval($level['code_id']) . "',
|
557 |
+
'" . $level['initial_payment'] . "',
|
558 |
+
'" . $level['billing_amount'] . "',
|
559 |
+
'" . $level['cycle_number'] . "',
|
560 |
+
'" . $level['cycle_period'] . "',
|
561 |
+
'" . $level['billing_limit'] . "',
|
562 |
+
'" . $level['trial_amount'] . "',
|
563 |
+
'" . $level['trial_limit'] . "',
|
564 |
+
" . $level['startdate'] . ",
|
565 |
+
" . $level['enddate'] . ")";
|
566 |
+
|
567 |
+
if(!$wpdb->query($sql))
|
568 |
+
{
|
569 |
+
$pmpro_error = "Error interacting with database: ".(mysql_errno()?mysql_error():'unavailable');
|
570 |
+
return false;
|
571 |
+
}
|
572 |
+
}
|
573 |
+
else
|
574 |
+
{
|
575 |
+
$sql = "INSERT INTO $wpdb->pmpro_memberships_users (`membership_id`,`user_id`) VALUES ('" . $level . "','" . $user_id . "')";
|
576 |
+
if(!$wpdb->query($sql))
|
577 |
+
{
|
578 |
+
$pmpro_error = "Error interacting with database: ".(mysql_errno()?mysql_error():'unavailable');
|
579 |
+
return false;
|
580 |
+
}
|
581 |
+
}
|
582 |
+
}
|
583 |
+
|
584 |
+
//get level id
|
585 |
+
if(is_array($level))
|
586 |
+
$level_id = $level['membership_id']; //custom level
|
587 |
+
else
|
588 |
+
$level_id = $level; //just id
|
589 |
+
|
590 |
+
//update user data and call action
|
591 |
+
pmpro_set_current_user();
|
592 |
+
do_action("pmpro_after_change_membership_level", $level_id, $user_id); //$level is the $level_id here
|
593 |
+
return true;
|
594 |
+
}
|
595 |
+
|
596 |
+
/* pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
|
597 |
+
*
|
598 |
+
* $level may either be the ID or name of the desired membership_level.
|
599 |
+
* $category must be a valid post category ID.
|
600 |
+
*
|
601 |
+
* Return values:
|
602 |
+
* Success returns boolean true.
|
603 |
+
* Failure returns a string containing the error message.
|
604 |
+
*/
|
605 |
+
function pmpro_toggleMembershipCategory( $level, $category, $value )
|
606 |
+
{
|
607 |
+
global $wpdb;
|
608 |
+
$category = intval($category);
|
609 |
+
|
610 |
+
if ( ($level = intval($level)) <= 0 )
|
611 |
+
{
|
612 |
+
$safe = addslashes($level);
|
613 |
+
if ( ($level = intval($wpdb->get_var("SELECT id FROM {$wpdb->pmpro_membership_levels} WHERE name = '$safe' LIMIT 1"))) <= 0 )
|
614 |
+
{
|
615 |
+
return "Membership level not found.";
|
616 |
+
}
|
617 |
+
}
|
618 |
+
|
619 |
+
if ( $value )
|
620 |
+
{
|
621 |
+
$sql = "REPLACE INTO {$wpdb->pmpro_memberships_categories} (`membership_id`,`category_id`) VALUES ('$level','$category')";
|
622 |
+
$wpdb->query($sql);
|
623 |
+
if(mysql_errno()) return mysql_error();
|
624 |
+
}
|
625 |
+
else
|
626 |
+
{
|
627 |
+
$sql = "DELETE FROM {$wpdb->pmpro_memberships_categories} WHERE `membership_id` = '$level' AND `category_id` = '$category' LIMIT 1";
|
628 |
+
$wpdb->query($sql);
|
629 |
+
if(mysql_errno()) return mysql_error();
|
630 |
+
}
|
631 |
+
|
632 |
+
return true;
|
633 |
+
}
|
634 |
+
|
635 |
+
/* pmpro_updateMembershipCategories() ensures that all those and only those categories given
|
636 |
+
* are associated with the given membership level.
|
637 |
+
*
|
638 |
+
* $level is a valid membership level ID or name
|
639 |
+
* $categories is an array of post category IDs
|
640 |
+
*
|
641 |
+
* Return values:
|
642 |
+
* Success returns boolean true.
|
643 |
+
* Failure returns a string containing the error message.
|
644 |
+
*/
|
645 |
+
function pmpro_updateMembershipCategories($level, $categories)
|
646 |
+
{
|
647 |
+
global $wpdb;
|
648 |
+
|
649 |
+
if(!is_numeric($level))
|
650 |
+
{
|
651 |
+
$level = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_levels WHERE name = '" . $wpdb->escape($level) . "' LIMIT 1");
|
652 |
+
if(empty($level))
|
653 |
+
{
|
654 |
+
return "Membership level not found.";
|
655 |
+
}
|
656 |
+
}
|
657 |
+
|
658 |
+
// remove all existing links...
|
659 |
+
$sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_categories WHERE `membership_id` = '" . $wpdb->escape($level) . "'";
|
660 |
+
$wpdb->query($sqlQuery);
|
661 |
+
if(mysql_errno()) return mysql_error();
|
662 |
+
|
663 |
+
// add the given links [back?] in...
|
664 |
+
foreach($categories as $cat)
|
665 |
+
{
|
666 |
+
if(is_string($r = pmpro_toggleMembershipCategory( $level, $cat, true)))
|
667 |
+
{
|
668 |
+
//uh oh, error
|
669 |
+
return $r;
|
670 |
+
}
|
671 |
+
}
|
672 |
+
|
673 |
+
//all good
|
674 |
+
return true;
|
675 |
+
}
|
676 |
+
|
677 |
+
/* pmpro_getMembershipCategories() returns the categories for a given level
|
678 |
+
*
|
679 |
+
* $level_id is a valid membership level ID
|
680 |
+
*
|
681 |
+
* Return values:
|
682 |
+
* Success returns boolean true.
|
683 |
+
* Failure returns boolean false.
|
684 |
+
*/
|
685 |
+
function pmpro_getMembershipCategories($level_id)
|
686 |
+
{
|
687 |
+
global $wpdb;
|
688 |
+
$categories = $wpdb->get_results("SELECT c.category_id
|
689 |
+
FROM {$wpdb->pmpro_memberships_categories} AS c
|
690 |
+
WHERE c.membership_id = '" . $level_id . "'", ARRAY_N);
|
691 |
+
|
692 |
+
$returns = array();
|
693 |
+
if(is_array($categories))
|
694 |
+
{
|
695 |
+
foreach($categories as $cat)
|
696 |
+
{
|
697 |
+
$returns[] = $cat;
|
698 |
+
}
|
699 |
+
}
|
700 |
+
return $returns;
|
701 |
+
}
|
702 |
+
|
703 |
+
function pmpro_isAdmin($user_id = NULL)
|
704 |
+
{
|
705 |
+
global $current_user, $wpdb;
|
706 |
+
if(!$user_id)
|
707 |
+
$user_id = $current_user->ID;
|
708 |
+
|
709 |
+
if(!$user_id)
|
710 |
+
return false;
|
711 |
+
|
712 |
+
$admincap = user_can($user_id, "manage_options");
|
713 |
+
if($admincap)
|
714 |
+
return true;
|
715 |
+
else
|
716 |
+
return false;
|
717 |
+
}
|
718 |
+
|
719 |
+
function pmpro_replaceUserMeta($user_id, $meta_keys, $meta_values, $prev_values = NULL)
|
720 |
+
{
|
721 |
+
//expects all arrays for last 3 params or all strings
|
722 |
+
if(!is_array($meta_keys))
|
723 |
+
{
|
724 |
+
$meta_keys = array($meta_keys);
|
725 |
+
$meta_values = array($meta_values);
|
726 |
+
$prev_values = array($prev_values);
|
727 |
+
}
|
728 |
+
|
729 |
+
for($i = 0; $i < count($meta_values); $i++)
|
730 |
+
{
|
731 |
+
if($prev_values[$i])
|
732 |
+
{
|
733 |
+
update_user_meta($user_id, $meta_keys[$i], $meta_values[$i], $prev_values[$i]);
|
734 |
+
}
|
735 |
+
else
|
736 |
+
{
|
737 |
+
$old_value = get_user_meta($user_id, $meta_keys[$i], true);
|
738 |
+
if($old_value)
|
739 |
+
{
|
740 |
+
update_user_meta($user_id, $meta_keys[$i], $meta_values[$i], $old_value);
|
741 |
+
}
|
742 |
+
else
|
743 |
+
{
|
744 |
+
update_user_meta($user_id, $meta_keys[$i], $meta_values[$i]);
|
745 |
+
}
|
746 |
+
}
|
747 |
+
}
|
748 |
+
|
749 |
+
return $i;
|
750 |
+
}
|
751 |
+
|
752 |
+
function pmpro_getMetavalues($query)
|
753 |
+
{
|
754 |
+
global $wpdb;
|
755 |
+
|
756 |
+
$results = $wpdb->get_results($query);
|
757 |
+
foreach($results as $result)
|
758 |
+
{
|
759 |
+
$r->{$result->key} = $result->value;
|
760 |
+
}
|
761 |
+
|
762 |
+
return $r;
|
763 |
+
}
|
764 |
+
|
765 |
+
//function to return the pagination string
|
766 |
+
function pmpro_getPaginationString($page = 1, $totalitems, $limit = 15, $adjacents = 1, $targetpage = "/", $pagestring = "&pn=")
|
767 |
+
{
|
768 |
+
//defaults
|
769 |
+
if(!$adjacents) $adjacents = 1;
|
770 |
+
if(!$limit) $limit = 15;
|
771 |
+
if(!$page) $page = 1;
|
772 |
+
if(!$targetpage) $targetpage = "/";
|
773 |
+
|
774 |
+
//other vars
|
775 |
+
$prev = $page - 1; //previous page is page - 1
|
776 |
+
$next = $page + 1; //next page is page + 1
|
777 |
+
$lastpage = ceil($totalitems / $limit); //lastpage is = total items / items per page, rounded up.
|
778 |
+
$lpm1 = $lastpage - 1; //last page minus 1
|
779 |
+
|
780 |
+
/*
|
781 |
+
Now we apply our rules and draw the pagination object.
|
782 |
+
We're actually saving the code to a variable in case we want to draw it more than once.
|
783 |
+
*/
|
784 |
+
$pagination = "";
|
785 |
+
if($lastpage > 1)
|
786 |
+
{
|
787 |
+
$pagination .= "<div class=\"pmpro_pagination\"";
|
788 |
+
if(!empty($margin) || !empty($padding))
|
789 |
+
{
|
790 |
+
$pagination .= " style=\"";
|
791 |
+
if($margin)
|
792 |
+
$pagination .= "margin: $margin;";
|
793 |
+
if($padding)
|
794 |
+
$pagination .= "padding: $padding;";
|
795 |
+
$pagination .= "\"";
|
796 |
+
}
|
797 |
+
$pagination .= ">";
|
798 |
+
|
799 |
+
//previous button
|
800 |
+
if ($page > 1)
|
801 |
+
$pagination .= "<a href=\"$targetpage$pagestring$prev\">« prev</a>";
|
802 |
+
else
|
803 |
+
$pagination .= "<span class=\"disabled\">« prev</span>";
|
804 |
+
|
805 |
+
//pages
|
806 |
+
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
|
807 |
+
{
|
808 |
+
for ($counter = 1; $counter <= $lastpage; $counter++)
|
809 |
+
{
|
810 |
+
if ($counter == $page)
|
811 |
+
$pagination .= "<span class=\"current\">$counter</span>";
|
812 |
+
else
|
813 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
|
814 |
+
}
|
815 |
+
}
|
816 |
+
elseif($lastpage >= 7 + ($adjacents * 2)) //enough pages to hide some
|
817 |
+
{
|
818 |
+
//close to beginning; only hide later pages
|
819 |
+
if($page < 1 + ($adjacents * 3))
|
820 |
+
{
|
821 |
+
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
|
822 |
+
{
|
823 |
+
if ($counter == $page)
|
824 |
+
$pagination .= "<span class=\"current\">$counter</span>";
|
825 |
+
else
|
826 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
|
827 |
+
}
|
828 |
+
$pagination .= "...";
|
829 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $lpm1 . "\">$lpm1</a>";
|
830 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $lastpage . "\">$lastpage</a>";
|
831 |
+
}
|
832 |
+
//in middle; hide some front and some back
|
833 |
+
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
|
834 |
+
{
|
835 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . "1\">1</a>";
|
836 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . "2\">2</a>";
|
837 |
+
$pagination .= "...";
|
838 |
+
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
|
839 |
+
{
|
840 |
+
if ($counter == $page)
|
841 |
+
$pagination .= "<span class=\"current\">$counter</span>";
|
842 |
+
else
|
843 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
|
844 |
+
}
|
845 |
+
$pagination .= "...";
|
846 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $lpm1 . "\">$lpm1</a>";
|
847 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $lastpage . "\">$lastpage</a>";
|
848 |
+
}
|
849 |
+
//close to end; only hide early pages
|
850 |
+
else
|
851 |
+
{
|
852 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . "1\">1</a>";
|
853 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . "2\">2</a>";
|
854 |
+
$pagination .= "...";
|
855 |
+
for ($counter = $lastpage - (1 + ($adjacents * 3)); $counter <= $lastpage; $counter++)
|
856 |
+
{
|
857 |
+
if ($counter == $page)
|
858 |
+
$pagination .= "<span class=\"current\">$counter</span>";
|
859 |
+
else
|
860 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
|
861 |
+
}
|
862 |
+
}
|
863 |
+
}
|
864 |
+
|
865 |
+
//next button
|
866 |
+
if ($page < $counter - 1)
|
867 |
+
$pagination .= "<a href=\"" . $targetpage . $pagestring . $next . "\">next »</a>";
|
868 |
+
else
|
869 |
+
$pagination .= "<span class=\"disabled\">next »</span>";
|
870 |
+
$pagination .= "</div>\n";
|
871 |
+
}
|
872 |
+
|
873 |
+
return $pagination;
|
874 |
+
|
875 |
+
}
|
876 |
+
|
877 |
+
function pmpro_calculateInitialPaymentRevenue($s = NULL, $l = NULL)
|
878 |
+
{
|
879 |
+
global $wpdb;
|
880 |
+
|
881 |
+
//if we're limiting users by search
|
882 |
+
if($s || $l)
|
883 |
+
{
|
884 |
+
$user_ids_query = "SELECT u.ID FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id WHERE mu.status = 'active' ";
|
885 |
+
if($s)
|
886 |
+
$user_ids_query .= "AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
|
887 |
+
if($l)
|
888 |
+
$user_ids_query .= "AND mu.membership_id = '$l' ";
|
889 |
+
}
|
890 |
+
|
891 |
+
//query to sum initial payments
|
892 |
+
$sqlQuery = "SELECT SUM(initial_payment) FROM $wpdb->pmpro_memberships_users WHERE `status` = 'active' ";
|
893 |
+
if(!empty($user_ids_query))
|
894 |
+
$sqlQuery .= "AND user_id IN(" . $user_ids_query . ") ";
|
895 |
+
|
896 |
+
$total = $wpdb->get_var($sqlQuery);
|
897 |
+
|
898 |
+
return (double)$total;
|
899 |
+
}
|
900 |
+
|
901 |
+
function pmpro_calculateRecurringRevenue($s, $l)
|
902 |
+
{
|
903 |
+
global $wpdb;
|
904 |
+
|
905 |
+
//if we're limiting users by search
|
906 |
+
if($s || $l)
|
907 |
+
{
|
908 |
+
$user_ids_query = "AND user_id IN(SELECT u.ID FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id WHERE mu.status = 'active' ";
|
909 |
+
if($s)
|
910 |
+
$user_ids_query .= "AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
|
911 |
+
if($l)
|
912 |
+
$user_ids_query .= "AND mu.membership_id = '$l' ";
|
913 |
+
$user_ids_query .= ")";
|
914 |
+
}
|
915 |
+
else
|
916 |
+
$user_ids_query = "";
|
917 |
+
|
918 |
+
//4 queries to get annual earnings for each cycle period. currently ignoring trial periods and billing limits.
|
919 |
+
$sqlQuery = "
|
920 |
+
SELECT SUM((12/cycle_number)*billing_amount) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND cycle_period = 'Month' AND cycle_number <> 12 $user_ids_query
|
921 |
+
UNION
|
922 |
+
SELECT SUM((365/cycle_number)*billing_amount) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND cycle_period = 'Day' AND cycle_number <> 365 $user_ids_query
|
923 |
+
UNION
|
924 |
+
SELECT SUM((52/cycle_number)*billing_amount) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND cycle_period = 'Week' AND cycle_number <> 52 $user_ids_query
|
925 |
+
UNION
|
926 |
+
SELECT SUM(billing_amount) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND cycle_period = 'Year' $user_ids_query
|
927 |
+
";
|
928 |
+
|
929 |
+
$annual_revenues = $wpdb->get_col($sqlQuery);
|
930 |
+
|
931 |
+
$total = 0;
|
932 |
+
foreach($annual_revenues as $r)
|
933 |
+
{
|
934 |
+
$total += $r;
|
935 |
+
}
|
936 |
+
|
937 |
+
return $total;
|
938 |
+
}
|
939 |
+
|
940 |
+
function pmpro_generateUsername($firstname = "", $lastname = "", $email = "")
|
941 |
+
{
|
942 |
+
global $wpdb;
|
943 |
+
|
944 |
+
//try first initial + last name, firstname, lastname
|
945 |
+
$firstname = preg_replace("/[^A-Za-z]/", "", $firstname);
|
946 |
+
$lastname = preg_replace("/[^A-Za-z]/", "", $lastname);
|
947 |
+
if($firstname && $lastname)
|
948 |
+
{
|
949 |
+
$username = substr($firstname, 0, 1) . $lastname;
|
950 |
+
}
|
951 |
+
elseif($firstname)
|
952 |
+
{
|
953 |
+
$username = $firstname;
|
954 |
+
}
|
955 |
+
elseif($lastname)
|
956 |
+
{
|
957 |
+
$username = $lastname;
|
958 |
+
}
|
959 |
+
|
960 |
+
//is it taken?
|
961 |
+
$taken = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_login = '" . $username . "' LIMIT 1");
|
962 |
+
|
963 |
+
if(!$taken)
|
964 |
+
return $username;
|
965 |
+
|
966 |
+
//try the beginning of the email address
|
967 |
+
$emailparts = explode("@", "email");
|
968 |
+
if(is_array($emailparts))
|
969 |
+
$email = preg_replace("/[^A-Za-z]/", "", $emailparts[0]);
|
970 |
+
|
971 |
+
if($email)
|
972 |
+
{
|
973 |
+
$username = $email;
|
974 |
+
}
|
975 |
+
|
976 |
+
//is this taken? if not, add numbers until it works
|
977 |
+
$taken = true;
|
978 |
+
$count = 0;
|
979 |
+
while($taken)
|
980 |
+
{
|
981 |
+
//add a # to the end
|
982 |
+
if($count)
|
983 |
+
{
|
984 |
+
$username = preg_replace("/[0-9]/", "", $username) . $count;
|
985 |
+
}
|
986 |
+
|
987 |
+
//taken?
|
988 |
+
$taken = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_login = '" . $username . "' LIMIT 1");
|
989 |
+
|
990 |
+
//increment the number
|
991 |
+
$count++;
|
992 |
+
}
|
993 |
+
|
994 |
+
//must have a good username now
|
995 |
+
return $username;
|
996 |
+
}
|
997 |
+
|
998 |
+
//get a new random code for discount codes
|
999 |
+
function pmpro_getDiscountCode()
|
1000 |
+
{
|
1001 |
+
global $wpdb;
|
1002 |
+
|
1003 |
+
while(empty($code))
|
1004 |
+
{
|
1005 |
+
$scramble = md5(AUTH_KEY . time() . SECURE_AUTH_KEY);
|
1006 |
+
$code = substr($scramble, 0, 10);
|
1007 |
+
$check = $wpdb->get_var("SELECT code FROM $wpdb->pmpro_discount_codes WHERE code = '$code' LIMIT 1");
|
1008 |
+
if($check || is_numeric($code))
|
1009 |
+
$code = NULL;
|
1010 |
+
}
|
1011 |
+
|
1012 |
+
return strtoupper($code);
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
//is a discount code valid
|
1016 |
+
function pmpro_checkDiscountCode($code, $level_id = NULL, $return_errors = false)
|
1017 |
+
{
|
1018 |
+
global $wpdb;
|
1019 |
+
|
1020 |
+
//no code, no code
|
1021 |
+
if(empty($code))
|
1022 |
+
{
|
1023 |
+
if($return_errors)
|
1024 |
+
return array(false, "No code was given to check.");
|
1025 |
+
else
|
1026 |
+
return false;
|
1027 |
+
}
|
1028 |
+
|
1029 |
+
//get code from db
|
1030 |
+
$dbcode = $wpdb->get_row("SELECT *, UNIX_TIMESTAMP(starts) as starts, UNIX_TIMESTAMP(expires) as expires FROM $wpdb->pmpro_discount_codes WHERE code ='" . $code . "' LIMIT 1");
|
1031 |
+
|
1032 |
+
//did we find it?
|
1033 |
+
if(empty($dbcode->id))
|
1034 |
+
{
|
1035 |
+
if($return_errors)
|
1036 |
+
return array(false, "The code could not be found.");
|
1037 |
+
else
|
1038 |
+
return false;
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
//fix the date timestamps
|
1042 |
+
$dbcode->starts = strtotime(date("m/d/Y", $dbcode->starts));
|
1043 |
+
$dbcode->expires = strtotime(date("m/d/Y", $dbcode->expires));
|
1044 |
+
|
1045 |
+
//today
|
1046 |
+
$today = strtotime(date("m/d/Y 00:00:00"));
|
1047 |
+
|
1048 |
+
//has this code started yet?
|
1049 |
+
if(!empty($dbcode->starts) && $dbcode->starts > $today)
|
1050 |
+
{
|
1051 |
+
if($return_errors)
|
1052 |
+
return array(false, "This discount code goes into effect on " . date(get_option('date_format'), $dbcode->starts) . ".");
|
1053 |
+
else
|
1054 |
+
return false;
|
1055 |
+
}
|
1056 |
+
|
1057 |
+
//has this code expired?
|
1058 |
+
if(!empty($dbcode->expires) && $dbcode->expires < $today)
|
1059 |
+
{
|
1060 |
+
if($return_errors)
|
1061 |
+
return array(false, "This discount code expired on " . date(get_option('date_format'), $dbcode->expires) . ".");
|
1062 |
+
else
|
1063 |
+
return false;
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
//have we run out of uses?
|
1067 |
+
if($dbcode->uses > 0)
|
1068 |
+
{
|
1069 |
+
$used = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $dbcode->id . "'");
|
1070 |
+
if($used >= $dbcode->uses)
|
1071 |
+
{
|
1072 |
+
if($return_errors)
|
1073 |
+
return array(false, "This discount code is no longer valid.");
|
1074 |
+
else
|
1075 |
+
return false;
|
1076 |
+
}
|
1077 |
+
}
|
1078 |
+
|
1079 |
+
//if a level was passed check if this code applies
|
1080 |
+
$pmpro_check_discount_code_levels = apply_filters("pmpro_check_discount_code_levels", true, $dbcode->id);
|
1081 |
+
if(!empty($level_id) && $pmpro_check_discount_code_levels)
|
1082 |
+
{
|
1083 |
+
$code_level = $wpdb->get_row("SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id WHERE cl.code_id = '" . $dbcode->id . "' AND cl.level_id = '" . $level_id . "' LIMIT 1");
|
1084 |
+
|
1085 |
+
if(empty($code_level))
|
1086 |
+
{
|
1087 |
+
if(!empty($return_errors))
|
1088 |
+
return array(false, "This code does not apply to this membership level.");
|
1089 |
+
else
|
1090 |
+
return false;
|
1091 |
+
}
|
1092 |
+
}
|
1093 |
+
|
1094 |
+
//guess we're all good
|
1095 |
+
if(!empty($return_errors))
|
1096 |
+
return array(true, "This discount code is okay.");
|
1097 |
+
else
|
1098 |
+
return true;
|
1099 |
+
}
|
1100 |
+
|
1101 |
+
function pmpro_no_quotes($s, $quotes = array("'", '"'))
|
1102 |
+
{
|
1103 |
+
return str_replace($quotes, "", $s);
|
1104 |
+
}
|
1105 |
+
|
1106 |
+
//from: http://www.php.net/manual/en/function.implode.php#86845
|
1107 |
+
function pmpro_implodeToEnglish($array)
|
1108 |
+
{
|
1109 |
+
// sanity check
|
1110 |
+
if (!$array || !count ($array))
|
1111 |
+
return '';
|
1112 |
+
|
1113 |
+
// get last element
|
1114 |
+
$last = array_pop ($array);
|
1115 |
+
|
1116 |
+
// if it was the only element - return it
|
1117 |
+
if (!count ($array))
|
1118 |
+
return $last;
|
1119 |
+
|
1120 |
+
return implode (', ', $array).' and '.$last;
|
1121 |
+
}
|
1122 |
+
|
1123 |
+
//from yoast wordpress seo
|
1124 |
+
function pmpro_text_limit( $text, $limit, $finish = '…')
|
1125 |
+
{
|
1126 |
+
if( strlen( $text ) > $limit ) {
|
1127 |
+
$text = substr( $text, 0, $limit );
|
1128 |
+
$text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) );
|
1129 |
+
$text .= $finish;
|
1130 |
+
}
|
1131 |
+
return $text;
|
1132 |
+
}
|
1133 |
+
|
1134 |
+
/* pmpro_getMembershipLevelForUser() returns the first active membership level for a user
|
1135 |
+
*
|
1136 |
+
* If $user_id is omitted, the value will be retrieved from $current_user.
|
1137 |
+
*
|
1138 |
+
* Return values:
|
1139 |
+
* Success returns the level object.
|
1140 |
+
* Failure returns false.
|
1141 |
+
*/
|
1142 |
+
function pmpro_getMembershipLevelForUser($user_id = NULL)
|
1143 |
+
{
|
1144 |
+
if(empty($user_id))
|
1145 |
+
{
|
1146 |
+
global $current_user;
|
1147 |
+
$user_id = $current_user->ID;
|
1148 |
+
}
|
1149 |
+
|
1150 |
+
if(empty($user_id))
|
1151 |
+
{
|
1152 |
+
return false;
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
global $all_membership_levels;
|
1156 |
+
|
1157 |
+
if(isset($all_membership_levels[$user_id]))
|
1158 |
+
{
|
1159 |
+
return $all_membership_levels[$user_id];
|
1160 |
+
}
|
1161 |
+
else
|
1162 |
+
{
|
1163 |
+
global $wpdb;
|
1164 |
+
$all_membership_levels[$user_id] = $wpdb->get_row("SELECT
|
1165 |
+
l.id AS ID,
|
1166 |
+
l.id as id,
|
1167 |
+
mu.id as subscription_id,
|
1168 |
+
l.name AS name,
|
1169 |
+
l.description,
|
1170 |
+
l.expiration_number,
|
1171 |
+
l.expiration_period,
|
1172 |
+
mu.initial_payment,
|
1173 |
+
mu.billing_amount,
|
1174 |
+
mu.cycle_number,
|
1175 |
+
mu.cycle_period,
|
1176 |
+
mu.billing_limit,
|
1177 |
+
mu.trial_amount,
|
1178 |
+
mu.trial_limit,
|
1179 |
+
mu.code_id as code_id,
|
1180 |
+
UNIX_TIMESTAMP(startdate) as startdate,
|
1181 |
+
UNIX_TIMESTAMP(enddate) as enddate
|
1182 |
+
FROM {$wpdb->pmpro_membership_levels} AS l
|
1183 |
+
JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
|
1184 |
+
WHERE mu.user_id = $user_id AND mu.status = 'active'
|
1185 |
+
LIMIT 1");
|
1186 |
+
return $all_membership_levels[$user_id];
|
1187 |
+
}
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
/* pmpro_getMembershipLevelsForUser() returns the membership levels for a user
|
1191 |
+
*
|
1192 |
+
* If $user_id is omitted, the value will be retrieved from $current_user.
|
1193 |
+
* By default it only includes actvie memberships.
|
1194 |
+
*
|
1195 |
+
* Return values:
|
1196 |
+
* Success returns an array of level objects.
|
1197 |
+
* Failure returns false.
|
1198 |
+
*/
|
1199 |
+
function pmpro_getMembershipLevelsForUser($user_id = NULL, $include_inactive = false)
|
1200 |
+
{
|
1201 |
+
if(empty($user_id))
|
1202 |
+
{
|
1203 |
+
global $current_user;
|
1204 |
+
$user_id = $current_user->ID;
|
1205 |
+
}
|
1206 |
+
|
1207 |
+
if(empty($user_id))
|
1208 |
+
{
|
1209 |
+
return false;
|
1210 |
+
}
|
1211 |
+
|
1212 |
+
global $wpdb;
|
1213 |
+
return $wpdb->get_results("SELECT
|
1214 |
+
l.id AS ID,
|
1215 |
+
l.id as id,
|
1216 |
+
mu.id as subscription_id,
|
1217 |
+
l.name,
|
1218 |
+
l.description,
|
1219 |
+
l.expiration_number,
|
1220 |
+
l.expiration_period,
|
1221 |
+
mu.initial_payment,
|
1222 |
+
mu.billing_amount,
|
1223 |
+
mu.cycle_number,
|
1224 |
+
mu.cycle_period,
|
1225 |
+
mu.billing_limit,
|
1226 |
+
mu.trial_amount,
|
1227 |
+
mu.trial_limit,
|
1228 |
+
mu.code_id as code_id,
|
1229 |
+
UNIX_TIMESTAMP(startdate) as startdate,
|
1230 |
+
UNIX_TIMESTAMP(enddate) as enddate
|
1231 |
+
FROM {$wpdb->pmpro_membership_levels} AS l
|
1232 |
+
JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
|
1233 |
+
WHERE mu.user_id = $user_id".($include_inactive?"":" AND mu.status = 'active'"));
|
1234 |
+
}
|
1235 |
+
|
1236 |
+
/* pmpro_getLevel() returns the level object for a level
|
1237 |
+
*
|
1238 |
+
* $level may be the level id or name
|
1239 |
+
*
|
1240 |
+
* Return values:
|
1241 |
+
* Success returns the level object.
|
1242 |
+
* Failure returns false.
|
1243 |
+
*/
|
1244 |
+
function pmpro_getLevel($level)
|
1245 |
+
{
|
1246 |
+
global $pmpro_levels;
|
1247 |
+
|
1248 |
+
if(is_object($level) && !empty($level->id))
|
1249 |
+
$level = $level->id;
|
1250 |
+
|
1251 |
+
//was a name passed? (Todo: make sure level names have at least one non-numeric character.
|
1252 |
+
if(is_numeric($level))
|
1253 |
+
{
|
1254 |
+
$level_id = intval($level);
|
1255 |
+
if(isset($pmpro_levels[$level_id]))
|
1256 |
+
{
|
1257 |
+
return $pmpro_levels[$level_id];
|
1258 |
+
}
|
1259 |
+
else
|
1260 |
+
{
|
1261 |
+
global $wpdb;
|
1262 |
+
$pmpro_levels[$level_id] = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1");
|
1263 |
+
return $pmpro_levels[$level_id];
|
1264 |
+
}
|
1265 |
+
}
|
1266 |
+
else
|
1267 |
+
{
|
1268 |
+
global $wpdb;
|
1269 |
+
$level_obj = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE name = '" . $level . "' LIMIT 1");
|
1270 |
+
$level_id = $level->ID;
|
1271 |
+
$pmpro_levels[$level_id] = $level_obj;
|
1272 |
+
return $pmpro_levels[$level_id];
|
1273 |
+
}
|
1274 |
+
}
|
1275 |
+
|
1276 |
+
/*
|
1277 |
+
Function to populate pmpro_levels with all levels. We query the DB every time just to be sure we have the latest.
|
1278 |
+
This should be called if you want to be sure you get all levels as $pmpro_levels may only have a subset of levels.
|
1279 |
+
*/
|
1280 |
+
function pmpro_getAllLevels($include_hidden = false)
|
1281 |
+
{
|
1282 |
+
global $pmpro_levels, $wpdb;
|
1283 |
+
|
1284 |
+
//build query
|
1285 |
+
$sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ";
|
1286 |
+
if(!$include_hidden)
|
1287 |
+
$sqlQuery .= " WHERE allow_signups = 1 ORDER BY id";
|
1288 |
+
|
1289 |
+
//get levels from the DB
|
1290 |
+
$raw_levels = $wpdb->get_results($sqlQuery);
|
1291 |
+
|
1292 |
+
//lets put them into an array where the key is the id of the level
|
1293 |
+
$pmpro_levels = array();
|
1294 |
+
foreach($raw_levels as $raw_level)
|
1295 |
+
{
|
1296 |
+
$pmpro_levels[$raw_level->id] = $raw_level;
|
1297 |
+
}
|
1298 |
+
|
1299 |
+
return $pmpro_levels;
|
1300 |
+
}
|
1301 |
+
|
1302 |
+
function pmpro_getCheckoutButton($level_id, $button_text = NULL, $classes = NULL)
|
1303 |
+
{
|
1304 |
+
if(empty($button_text))
|
1305 |
+
$button_text = "Sign Up for !!name!! Now";
|
1306 |
+
|
1307 |
+
if(empty($classes))
|
1308 |
+
$classes = "btn btn-primary";
|
1309 |
+
|
1310 |
+
if(empty($level_id))
|
1311 |
+
$r = "Please specify a level id.";
|
1312 |
+
else
|
1313 |
+
{
|
1314 |
+
//get level
|
1315 |
+
$level = pmpro_getLevel($level_id);
|
1316 |
+
|
1317 |
+
//replace vars
|
1318 |
+
$replacements = array(
|
1319 |
+
"!!id!!" => $level->id,
|
1320 |
+
"!!name!!" => $level->name,
|
1321 |
+
"!!description!!" => $level->description,
|
1322 |
+
"!!confirmation!!" => $level->confirmation,
|
1323 |
+
"!!initial_payment!!" => $level->initial_payment,
|
1324 |
+
"!!billing_amount!!" => $level->billing_amount,
|
1325 |
+
"!!cycle_number!!" => $level->cycle_number,
|
1326 |
+
"!!cycle_period!!" => $level->cycle_period,
|
1327 |
+
"!!billing_limit!!" => $level->billing_limit,
|
1328 |
+
"!!trial_amount!!" => $level->trial_amount,
|
1329 |
+
"!!trial_limit!!" => $level->trial_limit,
|
1330 |
+
"!!expiration_number!!" => $level->expiration_number,
|
1331 |
+
"!!expiration_period!!" => $level->expiration_period
|
1332 |
+
);
|
1333 |
+
$button_text = str_replace(array_keys($replacements), $replacements, $button_text);
|
1334 |
+
|
1335 |
+
//button text
|
1336 |
+
$r = "<a href=\"" . pmpro_url("checkout", "?level=" . $level_id) . "\" class=\"" . $classes . "\">" . $button_text . "</a>";
|
1337 |
+
}
|
1338 |
+
return $r;
|
1339 |
+
}
|
1340 |
+
|
1341 |
+
/**
|
1342 |
+
* Get the "domain" from a URL. By domain, we mean the host name, minus any subdomains. So just the domain and TLD.
|
1343 |
+
*
|
1344 |
+
* @param string $url The URL to parse. (generally pass site_url() in WP)
|
1345 |
+
* @return string The domain.
|
1346 |
+
*/
|
1347 |
+
function pmpro_getDomainFromURL($url = NULL)
|
1348 |
+
{
|
1349 |
+
$domainparts = parse_url($url);
|
1350 |
+
$domainparts = explode(".", $domainparts['host']);
|
1351 |
+
if(count($domainparts) > 1)
|
1352 |
+
{
|
1353 |
+
//check for ips
|
1354 |
+
$isip = true;
|
1355 |
+
foreach($domainparts as $part)
|
1356 |
+
{
|
1357 |
+
if(!is_numeric($part))
|
1358 |
+
{
|
1359 |
+
$isip = false;
|
1360 |
+
break;
|
1361 |
+
}
|
1362 |
+
}
|
1363 |
+
|
1364 |
+
if($isip)
|
1365 |
+
{
|
1366 |
+
//ip, e.g. 127.1.1.1
|
1367 |
+
$domain = implode(".", $domainparts);
|
1368 |
+
}
|
1369 |
+
else
|
1370 |
+
{
|
1371 |
+
//www.something.com, etc.
|
1372 |
+
$domain = $domainparts[count($domainparts)-2] . "." . $domainparts[count($domainparts)-1];
|
1373 |
+
}
|
1374 |
+
}
|
1375 |
+
else
|
1376 |
+
{
|
1377 |
+
//localhost or another single word domain
|
1378 |
+
$domain = $domainparts[0];
|
1379 |
+
}
|
1380 |
+
|
1381 |
+
return $domain;
|
1382 |
+
}
|
1383 |
+
|
1384 |
+
/*
|
1385 |
+
Get a member's start date... either in general or for a specific level_id.
|
1386 |
+
*/
|
1387 |
+
if(!function_exists("pmpro_getMemberStartdate"))
|
1388 |
+
{
|
1389 |
+
function pmpro_getMemberStartdate($user_id = NULL, $level_id = 0)
|
1390 |
+
{
|
1391 |
+
if(empty($user_id))
|
1392 |
+
{
|
1393 |
+
global $current_user;
|
1394 |
+
$user_id = $current_user->ID;
|
1395 |
+
}
|
1396 |
+
|
1397 |
+
global $pmpro_startdates; //for cache
|
1398 |
+
if(empty($pmpro_startdates[$user_id][$level_id]))
|
1399 |
+
{
|
1400 |
+
global $wpdb;
|
1401 |
+
|
1402 |
+
if(!empty($level_id))
|
1403 |
+
$sqlQuery = "SELECT UNIX_TIMESTAMP(startdate) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND membership_id IN(" . $wpdb->escape($level_id) . ") AND user_id = '" . $user_id . "' ORDER BY id LIMIT 1";
|
1404 |
+
else
|
1405 |
+
$sqlQuery = "SELECT UNIX_TIMESTAMP(startdate) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND user_id = '" . $user_id . "' ORDER BY id LIMIT 1";
|
1406 |
+
|
1407 |
+
$startdate = $wpdb->get_var($sqlQuery);
|
1408 |
+
|
1409 |
+
$pmpro_startdates[$user_id][$level_id] = $startdate;
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
return $pmpro_startdates[$user_id][$level_id];
|
1413 |
+
}
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
/*
|
1417 |
+
How long has this member been a member
|
1418 |
+
*/
|
1419 |
+
if(!function_exists("pmpro_getMemberDays"))
|
1420 |
+
{
|
1421 |
+
function pmpro_getMemberDays($user_id = NULL, $level_id = 0)
|
1422 |
+
{
|
1423 |
+
if(empty($user_id))
|
1424 |
+
{
|
1425 |
+
global $current_user;
|
1426 |
+
$user_id = $current_user->ID;
|
1427 |
+
}
|
1428 |
+
|
1429 |
+
global $pmpro_member_days;
|
1430 |
+
if(empty($pmpro_member_days[$user_id][$level_id]))
|
1431 |
+
{
|
1432 |
+
$startdate = pmpro_getMemberStartdate($user_id, $level_id);
|
1433 |
+
|
1434 |
+
$now = time();
|
1435 |
+
$days = ($now - $startdate)/3600/24;
|
1436 |
+
|
1437 |
+
$pmpro_member_days[$user_id][$level_id] = $days;
|
1438 |
+
}
|
1439 |
+
|
1440 |
+
return $pmpro_member_days[$user_id][$level_id];
|
1441 |
+
}
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
//the start of a message handling script
|
1445 |
+
function pmpro_setMessage($message, $type, $force = false)
|
1446 |
+
{
|
1447 |
+
global $pmpro_msg, $pmpro_msgt;
|
1448 |
+
|
1449 |
+
//for now, we only show the first message generated
|
1450 |
+
if($force || empty($pmpro_msg))
|
1451 |
+
{
|
1452 |
+
$pmpro_msg = $message;
|
1453 |
+
$pmpro_msgt = $type;
|
1454 |
+
}
|
1455 |
+
}
|
1456 |
+
|
1457 |
+
//used in class definitions for input fields to see if there was an error
|
1458 |
+
function pmpro_getClassForField($field)
|
1459 |
+
{
|
1460 |
+
global $pmpro_error_fields, $pmpro_required_billing_fields, $pmpro_required_user_fields;
|
1461 |
+
$classes = array();
|
1462 |
+
|
1463 |
+
//error on this field?
|
1464 |
+
if(in_array($field, $pmpro_error_fields))
|
1465 |
+
{
|
1466 |
+
$classes[] = "pmpro_error";
|
1467 |
+
}
|
1468 |
+
|
1469 |
+
$required_fields = array_merge(array_keys($pmpro_required_billing_fields), array_keys($pmpro_required_user_fields));
|
1470 |
+
|
1471 |
+
//required?
|
1472 |
+
if(in_array($field, $required_fields))
|
1473 |
+
{
|
1474 |
+
$classes[] = "pmpro_required";
|
1475 |
+
}
|
1476 |
+
|
1477 |
+
$classes = apply_filters("pmpro_field_classes", $classes, $field);
|
1478 |
+
|
1479 |
+
if(!empty($classes))
|
1480 |
+
return implode(" ", $classes);
|
1481 |
+
else
|
1482 |
+
return "";
|
1483 |
+
}
|
1484 |
+
|
1485 |
+
//get a var from $_GET or $_POST
|
1486 |
+
function pmpro_getParam($index, $method = "REQUEST", $default = "")
|
1487 |
+
{
|
1488 |
+
if($method == "REQUEST")
|
1489 |
+
{
|
1490 |
+
if(!empty($_REQUEST[$index]))
|
1491 |
+
return $_REQUEST[$index];
|
1492 |
+
}
|
1493 |
+
elseif($method == "POST")
|
1494 |
+
{
|
1495 |
+
if(!empty($_POST[$index]))
|
1496 |
+
return $_POST[$index];
|
1497 |
+
}
|
1498 |
+
elseif($method == "GET")
|
1499 |
+
{
|
1500 |
+
if(!empty($_GET[$index]))
|
1501 |
+
return $_GET[$index];
|
1502 |
+
}
|
1503 |
+
|
1504 |
+
return $default;
|
1505 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/https.php
DELETED
@@ -1,185 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Code related to HTTPS/SSL
|
4 |
-
*/
|
5 |
-
|
6 |
-
//this function checks if we have set the $isapage variable, and if so prevents WP from sending a 404
|
7 |
-
function pmpro_status_filter($s)
|
8 |
-
{
|
9 |
-
global $isapage;
|
10 |
-
if($isapage && strpos($s, "404"))
|
11 |
-
return false; //don't send the 404
|
12 |
-
else
|
13 |
-
return $s;
|
14 |
-
}
|
15 |
-
|
16 |
-
//filters links/etc to add HTTPS to URL if needed
|
17 |
-
function pmpro_https_filter($s)
|
18 |
-
{
|
19 |
-
global $besecure;
|
20 |
-
$besecure = apply_filters('pmpro_besecure', $besecure);
|
21 |
-
|
22 |
-
if($besecure || is_ssl())
|
23 |
-
return str_replace("http:", "https:", $s);
|
24 |
-
else
|
25 |
-
return str_replace("https:", "http:", $s);
|
26 |
-
}
|
27 |
-
add_filter('status_header', 'pmpro_status_filter');
|
28 |
-
add_filter('bloginfo_url', 'pmpro_https_filter');
|
29 |
-
add_filter('wp_list_pages', 'pmpro_https_filter');
|
30 |
-
add_filter('option_home', 'pmpro_https_filter');
|
31 |
-
add_filter('option_siteurl', 'pmpro_https_filter');
|
32 |
-
add_filter('logout_url', 'pmpro_https_filter');
|
33 |
-
add_filter('login_url', 'pmpro_https_filter');
|
34 |
-
add_filter('home_url', 'pmpro_https_filter');
|
35 |
-
|
36 |
-
//this function sets the besecure global which may be used in early code
|
37 |
-
/*
|
38 |
-
function pmpro_besecure_set()
|
39 |
-
{
|
40 |
-
global $besecure;
|
41 |
-
if(force_ssl_admin() || force_ssl_login() || is_ssl())
|
42 |
-
$besecure = true;
|
43 |
-
|
44 |
-
$besecure = apply_filters("pmpro_besecure", $besecure);
|
45 |
-
}
|
46 |
-
add_action('init', 'pmpro_besecure_set', 2);
|
47 |
-
*/
|
48 |
-
|
49 |
-
//this function updates the besecure global with post data and redirects if needed
|
50 |
-
function pmpro_besecure()
|
51 |
-
{
|
52 |
-
global $besecure, $post;
|
53 |
-
|
54 |
-
//check the post option
|
55 |
-
if(!is_admin() && !empty($post->ID) && !$besecure)
|
56 |
-
$besecure = get_post_meta($post->ID, "besecure", true);
|
57 |
-
|
58 |
-
//if forcing ssl on admin, be secure in admin and login page
|
59 |
-
if(!$besecure && force_ssl_admin() && (is_admin() || pmpro_is_login_page()))
|
60 |
-
$besecure = true;
|
61 |
-
|
62 |
-
//if forcing ssl on login, be secure on the login page
|
63 |
-
if(!$besecure && force_ssl_login() && pmpro_is_login_page())
|
64 |
-
$besecure = true;
|
65 |
-
|
66 |
-
$besecure = apply_filters("pmpro_besecure", $besecure);
|
67 |
-
|
68 |
-
$use_ssl = pmpro_getOption("use_ssl");
|
69 |
-
if($use_ssl == 1)
|
70 |
-
{
|
71 |
-
if($besecure && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off" || $_SERVER['HTTPS'] == "false"))
|
72 |
-
{
|
73 |
-
//need to be secure
|
74 |
-
wp_redirect("https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
|
75 |
-
exit;
|
76 |
-
}
|
77 |
-
elseif(!$besecure && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "off" && $_SERVER['HTTPS'] != "false")
|
78 |
-
{
|
79 |
-
//don't need to be secure
|
80 |
-
wp_redirect("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
|
81 |
-
exit;
|
82 |
-
}
|
83 |
-
}
|
84 |
-
}
|
85 |
-
add_action('wp', 'pmpro_besecure', 2);
|
86 |
-
add_action('login_init', 'pmpro_besecure', 2);
|
87 |
-
|
88 |
-
//JavaScript SSL redirect
|
89 |
-
function pmpro_ssl_javascript_redirect()
|
90 |
-
{
|
91 |
-
global $besecure;
|
92 |
-
$use_ssl = pmpro_getOption("use_ssl");
|
93 |
-
if(!is_admin() && $use_ssl == 2)
|
94 |
-
{
|
95 |
-
if($besecure)
|
96 |
-
{
|
97 |
-
?>
|
98 |
-
<script lang="JavaScript">
|
99 |
-
//needs to be secure
|
100 |
-
if (window.location.protocol != "https:")
|
101 |
-
window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);
|
102 |
-
</script>
|
103 |
-
<?php
|
104 |
-
}
|
105 |
-
else
|
106 |
-
{
|
107 |
-
?>
|
108 |
-
<script lang="JavaScript">
|
109 |
-
//should be over http
|
110 |
-
if (window.location.protocol != "http:")
|
111 |
-
window.location.href = "http:" + window.location.href.substring(window.location.protocol.length);
|
112 |
-
</script>
|
113 |
-
<?php
|
114 |
-
}
|
115 |
-
}
|
116 |
-
}
|
117 |
-
add_action('wp_print_scripts', 'pmpro_ssl_javascript_redirect');
|
118 |
-
|
119 |
-
//If the site URL starts with https:, then force SSL/besecure to true. (Added 1.5.2)
|
120 |
-
function pmpro_check_site_url_for_https($besecure)
|
121 |
-
{
|
122 |
-
global $wpdb, $pmpro_siteurl;
|
123 |
-
|
124 |
-
//need to get this from the database because we filter get_option
|
125 |
-
if(empty($pmpro_siteurl))
|
126 |
-
$pmpro_siteurl = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl' LIMIT 1");
|
127 |
-
|
128 |
-
//entire site is over https?
|
129 |
-
if(strpos($pmpro_siteurl, "https:") !== false)
|
130 |
-
$besecure = true;
|
131 |
-
|
132 |
-
return $besecure;
|
133 |
-
}
|
134 |
-
add_filter("pmpro_besecure", "pmpro_check_site_url_for_https");
|
135 |
-
|
136 |
-
//capturing case where a user links to https admin without admin over https
|
137 |
-
function pmpro_admin_https_handler()
|
138 |
-
{
|
139 |
-
if(!empty($_SERVER['HTTPS']))
|
140 |
-
{
|
141 |
-
if($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off" && $_SERVER['HTTPS'] != "false" && is_admin())
|
142 |
-
{
|
143 |
-
if(substr(get_option("siteurl"), 0, 5) == "http:" && !force_ssl_admin())
|
144 |
-
{
|
145 |
-
//need to redirect to non https
|
146 |
-
wp_redirect("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
|
147 |
-
exit;
|
148 |
-
}
|
149 |
-
}
|
150 |
-
}
|
151 |
-
}
|
152 |
-
add_action('init', 'pmpro_admin_https_handler');
|
153 |
-
|
154 |
-
/*
|
155 |
-
This code is for the "nuke" option to make URLs secure on secure pages.
|
156 |
-
*/
|
157 |
-
function pmpro_NuclearHTTPS()
|
158 |
-
{
|
159 |
-
//did they choose the option?
|
160 |
-
$nuking = pmpro_getOption("nuclear_HTTPS");
|
161 |
-
if(!empty($nuking))
|
162 |
-
{
|
163 |
-
ob_start("pmpro_replaceURLsInBuffer");
|
164 |
-
}
|
165 |
-
}
|
166 |
-
add_action("init", "pmpro_NuclearHTTPS");
|
167 |
-
|
168 |
-
function pmpro_replaceURLsInBuffer($buffer)
|
169 |
-
{
|
170 |
-
global $besecure;
|
171 |
-
|
172 |
-
//only swap URLs if this page is secure
|
173 |
-
if($besecure)
|
174 |
-
{
|
175 |
-
/*
|
176 |
-
okay swap out all links like these:
|
177 |
-
* http://domain.com
|
178 |
-
* http://anysubdomain.domain.com
|
179 |
-
* http://any.number.of.sub.domains.domain.com
|
180 |
-
*/
|
181 |
-
$buffer = preg_replace("/http\:\/\/([a-zA-Z0-9\.\-]*" . str_replace(".", "\.", PMPRO_DOMAIN) . ")/i", "https://$1", $buffer);
|
182 |
-
}
|
183 |
-
|
184 |
-
return $buffer;
|
185 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/init.php
DELETED
@@ -1,240 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Code that runs on the init, set_current_user, or wp hooks to setup PMPro
|
4 |
-
*/
|
5 |
-
//init code
|
6 |
-
function pmpro_init()
|
7 |
-
{
|
8 |
-
require_once(PMPRO_DIR . "/includes/countries.php");
|
9 |
-
require_once(PMPRO_DIR . "/includes/states.php");
|
10 |
-
require_once(PMPRO_DIR . "/includes/currencies.php");
|
11 |
-
|
12 |
-
wp_enqueue_script('ssmemberships_js', plugins_url('js/paid-memberships-pro.js',dirname(__FILE__) ), array('jquery'));
|
13 |
-
|
14 |
-
if(is_admin())
|
15 |
-
{
|
16 |
-
$admin_css_rtl = false;
|
17 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin.css")) {
|
18 |
-
$admin_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin.css";
|
19 |
-
if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
|
20 |
-
$admin_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
|
21 |
-
}
|
22 |
-
} elseif(file_exists(get_template_directory() . "/paid-memberships-pro/admin.css")) {
|
23 |
-
$admin_css = get_template_directory_uri() . "/paid-memberships-pro/admin.css";
|
24 |
-
if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
|
25 |
-
$admin_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
|
26 |
-
}
|
27 |
-
} else {
|
28 |
-
$admin_css = plugins_url('css/admin.css',dirname(__FILE__) );
|
29 |
-
if( is_rtl() ) {
|
30 |
-
$admin_css_rtl = plugins_url('css/admin-rtl.css',dirname(__FILE__) );
|
31 |
-
}
|
32 |
-
}
|
33 |
-
wp_enqueue_style('pmpro_admin', $admin_css, array(), PMPRO_VERSION, "screen");
|
34 |
-
if( $admin_css_rtl ) {
|
35 |
-
wp_enqueue_style('pmpro_admin_rtl', $admin_css_rtl, array(), PMPRO_VERSION, "screen");
|
36 |
-
}
|
37 |
-
}
|
38 |
-
else
|
39 |
-
{
|
40 |
-
$frontend_css_rtl = false;
|
41 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend.css")) {
|
42 |
-
$frontend_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend.css";
|
43 |
-
if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend-rtl.css") ) {
|
44 |
-
$frontend_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend-rtl.css";
|
45 |
-
}
|
46 |
-
} elseif(file_exists(get_template_directory() . "/paid-memberships-pro/frontend.css")) {
|
47 |
-
$frontend_css = get_template_directory_uri() . "/paid-memberships-pro/frontend.css";
|
48 |
-
if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/frontend-rtl.css") ) {
|
49 |
-
$frontend_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/frontend-rtl.css";
|
50 |
-
}
|
51 |
-
} else {
|
52 |
-
$frontend_css = plugins_url('css/frontend.css',dirname(__FILE__) );
|
53 |
-
if( is_rtl() ) {
|
54 |
-
$frontend_css_rtl = plugins_url('css/frontend-rtl.css',dirname(__FILE__) );
|
55 |
-
}
|
56 |
-
}
|
57 |
-
wp_enqueue_style('pmpro_frontend', $frontend_css, array(), PMPRO_VERSION, "screen");
|
58 |
-
if( $frontend_css_rtl ) {
|
59 |
-
wp_enqueue_style('pmpro_frontend_rtl', $frontend_css_rtl, array(), PMPRO_VERSION, "screen");
|
60 |
-
}
|
61 |
-
|
62 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/print.css"))
|
63 |
-
$print_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/print.css";
|
64 |
-
elseif(file_exists(get_template_directory() . "/paid-memberships-pro/print.css"))
|
65 |
-
$print_css = get_template_directory_uri() . "/paid-memberships-pro/print.css";
|
66 |
-
else
|
67 |
-
$print_css = plugins_url('css/print.css',dirname(__FILE__) );
|
68 |
-
wp_enqueue_style('pmpro_print', $print_css, array(), PMPRO_VERSION, "print");
|
69 |
-
}
|
70 |
-
|
71 |
-
global $pmpro_pages, $pmpro_ready, $pmpro_currency, $pmpro_currency_symbol;
|
72 |
-
$pmpro_pages = array();
|
73 |
-
$pmpro_pages["account"] = pmpro_getOption("account_page_id");
|
74 |
-
$pmpro_pages["billing"] = pmpro_getOption("billing_page_id");
|
75 |
-
$pmpro_pages["cancel"] = pmpro_getOption("cancel_page_id");
|
76 |
-
$pmpro_pages["checkout"] = pmpro_getOption("checkout_page_id");
|
77 |
-
$pmpro_pages["confirmation"] = pmpro_getOption("confirmation_page_id");
|
78 |
-
$pmpro_pages["invoice"] = pmpro_getOption("invoice_page_id");
|
79 |
-
$pmpro_pages["levels"] = pmpro_getOption("levels_page_id");
|
80 |
-
|
81 |
-
$pmpro_ready = pmpro_is_ready();
|
82 |
-
|
83 |
-
//set currency
|
84 |
-
$pmpro_currency = pmpro_getOption("currency");
|
85 |
-
if(!$pmpro_currency)
|
86 |
-
{
|
87 |
-
global $pmpro_default_currency;
|
88 |
-
$pmpro_currency = $pmpro_default_currency;
|
89 |
-
}
|
90 |
-
|
91 |
-
//figure out what symbol to show for currency
|
92 |
-
if(in_array($pmpro_currency, array("USD", "AUD", "BRL", "CAD", "HKD", "MXN", "NZD", "SGD")))
|
93 |
-
$pmpro_currency_symbol = "$";
|
94 |
-
elseif($pmpro_currency == "EUR")
|
95 |
-
$pmpro_currency_symbol = "€";
|
96 |
-
elseif($pmpro_currency == "GBP")
|
97 |
-
$pmpro_currency_symbol = "£";
|
98 |
-
elseif($pmpro_currency == "JPY")
|
99 |
-
$pmpro_currency_symbol = "¥";
|
100 |
-
else
|
101 |
-
$pmpro_currency_symbol = $pmpro_currency . " "; //just use the code
|
102 |
-
}
|
103 |
-
add_action("init", "pmpro_init");
|
104 |
-
|
105 |
-
//this code runs after $post is set, but before template output
|
106 |
-
function pmpro_wp()
|
107 |
-
{
|
108 |
-
if(!is_admin())
|
109 |
-
{
|
110 |
-
global $post, $pmpro_pages, $pmpro_page_name, $pmpro_page_id, $pmpro_body_classes;
|
111 |
-
|
112 |
-
//run the appropriate preheader function
|
113 |
-
foreach($pmpro_pages as $pmpro_page_name => $pmpro_page_id)
|
114 |
-
{
|
115 |
-
if(!empty($post->post_content) && strpos($post->post_content, "[pmpro_" . $pmpro_page_name . "]") !== false)
|
116 |
-
{
|
117 |
-
//preheader
|
118 |
-
require_once(PMPRO_DIR . "/preheaders/" . $pmpro_page_name . ".php");
|
119 |
-
|
120 |
-
//add class to body
|
121 |
-
$pmpro_body_classes[] = "pmpro-" . str_replace("_", "-", $pmpro_page_name);
|
122 |
-
|
123 |
-
//shortcode
|
124 |
-
function pmpro_pages_shortcode($atts, $content=null, $code="")
|
125 |
-
{
|
126 |
-
global $pmpro_page_name;
|
127 |
-
ob_start();
|
128 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/pages/" . $pmpro_page_name . ".php"))
|
129 |
-
include(get_stylesheet_directory() . "/paid-memberships-pro/pages/" . $pmpro_page_name . ".php");
|
130 |
-
else
|
131 |
-
include(PMPRO_DIR . "/pages/" . $pmpro_page_name . ".php");
|
132 |
-
|
133 |
-
$temp_content = ob_get_contents();
|
134 |
-
ob_end_clean();
|
135 |
-
return apply_filters("pmpro_pages_shortcode_" . $pmpro_page_name, $temp_content);
|
136 |
-
}
|
137 |
-
add_shortcode("pmpro_" . $pmpro_page_name, "pmpro_pages_shortcode");
|
138 |
-
break; //only the first page found gets a shortcode replacement
|
139 |
-
}
|
140 |
-
}
|
141 |
-
}
|
142 |
-
}
|
143 |
-
add_action("wp", "pmpro_wp", 1);
|
144 |
-
|
145 |
-
/*
|
146 |
-
Add PMPro page names to the BODY class.
|
147 |
-
*/
|
148 |
-
function pmpro_body_class($classes)
|
149 |
-
{
|
150 |
-
global $pmpro_body_classes;
|
151 |
-
|
152 |
-
if(is_array($pmpro_body_classes))
|
153 |
-
$classes = array_merge($pmpro_body_classes, $classes);
|
154 |
-
|
155 |
-
return $classes;
|
156 |
-
}
|
157 |
-
add_filter("body_class", "pmpro_body_class");
|
158 |
-
|
159 |
-
//add membership level to current user object
|
160 |
-
function pmpro_set_current_user()
|
161 |
-
{
|
162 |
-
//this code runs at the beginning of the plugin
|
163 |
-
global $current_user, $wpdb;
|
164 |
-
get_currentuserinfo();
|
165 |
-
$id = intval($current_user->ID);
|
166 |
-
if($id)
|
167 |
-
{
|
168 |
-
$current_user->membership_level = pmpro_getMembershipLevelForUser($current_user->ID);
|
169 |
-
if(!empty($current_user->membership_level))
|
170 |
-
{
|
171 |
-
$current_user->membership_level->categories = pmpro_getMembershipCategories($current_user->membership_level->ID);
|
172 |
-
}
|
173 |
-
$current_user->membership_levels = pmpro_getMembershipLevelsForUser($current_user->ID);
|
174 |
-
}
|
175 |
-
|
176 |
-
//hiding ads?
|
177 |
-
$hideads = pmpro_getOption("hideads");
|
178 |
-
$hideadslevels = pmpro_getOption("hideadslevels");
|
179 |
-
if(!is_array($hideadslevels))
|
180 |
-
$hideadslevels = explode(",", $hideadslevels);
|
181 |
-
if($hideads == 1 && pmpro_hasMembershipLevel() || $hideads == 2 && pmpro_hasMembershipLevel($hideadslevels))
|
182 |
-
{
|
183 |
-
//disable ads in ezAdsense
|
184 |
-
if(class_exists("ezAdSense"))
|
185 |
-
{
|
186 |
-
global $ezCount, $urCount;
|
187 |
-
$ezCount = 100;
|
188 |
-
$urCount = 100;
|
189 |
-
}
|
190 |
-
|
191 |
-
//disable ads in Easy Adsense (newer versions)
|
192 |
-
if(class_exists("EzAdSense"))
|
193 |
-
{
|
194 |
-
global $ezAdSense;
|
195 |
-
$ezAdSense->ezCount = 100;
|
196 |
-
$ezAdSense->urCount = 100;
|
197 |
-
}
|
198 |
-
|
199 |
-
//set a global variable to hide ads
|
200 |
-
global $pmpro_display_ads;
|
201 |
-
$pmpro_display_ads = false;
|
202 |
-
}
|
203 |
-
else
|
204 |
-
{
|
205 |
-
global $pmpro_display_ads;
|
206 |
-
$pmpro_display_ads = true;
|
207 |
-
}
|
208 |
-
|
209 |
-
do_action("pmpro_after_set_current_user");
|
210 |
-
}
|
211 |
-
add_action('set_current_user', 'pmpro_set_current_user');
|
212 |
-
add_action('init', 'pmpro_set_current_user');
|
213 |
-
|
214 |
-
/*
|
215 |
-
* Add Membership Level to Users page in WordPress dashboard.
|
216 |
-
*/
|
217 |
-
function pmpro_manage_users_columns($columns) {
|
218 |
-
$columns['pmpro_membership_level'] = __('Membership Level', 'pmpro');
|
219 |
-
return $columns;
|
220 |
-
}
|
221 |
-
|
222 |
-
function pmpro_manage_users_custom_column($column_data, $column_name, $user_id) {
|
223 |
-
|
224 |
-
if($column_name == 'pmpro_membership_level') {
|
225 |
-
$levels = pmpro_getMembershipLevelsForUser($user_id);
|
226 |
-
$level_names = array();
|
227 |
-
if(!empty($levels)) {
|
228 |
-
foreach($levels as $key => $level)
|
229 |
-
$level_names[] = $level->name;
|
230 |
-
$column_data = implode(',', $level_names);
|
231 |
-
}
|
232 |
-
else
|
233 |
-
$column_data = __('None', 'pmpro');
|
234 |
-
}
|
235 |
-
return $column_data;
|
236 |
-
}
|
237 |
-
|
238 |
-
add_filter('manage_users_columns', 'pmpro_manage_users_columns');
|
239 |
-
add_filter('manage_users_custom_column', 'pmpro_manage_users_custom_column', 10, 3);
|
240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/CyberSource/cyber_source_soap_client.php
DELETED
@@ -1,87 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* CyberSource version of SoapClient.
|
4 |
-
*
|
5 |
-
* An extension of PHP's own SoapClient library that includes the security
|
6 |
-
* header required by CyberSource. To enable SOAP support, PHP must be
|
7 |
-
* configured with --enable-soap.
|
8 |
-
*
|
9 |
-
* @author joe bartlett (xo@jdbartlett.com)
|
10 |
-
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
11 |
-
* @package CyberSource
|
12 |
-
* @subpackage CyberSource.libs
|
13 |
-
* @github https://github.com/jdbartlett/CyberSource/blob/master/libs/cyber_source_soap_client.php
|
14 |
-
*/
|
15 |
-
class CyberSourceSoapClient extends SoapClient {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Instance-specific array to contain CyberSource-specific configuration
|
19 |
-
* settings.
|
20 |
-
*
|
21 |
-
* @var array
|
22 |
-
* @access protected
|
23 |
-
*/
|
24 |
-
protected $_cyberSourceOptions = null;
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Constructor.
|
28 |
-
*
|
29 |
-
* The WSDL is generated by CyberSourceSource::_buildWsdl, in accordance with
|
30 |
-
* the DataSource settings.
|
31 |
-
*
|
32 |
-
* The CyberSource Options array should contain a 'merchantID' key and a
|
33 |
-
* 'transactionKey' key, with appropriate string values.
|
34 |
-
*
|
35 |
-
* The SOAP options array (the standard options array for PHP's SoapClient
|
36 |
-
* class) can be empty for CyberSource transactions.
|
37 |
-
*
|
38 |
-
* @param mixed $wsdl
|
39 |
-
* @param array $cyberSourceOptions
|
40 |
-
* @param array $soapOptions
|
41 |
-
* @access private
|
42 |
-
*/
|
43 |
-
public function __construct($wsdl, $cyberSourceOptions = null, $soapOptions = array()) {
|
44 |
-
parent::__construct($wsdl, $soapOptions);
|
45 |
-
|
46 |
-
$this->_cyberSourceOptions = array_merge(array(
|
47 |
-
'merchantID' => '',
|
48 |
-
'transactionKey' => '',
|
49 |
-
), is_array($cyberSourceOptions) ? $cyberSourceOptions : array());
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Transport layer for SOAP request.
|
54 |
-
*
|
55 |
-
* This is a straightforward wrapper for the standard SoapClient::__doRequest
|
56 |
-
* method; its parameters are identical.
|
57 |
-
*
|
58 |
-
* @param string $request
|
59 |
-
* @param string $location
|
60 |
-
* @param string $action
|
61 |
-
* @param string $version
|
62 |
-
* @param integer $one_way
|
63 |
-
* @return string XML SOAP response
|
64 |
-
* @access private
|
65 |
-
*/
|
66 |
-
public function __doRequest($request, $location, $action, $version, $one_way = 0) {
|
67 |
-
$soapHeader = sprintf("<SOAP-ENV:Header xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"><wsse:Security SOAP-ENV:mustUnderstand=\"1\"><wsse:UsernameToken><wsse:Username>%s</wsse:Username><wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">%s</wsse:Password></wsse:UsernameToken></wsse:Security></SOAP-ENV:Header>", $this->_cyberSourceOptions['merchantID'], $this->_cyberSourceOptions['transactionKey']);
|
68 |
-
|
69 |
-
$requestDOM = new DOMDocument('1.0');
|
70 |
-
$soapHeaderDOM = new DOMDocument('1.0');
|
71 |
-
|
72 |
-
try {
|
73 |
-
$requestDOM->loadXML($request);
|
74 |
-
$soapHeaderDOM->loadXML($soapHeader);
|
75 |
-
$node = $requestDOM->importNode($soapHeaderDOM->firstChild, true);
|
76 |
-
$requestDOM->firstChild->insertBefore(
|
77 |
-
$node, $requestDOM->firstChild->firstChild);
|
78 |
-
|
79 |
-
$request = $requestDOM->saveXML();
|
80 |
-
} catch (DOMException $e) {
|
81 |
-
trigger_error("CybserSource Error: Couldn't add token: " . $e->code, E_USER_WARNING);
|
82 |
-
}
|
83 |
-
|
84 |
-
return parent::__doRequest($request, $location, $action, $version);
|
85 |
-
}
|
86 |
-
|
87 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe.php
CHANGED
@@ -9,9 +9,6 @@ if (!function_exists('curl_init')) {
|
|
9 |
if (!function_exists('json_decode')) {
|
10 |
throw new Exception('Stripe needs the JSON PHP extension.');
|
11 |
}
|
12 |
-
if (!function_exists('mb_detect_encoding')) {
|
13 |
-
throw new Exception('Stripe needs the Multibyte String PHP extension.');
|
14 |
-
}
|
15 |
|
16 |
// Stripe singleton
|
17 |
require(dirname(__FILE__) . '/Stripe/Stripe.php');
|
@@ -33,23 +30,16 @@ require(dirname(__FILE__) . '/Stripe/Object.php');
|
|
33 |
require(dirname(__FILE__) . '/Stripe/ApiRequestor.php');
|
34 |
require(dirname(__FILE__) . '/Stripe/ApiResource.php');
|
35 |
require(dirname(__FILE__) . '/Stripe/SingletonApiResource.php');
|
36 |
-
require(dirname(__FILE__) . '/Stripe/AttachedObject.php');
|
37 |
require(dirname(__FILE__) . '/Stripe/List.php');
|
38 |
|
39 |
// Stripe API Resources
|
40 |
require(dirname(__FILE__) . '/Stripe/Account.php');
|
41 |
-
require(dirname(__FILE__) . '/Stripe/Card.php');
|
42 |
-
require(dirname(__FILE__) . '/Stripe/Balance.php');
|
43 |
-
require(dirname(__FILE__) . '/Stripe/BalanceTransaction.php');
|
44 |
require(dirname(__FILE__) . '/Stripe/Charge.php');
|
45 |
require(dirname(__FILE__) . '/Stripe/Customer.php');
|
46 |
require(dirname(__FILE__) . '/Stripe/Invoice.php');
|
47 |
require(dirname(__FILE__) . '/Stripe/InvoiceItem.php');
|
48 |
require(dirname(__FILE__) . '/Stripe/Plan.php');
|
49 |
-
require(dirname(__FILE__) . '/Stripe/Subscription.php');
|
50 |
require(dirname(__FILE__) . '/Stripe/Token.php');
|
51 |
require(dirname(__FILE__) . '/Stripe/Coupon.php');
|
52 |
require(dirname(__FILE__) . '/Stripe/Event.php');
|
53 |
require(dirname(__FILE__) . '/Stripe/Transfer.php');
|
54 |
-
require(dirname(__FILE__) . '/Stripe/Recipient.php');
|
55 |
-
require(dirname(__FILE__) . '/Stripe/ApplicationFee.php');
|
9 |
if (!function_exists('json_decode')) {
|
10 |
throw new Exception('Stripe needs the JSON PHP extension.');
|
11 |
}
|
|
|
|
|
|
|
12 |
|
13 |
// Stripe singleton
|
14 |
require(dirname(__FILE__) . '/Stripe/Stripe.php');
|
30 |
require(dirname(__FILE__) . '/Stripe/ApiRequestor.php');
|
31 |
require(dirname(__FILE__) . '/Stripe/ApiResource.php');
|
32 |
require(dirname(__FILE__) . '/Stripe/SingletonApiResource.php');
|
|
|
33 |
require(dirname(__FILE__) . '/Stripe/List.php');
|
34 |
|
35 |
// Stripe API Resources
|
36 |
require(dirname(__FILE__) . '/Stripe/Account.php');
|
|
|
|
|
|
|
37 |
require(dirname(__FILE__) . '/Stripe/Charge.php');
|
38 |
require(dirname(__FILE__) . '/Stripe/Customer.php');
|
39 |
require(dirname(__FILE__) . '/Stripe/Invoice.php');
|
40 |
require(dirname(__FILE__) . '/Stripe/InvoiceItem.php');
|
41 |
require(dirname(__FILE__) . '/Stripe/Plan.php');
|
|
|
42 |
require(dirname(__FILE__) . '/Stripe/Token.php');
|
43 |
require(dirname(__FILE__) . '/Stripe/Coupon.php');
|
44 |
require(dirname(__FILE__) . '/Stripe/Event.php');
|
45 |
require(dirname(__FILE__) . '/Stripe/Transfer.php');
|
|
|
|
includes/lib/Stripe/Stripe/Account.php
CHANGED
@@ -2,11 +2,12 @@
|
|
2 |
|
3 |
class Stripe_Account extends Stripe_SingletonApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
|
|
10 |
public static function retrieve($apiKey=null)
|
11 |
{
|
12 |
$class = get_class();
|
2 |
|
3 |
class Stripe_Account extends Stripe_SingletonApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
includes/lib/Stripe/Stripe/ApiRequestor.php
CHANGED
@@ -2,9 +2,6 @@
|
|
2 |
|
3 |
class Stripe_ApiRequestor
|
4 |
{
|
5 |
-
/**
|
6 |
-
* @var string $apiKey The API key that's to be used to make requests.
|
7 |
-
*/
|
8 |
public $apiKey;
|
9 |
|
10 |
public function __construct($apiKey=null)
|
@@ -12,37 +9,24 @@ class Stripe_ApiRequestor
|
|
12 |
$this->_apiKey = $apiKey;
|
13 |
}
|
14 |
|
15 |
-
/**
|
16 |
-
* @param string $url The path to the API endpoint.
|
17 |
-
*
|
18 |
-
* @returns string The full path.
|
19 |
-
*/
|
20 |
public static function apiUrl($url='')
|
21 |
{
|
22 |
$apiBase = Stripe::$apiBase;
|
23 |
return "$apiBase$url";
|
24 |
}
|
25 |
|
26 |
-
/**
|
27 |
-
* @param string|mixed $value A string to UTF8-encode.
|
28 |
-
*
|
29 |
-
* @returns string|mixed The UTF8-encoded string, or the object passed in if
|
30 |
-
* it wasn't a string.
|
31 |
-
*/
|
32 |
public static function utf8($value)
|
33 |
{
|
34 |
-
if (is_string($value)
|
35 |
-
&& mb_detect_encoding($value, "UTF-8", TRUE) != "UTF-8") {
|
36 |
return utf8_encode($value);
|
37 |
-
|
38 |
return $value;
|
39 |
-
}
|
40 |
}
|
41 |
|
42 |
private static function _encodeObjects($d)
|
43 |
{
|
44 |
if ($d instanceof Stripe_ApiResource) {
|
45 |
-
return
|
46 |
} else if ($d === true) {
|
47 |
return 'true';
|
48 |
} else if ($d === false) {
|
@@ -50,136 +34,71 @@ class Stripe_ApiRequestor
|
|
50 |
} else if (is_array($d)) {
|
51 |
$res = array();
|
52 |
foreach ($d as $k => $v)
|
53 |
-
|
54 |
return $res;
|
55 |
} else {
|
56 |
-
return
|
57 |
}
|
58 |
}
|
59 |
|
60 |
-
|
61 |
-
* @param array $arr An map of param keys to values.
|
62 |
-
* @param string|null $prefix (It doesn't look like we ever use $prefix...)
|
63 |
-
*
|
64 |
-
* @returns string A querystring, essentially.
|
65 |
-
*/
|
66 |
-
public static function encode($arr, $prefix=null)
|
67 |
{
|
68 |
-
|
69 |
-
return $arr;
|
70 |
-
|
71 |
-
$r = array();
|
72 |
-
foreach ($arr as $k => $v) {
|
73 |
-
if (is_null($v))
|
74 |
-
continue;
|
75 |
-
|
76 |
-
if ($prefix && $k && !is_int($k))
|
77 |
-
$k = $prefix."[".$k."]";
|
78 |
-
else if ($prefix)
|
79 |
-
$k = $prefix."[]";
|
80 |
-
|
81 |
-
if (is_array($v)) {
|
82 |
-
$r[] = self::encode($v, $k, true);
|
83 |
-
} else {
|
84 |
-
$r[] = urlencode($k)."=".urlencode($v);
|
85 |
-
}
|
86 |
-
}
|
87 |
-
|
88 |
-
return implode("&", $r);
|
89 |
}
|
90 |
|
91 |
-
|
92 |
-
* @param string $method
|
93 |
-
* @param string $url
|
94 |
-
* @param array|null $params
|
95 |
-
*
|
96 |
-
* @return array An array whose first element is the response and second
|
97 |
-
* element is the API key used to make the request.
|
98 |
-
*/
|
99 |
-
public function request($method, $url, $params=null)
|
100 |
{
|
101 |
if (!$params)
|
102 |
$params = array();
|
103 |
-
list($rbody, $rcode, $myApiKey) = $this->_requestRaw($
|
104 |
$resp = $this->_interpretResponse($rbody, $rcode);
|
105 |
return array($resp, $myApiKey);
|
106 |
}
|
107 |
|
108 |
-
|
109 |
-
/**
|
110 |
-
* @param string $rbody A JSON string.
|
111 |
-
* @param int $rcode
|
112 |
-
* @param array $resp
|
113 |
-
*
|
114 |
-
* @throws Stripe_InvalidRequestError if the error is caused by the user.
|
115 |
-
* @throws Stripe_AuthenticationError if the error is caused by a lack of
|
116 |
-
* permissions.
|
117 |
-
* @throws Stripe_CardError if the error is the error code is 402 (payment
|
118 |
-
* required)
|
119 |
-
* @throws Stripe_ApiError otherwise.
|
120 |
-
*/
|
121 |
public function handleApiError($rbody, $rcode, $resp)
|
122 |
{
|
123 |
-
if (!is_array($resp) || !isset($resp['error']))
|
124 |
-
|
125 |
-
."(HTTP response code was $rcode)";
|
126 |
-
throw new Stripe_ApiError($msg, $rcode, $rbody, $resp);
|
127 |
-
}
|
128 |
-
|
129 |
$error = $resp['error'];
|
130 |
-
$msg = isset($error['message']) ? $error['message'] : null;
|
131 |
-
$param = isset($error['param']) ? $error['param'] : null;
|
132 |
-
$code = isset($error['code']) ? $error['code'] : null;
|
133 |
-
|
134 |
switch ($rcode) {
|
135 |
case 400:
|
136 |
case 404:
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
case 401:
|
141 |
-
|
142 |
case 402:
|
143 |
-
|
|
|
|
|
|
|
144 |
default:
|
145 |
-
|
146 |
}
|
147 |
}
|
148 |
|
149 |
-
private function _requestRaw($
|
150 |
{
|
151 |
$myApiKey = $this->_apiKey;
|
152 |
if (!$myApiKey)
|
153 |
$myApiKey = Stripe::$apiKey;
|
154 |
-
|
155 |
-
|
156 |
-
$msg = 'No API key provided. (HINT: set your API key using '
|
157 |
-
. '"Stripe::setApiKey(<API-KEY>)". You can generate API keys from '
|
158 |
-
. 'the Stripe web interface. See https://stripe.com/api for '
|
159 |
-
. 'details, or email support@stripe.com if you have any questions.';
|
160 |
-
throw new Stripe_AuthenticationError($msg);
|
161 |
-
}
|
162 |
|
163 |
$absUrl = $this->apiUrl($url);
|
164 |
$params = self::_encodeObjects($params);
|
165 |
$langVersion = phpversion();
|
166 |
$uname = php_uname();
|
167 |
$ua = array('bindings_version' => Stripe::VERSION,
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
$headers = array('X-Stripe-Client-User-Agent: ' . json_encode($ua),
|
173 |
-
|
174 |
'Authorization: Bearer ' . $myApiKey);
|
175 |
-
|
176 |
-
$headers[] = 'Stripe-Version: ' . Stripe::$apiVersion;
|
177 |
-
list($rbody, $rcode) = $this->_curlRequest(
|
178 |
-
$method,
|
179 |
-
$absUrl,
|
180 |
-
$headers,
|
181 |
-
$params
|
182 |
-
);
|
183 |
return array($rbody, $rcode, $myApiKey);
|
184 |
}
|
185 |
|
@@ -188,9 +107,7 @@ class Stripe_ApiRequestor
|
|
188 |
try {
|
189 |
$resp = json_decode($rbody, true);
|
190 |
} catch (Exception $e) {
|
191 |
-
|
192 |
-
. "(HTTP response code was $rcode)";
|
193 |
-
throw new Stripe_ApiError($msg, $rcode, $rbody);
|
194 |
}
|
195 |
|
196 |
if ($rcode < 200 || $rcode >= 300) {
|
@@ -199,28 +116,28 @@ class Stripe_ApiRequestor
|
|
199 |
return $resp;
|
200 |
}
|
201 |
|
202 |
-
private function _curlRequest($
|
203 |
{
|
204 |
$curl = curl_init();
|
205 |
-
$
|
206 |
$opts = array();
|
207 |
-
if ($
|
208 |
$opts[CURLOPT_HTTPGET] = 1;
|
209 |
if (count($params) > 0) {
|
210 |
-
|
211 |
-
|
212 |
}
|
213 |
-
} else if ($
|
214 |
$opts[CURLOPT_POST] = 1;
|
215 |
$opts[CURLOPT_POSTFIELDS] = self::encode($params);
|
216 |
-
} else if ($
|
217 |
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
|
218 |
if (count($params) > 0) {
|
219 |
-
|
220 |
-
|
221 |
}
|
222 |
} else {
|
223 |
-
throw new Stripe_ApiError("Unrecognized method $
|
224 |
}
|
225 |
|
226 |
$absUrl = self::utf8($absUrl);
|
@@ -236,21 +153,15 @@ class Stripe_ApiRequestor
|
|
236 |
curl_setopt_array($curl, $opts);
|
237 |
$rbody = curl_exec($curl);
|
238 |
|
239 |
-
if (!defined('CURLE_SSL_CACERT_BADFILE')) {
|
240 |
-
define('CURLE_SSL_CACERT_BADFILE', 77); // constant not defined in PHP
|
241 |
-
}
|
242 |
-
|
243 |
$errno = curl_errno($curl);
|
244 |
if ($errno == CURLE_SSL_CACERT ||
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
'X-Stripe-Client-Info: {"ca":"using Stripe-supplied CA bundle"}'
|
250 |
-
);
|
251 |
-
$cert = dirname(__FILE__) . '/../data/ca-certificates.crt';
|
252 |
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
253 |
-
curl_setopt($curl, CURLOPT_CAINFO,
|
|
|
254 |
$rbody = curl_exec($curl);
|
255 |
}
|
256 |
|
@@ -266,11 +177,6 @@ class Stripe_ApiRequestor
|
|
266 |
return array($rbody, $rcode);
|
267 |
}
|
268 |
|
269 |
-
/**
|
270 |
-
* @param number $errno
|
271 |
-
* @param string $message
|
272 |
-
* @throws Stripe_ApiConnectionError
|
273 |
-
*/
|
274 |
public function handleCurlError($errno, $message)
|
275 |
{
|
276 |
$apiBase = Stripe::$apiBase;
|
@@ -278,23 +184,15 @@ class Stripe_ApiRequestor
|
|
278 |
case CURLE_COULDNT_CONNECT:
|
279 |
case CURLE_COULDNT_RESOLVE_HOST:
|
280 |
case CURLE_OPERATION_TIMEOUTED:
|
281 |
-
$msg = "Could not connect to Stripe ($apiBase). Please check your "
|
282 |
-
|
283 |
-
. "you should check Stripe's service status at "
|
284 |
-
. "https://twitter.com/stripestatus, or";
|
285 |
-
break;
|
286 |
case CURLE_SSL_CACERT:
|
287 |
case CURLE_SSL_PEER_CERTIFICATE:
|
288 |
-
$msg = "Could not verify Stripe's SSL certificate. Please make sure "
|
289 |
-
|
290 |
-
. "(Try going to $apiBase in your browser.) "
|
291 |
-
. "If this problem persists,";
|
292 |
-
break;
|
293 |
default:
|
294 |
-
$msg = "Unexpected error communicating with Stripe. "
|
295 |
-
. "If this problem persists,";
|
296 |
}
|
297 |
-
$msg .= " let us know at support@stripe.com.";
|
298 |
|
299 |
$msg .= "\n\n(Network error [errno $errno]: $message)";
|
300 |
throw new Stripe_ApiConnectionError($msg);
|
2 |
|
3 |
class Stripe_ApiRequestor
|
4 |
{
|
|
|
|
|
|
|
5 |
public $apiKey;
|
6 |
|
7 |
public function __construct($apiKey=null)
|
9 |
$this->_apiKey = $apiKey;
|
10 |
}
|
11 |
|
|
|
|
|
|
|
|
|
|
|
12 |
public static function apiUrl($url='')
|
13 |
{
|
14 |
$apiBase = Stripe::$apiBase;
|
15 |
return "$apiBase$url";
|
16 |
}
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
public static function utf8($value)
|
19 |
{
|
20 |
+
if (is_string($value))
|
|
|
21 |
return utf8_encode($value);
|
22 |
+
else
|
23 |
return $value;
|
|
|
24 |
}
|
25 |
|
26 |
private static function _encodeObjects($d)
|
27 |
{
|
28 |
if ($d instanceof Stripe_ApiResource) {
|
29 |
+
return $d->id;
|
30 |
} else if ($d === true) {
|
31 |
return 'true';
|
32 |
} else if ($d === false) {
|
34 |
} else if (is_array($d)) {
|
35 |
$res = array();
|
36 |
foreach ($d as $k => $v)
|
37 |
+
$res[$k] = self::_encodeObjects($v);
|
38 |
return $res;
|
39 |
} else {
|
40 |
+
return $d;
|
41 |
}
|
42 |
}
|
43 |
|
44 |
+
public static function encode($d)
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
{
|
46 |
+
return http_build_query($d, null, '&');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
}
|
48 |
|
49 |
+
public function request($meth, $url, $params=null)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
{
|
51 |
if (!$params)
|
52 |
$params = array();
|
53 |
+
list($rbody, $rcode, $myApiKey) = $this->_requestRaw($meth, $url, $params);
|
54 |
$resp = $this->_interpretResponse($rbody, $rcode);
|
55 |
return array($resp, $myApiKey);
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
public function handleApiError($rbody, $rcode, $resp)
|
59 |
{
|
60 |
+
if (!is_array($resp) || !isset($resp['error']))
|
61 |
+
throw new Stripe_ApiError("Invalid response object from API: $rbody (HTTP response code was $rcode)", $rcode, $rbody, $resp);
|
|
|
|
|
|
|
|
|
62 |
$error = $resp['error'];
|
|
|
|
|
|
|
|
|
63 |
switch ($rcode) {
|
64 |
case 400:
|
65 |
case 404:
|
66 |
+
throw new Stripe_InvalidRequestError(isset($error['message']) ? $error['message'] : null,
|
67 |
+
isset($error['param']) ? $error['param'] : null,
|
68 |
+
$rcode, $rbody, $resp);
|
69 |
case 401:
|
70 |
+
throw new Stripe_AuthenticationError(isset($error['message']) ? $error['message'] : null, $rcode, $rbody, $resp);
|
71 |
case 402:
|
72 |
+
throw new Stripe_CardError(isset($error['message']) ? $error['message'] : null,
|
73 |
+
isset($error['param']) ? $error['param'] : null,
|
74 |
+
isset($error['code']) ? $error['code'] : null,
|
75 |
+
$rcode, $rbody, $resp);
|
76 |
default:
|
77 |
+
throw new Stripe_ApiError(isset($error['message']) ? $error['message'] : null, $rcode, $rbody, $resp);
|
78 |
}
|
79 |
}
|
80 |
|
81 |
+
private function _requestRaw($meth, $url, $params)
|
82 |
{
|
83 |
$myApiKey = $this->_apiKey;
|
84 |
if (!$myApiKey)
|
85 |
$myApiKey = Stripe::$apiKey;
|
86 |
+
if (!$myApiKey)
|
87 |
+
throw new Stripe_AuthenticationError('No API key provided. (HINT: set your API key using "Stripe::setApiKey(<API-KEY>)". You can generate API keys from the Stripe web interface. See https://stripe.com/api for details, or email support@stripe.com if you have any questions.');
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
$absUrl = $this->apiUrl($url);
|
90 |
$params = self::_encodeObjects($params);
|
91 |
$langVersion = phpversion();
|
92 |
$uname = php_uname();
|
93 |
$ua = array('bindings_version' => Stripe::VERSION,
|
94 |
+
'lang' => 'php',
|
95 |
+
'lang_version' => $langVersion,
|
96 |
+
'publisher' => 'stripe',
|
97 |
+
'uname' => $uname);
|
98 |
$headers = array('X-Stripe-Client-User-Agent: ' . json_encode($ua),
|
99 |
+
'User-Agent: Stripe/v1 PhpBindings/' . Stripe::VERSION,
|
100 |
'Authorization: Bearer ' . $myApiKey);
|
101 |
+
list($rbody, $rcode) = $this->_curlRequest($meth, $absUrl, $headers, $params);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
return array($rbody, $rcode, $myApiKey);
|
103 |
}
|
104 |
|
107 |
try {
|
108 |
$resp = json_decode($rbody, true);
|
109 |
} catch (Exception $e) {
|
110 |
+
throw new Stripe_ApiError("Invalid response body from API: $rbody (HTTP response code was $rcode)", $rcode, $rbody);
|
|
|
|
|
111 |
}
|
112 |
|
113 |
if ($rcode < 200 || $rcode >= 300) {
|
116 |
return $resp;
|
117 |
}
|
118 |
|
119 |
+
private function _curlRequest($meth, $absUrl, $headers, $params)
|
120 |
{
|
121 |
$curl = curl_init();
|
122 |
+
$meth = strtolower($meth);
|
123 |
$opts = array();
|
124 |
+
if ($meth == 'get') {
|
125 |
$opts[CURLOPT_HTTPGET] = 1;
|
126 |
if (count($params) > 0) {
|
127 |
+
$encoded = self::encode($params);
|
128 |
+
$absUrl = "$absUrl?$encoded";
|
129 |
}
|
130 |
+
} else if ($meth == 'post') {
|
131 |
$opts[CURLOPT_POST] = 1;
|
132 |
$opts[CURLOPT_POSTFIELDS] = self::encode($params);
|
133 |
+
} else if ($meth == 'delete') {
|
134 |
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
|
135 |
if (count($params) > 0) {
|
136 |
+
$encoded = self::encode($params);
|
137 |
+
$absUrl = "$absUrl?$encoded";
|
138 |
}
|
139 |
} else {
|
140 |
+
throw new Stripe_ApiError("Unrecognized method $meth");
|
141 |
}
|
142 |
|
143 |
$absUrl = self::utf8($absUrl);
|
153 |
curl_setopt_array($curl, $opts);
|
154 |
$rbody = curl_exec($curl);
|
155 |
|
|
|
|
|
|
|
|
|
156 |
$errno = curl_errno($curl);
|
157 |
if ($errno == CURLE_SSL_CACERT ||
|
158 |
+
$errno == CURLE_SSL_PEER_CERTIFICATE ||
|
159 |
+
$errno == 77 // CURLE_SSL_CACERT_BADFILE (constant not defined in PHP though)
|
160 |
+
) {
|
161 |
+
array_push($headers, 'X-Stripe-Client-Info: {"ca":"using Stripe-supplied CA bundle"}');
|
|
|
|
|
|
|
162 |
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
163 |
+
curl_setopt($curl, CURLOPT_CAINFO,
|
164 |
+
dirname(__FILE__) . '/../data/ca-certificates.crt');
|
165 |
$rbody = curl_exec($curl);
|
166 |
}
|
167 |
|
177 |
return array($rbody, $rcode);
|
178 |
}
|
179 |
|
|
|
|
|
|
|
|
|
|
|
180 |
public function handleCurlError($errno, $message)
|
181 |
{
|
182 |
$apiBase = Stripe::$apiBase;
|
184 |
case CURLE_COULDNT_CONNECT:
|
185 |
case CURLE_COULDNT_RESOLVE_HOST:
|
186 |
case CURLE_OPERATION_TIMEOUTED:
|
187 |
+
$msg = "Could not connect to Stripe ($apiBase). Please check your internet connection and try again. If this problem persists, you should check Stripe's service status at https://twitter.com/stripestatus, or let us know at support@stripe.com.";
|
188 |
+
break;
|
|
|
|
|
|
|
189 |
case CURLE_SSL_CACERT:
|
190 |
case CURLE_SSL_PEER_CERTIFICATE:
|
191 |
+
$msg = "Could not verify Stripe's SSL certificate. Please make sure that your network is not intercepting certificates. (Try going to $apiBase in your browser.) If this problem persists, let us know at support@stripe.com.";
|
192 |
+
break;
|
|
|
|
|
|
|
193 |
default:
|
194 |
+
$msg = "Unexpected error communicating with Stripe. If this problem persists, let us know at support@stripe.com.";
|
|
|
195 |
}
|
|
|
196 |
|
197 |
$msg .= "\n\n(Network error [errno $errno]: $message)";
|
198 |
throw new Stripe_ApiConnectionError($msg);
|
includes/lib/Stripe/Stripe/ApiResource.php
CHANGED
@@ -9,29 +9,16 @@ abstract class Stripe_ApiResource extends Stripe_Object
|
|
9 |
return $instance;
|
10 |
}
|
11 |
|
12 |
-
/**
|
13 |
-
* @returns Stripe_ApiResource The refreshed resource.
|
14 |
-
*/
|
15 |
public function refresh()
|
16 |
{
|
17 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
18 |
$url = $this->instanceUrl();
|
19 |
|
20 |
-
list($response, $apiKey) = $requestor->request(
|
21 |
-
'get',
|
22 |
-
$url,
|
23 |
-
$this->_retrieveOptions
|
24 |
-
);
|
25 |
$this->refreshFrom($response, $apiKey);
|
26 |
return $this;
|
27 |
-
|
28 |
|
29 |
-
/**
|
30 |
-
* @param string $class
|
31 |
-
*
|
32 |
-
* @returns string The name of the class, with namespacing and underscores
|
33 |
-
* stripped.
|
34 |
-
*/
|
35 |
public static function className($class)
|
36 |
{
|
37 |
// Useful for namespaces: Foo\Stripe_Charge
|
@@ -45,60 +32,38 @@ abstract class Stripe_ApiResource extends Stripe_Object
|
|
45 |
return $name;
|
46 |
}
|
47 |
|
48 |
-
/**
|
49 |
-
* @param string $class
|
50 |
-
*
|
51 |
-
* @returns string The endpoint URL for the given class.
|
52 |
-
*/
|
53 |
public static function classUrl($class)
|
54 |
{
|
55 |
-
$base = self::
|
56 |
return "/v1/${base}s";
|
57 |
}
|
58 |
|
59 |
-
/**
|
60 |
-
* @returns string The full API URL for this API resource.
|
61 |
-
*/
|
62 |
public function instanceUrl()
|
63 |
{
|
64 |
$id = $this['id'];
|
65 |
$class = get_class($this);
|
66 |
if (!$id) {
|
67 |
-
|
68 |
-
. "$class instance has invalid ID: $id";
|
69 |
-
throw new Stripe_InvalidRequestError($message, null);
|
70 |
}
|
71 |
$id = Stripe_ApiRequestor::utf8($id);
|
72 |
-
$base =
|
73 |
$extn = urlencode($id);
|
74 |
return "$base/$extn";
|
75 |
}
|
76 |
|
77 |
private static function _validateCall($method, $params=null, $apiKey=null)
|
78 |
{
|
79 |
-
if ($params && !is_array($params))
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
. "'currency' => 'usd', 'card' => array('number' => "
|
84 |
-
. "4242424242424242, 'exp_month' => 5, 'exp_year' => 2015)))\")";
|
85 |
-
throw new Stripe_Error($message);
|
86 |
-
}
|
87 |
-
|
88 |
-
if ($apiKey && !is_string($apiKey)) {
|
89 |
-
$message = 'The second argument to Stripe API method calls is an '
|
90 |
-
. 'optional per-request apiKey, which must be a string. '
|
91 |
-
. '(HINT: you can set a global apiKey by '
|
92 |
-
. '"Stripe::setApiKey(<apiKey>)")';
|
93 |
-
throw new Stripe_Error($message);
|
94 |
-
}
|
95 |
}
|
96 |
|
97 |
protected static function _scopedAll($class, $params=null, $apiKey=null)
|
98 |
{
|
99 |
self::_validateCall('all', $params, $apiKey);
|
100 |
$requestor = new Stripe_ApiRequestor($apiKey);
|
101 |
-
$url = self::
|
102 |
list($response, $apiKey) = $requestor->request('get', $url, $params);
|
103 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
104 |
}
|
@@ -107,18 +72,19 @@ abstract class Stripe_ApiResource extends Stripe_Object
|
|
107 |
{
|
108 |
self::_validateCall('create', $params, $apiKey);
|
109 |
$requestor = new Stripe_ApiRequestor($apiKey);
|
110 |
-
$url = self::
|
111 |
list($response, $apiKey) = $requestor->request('post', $url, $params);
|
112 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
113 |
}
|
114 |
|
115 |
-
protected function _scopedSave($class
|
116 |
{
|
117 |
self::_validateCall('save');
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
|
|
122 |
$url = $this->instanceUrl();
|
123 |
list($response, $apiKey) = $requestor->request('post', $url, $params);
|
124 |
$this->refreshFrom($response, $apiKey);
|
9 |
return $instance;
|
10 |
}
|
11 |
|
|
|
|
|
|
|
12 |
public function refresh()
|
13 |
{
|
14 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
15 |
$url = $this->instanceUrl();
|
16 |
|
17 |
+
list($response, $apiKey) = $requestor->request('get', $url);
|
|
|
|
|
|
|
|
|
18 |
$this->refreshFrom($response, $apiKey);
|
19 |
return $this;
|
20 |
+
}
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
public static function className($class)
|
23 |
{
|
24 |
// Useful for namespaces: Foo\Stripe_Charge
|
32 |
return $name;
|
33 |
}
|
34 |
|
|
|
|
|
|
|
|
|
|
|
35 |
public static function classUrl($class)
|
36 |
{
|
37 |
+
$base = self::className($class);
|
38 |
return "/v1/${base}s";
|
39 |
}
|
40 |
|
|
|
|
|
|
|
41 |
public function instanceUrl()
|
42 |
{
|
43 |
$id = $this['id'];
|
44 |
$class = get_class($this);
|
45 |
if (!$id) {
|
46 |
+
throw new Stripe_InvalidRequestError("Could not determine which URL to request: $class instance has invalid ID: $id", null);
|
|
|
|
|
47 |
}
|
48 |
$id = Stripe_ApiRequestor::utf8($id);
|
49 |
+
$base = self::classUrl($class);
|
50 |
$extn = urlencode($id);
|
51 |
return "$base/$extn";
|
52 |
}
|
53 |
|
54 |
private static function _validateCall($method, $params=null, $apiKey=null)
|
55 |
{
|
56 |
+
if ($params && !is_array($params))
|
57 |
+
throw new Stripe_Error("You must pass an array as the first argument to Stripe API method calls. (HINT: an example call to create a charge would be: \"StripeCharge::create(array('amount' => 100, 'currency' => 'usd', 'card' => array('number' => 4242424242424242, 'exp_month' => 5, 'exp_year' => 2015)))\")");
|
58 |
+
if ($apiKey && !is_string($apiKey))
|
59 |
+
throw new Stripe_Error('The second argument to Stripe API method calls is an optional per-request apiKey, which must be a string. (HINT: you can set a global apiKey by "Stripe::setApiKey(<apiKey>)")');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
|
62 |
protected static function _scopedAll($class, $params=null, $apiKey=null)
|
63 |
{
|
64 |
self::_validateCall('all', $params, $apiKey);
|
65 |
$requestor = new Stripe_ApiRequestor($apiKey);
|
66 |
+
$url = self::classUrl($class);
|
67 |
list($response, $apiKey) = $requestor->request('get', $url, $params);
|
68 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
69 |
}
|
72 |
{
|
73 |
self::_validateCall('create', $params, $apiKey);
|
74 |
$requestor = new Stripe_ApiRequestor($apiKey);
|
75 |
+
$url = self::classUrl($class);
|
76 |
list($response, $apiKey) = $requestor->request('post', $url, $params);
|
77 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
78 |
}
|
79 |
|
80 |
+
protected function _scopedSave($class)
|
81 |
{
|
82 |
self::_validateCall('save');
|
83 |
+
if ($this->_unsavedValues) {
|
84 |
+
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
85 |
+
$params = array();
|
86 |
+
foreach ($this->_unsavedValues->toArray() as $k)
|
87 |
+
$params[$k] = $this->$k;
|
88 |
$url = $this->instanceUrl();
|
89 |
list($response, $apiKey) = $requestor->request('post', $url, $params);
|
90 |
$this->refreshFrom($response, $apiKey);
|
includes/lib/Stripe/Stripe/ApplicationFee.php
DELETED
@@ -1,53 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Stripe_ApplicationFee extends Stripe_ApiResource
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* This is a special case because the application fee endpoint has an
|
7 |
-
* underscore in it. The parent `className` function strips underscores.
|
8 |
-
*
|
9 |
-
* @return string The name of the class.
|
10 |
-
*/
|
11 |
-
public static function className($class)
|
12 |
-
{
|
13 |
-
return 'application_fee';
|
14 |
-
}
|
15 |
-
|
16 |
-
/**
|
17 |
-
* @param string $id The ID of the application fee to retrieve.
|
18 |
-
* @param string|null $apiKey
|
19 |
-
*
|
20 |
-
* @return Stripe_ApplicationFee
|
21 |
-
*/
|
22 |
-
public static function retrieve($id, $apiKey=null)
|
23 |
-
{
|
24 |
-
$class = get_class();
|
25 |
-
return self::_scopedRetrieve($class, $id, $apiKey);
|
26 |
-
}
|
27 |
-
|
28 |
-
/**
|
29 |
-
* @param string|null $params
|
30 |
-
* @param string|null $apiKey
|
31 |
-
*
|
32 |
-
* @return array An array of application fees.
|
33 |
-
*/
|
34 |
-
public static function all($params=null, $apiKey=null)
|
35 |
-
{
|
36 |
-
$class = get_class();
|
37 |
-
return self::_scopedAll($class, $params, $apiKey);
|
38 |
-
}
|
39 |
-
|
40 |
-
/**
|
41 |
-
* @param string|null $params
|
42 |
-
*
|
43 |
-
* @return Stripe_ApplicationFee The refunded application fee.
|
44 |
-
*/
|
45 |
-
public function refund($params=null)
|
46 |
-
{
|
47 |
-
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
48 |
-
$url = $this->instanceUrl() . '/refund';
|
49 |
-
list($response, $apiKey) = $requestor->request('post', $url, $params);
|
50 |
-
$this->refreshFrom($response, $apiKey);
|
51 |
-
return $this;
|
52 |
-
}
|
53 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/AttachedObject.php
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// e.g. metadata on Stripe objects.
|
4 |
-
class Stripe_AttachedObject extends Stripe_Object
|
5 |
-
{
|
6 |
-
/**
|
7 |
-
* Updates this object.
|
8 |
-
*
|
9 |
-
* @param array $properties A mapping of properties to update on this object.
|
10 |
-
*/
|
11 |
-
public function replaceWith($properties)
|
12 |
-
{
|
13 |
-
$removed = array_diff(array_keys($this->_values), array_keys($properties));
|
14 |
-
// Don't unset, but rather set to null so we send up '' for deletion.
|
15 |
-
foreach ($removed as $k) {
|
16 |
-
$this->$k = null;
|
17 |
-
}
|
18 |
-
|
19 |
-
foreach ($properties as $k => $v) {
|
20 |
-
$this->$k = $v;
|
21 |
-
}
|
22 |
-
}
|
23 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/Balance.php
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Stripe_Balance extends Stripe_SingletonApiResource
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* @param string|null $apiKey
|
7 |
-
*
|
8 |
-
* @return Stripe_Balance
|
9 |
-
*/
|
10 |
-
public static function retrieve($apiKey=null)
|
11 |
-
{
|
12 |
-
$class = get_class();
|
13 |
-
return self::_scopedSingletonRetrieve($class, $apiKey);
|
14 |
-
}
|
15 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/BalanceTransaction.php
DELETED
@@ -1,39 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Stripe_BalanceTransaction extends Stripe_ApiResource
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* @param string $class Ignored.
|
7 |
-
*
|
8 |
-
* @return string The class URL for this resource. It needs to be special
|
9 |
-
* cased because it doesn't fit into the standard resource pattern.
|
10 |
-
*/
|
11 |
-
public static function classUrl($class)
|
12 |
-
{
|
13 |
-
return "/v1/balance/history";
|
14 |
-
}
|
15 |
-
|
16 |
-
/**
|
17 |
-
* @param string $id The ID of the balance transaction to retrieve.
|
18 |
-
* @param string|null $apiKey
|
19 |
-
*
|
20 |
-
* @return Stripe_BalanceTransaction
|
21 |
-
*/
|
22 |
-
public static function retrieve($id, $apiKey=null)
|
23 |
-
{
|
24 |
-
$class = get_class();
|
25 |
-
return self::_scopedRetrieve($class, $id, $apiKey);
|
26 |
-
}
|
27 |
-
|
28 |
-
/**
|
29 |
-
* @param array|null $params
|
30 |
-
* @param string|null $apiKey
|
31 |
-
*
|
32 |
-
* @return array An array of Stripe_BalanceTransactions.
|
33 |
-
*/
|
34 |
-
public static function all($params=null, $apiKey=null)
|
35 |
-
{
|
36 |
-
$class = get_class();
|
37 |
-
return self::_scopedAll($class, $params, $apiKey);
|
38 |
-
}
|
39 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/Card.php
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Stripe_Card extends Stripe_ApiResource
|
4 |
-
{
|
5 |
-
public static function constructFrom($values, $apiKey=null)
|
6 |
-
{
|
7 |
-
$class = get_class();
|
8 |
-
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
-
}
|
10 |
-
|
11 |
-
/**
|
12 |
-
* @return string The instance URL for this resource. It needs to be special
|
13 |
-
* cased because it doesn't fit into the standard resource pattern.
|
14 |
-
*/
|
15 |
-
public function instanceUrl()
|
16 |
-
{
|
17 |
-
$id = $this['id'];
|
18 |
-
$customer = $this['customer'];
|
19 |
-
$class = get_class($this);
|
20 |
-
if (!$id) {
|
21 |
-
$msg = "Could not determine which URL to request: $class instance "
|
22 |
-
. "has invalid ID: $id";
|
23 |
-
throw new Stripe_InvalidRequestError($msg, null);
|
24 |
-
}
|
25 |
-
$id = Stripe_ApiRequestor::utf8($id);
|
26 |
-
$customer = Stripe_ApiRequestor::utf8($customer);
|
27 |
-
|
28 |
-
$base = self::classUrl('Stripe_Customer');
|
29 |
-
$customerExtn = urlencode($customer);
|
30 |
-
$extn = urlencode($id);
|
31 |
-
return "$base/$customerExtn/cards/$extn";
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* @param array|null $params
|
36 |
-
*
|
37 |
-
* @return Stripe_Card The deleted card.
|
38 |
-
*/
|
39 |
-
public function delete($params=null)
|
40 |
-
{
|
41 |
-
$class = get_class();
|
42 |
-
return self::_scopedDelete($class, $params);
|
43 |
-
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* @return Stripe_Card The saved card.
|
47 |
-
*/
|
48 |
-
public function save()
|
49 |
-
{
|
50 |
-
$class = get_class();
|
51 |
-
return self::_scopedSave($class);
|
52 |
-
}
|
53 |
-
}
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/CardError.php
CHANGED
@@ -2,11 +2,9 @@
|
|
2 |
|
3 |
class Stripe_CardError extends Stripe_Error
|
4 |
{
|
5 |
-
public function __construct($message, $param, $code, $
|
6 |
-
$httpBody, $jsonBody
|
7 |
-
)
|
8 |
{
|
9 |
-
parent::__construct($message, $
|
10 |
$this->param = $param;
|
11 |
$this->code = $code;
|
12 |
}
|
2 |
|
3 |
class Stripe_CardError extends Stripe_Error
|
4 |
{
|
5 |
+
public function __construct($message, $param, $code, $http_status=null, $http_body=null, $json_body=null)
|
|
|
|
|
6 |
{
|
7 |
+
parent::__construct($message, $http_status, $http_body, $json_body);
|
8 |
$this->param = $param;
|
9 |
$this->code = $code;
|
10 |
}
|
includes/lib/Stripe/Stripe/Charge.php
CHANGED
@@ -2,56 +2,30 @@
|
|
2 |
|
3 |
class Stripe_Charge extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return array An array of Stripe_Charges.
|
22 |
-
*/
|
23 |
public static function all($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedAll($class, $params, $apiKey);
|
27 |
}
|
28 |
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @param string|null $apiKey
|
32 |
-
*
|
33 |
-
* @return Stripe_Charge The created charge.
|
34 |
-
*/
|
35 |
public static function create($params=null, $apiKey=null)
|
36 |
{
|
37 |
$class = get_class();
|
38 |
return self::_scopedCreate($class, $params, $apiKey);
|
39 |
}
|
40 |
|
41 |
-
/**
|
42 |
-
* @return Stripe_Charge The saved charge.
|
43 |
-
*/
|
44 |
-
public function save()
|
45 |
-
{
|
46 |
-
$class = get_class();
|
47 |
-
return self::_scopedSave($class);
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* @param array|null $params
|
52 |
-
*
|
53 |
-
* @return Stripe_Charge The refunded charge.
|
54 |
-
*/
|
55 |
public function refund($params=null)
|
56 |
{
|
57 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
@@ -61,11 +35,6 @@ class Stripe_Charge extends Stripe_ApiResource
|
|
61 |
return $this;
|
62 |
}
|
63 |
|
64 |
-
/**
|
65 |
-
* @param array|null $params
|
66 |
-
*
|
67 |
-
* @return Stripe_Charge The captured charge.
|
68 |
-
*/
|
69 |
public function capture($params=null)
|
70 |
{
|
71 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
@@ -75,11 +44,6 @@ class Stripe_Charge extends Stripe_ApiResource
|
|
75 |
return $this;
|
76 |
}
|
77 |
|
78 |
-
/**
|
79 |
-
* @param array|null $params
|
80 |
-
*
|
81 |
-
* @return array The updated dispute.
|
82 |
-
*/
|
83 |
public function updateDispute($params=null)
|
84 |
{
|
85 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
@@ -88,16 +52,4 @@ class Stripe_Charge extends Stripe_ApiResource
|
|
88 |
$this->refreshFrom(array('dispute' => $response), $apiKey, true);
|
89 |
return $this->dispute;
|
90 |
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* @return Stripe_Charge The updated charge.
|
94 |
-
*/
|
95 |
-
public function closeDispute()
|
96 |
-
{
|
97 |
-
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
98 |
-
$url = $this->instanceUrl() . '/dispute/close';
|
99 |
-
list($response, $apiKey) = $requestor->request('post', $url);
|
100 |
-
$this->refreshFrom($response, $apiKey);
|
101 |
-
return $this;
|
102 |
-
}
|
103 |
-
}
|
2 |
|
3 |
class Stripe_Charge extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function all($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
20 |
return self::_scopedAll($class, $params, $apiKey);
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
public static function create($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedCreate($class, $params, $apiKey);
|
27 |
}
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
public function refund($params=null)
|
30 |
{
|
31 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
35 |
return $this;
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
38 |
public function capture($params=null)
|
39 |
{
|
40 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
44 |
return $this;
|
45 |
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
47 |
public function updateDispute($params=null)
|
48 |
{
|
49 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
52 |
$this->refreshFrom(array('dispute' => $response), $apiKey, true);
|
53 |
return $this->dispute;
|
54 |
}
|
55 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/Coupon.php
CHANGED
@@ -2,47 +2,30 @@
|
|
2 |
|
3 |
class Stripe_Coupon extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return Stripe_Coupon The created coupon.
|
22 |
-
*/
|
23 |
public static function create($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedCreate($class, $params, $apiKey);
|
27 |
}
|
28 |
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
*
|
32 |
-
* @return Stripe_Coupon The deleted coupon.
|
33 |
-
*/
|
34 |
public function delete($params=null)
|
35 |
{
|
36 |
$class = get_class();
|
37 |
return self::_scopedDelete($class, $params);
|
38 |
}
|
39 |
-
|
40 |
-
/**
|
41 |
-
* @param array|null $params
|
42 |
-
* @param string|null $apiKey
|
43 |
-
*
|
44 |
-
* @return array An array of Stripe_Coupons.
|
45 |
-
*/
|
46 |
public static function all($params=null, $apiKey=null)
|
47 |
{
|
48 |
$class = get_class();
|
2 |
|
3 |
class Stripe_Coupon extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function create($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
20 |
return self::_scopedCreate($class, $params, $apiKey);
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
23 |
public function delete($params=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedDelete($class, $params);
|
27 |
}
|
28 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
public static function all($params=null, $apiKey=null)
|
30 |
{
|
31 |
$class = get_class();
|
includes/lib/Stripe/Stripe/Customer.php
CHANGED
@@ -2,67 +2,42 @@
|
|
2 |
|
3 |
class Stripe_Customer extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return array An array of Stripe_Customers.
|
22 |
-
*/
|
23 |
public static function all($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedAll($class, $params, $apiKey);
|
27 |
}
|
28 |
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @param string|null $apiKey
|
32 |
-
*
|
33 |
-
* @return Stripe_Customer The created customer.
|
34 |
-
*/
|
35 |
public static function create($params=null, $apiKey=null)
|
36 |
{
|
37 |
$class = get_class();
|
38 |
return self::_scopedCreate($class, $params, $apiKey);
|
39 |
}
|
40 |
|
41 |
-
/**
|
42 |
-
* @returns Stripe_Customer The saved customer.
|
43 |
-
*/
|
44 |
public function save()
|
45 |
{
|
46 |
$class = get_class();
|
47 |
return self::_scopedSave($class);
|
48 |
}
|
49 |
|
50 |
-
/**
|
51 |
-
* @param array|null $params
|
52 |
-
*
|
53 |
-
* @returns Stripe_Customer The deleted customer.
|
54 |
-
*/
|
55 |
public function delete($params=null)
|
56 |
{
|
57 |
$class = get_class();
|
58 |
return self::_scopedDelete($class, $params);
|
59 |
}
|
60 |
|
61 |
-
/**
|
62 |
-
* @param array|null $params
|
63 |
-
*
|
64 |
-
* @returns Stripe_InvoiceItem The resulting invoice item.
|
65 |
-
*/
|
66 |
public function addInvoiceItem($params=null)
|
67 |
{
|
68 |
if (!$params)
|
@@ -72,11 +47,6 @@ class Stripe_Customer extends Stripe_ApiResource
|
|
72 |
return $ii;
|
73 |
}
|
74 |
|
75 |
-
/**
|
76 |
-
* @param array|null $params
|
77 |
-
*
|
78 |
-
* @returns array An array of the customer's Stripe_Invoices.
|
79 |
-
*/
|
80 |
public function invoices($params=null)
|
81 |
{
|
82 |
if (!$params)
|
@@ -86,11 +56,6 @@ class Stripe_Customer extends Stripe_ApiResource
|
|
86 |
return $invoices;
|
87 |
}
|
88 |
|
89 |
-
/**
|
90 |
-
* @param array|null $params
|
91 |
-
*
|
92 |
-
* @returns array An array of the customer's Stripe_InvoiceItems.
|
93 |
-
*/
|
94 |
public function invoiceItems($params=null)
|
95 |
{
|
96 |
if (!$params)
|
@@ -100,11 +65,6 @@ class Stripe_Customer extends Stripe_ApiResource
|
|
100 |
return $iis;
|
101 |
}
|
102 |
|
103 |
-
/**
|
104 |
-
* @param array|null $params
|
105 |
-
*
|
106 |
-
* @returns array An array of the customer's Stripe_Charges.
|
107 |
-
*/
|
108 |
public function charges($params=null)
|
109 |
{
|
110 |
if (!$params)
|
@@ -114,11 +74,6 @@ class Stripe_Customer extends Stripe_ApiResource
|
|
114 |
return $charges;
|
115 |
}
|
116 |
|
117 |
-
/**
|
118 |
-
* @param array|null $params
|
119 |
-
*
|
120 |
-
* @returns Stripe_Subscription The updated subscription.
|
121 |
-
*/
|
122 |
public function updateSubscription($params=null)
|
123 |
{
|
124 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
@@ -128,11 +83,6 @@ class Stripe_Customer extends Stripe_ApiResource
|
|
128 |
return $this->subscription;
|
129 |
}
|
130 |
|
131 |
-
/**
|
132 |
-
* @param array|null $params
|
133 |
-
*
|
134 |
-
* @returns Stripe_Subscription The cancelled subscription.
|
135 |
-
*/
|
136 |
public function cancelSubscription($params=null)
|
137 |
{
|
138 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
@@ -142,11 +92,6 @@ class Stripe_Customer extends Stripe_ApiResource
|
|
142 |
return $this->subscription;
|
143 |
}
|
144 |
|
145 |
-
/**
|
146 |
-
* @param array|null $params
|
147 |
-
*
|
148 |
-
* @returns Stripe_Customer The updated customer.
|
149 |
-
*/
|
150 |
public function deleteDiscount()
|
151 |
{
|
152 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
2 |
|
3 |
class Stripe_Customer extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function all($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
20 |
return self::_scopedAll($class, $params, $apiKey);
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
public static function create($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedCreate($class, $params, $apiKey);
|
27 |
}
|
28 |
|
|
|
|
|
|
|
29 |
public function save()
|
30 |
{
|
31 |
$class = get_class();
|
32 |
return self::_scopedSave($class);
|
33 |
}
|
34 |
|
|
|
|
|
|
|
|
|
|
|
35 |
public function delete($params=null)
|
36 |
{
|
37 |
$class = get_class();
|
38 |
return self::_scopedDelete($class, $params);
|
39 |
}
|
40 |
|
|
|
|
|
|
|
|
|
|
|
41 |
public function addInvoiceItem($params=null)
|
42 |
{
|
43 |
if (!$params)
|
47 |
return $ii;
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
50 |
public function invoices($params=null)
|
51 |
{
|
52 |
if (!$params)
|
56 |
return $invoices;
|
57 |
}
|
58 |
|
|
|
|
|
|
|
|
|
|
|
59 |
public function invoiceItems($params=null)
|
60 |
{
|
61 |
if (!$params)
|
65 |
return $iis;
|
66 |
}
|
67 |
|
|
|
|
|
|
|
|
|
|
|
68 |
public function charges($params=null)
|
69 |
{
|
70 |
if (!$params)
|
74 |
return $charges;
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
77 |
public function updateSubscription($params=null)
|
78 |
{
|
79 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
83 |
return $this->subscription;
|
84 |
}
|
85 |
|
|
|
|
|
|
|
|
|
|
|
86 |
public function cancelSubscription($params=null)
|
87 |
{
|
88 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
92 |
return $this->subscription;
|
93 |
}
|
94 |
|
|
|
|
|
|
|
|
|
|
|
95 |
public function deleteDiscount()
|
96 |
{
|
97 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
includes/lib/Stripe/Stripe/Error.php
CHANGED
@@ -2,28 +2,26 @@
|
|
2 |
|
3 |
class Stripe_Error extends Exception
|
4 |
{
|
5 |
-
public function __construct($message, $
|
6 |
-
$httpBody=null, $jsonBody=null
|
7 |
-
)
|
8 |
{
|
9 |
parent::__construct($message);
|
10 |
-
$this->
|
11 |
-
$this->
|
12 |
-
$this->
|
13 |
}
|
14 |
|
15 |
public function getHttpStatus()
|
16 |
{
|
17 |
-
return $this->
|
18 |
}
|
19 |
|
20 |
public function getHttpBody()
|
21 |
{
|
22 |
-
return $this->
|
23 |
}
|
24 |
|
25 |
public function getJsonBody()
|
26 |
{
|
27 |
-
return $this->
|
28 |
}
|
29 |
}
|
2 |
|
3 |
class Stripe_Error extends Exception
|
4 |
{
|
5 |
+
public function __construct($message=null, $http_status=null, $http_body=null, $json_body=null)
|
|
|
|
|
6 |
{
|
7 |
parent::__construct($message);
|
8 |
+
$this->http_status = $http_status;
|
9 |
+
$this->http_body = $http_body;
|
10 |
+
$this->json_body = $json_body;
|
11 |
}
|
12 |
|
13 |
public function getHttpStatus()
|
14 |
{
|
15 |
+
return $this->http_status;
|
16 |
}
|
17 |
|
18 |
public function getHttpBody()
|
19 |
{
|
20 |
+
return $this->http_body;
|
21 |
}
|
22 |
|
23 |
public function getJsonBody()
|
24 |
{
|
25 |
+
return $this->json_body;
|
26 |
}
|
27 |
}
|
includes/lib/Stripe/Stripe/Event.php
CHANGED
@@ -2,24 +2,18 @@
|
|
2 |
|
3 |
class Stripe_Event extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return array An array of Stripe_Events.
|
22 |
-
*/
|
23 |
public static function all($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
2 |
|
3 |
class Stripe_Event extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function all($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
includes/lib/Stripe/Stripe/InvalidRequestError.php
CHANGED
@@ -2,11 +2,9 @@
|
|
2 |
|
3 |
class Stripe_InvalidRequestError extends Stripe_Error
|
4 |
{
|
5 |
-
public function __construct($message, $param, $
|
6 |
-
$httpBody=null, $jsonBody=null
|
7 |
-
)
|
8 |
{
|
9 |
-
parent::__construct($message, $
|
10 |
$this->param = $param;
|
11 |
}
|
12 |
}
|
2 |
|
3 |
class Stripe_InvalidRequestError extends Stripe_Error
|
4 |
{
|
5 |
+
public function __construct($message, $param, $http_status=null, $http_body=null, $json_body=null)
|
|
|
|
|
6 |
{
|
7 |
+
parent::__construct($message, $http_status, $http_body, $json_body);
|
8 |
$this->param = $param;
|
9 |
}
|
10 |
}
|
includes/lib/Stripe/Stripe/Invoice.php
CHANGED
@@ -2,48 +2,30 @@
|
|
2 |
|
3 |
class Stripe_Invoice extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function create($params=null, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedCreate($class, $params, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param string $id The ID of the invoice to retrieve.
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return Stripe_Invoice
|
22 |
-
*/
|
23 |
public static function retrieve($id, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
27 |
}
|
28 |
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @param string|null $apiKey
|
32 |
-
*
|
33 |
-
* @return array An array of Stripe_Invoices.
|
34 |
-
*/
|
35 |
public static function all($params=null, $apiKey=null)
|
36 |
{
|
37 |
$class = get_class();
|
38 |
return self::_scopedAll($class, $params, $apiKey);
|
39 |
}
|
40 |
|
41 |
-
/**
|
42 |
-
* @param array|null $params
|
43 |
-
* @param string|null $apiKey
|
44 |
-
*
|
45 |
-
* @return Stripe_Invoice The upcoming invoice.
|
46 |
-
*/
|
47 |
public static function upcoming($params=null, $apiKey=null)
|
48 |
{
|
49 |
$requestor = new Stripe_ApiRequestor($apiKey);
|
@@ -52,18 +34,12 @@ class Stripe_Invoice extends Stripe_ApiResource
|
|
52 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
53 |
}
|
54 |
|
55 |
-
/**
|
56 |
-
* @return Stripe_Invoice The saved invoice.
|
57 |
-
*/
|
58 |
public function save()
|
59 |
{
|
60 |
$class = get_class();
|
61 |
return self::_scopedSave($class);
|
62 |
}
|
63 |
|
64 |
-
/**
|
65 |
-
* @return Stripe_Invoice The paid invoice.
|
66 |
-
*/
|
67 |
public function pay()
|
68 |
{
|
69 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
2 |
|
3 |
class Stripe_Invoice extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function create($params=null, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedCreate($class, $params, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function retrieve($id, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
20 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
public static function all($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedAll($class, $params, $apiKey);
|
27 |
}
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
public static function upcoming($params=null, $apiKey=null)
|
30 |
{
|
31 |
$requestor = new Stripe_ApiRequestor($apiKey);
|
34 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
35 |
}
|
36 |
|
|
|
|
|
|
|
37 |
public function save()
|
38 |
{
|
39 |
$class = get_class();
|
40 |
return self::_scopedSave($class);
|
41 |
}
|
42 |
|
|
|
|
|
|
|
43 |
public function pay()
|
44 |
{
|
45 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
includes/lib/Stripe/Stripe/InvoiceItem.php
CHANGED
@@ -2,54 +2,36 @@
|
|
2 |
|
3 |
class Stripe_InvoiceItem extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return array An array of Stripe_InvoiceItems.
|
22 |
-
*/
|
23 |
public static function all($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedAll($class, $params, $apiKey);
|
27 |
}
|
28 |
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @param string|null $apiKey
|
32 |
-
*
|
33 |
-
* @return Stripe_InvoiceItem The created invoice item.
|
34 |
-
*/
|
35 |
public static function create($params=null, $apiKey=null)
|
36 |
{
|
37 |
$class = get_class();
|
38 |
return self::_scopedCreate($class, $params, $apiKey);
|
39 |
}
|
40 |
|
41 |
-
/**
|
42 |
-
* @return Stripe_InvoiceItem The saved invoice item.
|
43 |
-
*/
|
44 |
public function save()
|
45 |
{
|
46 |
$class = get_class();
|
47 |
return self::_scopedSave($class);
|
48 |
}
|
49 |
|
50 |
-
/**
|
51 |
-
* @return Stripe_InvoiceItem The deleted invoice item.
|
52 |
-
*/
|
53 |
public function delete($params=null)
|
54 |
{
|
55 |
$class = get_class();
|
2 |
|
3 |
class Stripe_InvoiceItem extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function all($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
20 |
return self::_scopedAll($class, $params, $apiKey);
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
public static function create($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedCreate($class, $params, $apiKey);
|
27 |
}
|
28 |
|
|
|
|
|
|
|
29 |
public function save()
|
30 |
{
|
31 |
$class = get_class();
|
32 |
return self::_scopedSave($class);
|
33 |
}
|
34 |
|
|
|
|
|
|
|
35 |
public function delete($params=null)
|
36 |
{
|
37 |
$class = get_class();
|
includes/lib/Stripe/Stripe/List.php
CHANGED
@@ -2,36 +2,16 @@
|
|
2 |
|
3 |
class Stripe_List extends Stripe_Object
|
4 |
{
|
5 |
-
public function
|
6 |
-
{
|
7 |
-
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
8 |
-
list($response, $apiKey) = $requestor->request(
|
9 |
-
'get',
|
10 |
-
$this['url'],
|
11 |
-
$params
|
12 |
-
);
|
13 |
-
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
14 |
-
}
|
15 |
-
|
16 |
-
public function create($params=null)
|
17 |
{
|
18 |
-
$
|
19 |
-
|
20 |
-
'post', $this['url'], $params
|
21 |
-
);
|
22 |
-
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
23 |
}
|
24 |
|
25 |
-
public function
|
26 |
{
|
27 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
28 |
-
$
|
29 |
-
$id = Stripe_ApiRequestor::utf8($id);
|
30 |
-
$extn = urlencode($id);
|
31 |
-
list($response, $apiKey) = $requestor->request(
|
32 |
-
'get', "$base/$extn", $params
|
33 |
-
);
|
34 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
35 |
}
|
36 |
-
|
37 |
}
|
2 |
|
3 |
class Stripe_List extends Stripe_Object
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
|
|
|
|
|
|
9 |
}
|
10 |
|
11 |
+
public function all($params=null)
|
12 |
{
|
13 |
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
14 |
+
list($response, $apiKey) = $requestor->request('get', $this['url'], $params);
|
|
|
|
|
|
|
|
|
|
|
15 |
return Stripe_Util::convertToStripeObject($response, $apiKey);
|
16 |
}
|
|
|
17 |
}
|
includes/lib/Stripe/Stripe/Object.php
CHANGED
@@ -2,28 +2,17 @@
|
|
2 |
|
3 |
class Stripe_Object implements ArrayAccess
|
4 |
{
|
5 |
-
|
6 |
-
* @var array Attributes that should not be sent to the API because they're
|
7 |
-
* not updatable (e.g. API key, ID).
|
8 |
-
*/
|
9 |
-
public static $permanentAttributes;
|
10 |
-
/**
|
11 |
-
* @var array Attributes that are nested but still updatable from the parent
|
12 |
-
* class's URL (e.g. metadata).
|
13 |
-
*/
|
14 |
-
public static $nestedUpdatableAttributes;
|
15 |
|
16 |
public static function init()
|
17 |
{
|
18 |
-
self::$
|
19 |
-
self::$nestedUpdatableAttributes = new Stripe_Util_Set(array('metadata'));
|
20 |
}
|
21 |
|
22 |
protected $_apiKey;
|
23 |
protected $_values;
|
24 |
protected $_unsavedValues;
|
25 |
protected $_transientValues;
|
26 |
-
protected $_retrieveOptions;
|
27 |
|
28 |
public function __construct($id=null, $apiKey=null)
|
29 |
{
|
@@ -31,16 +20,6 @@ class Stripe_Object implements ArrayAccess
|
|
31 |
$this->_values = array();
|
32 |
$this->_unsavedValues = new Stripe_Util_Set();
|
33 |
$this->_transientValues = new Stripe_Util_Set();
|
34 |
-
|
35 |
-
$this->_retrieveOptions = array();
|
36 |
-
if (is_array($id)) {
|
37 |
-
foreach ($id as $key => $value) {
|
38 |
-
if ($key != 'id')
|
39 |
-
$this->_retrieveOptions[$key] = $value;
|
40 |
-
}
|
41 |
-
$id = $id['id'];
|
42 |
-
}
|
43 |
-
|
44 |
if ($id)
|
45 |
$this->id = $id;
|
46 |
}
|
@@ -48,21 +27,9 @@ class Stripe_Object implements ArrayAccess
|
|
48 |
// Standard accessor magic methods
|
49 |
public function __set($k, $v)
|
50 |
{
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
.'We interpret empty strings as NULL in requests. '
|
55 |
-
.'You may set obj->'.$k.' = NULL to delete the property'
|
56 |
-
);
|
57 |
-
}
|
58 |
-
|
59 |
-
if (self::$nestedUpdatableAttributes->includes($k) && isset($this->$k) && is_array($v)) {
|
60 |
-
$this->$k->replaceWith($v);
|
61 |
-
} else {
|
62 |
-
// TODO: may want to clear from $_transientValues. (Won't be user-visible.)
|
63 |
-
$this->_values[$k] = $v;
|
64 |
-
}
|
65 |
-
if (!self::$permanentAttributes->includes($k))
|
66 |
$this->_unsavedValues->add($k);
|
67 |
}
|
68 |
public function __isset($k)
|
@@ -82,13 +49,7 @@ class Stripe_Object implements ArrayAccess
|
|
82 |
} else if ($this->_transientValues->includes($k)) {
|
83 |
$class = get_class($this);
|
84 |
$attrs = join(', ', array_keys($this->_values));
|
85 |
-
|
86 |
-
. "HINT: The $k attribute was set in the past, however. "
|
87 |
-
. "It was then wiped when refreshing the object "
|
88 |
-
. "with the result returned by Stripe's API, "
|
89 |
-
. "probably as a result of a save(). The attributes currently "
|
90 |
-
. "available on this object are: $attrs";
|
91 |
-
error_log($message);
|
92 |
return null;
|
93 |
} else {
|
94 |
$class = get_class($this);
|
@@ -102,7 +63,7 @@ class Stripe_Object implements ArrayAccess
|
|
102 |
{
|
103 |
$this->$k = $v;
|
104 |
}
|
105 |
-
|
106 |
public function offsetExists($k)
|
107 |
{
|
108 |
return array_key_exists($k, $this->_values);
|
@@ -117,20 +78,7 @@ class Stripe_Object implements ArrayAccess
|
|
117 |
return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
|
118 |
}
|
119 |
|
120 |
-
public
|
121 |
-
{
|
122 |
-
return array_keys($this->_values);
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
* This unfortunately needs to be public to be used in Util.php
|
127 |
-
*
|
128 |
-
* @param Stripe_Object $class
|
129 |
-
* @param array $values
|
130 |
-
* @param string|null $apiKey
|
131 |
-
*
|
132 |
-
* @return Stripe_Object The object constructed from the given values.
|
133 |
-
*/
|
134 |
public static function scopedConstructFrom($class, $values, $apiKey=null)
|
135 |
{
|
136 |
$obj = new $class(isset($values['id']) ? $values['id'] : null, $apiKey);
|
@@ -138,30 +86,15 @@ class Stripe_Object implements ArrayAccess
|
|
138 |
return $obj;
|
139 |
}
|
140 |
|
141 |
-
/**
|
142 |
-
* @param array $values
|
143 |
-
* @param string|null $apiKey
|
144 |
-
*
|
145 |
-
* @return Stripe_Object The object of the same class as $this constructed
|
146 |
-
* from the given values.
|
147 |
-
*/
|
148 |
public static function constructFrom($values, $apiKey=null)
|
149 |
{
|
150 |
-
$class = get_class(
|
151 |
return self::scopedConstructFrom($class, $values, $apiKey);
|
152 |
}
|
153 |
|
154 |
-
/**
|
155 |
-
* Refreshes this object using the provided values.
|
156 |
-
*
|
157 |
-
* @param array $values
|
158 |
-
* @param string $apiKey
|
159 |
-
* @param boolean $partial Defaults to false.
|
160 |
-
*/
|
161 |
public function refreshFrom($values, $apiKey, $partial=false)
|
162 |
{
|
163 |
$this->_apiKey = $apiKey;
|
164 |
-
|
165 |
// Wipe old state before setting new. This is useful for e.g. updating a
|
166 |
// customer, where there is no persistent card parameter. Mark those values
|
167 |
// which don't persist as transient
|
@@ -171,64 +104,20 @@ class Stripe_Object implements ArrayAccess
|
|
171 |
$removed = array_diff(array_keys($this->_values), array_keys($values));
|
172 |
|
173 |
foreach ($removed as $k) {
|
174 |
-
if (self::$
|
175 |
continue;
|
176 |
unset($this->$k);
|
177 |
}
|
178 |
|
179 |
foreach ($values as $k => $v) {
|
180 |
-
if (self::$
|
181 |
continue;
|
182 |
-
|
183 |
-
if (self::$nestedUpdatableAttributes->includes($k) && is_array($v))
|
184 |
-
$this->_values[$k] = Stripe_Object::scopedConstructFrom('Stripe_AttachedObject', $v, $apiKey);
|
185 |
-
else
|
186 |
-
$this->_values[$k] = Stripe_Util::convertToStripeObject($v, $apiKey);
|
187 |
-
|
188 |
$this->_transientValues->discard($k);
|
189 |
$this->_unsavedValues->discard($k);
|
190 |
}
|
191 |
}
|
192 |
|
193 |
-
/**
|
194 |
-
* @return array A recursive mapping of attributes to values for this object,
|
195 |
-
* including the proper value for deleted attributes.
|
196 |
-
*/
|
197 |
-
public function serializeParameters()
|
198 |
-
{
|
199 |
-
$params = array();
|
200 |
-
if ($this->_unsavedValues) {
|
201 |
-
foreach ($this->_unsavedValues->toArray() as $k) {
|
202 |
-
$v = $this->$k;
|
203 |
-
if ($v === NULL) {
|
204 |
-
$v = '';
|
205 |
-
}
|
206 |
-
$params[$k] = $v;
|
207 |
-
}
|
208 |
-
}
|
209 |
-
|
210 |
-
// Get nested updates.
|
211 |
-
foreach (self::$nestedUpdatableAttributes->toArray() as $property) {
|
212 |
-
if (isset($this->$property) && $this->$property instanceOf Stripe_Object) {
|
213 |
-
$params[$property] = $this->$property->serializeParameters();
|
214 |
-
}
|
215 |
-
}
|
216 |
-
return $params;
|
217 |
-
}
|
218 |
-
|
219 |
-
// Pretend to have late static bindings, even in PHP 5.2
|
220 |
-
protected function _lsb($method)
|
221 |
-
{
|
222 |
-
$class = get_class($this);
|
223 |
-
$args = array_slice(func_get_args(), 1);
|
224 |
-
return call_user_func_array(array($class, $method), $args);
|
225 |
-
}
|
226 |
-
protected static function _scopedLsb($class, $method)
|
227 |
-
{
|
228 |
-
$args = array_slice(func_get_args(), 2);
|
229 |
-
return call_user_func_array(array($class, $method), $args);
|
230 |
-
}
|
231 |
-
|
232 |
public function __toJSON()
|
233 |
{
|
234 |
if (defined('JSON_PRETTY_PRINT'))
|
2 |
|
3 |
class Stripe_Object implements ArrayAccess
|
4 |
{
|
5 |
+
public static $_permanentAttributes;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
public static function init()
|
8 |
{
|
9 |
+
self::$_permanentAttributes = new Stripe_Util_Set(array('_apiKey'));
|
|
|
10 |
}
|
11 |
|
12 |
protected $_apiKey;
|
13 |
protected $_values;
|
14 |
protected $_unsavedValues;
|
15 |
protected $_transientValues;
|
|
|
16 |
|
17 |
public function __construct($id=null, $apiKey=null)
|
18 |
{
|
20 |
$this->_values = array();
|
21 |
$this->_unsavedValues = new Stripe_Util_Set();
|
22 |
$this->_transientValues = new Stripe_Util_Set();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
if ($id)
|
24 |
$this->id = $id;
|
25 |
}
|
27 |
// Standard accessor magic methods
|
28 |
public function __set($k, $v)
|
29 |
{
|
30 |
+
// TODO: may want to clear from $_transientValues. (Won't be user-visible.)
|
31 |
+
$this->_values[$k] = $v;
|
32 |
+
if (!self::$_permanentAttributes->includes($k))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
$this->_unsavedValues->add($k);
|
34 |
}
|
35 |
public function __isset($k)
|
49 |
} else if ($this->_transientValues->includes($k)) {
|
50 |
$class = get_class($this);
|
51 |
$attrs = join(', ', array_keys($this->_values));
|
52 |
+
error_log("Stripe Notice: Undefined property of $class instance: $k. HINT: The $k attribute was set in the past, however. It was then wiped when refreshing the object with the result returned by Stripe's API, probably as a result of a save(). The attributes currently available on this object are: $attrs");
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
return null;
|
54 |
} else {
|
55 |
$class = get_class($this);
|
63 |
{
|
64 |
$this->$k = $v;
|
65 |
}
|
66 |
+
|
67 |
public function offsetExists($k)
|
68 |
{
|
69 |
return array_key_exists($k, $this->_values);
|
78 |
return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
|
79 |
}
|
80 |
|
81 |
+
// This unfortunately needs to be public to be used in Util.php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
public static function scopedConstructFrom($class, $values, $apiKey=null)
|
83 |
{
|
84 |
$obj = new $class(isset($values['id']) ? $values['id'] : null, $apiKey);
|
86 |
return $obj;
|
87 |
}
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
public static function constructFrom($values, $apiKey=null)
|
90 |
{
|
91 |
+
$class = get_class();
|
92 |
return self::scopedConstructFrom($class, $values, $apiKey);
|
93 |
}
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
public function refreshFrom($values, $apiKey, $partial=false)
|
96 |
{
|
97 |
$this->_apiKey = $apiKey;
|
|
|
98 |
// Wipe old state before setting new. This is useful for e.g. updating a
|
99 |
// customer, where there is no persistent card parameter. Mark those values
|
100 |
// which don't persist as transient
|
104 |
$removed = array_diff(array_keys($this->_values), array_keys($values));
|
105 |
|
106 |
foreach ($removed as $k) {
|
107 |
+
if (self::$_permanentAttributes->includes($k))
|
108 |
continue;
|
109 |
unset($this->$k);
|
110 |
}
|
111 |
|
112 |
foreach ($values as $k => $v) {
|
113 |
+
if (self::$_permanentAttributes->includes($k))
|
114 |
continue;
|
115 |
+
$this->_values[$k] = Stripe_Util::convertToStripeObject($v, $apiKey);
|
|
|
|
|
|
|
|
|
|
|
116 |
$this->_transientValues->discard($k);
|
117 |
$this->_unsavedValues->discard($k);
|
118 |
}
|
119 |
}
|
120 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
public function __toJSON()
|
122 |
{
|
123 |
if (defined('JSON_PRETTY_PRINT'))
|
includes/lib/Stripe/Stripe/Plan.php
CHANGED
@@ -2,56 +2,36 @@
|
|
2 |
|
3 |
class Stripe_Plan extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return Stripe_Plan The created plan.
|
22 |
-
*/
|
23 |
public static function create($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedCreate($class, $params, $apiKey);
|
27 |
}
|
28 |
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
*
|
32 |
-
* @return Stripe_Plan The deleted plan.
|
33 |
-
*/
|
34 |
public function delete($params=null)
|
35 |
{
|
36 |
$class = get_class();
|
37 |
return self::_scopedDelete($class, $params);
|
38 |
}
|
39 |
|
40 |
-
/**
|
41 |
-
* @return Stripe_Plan The saved plan.
|
42 |
-
*/
|
43 |
public function save()
|
44 |
{
|
45 |
$class = get_class();
|
46 |
return self::_scopedSave($class);
|
47 |
}
|
48 |
|
49 |
-
/**
|
50 |
-
* @param array|null $params
|
51 |
-
* @param string|null $apiKey
|
52 |
-
*
|
53 |
-
* @return array An array of Stripe_Plans.
|
54 |
-
*/
|
55 |
public static function all($params=null, $apiKey=null)
|
56 |
{
|
57 |
$class = get_class();
|
2 |
|
3 |
class Stripe_Plan extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function create($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
20 |
return self::_scopedCreate($class, $params, $apiKey);
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
23 |
public function delete($params=null)
|
24 |
{
|
25 |
$class = get_class();
|
26 |
return self::_scopedDelete($class, $params);
|
27 |
}
|
28 |
|
|
|
|
|
|
|
29 |
public function save()
|
30 |
{
|
31 |
$class = get_class();
|
32 |
return self::_scopedSave($class);
|
33 |
}
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
public static function all($params=null, $apiKey=null)
|
36 |
{
|
37 |
$class = get_class();
|
includes/lib/Stripe/Stripe/Recipient.php
DELETED
@@ -1,75 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Stripe_Recipient extends Stripe_ApiResource
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* @param string $id The ID of the recipient to retrieve.
|
7 |
-
* @param string|null $apiKey
|
8 |
-
*
|
9 |
-
* @return Stripe_Recipient
|
10 |
-
*/
|
11 |
-
public static function retrieve($id, $apiKey=null)
|
12 |
-
{
|
13 |
-
$class = get_class();
|
14 |
-
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
-
}
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return array An array of Stripe_Recipients.
|
22 |
-
*/
|
23 |
-
public static function all($params=null, $apiKey=null)
|
24 |
-
{
|
25 |
-
$class = get_class();
|
26 |
-
return self::_scopedAll($class, $params, $apiKey);
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @param string|null $apiKey
|
32 |
-
*
|
33 |
-
* @return Stripe_Recipient The created recipient.
|
34 |
-
*/
|
35 |
-
public static function create($params=null, $apiKey=null)
|
36 |
-
{
|
37 |
-
$class = get_class();
|
38 |
-
return self::_scopedCreate($class, $params, $apiKey);
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* @return Stripe_Recipient The saved recipient.
|
43 |
-
*/
|
44 |
-
public function save()
|
45 |
-
{
|
46 |
-
$class = get_class();
|
47 |
-
return self::_scopedSave($class);
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* @param array|null $params
|
52 |
-
*
|
53 |
-
* @return Stripe_Recipient The deleted recipient.
|
54 |
-
*/
|
55 |
-
public function delete($params=null)
|
56 |
-
{
|
57 |
-
$class = get_class();
|
58 |
-
return self::_scopedDelete($class, $params);
|
59 |
-
}
|
60 |
-
|
61 |
-
|
62 |
-
/**
|
63 |
-
* @param array|null $params
|
64 |
-
*
|
65 |
-
* @return array An array of the recipient's Stripe_Transfers.
|
66 |
-
*/
|
67 |
-
public function transfers($params=null)
|
68 |
-
{
|
69 |
-
if (!$params)
|
70 |
-
$params = array();
|
71 |
-
$params['recipient'] = $this->id;
|
72 |
-
$transfers = Stripe_Transfer::all($params, $this->_apiKey);
|
73 |
-
return $transfers;
|
74 |
-
}
|
75 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/SingletonApiResource.php
CHANGED
@@ -9,19 +9,12 @@ abstract class Stripe_SingletonApiResource extends Stripe_ApiResource
|
|
9 |
return $instance;
|
10 |
}
|
11 |
|
12 |
-
/**
|
13 |
-
* @param Stripe_SingletonApiResource $class
|
14 |
-
* @return string The endpoint associated with this singleton class.
|
15 |
-
*/
|
16 |
public static function classUrl($class)
|
17 |
{
|
18 |
$base = self::className($class);
|
19 |
return "/v1/${base}";
|
20 |
}
|
21 |
|
22 |
-
/**
|
23 |
-
* @return string The endpoint associated with this singleton API resource.
|
24 |
-
*/
|
25 |
public function instanceUrl()
|
26 |
{
|
27 |
$class = get_class($this);
|
9 |
return $instance;
|
10 |
}
|
11 |
|
|
|
|
|
|
|
|
|
12 |
public static function classUrl($class)
|
13 |
{
|
14 |
$base = self::className($class);
|
15 |
return "/v1/${base}";
|
16 |
}
|
17 |
|
|
|
|
|
|
|
18 |
public function instanceUrl()
|
19 |
{
|
20 |
$class = get_class($this);
|
includes/lib/Stripe/Stripe/Stripe.php
CHANGED
@@ -2,72 +2,26 @@
|
|
2 |
|
3 |
abstract class Stripe
|
4 |
{
|
5 |
-
/**
|
6 |
-
* @var string The Stripe API key to be used for requests.
|
7 |
-
*/
|
8 |
public static $apiKey;
|
9 |
-
/**
|
10 |
-
* @var string The base URL for the Stripe API.
|
11 |
-
*/
|
12 |
public static $apiBase = 'https://api.stripe.com';
|
13 |
-
/**
|
14 |
-
* @var string|null The version of the Stripe API to use for requests.
|
15 |
-
*/
|
16 |
-
public static $apiVersion = null;
|
17 |
-
/**
|
18 |
-
* @var boolean Defaults to true.
|
19 |
-
*/
|
20 |
public static $verifySslCerts = true;
|
21 |
-
const VERSION = '1.
|
22 |
|
23 |
-
/**
|
24 |
-
* @return string The API key used for requests.
|
25 |
-
*/
|
26 |
public static function getApiKey()
|
27 |
{
|
28 |
return self::$apiKey;
|
29 |
}
|
30 |
|
31 |
-
/**
|
32 |
-
* Sets the API key to be used for requests.
|
33 |
-
*
|
34 |
-
* @param string $apiKey
|
35 |
-
*/
|
36 |
public static function setApiKey($apiKey)
|
37 |
{
|
38 |
self::$apiKey = $apiKey;
|
39 |
}
|
40 |
|
41 |
-
|
42 |
-
* @return string The API version used for requests. null if we're using the
|
43 |
-
* latest version.
|
44 |
-
*/
|
45 |
-
public static function getApiVersion()
|
46 |
-
{
|
47 |
-
return self::$apiVersion;
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* @param string $apiVersion The API version to use for requests.
|
52 |
-
*/
|
53 |
-
public static function setApiVersion($apiVersion)
|
54 |
-
{
|
55 |
-
self::$apiVersion = $apiVersion;
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* @return boolean
|
60 |
-
*/
|
61 |
-
public static function getVerifySslCerts()
|
62 |
-
{
|
63 |
return self::$verifySslCerts;
|
64 |
}
|
65 |
|
66 |
-
|
67 |
-
* @param boolean $verify
|
68 |
-
*/
|
69 |
-
public static function setVerifySslCerts($verify)
|
70 |
-
{
|
71 |
self::$verifySslCerts = $verify;
|
72 |
}
|
73 |
}
|
2 |
|
3 |
abstract class Stripe
|
4 |
{
|
|
|
|
|
|
|
5 |
public static $apiKey;
|
|
|
|
|
|
|
6 |
public static $apiBase = 'https://api.stripe.com';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
public static $verifySslCerts = true;
|
8 |
+
const VERSION = '1.7.9';
|
9 |
|
|
|
|
|
|
|
10 |
public static function getApiKey()
|
11 |
{
|
12 |
return self::$apiKey;
|
13 |
}
|
14 |
|
|
|
|
|
|
|
|
|
|
|
15 |
public static function setApiKey($apiKey)
|
16 |
{
|
17 |
self::$apiKey = $apiKey;
|
18 |
}
|
19 |
|
20 |
+
public static function getVerifySslCerts() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
return self::$verifySslCerts;
|
22 |
}
|
23 |
|
24 |
+
public static function setVerifySslCerts($verify) {
|
|
|
|
|
|
|
|
|
25 |
self::$verifySslCerts = $verify;
|
26 |
}
|
27 |
}
|
includes/lib/Stripe/Stripe/Subscription.php
DELETED
@@ -1,58 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Stripe_Subscription extends Stripe_ApiResource
|
4 |
-
{
|
5 |
-
/**
|
6 |
-
* @return string The API URL for this Stripe subscription.
|
7 |
-
*/
|
8 |
-
public function instanceUrl()
|
9 |
-
{
|
10 |
-
$id = $this['id'];
|
11 |
-
$customer = $this['customer'];
|
12 |
-
$class = get_class($this);
|
13 |
-
if (!$id) {
|
14 |
-
throw new Stripe_InvalidRequestError(
|
15 |
-
"Could not determine which URL to request: " .
|
16 |
-
"class instance has invalid ID: $id",
|
17 |
-
null
|
18 |
-
);
|
19 |
-
}
|
20 |
-
$id = Stripe_ApiRequestor::utf8($id);
|
21 |
-
$customer = Stripe_ApiRequestor::utf8($customer);
|
22 |
-
|
23 |
-
$base = self::classUrl('Stripe_Customer');
|
24 |
-
$customerExtn = urlencode($customer);
|
25 |
-
$extn = urlencode($id);
|
26 |
-
return "$base/$customerExtn/subscriptions/$extn";
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @return Stripe_Subscription The deleted subscription.
|
32 |
-
*/
|
33 |
-
public function cancel($params=null)
|
34 |
-
{
|
35 |
-
$class = get_class();
|
36 |
-
return self::_scopedDelete($class, $params);
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* @return Stripe_Subscription The saved subscription.
|
41 |
-
*/
|
42 |
-
public function save()
|
43 |
-
{
|
44 |
-
$class = get_class();
|
45 |
-
return self::_scopedSave($class);
|
46 |
-
}
|
47 |
-
|
48 |
-
/**
|
49 |
-
* @return Stripe_Subscription The updated subscription.
|
50 |
-
*/
|
51 |
-
public function deleteDiscount()
|
52 |
-
{
|
53 |
-
$requestor = new Stripe_ApiRequestor($this->_apiKey);
|
54 |
-
$url = $this->instanceUrl() . '/discount';
|
55 |
-
list($response, $apiKey) = $requestor->request('delete', $url);
|
56 |
-
$this->refreshFrom(array('discount' => null), $apiKey, true);
|
57 |
-
}
|
58 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/Stripe/Token.php
CHANGED
@@ -2,24 +2,18 @@
|
|
2 |
|
3 |
class Stripe_Token extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
-
/**
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return Stripe_Coupon The created token.
|
22 |
-
*/
|
23 |
public static function create($params=null, $apiKey=null)
|
24 |
{
|
25 |
$class = get_class();
|
2 |
|
3 |
class Stripe_Token extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
6 |
+
{
|
7 |
+
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
+
}
|
10 |
+
|
11 |
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function create($params=null, $apiKey=null)
|
18 |
{
|
19 |
$class = get_class();
|
includes/lib/Stripe/Stripe/Transfer.php
CHANGED
@@ -2,49 +2,21 @@
|
|
2 |
|
3 |
class Stripe_Transfer extends Stripe_ApiResource
|
4 |
{
|
5 |
-
|
6 |
-
* @param string $id The ID of the transfer to retrieve.
|
7 |
-
* @param string|null $apiKey
|
8 |
-
*
|
9 |
-
* @return Stripe_Transfer
|
10 |
-
*/
|
11 |
-
public static function retrieve($id, $apiKey=null)
|
12 |
{
|
13 |
$class = get_class();
|
14 |
-
return self::
|
15 |
}
|
16 |
|
17 |
-
|
18 |
-
* @param array|null $params
|
19 |
-
* @param string|null $apiKey
|
20 |
-
*
|
21 |
-
* @return array An array of Stripe_Transfers.
|
22 |
-
*/
|
23 |
-
public static function all($params=null, $apiKey=null)
|
24 |
-
{
|
25 |
-
$class = get_class();
|
26 |
-
return self::_scopedAll($class, $params, $apiKey);
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* @param array|null $params
|
31 |
-
* @param string|null $apiKey
|
32 |
-
*
|
33 |
-
* @return Stripe_Transfer The created transfer.
|
34 |
-
*/
|
35 |
-
public static function create($params=null, $apiKey=null)
|
36 |
{
|
37 |
$class = get_class();
|
38 |
-
return self::
|
39 |
}
|
40 |
|
41 |
-
|
42 |
-
* @return Stripe_Transfer The saved transfer.
|
43 |
-
*/
|
44 |
-
public function save()
|
45 |
{
|
46 |
$class = get_class();
|
47 |
-
return self::
|
48 |
}
|
49 |
-
|
50 |
}
|
2 |
|
3 |
class Stripe_Transfer extends Stripe_ApiResource
|
4 |
{
|
5 |
+
public static function constructFrom($values, $apiKey=null)
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
{
|
7 |
$class = get_class();
|
8 |
+
return self::scopedConstructFrom($class, $values, $apiKey);
|
9 |
}
|
10 |
|
11 |
+
public static function retrieve($id, $apiKey=null)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
{
|
13 |
$class = get_class();
|
14 |
+
return self::_scopedRetrieve($class, $id, $apiKey);
|
15 |
}
|
16 |
|
17 |
+
public static function all($params=null, $apiKey=null)
|
|
|
|
|
|
|
18 |
{
|
19 |
$class = get_class();
|
20 |
+
return self::_scopedAll($class, $params, $apiKey);
|
21 |
}
|
|
|
22 |
}
|
includes/lib/Stripe/Stripe/Util.php
CHANGED
@@ -2,18 +2,11 @@
|
|
2 |
|
3 |
abstract class Stripe_Util
|
4 |
{
|
5 |
-
/**
|
6 |
-
* Whether the provided array (or other) is a list rather than a dictionary.
|
7 |
-
*
|
8 |
-
* @param array|mixed $array
|
9 |
-
* @return boolean True if the given object is a list.
|
10 |
-
*/
|
11 |
public static function isList($array)
|
12 |
{
|
13 |
if (!is_array($array))
|
14 |
return false;
|
15 |
-
|
16 |
-
// TODO: generally incorrect, but it's correct given Stripe's response
|
17 |
foreach (array_keys($array) as $k) {
|
18 |
if (!is_numeric($k))
|
19 |
return false;
|
@@ -21,66 +14,45 @@ abstract class Stripe_Util
|
|
21 |
return true;
|
22 |
}
|
23 |
|
24 |
-
/**
|
25 |
-
* Recursively converts the PHP Stripe object to an array.
|
26 |
-
*
|
27 |
-
* @param array $values The PHP Stripe object to convert.
|
28 |
-
* @return array
|
29 |
-
*/
|
30 |
public static function convertStripeObjectToArray($values)
|
31 |
{
|
32 |
$results = array();
|
33 |
foreach ($values as $k => $v) {
|
34 |
// FIXME: this is an encapsulation violation
|
35 |
-
if ($k
|
36 |
continue;
|
37 |
}
|
38 |
if ($v instanceof Stripe_Object) {
|
39 |
$results[$k] = $v->__toArray(true);
|
40 |
-
}
|
|
|
41 |
$results[$k] = self::convertStripeObjectToArray($v);
|
42 |
-
}
|
|
|
43 |
$results[$k] = $v;
|
44 |
}
|
45 |
}
|
46 |
return $results;
|
47 |
}
|
48 |
|
49 |
-
/**
|
50 |
-
* Converts a response from the Stripe API to the corresponding PHP object.
|
51 |
-
*
|
52 |
-
* @param array $resp The response from the Stripe API.
|
53 |
-
* @param string $apiKey
|
54 |
-
* @return Stripe_Object|array
|
55 |
-
*/
|
56 |
public static function convertToStripeObject($resp, $apiKey)
|
57 |
{
|
58 |
-
$types = array(
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
'invoiceitem' => 'Stripe_InvoiceItem',
|
65 |
-
'event' => 'Stripe_Event',
|
66 |
-
'transfer' => 'Stripe_Transfer',
|
67 |
-
'plan' => 'Stripe_Plan',
|
68 |
-
'recipient' => 'Stripe_Recipient',
|
69 |
-
'subscription' => 'Stripe_Subscription'
|
70 |
-
);
|
71 |
if (self::isList($resp)) {
|
72 |
$mapped = array();
|
73 |
foreach ($resp as $i)
|
74 |
array_push($mapped, self::convertToStripeObject($i, $apiKey));
|
75 |
return $mapped;
|
76 |
} else if (is_array($resp)) {
|
77 |
-
if (isset($resp['object'])
|
78 |
-
&& is_string($resp['object'])
|
79 |
-
&& isset($types[$resp['object']])) {
|
80 |
$class = $types[$resp['object']];
|
81 |
-
|
82 |
$class = 'Stripe_Object';
|
83 |
-
}
|
84 |
return Stripe_Object::scopedConstructFrom($class, $resp, $apiKey);
|
85 |
} else {
|
86 |
return $resp;
|
2 |
|
3 |
abstract class Stripe_Util
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
public static function isList($array)
|
6 |
{
|
7 |
if (!is_array($array))
|
8 |
return false;
|
9 |
+
// TODO: this isn't actually correct in general, but it's correct given Stripe's responses
|
|
|
10 |
foreach (array_keys($array) as $k) {
|
11 |
if (!is_numeric($k))
|
12 |
return false;
|
14 |
return true;
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
public static function convertStripeObjectToArray($values)
|
18 |
{
|
19 |
$results = array();
|
20 |
foreach ($values as $k => $v) {
|
21 |
// FIXME: this is an encapsulation violation
|
22 |
+
if (Stripe_Object::$_permanentAttributes->includes($k)) {
|
23 |
continue;
|
24 |
}
|
25 |
if ($v instanceof Stripe_Object) {
|
26 |
$results[$k] = $v->__toArray(true);
|
27 |
+
}
|
28 |
+
else if (is_array($v)) {
|
29 |
$results[$k] = self::convertStripeObjectToArray($v);
|
30 |
+
}
|
31 |
+
else {
|
32 |
$results[$k] = $v;
|
33 |
}
|
34 |
}
|
35 |
return $results;
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
public static function convertToStripeObject($resp, $apiKey)
|
39 |
{
|
40 |
+
$types = array('charge' => 'Stripe_Charge',
|
41 |
+
'customer' => 'Stripe_Customer',
|
42 |
+
'list' => 'Stripe_List',
|
43 |
+
'invoice' => 'Stripe_Invoice',
|
44 |
+
'invoiceitem' => 'Stripe_InvoiceItem', 'event' => 'Stripe_Event',
|
45 |
+
'transfer' => 'Stripe_Transfer');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
if (self::isList($resp)) {
|
47 |
$mapped = array();
|
48 |
foreach ($resp as $i)
|
49 |
array_push($mapped, self::convertToStripeObject($i, $apiKey));
|
50 |
return $mapped;
|
51 |
} else if (is_array($resp)) {
|
52 |
+
if (isset($resp['object']) && is_string($resp['object']) && isset($types[$resp['object']]))
|
|
|
|
|
53 |
$class = $types[$resp['object']];
|
54 |
+
else
|
55 |
$class = 'Stripe_Object';
|
|
|
56 |
return Stripe_Object::scopedConstructFrom($class, $resp, $apiKey);
|
57 |
} else {
|
58 |
return $resp;
|
includes/lib/Twocheckout/Twocheckout.php
DELETED
@@ -1,31 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
abstract class Twocheckout
|
4 |
-
{
|
5 |
-
public static $user;
|
6 |
-
public static $pass;
|
7 |
-
public static $format = "json";
|
8 |
-
public static $apiBaseUrl = "https://www.2checkout.com/api/";
|
9 |
-
public static $error;
|
10 |
-
const VERSION = '0.1.2';
|
11 |
-
|
12 |
-
static function setCredentials($user, $pass)
|
13 |
-
{
|
14 |
-
self::$user = $user;
|
15 |
-
self::$pass = $pass;
|
16 |
-
}
|
17 |
-
}
|
18 |
-
|
19 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutAccount.php');
|
20 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutPayment.php');
|
21 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutApi.php');
|
22 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutSale.php');
|
23 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutProduct.php');
|
24 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutCoupon.php');
|
25 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutOption.php');
|
26 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutUtil.php');
|
27 |
-
require(dirname(__FILE__) . '/Twocheckout/Api/TwocheckoutError.php');
|
28 |
-
require(dirname(__FILE__) . '/Twocheckout/TwocheckoutReturn.php');
|
29 |
-
require(dirname(__FILE__) . '/Twocheckout/TwocheckoutNotification.php');
|
30 |
-
require(dirname(__FILE__) . '/Twocheckout/TwocheckoutCharge.php');
|
31 |
-
require(dirname(__FILE__) . '/Twocheckout/TwocheckoutMessage.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutAccount.php
DELETED
@@ -1,25 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Company extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function retrieve($format='json')
|
7 |
-
{
|
8 |
-
$request = new Twocheckout_Api_Requester();
|
9 |
-
$urlSuffix = 'acct/detail_company_info';
|
10 |
-
$result = $request->do_call($urlSuffix);
|
11 |
-
return Twocheckout_Util::return_resp($result, $format);
|
12 |
-
}
|
13 |
-
}
|
14 |
-
|
15 |
-
class Twocheckout_Contact extends Twocheckout
|
16 |
-
{
|
17 |
-
|
18 |
-
public static function retrieve($format='json')
|
19 |
-
{
|
20 |
-
$request = new Twocheckout_Api_Requester();
|
21 |
-
$urlSuffix = 'acct/detail_contact_info';
|
22 |
-
$result = $request->do_call($urlSuffix);
|
23 |
-
return Twocheckout_Util::return_resp($result, $format);
|
24 |
-
}
|
25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutApi.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Api_Requester
|
4 |
-
{
|
5 |
-
public $apiBaseUrl;
|
6 |
-
private $user;
|
7 |
-
private $pass;
|
8 |
-
|
9 |
-
function __construct() {
|
10 |
-
$this->user = Twocheckout::$user;
|
11 |
-
$this->pass = Twocheckout::$pass;
|
12 |
-
$this->apiBaseUrl = Twocheckout::$apiBaseUrl;
|
13 |
-
}
|
14 |
-
|
15 |
-
function do_call($urlSuffix, $data=array())
|
16 |
-
{
|
17 |
-
$url = $this->apiBaseUrl . $urlSuffix;
|
18 |
-
$ch = curl_init($url);
|
19 |
-
curl_setopt($ch, CURLOPT_HEADER, 0);
|
20 |
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
|
21 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
22 |
-
curl_setopt($ch, CURLOPT_USERAGENT, "2Checkout PHP/0.1.0%s");
|
23 |
-
curl_setopt($ch, CURLOPT_POST, 0);
|
24 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
25 |
-
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
26 |
-
curl_setopt($ch, CURLOPT_USERPWD, "{$this->user}:{$this->pass}");
|
27 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
28 |
-
$resp = curl_exec($ch);
|
29 |
-
curl_close($ch);
|
30 |
-
return $resp;
|
31 |
-
}
|
32 |
-
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutCoupon.php
DELETED
@@ -1,42 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Coupon extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function create($params=array(), $format='json')
|
7 |
-
{
|
8 |
-
$request = new Twocheckout_Api_Requester();
|
9 |
-
$urlSuffix = 'products/create_coupon';
|
10 |
-
$result = $request->do_call($urlSuffix, $params);
|
11 |
-
return Twocheckout_Util::return_resp($result, $format);
|
12 |
-
}
|
13 |
-
|
14 |
-
public static function retrieve($params=array(), $format='json')
|
15 |
-
{
|
16 |
-
$request = new Twocheckout_Api_Requester();
|
17 |
-
if(array_key_exists("coupon_code",$params)) {
|
18 |
-
$urlSuffix = 'products/detail_coupon';
|
19 |
-
} else {
|
20 |
-
$urlSuffix = 'products/list_coupons';
|
21 |
-
}
|
22 |
-
$result = $request->do_call($urlSuffix, $params);
|
23 |
-
return Twocheckout_Util::return_resp($result, $format);
|
24 |
-
}
|
25 |
-
|
26 |
-
public static function update($params=array(), $format='json')
|
27 |
-
{
|
28 |
-
$request = new Twocheckout_Api_Requester();
|
29 |
-
$urlSuffix = 'products/update_coupon';
|
30 |
-
$result = $request->do_call($urlSuffix, $params);
|
31 |
-
return Twocheckout_Util::return_resp($result, $format);
|
32 |
-
}
|
33 |
-
|
34 |
-
public static function delete($params=array(), $format='json')
|
35 |
-
{
|
36 |
-
$request = new Twocheckout_Api_Requester();
|
37 |
-
$urlSuffix = 'products/delete_coupon';
|
38 |
-
$result = $request->do_call($urlSuffix, $params);
|
39 |
-
return Twocheckout_Util::return_resp($result, $format);
|
40 |
-
}
|
41 |
-
|
42 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutError.php
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Error extends Exception
|
4 |
-
{
|
5 |
-
public function __construct($message, $code = 0, Exception $previous = null)
|
6 |
-
{
|
7 |
-
parent::__construct($message, $code, $previous);
|
8 |
-
}
|
9 |
-
|
10 |
-
public function __toString()
|
11 |
-
{
|
12 |
-
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
|
13 |
-
}
|
14 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutOption.php
DELETED
@@ -1,42 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Option extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function create($params=array(), $format='json')
|
7 |
-
{
|
8 |
-
$request = new Twocheckout_Api_Requester();
|
9 |
-
$urlSuffix = 'products/create_option';
|
10 |
-
$result = $request->do_call($urlSuffix, $params);
|
11 |
-
return Twocheckout_Util::return_resp($result, $format);
|
12 |
-
}
|
13 |
-
|
14 |
-
public static function retrieve($params=array(), $format='json')
|
15 |
-
{
|
16 |
-
$request = new Twocheckout_Api_Requester();
|
17 |
-
if(array_key_exists("option_id",$params)) {
|
18 |
-
$urlSuffix = 'products/detail_option';
|
19 |
-
} else {
|
20 |
-
$urlSuffix = 'products/list_options';
|
21 |
-
}
|
22 |
-
$result = $request->do_call($urlSuffix, $params);
|
23 |
-
return Twocheckout_Util::return_resp($result, $format);
|
24 |
-
}
|
25 |
-
|
26 |
-
public static function update($params=array(), $format='json')
|
27 |
-
{
|
28 |
-
$request = new Twocheckout_Api_Requester();
|
29 |
-
$urlSuffix = 'products/update_option';
|
30 |
-
$result = $request->do_call($urlSuffix, $params);
|
31 |
-
return Twocheckout_Util::return_resp($result, $format);
|
32 |
-
}
|
33 |
-
|
34 |
-
public static function delete($params=array(), $format='json')
|
35 |
-
{
|
36 |
-
$request = new Twocheckout_Api_Requester();
|
37 |
-
$urlSuffix = 'products/delete_option';
|
38 |
-
$result = $request->do_call($urlSuffix, $params);
|
39 |
-
return Twocheckout_Util::return_resp($result, $format);
|
40 |
-
}
|
41 |
-
|
42 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutPayment.php
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Payment extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function retrieve($format='json')
|
7 |
-
{
|
8 |
-
$request = new Twocheckout_Api_Requester();
|
9 |
-
$urlSuffix = 'acct/list_payments';
|
10 |
-
$result = $request->do_call($urlSuffix);
|
11 |
-
$response = Twocheckout_Util::return_resp($result, $format);
|
12 |
-
return $response;
|
13 |
-
}
|
14 |
-
|
15 |
-
public static function pending($format='json')
|
16 |
-
{
|
17 |
-
$request = new Twocheckout_Api_Requester();
|
18 |
-
$urlSuffix = 'acct/detail_pending_payment';
|
19 |
-
$result = $request->do_call($urlSuffix);
|
20 |
-
$response = Twocheckout_Util::return_resp($result, $format);
|
21 |
-
return $response;
|
22 |
-
}
|
23 |
-
|
24 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutProduct.php
DELETED
@@ -1,42 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Product extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function create($params=array(), $format='json')
|
7 |
-
{
|
8 |
-
$request = new Twocheckout_Api_Requester();
|
9 |
-
$urlSuffix = 'products/create_product';
|
10 |
-
$result = $request->do_call($urlSuffix, $params);
|
11 |
-
return Twocheckout_Util::return_resp($result, $format);
|
12 |
-
}
|
13 |
-
|
14 |
-
public static function retrieve($params=array(), $format='json')
|
15 |
-
{
|
16 |
-
$request = new Twocheckout_Api_Requester();
|
17 |
-
if(array_key_exists("product_id",$params)) {
|
18 |
-
$urlSuffix = 'products/detail_product';
|
19 |
-
} else {
|
20 |
-
$urlSuffix = 'products/list_products';
|
21 |
-
}
|
22 |
-
$result = $request->do_call($urlSuffix, $params);
|
23 |
-
return Twocheckout_Util::return_resp($result, $format);
|
24 |
-
}
|
25 |
-
|
26 |
-
public static function update($params=array(), $format='json')
|
27 |
-
{
|
28 |
-
$request = new Twocheckout_Api_Requester();
|
29 |
-
$urlSuffix = 'products/update_product';
|
30 |
-
$result = $request->do_call($urlSuffix, $params);
|
31 |
-
return Twocheckout_Util::return_resp($result, $format);
|
32 |
-
}
|
33 |
-
|
34 |
-
public static function delete($params=array(), $format='json')
|
35 |
-
{
|
36 |
-
$request = new Twocheckout_Api_Requester();
|
37 |
-
$urlSuffix = 'products/delete_product';
|
38 |
-
$result = $request->do_call($urlSuffix, $params);
|
39 |
-
return Twocheckout_Util::return_resp($result, $format);
|
40 |
-
}
|
41 |
-
|
42 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutSale.php
DELETED
@@ -1,104 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Sale extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function retrieve($params=array(), $format='json')
|
7 |
-
{
|
8 |
-
$request = new Twocheckout_Api_Requester();
|
9 |
-
if(array_key_exists("sale_id",$params) || array_key_exists("invoice_id",$params)) {
|
10 |
-
$urlSuffix = 'sales/detail_sale';
|
11 |
-
} else {
|
12 |
-
$urlSuffix = 'sales/list_sales';
|
13 |
-
}
|
14 |
-
$result = $request->do_call($urlSuffix, $params);
|
15 |
-
return Twocheckout_Util::return_resp($result, $format);
|
16 |
-
}
|
17 |
-
|
18 |
-
public static function refund($params=array(), $format='json') {
|
19 |
-
$request = new Twocheckout_Api_Requester();
|
20 |
-
if(array_key_exists("lineitem_id",$params)) {
|
21 |
-
$urlSuffix ='sales/refund_lineitem';
|
22 |
-
$result = $request->do_call($urlSuffix, $params);
|
23 |
-
} elseif(array_key_exists("invoice_id",$params) || array_key_exists("sale_id",$params)) {
|
24 |
-
$urlSuffix ='sales/refund_invoice';
|
25 |
-
$result = $request->do_call($urlSuffix, $params);
|
26 |
-
} else {
|
27 |
-
$result = Twocheckout_Message::message('Error', 'You must pass a sale_id, invoice_id or lineitem_id to use this method.');
|
28 |
-
}
|
29 |
-
return Twocheckout_Util::return_resp($result, $format);
|
30 |
-
}
|
31 |
-
|
32 |
-
public static function stop($params=array(), $format='json') {
|
33 |
-
$request = new Twocheckout_Api_Requester();
|
34 |
-
$urlSuffix ='sales/stop_lineitem_recurring';
|
35 |
-
if(array_key_exists("lineitem_id",$params)) {
|
36 |
-
$result = $request->do_call($urlSuffix, $params);
|
37 |
-
} elseif(array_key_exists("sale_id",$params)) {
|
38 |
-
$result = Twocheckout_Sale::retrieve($params, 'array');
|
39 |
-
$lineitemData = Twocheckout_Util::get_recurring_lineitems($result);
|
40 |
-
if (isset($lineitemData[0])) {
|
41 |
-
$i = 0;
|
42 |
-
$stoppedLineitems = array();
|
43 |
-
foreach( $lineitemData as $value )
|
44 |
-
{
|
45 |
-
$params = array('lineitem_id' => $value);
|
46 |
-
$result = $request->do_call($urlSuffix, $params);
|
47 |
-
$result = json_decode($result, true);
|
48 |
-
if ($result['response_code'] == "OK") {
|
49 |
-
$stoppedLineitems[$i] = $value;
|
50 |
-
}
|
51 |
-
$i++;
|
52 |
-
}
|
53 |
-
$result = Twocheckout_Message::message('OK', $stoppedLineitems);
|
54 |
-
} else {
|
55 |
-
throw new Twocheckout_Error("No recurring lineitems to stop.");
|
56 |
-
}
|
57 |
-
} else {
|
58 |
-
throw new Twocheckout_Error('You must pass a sale_id or lineitem_id to use this method.');
|
59 |
-
}
|
60 |
-
return Twocheckout_Util::return_resp($result, $format);
|
61 |
-
}
|
62 |
-
|
63 |
-
public static function active($params=array(), $format='json') {
|
64 |
-
if(array_key_exists("sale_id",$params)) {
|
65 |
-
$result = Twocheckout_Sale::retrieve($params);
|
66 |
-
$array = Twocheckout_Util::return_resp($result, 'array');
|
67 |
-
$lineitemData = Twocheckout_Util::get_recurring_lineitems($array);
|
68 |
-
if (isset($lineitemData[0])) {
|
69 |
-
$result = Twocheckout_Message::message('OK', $lineitemData);
|
70 |
-
if ($format == 'array') {
|
71 |
-
return Twocheckout_Util::return_resp($result, $format);
|
72 |
-
} else {
|
73 |
-
return Twocheckout_Util::return_resp($result, 'force_json');
|
74 |
-
}
|
75 |
-
} else {
|
76 |
-
throw new Twocheckout_Error("No active recurring lineitems.");
|
77 |
-
}
|
78 |
-
} else {
|
79 |
-
throw new Twocheckout_Error("You must pass a sale_id to use this method.");
|
80 |
-
}
|
81 |
-
}
|
82 |
-
|
83 |
-
public static function comment($params=array(), $format='json') {
|
84 |
-
$request = new Twocheckout_Api_Requester();
|
85 |
-
$urlSuffix ='sales/create_comment';
|
86 |
-
$result = $request->do_call($urlSuffix, $params);
|
87 |
-
return Twocheckout_Util::return_resp($result, $format);
|
88 |
-
}
|
89 |
-
|
90 |
-
public static function ship($params=array(), $format='json') {
|
91 |
-
$request = new Twocheckout_Api_Requester();
|
92 |
-
$urlSuffix ='sales/mark_shipped';
|
93 |
-
$result = $request->do_call($urlSuffix, $params);
|
94 |
-
return Twocheckout_Util::return_resp($result, $format);
|
95 |
-
}
|
96 |
-
|
97 |
-
public static function reauth($params=array(), $format='json') {
|
98 |
-
$request = new Twocheckout_Api_Requester();
|
99 |
-
$urlSuffix ='sales/reauth';
|
100 |
-
$result = $request->do_call($urlSuffix, $params);
|
101 |
-
return Twocheckout_Util::return_resp($result, $format);
|
102 |
-
}
|
103 |
-
|
104 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutUtil.php
DELETED
@@ -1,72 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Util
|
4 |
-
{
|
5 |
-
|
6 |
-
static function return_resp($contents, $format) {
|
7 |
-
switch ($format) {
|
8 |
-
case "array":
|
9 |
-
$arrayObject = self::objectToArray($contents);
|
10 |
-
self::checkError($arrayObject);
|
11 |
-
return $arrayObject;
|
12 |
-
break;
|
13 |
-
case "force_json":
|
14 |
-
$arrayObject = self::objectToJson($contents);
|
15 |
-
return $arrayObject;
|
16 |
-
break;
|
17 |
-
default:
|
18 |
-
$arrayObject = self::objectToArray($contents);
|
19 |
-
self::checkError($arrayObject);
|
20 |
-
$jsonData = json_encode($contents);
|
21 |
-
return json_decode($jsonData);
|
22 |
-
}
|
23 |
-
}
|
24 |
-
|
25 |
-
public static function objectToArray($object)
|
26 |
-
{
|
27 |
-
$object = json_decode($object, true);
|
28 |
-
$array=array();
|
29 |
-
foreach($object as $member=>$data)
|
30 |
-
{
|
31 |
-
$array[$member]=$data;
|
32 |
-
}
|
33 |
-
return $array;
|
34 |
-
}
|
35 |
-
|
36 |
-
public static function objectToJson($object)
|
37 |
-
{
|
38 |
-
return json_encode($object);
|
39 |
-
}
|
40 |
-
|
41 |
-
public static function get_recurring_lineitems($saleDetail) {
|
42 |
-
$i = 0;
|
43 |
-
$invoiceData = array();
|
44 |
-
|
45 |
-
while (isset($saleDetail['sale']['invoices'][$i])) {
|
46 |
-
$invoiceData[$i] = $saleDetail['sale']['invoices'][$i];
|
47 |
-
$i++;
|
48 |
-
}
|
49 |
-
|
50 |
-
$invoice = max($invoiceData);
|
51 |
-
$i = 0;
|
52 |
-
$lineitemData = array();
|
53 |
-
|
54 |
-
while (isset($invoice['lineitems'][$i])) {
|
55 |
-
if ($invoice['lineitems'][$i]['billing']['recurring_status'] == "active") {
|
56 |
-
$lineitemData[$i] = $invoice['lineitems'][$i]['billing']['lineitem_id'];
|
57 |
-
}
|
58 |
-
$i++;
|
59 |
-
};
|
60 |
-
|
61 |
-
return $lineitemData;
|
62 |
-
|
63 |
-
}
|
64 |
-
|
65 |
-
public static function checkError($contents)
|
66 |
-
{
|
67 |
-
if (isset($contents['errors'])) {
|
68 |
-
throw new Twocheckout_Error($contents['errors'][0]['message']);
|
69 |
-
}
|
70 |
-
}
|
71 |
-
|
72 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Charge extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function form($params, $type='Checkout')
|
7 |
-
{
|
8 |
-
echo '<form id="2checkout" action="https://www.2checkout.com/checkout/purchase" method="post">';
|
9 |
-
|
10 |
-
foreach ($params as $key => $value)
|
11 |
-
{
|
12 |
-
echo '<input type="hidden" name="'.$key.'" value="'.$value.'"/>';
|
13 |
-
}
|
14 |
-
if ($type == 'auto') {
|
15 |
-
echo '<input type="submit" value="Click here if you are not redirected automatically" /></form>';
|
16 |
-
echo '<script type="text/javascript">document.getElementById("2checkout").submit();</script>';
|
17 |
-
} else {
|
18 |
-
echo '<input type="submit" value="'.$type.'" />';
|
19 |
-
echo '</form>';
|
20 |
-
}
|
21 |
-
}
|
22 |
-
|
23 |
-
public static function direct($params, $type='Checkout')
|
24 |
-
{
|
25 |
-
echo '<form id="2checkout" action="https://www.2checkout.com/checkout/purchase" method="post">';
|
26 |
-
|
27 |
-
foreach ($params as $key => $value)
|
28 |
-
{
|
29 |
-
echo '<input type="hidden" name="'.$key.'" value="'.$value.'"/>';
|
30 |
-
}
|
31 |
-
|
32 |
-
if ($type == 'auto') {
|
33 |
-
echo '<input type="submit" value="Click here if the payment form does not open automatically." /></form>';
|
34 |
-
echo '<script type="text/javascript">
|
35 |
-
function submitForm() {
|
36 |
-
document.getElementById("tco_lightbox").style.display = "block";
|
37 |
-
document.getElementById("2checkout").submit();
|
38 |
-
}
|
39 |
-
setTimeout("submitForm()", 2000);
|
40 |
-
</script>';
|
41 |
-
} else {
|
42 |
-
echo '<input type="submit" value="'.$type.'" />';
|
43 |
-
echo '</form>';
|
44 |
-
}
|
45 |
-
|
46 |
-
echo '<script src="https://www.2checkout.com/static/checkout/javascript/direct.min.js"></script>';
|
47 |
-
}
|
48 |
-
|
49 |
-
public static function link($params)
|
50 |
-
{
|
51 |
-
$url = 'https://www.2checkout.com/checkout/purchase?'.http_build_query($params, '', '&');
|
52 |
-
return $url;
|
53 |
-
}
|
54 |
-
|
55 |
-
public static function redirect($params)
|
56 |
-
{
|
57 |
-
$url = 'https://www.2checkout.com/checkout/purchase?'.http_build_query($params, '', '&');
|
58 |
-
header("Location: $url");
|
59 |
-
}
|
60 |
-
|
61 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/TwocheckoutMessage.php
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Message
|
4 |
-
{
|
5 |
-
public static function message($code, $message)
|
6 |
-
{
|
7 |
-
$response = array();
|
8 |
-
$response['response_code'] = $code;
|
9 |
-
$response['response_message'] = $message;
|
10 |
-
$response = json_encode($response);
|
11 |
-
return $response;
|
12 |
-
}
|
13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/TwocheckoutNotification.php
DELETED
@@ -1,20 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Notification extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function check($insMessage, $secretWord, $format='json')
|
7 |
-
{
|
8 |
-
$hashSid = $insMessage['vendor_id'];
|
9 |
-
$hashOrder = $insMessage['sale_id'];
|
10 |
-
$hashInvoice = $insMessage['invoice_id'];
|
11 |
-
$StringToHash = strtoupper(md5($hashOrder . $hashSid . $hashInvoice . $secretWord));
|
12 |
-
if ($StringToHash != $insMessage['md5_hash']) {
|
13 |
-
$result = Twocheckout_Message::message('Fail', 'Hash Mismatch');
|
14 |
-
} else {
|
15 |
-
$result = Twocheckout_Message::message('Success', 'Hash Matched');
|
16 |
-
}
|
17 |
-
return Twocheckout_Util::return_resp($result, $format);
|
18 |
-
}
|
19 |
-
|
20 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Twocheckout/Twocheckout/TwocheckoutReturn.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Twocheckout_Return extends Twocheckout
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function check($params=array(), $secretWord, $format='json')
|
7 |
-
{
|
8 |
-
$hashSecretWord = $secretWord;
|
9 |
-
$hashSid = $params['sid'];
|
10 |
-
$hashTotal = $params['total'];
|
11 |
-
$hashOrder = $params['order_number'];
|
12 |
-
$StringToHash = strtoupper(md5($hashSecretWord . $hashSid . $hashOrder . $hashTotal));
|
13 |
-
if ($StringToHash != $params['key']) {
|
14 |
-
$result = Twocheckout_Message::message('Fail', 'Hash Mismatch');
|
15 |
-
} else {
|
16 |
-
$result = Twocheckout_Message::message('Success', 'Hash Matched');
|
17 |
-
}
|
18 |
-
return Twocheckout_Util::return_resp($result, $format);
|
19 |
-
}
|
20 |
-
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/localization.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
function pmpro_load_textdomain()
|
3 |
-
{
|
4 |
-
//get the locale
|
5 |
-
$locale = apply_filters("plugin_locale", get_locale(), "pmpro");
|
6 |
-
$mofile = "pmpro-" . $locale . ".mo";
|
7 |
-
|
8 |
-
//paths to local (plugin) and global (WP) language files
|
9 |
-
$mofile_local = dirname(__FILE__)."/../languages/" . $mofile;
|
10 |
-
$mofile_global = WP_LANG_DIR . '/pmpro/' . $mofile;
|
11 |
-
|
12 |
-
//load global first
|
13 |
-
load_textdomain("pmpro", $mofile_global);
|
14 |
-
|
15 |
-
//load local second
|
16 |
-
load_textdomain("pmpro", $mofile_local);
|
17 |
-
}
|
18 |
-
add_action("init", "pmpro_load_textdomain", 1);
|
19 |
-
|
20 |
-
function pmpro_translate_billing_period($period, $number = 1)
|
21 |
-
{
|
22 |
-
if($period == "Day")
|
23 |
-
return _n("Day", "Days", $number, "pmpro");
|
24 |
-
elseif($period == "Week")
|
25 |
-
return _n("Week", "Weeks", $number, "pmpro");
|
26 |
-
elseif($period == "Month")
|
27 |
-
return _n("Month", "Months", $number, "pmpro");
|
28 |
-
elseif($period == "Year")
|
29 |
-
return _n("Year", "Years", $number, "pmpro");
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/login.php
DELETED
@@ -1,158 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
//redirect control
|
3 |
-
function pmpro_login_redirect($redirect_to, $request, $user)
|
4 |
-
{
|
5 |
-
global $wpdb;
|
6 |
-
|
7 |
-
//is a user logging in?
|
8 |
-
if(!empty($user->ID))
|
9 |
-
{
|
10 |
-
//logging in, let's figure out where to send them
|
11 |
-
if(pmpro_isAdmin($user->ID))
|
12 |
-
{
|
13 |
-
//admins go to dashboard
|
14 |
-
$redirect_to = get_bloginfo("url") . "/wp-admin/";
|
15 |
-
}
|
16 |
-
elseif(strpos($redirect_to, "checkout") !== false)
|
17 |
-
{
|
18 |
-
//if the redirect url includes the word checkout, leave it alone
|
19 |
-
}
|
20 |
-
elseif($wpdb->get_var("SELECT membership_id FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND user_id = '" . $user->ID . "' LIMIT 1"))
|
21 |
-
{
|
22 |
-
//if logged in and a member, send to wherever they were going
|
23 |
-
}
|
24 |
-
else
|
25 |
-
{
|
26 |
-
//not a member, send to subscription page
|
27 |
-
$redirect_to = pmpro_url("levels");
|
28 |
-
}
|
29 |
-
}
|
30 |
-
else
|
31 |
-
{
|
32 |
-
//not logging in (login form) so return what was given
|
33 |
-
}
|
34 |
-
|
35 |
-
//let's strip the https if force_ssl_login is set, but force_ssl_admin is not
|
36 |
-
if(force_ssl_login() && !force_ssl_admin())
|
37 |
-
$redirect_to = str_replace("https:", "http:", $redirect_to);
|
38 |
-
|
39 |
-
return apply_filters("pmpro_login_redirect_url", $redirect_to, $request, $user);
|
40 |
-
}
|
41 |
-
add_filter('login_redirect','pmpro_login_redirect', 10, 3);
|
42 |
-
|
43 |
-
//Where is the sign page? Levels page or default multisite page.
|
44 |
-
function pmpro_wp_signup_location($location)
|
45 |
-
{
|
46 |
-
if(is_multisite() && pmpro_getOption("redirecttosubscription"))
|
47 |
-
{
|
48 |
-
return pmpro_url("levels");
|
49 |
-
}
|
50 |
-
else
|
51 |
-
return $location;
|
52 |
-
}
|
53 |
-
add_filter('wp_signup_location', 'pmpro_wp_signup_location');
|
54 |
-
|
55 |
-
//redirect from default login pages to PMPro
|
56 |
-
function pmpro_login_head()
|
57 |
-
{
|
58 |
-
$login_redirect = apply_filters("pmpro_login_redirect", true);
|
59 |
-
|
60 |
-
if((pmpro_is_login_page() || is_page("login") ||
|
61 |
-
class_exists("Theme_My_Login") && defined('Theme_My_Login::version') && version_compare(Theme_My_Login::version, "6.3") >= 0 && (Theme_My_Login::is_tml_page("register") || Theme_My_Login::is_tml_page("login"))
|
62 |
-
)
|
63 |
-
&& $login_redirect
|
64 |
-
)
|
65 |
-
{
|
66 |
-
//redirect registration page to levels page
|
67 |
-
if( isset($_REQUEST['action']) && $_REQUEST['action'] == "register" ||
|
68 |
-
isset($_REQUEST['registration']) && $_REQUEST['registration'] == "disabled" ||
|
69 |
-
!is_admin() && class_exists("Theme_My_Login") && defined('Theme_My_Login::version') && version_compare(Theme_My_Login::version, "6.3") >= 0 && Theme_My_Login::is_tml_page("register")
|
70 |
-
)
|
71 |
-
{
|
72 |
-
//redirect to levels page unless filter is set.
|
73 |
-
$link = apply_filters("pmpro_register_redirect", pmpro_url("levels"));
|
74 |
-
if(!empty($link))
|
75 |
-
{
|
76 |
-
wp_redirect($link);
|
77 |
-
exit;
|
78 |
-
}
|
79 |
-
else
|
80 |
-
return; //don't redirect if pmpro_register_redirect filter returns false or a blank URL
|
81 |
-
}
|
82 |
-
|
83 |
-
//if theme my login is installed, redirect all logins to the login page
|
84 |
-
if(pmpro_is_plugin_active("theme-my-login/theme-my-login.php"))
|
85 |
-
{
|
86 |
-
//check for the login page id and redirect there if we're not there already
|
87 |
-
global $post;
|
88 |
-
|
89 |
-
if(!empty($GLOBALS['theme_my_login']) && is_array($GLOBALS['theme_my_login']->options))
|
90 |
-
{
|
91 |
-
//an older version of TML stores it this way
|
92 |
-
if($GLOBALS['theme_my_login']->options['page_id'] !== $post->ID)
|
93 |
-
{
|
94 |
-
//redirect to the real login page
|
95 |
-
$link = get_permalink($GLOBALS['theme_my_login']->options['page_id']);
|
96 |
-
if($_SERVER['QUERY_STRING'])
|
97 |
-
$link .= "?" . $_SERVER['QUERY_STRING'];
|
98 |
-
wp_redirect($link);
|
99 |
-
exit;
|
100 |
-
}
|
101 |
-
}
|
102 |
-
elseif(!empty($GLOBALS['theme_my_login']->options))
|
103 |
-
{
|
104 |
-
//another older version of TML stores it this way
|
105 |
-
if($GLOBALS['theme_my_login']->options->options['page_id'] !== $post->ID)
|
106 |
-
{
|
107 |
-
//redirect to the real login page
|
108 |
-
$link = get_permalink($GLOBALS['theme_my_login']->options->options['page_id']);
|
109 |
-
if($_SERVER['QUERY_STRING'])
|
110 |
-
$link .= "?" . $_SERVER['QUERY_STRING'];
|
111 |
-
wp_redirect($link);
|
112 |
-
exit;
|
113 |
-
}
|
114 |
-
}
|
115 |
-
elseif(class_exists("Theme_My_Login") && defined('Theme_My_Login::version') && version_compare(Theme_My_Login::version, "6.3") >= 0)
|
116 |
-
{
|
117 |
-
//TML > 6.3
|
118 |
-
$link = Theme_My_Login::get_page_link("login");
|
119 |
-
if(!empty($link))
|
120 |
-
{
|
121 |
-
//redirect if !is_page(), i.e. we're on wp-login.php
|
122 |
-
if(!Theme_My_Login::is_tml_page())
|
123 |
-
{
|
124 |
-
wp_redirect($link);
|
125 |
-
exit;
|
126 |
-
}
|
127 |
-
}
|
128 |
-
}
|
129 |
-
|
130 |
-
//make sure users are only getting to the profile when logged in
|
131 |
-
global $current_user;
|
132 |
-
if(!empty($_REQUEST['action']) && $_REQUEST['action'] == "profile" && !$current_user->ID)
|
133 |
-
{
|
134 |
-
$link = get_permalink($GLOBALS['theme_my_login']->options->options['page_id']);
|
135 |
-
wp_redirect($link);
|
136 |
-
exit;
|
137 |
-
}
|
138 |
-
}
|
139 |
-
}
|
140 |
-
}
|
141 |
-
add_action('wp', 'pmpro_login_head');
|
142 |
-
add_action('login_init', 'pmpro_login_head');
|
143 |
-
|
144 |
-
/*
|
145 |
-
If a redirect_to value is passed into /login/ and you are logged in already, just redirect there
|
146 |
-
|
147 |
-
@since 1.7.14
|
148 |
-
*/
|
149 |
-
function pmpro_redirect_to_logged_in()
|
150 |
-
{
|
151 |
-
if((pmpro_is_login_page() || is_page("login")) && !empty($_REQUEST['redirect_to']) && is_user_logged_in())
|
152 |
-
{
|
153 |
-
wp_redirect($_REQUEST['redirect_to']);
|
154 |
-
exit;
|
155 |
-
}
|
156 |
-
}
|
157 |
-
add_action("template_redirect", "pmpro_redirect_to_logged_in", 5);
|
158 |
-
add_action("login_init", "pmpro_redirect_to_logged_in", 5);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/metaboxes.php
DELETED
@@ -1,108 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Require Membership Meta Box
|
4 |
-
*/
|
5 |
-
function pmpro_page_meta()
|
6 |
-
{
|
7 |
-
global $membership_levels, $post, $wpdb;
|
8 |
-
$page_levels = $wpdb->get_col("SELECT membership_id FROM {$wpdb->pmpro_memberships_pages} WHERE page_id = '{$post->ID}'");
|
9 |
-
?>
|
10 |
-
<ul id="membershipschecklist" class="list:category categorychecklist form-no-clear">
|
11 |
-
<input type="hidden" name="pmpro_noncename" id="pmpro_noncename" value="<?php echo wp_create_nonce( plugin_basename(__FILE__) )?>" />
|
12 |
-
<?php
|
13 |
-
$in_member_cat = false;
|
14 |
-
foreach($membership_levels as $level)
|
15 |
-
{
|
16 |
-
?>
|
17 |
-
<li id="membership-level-<?php echo $level->id?>">
|
18 |
-
<label class="selectit">
|
19 |
-
<input id="in-membership-level-<?php echo $level->id?>" type="checkbox" <?php if(in_array($level->id, $page_levels)) { ?>checked="checked"<?php } ?> name="page_levels[]" value="<?php echo $level->id?>" />
|
20 |
-
<?php
|
21 |
-
echo $level->name;
|
22 |
-
//Check which categories are protected for this level
|
23 |
-
$protectedcategories = $wpdb->get_col("SELECT category_id FROM $wpdb->pmpro_memberships_categories WHERE membership_id = $level->id");
|
24 |
-
//See if this post is in any of the level's protected categories
|
25 |
-
if(in_category($protectedcategories, $post->id))
|
26 |
-
{
|
27 |
-
$in_member_cat = true;
|
28 |
-
echo ' *';
|
29 |
-
}
|
30 |
-
?>
|
31 |
-
</label>
|
32 |
-
</li>
|
33 |
-
<?php
|
34 |
-
}
|
35 |
-
?>
|
36 |
-
</ul>
|
37 |
-
<?php if('post' == get_post_type($post) && $in_member_cat) { ?>
|
38 |
-
<p class="pmpro_meta_notice">* <?php _e("This post is already protected for this level because it is within a category that requires membership.", "pmpro");?></p>
|
39 |
-
<?php } ?>
|
40 |
-
<?php
|
41 |
-
}
|
42 |
-
|
43 |
-
//saves meta options
|
44 |
-
function pmpro_page_save($post_id)
|
45 |
-
{
|
46 |
-
global $wpdb;
|
47 |
-
|
48 |
-
if(empty($post_id))
|
49 |
-
return false;
|
50 |
-
|
51 |
-
if (!empty($_POST['pmpro_noncename']) && !wp_verify_nonce( $_POST['pmpro_noncename'], plugin_basename(__FILE__) )) {
|
52 |
-
return $post_id;
|
53 |
-
}
|
54 |
-
|
55 |
-
// verify if this is an auto save routine. If it is our form has not been submitted, so we dont want
|
56 |
-
// to do anything
|
57 |
-
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
|
58 |
-
return $post_id;
|
59 |
-
|
60 |
-
// Check permissions
|
61 |
-
if(!empty($_POST['post_type']) && 'page' == $_POST['post_type'] )
|
62 |
-
{
|
63 |
-
if ( !current_user_can( 'edit_page', $post_id ) )
|
64 |
-
return $post_id;
|
65 |
-
}
|
66 |
-
else
|
67 |
-
{
|
68 |
-
if ( !current_user_can( 'edit_post', $post_id ) )
|
69 |
-
return $post_id;
|
70 |
-
}
|
71 |
-
|
72 |
-
// OK, we're authenticated: we need to find and save the data
|
73 |
-
if(isset($_POST['pmpro_noncename']))
|
74 |
-
{
|
75 |
-
if(!empty($_POST['page_levels']))
|
76 |
-
$mydata = $_POST['page_levels'];
|
77 |
-
else
|
78 |
-
$mydata = NULL;
|
79 |
-
|
80 |
-
//remove all memberships for this page
|
81 |
-
$wpdb->query("DELETE FROM {$wpdb->pmpro_memberships_pages} WHERE page_id = '$post_id'");
|
82 |
-
|
83 |
-
//add new memberships for this page
|
84 |
-
if(is_array($mydata))
|
85 |
-
{
|
86 |
-
foreach($mydata as $level)
|
87 |
-
$wpdb->query("INSERT INTO {$wpdb->pmpro_memberships_pages} (membership_id, page_id) VALUES('" . intval($level) . "', '" . intval($post_id) . "')");
|
88 |
-
}
|
89 |
-
|
90 |
-
return $mydata;
|
91 |
-
}
|
92 |
-
else
|
93 |
-
return $post_id;
|
94 |
-
}
|
95 |
-
|
96 |
-
//wrapper to add meta boxes
|
97 |
-
function pmpro_page_meta_wrapper()
|
98 |
-
{
|
99 |
-
add_meta_box('pmpro_page_meta', __('Require Membership', 'pmpro'), 'pmpro_page_meta', 'page', 'side');
|
100 |
-
add_meta_box('pmpro_page_meta', __('Require Membership', 'pmpro'), 'pmpro_page_meta', 'post', 'side');
|
101 |
-
}
|
102 |
-
if (is_admin())
|
103 |
-
{
|
104 |
-
add_action('admin_menu', 'pmpro_page_meta_wrapper');
|
105 |
-
add_action('save_post', 'pmpro_page_save');
|
106 |
-
|
107 |
-
require_once(PMPRO_DIR . "/adminpages/dashboard.php");
|
108 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/notifications.php
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
This code calls the server at www.paidmembershipspro.com to see if there are any notifications to display to the user. Notifications are shown on the PMPro settings pages in the dashboard.
|
4 |
-
*/
|
5 |
-
function pmpro_notifications()
|
6 |
-
{
|
7 |
-
if(current_user_can("manage_options"))
|
8 |
-
{
|
9 |
-
delete_transient("pmpro_notification_" . PMPRO_VERSION);
|
10 |
-
|
11 |
-
$pmpro_notification = get_transient("pmpro_notification_" . PMPRO_VERSION);
|
12 |
-
if(empty($pmpro_notification))
|
13 |
-
{
|
14 |
-
if(is_ssl())
|
15 |
-
{
|
16 |
-
$remote_notification = wp_remote_get("https://www.paidmembershipspro.com/notifications/?v=" . PMPRO_VERSION);
|
17 |
-
}
|
18 |
-
else
|
19 |
-
{
|
20 |
-
$remote_notification = wp_remote_get("http://www.paidmembershipspro.com/notifications/?v=" . PMPRO_VERSION);
|
21 |
-
}
|
22 |
-
|
23 |
-
$pmpro_notification = wp_remote_retrieve_body($remote_notification);
|
24 |
-
|
25 |
-
set_transient("pmpro_notification_" . PMPRO_VERSION, $pmpro_notification, 86400);
|
26 |
-
}
|
27 |
-
|
28 |
-
if($pmpro_notification && $pmpro_notification != "NULL")
|
29 |
-
{
|
30 |
-
?>
|
31 |
-
<div id="pmpro_notifications">
|
32 |
-
<?php echo $pmpro_notification; ?>
|
33 |
-
</div>
|
34 |
-
<?php
|
35 |
-
}
|
36 |
-
}
|
37 |
-
|
38 |
-
//exit so we just show this content
|
39 |
-
exit;
|
40 |
-
}
|
41 |
-
add_action('wp_ajax_pmpro_notifications', 'pmpro_notifications');
|
42 |
-
|
43 |
-
/*
|
44 |
-
Show Powered by Paid Memberships Pro comment (only visible in source) in the footer.
|
45 |
-
*/
|
46 |
-
function pmpro_link()
|
47 |
-
{
|
48 |
-
?>
|
49 |
-
Memberships powered by Paid Memberships Pro v<?php echo PMPRO_VERSION?>.
|
50 |
-
<?php
|
51 |
-
}
|
52 |
-
function pmpro_footer_link()
|
53 |
-
{
|
54 |
-
if(!pmpro_getOption("hide_footer_link"))
|
55 |
-
{
|
56 |
-
?>
|
57 |
-
<!-- <?php echo pmpro_link()?> -->
|
58 |
-
<?php
|
59 |
-
}
|
60 |
-
}
|
61 |
-
add_action("wp_footer", "pmpro_footer_link");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/profile.php
DELETED
@@ -1,224 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
These functions add the "membership level" field to the edit user/profile page
|
4 |
-
*/
|
5 |
-
//add the fields
|
6 |
-
function pmpro_membership_level_profile_fields($user)
|
7 |
-
{
|
8 |
-
global $current_user, $pmpro_currency_symbol;
|
9 |
-
|
10 |
-
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
11 |
-
if(!current_user_can($membership_level_capability))
|
12 |
-
return false;
|
13 |
-
|
14 |
-
global $wpdb;
|
15 |
-
/*$user->membership_level = $wpdb->get_row("SELECT l.id AS ID, l.name AS name
|
16 |
-
FROM {$wpdb->pmpro_membership_levels} AS l
|
17 |
-
JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
|
18 |
-
WHERE mu.user_id = " . $user->ID . "
|
19 |
-
LIMIT 1");*/
|
20 |
-
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
21 |
-
|
22 |
-
$levels = $wpdb->get_results( "SELECT * FROM {$wpdb->pmpro_membership_levels}", OBJECT );
|
23 |
-
|
24 |
-
if(!$levels)
|
25 |
-
return "";
|
26 |
-
?>
|
27 |
-
<h3><?php _e("Membership Level", "pmpro"); ?></h3>
|
28 |
-
<table class="form-table">
|
29 |
-
<?php
|
30 |
-
$show_membership_level = true;
|
31 |
-
$show_membership_level = apply_filters("pmpro_profile_show_membership_level", $show_membership_level, $user);
|
32 |
-
if($show_membership_level)
|
33 |
-
{
|
34 |
-
?>
|
35 |
-
<tr>
|
36 |
-
<th><label for="membership_level"><?php _e("Current Level", "pmpro"); ?></label></th>
|
37 |
-
<td>
|
38 |
-
<select name="membership_level" onchange="pmpro_mchange_warning();">
|
39 |
-
<option value="" <?php if(empty($user->membership_level->ID)) { ?>selected="selected"<?php } ?>>-- <?php _e("None", "pmpro");?> --</option>
|
40 |
-
<?php
|
41 |
-
foreach($levels as $level)
|
42 |
-
{
|
43 |
-
$current_level = ($user->membership_level->ID == $level->id);
|
44 |
-
?>
|
45 |
-
<option value="<?php echo $level->id?>" <?php if($current_level) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
46 |
-
<?php
|
47 |
-
}
|
48 |
-
?>
|
49 |
-
</select>
|
50 |
-
<script>
|
51 |
-
var pmpro_mchange_once = 0;
|
52 |
-
function pmpro_mchange_warning()
|
53 |
-
{
|
54 |
-
if(pmpro_mchange_once == 0)
|
55 |
-
{
|
56 |
-
alert('Warning: The existing membership will be cancelled, and the new membership will be free.');
|
57 |
-
pmpro_mchange_once = 1;
|
58 |
-
}
|
59 |
-
}
|
60 |
-
</script>
|
61 |
-
<?php
|
62 |
-
$membership_values = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND user_id = '" . $user->ID . "' LIMIT 1");
|
63 |
-
if(!empty($membership_values->billing_amount) || !empty($membership_values->trial_amount))
|
64 |
-
{
|
65 |
-
?>
|
66 |
-
<?php if($membership_values->billing_amount > 0) { ?>
|
67 |
-
at <?php echo $pmpro_currency_symbol;?><?php echo $membership_values->billing_amount?>
|
68 |
-
<?php if($membership_values->cycle_number > 1) { ?>
|
69 |
-
per <?php echo $membership_values->cycle_number?> <?php echo sornot($membership_values->cycle_period,$membership_values->cycle_number)?>
|
70 |
-
<?php } elseif($membership_values->cycle_number == 1) { ?>
|
71 |
-
per <?php echo $membership_values->cycle_period?>
|
72 |
-
<?php } ?>
|
73 |
-
<?php } ?>
|
74 |
-
|
75 |
-
<?php if($membership_values->billing_limit) { ?> for <?php echo $membership_values->billing_limit.' '.sornot($membership_values->cycle_period,$membership_values->billing_limit)?><?php } ?>.
|
76 |
-
|
77 |
-
<?php if($membership_values->trial_limit) { ?>
|
78 |
-
The first <?php echo $membership_values->trial_limit?> <?php echo sornot("payments",$membership_values->trial_limit)?> will cost <?php echo $pmpro_currency_symbol;?><?php echo $membership_values->trial_amount?>.
|
79 |
-
<?php } ?>
|
80 |
-
<?php
|
81 |
-
}
|
82 |
-
else
|
83 |
-
{
|
84 |
-
_e("User is not paying.", "pmpro");
|
85 |
-
}
|
86 |
-
?>
|
87 |
-
</td>
|
88 |
-
</tr>
|
89 |
-
<?php
|
90 |
-
}
|
91 |
-
|
92 |
-
$show_expiration = true;
|
93 |
-
$show_expiration = apply_filters("pmpro_profile_show_expiration", $show_expiration, $user);
|
94 |
-
if($show_expiration)
|
95 |
-
{
|
96 |
-
//is there an end date?
|
97 |
-
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
98 |
-
$end_date = !empty($user->membership_level->enddate);
|
99 |
-
|
100 |
-
//some vars for the dates
|
101 |
-
$current_day = date("j");
|
102 |
-
if($end_date)
|
103 |
-
$selected_expires_day = date("j", $user->membership_level->enddate);
|
104 |
-
else
|
105 |
-
$selected_expires_day = $current_day;
|
106 |
-
|
107 |
-
$current_month = date("M");
|
108 |
-
if($end_date)
|
109 |
-
$selected_expires_month = date("m", $user->membership_level->enddate);
|
110 |
-
else
|
111 |
-
$selected_expires_month = date("m");
|
112 |
-
|
113 |
-
$current_year = date("Y");
|
114 |
-
if($end_date)
|
115 |
-
$selected_expires_year = date("Y", $user->membership_level->enddate);
|
116 |
-
else
|
117 |
-
$selected_expires_year = (int)$current_year + 1;
|
118 |
-
?>
|
119 |
-
<tr>
|
120 |
-
<th><label for="expiration"><?php _e("Expires", "pmpro"); ?></label></th>
|
121 |
-
<td>
|
122 |
-
<select id="expires" name="expires">
|
123 |
-
<option value="0" <?php if(!$end_date) { ?>selected="selected"<?php } ?>><?php _e("No", "pmpro");?></option>
|
124 |
-
<option value="1" <?php if($end_date) { ?>selected="selected"<?php } ?>><?php _e("Yes", "pmpro");?></option>
|
125 |
-
</select>
|
126 |
-
<span id="expires_date" <?php if(!$end_date) { ?>style="display: none;"<?php } ?>>
|
127 |
-
on
|
128 |
-
<select name="expires_month">
|
129 |
-
<?php
|
130 |
-
for($i = 1; $i < 13; $i++)
|
131 |
-
{
|
132 |
-
?>
|
133 |
-
<option value="<?php echo $i?>" <?php if($i == $selected_expires_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $current_year, current_time("timestamp")))?></option>
|
134 |
-
<?php
|
135 |
-
}
|
136 |
-
?>
|
137 |
-
</select>
|
138 |
-
<input name="expires_day" type="text" size="2" value="<?php echo $selected_expires_day?>" />
|
139 |
-
<input name="expires_year" type="text" size="4" value="<?php echo $selected_expires_year?>" />
|
140 |
-
</span>
|
141 |
-
<script>
|
142 |
-
jQuery('#expires').change(function() {
|
143 |
-
if(jQuery(this).val() == 1)
|
144 |
-
jQuery('#expires_date').show();
|
145 |
-
else
|
146 |
-
jQuery('#expires_date').hide();
|
147 |
-
});
|
148 |
-
</script>
|
149 |
-
</td>
|
150 |
-
</tr>
|
151 |
-
<?php
|
152 |
-
}
|
153 |
-
?>
|
154 |
-
</table>
|
155 |
-
<?php
|
156 |
-
}
|
157 |
-
|
158 |
-
//save the fields on update
|
159 |
-
function pmpro_membership_level_profile_fields_update()
|
160 |
-
{
|
161 |
-
//get the user id
|
162 |
-
global $wpdb, $current_user, $user_ID;
|
163 |
-
get_currentuserinfo();
|
164 |
-
|
165 |
-
if(!empty($_REQUEST['user_id']))
|
166 |
-
$user_ID = $_REQUEST['user_id'];
|
167 |
-
|
168 |
-
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
169 |
-
if(!current_user_can($membership_level_capability))
|
170 |
-
return false;
|
171 |
-
|
172 |
-
//level change
|
173 |
-
if(isset($_REQUEST['membership_level']))
|
174 |
-
{
|
175 |
-
if(pmpro_changeMembershipLevel($_REQUEST['membership_level'], $user_ID))
|
176 |
-
{
|
177 |
-
//it changed. send email
|
178 |
-
$level_changed = true;
|
179 |
-
}
|
180 |
-
}
|
181 |
-
|
182 |
-
//expiration change
|
183 |
-
if(!empty($_REQUEST['expires']))
|
184 |
-
{
|
185 |
-
//update the expiration date
|
186 |
-
$expiration_date = intval($_REQUEST['expires_year']) . "-" . str_pad(intval($_REQUEST['expires_month']), 2, "0", STR_PAD_LEFT) . "-" . str_pad(intval($_REQUEST['expires_day']), 2, "0", STR_PAD_LEFT);
|
187 |
-
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = '" . $expiration_date . "' WHERE status = 'active' AND membership_id = '" . intval($_REQUEST['membership_level']) . "' AND user_id = '" . $user_ID . "' LIMIT 1";
|
188 |
-
if($wpdb->query($sqlQuery))
|
189 |
-
$expiration_changed = true;
|
190 |
-
}
|
191 |
-
elseif(isset($_REQUEST['expires']))
|
192 |
-
{
|
193 |
-
//already blank? have to check for null or '0000-00-00 00:00:00' or '' here.
|
194 |
-
$sqlQuery = "SELECT user_id FROM $wpdb->pmpro_memberships_users WHERE (enddate IS NULL OR enddate = '' OR enddate = '0000-00-00 00:00:00') AND status = 'active' AND user_id = '" . $user_ID . "' LIMIT 1";
|
195 |
-
$blank = $wpdb->get_var($sqlQuery);
|
196 |
-
|
197 |
-
if(empty($blank))
|
198 |
-
{
|
199 |
-
//null out the expiration
|
200 |
-
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = NULL WHERE status = 'active' AND membership_id = '" . intval($_REQUEST['membership_level']) . "' AND user_id = '" . $user_ID . "' LIMIT 1";
|
201 |
-
if($wpdb->query($sqlQuery))
|
202 |
-
$expiration_changed = true;
|
203 |
-
}
|
204 |
-
}
|
205 |
-
|
206 |
-
//send email
|
207 |
-
if(!empty($level_changed) || !empty($expiration_changed))
|
208 |
-
{
|
209 |
-
//email to member
|
210 |
-
$pmproemail = new PMProEmail();
|
211 |
-
if(!empty($expiration_changed))
|
212 |
-
$pmproemail->expiration_changed = true;
|
213 |
-
$pmproemail->sendAdminChangeEmail(get_userdata($user_ID));
|
214 |
-
|
215 |
-
//email to admin
|
216 |
-
$pmproemail = new PMProEmail();
|
217 |
-
if(!empty($expiration_changed))
|
218 |
-
$pmproemail->expiration_changed = true;
|
219 |
-
$pmproemail->sendAdminChangeAdminEmail(get_userdata($user_ID));
|
220 |
-
}
|
221 |
-
}
|
222 |
-
add_action( 'show_user_profile', 'pmpro_membership_level_profile_fields' );
|
223 |
-
add_action( 'edit_user_profile', 'pmpro_membership_level_profile_fields' );
|
224 |
-
add_action( 'profile_update', 'pmpro_membership_level_profile_fields_update' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/recaptcha.php
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
function pmpro_init_recaptcha()
|
3 |
-
{
|
4 |
-
//don't load in admin
|
5 |
-
if(is_admin())
|
6 |
-
return;
|
7 |
-
|
8 |
-
//use recaptcha?
|
9 |
-
global $recaptcha;
|
10 |
-
$recaptcha = pmpro_getOption("recaptcha");
|
11 |
-
if($recaptcha)
|
12 |
-
{
|
13 |
-
global $recaptcha_publickey, $recaptcha_privatekey;
|
14 |
-
if(!function_exists("recaptcha_get_html"))
|
15 |
-
{
|
16 |
-
require_once(PMPRO_DIR . "/includes/lib/recaptchalib.php");
|
17 |
-
}
|
18 |
-
$recaptcha_publickey = pmpro_getOption("recaptcha_publickey");
|
19 |
-
$recaptcha_privatekey = pmpro_getOption("recaptcha_privatekey");
|
20 |
-
}
|
21 |
-
}
|
22 |
-
add_action("init", "pmpro_init_recaptcha", 20);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/reports.php
DELETED
@@ -1,27 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Load All Reports
|
4 |
-
*/
|
5 |
-
$pmpro_reports_dir = dirname(__FILE__) . "/../adminpages/reports/";
|
6 |
-
$cwd = getcwd();
|
7 |
-
chdir($pmpro_reports_dir);
|
8 |
-
foreach (glob("*.php") as $filename)
|
9 |
-
{
|
10 |
-
require_once($filename);
|
11 |
-
}
|
12 |
-
chdir($cwd);
|
13 |
-
|
14 |
-
/*
|
15 |
-
Load Reports From Theme
|
16 |
-
*/
|
17 |
-
$pmpro_reports_theme_dir = get_stylesheet_directory() . "/paid-memberships-pro/reports/";
|
18 |
-
if(is_dir($pmpro_reports_theme_dir))
|
19 |
-
{
|
20 |
-
$cwd = getcwd();
|
21 |
-
chdir($pmpro_reports_theme_dir);
|
22 |
-
foreach (glob("*.php") as $filename)
|
23 |
-
{
|
24 |
-
require_once($filename);
|
25 |
-
}
|
26 |
-
chdir($cwd);
|
27 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/services.php
DELETED
@@ -1,70 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Loading a service?
|
4 |
-
*/
|
5 |
-
/*
|
6 |
-
Note: The applydiscountcode goes through the site_url() instead of admin-ajax to avoid HTTP/HTTPS issues.
|
7 |
-
*/
|
8 |
-
if(isset($_REQUEST['action']) && $_REQUEST['action'] == "applydiscountcode")
|
9 |
-
{
|
10 |
-
function pmpro_applydiscountcode_init()
|
11 |
-
{
|
12 |
-
require_once(dirname(__FILE__) . "/../services/applydiscountcode.php");
|
13 |
-
exit;
|
14 |
-
}
|
15 |
-
add_action("init", "pmpro_applydiscountcode_init", 11);
|
16 |
-
}
|
17 |
-
function pmpro_wp_ajax_authnet_silent_post()
|
18 |
-
{
|
19 |
-
require_once(dirname(__FILE__) . "/../services/authnet-silent-post.php");
|
20 |
-
exit;
|
21 |
-
}
|
22 |
-
add_action('wp_ajax_nopriv_authnet_silent_post', 'pmpro_wp_ajax_authnet_silent_post');
|
23 |
-
add_action('wp_ajax_authnet_silent_post', 'pmpro_wp_ajax_authnet_silent_post');
|
24 |
-
function pmpro_wp_ajax_getfile()
|
25 |
-
{
|
26 |
-
require_once(dirname(__FILE__) . "/../services/getfile.php");
|
27 |
-
exit;
|
28 |
-
}
|
29 |
-
add_action('wp_ajax_nopriv_getfile', 'pmpro_wp_ajax_getfile');
|
30 |
-
add_action('wp_ajax_getfile', 'pmpro_wp_ajax_getfile');
|
31 |
-
function pmpro_wp_ajax_ipnhandler()
|
32 |
-
{
|
33 |
-
require_once(dirname(__FILE__) . "/../services/ipnhandler.php");
|
34 |
-
exit;
|
35 |
-
}
|
36 |
-
add_action('wp_ajax_nopriv_ipnhandler', 'pmpro_wp_ajax_ipnhandler');
|
37 |
-
add_action('wp_ajax_ipnhandler', 'pmpro_wp_ajax_ipnhandler');
|
38 |
-
function pmpro_wp_ajax_stripe_webhook()
|
39 |
-
{
|
40 |
-
require_once(dirname(__FILE__) . "/../services/stripe-webhook.php");
|
41 |
-
exit;
|
42 |
-
}
|
43 |
-
add_action('wp_ajax_nopriv_stripe_webhook', 'pmpro_wp_ajax_stripe_webhook');
|
44 |
-
add_action('wp_ajax_stripe_webhook', 'pmpro_wp_ajax_stripe_webhook');
|
45 |
-
function pmpro_wp_ajax_braintree_webhook()
|
46 |
-
{
|
47 |
-
require_once(dirname(__FILE__) . "/../services/braintree-webhook.php");
|
48 |
-
exit;
|
49 |
-
}
|
50 |
-
add_action('wp_ajax_nopriv_braintree_webhook', 'pmpro_wp_ajax_braintree_webhook');
|
51 |
-
add_action('wp_ajax_braintree_webhook', 'pmpro_wp_ajax_braintree_webhook');
|
52 |
-
function pmpro_wp_ajax_twocheckout_ins()
|
53 |
-
{
|
54 |
-
require_once(dirname(__FILE__) . "/../services/twocheckout-ins.php");
|
55 |
-
exit;
|
56 |
-
}
|
57 |
-
add_action('wp_ajax_nopriv_twocheckout-ins', 'pmpro_wp_ajax_twocheckout_ins');
|
58 |
-
add_action('wp_ajax_twocheckout-ins', 'pmpro_wp_ajax_twocheckout_ins');
|
59 |
-
function pmpro_wp_ajax_memberlist_csv()
|
60 |
-
{
|
61 |
-
require_once(dirname(__FILE__) . "/../adminpages/memberslist-csv.php");
|
62 |
-
exit;
|
63 |
-
}
|
64 |
-
add_action('wp_ajax_memberslist_csv', 'pmpro_wp_ajax_memberlist_csv');
|
65 |
-
function pmpro_wp_ajax_orders_csv()
|
66 |
-
{
|
67 |
-
require_once(dirname(__FILE__) . "/../adminpages/orders-csv.php");
|
68 |
-
exit;
|
69 |
-
}
|
70 |
-
add_action('wp_ajax_orders_csv', 'pmpro_wp_ajax_orders_csv');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/setup.sql
CHANGED
@@ -26,7 +26,7 @@ CREATE TABLE `wp_pmpro_discount_codes` (
|
|
26 |
UNIQUE KEY `code` (`code`),
|
27 |
KEY `starts` (`starts`),
|
28 |
KEY `expires` (`expires`)
|
29 |
-
);
|
30 |
|
31 |
-- --------------------------------------------------------
|
32 |
|
@@ -48,7 +48,7 @@ CREATE TABLE `wp_pmpro_discount_codes_levels` (
|
|
48 |
`expiration_period` enum('Day','Week','Month','Year') NOT NULL,
|
49 |
PRIMARY KEY (`code_id`,`level_id`),
|
50 |
KEY `initial_payment` (`initial_payment`)
|
51 |
-
);
|
52 |
|
53 |
-- --------------------------------------------------------
|
54 |
|
@@ -65,7 +65,7 @@ CREATE TABLE `wp_pmpro_discount_codes_uses` (
|
|
65 |
PRIMARY KEY (`id`),
|
66 |
KEY `user_id` (`user_id`),
|
67 |
KEY `timestamp` (`timestamp`)
|
68 |
-
);
|
69 |
|
70 |
-- --------------------------------------------------------
|
71 |
|
@@ -92,7 +92,7 @@ CREATE TABLE `wp_pmpro_membership_levels` (
|
|
92 |
KEY `allow_signups` (`allow_signups`),
|
93 |
KEY `initial_payment` (`initial_payment`),
|
94 |
KEY `name` (`name`)
|
95 |
-
);
|
96 |
|
97 |
-- --------------------------------------------------------
|
98 |
|
@@ -125,7 +125,7 @@ CREATE TABLE `wp_pmpro_membership_orders` (
|
|
125 |
`accountnumber` varchar(32) NOT NULL DEFAULT '',
|
126 |
`expirationmonth` char(2) NOT NULL DEFAULT '',
|
127 |
`expirationyear` varchar(4) NOT NULL DEFAULT '',
|
128 |
-
`status` varchar(
|
129 |
`gateway` varchar(64) NOT NULL,
|
130 |
`gateway_environment` varchar(64) NOT NULL,
|
131 |
`payment_transaction_id` varchar(64) NOT NULL,
|
@@ -133,21 +133,15 @@ CREATE TABLE `wp_pmpro_membership_orders` (
|
|
133 |
`timestamp` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
134 |
`affiliate_id` varchar(32) NOT NULL,
|
135 |
`affiliate_subid` varchar(32) NOT NULL,
|
136 |
-
`notes` TEXT NOT NULL,
|
137 |
PRIMARY KEY (`id`),
|
138 |
UNIQUE KEY `code` (`code`),
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
KEY `payment_transaction_id` (`payment_transaction_id`),
|
147 |
-
KEY `subscription_transaction_id` (`subscription_transaction_id`),
|
148 |
-
KEY `affiliate_id` (`affiliate_id`),
|
149 |
-
KEY `affiliate_subid` (`affiliate_subid`)
|
150 |
-
);
|
151 |
|
152 |
-- --------------------------------------------------------
|
153 |
|
@@ -161,7 +155,7 @@ CREATE TABLE `wp_pmpro_memberships_categories` (
|
|
161 |
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
162 |
UNIQUE KEY `membership_category` (`membership_id`,`category_id`),
|
163 |
UNIQUE KEY `category_membership` (`category_id`,`membership_id`)
|
164 |
-
);
|
165 |
|
166 |
-- --------------------------------------------------------
|
167 |
|
@@ -175,7 +169,7 @@ CREATE TABLE `wp_pmpro_memberships_pages` (
|
|
175 |
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
176 |
UNIQUE KEY `category_membership` (`page_id`,`membership_id`),
|
177 |
UNIQUE KEY `membership_page` (`membership_id`,`page_id`)
|
178 |
-
);
|
179 |
|
180 |
-- --------------------------------------------------------
|
181 |
|
@@ -184,26 +178,22 @@ CREATE TABLE `wp_pmpro_memberships_pages` (
|
|
184 |
--
|
185 |
|
186 |
CREATE TABLE `wp_pmpro_memberships_users` (
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
KEY `enddate` (`enddate`),
|
207 |
-
KEY `user_id` (`user_id`),
|
208 |
-
KEY `user_id` (`status`)
|
209 |
-
);
|
26 |
UNIQUE KEY `code` (`code`),
|
27 |
KEY `starts` (`starts`),
|
28 |
KEY `expires` (`expires`)
|
29 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
30 |
|
31 |
-- --------------------------------------------------------
|
32 |
|
48 |
`expiration_period` enum('Day','Week','Month','Year') NOT NULL,
|
49 |
PRIMARY KEY (`code_id`,`level_id`),
|
50 |
KEY `initial_payment` (`initial_payment`)
|
51 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
52 |
|
53 |
-- --------------------------------------------------------
|
54 |
|
65 |
PRIMARY KEY (`id`),
|
66 |
KEY `user_id` (`user_id`),
|
67 |
KEY `timestamp` (`timestamp`)
|
68 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
69 |
|
70 |
-- --------------------------------------------------------
|
71 |
|
92 |
KEY `allow_signups` (`allow_signups`),
|
93 |
KEY `initial_payment` (`initial_payment`),
|
94 |
KEY `name` (`name`)
|
95 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
96 |
|
97 |
-- --------------------------------------------------------
|
98 |
|
125 |
`accountnumber` varchar(32) NOT NULL DEFAULT '',
|
126 |
`expirationmonth` char(2) NOT NULL DEFAULT '',
|
127 |
`expirationyear` varchar(4) NOT NULL DEFAULT '',
|
128 |
+
`status` varchar(32) NOT NULL DEFAULT '',
|
129 |
`gateway` varchar(64) NOT NULL,
|
130 |
`gateway_environment` varchar(64) NOT NULL,
|
131 |
`payment_transaction_id` varchar(64) NOT NULL,
|
133 |
`timestamp` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
134 |
`affiliate_id` varchar(32) NOT NULL,
|
135 |
`affiliate_subid` varchar(32) NOT NULL,
|
|
|
136 |
PRIMARY KEY (`id`),
|
137 |
UNIQUE KEY `code` (`code`),
|
138 |
+
KEY `session_id` (`session_id`),
|
139 |
+
KEY `user_id` (`user_id`),
|
140 |
+
KEY `membership_id` (`membership_id`),
|
141 |
+
KEY `timestamp` (`timestamp`),
|
142 |
+
KEY `gateway` (`gateway`),
|
143 |
+
KEY `gateway_environment` (`gateway_environment`)
|
144 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
-- --------------------------------------------------------
|
147 |
|
155 |
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
156 |
UNIQUE KEY `membership_category` (`membership_id`,`category_id`),
|
157 |
UNIQUE KEY `category_membership` (`category_id`,`membership_id`)
|
158 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
159 |
|
160 |
-- --------------------------------------------------------
|
161 |
|
169 |
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
170 |
UNIQUE KEY `category_membership` (`page_id`,`membership_id`),
|
171 |
UNIQUE KEY `membership_page` (`membership_id`,`page_id`)
|
172 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
173 |
|
174 |
-- --------------------------------------------------------
|
175 |
|
178 |
--
|
179 |
|
180 |
CREATE TABLE `wp_pmpro_memberships_users` (
|
181 |
+
`user_id` int(11) unsigned NOT NULL,
|
182 |
+
`membership_id` int(11) unsigned NOT NULL,
|
183 |
+
`code_id` int(11) unsigned NOT NULL,
|
184 |
+
`initial_payment` decimal(10,2) NOT NULL,
|
185 |
+
`billing_amount` decimal(10,2) NOT NULL,
|
186 |
+
`cycle_number` int(11) NOT NULL,
|
187 |
+
`cycle_period` enum('Day','Week','Month','Year') NOT NULL DEFAULT 'Month',
|
188 |
+
`billing_limit` int(11) NOT NULL,
|
189 |
+
`trial_amount` decimal(10,2) NOT NULL,
|
190 |
+
`trial_limit` int(11) NOT NULL,
|
191 |
+
`startdate` datetime NOT NULL,
|
192 |
+
`enddate` datetime DEFAULT NULL,
|
193 |
+
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
194 |
+
PRIMARY KEY (`user_id`),
|
195 |
+
KEY `membership_id` (`membership_id`),
|
196 |
+
KEY `modified` (`modified`),
|
197 |
+
KEY `code_id` (`code_id`),
|
198 |
+
KEY `enddate` (`enddate`)
|
199 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
|
|
|
|
|
|
includes/upgradecheck.php
CHANGED
@@ -34,86 +34,16 @@ function pmpro_checkForUpgrades()
|
|
34 |
|
35 |
if($pmpro_db_version < 1.48)
|
36 |
$pmpro_db_version = pmpro_upgrade_1_4_8();
|
37 |
-
|
38 |
-
if($pmpro_db_version < 1.5)
|
39 |
$pmpro_db_version = pmpro_upgrade_1_5();
|
40 |
|
41 |
if($pmpro_db_version < 1.59)
|
42 |
$pmpro_db_version = pmpro_upgrade_1_5_9();
|
43 |
|
44 |
if($pmpro_db_version < 1.6)
|
45 |
-
$pmpro_db_version = pmpro_upgrade_1_6();
|
46 |
-
|
47 |
-
//fix for fresh 1.7 installs
|
48 |
-
if($pmpro_db_version == 1.7)
|
49 |
-
{
|
50 |
-
//check if we have an id column in the memberships_users table
|
51 |
-
$wpdb->pmpro_memberships_users = $table_prefix . 'pmpro_memberships_users';
|
52 |
-
$col = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_memberships_users LIMIT 1");
|
53 |
-
if($wpdb->last_error == "Unknown column 'id' in 'field list'")
|
54 |
-
{
|
55 |
-
//redo 1.5 fix
|
56 |
-
pmpro_upgrade_1_5();
|
57 |
-
}
|
58 |
-
|
59 |
-
pmpro_db_delta();
|
60 |
-
|
61 |
-
pmpro_setOption("db_version", "1.703");
|
62 |
-
$pmpro_db_version = 1.703;
|
63 |
-
}
|
64 |
-
|
65 |
-
//updates from this point on should be like this if DB only
|
66 |
-
if($pmpro_db_version < 1.71)
|
67 |
-
{
|
68 |
-
pmpro_db_delta();
|
69 |
-
pmpro_setOption("db_version", "1.71");
|
70 |
-
$pmpro_db_version = 1.71;
|
71 |
-
}
|
72 |
-
|
73 |
-
if($pmpro_db_version < 1.72)
|
74 |
-
{
|
75 |
-
//schedule the credit card expiring cron
|
76 |
-
wp_schedule_event(current_time('timestamp'), 'monthly', 'pmpro_cron_credit_card_expiring_warnings');
|
77 |
-
|
78 |
-
pmpro_setOption("db_version", "1.72");
|
79 |
-
$pmpro_db_version = 1.72;
|
80 |
-
}
|
81 |
-
|
82 |
-
/*
|
83 |
-
1.7.3
|
84 |
-
- default Stripe Billing Fields to true
|
85 |
-
- unless Stripe Lite is activated, then deactivate Stripe Lite and set Stripe Billing Fields to false
|
86 |
-
*/
|
87 |
-
|
88 |
-
if($pmpro_db_version < 1.79)
|
89 |
-
{
|
90 |
-
//need to register caps for menu
|
91 |
-
pmpro_activation();
|
92 |
-
|
93 |
-
pmpro_setOption("db_version", "1.79");
|
94 |
-
$pmpro_db_version = 1.79;
|
95 |
-
}
|
96 |
-
|
97 |
-
//set default filter_queries setting
|
98 |
-
if($pmpro_db_version < 1.791)
|
99 |
-
{
|
100 |
-
if(!pmpro_getOption("showexcerpts"))
|
101 |
-
pmpro_setOption("filterqueries", 1);
|
102 |
-
else
|
103 |
-
pmpro_SetOption("filterqueries", 0);
|
104 |
-
|
105 |
-
pmpro_setOption("db_version", "1.791");
|
106 |
-
$pmpro_db_version = 1.791;
|
107 |
-
}
|
108 |
-
}
|
109 |
-
|
110 |
-
function pmpro_upgrade_1_7()
|
111 |
-
{
|
112 |
-
pmpro_db_delta(); //just a db delta
|
113 |
-
|
114 |
-
pmpro_setOption("db_version", "1.7");
|
115 |
-
return 1.7;
|
116 |
-
}
|
117 |
|
118 |
function pmpro_upgrade_1_6()
|
119 |
{
|
@@ -142,31 +72,31 @@ function pmpro_upgrade_1_5_9()
|
|
142 |
pmpro_setOption("db_version", "1.59");
|
143 |
return 1.59;
|
144 |
}
|
145 |
-
|
146 |
-
function pmpro_upgrade_1_5()
|
147 |
-
{
|
148 |
-
/*
|
149 |
-
Add the id and status fields to pmpro_memberships_users, change primary key to id instead of user_id
|
150 |
-
*/
|
151 |
-
|
152 |
-
global $wpdb;
|
153 |
-
$wpdb->hide_errors();
|
154 |
-
$wpdb->pmpro_memberships_users = $wpdb->prefix . 'pmpro_memberships_users';
|
155 |
-
|
156 |
-
//remove primary key
|
157 |
-
$sqlQuery = "ALTER TABLE `" . $wpdb->pmpro_memberships_users . "` DROP PRIMARY KEY";
|
158 |
-
$wpdb->query($sqlQuery);
|
159 |
-
|
160 |
-
//id
|
161 |
-
$sqlQuery = "ALTER TABLE `" . $wpdb->pmpro_memberships_users . "` ADD `id` BIGINT( 20 ) UNSIGNED AUTO_INCREMENT FIRST, ADD PRIMARY KEY(id)";
|
162 |
-
$wpdb->query($sqlQuery);
|
163 |
-
|
164 |
-
//status
|
165 |
-
$sqlQuery = "ALTER TABLE `" . $wpdb->pmpro_memberships_users . "` ADD `status` varchar( 20 ) NOT NULL DEFAULT 'active' AFTER `trial_limit`";
|
166 |
-
$wpdb->query($sqlQuery);
|
167 |
-
|
168 |
-
pmpro_setOption("db_version", "1.5");
|
169 |
-
return 1.5;
|
170 |
}
|
171 |
|
172 |
function pmpro_upgrade_1_4_8()
|
@@ -268,7 +198,7 @@ ADD `expiration_period` ENUM( 'Day', 'Week', 'Month', 'Year' ) NOT NULL
|
|
268 |
$wpdb->query($sqlQuery);
|
269 |
|
270 |
$sqlQuery = "
|
271 |
-
ALTER TABLE `" . $wpdb->
|
272 |
";
|
273 |
$wpdb->query($sqlQuery);
|
274 |
|
@@ -419,14 +349,13 @@ function pmpro_upgrade_1()
|
|
419 |
/*
|
420 |
default options
|
421 |
*/
|
422 |
-
$nonmembertext =
|
423 |
pmpro_setOption("nonmembertext", $nonmembertext);
|
424 |
|
425 |
-
$notloggedintext =
|
426 |
-
'?action=register">Register</a>';
|
427 |
pmpro_setOption("notloggedintext", $notloggedintext);
|
428 |
|
429 |
-
$rsstext =
|
430 |
pmpro_setOption("rsstext", $rsstext);
|
431 |
|
432 |
$gateway_environment = "sandbox";
|
@@ -439,7 +368,7 @@ function pmpro_upgrade_1()
|
|
439 |
pmpro_setOption("accepted_credit_cards", $pmpro_accepted_credit_cards);
|
440 |
|
441 |
$parsed = parse_url(home_url());
|
442 |
-
$hostname = $parsed[
|
443 |
$hostparts = split("\.", $hostname);
|
444 |
$email_domain = $hostparts[count($hostparts) - 2] . "." . $hostparts[count($hostparts) - 1];
|
445 |
$from_email = "wordpress@" . $email_domain;
|
@@ -448,26 +377,11 @@ function pmpro_upgrade_1()
|
|
448 |
$from_name = "WordPress";
|
449 |
pmpro_setOption("from_name", $from_name);
|
450 |
|
451 |
-
//setting new email settings defaults
|
452 |
-
pmpro_setOption("email_admin_checkout", "1");
|
453 |
-
pmpro_setOption("email_admin_changes", "1");
|
454 |
-
pmpro_setOption("email_admin_cancels", "1");
|
455 |
-
pmpro_setOption("email_admin_billing", "1");
|
456 |
-
|
457 |
pmpro_setOption("tospage", "");
|
458 |
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
//update version and return
|
463 |
-
pmpro_setOption("db_version", "1.702"); //no need to run other updates
|
464 |
-
return 1.702;
|
465 |
-
}
|
466 |
-
|
467 |
-
function pmpro_db_delta()
|
468 |
-
{
|
469 |
-
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
470 |
-
|
471 |
global $wpdb;
|
472 |
$wpdb->hide_errors();
|
473 |
$wpdb->pmpro_membership_levels = $wpdb->prefix . 'pmpro_membership_levels';
|
@@ -482,133 +396,117 @@ function pmpro_db_delta()
|
|
482 |
//wp_pmpro_membership_levels
|
483 |
$sqlQuery = "
|
484 |
CREATE TABLE `" . $wpdb->pmpro_membership_levels . "` (
|
485 |
-
`id` int(11)
|
486 |
`name` varchar(255) NOT NULL,
|
487 |
`description` longtext NOT NULL,
|
488 |
-
`
|
489 |
-
`
|
490 |
-
`
|
491 |
-
`
|
492 |
-
`cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month',
|
493 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
494 |
-
`trial_amount` decimal(10,2) NOT NULL
|
495 |
-
`trial_limit` int(11) NOT NULL
|
496 |
-
`allow_signups` tinyint(4) NOT NULL
|
497 |
-
`
|
498 |
-
`expiration_period` enum('Day','Week','Month','Year') NOT NULL,
|
499 |
-
PRIMARY KEY (`id`),
|
500 |
KEY `allow_signups` (`allow_signups`),
|
501 |
KEY `initial_payment` (`initial_payment`),
|
502 |
KEY `name` (`name`)
|
503 |
-
)
|
504 |
";
|
505 |
-
|
506 |
|
507 |
//wp_pmpro_membership_orders
|
508 |
$sqlQuery = "
|
509 |
CREATE TABLE `" . $wpdb->pmpro_membership_orders . "` (
|
510 |
-
`id` int(11)
|
511 |
`code` varchar(10) NOT NULL,
|
512 |
-
`session_id` varchar(64) NOT NULL
|
513 |
-
`user_id` int(11)
|
514 |
-
`membership_id` int(11)
|
515 |
-
`paypal_token` varchar(64) NOT NULL
|
516 |
-
`billing_name` varchar(128) NOT NULL
|
517 |
-
`billing_street` varchar(128) NOT NULL
|
518 |
-
`billing_city` varchar(128) NOT NULL
|
519 |
-
`billing_state` varchar(32) NOT NULL
|
520 |
-
`billing_zip` varchar(16) NOT NULL
|
521 |
-
`billing_country` varchar(128) NOT NULL,
|
522 |
`billing_phone` varchar(32) NOT NULL,
|
523 |
-
`subtotal` varchar(16) NOT NULL
|
524 |
-
`tax` varchar(16) NOT NULL
|
525 |
-
`couponamount` varchar(16) NOT NULL
|
526 |
-
`certificate_id` int(11) NOT NULL
|
527 |
-
`certificateamount` varchar(16) NOT NULL
|
528 |
-
`total` varchar(16) NOT NULL
|
529 |
-
`payment_type` varchar(64) NOT NULL
|
530 |
-
`cardtype` varchar(32) NOT NULL
|
531 |
-
`accountnumber` varchar(32) NOT NULL
|
532 |
-
`expirationmonth` char(2) NOT NULL
|
533 |
-
`expirationyear` varchar(4) NOT NULL
|
534 |
-
`status` varchar(32) NOT NULL
|
535 |
`gateway` varchar(64) NOT NULL,
|
536 |
`gateway_environment` varchar(64) NOT NULL,
|
537 |
`payment_transaction_id` varchar(64) NOT NULL,
|
538 |
`subscription_transaction_id` varchar(32) NOT NULL,
|
539 |
-
`timestamp` datetime NOT NULL
|
540 |
`affiliate_id` varchar(32) NOT NULL,
|
541 |
`affiliate_subid` varchar(32) NOT NULL,
|
542 |
-
`
|
543 |
-
PRIMARY KEY (`id`),
|
544 |
UNIQUE KEY `code` (`code`),
|
545 |
KEY `session_id` (`session_id`),
|
546 |
KEY `user_id` (`user_id`),
|
547 |
KEY `membership_id` (`membership_id`),
|
548 |
-
KEY `status` (`status`),
|
549 |
KEY `timestamp` (`timestamp`),
|
550 |
KEY `gateway` (`gateway`),
|
551 |
-
KEY `gateway_environment` (`gateway_environment`)
|
552 |
-
|
553 |
-
KEY `subscription_transaction_id` (`subscription_transaction_id`),
|
554 |
-
KEY `affiliate_id` (`affiliate_id`),
|
555 |
-
KEY `affiliate_subid` (`affiliate_subid`)
|
556 |
-
);
|
557 |
";
|
558 |
-
|
559 |
|
560 |
//wp_pmpro_memberships_categories
|
561 |
$sqlQuery = "
|
562 |
CREATE TABLE `" . $wpdb->pmpro_memberships_categories . "` (
|
563 |
-
`membership_id` int(11)
|
564 |
-
`category_id` int(11)
|
565 |
-
`modified` timestamp NOT NULL
|
566 |
UNIQUE KEY `membership_category` (`membership_id`,`category_id`),
|
567 |
UNIQUE KEY `category_membership` (`category_id`,`membership_id`)
|
568 |
-
);
|
569 |
";
|
570 |
-
|
571 |
|
572 |
//wp_pmpro_memberships_pages
|
573 |
$sqlQuery = "
|
574 |
CREATE TABLE `" . $wpdb->pmpro_memberships_pages . "` (
|
575 |
-
`membership_id` int(11)
|
576 |
-
`page_id` int(11)
|
577 |
-
`modified` timestamp NOT NULL
|
578 |
UNIQUE KEY `category_membership` (`page_id`,`membership_id`),
|
579 |
UNIQUE KEY `membership_page` (`membership_id`,`page_id`)
|
580 |
-
);
|
581 |
";
|
582 |
-
|
583 |
|
584 |
//wp_pmpro_memberships_users
|
585 |
$sqlQuery = "
|
586 |
CREATE TABLE `" . $wpdb->pmpro_memberships_users . "` (
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
KEY `modified` (`modified`),
|
605 |
-
KEY `code_id` (`code_id`),
|
606 |
-
KEY `enddate` (`enddate`),
|
607 |
-
KEY `user_id` (`user_id`),
|
608 |
-
KEY `status` (`status`)
|
609 |
-
);
|
610 |
";
|
611 |
-
|
612 |
|
613 |
//wp_pmpro_discount_codes
|
614 |
$sqlQuery = "
|
@@ -622,15 +520,15 @@ function pmpro_db_delta()
|
|
622 |
UNIQUE KEY `code` (`code`),
|
623 |
KEY `starts` (`starts`),
|
624 |
KEY `expires` (`expires`)
|
625 |
-
);
|
626 |
";
|
627 |
-
|
628 |
|
629 |
//wp_pmpro_discount_codes_levels
|
630 |
$sqlQuery = "
|
631 |
CREATE TABLE `" . $wpdb->pmpro_discount_codes_levels . "` (
|
632 |
`code_id` int(11) unsigned NOT NULL,
|
633 |
-
`level_id` int(11) unsigned
|
634 |
`initial_payment` decimal(10,2) NOT NULL DEFAULT '0.00',
|
635 |
`billing_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
|
636 |
`cycle_number` int(11) NOT NULL DEFAULT '0',
|
@@ -638,13 +536,11 @@ function pmpro_db_delta()
|
|
638 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
639 |
`trial_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
|
640 |
`trial_limit` int(11) NOT NULL DEFAULT '0',
|
641 |
-
`expiration_number` int(10) unsigned NOT NULL,
|
642 |
-
`expiration_period` enum('Day','Week','Month','Year') NOT NULL,
|
643 |
PRIMARY KEY (`code_id`,`level_id`),
|
644 |
KEY `initial_payment` (`initial_payment`)
|
645 |
-
);
|
646 |
";
|
647 |
-
|
648 |
|
649 |
//wp_pmpro_discount_codes_uses
|
650 |
$sqlQuery = "
|
@@ -657,7 +553,10 @@ function pmpro_db_delta()
|
|
657 |
PRIMARY KEY (`id`),
|
658 |
KEY `user_id` (`user_id`),
|
659 |
KEY `timestamp` (`timestamp`)
|
660 |
-
);
|
661 |
";
|
662 |
-
|
|
|
|
|
|
|
663 |
}
|
34 |
|
35 |
if($pmpro_db_version < 1.48)
|
36 |
$pmpro_db_version = pmpro_upgrade_1_4_8();
|
37 |
+
|
38 |
+
if($pmpro_db_version < 1.5)
|
39 |
$pmpro_db_version = pmpro_upgrade_1_5();
|
40 |
|
41 |
if($pmpro_db_version < 1.59)
|
42 |
$pmpro_db_version = pmpro_upgrade_1_5_9();
|
43 |
|
44 |
if($pmpro_db_version < 1.6)
|
45 |
+
$pmpro_db_version = pmpro_upgrade_1_6();
|
46 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
function pmpro_upgrade_1_6()
|
49 |
{
|
72 |
pmpro_setOption("db_version", "1.59");
|
73 |
return 1.59;
|
74 |
}
|
75 |
+
|
76 |
+
function pmpro_upgrade_1_5()
|
77 |
+
{
|
78 |
+
/*
|
79 |
+
Add the id and status fields to pmpro_memberships_users, change primary key to id instead of user_id
|
80 |
+
*/
|
81 |
+
|
82 |
+
global $wpdb;
|
83 |
+
$wpdb->hide_errors();
|
84 |
+
$wpdb->pmpro_memberships_users = $wpdb->prefix . 'pmpro_memberships_users';
|
85 |
+
|
86 |
+
//remove primary key
|
87 |
+
$sqlQuery = "ALTER TABLE `" . $wpdb->pmpro_memberships_users . "` DROP PRIMARY KEY";
|
88 |
+
$wpdb->query($sqlQuery);
|
89 |
+
|
90 |
+
//id
|
91 |
+
$sqlQuery = "ALTER TABLE `" . $wpdb->pmpro_memberships_users . "` ADD `id` BIGINT( 20 ) UNSIGNED AUTO_INCREMENT FIRST, ADD PRIMARY KEY(id)";
|
92 |
+
$wpdb->query($sqlQuery);
|
93 |
+
|
94 |
+
//status
|
95 |
+
$sqlQuery = "ALTER TABLE `" . $wpdb->pmpro_memberships_users . "` ADD `status` varchar( 20 ) NOT NULL DEFAULT 'active' AFTER `trial_limit`";
|
96 |
+
$wpdb->query($sqlQuery);
|
97 |
+
|
98 |
+
pmpro_setOption("db_version", "1.5");
|
99 |
+
return 1.5;
|
100 |
}
|
101 |
|
102 |
function pmpro_upgrade_1_4_8()
|
198 |
$wpdb->query($sqlQuery);
|
199 |
|
200 |
$sqlQuery = "
|
201 |
+
ALTER TABLE `" . $wpdb->pmpro_membership_levels . "` ADD INDEX ( `enddate` )
|
202 |
";
|
203 |
$wpdb->query($sqlQuery);
|
204 |
|
349 |
/*
|
350 |
default options
|
351 |
*/
|
352 |
+
$nonmembertext = "This content is for !!levels!! members only. <a href=\"" . wp_login_url() . "?action=register\">Register here</a>.";
|
353 |
pmpro_setOption("nonmembertext", $nonmembertext);
|
354 |
|
355 |
+
$notloggedintext = "This content is for !!levels!! members only. Please <a href=\"" . wp_login_url( get_permalink() ) . "\">login</a> to view this content. (<a href=\"" . wp_login_url() . "?action=register\">Register here</a>.)";
|
|
|
356 |
pmpro_setOption("notloggedintext", $notloggedintext);
|
357 |
|
358 |
+
$rsstext = "This content is for !!levels!! members only. Visit the site and log in/register to read.";
|
359 |
pmpro_setOption("rsstext", $rsstext);
|
360 |
|
361 |
$gateway_environment = "sandbox";
|
368 |
pmpro_setOption("accepted_credit_cards", $pmpro_accepted_credit_cards);
|
369 |
|
370 |
$parsed = parse_url(home_url());
|
371 |
+
$hostname = $parsed[host];
|
372 |
$hostparts = split("\.", $hostname);
|
373 |
$email_domain = $hostparts[count($hostparts) - 2] . "." . $hostparts[count($hostparts) - 1];
|
374 |
$from_email = "wordpress@" . $email_domain;
|
377 |
$from_name = "WordPress";
|
378 |
pmpro_setOption("from_name", $from_name);
|
379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
pmpro_setOption("tospage", "");
|
381 |
|
382 |
+
/*
|
383 |
+
DB table setup
|
384 |
+
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
385 |
global $wpdb;
|
386 |
$wpdb->hide_errors();
|
387 |
$wpdb->pmpro_membership_levels = $wpdb->prefix . 'pmpro_membership_levels';
|
396 |
//wp_pmpro_membership_levels
|
397 |
$sqlQuery = "
|
398 |
CREATE TABLE `" . $wpdb->pmpro_membership_levels . "` (
|
399 |
+
`id` int(11) UNSIGNED NOT NULL auto_increment,
|
400 |
`name` varchar(255) NOT NULL,
|
401 |
`description` longtext NOT NULL,
|
402 |
+
`initial_payment` decimal(10,2) NOT NULL default '0.00',
|
403 |
+
`billing_amount` decimal(10,2) NOT NULL default '0.00',
|
404 |
+
`cycle_number` int(11) NOT NULL default '0',
|
405 |
+
`cycle_period` enum('Day','Week','Month','Year') default 'Month',
|
|
|
406 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
407 |
+
`trial_amount` decimal(10,2) NOT NULL default '0.00',
|
408 |
+
`trial_limit` int(11) NOT NULL default '0',
|
409 |
+
`allow_signups` tinyint(4) NOT NULL default '1',
|
410 |
+
PRIMARY KEY (`id`),
|
|
|
|
|
411 |
KEY `allow_signups` (`allow_signups`),
|
412 |
KEY `initial_payment` (`initial_payment`),
|
413 |
KEY `name` (`name`)
|
414 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
415 |
";
|
416 |
+
$wpdb->query($sqlQuery);
|
417 |
|
418 |
//wp_pmpro_membership_orders
|
419 |
$sqlQuery = "
|
420 |
CREATE TABLE `" . $wpdb->pmpro_membership_orders . "` (
|
421 |
+
`id` int(11) UNSIGNED NOT NULL auto_increment,
|
422 |
`code` varchar(10) NOT NULL,
|
423 |
+
`session_id` varchar(64) NOT NULL default '',
|
424 |
+
`user_id` int(11) UNSIGNED NOT NULL default '0',
|
425 |
+
`membership_id` int(11) UNSIGNED NOT NULL default '0',
|
426 |
+
`paypal_token` varchar(64) NOT NULL default '',
|
427 |
+
`billing_name` varchar(128) NOT NULL default '',
|
428 |
+
`billing_street` varchar(128) NOT NULL default '',
|
429 |
+
`billing_city` varchar(128) NOT NULL default '',
|
430 |
+
`billing_state` varchar(32) NOT NULL default '',
|
431 |
+
`billing_zip` varchar(16) NOT NULL default '',
|
|
|
432 |
`billing_phone` varchar(32) NOT NULL,
|
433 |
+
`subtotal` varchar(16) NOT NULL default '',
|
434 |
+
`tax` varchar(16) NOT NULL default '',
|
435 |
+
`couponamount` varchar(16) NOT NULL default '',
|
436 |
+
`certificate_id` int(11) NOT NULL default '0',
|
437 |
+
`certificateamount` varchar(16) NOT NULL default '',
|
438 |
+
`total` varchar(16) NOT NULL default '',
|
439 |
+
`payment_type` varchar(64) NOT NULL default '',
|
440 |
+
`cardtype` varchar(32) NOT NULL default '',
|
441 |
+
`accountnumber` varchar(32) NOT NULL default '',
|
442 |
+
`expirationmonth` char(2) NOT NULL default '',
|
443 |
+
`expirationyear` varchar(4) NOT NULL default '',
|
444 |
+
`status` varchar(32) NOT NULL default '',
|
445 |
`gateway` varchar(64) NOT NULL,
|
446 |
`gateway_environment` varchar(64) NOT NULL,
|
447 |
`payment_transaction_id` varchar(64) NOT NULL,
|
448 |
`subscription_transaction_id` varchar(32) NOT NULL,
|
449 |
+
`timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
|
450 |
`affiliate_id` varchar(32) NOT NULL,
|
451 |
`affiliate_subid` varchar(32) NOT NULL,
|
452 |
+
PRIMARY KEY (`id`),
|
|
|
453 |
UNIQUE KEY `code` (`code`),
|
454 |
KEY `session_id` (`session_id`),
|
455 |
KEY `user_id` (`user_id`),
|
456 |
KEY `membership_id` (`membership_id`),
|
|
|
457 |
KEY `timestamp` (`timestamp`),
|
458 |
KEY `gateway` (`gateway`),
|
459 |
+
KEY `gateway_environment` (`gateway_environment`)
|
460 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
|
|
|
|
|
|
|
461 |
";
|
462 |
+
$wpdb->query($sqlQuery);
|
463 |
|
464 |
//wp_pmpro_memberships_categories
|
465 |
$sqlQuery = "
|
466 |
CREATE TABLE `" . $wpdb->pmpro_memberships_categories . "` (
|
467 |
+
`membership_id` int(11) UNSIGNED NOT NULL,
|
468 |
+
`category_id` int(11) UNSIGNED NOT NULL,
|
469 |
+
`modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
470 |
UNIQUE KEY `membership_category` (`membership_id`,`category_id`),
|
471 |
UNIQUE KEY `category_membership` (`category_id`,`membership_id`)
|
472 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
473 |
";
|
474 |
+
$wpdb->query($sqlQuery);
|
475 |
|
476 |
//wp_pmpro_memberships_pages
|
477 |
$sqlQuery = "
|
478 |
CREATE TABLE `" . $wpdb->pmpro_memberships_pages . "` (
|
479 |
+
`membership_id` int(11) UNSIGNED NOT NULL,
|
480 |
+
`page_id` int(11) UNSIGNED NOT NULL,
|
481 |
+
`modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
482 |
UNIQUE KEY `category_membership` (`page_id`,`membership_id`),
|
483 |
UNIQUE KEY `membership_page` (`membership_id`,`page_id`)
|
484 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
485 |
";
|
486 |
+
$wpdb->query($sqlQuery);
|
487 |
|
488 |
//wp_pmpro_memberships_users
|
489 |
$sqlQuery = "
|
490 |
CREATE TABLE `" . $wpdb->pmpro_memberships_users . "` (
|
491 |
+
`user_id` int(11) UNSIGNED NOT NULL,
|
492 |
+
`membership_id` int(11) UNSIGNED NOT NULL,
|
493 |
+
`code_id` int(11) UNSIGNED NOT NULL,
|
494 |
+
`initial_payment` decimal(10,2) NOT NULL,
|
495 |
+
`billing_amount` decimal(10,2) NOT NULL,
|
496 |
+
`cycle_number` int(11) NOT NULL,
|
497 |
+
`cycle_period` enum('Day','Week','Month','Year') NOT NULL default 'Month',
|
498 |
+
`billing_limit` int(11) NOT NULL,
|
499 |
+
`trial_amount` decimal(10,2) NOT NULL,
|
500 |
+
`trial_limit` int(11) NOT NULL,
|
501 |
+
`startdate` datetime NOT NULL,
|
502 |
+
`modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
503 |
+
PRIMARY KEY (`user_id`),
|
504 |
+
KEY `membership_id` (`membership_id`),
|
505 |
+
KEY `modified` (`modified`),
|
506 |
+
KEY `code_id` (`code_id`)
|
507 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
|
|
|
|
|
|
|
|
|
|
|
508 |
";
|
509 |
+
$wpdb->query($sqlQuery);
|
510 |
|
511 |
//wp_pmpro_discount_codes
|
512 |
$sqlQuery = "
|
520 |
UNIQUE KEY `code` (`code`),
|
521 |
KEY `starts` (`starts`),
|
522 |
KEY `expires` (`expires`)
|
523 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
524 |
";
|
525 |
+
$wpdb->query($sqlQuery);
|
526 |
|
527 |
//wp_pmpro_discount_codes_levels
|
528 |
$sqlQuery = "
|
529 |
CREATE TABLE `" . $wpdb->pmpro_discount_codes_levels . "` (
|
530 |
`code_id` int(11) unsigned NOT NULL,
|
531 |
+
`level_id` int(11) unsigned NOT NULL,
|
532 |
`initial_payment` decimal(10,2) NOT NULL DEFAULT '0.00',
|
533 |
`billing_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
|
534 |
`cycle_number` int(11) NOT NULL DEFAULT '0',
|
536 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
537 |
`trial_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
|
538 |
`trial_limit` int(11) NOT NULL DEFAULT '0',
|
|
|
|
|
539 |
PRIMARY KEY (`code_id`,`level_id`),
|
540 |
KEY `initial_payment` (`initial_payment`)
|
541 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
542 |
";
|
543 |
+
$wpdb->query($sqlQuery);
|
544 |
|
545 |
//wp_pmpro_discount_codes_uses
|
546 |
$sqlQuery = "
|
553 |
PRIMARY KEY (`id`),
|
554 |
KEY `user_id` (`user_id`),
|
555 |
KEY `timestamp` (`timestamp`)
|
556 |
+
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
|
557 |
";
|
558 |
+
$wpdb->query($sqlQuery);
|
559 |
+
|
560 |
+
pmpro_setOption("db_version", "1.115");
|
561 |
+
return 1.115;
|
562 |
}
|
includes/xmlrpc.php
DELETED
@@ -1,80 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Define the XMLRPC Methods We Add
|
4 |
-
* Since v2.0
|
5 |
-
*/
|
6 |
-
add_filter('xmlrpc_methods', 'pmpro_xmlrpc_methods');
|
7 |
-
function pmpro_xmlrpc_methods($methods)
|
8 |
-
{
|
9 |
-
$methods['pmpro.getMembershipLevelForUser'] = 'pmpro_xmlrpc_getMembershipLevelForUser';
|
10 |
-
$methods['pmpro.hasMembershipAccess'] = 'pmpro_xmlrpc_hasMembershipAccess';
|
11 |
-
return $methods;
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* API method to get the membership level info for a user.
|
16 |
-
* Since v2.0
|
17 |
-
*/
|
18 |
-
function pmpro_xmlrpc_getMembershipLevelForUser($args)
|
19 |
-
{
|
20 |
-
// Parse the arguments, assuming they're in the correct order
|
21 |
-
$username = $args[0];
|
22 |
-
$password = $args[1];
|
23 |
-
$user_id = $args[2]; //optional user id passed in
|
24 |
-
|
25 |
-
global $wp_xmlrpc_server;
|
26 |
-
|
27 |
-
// Let's run a check to see if credentials are okay
|
28 |
-
if ( !$user = $wp_xmlrpc_server->login($username, $password) ) {
|
29 |
-
return $wp_xmlrpc_server->error;
|
30 |
-
}
|
31 |
-
|
32 |
-
// The user passed should be an admin or have the pmpro_xmlprc capability
|
33 |
-
if(!user_can($user->ID, "manage_options") && !user_can($user->ID, "pmpro_xmlrpc"))
|
34 |
-
return "ERROR: User does not have access to the PMPro XMLRPC methods.";
|
35 |
-
|
36 |
-
// Default to logged in user if no user_id is given.
|
37 |
-
if(empty($user_id))
|
38 |
-
{
|
39 |
-
$user_id = $user->ID;
|
40 |
-
}
|
41 |
-
|
42 |
-
$membership_level = pmpro_getMembershipLevelForUser($user_id);
|
43 |
-
|
44 |
-
return $membership_level;
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* API method to check if a user has access to a certain post.
|
49 |
-
* Since v2.0
|
50 |
-
*/
|
51 |
-
function pmpro_xmlrpc_hasMembershipAccess($args)
|
52 |
-
{
|
53 |
-
// Parse the arguments, assuming they're in the correct order
|
54 |
-
$username = $args[0];
|
55 |
-
$password = $args[1];
|
56 |
-
$post_id = $args[2]; //post id to check
|
57 |
-
$user_id = $args[3]; //optional user id passed in
|
58 |
-
$return_membership_levels = $args[4]; //option to also include an array of membership levels with access to the post
|
59 |
-
|
60 |
-
global $wp_xmlrpc_server;
|
61 |
-
|
62 |
-
// Let's run a check to see if credentials are okay
|
63 |
-
if ( !$user = $wp_xmlrpc_server->login($username, $password) ) {
|
64 |
-
return $wp_xmlrpc_server->error;
|
65 |
-
}
|
66 |
-
|
67 |
-
// The user passed should be an admin or have the pmpro_xmlprc capability
|
68 |
-
if(!user_can($user->ID, "manage_options") && !user_can($user->ID, "pmpro_xmlrpc"))
|
69 |
-
return "ERROR: User does not have access to the PMPro XMLRPC methods.";
|
70 |
-
|
71 |
-
// Default to logged in user if no user_id is given.
|
72 |
-
if(empty($user_id))
|
73 |
-
{
|
74 |
-
$user_id = $user->ID;
|
75 |
-
}
|
76 |
-
|
77 |
-
$has_access = pmpro_has_membership_access($post_id, $user_id, $return_membership_levels);
|
78 |
-
|
79 |
-
return $has_access;
|
80 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/admin_change.html
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
<p>En Administrator hos !!sitename!! har ændret dit medlemsskab niveau.</p>
|
2 |
-
|
3 |
-
<p>!!membership_change!!.</p>
|
4 |
-
|
5 |
-
<p>Hvis du ikke har bedt om, at få dit medlemsskab ændret, og gerne ville vide mere omkring det, kontakt os venligst på denne mail !!siteemail!!</p>
|
6 |
-
|
7 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/admin_change_admin.html
DELETED
@@ -1,5 +0,0 @@
|
|
1 |
-
<p>En Administrator hos !!sitename!! har ændret medlemsskab niveau.</p>
|
2 |
-
|
3 |
-
<p>!!membership_change!!.</p>
|
4 |
-
|
5 |
-
<p>Log ind på din Wordpress admin her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/billing.html
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<p>Din betaings informationer hos !!sitename!! er bleven ændret.</p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>
|
5 |
-
Betalings Informationer:<br />
|
6 |
-
!!billing_address!!
|
7 |
-
</p>
|
8 |
-
|
9 |
-
<p>
|
10 |
-
!!cardtype!!: !!accountnumber!!<br />
|
11 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
12 |
-
</p>
|
13 |
-
|
14 |
-
<p>Hvis du ikke har bedt om, at ændre betalings informationer, så kontakt os via !!siteemail!!</p>
|
15 |
-
|
16 |
-
<p>Log ind til din medlems konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/billing_admin.html
DELETED
@@ -1,17 +0,0 @@
|
|
1 |
-
<p>Betalings informationer for !!display_name!! hos !!sitename!! er bleven ændret.</p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>
|
5 |
-
Betalings informationer:<br />
|
6 |
-
!!billing_name!!<br />
|
7 |
-
!!billing_street!!<br />
|
8 |
-
!!billing_city!!, !!billing_state!! !!billing_zip!! !!billing_country!!
|
9 |
-
!!billing_phone!!
|
10 |
-
</p>
|
11 |
-
|
12 |
-
<p>
|
13 |
-
!!cardtype!!: !!accountnumber!!<br />
|
14 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
15 |
-
</p>
|
16 |
-
|
17 |
-
<p>Log ind på din Wordpress kontrolpanel her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/billing_failure.html
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<p>Den nuværende abonnements betaling for dit !!sitename!! medlemsskab har fejlet. <strong>Klik på følgende link for at logge ind og opdatere dine betalings informationer for at undgå at din konto blive deaktiveret. !!login_link!!</strong></p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>De seneste konto informationer vi på arkiv er:</p>
|
5 |
-
|
6 |
-
<p>!!billing_address!!</p>
|
7 |
-
|
8 |
-
<p>
|
9 |
-
!!cardtype!!: !!accountnumber!!<br />
|
10 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
11 |
-
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/billing_failure_admin.html
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<p>Betaling Fejlet</p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>De seneste konto informationer vi på arkiv er:</p>
|
5 |
-
|
6 |
-
<p>!!billing_address!!</p>
|
7 |
-
|
8 |
-
<p>
|
9 |
-
!!cardtype!!: !!accountnumber!!<br />
|
10 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
11 |
-
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/cancel.html
DELETED
@@ -1,3 +0,0 @@
|
|
1 |
-
<p>Dit medlemsskab hos !!sitename!! er bleven annulleret.</p>
|
2 |
-
|
3 |
-
<p>Hvis du ikke har anmodet om at denne annullering, og ville vide mere omkring det. Kontakt os via !!siteemail!!</p>
|
|
|
|
|
|
languages/email/da_DK/cancel_admin.html
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<p>Medlemsskabet for !!user_login!! hos !!sitename!! er bleven annulleret.</p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>Medlemsskab Niveau: !!membership_level_name!!</p>
|
5 |
-
<p>Start Dato: !!startdate!!</p>
|
6 |
-
<p>Annullering Dato: !!enddate!!</p>
|
7 |
-
|
8 |
-
<p>Log ind på din Wordpress admin her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_check.html
DELETED
@@ -1,17 +0,0 @@
|
|
1 |
-
<p>Tak for din bestilling til !!sitename!!. Dit medlemsskab er nu aktiveret.</p>
|
2 |
-
|
3 |
-
!!instructions!!
|
4 |
-
|
5 |
-
<p>Nedenfor er detaljerne omkring dit nye medlemsskab og en faktura.</p>
|
6 |
-
|
7 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
8 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
9 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
10 |
-
!!membership_expiration!! !!discount_code!!
|
11 |
-
|
12 |
-
<p>
|
13 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
14 |
-
Regning Total: !!invoice_total!!
|
15 |
-
</p>
|
16 |
-
|
17 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_check_admin.html
DELETED
@@ -1,17 +0,0 @@
|
|
1 |
-
<p>Der er kommet et nyt medlem hos !!sitename!!.</p>
|
2 |
-
|
3 |
-
<p><strong>De har valgt at betale med check.</strong></p>
|
4 |
-
|
5 |
-
<p>Nedenfor er detaljer omkring det nye medlems konto og en forklaring på medlemmets faktura.</p>
|
6 |
-
|
7 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
8 |
-
<p>Meldlemsskab Niveau: !!membership_level_name!!</p>
|
9 |
-
<p>Medlemsskab Gebyr: !!membership_cost!!</p>
|
10 |
-
!!membership_expiration!! !!discount_code!!
|
11 |
-
|
12 |
-
<p>
|
13 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
14 |
-
Regning Total: $!!invoice_total!!
|
15 |
-
</p>
|
16 |
-
|
17 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_express.html
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
<p>Tak for din bestilling til !!sitename!!. Dit medlemsskab er nu aktiveret.</p>
|
2 |
-
<p>Nedenfor er detaljerne omkring dit nye medlemsskab og en faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Regning Total: !!invoice_total!!
|
12 |
-
</p>
|
13 |
-
|
14 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_express_admin.html
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
<p>Der er kommet et nyt medlem hos !!sitename!!.</p>
|
2 |
-
<p>Nedenfor er detaljer omkring det nye medlems konto og en forklaring på medlemmets faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskab Nivea: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskab Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Regning Total: !!invoice_total!!
|
12 |
-
</p>
|
13 |
-
|
14 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_free.html
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<p>Tak for din bestilling til !!sitename!!. Dit medlemsskab er nu aktiveret.</p>
|
2 |
-
<p>Nedenfor er detaljerne omkring dit nye medlemsskab.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
!!membership_expiration!! !!discount_code!!
|
7 |
-
|
8 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_free_admin.html
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<p>Der er kommet et nyt medlem hos !!sitename!!.</p>
|
2 |
-
<p>Nedenfor er detaljerne omkring det nye medlemsskabs konto.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
!!membership_expiration!! !!discount_code!!
|
7 |
-
|
8 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_freetrial.html
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
<p>Tak for din bestilling til !!sitename!!. Dit medlemsskab er nu aktiveret</p>
|
2 |
-
<p>Nedenfor er detaljerne omkring dit nye medlemsskab.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Betalings informationer i Arkivet:<br />
|
11 |
-
!!billing_address!!
|
12 |
-
</p>
|
13 |
-
|
14 |
-
<p>
|
15 |
-
!!cardtype!!: !!accountnumber!!<br />
|
16 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
17 |
-
</p>
|
18 |
-
|
19 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_freetrial_admin.html
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
<p>Der er kommet et nyt medlem hos !!sitename!!.</p>
|
2 |
-
<p>Nedenfor er detaljer omkring det nye medlems konto og en forklaring på medlemmets faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Betalings informationer i Arkivet:<br />
|
11 |
-
!!billing_address!!
|
12 |
-
</p>
|
13 |
-
|
14 |
-
<p>
|
15 |
-
!!cardtype!!: !!accountnumber!!<br />
|
16 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
17 |
-
</p>
|
18 |
-
|
19 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_paid.html
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
<p>Tak for din bestilling til !!sitename!!. Dit medlemsskab er nu aktiveret.</p>
|
2 |
-
<p>Nedenfor er detaljerne omkring dit nye medlemsskab og en faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Regning Total: !!invoice_total!!
|
12 |
-
</p>
|
13 |
-
<p>
|
14 |
-
Betalings Informationer:<br />
|
15 |
-
!!billing_address!!
|
16 |
-
</p>
|
17 |
-
|
18 |
-
<p>
|
19 |
-
!!cardtype!!: !!accountnumber!!<br />
|
20 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
21 |
-
</p>
|
22 |
-
|
23 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_paid_admin.html
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
<p>Der er kommet et nyt medlem hos !!sitename!!.</p>
|
2 |
-
<p>Nedenfor er detaljer omkring det nye medlems konto og en forklaring på medlemmets faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Regning Total: !!invoice_total!!
|
12 |
-
</p>
|
13 |
-
<p>
|
14 |
-
Betalings Informationer:<br />
|
15 |
-
!!billing_address!!
|
16 |
-
</p>
|
17 |
-
|
18 |
-
<p>
|
19 |
-
!!cardtype!!: !!accountnumber!!<br />
|
20 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
21 |
-
</p>
|
22 |
-
|
23 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_trial.html
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
<p>Tak for din bestilling til !!sitename!!. Dit medlemsskab er nu aktiveret.</p>
|
2 |
-
<p>Nedenfor er detaljerne omkring dit nye medlemsskab og en faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Regning Total: !!invoice_total!!
|
12 |
-
</p>
|
13 |
-
<p>
|
14 |
-
Betalings Informationer:<br />
|
15 |
-
!!billing_address!!
|
16 |
-
</p>
|
17 |
-
|
18 |
-
<p>
|
19 |
-
!!cardtype!!: !!accountnumber!!<br />
|
20 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
21 |
-
</p>
|
22 |
-
|
23 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/checkout_trial_admin.html
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
<p>Der er kommet et nyt medlem hos !!sitename!!.</p>
|
2 |
-
<p>Nedenfor er detaljer omkring det nye medlems konto og en forklaring på medlemmets faktura.</p>
|
3 |
-
|
4 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
5 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
6 |
-
<p>Medlemsskabs Gebyr: !!membership_cost!!</p>
|
7 |
-
!!membership_expiration!! !!discount_code!!
|
8 |
-
|
9 |
-
<p>
|
10 |
-
Faktura #!!invoice_id!! on !!invoice_date!!<br />
|
11 |
-
Regning Total: !!invoice_total!!
|
12 |
-
</p>
|
13 |
-
<p>
|
14 |
-
Betalings Informationer:<br />
|
15 |
-
!!billing_address!!
|
16 |
-
</p>
|
17 |
-
|
18 |
-
<p>
|
19 |
-
!!cardtype!!: !!accountnumber!!<br />
|
20 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
21 |
-
</p>
|
22 |
-
|
23 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/credit_card_expiring.html
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<p>Den nuværende abonnements betaling for dit !!sitename!! medlemsskab har fejlet. <strong>Klik på følgende link for at logge ind og opdatere dine betalings informationer for at undgå at din konto blive deaktiveret. !!login_link!!</strong></p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>De seneste konto informationer vi på arkiv er:</p>
|
5 |
-
|
6 |
-
<p>!!billing_name!!</br />
|
7 |
-
!!billing_address!!
|
8 |
-
</p>
|
9 |
-
|
10 |
-
<p>
|
11 |
-
!!cardtype!!: !!accountnumber!!<br />
|
12 |
-
Udløber: !!expirationmonth!!/!!expirationyear!!
|
13 |
-
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/default.html
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
!!body!!
|
|
languages/email/da_DK/footer.html
DELETED
@@ -1,4 +0,0 @@
|
|
1 |
-
<p>
|
2 |
-
Respectfully,<br />
|
3 |
-
!!sitename!!
|
4 |
-
</p>
|
|
|
|
|
|
|
|
languages/email/da_DK/header.html
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
<p>Kære !!name!!,</p>
|
|
languages/email/da_DK/invoice.html
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
<p>Thank you for your membership to !!sitename!!. Below is a receipt for your most recent membership invoice.</p>
|
2 |
-
|
3 |
-
<p>Account: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>
|
5 |
-
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
6 |
-
Total Billed: !!invoice_total!!
|
7 |
-
</p>
|
8 |
-
<p>
|
9 |
-
Billing Information:<br />
|
10 |
-
!!billing_address!!
|
11 |
-
</p>
|
12 |
-
|
13 |
-
<p>
|
14 |
-
!!cardtype!!: !!accountnumber!!<br />
|
15 |
-
Expires: !!expirationmonth!!/!!expirationyear!!
|
16 |
-
</p>
|
17 |
-
|
18 |
-
<p>Log in to your membership account here: !!login_link!!</p>
|
19 |
-
<p>To view an online version of this invoice, click here: !!invoice_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/membership_expired.html
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
<p>Dit medlemsskab hos !!sitename!! er ophørt.</p>
|
2 |
-
|
3 |
-
<p>Vi takker for din support.</p>
|
4 |
-
|
5 |
-
<p>Se vores nuværende medlems tilbud: !!levels_link!!</p>
|
6 |
-
|
7 |
-
<p>Log in, for at håndtere din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/membership_expiring.html
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
<p>Vi er glade for dit medlemsskab hos !!sitename!!. Dette er bare en påmindelse om, at dit medlemsskab ender den !!enddate!!.</p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
5 |
-
|
6 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
languages/email/da_DK/trial_ending.html
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<p>Vi er glade for dit medlemsskab hos !!sitename!!. Din prøveperiode ender den !!trial_end!!.</p>
|
2 |
-
|
3 |
-
<p>Konto: !!display_name!! (!!user_email!!)</p>
|
4 |
-
<p>Medlemsskabs Niveau: !!membership_level_name!!</p>
|
5 |
-
|
6 |
-
<p>Dit gebyr ville ændre sig fra !!trial_amount!! til !!billing_amount!! hver !!cycle_number!! !!cycle_period!!(s).</p>
|
7 |
-
|
8 |
-
<p>Log ind på din konto her: !!login_link!!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/gettext.sh
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
#---------------------------
|
2 |
-
# This script generates a new pmpro.pot file for use in translations.
|
3 |
-
# To generate a new pmpro.pot, cd to the main /paid-memberships-pro/ directory,
|
4 |
-
# then execute `languages/gettext.sh` from the command line.
|
5 |
-
# then fix the header info (helps to have the old pmpro.pot open before running script above)
|
6 |
-
# then execute `cp languages/pmpro.pot languages/pmpro.po` to copy the .pot to .po
|
7 |
-
# then execute `msgfmt languages/pmpro.po --output-file languages/pmpro.mo` to generate the .mo
|
8 |
-
#---------------------------
|
9 |
-
echo "Updating pmpro.pot... "
|
10 |
-
xgettext -j -o languages/pmpro.pot \
|
11 |
-
--default-domain=pmpro \
|
12 |
-
--language=PHP \
|
13 |
-
--keyword=_ \
|
14 |
-
--keyword=__ \
|
15 |
-
--keyword=_e \
|
16 |
-
--keyword=_ex \
|
17 |
-
--keyword=_n \
|
18 |
-
--keyword=_x \
|
19 |
-
--sort-by-file \
|
20 |
-
--package-version=1.0 \
|
21 |
-
--msgid-bugs-address="jason@strangerstudios.com" \
|
22 |
-
$(find . -name "*.php")
|
23 |
-
echo "Done!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/pmpro-cs_CZ.mo
DELETED
Binary file
|
languages/pmpro-cs_CZ.po
DELETED
@@ -1,2889 +0,0 @@
|
|
1 |
-
#
|
2 |
-
# Hi there! Details on how to help out translating Paid Memberships Pro can be found at:
|
3 |
-
# http://www.paidmembershipspro.com/documentation/languages/
|
4 |
-
#
|
5 |
-
msgid ""
|
6 |
-
msgstr ""
|
7 |
-
"Project-Id-Version: pmpro\n"
|
8 |
-
"POT-Creation-Date: 2013-12-10 12:14-0500\n"
|
9 |
-
"PO-Revision-Date: 2013-12-20 13:36+0100\n"
|
10 |
-
"Last-Translator: Milan Hrnčál <hrncal.junior@seznam.cz>\n"
|
11 |
-
"Language-Team: Stranger Studios <jason@strangerstudios.com>\n"
|
12 |
-
"MIME-Version: 1.0\n"
|
13 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
-
"Content-Transfer-Encoding: 8bit\n"
|
15 |
-
"Language: cs_CZ\n"
|
16 |
-
"X-Generator: Poedit 1.6.3\n"
|
17 |
-
|
18 |
-
#: adminpages/addons.php:5 adminpages/advancedsettings.php:5
|
19 |
-
#: adminpages/discountcodes.php:5 adminpages/emailsettings.php:5
|
20 |
-
#: adminpages/membershiplevels.php:5 adminpages/memberslist-csv.php:5
|
21 |
-
#: adminpages/memberslist.php:5 adminpages/orders-csv.php:5
|
22 |
-
#: adminpages/orders.php:5 adminpages/pagesettings.php:5
|
23 |
-
#: adminpages/paymentsettings.php:5
|
24 |
-
msgid "You do not have permissions to perform this action."
|
25 |
-
msgstr "K provedení této akce nemáte dostatečná opravnění."
|
26 |
-
|
27 |
-
#: adminpages/addons.php:79
|
28 |
-
msgid "Disabled"
|
29 |
-
msgstr "Nepovoleno"
|
30 |
-
|
31 |
-
#: adminpages/addons.php:79
|
32 |
-
msgid "Enabled"
|
33 |
-
msgstr "Povoleno"
|
34 |
-
|
35 |
-
#: adminpages/admin_header.php:25
|
36 |
-
msgid "Add a membership level to get started."
|
37 |
-
msgstr "Ke spuštění zadejte úroveň ćlenství"
|
38 |
-
|
39 |
-
#: adminpages/admin_header.php:27
|
40 |
-
msgid "Setup the membership pages"
|
41 |
-
msgstr "Nastavit stránky členů"
|
42 |
-
|
43 |
-
#: adminpages/admin_header.php:29
|
44 |
-
msgid "Setup your SSL certificate and payment gateway"
|
45 |
-
msgstr "Nastavení vašeho SSL certifikátu a platební brány"
|
46 |
-
|
47 |
-
#: adminpages/admin_header.php:38
|
48 |
-
msgid ""
|
49 |
-
"The billing details for some of your membership levels is not supported by "
|
50 |
-
"Stripe."
|
51 |
-
msgstr ""
|
52 |
-
"Pro některé uživatelské úrovně není možné zobrazit fakturační podrobnosti "
|
53 |
-
"(nepodporováno STRIPEM)."
|
54 |
-
|
55 |
-
#: adminpages/admin_header.php:46
|
56 |
-
msgid ""
|
57 |
-
"The billing details for this level are not supported by Stripe. Please "
|
58 |
-
"review the notes in the Billing Details section below."
|
59 |
-
msgstr ""
|
60 |
-
"Pro tuto úroveň nejsou podporovány fakturační údaje (nepodporuje STRIPE). "
|
61 |
-
"Níže, v části fakturační údaje, si přečtěte pokyny."
|
62 |
-
|
63 |
-
#: adminpages/admin_header.php:50 adminpages/admin_header.php:70
|
64 |
-
#: adminpages/admin_header.php:90 adminpages/admin_header.php:111
|
65 |
-
msgid "The levels with issues are highlighted below."
|
66 |
-
msgstr "Úrovně s otázkami jsou označeny níže."
|
67 |
-
|
68 |
-
#: adminpages/admin_header.php:52 adminpages/admin_header.php:72
|
69 |
-
#: adminpages/admin_header.php:92 adminpages/admin_header.php:113
|
70 |
-
msgid "Please edit your levels"
|
71 |
-
msgstr "Prosím upravte vaše úrovně"
|
72 |
-
|
73 |
-
#: adminpages/admin_header.php:58
|
74 |
-
msgid ""
|
75 |
-
"The billing details for some of your membership levels is not supported by "
|
76 |
-
"Payflow."
|
77 |
-
msgstr ""
|
78 |
-
"Fakturační údaje pro některé z vašich členských úrovní nejsou podporovány "
|
79 |
-
"Payflow."
|
80 |
-
|
81 |
-
#: adminpages/admin_header.php:66
|
82 |
-
msgid ""
|
83 |
-
"The billing details for this level are not supported by Payflow. Please "
|
84 |
-
"review the notes in the Billing Details section below."
|
85 |
-
msgstr ""
|
86 |
-
"Payflow nepodporuje fakturační detaily pro tuto úroveň. Níže, v části "
|
87 |
-
"fakturační údaje, si přečtěte pokyny."
|
88 |
-
|
89 |
-
#: adminpages/admin_header.php:78
|
90 |
-
msgid ""
|
91 |
-
"The billing details for some of your membership levels is not supported by "
|
92 |
-
"Braintree."
|
93 |
-
msgstr ""
|
94 |
-
"Braintree nepodporuje fakturační detaily pro některé vaše členské úrovně."
|
95 |
-
|
96 |
-
#: adminpages/admin_header.php:86
|
97 |
-
msgid ""
|
98 |
-
"The billing details for this level are not supported by Braintree. Please "
|
99 |
-
"review the notes in the Billing Details section below."
|
100 |
-
msgstr ""
|
101 |
-
"Braintree nepodporuje fakturační detaily pro tuto členskou úroveň. Prosím "
|
102 |
-
"prostudujte poznámky v sekci fakturační údaje. Tyto poznámky naleznete níže."
|
103 |
-
|
104 |
-
#: adminpages/admin_header.php:98
|
105 |
-
msgid ""
|
106 |
-
"The billing details for some of your membership levels is not supported by "
|
107 |
-
"TwoCheckout."
|
108 |
-
msgstr ""
|
109 |
-
"TwoCheckout nepodporuje fakturační detaily pro některé vaše členské úrovně."
|
110 |
-
|
111 |
-
#: adminpages/admin_header.php:107
|
112 |
-
msgid ""
|
113 |
-
"The billing details for this level are not supported by 2Checkout. Please "
|
114 |
-
"review the notes in the Billing Details section below."
|
115 |
-
msgstr ""
|
116 |
-
"TwoCheckout nepodporuje fakturační detaily pro tuto úroveň. Prosím "
|
117 |
-
"prostudujte poznámky v sekci fakturační údaje. Tyto poznámky naleznete níže."
|
118 |
-
|
119 |
-
#: adminpages/admin_header.php:127 adminpages/admin_header.php:106
|
120 |
-
msgid "Plugin Support"
|
121 |
-
msgstr "Podpora pluginu"
|
122 |
-
|
123 |
-
#: adminpages/admin_header.php:127 adminpages/admin_header.php:106
|
124 |
-
msgid "User Forum"
|
125 |
-
msgstr "Uživatelské fórum"
|
126 |
-
|
127 |
-
#: adminpages/admin_header.php:149 adminpages/membershiplevels.php:496
|
128 |
-
#: includes/adminpages.php:44 adminpages/admin_header.php:128
|
129 |
-
#: adminpages/membershiplevels.php:490
|
130 |
-
msgid "Membership Levels"
|
131 |
-
msgstr "Úroveň členství"
|
132 |
-
|
133 |
-
#: adminpages/admin_header.php:150 adminpages/pagesettings.php:92
|
134 |
-
#: adminpages/admin_header.php:129
|
135 |
-
msgid "Pages"
|
136 |
-
msgstr "Stránky"
|
137 |
-
|
138 |
-
#: adminpages/admin_header.php:151 adminpages/admin_header.php:130
|
139 |
-
msgid "Payment Gateway & SSL"
|
140 |
-
msgstr "Platební brány & SSL"
|
141 |
-
|
142 |
-
#: adminpages/admin_header.php:152 adminpages/memberslist.php:115
|
143 |
-
#: pages/account.php:52 adminpages/admin_header.php:131
|
144 |
-
msgid "Email"
|
145 |
-
msgstr "Email"
|
146 |
-
|
147 |
-
#: adminpages/admin_header.php:153 adminpages/admin_header.php:132
|
148 |
-
msgid "Advanced"
|
149 |
-
msgstr "Pokročilé"
|
150 |
-
|
151 |
-
#: adminpages/admin_header.php:154 includes/adminpages.php:14
|
152 |
-
#: includes/adminpages.php:69 adminpages/admin_header.php:133
|
153 |
-
msgid "Add Ons"
|
154 |
-
msgstr "Doplňky"
|
155 |
-
|
156 |
-
#: adminpages/advancedsettings.php:35
|
157 |
-
msgid "Your advanced settings have been updated."
|
158 |
-
msgstr "Vaše pokročilá nastavení budou aktualizována."
|
159 |
-
|
160 |
-
#: adminpages/advancedsettings.php:79 includes/adminpages.php:13
|
161 |
-
#: includes/adminpages.php:64
|
162 |
-
msgid "Advanced Settings"
|
163 |
-
msgstr "Pokročilá nastavení"
|
164 |
-
|
165 |
-
#: adminpages/advancedsettings.php:85
|
166 |
-
msgid "Message for Logged-in Non-members"
|
167 |
-
msgstr "Zpráva pro přihlášené v nečlenech"
|
168 |
-
|
169 |
-
#: adminpages/advancedsettings.php:89
|
170 |
-
msgid ""
|
171 |
-
"This message replaces the post content for non-members. Available variables"
|
172 |
-
msgstr "Tato zpráva nahrazuje obsah příspěvku pro nečleny. Dostupné proměné"
|
173 |
-
|
174 |
-
#: adminpages/advancedsettings.php:94
|
175 |
-
msgid "Message for Logged-out Users"
|
176 |
-
msgstr "Zpráva pro odhlášené uživatele"
|
177 |
-
|
178 |
-
#: adminpages/advancedsettings.php:98
|
179 |
-
msgid "This message replaces the post content for logged-out visitors."
|
180 |
-
msgstr "Tato zpráva nahrazuje obsah příspěvku pro odhlášené uživatele."
|
181 |
-
|
182 |
-
#: adminpages/advancedsettings.php:103
|
183 |
-
msgid "Message for RSS Feed"
|
184 |
-
msgstr "Zpráva pro RSS Feed"
|
185 |
-
|
186 |
-
#: adminpages/advancedsettings.php:107
|
187 |
-
msgid "This message replaces the post content in RSS feeds."
|
188 |
-
msgstr "Tato zpráva nahrazuje obsah příspěvku v RSSfeedu."
|
189 |
-
|
190 |
-
#: adminpages/advancedsettings.php:113
|
191 |
-
msgid "Show Excerpts to Non-Members?"
|
192 |
-
msgstr "Zobrazit ukázky pro nečleny?"
|
193 |
-
|
194 |
-
#: adminpages/advancedsettings.php:117
|
195 |
-
msgid "No - Hide excerpts."
|
196 |
-
msgstr "Ne - Skrýt ukázky"
|
197 |
-
|
198 |
-
#: adminpages/advancedsettings.php:118
|
199 |
-
msgid "Yes - Show excerpts."
|
200 |
-
msgstr "Ano - Ukázat ukázky"
|
201 |
-
|
202 |
-
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:187
|
203 |
-
#: adminpages/advancedsettings.php:199 adminpages/membershiplevels.php:569
|
204 |
-
#: adminpages/paymentsettings.php:429 adminpages/paymentsettings.php:454
|
205 |
-
#: includes/profile.php:123 adminpages/membershiplevels.php:563
|
206 |
-
#: adminpages/paymentsettings.php:414 includes/profile.php:121
|
207 |
-
msgid "No"
|
208 |
-
msgstr "Ne"
|
209 |
-
|
210 |
-
#: adminpages/advancedsettings.php:129
|
211 |
-
msgid "Hide Ads From All Members"
|
212 |
-
msgstr "Skrýt reklamy pro všechny členy"
|
213 |
-
|
214 |
-
#: adminpages/advancedsettings.php:130
|
215 |
-
msgid "Hide Ads From Certain Members"
|
216 |
-
msgstr "Skrýt reklamy pro některé členy"
|
217 |
-
|
218 |
-
#: adminpages/advancedsettings.php:137
|
219 |
-
msgid "Ads from the following plugins will be automatically turned off"
|
220 |
-
msgstr "Reklama z následujících pluginů se automaticky vypne"
|
221 |
-
|
222 |
-
#: adminpages/advancedsettings.php:138
|
223 |
-
msgid "To hide ads in your template code, use code like the following"
|
224 |
-
msgstr ""
|
225 |
-
"Chcete-li skrýt reklamy ve vašem kódu šablony, použijté kód jako je tento"
|
226 |
-
|
227 |
-
#: adminpages/advancedsettings.php:149
|
228 |
-
msgid "Choose Levels to Hide Ads From"
|
229 |
-
msgstr "Zvolte úrovně pro skrité reklam"
|
230 |
-
|
231 |
-
#: adminpages/advancedsettings.php:183
|
232 |
-
msgid "Redirect all traffic from registration page to /susbcription/?"
|
233 |
-
msgstr "Přesměrovat veškerý provoz z registrační stránky na / susbcription /?"
|
234 |
-
|
235 |
-
#: adminpages/advancedsettings.php:183
|
236 |
-
msgid "multisite only"
|
237 |
-
msgstr "Pouze pro multisite"
|
238 |
-
|
239 |
-
#: adminpages/advancedsettings.php:188 adminpages/membershiplevels.php:569
|
240 |
-
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:455
|
241 |
-
#: includes/profile.php:124 adminpages/membershiplevels.php:563
|
242 |
-
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
|
243 |
-
#: includes/profile.php:122
|
244 |
-
msgid "Yes"
|
245 |
-
msgstr "Ano"
|
246 |
-
|
247 |
-
#: adminpages/advancedsettings.php:195
|
248 |
-
msgid "Use reCAPTCHA?"
|
249 |
-
msgstr "Použít reCAPTCHU?"
|
250 |
-
|
251 |
-
#: adminpages/advancedsettings.php:200
|
252 |
-
msgid "Yes - Free memberships only."
|
253 |
-
msgstr "Ano - Pouze členové zdarma "
|
254 |
-
|
255 |
-
#: adminpages/advancedsettings.php:201
|
256 |
-
msgid "Yes - All memberships."
|
257 |
-
msgstr "Ano - všichni členové"
|
258 |
-
|
259 |
-
#: adminpages/advancedsettings.php:203
|
260 |
-
msgid "A free reCAPTCHA key is required."
|
261 |
-
msgstr "Je vyžadován volný reCAPTCHA klíč."
|
262 |
-
|
263 |
-
#: adminpages/advancedsettings.php:203
|
264 |
-
msgid "Click here to signup for reCAPTCHA"
|
265 |
-
msgstr "Klikněte zde pro registraci re CAPTCHA"
|
266 |
-
|
267 |
-
#: adminpages/advancedsettings.php:209
|
268 |
-
msgid "reCAPTCHA Public Key"
|
269 |
-
msgstr "reCAPTCHA veřejný klíč"
|
270 |
-
|
271 |
-
#: adminpages/advancedsettings.php:212
|
272 |
-
msgid "reCAPTCHA Private Key"
|
273 |
-
msgstr "reCAPTCHA osobní klíč"
|
274 |
-
|
275 |
-
#: adminpages/advancedsettings.php:218
|
276 |
-
msgid "Require Terms of Service on signups?"
|
277 |
-
msgstr "Vyžadovat souhlas s podmínkami služeb o registraci?"
|
278 |
-
|
279 |
-
#: adminpages/advancedsettings.php:225
|
280 |
-
msgid ""
|
281 |
-
"If yes, create a WordPress page containing your TOS agreement and assign it "
|
282 |
-
"using the dropdown above."
|
283 |
-
msgstr ""
|
284 |
-
"Pokud ano, WordPress vytvoří stránky obsahující váš souhlas s podmínkami "
|
285 |
-
"služeb a přiřadít jej pomocí rozevíracího seznamu výše."
|
286 |
-
|
287 |
-
#: adminpages/advancedsettings.php:284 adminpages/pagesettings.php:223
|
288 |
-
#: adminpages/paymentsettings.php:526 adminpages/pagesettings.php:209
|
289 |
-
#: adminpages/paymentsettings.php:485
|
290 |
-
msgid "Save Settings"
|
291 |
-
msgstr "Uložit nastavení"
|
292 |
-
|
293 |
-
#: adminpages/discountcodes.php:48
|
294 |
-
msgid "Discount code updated successfully."
|
295 |
-
msgstr "Slevový kód byl úspěšně upraven."
|
296 |
-
|
297 |
-
#: adminpages/discountcodes.php:55
|
298 |
-
msgid "Error updating discount code. That code may already be in use."
|
299 |
-
msgstr ""
|
300 |
-
"Chyba při aktualizaci slevového kupónu. Tento kupón může být již v provozu."
|
301 |
-
|
302 |
-
#: adminpages/discountcodes.php:64
|
303 |
-
msgid "Discount code added successfully."
|
304 |
-
msgstr "Slevový kód byl úspěšně přidán"
|
305 |
-
|
306 |
-
#: adminpages/discountcodes.php:71
|
307 |
-
msgid "Error adding discount code. That code may already be in use."
|
308 |
-
msgstr ""
|
309 |
-
"Chyba při přidání slevového kupónu. Tento kupón může být již v provozu."
|
310 |
-
|
311 |
-
#: adminpages/discountcodes.php:196
|
312 |
-
#, php-format
|
313 |
-
msgid "Error saving values for the %s level."
|
314 |
-
msgstr "Chyba při hodnotě pro %s úroveň."
|
315 |
-
|
316 |
-
#: adminpages/discountcodes.php:204
|
317 |
-
msgid "There were errors updating the level values: "
|
318 |
-
msgstr "Došlo k chybám při aktualizací hodnot úrovní:"
|
319 |
-
|
320 |
-
#: adminpages/discountcodes.php:234
|
321 |
-
#, php-format
|
322 |
-
msgid "Code %s deleted successfully."
|
323 |
-
msgstr "Kúpón %s byl úspěšně smazán."
|
324 |
-
|
325 |
-
#: adminpages/discountcodes.php:239
|
326 |
-
msgid ""
|
327 |
-
"Error deleting discount code. The code was only partially deleted. Please "
|
328 |
-
"try again."
|
329 |
-
msgstr ""
|
330 |
-
"Chyba při mazání slevového kupónu. Kód byl jen částečně odstraněn. Zkuste to "
|
331 |
-
"prosím znovu."
|
332 |
-
|
333 |
-
#: adminpages/discountcodes.php:245
|
334 |
-
msgid "Error deleting code. Please try again."
|
335 |
-
msgstr "Chyba při mazání kupónu. Zkuste to znovu."
|
336 |
-
|
337 |
-
#: adminpages/discountcodes.php:251
|
338 |
-
msgid "Code not found."
|
339 |
-
msgstr "Kupón nenalezen."
|
340 |
-
|
341 |
-
#: adminpages/discountcodes.php:264
|
342 |
-
msgid "Edit Discount Code"
|
343 |
-
msgstr "Upravit slevový kupón"
|
344 |
-
|
345 |
-
#: adminpages/discountcodes.php:266 adminpages/discountcodes.php:526
|
346 |
-
msgid "Add New Discount Code"
|
347 |
-
msgstr "Vložit nový slevový kupón"
|
348 |
-
|
349 |
-
#: adminpages/discountcodes.php:306 adminpages/discountcodes.php:547
|
350 |
-
#: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:511
|
351 |
-
#: adminpages/memberslist.php:111 adminpages/orders.php:597
|
352 |
-
#: adminpages/reports/login.php:140 adminpages/membershiplevels.php:505
|
353 |
-
msgid "ID"
|
354 |
-
msgstr "ID"
|
355 |
-
|
356 |
-
#: adminpages/discountcodes.php:307 adminpages/orders.php:211
|
357 |
-
msgid "This will be generated when you save."
|
358 |
-
msgstr "Toto bude generováno, když práci uložíte."
|
359 |
-
|
360 |
-
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:548
|
361 |
-
#: adminpages/orders.php:215 adminpages/orders.php:598
|
362 |
-
msgid "Code"
|
363 |
-
msgstr "Kód"
|
364 |
-
|
365 |
-
#: adminpages/discountcodes.php:349
|
366 |
-
msgid "Start Date"
|
367 |
-
msgstr "Počáteční datum"
|
368 |
-
|
369 |
-
#: adminpages/discountcodes.php:367 pages/billing.php:249
|
370 |
-
#: pages/checkout.php:532 pages/checkout.php:525
|
371 |
-
msgid "Expiration Date"
|
372 |
-
msgstr "Datum vypršení"
|
373 |
-
|
374 |
-
#: adminpages/discountcodes.php:385 adminpages/discountcodes.php:551
|
375 |
-
msgid "Uses"
|
376 |
-
msgstr "Uživatelé"
|
377 |
-
|
378 |
-
#: adminpages/discountcodes.php:388
|
379 |
-
msgid "Leave blank for unlimited uses."
|
380 |
-
msgstr "Pro neomezené použití zanechte prázdné."
|
381 |
-
|
382 |
-
#: adminpages/discountcodes.php:427 adminpages/membershiplevels.php:337
|
383 |
-
#: adminpages/membershiplevels.php:513 pages/levels.php:14
|
384 |
-
#: adminpages/membershiplevels.php:507
|
385 |
-
msgid "Initial Payment"
|
386 |
-
msgstr "Počáteční platba"
|
387 |
-
|
388 |
-
#: adminpages/discountcodes.php:428 adminpages/membershiplevels.php:338
|
389 |
-
msgid "The initial amount collected at registration."
|
390 |
-
msgstr "Počáteční částka získaná při registraci."
|
391 |
-
|
392 |
-
#: adminpages/discountcodes.php:432 adminpages/membershiplevels.php:342
|
393 |
-
msgid "Recurring Subscription"
|
394 |
-
msgstr "Opakované předplatné"
|
395 |
-
|
396 |
-
#: adminpages/discountcodes.php:433 adminpages/membershiplevels.php:343
|
397 |
-
msgid "Check if this level has a recurring subscription payment."
|
398 |
-
msgstr "Zkontrolujte, zda má tato úroveň opakující se platby předplatného."
|
399 |
-
|
400 |
-
#: adminpages/discountcodes.php:437
|
401 |
-
msgid "Billing Ammount"
|
402 |
-
msgstr "Fakturační množství"
|
403 |
-
|
404 |
-
#: adminpages/discountcodes.php:451 adminpages/membershiplevels.php:362
|
405 |
-
msgid "The amount to be billed one cycle after the initial payment."
|
406 |
-
msgstr "Částka, která má být účtována za jeden cyklus, po první platbě."
|
407 |
-
|
408 |
-
#: adminpages/discountcodes.php:456 adminpages/membershiplevels.php:380
|
409 |
-
msgid "Billing Cycle Limit"
|
410 |
-
msgstr "Limit fakturačního cyklu"
|
411 |
-
|
412 |
-
#: adminpages/discountcodes.php:459 adminpages/membershiplevels.php:384
|
413 |
-
msgid ""
|
414 |
-
"The <strong>total</strong> number of recurring billing cycles for this "
|
415 |
-
"level, including the trial period (if applicable) but not including the "
|
416 |
-
"initial payment. Set to zero if membership is indefinite."
|
417 |
-
msgstr ""
|
418 |
-
"<strong> Všech </ strong> počet opakujících se fakturačních cyklů na této "
|
419 |
-
"úrovni, včetně zkušební doby (pokud existuje), ale ne včetně počáteční "
|
420 |
-
"platby. Nastavit na nulu, pokud je členství na dobu neurčitou."
|
421 |
-
|
422 |
-
#: adminpages/discountcodes.php:464 adminpages/membershiplevels.php:393
|
423 |
-
msgid "Custom Trial"
|
424 |
-
msgstr "Vlastní zkušební verze"
|
425 |
-
|
426 |
-
#: adminpages/discountcodes.php:465 adminpages/membershiplevels.php:395
|
427 |
-
#: adminpages/membershiplevels.php:394
|
428 |
-
msgid "Check to add a custom trial period."
|
429 |
-
msgstr "Zkontrolujte, zda jste přidal vlastní zkušební dobu."
|
430 |
-
|
431 |
-
#: adminpages/discountcodes.php:469 adminpages/membershiplevels.php:404
|
432 |
-
#: adminpages/membershiplevels.php:398
|
433 |
-
msgid "Trial Billing Amount"
|
434 |
-
msgstr "Množství zkušebních fakturací"
|
435 |
-
|
436 |
-
#: adminpages/discountcodes.php:472 adminpages/membershiplevels.php:407
|
437 |
-
#: adminpages/membershiplevels.php:401
|
438 |
-
msgid "for the first"
|
439 |
-
msgstr "zaprvé"
|
440 |
-
|
441 |
-
#: adminpages/discountcodes.php:474 adminpages/membershiplevels.php:409
|
442 |
-
#: adminpages/membershiplevels.php:403
|
443 |
-
msgid "subscription payments"
|
444 |
-
msgstr "Předplatné"
|
445 |
-
|
446 |
-
#: adminpages/discountcodes.php:479 adminpages/membershiplevels.php:437
|
447 |
-
#: adminpages/membershiplevels.php:431
|
448 |
-
msgid "Membership Expiration"
|
449 |
-
msgstr "Vypršení členství"
|
450 |
-
|
451 |
-
#: adminpages/discountcodes.php:480
|
452 |
-
msgid "Check this to set an expiration date for new sign ups."
|
453 |
-
msgstr "Zkontorlujte datum vypršení platnosti nového zápisu."
|
454 |
-
|
455 |
-
#: adminpages/discountcodes.php:484 adminpages/membershiplevels.php:442
|
456 |
-
#: adminpages/membershiplevels.php:436
|
457 |
-
msgid "Expires In"
|
458 |
-
msgstr "Vyprší v"
|
459 |
-
|
460 |
-
#: adminpages/discountcodes.php:497
|
461 |
-
msgid ""
|
462 |
-
"How long before the expiration expires. Note that any future payments will "
|
463 |
-
"be cancelled when the membership expires."
|
464 |
-
msgstr ""
|
465 |
-
"Jak dlouho před vypršením platnosti. Všimněte si, že všechny budoucí platby "
|
466 |
-
"budou zrušeny po vypršení členství."
|
467 |
-
|
468 |
-
#: adminpages/discountcodes.php:525
|
469 |
-
msgid "Memberships Discount Codes"
|
470 |
-
msgstr "Slevové kupóny pro členy"
|
471 |
-
|
472 |
-
#: adminpages/discountcodes.php:535
|
473 |
-
msgid "Search Discount Codes"
|
474 |
-
msgstr "Najít slevové kupóny"
|
475 |
-
|
476 |
-
#: adminpages/discountcodes.php:538 adminpages/reports/login.php:81
|
477 |
-
msgid "Search"
|
478 |
-
msgstr "Hledat"
|
479 |
-
|
480 |
-
#: adminpages/discountcodes.php:549
|
481 |
-
msgid "Starts"
|
482 |
-
msgstr "Statistiky"
|
483 |
-
|
484 |
-
#: adminpages/discountcodes.php:550 adminpages/memberslist.php:121
|
485 |
-
#: adminpages/reports/login.php:145 includes/profile.php:120
|
486 |
-
#: includes/profile.php:118
|
487 |
-
msgid "Expires"
|
488 |
-
msgstr "Vyprší"
|
489 |
-
|
490 |
-
#: adminpages/discountcodes.php:552
|
491 |
-
msgid "Levels"
|
492 |
-
msgstr "Úrovně"
|
493 |
-
|
494 |
-
#: adminpages/discountcodes.php:570
|
495 |
-
msgid "Create your first discount code now"
|
496 |
-
msgstr "Nyní vytvořte Váš první slevový kupón"
|
497 |
-
|
498 |
-
#: adminpages/discountcodes.php:570
|
499 |
-
msgid ""
|
500 |
-
"Discount codes allow you to offer your memberships at discounted prices to "
|
501 |
-
"select customers."
|
502 |
-
msgstr ""
|
503 |
-
"Slevové kupóny vám umožňují nabízet své členství, pro vybrané zákazníky, za "
|
504 |
-
"zvýhodněné ceny"
|
505 |
-
|
506 |
-
#: adminpages/discountcodes.php:614 adminpages/membershiplevels.php:570
|
507 |
-
#: adminpages/orders.php:658 adminpages/membershiplevels.php:564
|
508 |
-
msgid "edit"
|
509 |
-
msgstr "upravit"
|
510 |
-
|
511 |
-
#: adminpages/discountcodes.php:617
|
512 |
-
#, php-format
|
513 |
-
msgid ""
|
514 |
-
"Are you sure you want to delete the %s discount code? The subscriptions for "
|
515 |
-
"existing users will not change, but new users will not be able to use this "
|
516 |
-
"code anymore."
|
517 |
-
msgstr ""
|
518 |
-
"Jste si jisti, že chcete smazat % s slevový kupón? Odběry pro stávající "
|
519 |
-
"uživatele se nezmění, ale noví uživatelé nebudou moci použít tyto kupóny."
|
520 |
-
|
521 |
-
#: adminpages/discountcodes.php:617 adminpages/membershiplevels.php:572
|
522 |
-
#: adminpages/orders.php:664 adminpages/membershiplevels.php:566
|
523 |
-
msgid "delete"
|
524 |
-
msgstr "smazat"
|
525 |
-
|
526 |
-
#: adminpages/emailsettings.php:60 includes/adminpages.php:12
|
527 |
-
#: includes/adminpages.php:59
|
528 |
-
msgid "Email Settings"
|
529 |
-
msgstr "Nastavení e-mailu"
|
530 |
-
|
531 |
-
#: adminpages/emailsettings.php:61
|
532 |
-
msgid ""
|
533 |
-
"By default, system generated emails are sent from "
|
534 |
-
"<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
|
535 |
-
"address using the fields below."
|
536 |
-
msgstr ""
|
537 |
-
"Ve výchozím nastavení jsou generovány e-maily, které jsou odesílány z "
|
538 |
-
"<em><strong>wordpress@yourdomain.com</strong></em>. Můžete aktualizovat z "
|
539 |
-
"adresy, pomocí níže uvedených polí."
|
540 |
-
|
541 |
-
#: adminpages/emailsettings.php:63
|
542 |
-
msgid ""
|
543 |
-
"To modify the appearance of system generated emails, add the files "
|
544 |
-
"<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
|
545 |
-
"directory. This will modify both the WordPress default messages as well as "
|
546 |
-
"messages generated by Paid Memberships Pro. <a title=\"Paid Memberships Pro "
|
547 |
-
"- Member Communications\" target=\"_blank\" href=\"http://www."
|
548 |
-
"paidmembershipspro.com/documentation/member-communications/\">Click here to "
|
549 |
-
"learn more about Paid Memberships Pro emails</a>."
|
550 |
-
msgstr ""
|
551 |
-
"Chcete-li změnit vzhled systémem generovaných e-mailů, přidejte soubory "
|
552 |
-
"<em>email_header.html < em> a <em>email_footer.html </em> do adresáře vašeho "
|
553 |
-
"motivu. To bude upravovat jak výchozí zprávy WordPress, tak i zprávy "
|
554 |
-
"generované pomocí Paid Memberships Pro. <a title=\"Paid Memberships Pro - "
|
555 |
-
"Member Communications\" target=\"_blank\" href=\"http://www."
|
556 |
-
"paidmembershipspro.com/documentation/member-communications/\"> Klikněte zde "
|
557 |
-
"a dozvíte se více o Paid Memberships Pro emails</a>."
|
558 |
-
|
559 |
-
#: adminpages/emailsettings.php:69
|
560 |
-
msgid "From Email"
|
561 |
-
msgstr "Z e-mailu"
|
562 |
-
|
563 |
-
#: adminpages/emailsettings.php:77
|
564 |
-
msgid "From Name"
|
565 |
-
msgstr "Z názvu"
|
566 |
-
|
567 |
-
#: adminpages/emailsettings.php:86
|
568 |
-
msgid "Send the site admin emails"
|
569 |
-
msgstr "Odešlete emaly správci webu"
|
570 |
-
|
571 |
-
#: adminpages/emailsettings.php:92
|
572 |
-
msgid "Checkout"
|
573 |
-
msgstr "Pokladna"
|
574 |
-
|
575 |
-
#: adminpages/emailsettings.php:96
|
576 |
-
msgid "when a member checks out."
|
577 |
-
msgstr "když členové zaplatí"
|
578 |
-
|
579 |
-
#: adminpages/emailsettings.php:101
|
580 |
-
msgid "Admin Changes"
|
581 |
-
msgstr "Změny správce"
|
582 |
-
|
583 |
-
#: adminpages/emailsettings.php:105
|
584 |
-
msgid "when an admin changes a user's membership level through the dashboard."
|
585 |
-
msgstr "když správce změní úrověň členství uživatelů přes nástěnku."
|
586 |
-
|
587 |
-
#: adminpages/emailsettings.php:110
|
588 |
-
msgid "Cancellation"
|
589 |
-
msgstr "Zrušení."
|
590 |
-
|
591 |
-
#: adminpages/emailsettings.php:114
|
592 |
-
msgid "when a user cancels his or her account."
|
593 |
-
msgstr "když uživatel zruší svůj účet."
|
594 |
-
|
595 |
-
#: adminpages/emailsettings.php:119
|
596 |
-
msgid "Bill Updates"
|
597 |
-
msgstr "Aktualizace účtenky"
|
598 |
-
|
599 |
-
#: adminpages/emailsettings.php:123
|
600 |
-
msgid "when a user updates his or her billing information."
|
601 |
-
msgstr "pokud uživatel aktualizuje svoje fakturační údaje."
|
602 |
-
|
603 |
-
#: adminpages/emailsettings.php:129
|
604 |
-
msgid "Send members emails"
|
605 |
-
msgstr "Poslat uživatelské e-maily"
|
606 |
-
|
607 |
-
#: adminpages/emailsettings.php:135
|
608 |
-
msgid "New Users"
|
609 |
-
msgstr "Noví uživatelé"
|
610 |
-
|
611 |
-
#: adminpages/emailsettings.php:139
|
612 |
-
msgid ""
|
613 |
-
"Default WP notification email. (Recommended: Leave unchecked. Members will "
|
614 |
-
"still get an email confirmation from PMPro after checkout.)"
|
615 |
-
msgstr ""
|
616 |
-
"Výchozí WP e-mailové upozornění. (Doporučeno: Nechte zaškrtnuté. Členové "
|
617 |
-
"budou ještě dostat e-mailem potvrzení od PMPro po vyzkoušení.)."
|
618 |
-
|
619 |
-
#: adminpages/membershiplevels.php:118
|
620 |
-
msgid "Membership level updated successfully."
|
621 |
-
msgstr "Úroveň členství byla úspěšne uprave."
|
622 |
-
|
623 |
-
#: adminpages/membershiplevels.php:124
|
624 |
-
msgid "Error updating membership level."
|
625 |
-
msgstr "Chyba při aktualizaci členské úrovně."
|
626 |
-
|
627 |
-
#: adminpages/membershiplevels.php:141
|
628 |
-
msgid "Membership level added successfully."
|
629 |
-
msgstr "Členská úroveň úspěšně přidána."
|
630 |
-
|
631 |
-
#: adminpages/membershiplevels.php:146
|
632 |
-
msgid "Error adding membership level."
|
633 |
-
msgstr "Chyba při přidávání členské úrovně."
|
634 |
-
|
635 |
-
#: adminpages/membershiplevels.php:179
|
636 |
-
#, php-format
|
637 |
-
msgid ""
|
638 |
-
"There was an error canceling the subscription for user with ID=%d. You will "
|
639 |
-
"want to check your payment gateway to see if their subscription is still "
|
640 |
-
"active."
|
641 |
-
msgstr ""
|
642 |
-
"Došlo k chybě při zrušení odběru pro uživatele s ID =%d. Budete chtít "
|
643 |
-
"zkontrolovat platební bránu, zda je jejich předplatné je stále aktivní."
|
644 |
-
|
645 |
-
#: adminpages/membershiplevels.php:182
|
646 |
-
msgid "Last Invoice"
|
647 |
-
msgstr "Poslední faktury"
|
648 |
-
|
649 |
-
#: adminpages/membershiplevels.php:196
|
650 |
-
msgid "Membership level deleted successfully."
|
651 |
-
msgstr "Úroveň členství byla úspěšně smazána."
|
652 |
-
|
653 |
-
#: adminpages/membershiplevels.php:201 adminpages/membershiplevels.php:207
|
654 |
-
msgid "Error deleting membership level."
|
655 |
-
msgstr "Chyb a při mazání členské úrovně."
|
656 |
-
|
657 |
-
#: adminpages/membershiplevels.php:222
|
658 |
-
msgid "Edit Membership Level"
|
659 |
-
msgstr "Změna uživatelské úrovně"
|
660 |
-
|
661 |
-
#: adminpages/membershiplevels.php:224
|
662 |
-
msgid "Add New Membership Level"
|
663 |
-
msgstr "Vložit novou úroveň členství"
|
664 |
-
|
665 |
-
#: adminpages/membershiplevels.php:291 adminpages/membershiplevels.php:512
|
666 |
-
#: adminpages/reports/login.php:142 adminpages/membershiplevels.php:506
|
667 |
-
msgid "Name"
|
668 |
-
msgstr "Jméno"
|
669 |
-
|
670 |
-
#: adminpages/membershiplevels.php:296
|
671 |
-
msgid "Description"
|
672 |
-
msgstr "Popis"
|
673 |
-
|
674 |
-
#: adminpages/membershiplevels.php:314
|
675 |
-
msgid "Confirmation Message"
|
676 |
-
msgstr "Potvrzovací zpráva"
|
677 |
-
|
678 |
-
#: adminpages/membershiplevels.php:333
|
679 |
-
msgid "Billing Details"
|
680 |
-
msgstr "Fakturační detaily"
|
681 |
-
|
682 |
-
#: adminpages/membershiplevels.php:347
|
683 |
-
msgid "Billing Amount"
|
684 |
-
msgstr "Množství faktur"
|
685 |
-
|
686 |
-
#: adminpages/membershiplevels.php:349
|
687 |
-
msgid "per"
|
688 |
-
msgstr "na"
|
689 |
-
|
690 |
-
#: adminpages/membershiplevels.php:353
|
691 |
-
msgid "Day(s)"
|
692 |
-
msgstr "Den(y)"
|
693 |
-
|
694 |
-
#: adminpages/membershiplevels.php:353
|
695 |
-
msgid "Month(s)"
|
696 |
-
msgstr "Měsíc(e)"
|
697 |
-
|
698 |
-
#: adminpages/membershiplevels.php:353
|
699 |
-
msgid "Week(s)"
|
700 |
-
msgstr "Týden(y)"
|
701 |
-
|
702 |
-
#: adminpages/membershiplevels.php:353
|
703 |
-
msgid "Year(s)"
|
704 |
-
msgstr "Rok(y)"
|
705 |
-
|
706 |
-
#: adminpages/membershiplevels.php:364
|
707 |
-
msgid ""
|
708 |
-
"Stripe integration currently only supports billing periods of \"Month\" or "
|
709 |
-
"\"Year\"."
|
710 |
-
msgstr ""
|
711 |
-
"Integrace Stripe v současné době podporuje pouze fakturace období \"Month\" "
|
712 |
-
"or \"Year\"."
|
713 |
-
|
714 |
-
#: adminpages/membershiplevels.php:366
|
715 |
-
msgid ""
|
716 |
-
"Braintree integration currently only supports billing periods of \"Month\" "
|
717 |
-
"or \"Year\"."
|
718 |
-
msgstr ""
|
719 |
-
"Integrace Braintree v současné době podporuje pouze fakturace období \"Month"
|
720 |
-
"\" or \"Year\"."
|
721 |
-
|
722 |
-
#: adminpages/membershiplevels.php:368
|
723 |
-
msgid ""
|
724 |
-
"Payflow integration currently only supports billing frequencies of 1 and "
|
725 |
-
"billing periods of \"Week\", \"Month\" or \"Year\"."
|
726 |
-
msgstr ""
|
727 |
-
"Integrace Payflow v současné době podporuje pouze fakturace frekvence 1 a "
|
728 |
-
"fakturace období \"Week\", \"Month\" nebo \"Year\"."
|
729 |
-
|
730 |
-
#: adminpages/membershiplevels.php:372
|
731 |
-
msgid ""
|
732 |
-
"After saving this level, make note of the ID and create a \"Plan\" in your "
|
733 |
-
"Braintree dashboard with the same settings and the \"Plan ID\" set to "
|
734 |
-
"<em>pmpro_#</em>, where # is the level ID."
|
735 |
-
msgstr ""
|
736 |
-
"Po uložení této úrovně si poznamenejte ID a vytvořte \"Plan\" ve vašem "
|
737 |
-
"Braintree nástěnce se stejným nastavením a \"Plan ID\" nastavte na "
|
738 |
-
"<em>pmpro_#</em>, kde # je úroveň ID."
|
739 |
-
|
740 |
-
#: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
|
741 |
-
#: adminpages/paymentsettings.php:174 adminpages/paymentsettings.php:170
|
742 |
-
msgid "Note"
|
743 |
-
msgstr "Poznámka"
|
744 |
-
|
745 |
-
#: adminpages/membershiplevels.php:374
|
746 |
-
msgid ""
|
747 |
-
"You will need to create a \"Plan\" in your Braintree dashboard with the same "
|
748 |
-
"settings and the \"Plan ID\" set to"
|
749 |
-
msgstr ""
|
750 |
-
"Budete muset vytvořit \"Plan\" v Braintree nástěnce se stejným nastavením a "
|
751 |
-
"\"Plan ID\" nastavit na"
|
752 |
-
|
753 |
-
#: adminpages/membershiplevels.php:386
|
754 |
-
msgid ""
|
755 |
-
"Stripe integration currently does not support billing limits. You can still "
|
756 |
-
"set an expiration date below."
|
757 |
-
msgstr ""
|
758 |
-
"Integrace Stripe v současné době nepodporuje fakturační limity. Níže můžete "
|
759 |
-
"nastavit datum vypršení platnosti."
|
760 |
-
|
761 |
-
#: adminpages/membershiplevels.php:398
|
762 |
-
msgid ""
|
763 |
-
"2Checkout integration does not support custom trials. You can do one period "
|
764 |
-
"trials by setting an initial payment different from the billing amount."
|
765 |
-
msgstr ""
|
766 |
-
"2Checkout integrace nepodporuje zkušební dobu. Můžete to udělat v jedné "
|
767 |
-
"zkušební době nastavením počáteční platbu, která se liší od fakturační "
|
768 |
-
"částky."
|
769 |
-
|
770 |
-
#: adminpages/membershiplevels.php:412 adminpages/membershiplevels.php:406
|
771 |
-
msgid ""
|
772 |
-
"Stripe integration currently does not support trial amounts greater than $0."
|
773 |
-
msgstr ""
|
774 |
-
"Integrace Stripe v současné době nepodporuje zkušební částky vyšší než 0 Kč."
|
775 |
-
|
776 |
-
#: adminpages/membershiplevels.php:416 adminpages/membershiplevels.php:410
|
777 |
-
msgid ""
|
778 |
-
"Braintree integration currently does not support trial amounts greater than "
|
779 |
-
"$0."
|
780 |
-
msgstr ""
|
781 |
-
"Integrace Braintree v současné době nepodporuje zkušební částky vyšší než 0 "
|
782 |
-
"Kč."
|
783 |
-
|
784 |
-
#: adminpages/membershiplevels.php:420 adminpages/membershiplevels.php:414
|
785 |
-
msgid ""
|
786 |
-
"Payflow integration currently does not support trial amounts greater than $0."
|
787 |
-
msgstr ""
|
788 |
-
"Integrace Payflow v současné době nepodporuje zkušební částky vyšší než 0 Kč."
|
789 |
-
|
790 |
-
#: adminpages/membershiplevels.php:428 adminpages/membershiplevels.php:422
|
791 |
-
msgid "Other Settings"
|
792 |
-
msgstr "Další nastavení"
|
793 |
-
|
794 |
-
#: adminpages/membershiplevels.php:432 adminpages/membershiplevels.php:426
|
795 |
-
msgid "Disable New Signups"
|
796 |
-
msgstr "Zastavení novích registrací"
|
797 |
-
|
798 |
-
#: adminpages/membershiplevels.php:433 adminpages/membershiplevels.php:427
|
799 |
-
msgid ""
|
800 |
-
"Check to hide this level from the membership levels page and disable "
|
801 |
-
"registration."
|
802 |
-
msgstr ""
|
803 |
-
"Podívejte se na skrytí této úrovně na stránce úrovní a zakažte registraci."
|
804 |
-
|
805 |
-
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:432
|
806 |
-
msgid "Check this to set when membership access expires."
|
807 |
-
msgstr "Zkontrolujte, zda je toto nastaveno, když vyprší přístup k členství."
|
808 |
-
|
809 |
-
#: adminpages/membershiplevels.php:455 adminpages/membershiplevels.php:449
|
810 |
-
msgid ""
|
811 |
-
"Set the duration of membership access. Note that the any future payments "
|
812 |
-
"(recurring subscription, if any) will be cancelled when the membership "
|
813 |
-
"expires."
|
814 |
-
msgstr ""
|
815 |
-
"Nastavte dobu trvání přístupu členství. Všimněte si, že všechny budoucí "
|
816 |
-
"platby (opakující předplatné, pokud existuje) budou zrušeny, pokud vyprší "
|
817 |
-
"členství."
|
818 |
-
|
819 |
-
#: adminpages/membershiplevels.php:463 adminpages/membershiplevels.php:457
|
820 |
-
msgid "Content Settings"
|
821 |
-
msgstr "Nastavení obsahu"
|
822 |
-
|
823 |
-
#: adminpages/membershiplevels.php:467 adminpages/membershiplevels.php:461
|
824 |
-
msgid "Categories"
|
825 |
-
msgstr "Kategorie"
|
826 |
-
|
827 |
-
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:490
|
828 |
-
msgid "Add New Level"
|
829 |
-
msgstr "Vložit novou úroveň"
|
830 |
-
|
831 |
-
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:502
|
832 |
-
#: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
|
833 |
-
msgid "Search Levels"
|
834 |
-
msgstr "Najít úrovně"
|
835 |
-
|
836 |
-
#: adminpages/membershiplevels.php:514 adminpages/membershiplevels.php:508
|
837 |
-
msgid "Billing Cycle"
|
838 |
-
msgstr "Cyklus fakturací"
|
839 |
-
|
840 |
-
#: adminpages/membershiplevels.php:515 adminpages/membershiplevels.php:509
|
841 |
-
msgid "Trial Cycle"
|
842 |
-
msgstr "Zkušební cyklus"
|
843 |
-
|
844 |
-
#: adminpages/membershiplevels.php:516 pages/confirmation.php:83
|
845 |
-
#: pages/invoice.php:70 adminpages/membershiplevels.php:510
|
846 |
-
#: pages/confirmation.php:81 pages/invoice.php:68
|
847 |
-
msgid "Expiration"
|
848 |
-
msgstr "Vypršení"
|
849 |
-
|
850 |
-
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:511
|
851 |
-
msgid "Allow Signups"
|
852 |
-
msgstr "Povolit registraci"
|
853 |
-
|
854 |
-
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:534
|
855 |
-
msgid "FREE"
|
856 |
-
msgstr "ZDARMA"
|
857 |
-
|
858 |
-
#: adminpages/membershiplevels.php:549 adminpages/membershiplevels.php:543
|
859 |
-
msgid "every"
|
860 |
-
msgstr "každý"
|
861 |
-
|
862 |
-
#: adminpages/membershiplevels.php:551 adminpages/membershiplevels.php:559
|
863 |
-
#: adminpages/reports/memberships.php:304
|
864 |
-
#: adminpages/reports/memberships.php:315 adminpages/reports/sales.php:204
|
865 |
-
#: adminpages/reports/sales.php:215 adminpages/membershiplevels.php:545
|
866 |
-
#: adminpages/membershiplevels.php:553 adminpages/reports/sales.php:195
|
867 |
-
#: adminpages/reports/sales.php:206
|
868 |
-
msgid "for"
|
869 |
-
msgstr "pro"
|
870 |
-
|
871 |
-
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:560
|
872 |
-
msgid "After"
|
873 |
-
msgstr "Po"
|
874 |
-
|
875 |
-
#: adminpages/membershiplevels.php:571 adminpages/orders.php:661
|
876 |
-
#: adminpages/membershiplevels.php:565
|
877 |
-
msgid "copy"
|
878 |
-
msgstr "kopie"
|
879 |
-
|
880 |
-
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:566
|
881 |
-
#, php-format
|
882 |
-
msgid ""
|
883 |
-
"Are you sure you want to delete membership level %s? All subscriptions will "
|
884 |
-
"be cancelled."
|
885 |
-
msgstr ""
|
886 |
-
"Jste si jisti, že chcete smazat úrovně členství % s? Všechny odběry budou "
|
887 |
-
"zrušeny."
|
888 |
-
|
889 |
-
#: adminpages/memberslist.php:25 includes/adminpages.php:15
|
890 |
-
#: includes/adminpages.php:74
|
891 |
-
msgid "Members List"
|
892 |
-
msgstr "Seznam členů"
|
893 |
-
|
894 |
-
#: adminpages/memberslist.php:26 adminpages/orders.php:522
|
895 |
-
msgid "Export to CSV"
|
896 |
-
msgstr "Export do CSV"
|
897 |
-
|
898 |
-
#: adminpages/memberslist.php:30 adminpages/reports/login.php:65
|
899 |
-
#: adminpages/reports/memberships.php:292 adminpages/reports/sales.php:194
|
900 |
-
#: adminpages/reports/sales.php:185
|
901 |
-
msgid "Show"
|
902 |
-
msgstr "Ukaž"
|
903 |
-
|
904 |
-
#: adminpages/memberslist.php:32 adminpages/reports/login.php:67
|
905 |
-
#: adminpages/reports/memberships.php:317 adminpages/reports/sales.php:217
|
906 |
-
#: adminpages/reports/sales.php:208
|
907 |
-
msgid "All Levels"
|
908 |
-
msgstr "Všechny úrovně"
|
909 |
-
|
910 |
-
#: adminpages/memberslist.php:46 adminpages/memberslist.php:49
|
911 |
-
msgid "Search Members"
|
912 |
-
msgstr "Prohledat členy"
|
913 |
-
|
914 |
-
#: adminpages/memberslist.php:103
|
915 |
-
#, php-format
|
916 |
-
msgid "%d members found."
|
917 |
-
msgstr "%d členů nalezeno"
|
918 |
-
|
919 |
-
#: adminpages/memberslist.php:112 pages/account.php:51 pages/checkout.php:171
|
920 |
-
#: pages/checkout.php:168
|
921 |
-
msgid "Username"
|
922 |
-
msgstr "Uživatelské jméno"
|
923 |
-
|
924 |
-
#: adminpages/memberslist.php:113
|
925 |
-
msgid "First Name"
|
926 |
-
msgstr "Jméno"
|
927 |
-
|
928 |
-
#: adminpages/memberslist.php:114
|
929 |
-
msgid "Last Name"
|
930 |
-
msgstr "Příjmení"
|
931 |
-
|
932 |
-
#: adminpages/memberslist.php:117 pages/account.php:90 pages/billing.php:58
|
933 |
-
#: pages/checkout.php:321 pages/confirmation.php:61 pages/invoice.php:48
|
934 |
-
#: pages/checkout.php:314 pages/confirmation.php:59 pages/invoice.php:46
|
935 |
-
msgid "Billing Address"
|
936 |
-
msgstr "Fakturační adresa"
|
937 |
-
|
938 |
-
#: adminpages/memberslist.php:118 adminpages/pagesettings.php:51
|
939 |
-
#: adminpages/reports/login.php:143
|
940 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:187
|
941 |
-
msgid "Membership"
|
942 |
-
msgstr "Členství"
|
943 |
-
|
944 |
-
#: adminpages/memberslist.php:119
|
945 |
-
msgid "Fee"
|
946 |
-
msgstr "Odměna"
|
947 |
-
|
948 |
-
#: adminpages/memberslist.php:120 adminpages/reports/login.php:144
|
949 |
-
msgid "Joined"
|
950 |
-
msgstr "Připojil"
|
951 |
-
|
952 |
-
#: adminpages/memberslist.php:184
|
953 |
-
msgid "Never"
|
954 |
-
msgstr "Nikdy"
|
955 |
-
|
956 |
-
#: adminpages/memberslist.php:195 adminpages/reports/login.php:210
|
957 |
-
msgid "No members found."
|
958 |
-
msgstr "Žádní členové nebyly nalezeni"
|
959 |
-
|
960 |
-
#: adminpages/memberslist.php:195 adminpages/reports/login.php:210
|
961 |
-
msgid "Search all levels"
|
962 |
-
msgstr "Prohledat všechny úrovně"
|
963 |
-
|
964 |
-
#: adminpages/orders.php:26
|
965 |
-
msgid "Order deleted successfully."
|
966 |
-
msgstr "Objednávka byla úspěšně smazána."
|
967 |
-
|
968 |
-
#: adminpages/orders.php:31
|
969 |
-
msgid "Error deleting order."
|
970 |
-
msgstr "Chyba při mazání objednávky"
|
971 |
-
|
972 |
-
#: adminpages/orders.php:119
|
973 |
-
msgid "Order saved successfully."
|
974 |
-
msgstr "Objednávka byla úspěšne uložena."
|
975 |
-
|
976 |
-
#: adminpages/orders.php:124
|
977 |
-
msgid "Error updating order timestamp."
|
978 |
-
msgstr "Chyba při aktualizaci časového razítka"
|
979 |
-
|
980 |
-
#: adminpages/orders.php:130
|
981 |
-
msgid "Error saving order."
|
982 |
-
msgstr "Chyba při ukládání zboží"
|
983 |
-
|
984 |
-
#: adminpages/orders.php:195
|
985 |
-
msgid "Order"
|
986 |
-
msgstr "Objednávka"
|
987 |
-
|
988 |
-
#: adminpages/orders.php:197
|
989 |
-
msgid "New Order"
|
990 |
-
msgstr "Nová objednávka"
|
991 |
-
|
992 |
-
#: adminpages/orders.php:220
|
993 |
-
msgid "Randomly generated for you."
|
994 |
-
msgstr "Náhodně generované pro Vás."
|
995 |
-
|
996 |
-
#: adminpages/orders.php:225
|
997 |
-
msgid "User ID"
|
998 |
-
msgstr "Uživatelské ID"
|
999 |
-
|
1000 |
-
#: adminpages/orders.php:234
|
1001 |
-
msgid "Membership Level ID"
|
1002 |
-
msgstr "ID členské úrovně"
|
1003 |
-
|
1004 |
-
#: adminpages/orders.php:243
|
1005 |
-
msgid "Billing Name"
|
1006 |
-
msgstr "Fakturační adresa"
|
1007 |
-
|
1008 |
-
#: adminpages/orders.php:251
|
1009 |
-
msgid "Billing Street"
|
1010 |
-
msgstr "Fakturační ulice"
|
1011 |
-
|
1012 |
-
#: adminpages/orders.php:258
|
1013 |
-
msgid "Billing City"
|
1014 |
-
msgstr "Fakturační město"
|
1015 |
-
|
1016 |
-
#: adminpages/orders.php:265
|
1017 |
-
msgid "Billing State"
|
1018 |
-
msgstr "Fakturační stát"
|
1019 |
-
|
1020 |
-
#: adminpages/orders.php:272
|
1021 |
-
msgid "Billing Postal Code"
|
1022 |
-
msgstr "Fakturační PSČ"
|
1023 |
-
|
1024 |
-
#: adminpages/orders.php:279
|
1025 |
-
msgid "Billing Country"
|
1026 |
-
msgstr "Fakturační země"
|
1027 |
-
|
1028 |
-
#: adminpages/orders.php:287
|
1029 |
-
msgid "Billing Phone"
|
1030 |
-
msgstr "Fakturační telefon"
|
1031 |
-
|
1032 |
-
#: adminpages/orders.php:296
|
1033 |
-
msgid "Sub Total"
|
1034 |
-
msgstr "Mezisoučet"
|
1035 |
-
|
1036 |
-
#: adminpages/orders.php:304 pages/invoice.php:80 pages/invoice.php:78
|
1037 |
-
msgid "Tax"
|
1038 |
-
msgstr "Daň"
|
1039 |
-
|
1040 |
-
#: adminpages/orders.php:312
|
1041 |
-
msgid "Coupon Amount"
|
1042 |
-
msgstr "Množství kupónu"
|
1043 |
-
|
1044 |
-
#: adminpages/orders.php:320 adminpages/orders.php:602 pages/invoice.php:84
|
1045 |
-
#: pages/invoice.php:82
|
1046 |
-
msgid "Total"
|
1047 |
-
msgstr "Celkem"
|
1048 |
-
|
1049 |
-
#: adminpages/orders.php:325
|
1050 |
-
msgid "Should be subtotal + tax - couponamount."
|
1051 |
-
msgstr "Měl by obsahovat součet + daň - množství kupónu"
|
1052 |
-
|
1053 |
-
#: adminpages/orders.php:330
|
1054 |
-
msgid "Payment Type"
|
1055 |
-
msgstr "Typ platby"
|
1056 |
-
|
1057 |
-
#: adminpages/orders.php:335
|
1058 |
-
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
|
1059 |
-
msgstr "Například PayPal Express, PayPal Standard, Kreditní karta."
|
1060 |
-
|
1061 |
-
#: adminpages/orders.php:339 pages/billing.php:234 pages/checkout.php:517
|
1062 |
-
#: pages/checkout.php:510
|
1063 |
-
msgid "Card Type"
|
1064 |
-
msgstr "Typ karty"
|
1065 |
-
|
1066 |
-
#: adminpages/orders.php:344
|
1067 |
-
msgid "e.g. Visa, MasterCard, AMEX, etc"
|
1068 |
-
msgstr "Například Visa, MasterCard, AMEX, atd."
|
1069 |
-
|
1070 |
-
#: adminpages/orders.php:348 adminpages/paymentsettings.php:347
|
1071 |
-
msgid "Account Number"
|
1072 |
-
msgstr "Číslo účtu"
|
1073 |
-
|
1074 |
-
#: adminpages/orders.php:353
|
1075 |
-
msgid "Obscure all but last 4 digits."
|
1076 |
-
msgstr "Vše nejasné, ale poslední 4 čísla"
|
1077 |
-
|
1078 |
-
#: adminpages/orders.php:358
|
1079 |
-
msgid "Expiration Month"
|
1080 |
-
msgstr "Datum expirace"
|
1081 |
-
|
1082 |
-
#: adminpages/orders.php:365
|
1083 |
-
msgid "Expiration Year"
|
1084 |
-
msgstr "Rok expirace"
|
1085 |
-
|
1086 |
-
#: adminpages/orders.php:373 adminpages/orders.php:606
|
1087 |
-
msgid "Status"
|
1088 |
-
msgstr "Postavení"
|
1089 |
-
|
1090 |
-
#: adminpages/orders.php:394 adminpages/orders.php:604
|
1091 |
-
msgid "Gateway"
|
1092 |
-
msgstr "Brána"
|
1093 |
-
|
1094 |
-
#: adminpages/orders.php:398
|
1095 |
-
msgid "Testing Only"
|
1096 |
-
msgstr "Pouze testování"
|
1097 |
-
|
1098 |
-
#: adminpages/orders.php:399 adminpages/paymentsettings.php:159
|
1099 |
-
#: adminpages/paymentsettings.php:157
|
1100 |
-
msgid "Pay by Check"
|
1101 |
-
msgstr "Platit kupónem"
|
1102 |
-
|
1103 |
-
#: adminpages/orders.php:411 adminpages/paymentsettings.php:179
|
1104 |
-
#: adminpages/paymentsettings.php:175
|
1105 |
-
msgid "Gateway Environment"
|
1106 |
-
msgstr "Brána životního prostředí"
|
1107 |
-
|
1108 |
-
#: adminpages/orders.php:415 adminpages/paymentsettings.php:183
|
1109 |
-
#: adminpages/paymentsettings.php:179
|
1110 |
-
msgid "Sandbox/Testing"
|
1111 |
-
msgstr "Bezpečnostní mechanismus / testování"
|
1112 |
-
|
1113 |
-
#: adminpages/orders.php:416 adminpages/paymentsettings.php:184
|
1114 |
-
#: adminpages/paymentsettings.php:180
|
1115 |
-
msgid "Live/Production"
|
1116 |
-
msgstr "Naživo / produkce"
|
1117 |
-
|
1118 |
-
#: adminpages/orders.php:423
|
1119 |
-
msgid "Payment Transaction ID"
|
1120 |
-
msgstr "Číslo platební transakce"
|
1121 |
-
|
1122 |
-
#: adminpages/orders.php:428
|
1123 |
-
msgid "Generated by the gateway. Useful to cross reference orders."
|
1124 |
-
msgstr "Generováno bránou. Užitečný pro spárování referenčních zakázek."
|
1125 |
-
|
1126 |
-
#: adminpages/orders.php:432
|
1127 |
-
msgid "Subscription Transaction ID"
|
1128 |
-
msgstr "Číslo předplatného"
|
1129 |
-
|
1130 |
-
#: adminpages/orders.php:437
|
1131 |
-
msgid "Generated by the gateway. Useful to cross reference subscriptions."
|
1132 |
-
msgstr "Generováno bránou. Užitečný pro spárování referenčního předplatného."
|
1133 |
-
|
1134 |
-
#: adminpages/orders.php:442 adminpages/orders.php:607 pages/invoice.php:107
|
1135 |
-
#: pages/invoice.php:105
|
1136 |
-
msgid "Date"
|
1137 |
-
msgstr "Datum"
|
1138 |
-
|
1139 |
-
#: adminpages/orders.php:477
|
1140 |
-
msgid "Affiliate ID"
|
1141 |
-
msgstr "Partnerské ID"
|
1142 |
-
|
1143 |
-
#: adminpages/orders.php:485
|
1144 |
-
msgid "Affiliate SubID"
|
1145 |
-
msgstr "Partnerské subID"
|
1146 |
-
|
1147 |
-
#: adminpages/orders.php:495
|
1148 |
-
msgid "Notes"
|
1149 |
-
msgstr "Poznámky"
|
1150 |
-
|
1151 |
-
#: adminpages/orders.php:510
|
1152 |
-
msgid "Save Order"
|
1153 |
-
msgstr "Uložit"
|
1154 |
-
|
1155 |
-
#: adminpages/orders.php:511 pages/billing.php:295
|
1156 |
-
msgid "Cancel"
|
1157 |
-
msgstr "Zrušit"
|
1158 |
-
|
1159 |
-
#: adminpages/orders.php:520 includes/adminpages.php:17
|
1160 |
-
#: includes/adminpages.php:84
|
1161 |
-
msgid "Orders"
|
1162 |
-
msgstr "Objednávky"
|
1163 |
-
|
1164 |
-
#: adminpages/orders.php:521
|
1165 |
-
msgid "Add New Order"
|
1166 |
-
msgstr "Vložit novou objednávku"
|
1167 |
-
|
1168 |
-
#: adminpages/orders.php:535 adminpages/orders.php:538
|
1169 |
-
msgid "Search Orders"
|
1170 |
-
msgstr "Najít objednávku"
|
1171 |
-
|
1172 |
-
#: adminpages/orders.php:590
|
1173 |
-
#, php-format
|
1174 |
-
msgid "%d orders found."
|
1175 |
-
msgstr "%d objednávek nalezeno."
|
1176 |
-
|
1177 |
-
#: adminpages/orders.php:599 adminpages/paymentsettings.php:215
|
1178 |
-
#: adminpages/reports/login.php:141 adminpages/paymentsettings.php:211
|
1179 |
-
msgid "User"
|
1180 |
-
msgstr "Uživatel"
|
1181 |
-
|
1182 |
-
#: adminpages/orders.php:601 includes/profile.php:27 pages/checkout.php:33
|
1183 |
-
#: pages/confirmation.php:47 pages/confirmation.php:64
|
1184 |
-
#: pages/confirmation.php:105 pages/invoice.php:28 pages/invoice.php:51
|
1185 |
-
#: includes/profile.php:25 pages/checkout.php:34 pages/confirmation.php:46
|
1186 |
-
#: pages/confirmation.php:62 pages/confirmation.php:103 pages/invoice.php:27
|
1187 |
-
#: pages/invoice.php:49
|
1188 |
-
msgid "Membership Level"
|
1189 |
-
msgstr "Úroveň členství"
|
1190 |
-
|
1191 |
-
#: adminpages/orders.php:603 adminpages/orders.php:651
|
1192 |
-
msgid "Payment"
|
1193 |
-
msgstr "Platba"
|
1194 |
-
|
1195 |
-
#: adminpages/orders.php:605
|
1196 |
-
msgid "Transaction IDs"
|
1197 |
-
msgstr "Číslo transakce"
|
1198 |
-
|
1199 |
-
#: adminpages/orders.php:630
|
1200 |
-
msgid "deleted"
|
1201 |
-
msgstr "smazáno"
|
1202 |
-
|
1203 |
-
#: adminpages/orders.php:653
|
1204 |
-
msgid "Subscription"
|
1205 |
-
msgstr "Předplatné"
|
1206 |
-
|
1207 |
-
#: adminpages/orders.php:664
|
1208 |
-
#, php-format
|
1209 |
-
msgid ""
|
1210 |
-
"Deleting orders is permanent and can affect active users. Are you sure you "
|
1211 |
-
"want to delete order %s?"
|
1212 |
-
msgstr ""
|
1213 |
-
"Vymazání objednávek je trvalé a může to mít vliv na aktivní uživatele. Jste "
|
1214 |
-
"si jisti, že chcete smazat objednávky % s?"
|
1215 |
-
|
1216 |
-
#: adminpages/orders.php:674
|
1217 |
-
msgid "No orders found."
|
1218 |
-
msgstr "žádné nalezené objednávky"
|
1219 |
-
|
1220 |
-
#: adminpages/pagesettings.php:83
|
1221 |
-
msgid "The following pages have been created for you"
|
1222 |
-
msgstr "Následující stránky budou vytvořeny pro Vás"
|
1223 |
-
|
1224 |
-
#: adminpages/pagesettings.php:98
|
1225 |
-
msgid ""
|
1226 |
-
"Manage the WordPress pages assigned to each required Paid Memberships Pro "
|
1227 |
-
"page."
|
1228 |
-
msgstr ""
|
1229 |
-
"Správa WordPress stránky přiřazené ke každé požadované, placené Memberships "
|
1230 |
-
"Pro page."
|
1231 |
-
|
1232 |
-
#: adminpages/pagesettings.php:104
|
1233 |
-
msgid ""
|
1234 |
-
"Assign the WordPress pages for each required Paid Memberships Pro page or"
|
1235 |
-
msgstr "Přiřaďte Wordpress stránku pro každé požadované placené členství nebo,"
|
1236 |
-
|
1237 |
-
#: adminpages/pagesettings.php:104
|
1238 |
-
msgid "click here to let us generate them for you"
|
1239 |
-
msgstr "klikněte zde a my vám ho vytvoříme"
|
1240 |
-
|
1241 |
-
#: adminpages/pagesettings.php:112
|
1242 |
-
msgid "Account Page"
|
1243 |
-
msgstr "Stránka účtu"
|
1244 |
-
|
1245 |
-
#: adminpages/pagesettings.php:119 adminpages/pagesettings.php:134
|
1246 |
-
#: adminpages/pagesettings.php:149 adminpages/pagesettings.php:165
|
1247 |
-
#: adminpages/pagesettings.php:181 adminpages/pagesettings.php:197
|
1248 |
-
#: adminpages/pagesettings.php:213 adminpages/pagesettings.php:132
|
1249 |
-
#: adminpages/pagesettings.php:145 adminpages/pagesettings.php:159
|
1250 |
-
#: adminpages/pagesettings.php:173 adminpages/pagesettings.php:187
|
1251 |
-
#: adminpages/pagesettings.php:201
|
1252 |
-
msgid "edit page"
|
1253 |
-
msgstr "upravit stránku"
|
1254 |
-
|
1255 |
-
#: adminpages/pagesettings.php:121 adminpages/pagesettings.php:136
|
1256 |
-
#: adminpages/pagesettings.php:151 adminpages/pagesettings.php:167
|
1257 |
-
#: adminpages/pagesettings.php:183 adminpages/pagesettings.php:199
|
1258 |
-
#: adminpages/pagesettings.php:215
|
1259 |
-
msgid "view page"
|
1260 |
-
msgstr "zobrazit stránku"
|
1261 |
-
|
1262 |
-
#: adminpages/pagesettings.php:123 adminpages/pagesettings.php:138
|
1263 |
-
#: adminpages/pagesettings.php:153 adminpages/pagesettings.php:169
|
1264 |
-
#: adminpages/pagesettings.php:185 adminpages/pagesettings.php:201
|
1265 |
-
#: adminpages/pagesettings.php:217 adminpages/pagesettings.php:121
|
1266 |
-
#: adminpages/pagesettings.php:134 adminpages/pagesettings.php:147
|
1267 |
-
#: adminpages/pagesettings.php:161 adminpages/pagesettings.php:175
|
1268 |
-
#: adminpages/pagesettings.php:189 adminpages/pagesettings.php:203
|
1269 |
-
msgid "Include the shortcode"
|
1270 |
-
msgstr "Vložit shortcode"
|
1271 |
-
|
1272 |
-
#: adminpages/pagesettings.php:127 adminpages/pagesettings.php:125
|
1273 |
-
msgid "Billing Information Page"
|
1274 |
-
msgstr "Stránka fakturačních údajů"
|
1275 |
-
|
1276 |
-
#: adminpages/pagesettings.php:142 adminpages/pagesettings.php:138
|
1277 |
-
msgid "Cancel Page"
|
1278 |
-
msgstr "Zrušit stránku"
|
1279 |
-
|
1280 |
-
#: adminpages/pagesettings.php:158 adminpages/pagesettings.php:152
|
1281 |
-
msgid "Checkout Page"
|
1282 |
-
msgstr "Pokladna"
|
1283 |
-
|
1284 |
-
#: adminpages/pagesettings.php:174 adminpages/pagesettings.php:166
|
1285 |
-
msgid "Confirmation Page"
|
1286 |
-
msgstr "Potvrzovací stránka"
|
1287 |
-
|
1288 |
-
#: adminpages/pagesettings.php:190 adminpages/pagesettings.php:180
|
1289 |
-
msgid "Invoice Page"
|
1290 |
-
msgstr "Stránka fakturací"
|
1291 |
-
|
1292 |
-
#: adminpages/pagesettings.php:206 adminpages/pagesettings.php:194
|
1293 |
-
msgid "Levels Page"
|
1294 |
-
msgstr "Stránka úrovní"
|
1295 |
-
|
1296 |
-
#: adminpages/paymentsettings.php:77 adminpages/paymentsettings.php:82
|
1297 |
-
msgid "Your payment settings have been updated."
|
1298 |
-
msgstr "Vaše nastavení plateb bylo úspěšně aktualizováno"
|
1299 |
-
|
1300 |
-
#: adminpages/paymentsettings.php:146 adminpages/paymentsettings.php:154
|
1301 |
-
#: adminpages/paymentsettings.php:144 adminpages/paymentsettings.php:152
|
1302 |
-
msgid "Payment Gateway"
|
1303 |
-
msgstr "Platební brána"
|
1304 |
-
|
1305 |
-
#: adminpages/paymentsettings.php:146 adminpages/paymentsettings.php:144
|
1306 |
-
msgid "SSL Settings"
|
1307 |
-
msgstr "Nastavení SSL"
|
1308 |
-
|
1309 |
-
#: adminpages/paymentsettings.php:174
|
1310 |
-
msgid ""
|
1311 |
-
"This gateway option is in beta. Some functionality may not be available. "
|
1312 |
-
"Please contact Paid Memberships Pro with any issues you run into. "
|
1313 |
-
"<strong>Please be sure to upgrade Paid Memberships Pro to the latest "
|
1314 |
-
"versions when available.</strong>"
|
1315 |
-
msgstr ""
|
1316 |
-
"Tato platební brána je v beta verzi. Nekteré funkce nemusí být k dispozici. "
|
1317 |
-
"Obraťte se prosím na Memberships Pro s případnými otázkami, které poté "
|
1318 |
-
"můžete konzultovat. <strong> Prosím ujistěte se, že jste upgradovali "
|
1319 |
-
"Memberships Pro na nejnovější verzi, která je k dispozici. </ strong>"
|
1320 |
-
|
1321 |
-
#: adminpages/paymentsettings.php:199 adminpages/paymentsettings.php:195
|
1322 |
-
msgid "Partner"
|
1323 |
-
msgstr "Partner"
|
1324 |
-
|
1325 |
-
#: adminpages/paymentsettings.php:207 adminpages/paymentsettings.php:203
|
1326 |
-
msgid "Vendor"
|
1327 |
-
msgstr "Prodejce"
|
1328 |
-
|
1329 |
-
#: adminpages/paymentsettings.php:223 pages/checkout.php:180
|
1330 |
-
#: adminpages/paymentsettings.php:219 pages/checkout.php:177
|
1331 |
-
msgid "Password"
|
1332 |
-
msgstr "Heslo"
|
1333 |
-
|
1334 |
-
#: adminpages/paymentsettings.php:231 adminpages/paymentsettings.php:227
|
1335 |
-
msgid "Gateway Account Email"
|
1336 |
-
msgstr "E-mail k bráně účtu"
|
1337 |
-
|
1338 |
-
#: adminpages/paymentsettings.php:239 adminpages/paymentsettings.php:331
|
1339 |
-
#: adminpages/paymentsettings.php:235
|
1340 |
-
msgid "API Username"
|
1341 |
-
msgstr "API uživatelské jméno"
|
1342 |
-
|
1343 |
-
#: adminpages/paymentsettings.php:247 adminpages/paymentsettings.php:339
|
1344 |
-
#: adminpages/paymentsettings.php:243
|
1345 |
-
msgid "API Password"
|
1346 |
-
msgstr "API heslo"
|
1347 |
-
|
1348 |
-
#: adminpages/paymentsettings.php:255 adminpages/paymentsettings.php:251
|
1349 |
-
msgid "API Signature"
|
1350 |
-
msgstr "API podpis"
|
1351 |
-
|
1352 |
-
#: adminpages/paymentsettings.php:264 adminpages/paymentsettings.php:260
|
1353 |
-
msgid "Login Name"
|
1354 |
-
msgstr "Přihlašovací jméno"
|
1355 |
-
|
1356 |
-
#: adminpages/paymentsettings.php:272 adminpages/paymentsettings.php:268
|
1357 |
-
msgid "Transaction Key"
|
1358 |
-
msgstr "Transakční klíč"
|
1359 |
-
|
1360 |
-
#: adminpages/paymentsettings.php:281 adminpages/paymentsettings.php:277
|
1361 |
-
msgid "Secret Key"
|
1362 |
-
msgstr "Tajný klíč"
|
1363 |
-
|
1364 |
-
#: adminpages/paymentsettings.php:289 adminpages/paymentsettings.php:285
|
1365 |
-
msgid "Publishable Key"
|
1366 |
-
msgstr "Nezávadný klíč"
|
1367 |
-
|
1368 |
-
#: adminpages/paymentsettings.php:298 adminpages/paymentsettings.php:364
|
1369 |
-
#: adminpages/paymentsettings.php:294
|
1370 |
-
msgid "Merchant ID"
|
1371 |
-
msgstr "ID obchodníka"
|
1372 |
-
|
1373 |
-
#: adminpages/paymentsettings.php:306 adminpages/paymentsettings.php:302
|
1374 |
-
msgid "Public Key"
|
1375 |
-
msgstr "Veřejný klíč"
|
1376 |
-
|
1377 |
-
#: adminpages/paymentsettings.php:314 adminpages/paymentsettings.php:310
|
1378 |
-
msgid "Private Key"
|
1379 |
-
msgstr "Osobní klíč"
|
1380 |
-
|
1381 |
-
#: adminpages/paymentsettings.php:322 adminpages/paymentsettings.php:318
|
1382 |
-
msgid "Client-Side Encryption Key"
|
1383 |
-
msgstr "Klientův dešifrovací klíč"
|
1384 |
-
|
1385 |
-
#: adminpages/paymentsettings.php:355
|
1386 |
-
msgid "Secret Word"
|
1387 |
-
msgstr "Tajné slovo"
|
1388 |
-
|
1389 |
-
#: adminpages/paymentsettings.php:372
|
1390 |
-
msgid "Transaction Security Key"
|
1391 |
-
msgstr "Bezpečnostní klíč transakce"
|
1392 |
-
|
1393 |
-
#: adminpages/paymentsettings.php:381 adminpages/paymentsettings.php:327
|
1394 |
-
#: adminpages/paymentsettings.php:337 adminpages/paymentsettings.php:356
|
1395 |
-
msgid "Currency"
|
1396 |
-
msgstr "Měna"
|
1397 |
-
|
1398 |
-
#: adminpages/paymentsettings.php:401 adminpages/paymentsettings.php:375
|
1399 |
-
msgid "Accepted Credit Card Types"
|
1400 |
-
msgstr "Akceptujeme tyto platební karty"
|
1401 |
-
|
1402 |
-
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:389
|
1403 |
-
msgid "Instructions"
|
1404 |
-
msgstr "Instrukce"
|
1405 |
-
|
1406 |
-
#: adminpages/paymentsettings.php:419 adminpages/paymentsettings.php:393
|
1407 |
-
msgid ""
|
1408 |
-
"Who to write the check out to. Where to mail it. Shown on checkout, "
|
1409 |
-
"confirmation, and invoice pages."
|
1410 |
-
msgstr ""
|
1411 |
-
"Kdo napsal šek. Kde je e-mail. Zobrazení pokladny, potvrzení a fakturační "
|
1412 |
-
"stránky."
|
1413 |
-
|
1414 |
-
#: adminpages/paymentsettings.php:425
|
1415 |
-
msgid "Show Billing Address Fields"
|
1416 |
-
msgstr "Ukázat pole - Fakturační údaje"
|
1417 |
-
|
1418 |
-
#: adminpages/paymentsettings.php:432
|
1419 |
-
msgid ""
|
1420 |
-
"Stripe doesn't require billing address fields. Choose 'No' to hide them on "
|
1421 |
-
"the checkout page."
|
1422 |
-
msgstr ""
|
1423 |
-
"Stripe nevyžaduje pole fakturační adresa. Zvolte \"Ne\" pro skování na "
|
1424 |
-
"platební stránce."
|
1425 |
-
|
1426 |
-
#: adminpages/paymentsettings.php:438 adminpages/paymentsettings.php:398
|
1427 |
-
msgid "Sales Tax"
|
1428 |
-
msgstr "Daň z prodeje"
|
1429 |
-
|
1430 |
-
#: adminpages/paymentsettings.php:438 pages/billing.php:78
|
1431 |
-
#: adminpages/paymentsettings.php:398
|
1432 |
-
msgid "optional"
|
1433 |
-
msgstr "volitelné"
|
1434 |
-
|
1435 |
-
#: adminpages/paymentsettings.php:441 adminpages/paymentsettings.php:401
|
1436 |
-
msgid "Tax State"
|
1437 |
-
msgstr "DPH"
|
1438 |
-
|
1439 |
-
#: adminpages/paymentsettings.php:442 adminpages/paymentsettings.php:402
|
1440 |
-
msgid "abbreviation, e.g. \"PA\""
|
1441 |
-
msgstr "zkratka, např. \"PA\""
|
1442 |
-
|
1443 |
-
#: adminpages/paymentsettings.php:444 adminpages/paymentsettings.php:404
|
1444 |
-
msgid "decimal, e.g. \"0.06\""
|
1445 |
-
msgstr "desetinný, např. \"0.06\""
|
1446 |
-
|
1447 |
-
#: adminpages/paymentsettings.php:445 adminpages/paymentsettings.php:405
|
1448 |
-
msgid ""
|
1449 |
-
"If values are given, tax will be applied for any members ordering from the "
|
1450 |
-
"selected state. For more complex tax rules, use the \"pmpro_tax\" filter."
|
1451 |
-
msgstr ""
|
1452 |
-
"Jestliže máte nastaveny hodnoty, daň bude použita pro všechny členy z "
|
1453 |
-
"určitého státu, kteří si objednají službu. U složitějších daňových pravidel, "
|
1454 |
-
"použijte \"pmpro_tax \" filtr."
|
1455 |
-
|
1456 |
-
#: adminpages/paymentsettings.php:450
|
1457 |
-
msgid "Force SSL"
|
1458 |
-
msgstr "Silný SSL"
|
1459 |
-
|
1460 |
-
#: adminpages/paymentsettings.php:456
|
1461 |
-
msgid "Yes (with JavaScript redirects)"
|
1462 |
-
msgstr "Ano (s JavaScript přesměrováním)"
|
1463 |
-
|
1464 |
-
#: adminpages/paymentsettings.php:463 adminpages/paymentsettings.php:430
|
1465 |
-
msgid "SSL Seal Code"
|
1466 |
-
msgstr "SSL Seal Code"
|
1467 |
-
|
1468 |
-
#: adminpages/paymentsettings.php:471 adminpages/paymentsettings.php:438
|
1469 |
-
msgid "HTTPS Nuclear Option"
|
1470 |
-
msgstr "nastavení HTTPS"
|
1471 |
-
|
1472 |
-
#: adminpages/paymentsettings.php:474 adminpages/paymentsettings.php:441
|
1473 |
-
msgid ""
|
1474 |
-
"Use the \"Nuclear Option\" to use secure (HTTPS) URLs on your secure pages. "
|
1475 |
-
"Check this if you are using SSL and have warnings on your checkout pages."
|
1476 |
-
msgstr ""
|
1477 |
-
"Použijte \"Nuclear Option\" k použití zabezpečené (HTTPS) URL na vaše "
|
1478 |
-
"zabezpečené stránky. Podívejte se na to, zda používáte SSL a máte upozornění "
|
1479 |
-
"na vašich platebních stránkách."
|
1480 |
-
|
1481 |
-
#: adminpages/paymentsettings.php:479 adminpages/paymentsettings.php:446
|
1482 |
-
msgid "IPN Handler URL"
|
1483 |
-
msgstr "IPN Handler URL"
|
1484 |
-
|
1485 |
-
#: adminpages/paymentsettings.php:482 adminpages/paymentsettings.php:449
|
1486 |
-
msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
|
1487 |
-
msgstr ""
|
1488 |
-
"Chcete-li plně integrovat PayPal, ujistěte se že jste nastavily IPN Handler "
|
1489 |
-
"URL"
|
1490 |
-
|
1491 |
-
#: adminpages/paymentsettings.php:487
|
1492 |
-
msgid "TwoCheckout INS URL"
|
1493 |
-
msgstr "TwoCheckout INS URL"
|
1494 |
-
|
1495 |
-
#: adminpages/paymentsettings.php:490
|
1496 |
-
msgid ""
|
1497 |
-
"To fully integrate with 2Checkout, be sure to set your 2Checkout INS URL "
|
1498 |
-
msgstr ""
|
1499 |
-
"Chcete-li plně integrovat 2Checkout, ujistěte se že jste nastavily "
|
1500 |
-
"2Checkout IPN Handler URL"
|
1501 |
-
|
1502 |
-
#: adminpages/paymentsettings.php:495 adminpages/paymentsettings.php:454
|
1503 |
-
msgid "Silent Post URL"
|
1504 |
-
msgstr "Tichý příspěvek URL"
|
1505 |
-
|
1506 |
-
#: adminpages/paymentsettings.php:498 adminpages/paymentsettings.php:457
|
1507 |
-
msgid ""
|
1508 |
-
"To fully integrate with Authorize.net, be sure to set your Silent Post URL to"
|
1509 |
-
msgstr ""
|
1510 |
-
"Chcete-li plně integrovat s Authorize.net, ujistěte se, že máte správně "
|
1511 |
-
"nastaven Silent Post URL na"
|
1512 |
-
|
1513 |
-
#: adminpages/paymentsettings.php:503 adminpages/paymentsettings.php:511
|
1514 |
-
#: adminpages/paymentsettings.php:462 adminpages/paymentsettings.php:470
|
1515 |
-
msgid "Web Hook URL"
|
1516 |
-
msgstr "Web Hook URL"
|
1517 |
-
|
1518 |
-
#: adminpages/paymentsettings.php:506 adminpages/paymentsettings.php:465
|
1519 |
-
msgid "To fully integrate with Stripe, be sure to set your Web Hook URL to"
|
1520 |
-
msgstr ""
|
1521 |
-
"Chcete-li plně integrovat s Stripe, ujistěte se, že máte správně nastaven "
|
1522 |
-
"Web Hook URL na"
|
1523 |
-
|
1524 |
-
#: adminpages/paymentsettings.php:515 adminpages/paymentsettings.php:474
|
1525 |
-
msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
|
1526 |
-
msgstr ""
|
1527 |
-
"Chcete-li plně integrovat s Braintree, ujistěte se, že máte správně nastaven "
|
1528 |
-
"Web Hook URL na"
|
1529 |
-
|
1530 |
-
#: adminpages/reports.php:37 adminpages/reports.php:26
|
1531 |
-
msgid "Details"
|
1532 |
-
msgstr "Detaily"
|
1533 |
-
|
1534 |
-
#: adminpages/reports/login.php:16
|
1535 |
-
msgid "Visits, Views, and Logins"
|
1536 |
-
msgstr "Návštěvy, zobrazení a přihlášení"
|
1537 |
-
|
1538 |
-
#: adminpages/reports/login.php:26
|
1539 |
-
msgid "Visits Today"
|
1540 |
-
msgstr "Dnešní návštěvy"
|
1541 |
-
|
1542 |
-
#: adminpages/reports/login.php:27 adminpages/reports/login.php:147
|
1543 |
-
msgid "Visits This Month"
|
1544 |
-
msgstr "Návštěvy tento měsíc"
|
1545 |
-
|
1546 |
-
#: adminpages/reports/login.php:28
|
1547 |
-
msgid "Visits All Time"
|
1548 |
-
msgstr "Celková návštěvnost"
|
1549 |
-
|
1550 |
-
#: adminpages/reports/login.php:31
|
1551 |
-
msgid "Views Today"
|
1552 |
-
msgstr "Dnešní zobrazení"
|
1553 |
-
|
1554 |
-
#: adminpages/reports/login.php:32 adminpages/reports/login.php:149
|
1555 |
-
msgid "Views This Month"
|
1556 |
-
msgstr "Zobrazeno tento měsíc"
|
1557 |
-
|
1558 |
-
#: adminpages/reports/login.php:33
|
1559 |
-
msgid "Views All Time"
|
1560 |
-
msgstr "Zobrazeno celkem"
|
1561 |
-
|
1562 |
-
#: adminpages/reports/login.php:36
|
1563 |
-
msgid "Logins Today"
|
1564 |
-
msgstr "Přihlášeno dnes"
|
1565 |
-
|
1566 |
-
#: adminpages/reports/login.php:37 adminpages/reports/login.php:152
|
1567 |
-
msgid "Logins This Month"
|
1568 |
-
msgstr "Přihlášeno tento měsíc"
|
1569 |
-
|
1570 |
-
#: adminpages/reports/login.php:38
|
1571 |
-
msgid "Logins All Time"
|
1572 |
-
msgstr "Přihlášeno celkem"
|
1573 |
-
|
1574 |
-
#: adminpages/reports/login.php:61
|
1575 |
-
msgid "Visits, Views, and Logins Report"
|
1576 |
-
msgstr "Zprávy z návštěv, zobrazení a přihlášení"
|
1577 |
-
|
1578 |
-
#: adminpages/reports/login.php:66
|
1579 |
-
msgid "All Users"
|
1580 |
-
msgstr "Všichni uživatelé"
|
1581 |
-
|
1582 |
-
#: adminpages/reports/login.php:146
|
1583 |
-
msgid "Last Visit"
|
1584 |
-
msgstr "Poslední návštěva"
|
1585 |
-
|
1586 |
-
#: adminpages/reports/login.php:148
|
1587 |
-
msgid "Total Visits"
|
1588 |
-
msgstr "Návštěv celkem"
|
1589 |
-
|
1590 |
-
#: adminpages/reports/login.php:150
|
1591 |
-
msgid "Total Views"
|
1592 |
-
msgstr "Zobrazeno celkem"
|
1593 |
-
|
1594 |
-
#: adminpages/reports/login.php:151
|
1595 |
-
msgid "Last Login"
|
1596 |
-
msgstr "Poslední přihlášení"
|
1597 |
-
|
1598 |
-
#: adminpages/reports/login.php:153
|
1599 |
-
msgid "Total Logins"
|
1600 |
-
msgstr "Přihlášení celkem"
|
1601 |
-
|
1602 |
-
#: adminpages/reports/memberships.php:18
|
1603 |
-
#: adminpages/reports/memberships.php:288
|
1604 |
-
msgid "Membership Stats"
|
1605 |
-
msgstr "Členská statistika"
|
1606 |
-
|
1607 |
-
#: adminpages/reports/memberships.php:294 adminpages/reports/sales.php:196
|
1608 |
-
#: adminpages/reports/sales.php:187
|
1609 |
-
msgid "Daily"
|
1610 |
-
msgstr "Denně"
|
1611 |
-
|
1612 |
-
#: adminpages/reports/memberships.php:295 adminpages/reports/sales.php:197
|
1613 |
-
#: adminpages/reports/sales.php:188
|
1614 |
-
msgid "Monthly"
|
1615 |
-
msgstr "Měsíčně"
|
1616 |
-
|
1617 |
-
#: adminpages/reports/memberships.php:296 adminpages/reports/sales.php:198
|
1618 |
-
#: adminpages/reports/sales.php:189
|
1619 |
-
msgid "Annual"
|
1620 |
-
msgstr "Ročně"
|
1621 |
-
|
1622 |
-
#: adminpages/reports/memberships.php:299
|
1623 |
-
msgid "Signups vs. Cancellations"
|
1624 |
-
msgstr "Registrace vs. storna"
|
1625 |
-
|
1626 |
-
#: adminpages/reports/memberships.php:331 adminpages/reports/sales.php:231
|
1627 |
-
#: adminpages/reports/sales.php:222
|
1628 |
-
msgid "Generate Report"
|
1629 |
-
msgstr "Vytvořit zprávu"
|
1630 |
-
|
1631 |
-
#: adminpages/reports/sales.php:18
|
1632 |
-
msgid "Sales and Revenue (Testing/Sandbox)"
|
1633 |
-
msgstr "Prodeje a výnosy (testování / bezpečnostní mechanismus)"
|
1634 |
-
|
1635 |
-
#: adminpages/reports/sales.php:20 adminpages/reports/sales.php:189
|
1636 |
-
#: adminpages/reports/sales.php:180
|
1637 |
-
msgid "Sales and Revenue"
|
1638 |
-
msgstr "Prodeje a příjmy"
|
1639 |
-
|
1640 |
-
#: adminpages/reports/sales.php:201 adminpages/reports/sales.php:192
|
1641 |
-
msgid "Revenue"
|
1642 |
-
msgstr "Příjmy"
|
1643 |
-
|
1644 |
-
#: adminpages/reports/sales.php:202 adminpages/reports/sales.php:193
|
1645 |
-
msgid "Sales"
|
1646 |
-
msgstr "Prodeje"
|
1647 |
-
|
1648 |
-
#: classes/class.pmproemail.php:37
|
1649 |
-
#, php-format
|
1650 |
-
msgid "An Email From %s"
|
1651 |
-
msgstr "E-mail od %s"
|
1652 |
-
|
1653 |
-
#: classes/class.pmproemail.php:120
|
1654 |
-
#, php-format
|
1655 |
-
msgid "Your membership at %s has been CANCELLED"
|
1656 |
-
msgstr "Vaše členství na %s bylo ZRUŠENO"
|
1657 |
-
|
1658 |
-
#: classes/class.pmproemail.php:142
|
1659 |
-
#, php-format
|
1660 |
-
msgid "Membership for %s at %s has been CANCELLED"
|
1661 |
-
msgstr "Členství pro %s na %s bylo ZRUŠENO"
|
1662 |
-
|
1663 |
-
#: classes/class.pmproemail.php:173 classes/class.pmproemail.php:172
|
1664 |
-
#, php-format
|
1665 |
-
msgid "Your membership confirmation for %s"
|
1666 |
-
msgstr "Vaše členství potvzeno do %s"
|
1667 |
-
|
1668 |
-
#: classes/class.pmproemail.php:218 classes/class.pmproemail.php:227
|
1669 |
-
#: classes/class.pmproemail.php:236 classes/class.pmproemail.php:307
|
1670 |
-
#: classes/class.pmproemail.php:316 classes/class.pmproemail.php:580
|
1671 |
-
#: pages/checkout.php:66 pages/checkout.php:76 pages/checkout.php:573
|
1672 |
-
#: pages/confirmation.php:52 pages/invoice.php:33
|
1673 |
-
#: classes/class.pmproemail.php:216 classes/class.pmproemail.php:225
|
1674 |
-
#: classes/class.pmproemail.php:234 classes/class.pmproemail.php:304
|
1675 |
-
#: classes/class.pmproemail.php:313 classes/class.pmproemail.php:532
|
1676 |
-
#: pages/checkout.php:67 pages/checkout.php:77 pages/checkout.php:566
|
1677 |
-
#: pages/confirmation.php:51 pages/invoice.php:32
|
1678 |
-
msgid "Discount Code"
|
1679 |
-
msgstr "Slevový kód"
|
1680 |
-
|
1681 |
-
#: classes/class.pmproemail.php:243 classes/class.pmproemail.php:328
|
1682 |
-
#: classes/class.pmproemail.php:586 classes/class.pmproemail.php:241
|
1683 |
-
#: classes/class.pmproemail.php:325 classes/class.pmproemail.php:538
|
1684 |
-
#, php-format
|
1685 |
-
msgid "This membership will expire on %s."
|
1686 |
-
msgstr "Toto členství vyprší %s."
|
1687 |
-
|
1688 |
-
#: classes/class.pmproemail.php:265 classes/class.pmproemail.php:263
|
1689 |
-
#, php-format
|
1690 |
-
msgid "Member Checkout for %s at %s"
|
1691 |
-
msgstr "Členská platba pro% s na% s"
|
1692 |
-
|
1693 |
-
#: classes/class.pmproemail.php:345 classes/class.pmproemail.php:342
|
1694 |
-
#, php-format
|
1695 |
-
msgid "Your billing information has been udpated at %s"
|
1696 |
-
msgstr "Vaše fakturační údaje byly aktualizovány na %s"
|
1697 |
-
|
1698 |
-
#: classes/class.pmproemail.php:390 classes/class.pmproemail.php:386
|
1699 |
-
#, php-format
|
1700 |
-
msgid "Billing information has been udpated for %s at %s"
|
1701 |
-
msgstr "Fakturační údaje byly aktualizovány z %s na %s"
|
1702 |
-
|
1703 |
-
#: classes/class.pmproemail.php:430 classes/class.pmproemail.php:425
|
1704 |
-
#, php-format
|
1705 |
-
msgid "Membership Payment Failed at %s"
|
1706 |
-
msgstr "Platba za členství se nezdařila na %s"
|
1707 |
-
|
1708 |
-
#: classes/class.pmproemail.php:468 classes/class.pmproemail.php:462
|
1709 |
-
#, php-format
|
1710 |
-
msgid "Membership Payment Failed For %s at %s"
|
1711 |
-
msgstr "Členská platba se nezdařila pro %s na %s"
|
1712 |
-
|
1713 |
-
#: classes/class.pmproemail.php:508
|
1714 |
-
#, php-format
|
1715 |
-
msgid "Credit Card on File Expiring Soon at %s"
|
1716 |
-
msgstr "Kreditní karta brzy skončí na %s"
|
1717 |
-
|
1718 |
-
#: classes/class.pmproemail.php:548 classes/class.pmproemail.php:501
|
1719 |
-
#, php-format
|
1720 |
-
msgid "INVOICE for %s membership"
|
1721 |
-
msgstr "Faktura za %s členství"
|
1722 |
-
|
1723 |
-
#: classes/class.pmproemail.php:611 classes/class.pmproemail.php:563
|
1724 |
-
#, php-format
|
1725 |
-
msgid "Your trial at %s is ending soon"
|
1726 |
-
msgstr "Vaše zkušební verze na %s brzy končí"
|
1727 |
-
|
1728 |
-
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:596
|
1729 |
-
#, php-format
|
1730 |
-
msgid "Your membership at %s has ended"
|
1731 |
-
msgstr "Vaše členství na %s bylo ukončeno"
|
1732 |
-
|
1733 |
-
#: classes/class.pmproemail.php:670 classes/class.pmproemail.php:621
|
1734 |
-
#, php-format
|
1735 |
-
msgid "Your membership at %s will end soon"
|
1736 |
-
msgstr "Vaše členství na %s brzy zkončí"
|
1737 |
-
|
1738 |
-
#: classes/class.pmproemail.php:690 classes/class.pmproemail.php:641
|
1739 |
-
#, php-format
|
1740 |
-
msgid "Your membership at %s has been changed"
|
1741 |
-
msgstr "Vaše členství na %s bude změněno"
|
1742 |
-
|
1743 |
-
#: classes/class.pmproemail.php:694 classes/class.pmproemail.php:732
|
1744 |
-
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:683
|
1745 |
-
#, php-format
|
1746 |
-
msgid "The new level is %s. This membership is free"
|
1747 |
-
msgstr "Nová úroveň je% s. Toto členství je zdarma"
|
1748 |
-
|
1749 |
-
#: classes/class.pmproemail.php:696 classes/class.pmproemail.php:647
|
1750 |
-
msgid "Your membership has been cancelled"
|
1751 |
-
msgstr "Vaše členství bylo ukončeno"
|
1752 |
-
|
1753 |
-
#: classes/class.pmproemail.php:700 classes/class.pmproemail.php:738
|
1754 |
-
#: classes/class.pmproemail.php:651 classes/class.pmproemail.php:689
|
1755 |
-
#, php-format
|
1756 |
-
msgid "This membership will expire on %s"
|
1757 |
-
msgstr "Toto členství vyprší %s"
|
1758 |
-
|
1759 |
-
#: classes/class.pmproemail.php:704 classes/class.pmproemail.php:742
|
1760 |
-
#: classes/class.pmproemail.php:655 classes/class.pmproemail.php:693
|
1761 |
-
msgid "This membership does not expire"
|
1762 |
-
msgstr "Toto členství nevyprší"
|
1763 |
-
|
1764 |
-
#: classes/class.pmproemail.php:728 classes/class.pmproemail.php:679
|
1765 |
-
#, php-format
|
1766 |
-
msgid "Membership for %s at %s has been changed"
|
1767 |
-
msgstr "členství pro %s na %s bylo změněno"
|
1768 |
-
|
1769 |
-
#: classes/class.pmproemail.php:734 classes/class.pmproemail.php:685
|
1770 |
-
msgid "membership has been cancelled"
|
1771 |
-
msgstr "členství ukončeno"
|
1772 |
-
|
1773 |
-
#: classes/gateways/class.pmprogateway.php:55
|
1774 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:55
|
1775 |
-
#: classes/gateways/class.pmprogateway_check.php:60
|
1776 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:57
|
1777 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:27
|
1778 |
-
#: classes/gateways/class.pmprogateway_paypal.php:27
|
1779 |
-
msgid "Unknown error: Authorization failed."
|
1780 |
-
msgstr "Neznámá chyba: Autorizace selhala"
|
1781 |
-
|
1782 |
-
#: classes/gateways/class.pmprogateway.php:106
|
1783 |
-
#: classes/gateways/class.pmprogateway.php:111
|
1784 |
-
#: classes/gateways/class.pmprogateway.php:129
|
1785 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:106
|
1786 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:111
|
1787 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:128
|
1788 |
-
#: classes/gateways/class.pmprogateway_check.php:111
|
1789 |
-
#: classes/gateways/class.pmprogateway_check.php:116
|
1790 |
-
#: classes/gateways/class.pmprogateway_check.php:134
|
1791 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:108
|
1792 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:113
|
1793 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:131
|
1794 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:50
|
1795 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:55
|
1796 |
-
#: classes/gateways/class.pmprogateway_paypal.php:50
|
1797 |
-
msgid "Unknown error: Payment failed."
|
1798 |
-
msgstr "Neznámá chyba: Platba selhala"
|
1799 |
-
|
1800 |
-
#: classes/gateways/class.pmprogateway.php:113
|
1801 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:112
|
1802 |
-
#: classes/gateways/class.pmprogateway_check.php:118
|
1803 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:115
|
1804 |
-
msgid ""
|
1805 |
-
"A partial payment was made that we could not void. Please contact the site "
|
1806 |
-
"owner immediately to correct this."
|
1807 |
-
msgstr ""
|
1808 |
-
"Částečně provedená platba. Prosím, obraťte se na vlastníka stránky, který "
|
1809 |
-
"problém okamžitě napraví."
|
1810 |
-
|
1811 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:787
|
1812 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:788
|
1813 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:789
|
1814 |
-
msgid "Could not connect to Authorize.net"
|
1815 |
-
msgstr "Nelze se připojit k Authorize.net"
|
1816 |
-
|
1817 |
-
#: classes/gateways/class.pmprogateway_braintree.php:61
|
1818 |
-
#: classes/gateways/class.pmprogateway_stripe.php:53
|
1819 |
-
msgid "Unknown error: Initial payment failed."
|
1820 |
-
msgstr "Neznámá platba: První platba se nezdařila."
|
1821 |
-
|
1822 |
-
#: classes/gateways/class.pmprogateway_braintree.php:120
|
1823 |
-
msgid "Error during settlement:"
|
1824 |
-
msgstr "Chyba při zúčtování:"
|
1825 |
-
|
1826 |
-
#: classes/gateways/class.pmprogateway_braintree.php:129
|
1827 |
-
msgid "Error during charge:"
|
1828 |
-
msgstr "Chyba během placení:"
|
1829 |
-
|
1830 |
-
#: classes/gateways/class.pmprogateway_braintree.php:198
|
1831 |
-
msgid "Failed to update customer."
|
1832 |
-
msgstr "Nepodařilo se aktualizovat zákazníka."
|
1833 |
-
|
1834 |
-
#: classes/gateways/class.pmprogateway_braintree.php:246
|
1835 |
-
msgid "Failed to create customer."
|
1836 |
-
msgstr "Nepodařilo se vytvořit zákazníka."
|
1837 |
-
|
1838 |
-
#: classes/gateways/class.pmprogateway_braintree.php:253
|
1839 |
-
msgid "Error creating customer record with Braintree:"
|
1840 |
-
msgstr "Chyba při vytváření zákazníka nahrána do Braintree:"
|
1841 |
-
|
1842 |
-
#: classes/gateways/class.pmprogateway_braintree.php:344
|
1843 |
-
#: classes/gateways/class.pmprogateway_braintree.php:345
|
1844 |
-
msgid "Error subscribing customer to plan with Braintree:"
|
1845 |
-
msgstr "Chyba při objednání zákazníka nahrána do Braintree:"
|
1846 |
-
|
1847 |
-
#: classes/gateways/class.pmprogateway_braintree.php:359
|
1848 |
-
#: classes/gateways/class.pmprogateway_braintree.php:360
|
1849 |
-
msgid "Failed to subscribe with Braintree:"
|
1850 |
-
msgstr "Přihlášení s Braintree se nezdařilo:"
|
1851 |
-
|
1852 |
-
#: classes/gateways/class.pmprogateway_braintree.php:397
|
1853 |
-
#: classes/gateways/class.pmprogateway_braintree.php:410
|
1854 |
-
#: classes/gateways/class.pmprogateway_braintree.php:417
|
1855 |
-
#: classes/gateways/class.pmprogateway_stripe.php:344
|
1856 |
-
#: classes/gateways/class.pmprogateway_stripe.php:354
|
1857 |
-
#: classes/gateways/class.pmprogateway_braintree.php:398
|
1858 |
-
#: classes/gateways/class.pmprogateway_braintree.php:411
|
1859 |
-
#: classes/gateways/class.pmprogateway_braintree.php:418
|
1860 |
-
#: classes/gateways/class.pmprogateway_stripe.php:343
|
1861 |
-
#: classes/gateways/class.pmprogateway_stripe.php:353
|
1862 |
-
msgid "Could not find the subscription."
|
1863 |
-
msgstr "Nelze najít předplatné."
|
1864 |
-
|
1865 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:57
|
1866 |
-
#: classes/gateways/class.pmprogateway_paypal.php:57
|
1867 |
-
msgid ""
|
1868 |
-
"A partial payment was made that we could not refund. Please contact the site "
|
1869 |
-
"owner immediately to correct this."
|
1870 |
-
msgstr ""
|
1871 |
-
"Částečná platba byla provedena, ale nemůžeme ji vrátit. Obraťte se na "
|
1872 |
-
"vlastníka webu, který problém okamžitě vyřeší."
|
1873 |
-
|
1874 |
-
#: classes/gateways/class.pmprogateway_stripe.php:192
|
1875 |
-
#: classes/gateways/class.pmprogateway_stripe.php:190
|
1876 |
-
msgid "Error creating customer record with Stripe:"
|
1877 |
-
msgstr "Chyba při vytváření zákazníka nahrána do Stripe:"
|
1878 |
-
|
1879 |
-
#: classes/gateways/class.pmprogateway_stripe.php:279
|
1880 |
-
#: classes/gateways/class.pmprogateway_stripe.php:278
|
1881 |
-
msgid "Error creating plan with Stripe:"
|
1882 |
-
msgstr "Chyba vytvoření plánu pomocí Stripe:"
|
1883 |
-
|
1884 |
-
#: classes/gateways/class.pmprogateway_stripe.php:295
|
1885 |
-
#: classes/gateways/class.pmprogateway_stripe.php:294
|
1886 |
-
msgid "Error subscribing customer to plan with Stripe:"
|
1887 |
-
msgstr "Chyba při objednání zákazníka nahrána do Stripe:"
|
1888 |
-
|
1889 |
-
#: includes/adminpages.php:9 includes/adminpages.php:39
|
1890 |
-
msgid "Memberships"
|
1891 |
-
msgstr "Členství"
|
1892 |
-
|
1893 |
-
#: includes/adminpages.php:10 includes/adminpages.php:49
|
1894 |
-
msgid "Page Settings"
|
1895 |
-
msgstr "Nastavení stránek"
|
1896 |
-
|
1897 |
-
#: includes/adminpages.php:11 includes/adminpages.php:54
|
1898 |
-
msgid "Payment Settings"
|
1899 |
-
msgstr "Nastavení plateb"
|
1900 |
-
|
1901 |
-
#: includes/adminpages.php:16 includes/adminpages.php:79
|
1902 |
-
msgid "Reports"
|
1903 |
-
msgstr "Statistiky"
|
1904 |
-
|
1905 |
-
#: includes/adminpages.php:18 includes/adminpages.php:89
|
1906 |
-
msgid "Discount Codes"
|
1907 |
-
msgstr "Slevové kupóny"
|
1908 |
-
|
1909 |
-
#: includes/cleanup.php:24
|
1910 |
-
#, php-format
|
1911 |
-
msgid ""
|
1912 |
-
"There was an error canceling the subscription for user with ID=%s. You will "
|
1913 |
-
"want to check your payment gateway to see if their subscription is still "
|
1914 |
-
"active."
|
1915 |
-
msgstr ""
|
1916 |
-
"Došlo k chybě při zrušení předplatného pro uživatele s ID=%s. Budete chtít "
|
1917 |
-
"zkontrolovat platební bránu, zda je jejich předplatné stále aktivní?"
|
1918 |
-
|
1919 |
-
#: includes/currencies.php:7 includes/currencies.php:44
|
1920 |
-
#: includes/currencies.php:37
|
1921 |
-
msgid "US Dollars ($)"
|
1922 |
-
msgstr "Americký dolar ($)"
|
1923 |
-
|
1924 |
-
#: includes/currencies.php:8 includes/currencies.php:47
|
1925 |
-
#: includes/currencies.php:40
|
1926 |
-
msgid "Euros (€)"
|
1927 |
-
msgstr "Euro (€)"
|
1928 |
-
|
1929 |
-
#: includes/currencies.php:9 includes/currencies.php:46
|
1930 |
-
#: includes/currencies.php:39
|
1931 |
-
msgid "Pounds Sterling (£)"
|
1932 |
-
msgstr "Libra (£)"
|
1933 |
-
|
1934 |
-
#: includes/currencies.php:10
|
1935 |
-
msgid "Australian Dollars ($)"
|
1936 |
-
msgstr "Australský dolar ($)"
|
1937 |
-
|
1938 |
-
#: includes/currencies.php:11
|
1939 |
-
msgid "Brazilian Real ($)"
|
1940 |
-
msgstr "Brazilský real ($)"
|
1941 |
-
|
1942 |
-
#: includes/currencies.php:12 includes/currencies.php:45
|
1943 |
-
#: includes/currencies.php:38
|
1944 |
-
msgid "Canadian Dollars ($)"
|
1945 |
-
msgstr "Kanadský dolar ($)"
|
1946 |
-
|
1947 |
-
#: includes/currencies.php:13
|
1948 |
-
msgid "Chinese Yuan"
|
1949 |
-
msgstr "Čínský Jen"
|
1950 |
-
|
1951 |
-
#: includes/currencies.php:14 includes/currencies.php:13
|
1952 |
-
msgid "Czech Koruna"
|
1953 |
-
msgstr "Český koruna"
|
1954 |
-
|
1955 |
-
#: includes/currencies.php:15 includes/currencies.php:14
|
1956 |
-
msgid "Danish Krone"
|
1957 |
-
msgstr "Dánská koruna"
|
1958 |
-
|
1959 |
-
#: includes/currencies.php:16 includes/currencies.php:15
|
1960 |
-
msgid "Hong Kong Dollar ($)"
|
1961 |
-
msgstr "Hong Kongský dolar ($)"
|
1962 |
-
|
1963 |
-
#: includes/currencies.php:17 includes/currencies.php:16
|
1964 |
-
msgid "Hungarian Forint"
|
1965 |
-
msgstr "Maďarský forint"
|
1966 |
-
|
1967 |
-
#: includes/currencies.php:18
|
1968 |
-
msgid "Indian Rupee"
|
1969 |
-
msgstr "Indická rupie"
|
1970 |
-
|
1971 |
-
#: includes/currencies.php:19
|
1972 |
-
msgid "Indonesia Rupiah"
|
1973 |
-
msgstr "Indonézská rupie"
|
1974 |
-
|
1975 |
-
#: includes/currencies.php:20 includes/currencies.php:17
|
1976 |
-
msgid "Israeli Shekel"
|
1977 |
-
msgstr "Izraelský Shekel"
|
1978 |
-
|
1979 |
-
#: includes/currencies.php:21 includes/currencies.php:18
|
1980 |
-
msgid "Japanese Yen (¥)"
|
1981 |
-
msgstr "Japonský Jen (¥)"
|
1982 |
-
|
1983 |
-
#: includes/currencies.php:22 includes/currencies.php:19
|
1984 |
-
msgid "Malaysian Ringgits"
|
1985 |
-
msgstr "Malajský ringgits"
|
1986 |
-
|
1987 |
-
#: includes/currencies.php:23 includes/currencies.php:20
|
1988 |
-
msgid "Mexican Peso ($)"
|
1989 |
-
msgstr "Mexické peso ($)"
|
1990 |
-
|
1991 |
-
#: includes/currencies.php:24 includes/currencies.php:21
|
1992 |
-
msgid "New Zealand Dollar ($)"
|
1993 |
-
msgstr "Novozélanský dolar ($)"
|
1994 |
-
|
1995 |
-
#: includes/currencies.php:25 includes/currencies.php:22
|
1996 |
-
msgid "Norwegian Krone"
|
1997 |
-
msgstr "Norská koruna"
|
1998 |
-
|
1999 |
-
#: includes/currencies.php:26 includes/currencies.php:23
|
2000 |
-
msgid "Philippine Pesos"
|
2001 |
-
msgstr "Filipínské pesos"
|
2002 |
-
|
2003 |
-
#: includes/currencies.php:27 includes/currencies.php:24
|
2004 |
-
msgid "Polish Zloty"
|
2005 |
-
msgstr "Polský zlotý"
|
2006 |
-
|
2007 |
-
#: includes/currencies.php:28 includes/currencies.php:25
|
2008 |
-
msgid "Singapore Dollar ($)"
|
2009 |
-
msgstr "Singapurský dolar ($)"
|
2010 |
-
|
2011 |
-
#: includes/currencies.php:29
|
2012 |
-
msgid "South African Rand"
|
2013 |
-
msgstr "Jihoafrický Rand"
|
2014 |
-
|
2015 |
-
#: includes/currencies.php:30
|
2016 |
-
msgid "South Korean Won"
|
2017 |
-
msgstr "Jihokorejský Won"
|
2018 |
-
|
2019 |
-
#: includes/currencies.php:31 includes/currencies.php:26
|
2020 |
-
msgid "Swedish Krona"
|
2021 |
-
msgstr "švédská koruna"
|
2022 |
-
|
2023 |
-
#: includes/currencies.php:32 includes/currencies.php:27
|
2024 |
-
msgid "Swiss Franc"
|
2025 |
-
msgstr "Švýcarský Frank"
|
2026 |
-
|
2027 |
-
#: includes/currencies.php:33 includes/currencies.php:28
|
2028 |
-
msgid "Taiwan New Dollars"
|
2029 |
-
msgstr "Taiwanský noví dolar"
|
2030 |
-
|
2031 |
-
#: includes/currencies.php:34 includes/currencies.php:29
|
2032 |
-
msgid "Thai Baht"
|
2033 |
-
msgstr "Thaiský Baht"
|
2034 |
-
|
2035 |
-
#: includes/currencies.php:35
|
2036 |
-
msgid "Turkish Lira"
|
2037 |
-
msgstr "Turecká lira"
|
2038 |
-
|
2039 |
-
#: includes/currencies.php:36
|
2040 |
-
msgid "Vietnamese Dong"
|
2041 |
-
msgstr "Vietnamský Dong"
|
2042 |
-
|
2043 |
-
#: includes/functions.php:196 includes/functions.php:160
|
2044 |
-
#, php-format
|
2045 |
-
msgid "The price for membership is <strong>%s</strong> now"
|
2046 |
-
msgstr "Cena za členství je nyní <strong>%s</strong>"
|
2047 |
-
|
2048 |
-
#: includes/functions.php:205 includes/functions.php:169
|
2049 |
-
#, php-format
|
2050 |
-
msgid " and then <strong>%s per %s for %d more %s</strong>."
|
2051 |
-
msgstr "a pak <strong>%s na %s pro %d další %s</strong>."
|
2052 |
-
|
2053 |
-
#: includes/functions.php:209 includes/functions.php:173
|
2054 |
-
#, php-format
|
2055 |
-
msgid " and then <strong>%s every %d %s for %d more %s</strong>."
|
2056 |
-
msgstr "a pak <strong>%s každý %d %s pro %d více %s</strong>."
|
2057 |
-
|
2058 |
-
#: includes/functions.php:214 includes/functions.php:178
|
2059 |
-
#, php-format
|
2060 |
-
msgid " and then <strong>%s after %d %s</strong>."
|
2061 |
-
msgstr "a pak <strong>%s po %d %s</strong>."
|
2062 |
-
|
2063 |
-
#: includes/functions.php:220 includes/functions.php:184
|
2064 |
-
#, php-format
|
2065 |
-
msgid " and then <strong>%s per %s</strong>."
|
2066 |
-
msgstr "a pak <strong>%s na %s</strong>."
|
2067 |
-
|
2068 |
-
#: includes/functions.php:224 includes/functions.php:188
|
2069 |
-
#, php-format
|
2070 |
-
msgid " and then <strong>%s every %d %s</strong>."
|
2071 |
-
msgstr "a pak <strong>%s každý %d %s</strong>."
|
2072 |
-
|
2073 |
-
#: includes/functions.php:238 pages/levels.php:82 includes/functions.php:202
|
2074 |
-
msgid "After your initial payment, your first payment is Free."
|
2075 |
-
msgstr "Pro vaši výchozí platbu je první platba zdarma."
|
2076 |
-
|
2077 |
-
#: includes/functions.php:242 pages/levels.php:86 includes/functions.php:206
|
2078 |
-
#, php-format
|
2079 |
-
msgid "After your initial payment, your first %d payments are Free."
|
2080 |
-
msgstr "Pro vaši výchozí platbu jsou vaše %d platby zdarma"
|
2081 |
-
|
2082 |
-
#: includes/functions.php:249 pages/levels.php:93 includes/functions.php:213
|
2083 |
-
#, php-format
|
2084 |
-
msgid "After your initial payment, your first payment will cost %s."
|
2085 |
-
msgstr "Pro vaši výchozí platbu bude vaše první platba stát %s."
|
2086 |
-
|
2087 |
-
#: includes/functions.php:253 pages/levels.php:97 includes/functions.php:217
|
2088 |
-
#, php-format
|
2089 |
-
msgid "After your initial payment, your first %d payments will cost %s."
|
2090 |
-
msgstr "Pro vaši výchozí platbu bude vaše první %d platby stát %s."
|
2091 |
-
|
2092 |
-
#: includes/functions.php:264 includes/functions.php:228
|
2093 |
-
#, php-format
|
2094 |
-
msgid "Customers in %s will be charged %s%% tax."
|
2095 |
-
msgstr "Zákazníkovi %s bude účtována %s%% daň."
|
2096 |
-
|
2097 |
-
#: includes/functions.php:278 includes/functions.php:242
|
2098 |
-
#, php-format
|
2099 |
-
msgid "Membership expires after %d %s."
|
2100 |
-
msgstr "Členství vyprší %d %s."
|
2101 |
-
|
2102 |
-
#: includes/functions.php:514 includes/functions.php:491
|
2103 |
-
msgid "User ID not found."
|
2104 |
-
msgstr "Uživatelské ID nenalezeno."
|
2105 |
-
|
2106 |
-
#: includes/functions.php:531 includes/functions.php:508
|
2107 |
-
msgid "Invalid level."
|
2108 |
-
msgstr "špatná úroveň."
|
2109 |
-
|
2110 |
-
#: includes/functions.php:542 includes/functions.php:520
|
2111 |
-
msgid "not changing?"
|
2112 |
-
msgstr "bez změn?"
|
2113 |
-
|
2114 |
-
#: includes/functions.php:559 includes/functions.php:605
|
2115 |
-
#: includes/functions.php:614 includes/functions.php:537
|
2116 |
-
#: includes/functions.php:583 includes/functions.php:592
|
2117 |
-
msgid "Error interacting with database"
|
2118 |
-
msgstr "Chyba interakce s databází"
|
2119 |
-
|
2120 |
-
#: includes/functions.php:651 includes/functions.php:690
|
2121 |
-
#: includes/functions.php:629 includes/functions.php:668
|
2122 |
-
msgid "Membership level not found."
|
2123 |
-
msgstr "Uživatelská úroveň nenalezena."
|
2124 |
-
|
2125 |
-
#: includes/functions.php:1072 includes/functions.php:1050
|
2126 |
-
msgid "The discount code could not be found."
|
2127 |
-
msgstr "Slevový kupón nenalezen."
|
2128 |
-
|
2129 |
-
#: includes/functions.php:1088 includes/functions.php:1066
|
2130 |
-
#, php-format
|
2131 |
-
msgid "This discount code goes into effect on %s."
|
2132 |
-
msgstr "Slevový kupón bude platný od %s."
|
2133 |
-
|
2134 |
-
#: includes/functions.php:1097 includes/functions.php:1075
|
2135 |
-
#, php-format
|
2136 |
-
msgid "This discount code expired on %s."
|
2137 |
-
msgstr "Tento slevový kupón vyprší %s."
|
2138 |
-
|
2139 |
-
#: includes/functions.php:1109 includes/functions.php:1087
|
2140 |
-
msgid "This discount code is no longer valid."
|
2141 |
-
msgstr "Tento slevový kupó již není platný."
|
2142 |
-
|
2143 |
-
#: includes/functions.php:1124 includes/functions.php:1102
|
2144 |
-
msgid "This discount code does not apply to this membership level."
|
2145 |
-
msgstr "Tento slevový kupón nelze použit pro tuto členskou úroveň."
|
2146 |
-
|
2147 |
-
#: includes/functions.php:1132 includes/functions.php:1110
|
2148 |
-
msgid "This discount code is okay."
|
2149 |
-
msgstr "Slevový kupón je vpořádku."
|
2150 |
-
|
2151 |
-
#: includes/functions.php:1156 includes/functions.php:1134
|
2152 |
-
msgid "and"
|
2153 |
-
msgstr "a"
|
2154 |
-
|
2155 |
-
#: includes/functions.php:1341 includes/functions.php:1319
|
2156 |
-
msgid "Sign Up for !!name!! Now"
|
2157 |
-
msgstr "Přihlašte se !!name!! nyní"
|
2158 |
-
|
2159 |
-
#: includes/functions.php:1347 includes/functions.php:1325
|
2160 |
-
msgid "Please specify a level id."
|
2161 |
-
msgstr "Zadejte číslo úrovně."
|
2162 |
-
|
2163 |
-
#: includes/localization.php:23
|
2164 |
-
msgid "Day"
|
2165 |
-
msgstr "Den"
|
2166 |
-
|
2167 |
-
#: includes/localization.php:25
|
2168 |
-
msgid "Week"
|
2169 |
-
msgstr "Týden"
|
2170 |
-
|
2171 |
-
#: includes/localization.php:27
|
2172 |
-
msgid "Month"
|
2173 |
-
msgstr "Měsíc"
|
2174 |
-
|
2175 |
-
#: includes/localization.php:29
|
2176 |
-
msgid "Year"
|
2177 |
-
msgstr "Rok"
|
2178 |
-
|
2179 |
-
#: includes/metaboxes.php:38
|
2180 |
-
msgid ""
|
2181 |
-
"This post is already protected for this level because it is within a "
|
2182 |
-
"category that requires membership."
|
2183 |
-
msgstr ""
|
2184 |
-
"Tento příspěvek je již chráněna pro tuto úrověň, protože je v kategorii, "
|
2185 |
-
"která vyžaduje členství."
|
2186 |
-
|
2187 |
-
#: includes/metaboxes.php:99 includes/metaboxes.php:100
|
2188 |
-
msgid "Require Membership"
|
2189 |
-
msgstr "Vyžadovat členství"
|
2190 |
-
|
2191 |
-
#: includes/profile.php:36 includes/profile.php:34
|
2192 |
-
msgid "Current Level"
|
2193 |
-
msgstr "Aktuální úrověň"
|
2194 |
-
|
2195 |
-
#: includes/profile.php:39 includes/profile.php:37
|
2196 |
-
msgid "None"
|
2197 |
-
msgstr "Nic"
|
2198 |
-
|
2199 |
-
#: includes/profile.php:84 includes/profile.php:82
|
2200 |
-
msgid "User is not paying."
|
2201 |
-
msgstr "Uživatel nezaplatil."
|
2202 |
-
|
2203 |
-
#: pages/account.php:10
|
2204 |
-
msgid "Your membership is <strong>active</strong>."
|
2205 |
-
msgstr "Vaše členství je <strong>aktivní</strong>."
|
2206 |
-
|
2207 |
-
#: pages/account.php:12 pages/billing.php:16 pages/levels.php:13
|
2208 |
-
msgid "Level"
|
2209 |
-
msgstr "Úroveň"
|
2210 |
-
|
2211 |
-
#: pages/account.php:14 pages/billing.php:18
|
2212 |
-
msgid "Membership Fee"
|
2213 |
-
msgstr "členský poplatek"
|
2214 |
-
|
2215 |
-
#: pages/account.php:25 pages/billing.php:29
|
2216 |
-
msgid "Duration"
|
2217 |
-
msgstr "Trvání"
|
2218 |
-
|
2219 |
-
#: pages/account.php:29 pages/confirmation.php:49 pages/invoice.php:30
|
2220 |
-
#: pages/confirmation.php:48 pages/invoice.php:29
|
2221 |
-
msgid "Membership Expires"
|
2222 |
-
msgstr "členství vyprší"
|
2223 |
-
|
2224 |
-
#: pages/account.php:34
|
2225 |
-
#, php-format
|
2226 |
-
msgid "Your first payment will cost %s."
|
2227 |
-
msgstr "Vaše první platba bude stát %s."
|
2228 |
-
|
2229 |
-
#: pages/account.php:38
|
2230 |
-
#, php-format
|
2231 |
-
msgid "Your first %d payments will cost %s."
|
2232 |
-
msgstr "Vaše první %d budou stát %s."
|
2233 |
-
|
2234 |
-
#: pages/account.php:46
|
2235 |
-
msgid "My Account"
|
2236 |
-
msgstr "Muj účet"
|
2237 |
-
|
2238 |
-
#: pages/account.php:55
|
2239 |
-
msgid "Edit Profile"
|
2240 |
-
msgstr "Upravit profil"
|
2241 |
-
|
2242 |
-
#: pages/account.php:56
|
2243 |
-
msgid "Change Password"
|
2244 |
-
msgstr "Změnit heslo"
|
2245 |
-
|
2246 |
-
#: pages/account.php:87
|
2247 |
-
msgid "Billing Information"
|
2248 |
-
msgstr "Fakturační údaje"
|
2249 |
-
|
2250 |
-
#: pages/account.php:105 pages/confirmation.php:63 pages/invoice.php:50
|
2251 |
-
#: pages/confirmation.php:61 pages/invoice.php:48
|
2252 |
-
msgid "Payment Method"
|
2253 |
-
msgstr "Platební metody"
|
2254 |
-
|
2255 |
-
#: pages/account.php:114
|
2256 |
-
msgid "Edit Billing Information"
|
2257 |
-
msgstr "Upravit fakturační údaje"
|
2258 |
-
|
2259 |
-
#: pages/account.php:125
|
2260 |
-
msgid "Past Invoices"
|
2261 |
-
msgstr "Minulé faktury"
|
2262 |
-
|
2263 |
-
#: pages/account.php:140
|
2264 |
-
msgid "View All Invoices"
|
2265 |
-
msgstr "Zobrazit všechny faktury"
|
2266 |
-
|
2267 |
-
#: pages/account.php:146
|
2268 |
-
msgid "Member Links"
|
2269 |
-
msgstr "Odkazy členů"
|
2270 |
-
|
2271 |
-
#: pages/account.php:152
|
2272 |
-
msgid "Update Billing Information"
|
2273 |
-
msgstr "Upravit fakturační údaje"
|
2274 |
-
|
2275 |
-
#: pages/account.php:155
|
2276 |
-
msgid "Change Membership Level"
|
2277 |
-
msgstr "Změnit úroveň členství"
|
2278 |
-
|
2279 |
-
#: pages/account.php:157
|
2280 |
-
msgid "Cancel Membership"
|
2281 |
-
msgstr "Zrušení členství"
|
2282 |
-
|
2283 |
-
#: pages/billing.php:14
|
2284 |
-
#, php-format
|
2285 |
-
msgid "Logged in as <strong>%s</strong>."
|
2286 |
-
msgstr "Přihlášen jako <strong>%s</strong>."
|
2287 |
-
|
2288 |
-
#: pages/billing.php:14
|
2289 |
-
msgid "logout"
|
2290 |
-
msgstr "odhlásit"
|
2291 |
-
|
2292 |
-
#: pages/billing.php:39
|
2293 |
-
msgid ""
|
2294 |
-
"Your payment subscription is managed by PayPal. Please <a href=\"http://www."
|
2295 |
-
"paypal.com\">login to PayPal here</a> to update your billing information."
|
2296 |
-
msgstr ""
|
2297 |
-
"Váš odběr plateb řídí PayPal. <a href=\"http://www.paypal.com\">Přihlašte se "
|
2298 |
-
"do PayPal</a> a aktualizujte své fakturační údaje."
|
2299 |
-
|
2300 |
-
#: pages/billing.php:65 pages/checkout.php:328 pages/checkout.php:321
|
2301 |
-
msgid "First Name"
|
2302 |
-
msgstr "Jméno"
|
2303 |
-
|
2304 |
-
#: pages/billing.php:69 pages/checkout.php:332 pages/checkout.php:325
|
2305 |
-
msgid "Last Name"
|
2306 |
-
msgstr "Příjmení"
|
2307 |
-
|
2308 |
-
#: pages/billing.php:73 pages/checkout.php:336 pages/checkout.php:329
|
2309 |
-
msgid "Address 1"
|
2310 |
-
msgstr "Adresa 1"
|
2311 |
-
|
2312 |
-
#: pages/billing.php:77 pages/checkout.php:340 pages/checkout.php:333
|
2313 |
-
msgid "Address 2"
|
2314 |
-
msgstr "Adresa 2"
|
2315 |
-
|
2316 |
-
#: pages/billing.php:87 pages/checkout.php:350 pages/checkout.php:343
|
2317 |
-
msgid "City"
|
2318 |
-
msgstr "Město"
|
2319 |
-
|
2320 |
-
#: pages/billing.php:91 pages/checkout.php:354 pages/checkout.php:347
|
2321 |
-
msgid "State"
|
2322 |
-
msgstr "Stát"
|
2323 |
-
|
2324 |
-
#: pages/billing.php:95 pages/checkout.php:358 pages/checkout.php:351
|
2325 |
-
msgid "Postal Code"
|
2326 |
-
msgstr "PSČ"
|
2327 |
-
|
2328 |
-
#: pages/billing.php:104 pages/checkout.php:367 pages/checkout.php:360
|
2329 |
-
msgid "City, State Zip"
|
2330 |
-
msgstr "Město, PSČ státu"
|
2331 |
-
|
2332 |
-
#: pages/billing.php:157 pages/checkout.php:420 pages/checkout.php:413
|
2333 |
-
msgid "Country"
|
2334 |
-
msgstr "Země"
|
2335 |
-
|
2336 |
-
#: pages/billing.php:182 pages/checkout.php:445 pages/checkout.php:438
|
2337 |
-
msgid "Phone"
|
2338 |
-
msgstr "Telefon"
|
2339 |
-
|
2340 |
-
#: pages/billing.php:193 pages/checkout.php:207 pages/checkout.php:460
|
2341 |
-
#: pages/checkout.php:204 pages/checkout.php:453
|
2342 |
-
msgid "E-mail Address"
|
2343 |
-
msgstr "E-mail"
|
2344 |
-
|
2345 |
-
#: pages/billing.php:197 pages/checkout.php:469 pages/checkout.php:462
|
2346 |
-
msgid "Confirm E-mail"
|
2347 |
-
msgstr "Potvrdit e-mail"
|
2348 |
-
|
2349 |
-
#: pages/billing.php:217
|
2350 |
-
msgid "Credit Card Information"
|
2351 |
-
msgstr "Informace o platební kartě"
|
2352 |
-
|
2353 |
-
#: pages/billing.php:217
|
2354 |
-
#, php-format
|
2355 |
-
msgid "We accept %s"
|
2356 |
-
msgstr "Přijímáme %s"
|
2357 |
-
|
2358 |
-
#: pages/billing.php:244 pages/checkout.php:527 pages/checkout.php:520
|
2359 |
-
msgid "Card Number"
|
2360 |
-
msgstr "Číslo karty"
|
2361 |
-
|
2362 |
-
#: pages/billing.php:281 pages/checkout.php:564 pages/checkout.php:557
|
2363 |
-
msgid "CVV"
|
2364 |
-
msgstr "CVV"
|
2365 |
-
|
2366 |
-
#: pages/billing.php:282 pages/checkout.php:565 pages/checkout.php:558
|
2367 |
-
msgid "what's this?"
|
2368 |
-
msgstr "Co je toto?"
|
2369 |
-
|
2370 |
-
#: pages/billing.php:294
|
2371 |
-
msgid "Update"
|
2372 |
-
msgstr "Upraveno"
|
2373 |
-
|
2374 |
-
#: pages/billing.php:309
|
2375 |
-
msgid ""
|
2376 |
-
"This subscription is not recurring. So you don't need to update your billing "
|
2377 |
-
"information."
|
2378 |
-
msgstr ""
|
2379 |
-
"Tento odběr se neopakuje, takže nemusíte aktualizovat své fakturační údaje."
|
2380 |
-
|
2381 |
-
#: pages/cancel.php:14
|
2382 |
-
msgid "Are you sure you want to cancel your membership?"
|
2383 |
-
msgstr "Jste si jisti, že chcete zrušit Vaše členství?"
|
2384 |
-
|
2385 |
-
#: pages/cancel.php:17
|
2386 |
-
msgid "Yes, cancel my account"
|
2387 |
-
msgstr "Ano, chci zrušit účet"
|
2388 |
-
|
2389 |
-
#: pages/cancel.php:19
|
2390 |
-
msgid "No, keep my account"
|
2391 |
-
msgstr "Ne, chci si ponechat účet"
|
2392 |
-
|
2393 |
-
#: pages/cancel.php:22
|
2394 |
-
msgid "Click here to go to the home page."
|
2395 |
-
msgstr "Pro návrat na hlavní stranu klikněte zde."
|
2396 |
-
|
2397 |
-
#: pages/checkout.php:26 pages/checkout.php:27
|
2398 |
-
msgid ""
|
2399 |
-
"Almost done. Review the membership information and pricing below then "
|
2400 |
-
"<strong>click the \"Complete Payment\" button</strong> to finish your order."
|
2401 |
-
msgstr ""
|
2402 |
-
"Téměř hotovo. Zkontrolujte informace o členství a ceny níže, pak "
|
2403 |
-
"<strong>klikněte na tlačítko \"Complete Payment\" </ strong> a objednávka "
|
2404 |
-
"se dokončí."
|
2405 |
-
|
2406 |
-
#: pages/checkout.php:33 pages/checkout.php:34
|
2407 |
-
msgid "change"
|
2408 |
-
msgstr "změna"
|
2409 |
-
|
2410 |
-
#: pages/checkout.php:41 pages/checkout.php:42
|
2411 |
-
#, php-format
|
2412 |
-
msgid "You have selected the <strong>%s</strong> membership level."
|
2413 |
-
msgstr "Vybrali jste si <strong>%s</strong> úřověň členství."
|
2414 |
-
|
2415 |
-
#: pages/checkout.php:51 pages/checkout.php:52
|
2416 |
-
#, php-format
|
2417 |
-
msgid "<p>The <strong>%s</strong> code has been applied to your order.</p>"
|
2418 |
-
msgstr "<p><strong>%s</strong> kupón byl použit k Vaši objednávce.</p>"
|
2419 |
-
|
2420 |
-
#: pages/checkout.php:62 services/applydiscountcode.php:74
|
2421 |
-
#: pages/checkout.php:63
|
2422 |
-
msgid "Click here to change your discount code"
|
2423 |
-
msgstr "Pro úpravu slevového kupónu klikněte zde"
|
2424 |
-
|
2425 |
-
#: pages/checkout.php:64 pages/checkout.php:65
|
2426 |
-
msgid "Click here to enter your discount code"
|
2427 |
-
msgstr "Pro vložení slevového kupónu klikněte zde"
|
2428 |
-
|
2429 |
-
#: pages/checkout.php:64 pages/checkout.php:65
|
2430 |
-
msgid "Do you have a discount code?"
|
2431 |
-
msgstr "Chcete použít slevový kupón?"
|
2432 |
-
|
2433 |
-
#: pages/checkout.php:78 pages/checkout.php:575 pages/checkout.php:79
|
2434 |
-
#: pages/checkout.php:568
|
2435 |
-
msgid "Apply"
|
2436 |
-
msgstr "použít"
|
2437 |
-
|
2438 |
-
#: pages/checkout.php:163 pages/checkout.php:160
|
2439 |
-
msgid "Account Information"
|
2440 |
-
msgstr "Informace o účtu"
|
2441 |
-
|
2442 |
-
#: pages/checkout.php:163 pages/checkout.php:160
|
2443 |
-
msgid "Already have an account?"
|
2444 |
-
msgstr "Máte již svůj účet?"
|
2445 |
-
|
2446 |
-
#: pages/checkout.php:163 pages/checkout.php:160
|
2447 |
-
msgid "Log in here"
|
2448 |
-
msgstr "Přihlašte se zde"
|
2449 |
-
|
2450 |
-
#: pages/checkout.php:189 pages/checkout.php:186
|
2451 |
-
msgid "Confirm Password"
|
2452 |
-
msgstr "Potvrzení hesla"
|
2453 |
-
|
2454 |
-
#: pages/checkout.php:216 pages/checkout.php:213
|
2455 |
-
msgid "Confirm E-mail Address"
|
2456 |
-
msgstr "Potvrzení e-mailové adresy"
|
2457 |
-
|
2458 |
-
#: pages/checkout.php:235 pages/checkout.php:232
|
2459 |
-
msgid "Full Name"
|
2460 |
-
msgstr "Celé jméno"
|
2461 |
-
|
2462 |
-
#: pages/checkout.php:236 pages/checkout.php:233
|
2463 |
-
msgid "LEAVE THIS BLANK"
|
2464 |
-
msgstr "VZÍT ZPĚT"
|
2465 |
-
|
2466 |
-
#: pages/checkout.php:260 pages/checkout.php:257
|
2467 |
-
#, php-format
|
2468 |
-
msgid ""
|
2469 |
-
"You are logged in as <strong>%s</strong>. If you would like to use a "
|
2470 |
-
"different account for this membership, <a href=\"%s\">log out now</a>."
|
2471 |
-
msgstr ""
|
2472 |
-
"Jste přihlášen jako <strong>%s</strong>. Pokud jste chtěl použít jiný účet, "
|
2473 |
-
"<a href=\"%s\">odhlašte se</a>."
|
2474 |
-
|
2475 |
-
#: pages/checkout.php:284 pages/checkout.php:277
|
2476 |
-
#, php-format
|
2477 |
-
msgid "I agree to the %s"
|
2478 |
-
msgstr "Souhlasím s %s"
|
2479 |
-
|
2480 |
-
#: pages/checkout.php:299 pages/checkout.php:292
|
2481 |
-
msgid "Choose your Payment Method"
|
2482 |
-
msgstr "Zvolte vaši platební metodu"
|
2483 |
-
|
2484 |
-
#: pages/checkout.php:307 pages/checkout.php:300
|
2485 |
-
msgid "Check Out with a Credit Card Here"
|
2486 |
-
msgstr "Zde ověřte Vaši kreditní kartu"
|
2487 |
-
|
2488 |
-
#: pages/checkout.php:309 pages/checkout.php:682 pages/checkout.php:302
|
2489 |
-
#: pages/checkout.php:675
|
2490 |
-
msgid "Check Out with PayPal"
|
2491 |
-
msgstr "Zde ověřte PayPal"
|
2492 |
-
|
2493 |
-
#: pages/checkout.php:500 pages/checkout.php:493
|
2494 |
-
msgid "Payment Information"
|
2495 |
-
msgstr "Platební informace"
|
2496 |
-
|
2497 |
-
#: pages/checkout.php:500 pages/checkout.php:493
|
2498 |
-
#, php-format
|
2499 |
-
msgid "We Accept %s"
|
2500 |
-
msgstr "Přijímáme %s"
|
2501 |
-
|
2502 |
-
#: pages/checkout.php:674 pages/checkout.php:667
|
2503 |
-
msgid "Complete Payment"
|
2504 |
-
msgstr "Kompletní platby"
|
2505 |
-
|
2506 |
-
#: pages/checkout.php:688 pages/checkout.php:681
|
2507 |
-
msgid "Submit and Check Out"
|
2508 |
-
msgstr "Ověřit a odeslat"
|
2509 |
-
|
2510 |
-
#: pages/checkout.php:688 pages/checkout.php:681
|
2511 |
-
msgid "Submit and Confirm"
|
2512 |
-
msgstr "Potvrdit a odeslat"
|
2513 |
-
|
2514 |
-
#: pages/checkout.php:688
|
2515 |
-
msgid "Submit and Pay with 2CheckOut"
|
2516 |
-
msgstr "Zaplatit a odeslat pomocí 2CheckOut"
|
2517 |
-
|
2518 |
-
#: pages/checkout.php:694 pages/checkout.php:687
|
2519 |
-
msgid "Processing..."
|
2520 |
-
msgstr "Zpracování..."
|
2521 |
-
|
2522 |
-
#: pages/confirmation.php:12
|
2523 |
-
msgid ""
|
2524 |
-
"Your payment has been submitted. Your membership will be activated shortly."
|
2525 |
-
msgstr "Platba přijata. Vaše členství bude zakrátko aktivní."
|
2526 |
-
|
2527 |
-
#: pages/confirmation.php:14
|
2528 |
-
#, php-format
|
2529 |
-
msgid "Thank you for your membership to %s. Your %s membership is now active."
|
2530 |
-
msgstr "Děkujeme Vám za vaše členství na %s Váše %s členství je nyní aktivní."
|
2531 |
-
|
2532 |
-
#: pages/confirmation.php:28
|
2533 |
-
#, php-format
|
2534 |
-
msgid ""
|
2535 |
-
"Below are details about your membership account and a receipt for your "
|
2536 |
-
"initial membership invoice. A welcome email with a copy of your initial "
|
2537 |
-
"membership invoice has been sent to %s."
|
2538 |
-
msgstr ""
|
2539 |
-
"Níže jsou uvedeny informace o vašem členském účtu. Uvítací e-mail s kopií "
|
2540 |
-
"vašeho členství byl odeslán na % s."
|
2541 |
-
|
2542 |
-
#: pages/confirmation.php:41 pages/invoice.php:22
|
2543 |
-
#, php-format
|
2544 |
-
msgid "Invoice #%s on %s"
|
2545 |
-
msgstr "Faktura #%s na %s"
|
2546 |
-
|
2547 |
-
#: pages/confirmation.php:43
|
2548 |
-
msgid "Print"
|
2549 |
-
msgstr "Tisk"
|
2550 |
-
|
2551 |
-
#: pages/confirmation.php:46 pages/confirmation.php:104 pages/invoice.php:27
|
2552 |
-
#: pages/confirmation.php:45 pages/confirmation.php:102 pages/invoice.php:26
|
2553 |
-
msgid "Account"
|
2554 |
-
msgstr "Účet"
|
2555 |
-
|
2556 |
-
#: pages/confirmation.php:65 pages/invoice.php:52 pages/invoice.php:109
|
2557 |
-
#: pages/confirmation.php:63 pages/invoice.php:50 pages/invoice.php:107
|
2558 |
-
msgid "Total Billed"
|
2559 |
-
msgstr "Celkový účet"
|
2560 |
-
|
2561 |
-
#: pages/confirmation.php:82 pages/invoice.php:69 pages/confirmation.php:80
|
2562 |
-
#: pages/invoice.php:67
|
2563 |
-
msgid "ending in"
|
2564 |
-
msgstr "Končí"
|
2565 |
-
|
2566 |
-
#: pages/confirmation.php:97 pages/confirmation.php:95
|
2567 |
-
#, php-format
|
2568 |
-
msgid ""
|
2569 |
-
"Below are details about your membership account. A welcome email with has "
|
2570 |
-
"been sent to %s."
|
2571 |
-
msgstr ""
|
2572 |
-
"Níže jsou uvedeny informace o vašem účtu. Uvítací e-mail byl odeslán na %s."
|
2573 |
-
|
2574 |
-
#: pages/confirmation.php:105 pages/confirmation.php:103
|
2575 |
-
msgid "Pending"
|
2576 |
-
msgstr "Až do"
|
2577 |
-
|
2578 |
-
#: pages/confirmation.php:113 pages/invoice.php:141 pages/confirmation.php:111
|
2579 |
-
#: pages/invoice.php:139
|
2580 |
-
msgid "View Your Membership Account →"
|
2581 |
-
msgstr "Zobrazit Vás členský účet →"
|
2582 |
-
|
2583 |
-
#: pages/confirmation.php:115 pages/confirmation.php:113
|
2584 |
-
msgid ""
|
2585 |
-
"If your account is not activated within a few minutes, please contact the "
|
2586 |
-
"site owner."
|
2587 |
-
msgstr ""
|
2588 |
-
"Pokud není váš účet aktivován během několika minut, kontaktujte vlastníka "
|
2589 |
-
"webu."
|
2590 |
-
|
2591 |
-
#: pages/invoice.php:79 pages/invoice.php:77
|
2592 |
-
msgid "Subtotal"
|
2593 |
-
msgstr "Mezisoučet"
|
2594 |
-
|
2595 |
-
#: pages/invoice.php:82 pages/invoice.php:80
|
2596 |
-
msgid "Coupon"
|
2597 |
-
msgstr "Kupón"
|
2598 |
-
|
2599 |
-
#: pages/invoice.php:108 pages/invoice.php:106
|
2600 |
-
msgid "Invoice #"
|
2601 |
-
msgstr "Faktura #"
|
2602 |
-
|
2603 |
-
#: pages/invoice.php:122 pages/invoice.php:120
|
2604 |
-
msgid "View Invoice"
|
2605 |
-
msgstr "Zobrazit fakturu"
|
2606 |
-
|
2607 |
-
#: pages/invoice.php:134 pages/invoice.php:132
|
2608 |
-
msgid "No invoices found."
|
2609 |
-
msgstr "Faktruy nenalezeny"
|
2610 |
-
|
2611 |
-
#: pages/invoice.php:145 pages/invoice.php:143
|
2612 |
-
msgid "← View All Invoices"
|
2613 |
-
msgstr "← Zobrazení všech faktur"
|
2614 |
-
|
2615 |
-
#: pages/levels.php:15
|
2616 |
-
msgid "Subscription Information"
|
2617 |
-
msgstr "Přihlašovací informace"
|
2618 |
-
|
2619 |
-
#: pages/levels.php:33
|
2620 |
-
msgid "--"
|
2621 |
-
msgstr "--"
|
2622 |
-
|
2623 |
-
#: pages/levels.php:43
|
2624 |
-
msgid "Free"
|
2625 |
-
msgstr "Zdarma"
|
2626 |
-
|
2627 |
-
#: pages/levels.php:51
|
2628 |
-
#, php-format
|
2629 |
-
msgid "%s per %s for %d more %s."
|
2630 |
-
msgstr "%s na %s pro %d více %s."
|
2631 |
-
|
2632 |
-
#: pages/levels.php:55
|
2633 |
-
#, php-format
|
2634 |
-
msgid "%s every %d %s for %d more %s."
|
2635 |
-
msgstr "%s každý %d %s pro %d více %s."
|
2636 |
-
|
2637 |
-
#: pages/levels.php:60
|
2638 |
-
#, php-format
|
2639 |
-
msgid "%s after %d %s."
|
2640 |
-
msgstr "%s po %d %s."
|
2641 |
-
|
2642 |
-
#: pages/levels.php:66
|
2643 |
-
#, php-format
|
2644 |
-
msgid "%s per %s."
|
2645 |
-
msgstr "%s na %s."
|
2646 |
-
|
2647 |
-
#: pages/levels.php:70
|
2648 |
-
#, php-format
|
2649 |
-
msgid "%s every %d %s."
|
2650 |
-
msgstr "%s každý %d %s."
|
2651 |
-
|
2652 |
-
#: pages/levels.php:113 pages/levels.php:115
|
2653 |
-
msgid "Select"
|
2654 |
-
msgstr "Označit"
|
2655 |
-
|
2656 |
-
#: pages/levels.php:123
|
2657 |
-
msgid "Renew"
|
2658 |
-
msgstr "Obnovit"
|
2659 |
-
|
2660 |
-
#: pages/levels.php:129 pages/levels.php:117
|
2661 |
-
msgid "Your Level"
|
2662 |
-
msgstr "Vaše úrověň"
|
2663 |
-
|
2664 |
-
#: pages/levels.php:145 pages/levels.php:129
|
2665 |
-
msgid "← Return to Your Account"
|
2666 |
-
msgstr "← Návrat k účtu"
|
2667 |
-
|
2668 |
-
#: pages/levels.php:147 pages/levels.php:131
|
2669 |
-
msgid "← Return to Home"
|
2670 |
-
msgstr "← Návrat domů"
|
2671 |
-
|
2672 |
-
#: preheaders/account.php:7 preheaders/levels.php:19
|
2673 |
-
msgid "Your membership status has been updated - Thank you!"
|
2674 |
-
msgstr "Váš členský satus byl upraven - Děkujeme!"
|
2675 |
-
|
2676 |
-
#: preheaders/account.php:11 preheaders/levels.php:23
|
2677 |
-
msgid ""
|
2678 |
-
"Sorry, your request could not be completed - please try again in a few "
|
2679 |
-
"moments."
|
2680 |
-
msgstr "Váš požadavek nemůže bát dokončen - zkuste to prosím později."
|
2681 |
-
|
2682 |
-
#: preheaders/billing.php:258 preheaders/checkout.php:481
|
2683 |
-
#: preheaders/checkout.php:464
|
2684 |
-
msgid "Please complete all required fields."
|
2685 |
-
msgstr "Vyplňte všechna poviná pole."
|
2686 |
-
|
2687 |
-
#: preheaders/billing.php:263 preheaders/checkout.php:491
|
2688 |
-
#: preheaders/checkout.php:474
|
2689 |
-
msgid "Your email addresses do not match. Please try again."
|
2690 |
-
msgstr "Vaše e-mailová adresa nesouhlasí. Zadejte ji znovu"
|
2691 |
-
|
2692 |
-
#: preheaders/billing.php:268 preheaders/checkout.php:497
|
2693 |
-
#: preheaders/checkout.php:480
|
2694 |
-
msgid "The email address entered is in an invalid format. Please try again."
|
2695 |
-
msgstr ""
|
2696 |
-
"Vaše e-mailová adresa nebyla vložena ve správném formátu. Zkuste to znovu."
|
2697 |
-
|
2698 |
-
#: preheaders/billing.php:274
|
2699 |
-
msgid "All good!"
|
2700 |
-
msgstr "Vše v pořádku!"
|
2701 |
-
|
2702 |
-
#: preheaders/billing.php:340
|
2703 |
-
#, php-format
|
2704 |
-
msgid "Information updated. <a href=\"%s\">« back to my account</a>"
|
2705 |
-
msgstr "Informace upraveny. <a href=\"%s\">« zpět k Vašemu účtu</a>"
|
2706 |
-
|
2707 |
-
#: preheaders/billing.php:347
|
2708 |
-
msgid "Error updating billing information."
|
2709 |
-
msgstr "Chyba při aktualizaci faktruačních údajů."
|
2710 |
-
|
2711 |
-
#: preheaders/cancel.php:24
|
2712 |
-
msgid "Your membership has been cancelled."
|
2713 |
-
msgstr "Vaše členství bylo ukončeno."
|
2714 |
-
|
2715 |
-
#: preheaders/checkout.php:28 preheaders/checkout.php:508
|
2716 |
-
#: preheaders/checkout.php:491
|
2717 |
-
msgid "Invalid gateway."
|
2718 |
-
msgstr "Neplatná brána."
|
2719 |
-
|
2720 |
-
#: preheaders/checkout.php:96
|
2721 |
-
msgid "Checkout: Payment Information"
|
2722 |
-
msgstr "Pokladna: Informace o platbě"
|
2723 |
-
|
2724 |
-
#: preheaders/checkout.php:109
|
2725 |
-
msgid "Setup Your Account"
|
2726 |
-
msgstr "Nastavit S´áš účet"
|
2727 |
-
|
2728 |
-
#: preheaders/checkout.php:485 preheaders/checkout.php:468
|
2729 |
-
msgid "Your passwords do not match. Please try again."
|
2730 |
-
msgstr "Vaše heslo se neshoduje. Zkuste to prosím znovu."
|
2731 |
-
|
2732 |
-
#: preheaders/checkout.php:503 preheaders/checkout.php:486
|
2733 |
-
#, php-format
|
2734 |
-
msgid "Please check the box to agree to the %s."
|
2735 |
-
msgstr "Prosím, proveďte kontrolu políčka k odsouhlasení %s."
|
2736 |
-
|
2737 |
-
#: preheaders/checkout.php:512 preheaders/checkout.php:495
|
2738 |
-
msgid "Are you a spammer?"
|
2739 |
-
msgstr "Jste spamer?"
|
2740 |
-
|
2741 |
-
#: preheaders/checkout.php:535 preheaders/checkout.php:518
|
2742 |
-
msgid "That username is already taken. Please try another."
|
2743 |
-
msgstr "Toto uživatelské heslo je již použito. Prosím zkuste to znovu."
|
2744 |
-
|
2745 |
-
#: preheaders/checkout.php:541 preheaders/checkout.php:524
|
2746 |
-
msgid "That email address is already taken. Please try another."
|
2747 |
-
msgstr "Tato e-mailová adresa je již použita. Zkuste prosím jinou."
|
2748 |
-
|
2749 |
-
#: preheaders/checkout.php:561 preheaders/checkout.php:544
|
2750 |
-
#, php-format
|
2751 |
-
msgid "reCAPTCHA failed. (%s) Please try again."
|
2752 |
-
msgstr "reCAPTCHA neúspěšna. (%s) Zkuste to prosím znovu."
|
2753 |
-
|
2754 |
-
#: preheaders/checkout.php:701 preheaders/checkout.php:683
|
2755 |
-
msgid "Payment accepted."
|
2756 |
-
msgstr "Platba potvrzena."
|
2757 |
-
|
2758 |
-
#: preheaders/checkout.php:709 preheaders/checkout.php:691
|
2759 |
-
msgid ""
|
2760 |
-
"Unknown error generating account. Please contact us to setup your membership."
|
2761 |
-
msgstr ""
|
2762 |
-
"Neznámá chyba generování uživatelského účtu. Kontaktujte vlastníka webu."
|
2763 |
-
|
2764 |
-
#: preheaders/checkout.php:753 preheaders/checkout.php:822
|
2765 |
-
#: preheaders/checkout.php:735 preheaders/checkout.php:803
|
2766 |
-
msgid "The PayPal Token was lost."
|
2767 |
-
msgstr "Paypal Token byl ztracen."
|
2768 |
-
|
2769 |
-
#: preheaders/checkout.php:859 preheaders/checkout.php:825
|
2770 |
-
#: preheaders/checkout.php:844
|
2771 |
-
msgid ""
|
2772 |
-
"Your payment was accepted, but there was an error setting up your account. "
|
2773 |
-
"Please contact us."
|
2774 |
-
msgstr ""
|
2775 |
-
"Vaše platba byla přijata, ale ve vašem účtu byla objevena chyba. Prosím, "
|
2776 |
-
"kontaktujte nás."
|
2777 |
-
|
2778 |
-
#: preheaders/checkout.php:1045 preheaders/checkout.php:983
|
2779 |
-
#: preheaders/checkout.php:1030
|
2780 |
-
msgid ""
|
2781 |
-
"IMPORTANT: Something went wrong during membership creation. Your credit card "
|
2782 |
-
"authorized, but we cancelled the order immediately. You should not try to "
|
2783 |
-
"submit this form again. Please contact the site owner to fix this issue."
|
2784 |
-
msgstr ""
|
2785 |
-
"DŮLEŽITÉ: Při vytváření členství se něco pokazilo. Vaše kreditní karta je "
|
2786 |
-
"autorizována, ale objednávka byla okamžitě zrušena. Obraťte se na vlastníka "
|
2787 |
-
"stránky, který tento problém vyřeší."
|
2788 |
-
|
2789 |
-
#: preheaders/checkout.php:1050 preheaders/checkout.php:988
|
2790 |
-
#: preheaders/checkout.php:1035
|
2791 |
-
msgid ""
|
2792 |
-
"IMPORTANT: Something went wrong during membership creation. Your credit card "
|
2793 |
-
"was charged, but we couldn't assign your membership. You should not submit "
|
2794 |
-
"this form again. Please contact the site owner to fix this issue."
|
2795 |
-
msgstr ""
|
2796 |
-
"DŮLEŽITÉ: Při vytváření členství se něco pokazilo. Vaše kreditní karta byla "
|
2797 |
-
"nabitá, ale jsme se nemohli aktivovat vaše členství. Obraťte se na vlastníka "
|
2798 |
-
"stránky, který tento problém vyřeší."
|
2799 |
-
|
2800 |
-
#: preheaders/checkout.php:1063 preheaders/checkout.php:1001
|
2801 |
-
#: preheaders/checkout.php:1048
|
2802 |
-
#, php-format
|
2803 |
-
msgid ""
|
2804 |
-
"You must <a href=\"%s\">setup a Payment Gateway</a> before any payments will "
|
2805 |
-
"be processed."
|
2806 |
-
msgstr ""
|
2807 |
-
"Před započetím plateb musíte <a href=\"%s\">nastavit platební bránu</a>."
|
2808 |
-
|
2809 |
-
#: preheaders/checkout.php:1065 preheaders/checkout.php:1003
|
2810 |
-
#: preheaders/checkout.php:1050
|
2811 |
-
msgid "A Payment Gateway must be setup before any payments will be processed."
|
2812 |
-
msgstr ""
|
2813 |
-
"Platební brána musí být nastavena předtím, než budou zpracovány veškeré "
|
2814 |
-
"platby."
|
2815 |
-
|
2816 |
-
#: scheduled/crons.php:31 scheduled/crons.php:61
|
2817 |
-
#, php-format
|
2818 |
-
msgid "Membership expired email sent to %s. "
|
2819 |
-
msgstr "Členství skončílo pomocí e-mailu zaslaného na% s."
|
2820 |
-
|
2821 |
-
#: scheduled/crons.php:74 scheduled/crons.php:27
|
2822 |
-
#, php-format
|
2823 |
-
msgid "Membership expiring email sent to %s. "
|
2824 |
-
msgstr "Členství skončí pomocí e-mailu zaslaného na% s."
|
2825 |
-
|
2826 |
-
#: scheduled/crons.php:143
|
2827 |
-
#, php-format
|
2828 |
-
msgid "Credit card expiring email sent to %s. "
|
2829 |
-
msgstr "Kreditní karta skončí pomocí e-mailu zaslaného na% s."
|
2830 |
-
|
2831 |
-
#: scheduled/crons.php:196 scheduled/crons.php:104
|
2832 |
-
#, php-format
|
2833 |
-
msgid "Trial ending email sent to %s. "
|
2834 |
-
msgstr "Zkušební doba zkončí po zaslání emailu %s."
|
2835 |
-
|
2836 |
-
#: services/applydiscountcode.php:82
|
2837 |
-
#, php-format
|
2838 |
-
msgid "The <strong>%s</strong> code has been applied to your order."
|
2839 |
-
msgstr "<strong>%s</strong> kupón byl použit k Vaší objednávce."
|
2840 |
-
|
2841 |
-
#: services/authnet-silent-post.php:133
|
2842 |
-
msgid ""
|
2843 |
-
"<p>A payment is being held for review within Authorize.net.</p><p>Payment "
|
2844 |
-
"Information From Authorize.net"
|
2845 |
-
msgstr ""
|
2846 |
-
"<p>Platba se uskuteční v rámci Authorize.net. </p><p> Informace o platbě od "
|
2847 |
-
"Authorize.net"
|
2848 |
-
|
2849 |
-
#: services/stripe-webhook.php:176
|
2850 |
-
#, php-format
|
2851 |
-
msgid ""
|
2852 |
-
"%s has had their payment subscription cancelled by Stripe. Please check that "
|
2853 |
-
"this user's membership is cancelled on your site if it should be."
|
2854 |
-
msgstr ""
|
2855 |
-
"% s má své předplatné zrušeno Stripem. Zkontrolujte prosím, zda se "
|
2856 |
-
"uživatelovo členství zruší na vašich stránkách, pokud by to tak mělo být."
|
2857 |
-
|
2858 |
-
#: adminpages/membershiplevels.php:398
|
2859 |
-
msgid ""
|
2860 |
-
"2Checkout integration does not currently support custom trials. You can do "
|
2861 |
-
"one period trials by setting an initial payment different from the billing "
|
2862 |
-
"amount."
|
2863 |
-
msgstr ""
|
2864 |
-
"Integrace 2Checkout v současné době nepodporuje vlastní zkušební dobu. "
|
2865 |
-
"Můžete to udělat v jednom období zkušební doby, nastavením počáteční platby "
|
2866 |
-
"lišící se od fakturační částky."
|
2867 |
-
|
2868 |
-
#: adminpages/paymentsettings.php:170
|
2869 |
-
msgid ""
|
2870 |
-
"Payflow Pro currently only supports one-time payments. Users will not be "
|
2871 |
-
"able to checkout for levels with recurring payments."
|
2872 |
-
msgstr ""
|
2873 |
-
"Payflow Pro v současné době podporuje pouze jednorázové platby. Uživatelé "
|
2874 |
-
"nebudou moci zaplatit pro úrovně opakujících se plateb."
|
2875 |
-
|
2876 |
-
#: adminpages/paymentsettings.php:410 adminpages/paymentsettings.php:421
|
2877 |
-
msgid "Use SSL"
|
2878 |
-
msgstr "Použít SSL"
|
2879 |
-
|
2880 |
-
#: adminpages/paymentsettings.php:425
|
2881 |
-
msgid "Required by this Gateway Option"
|
2882 |
-
msgstr "Vyžadované nastavením brány"
|
2883 |
-
|
2884 |
-
#: pages/confirmation.php:12
|
2885 |
-
msgid ""
|
2886 |
-
"Your payment has been submitted to PayPal. Your membership will be activated "
|
2887 |
-
"shortly."
|
2888 |
-
msgstr ""
|
2889 |
-
"Vaše platba byla odeslána na PayPal. Vaše členství bude zakrátko aktivní."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/pmpro-da_DK.mo
DELETED
Binary file
|
languages/pmpro-da_DK.po
DELETED
@@ -1,3502 +0,0 @@
|
|
1 |
-
#
|
2 |
-
# Hi there! Details on how to help out translating Paid Memberships Pro can be found at:
|
3 |
-
# http://www.paidmembershipspro.com/documentation/languages/
|
4 |
-
#
|
5 |
-
msgid ""
|
6 |
-
msgstr ""
|
7 |
-
"Project-Id-Version: pmpro-dk_DA\n"
|
8 |
-
"POT-Creation-Date: 2014-05-05 13:29-0400\n"
|
9 |
-
"PO-Revision-Date: 2014-07-26 16:43+0100\n"
|
10 |
-
"Last-Translator: Miscni <miscni@hotmail.com>\n"
|
11 |
-
"Language-Team: Stranger Studios DK section <miscni@hotmail.com>\n"
|
12 |
-
"MIME-Version: 1.0\n"
|
13 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
-
"Content-Transfer-Encoding: 8bit\n"
|
15 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
16 |
-
"Language: da_DK\n"
|
17 |
-
"X-Generator: Poedit 1.6.7\n"
|
18 |
-
"X-Poedit-Bookmarks: -1,-1,215,-1,-1,-1,-1,-1,-1,-1\n"
|
19 |
-
|
20 |
-
#: adminpages/addons.php:5 adminpages/advancedsettings.php:5
|
21 |
-
#: adminpages/discountcodes.php:5 adminpages/emailsettings.php:5
|
22 |
-
#: adminpages/membershiplevels.php:5 adminpages/memberslist-csv.php:5
|
23 |
-
#: adminpages/memberslist.php:5 adminpages/orders-csv.php:5
|
24 |
-
#: adminpages/orders.php:5 adminpages/pagesettings.php:5
|
25 |
-
#: adminpages/paymentsettings.php:5
|
26 |
-
msgid "You do not have permissions to perform this action."
|
27 |
-
msgstr "Du har ikke tilladelse, til at udfører denne handling."
|
28 |
-
|
29 |
-
#: adminpages/addons.php:79
|
30 |
-
msgid "Disabled"
|
31 |
-
msgstr "Deaktiveret."
|
32 |
-
|
33 |
-
#: adminpages/addons.php:79
|
34 |
-
msgid "Enabled"
|
35 |
-
msgstr "Aktiver"
|
36 |
-
|
37 |
-
#: adminpages/admin_header.php:25
|
38 |
-
msgid "Add a membership level to get started."
|
39 |
-
msgstr "Tilføj et medlems niveau for at komme igang."
|
40 |
-
|
41 |
-
#: adminpages/admin_header.php:27
|
42 |
-
msgid "Setup the membership pages"
|
43 |
-
msgstr "Sæt en medleys side op"
|
44 |
-
|
45 |
-
#: adminpages/admin_header.php:29
|
46 |
-
msgid "Setup your SSL certificate and payment gateway"
|
47 |
-
msgstr "Sæt op din SSL certifikater og betalings gateway"
|
48 |
-
|
49 |
-
#: adminpages/admin_header.php:38
|
50 |
-
msgid ""
|
51 |
-
"The billing details for some of your membership levels is not supported by "
|
52 |
-
"Stripe."
|
53 |
-
msgstr ""
|
54 |
-
"Betalings detaljer, for nogle af dine medlems niveaur, understøttes ikke af "
|
55 |
-
"Stripe."
|
56 |
-
|
57 |
-
#: adminpages/admin_header.php:46
|
58 |
-
msgid ""
|
59 |
-
"The billing details for this level are not supported by Stripe. Please "
|
60 |
-
"review the notes in the Billing Details section below."
|
61 |
-
msgstr ""
|
62 |
-
"Betalings detaljer, for dette niveau understøttes ikke af Stripe. Gennemgå "
|
63 |
-
"venligst notater under Betalings Detaljer sektionen."
|
64 |
-
|
65 |
-
#: adminpages/admin_header.php:50 adminpages/admin_header.php:70
|
66 |
-
#: adminpages/admin_header.php:90 adminpages/admin_header.php:111
|
67 |
-
msgid "The levels with issues are highlighted below."
|
68 |
-
msgstr "De niveaur med problemer er fremhævet nedenfor."
|
69 |
-
|
70 |
-
#: adminpages/admin_header.php:52 adminpages/admin_header.php:72
|
71 |
-
#: adminpages/admin_header.php:92 adminpages/admin_header.php:113
|
72 |
-
msgid "Please edit your levels"
|
73 |
-
msgstr "Venlig redigere dine niveaur"
|
74 |
-
|
75 |
-
#: adminpages/admin_header.php:58
|
76 |
-
msgid ""
|
77 |
-
"The billing details for some of your membership levels is not supported by "
|
78 |
-
"Payflow."
|
79 |
-
msgstr ""
|
80 |
-
"Betalings detaljer for nogle af dine medlems niveauer, understøttes ikke af "
|
81 |
-
"Payflow."
|
82 |
-
|
83 |
-
#: adminpages/admin_header.php:66
|
84 |
-
msgid ""
|
85 |
-
"The billing details for this level are not supported by Payflow. Please "
|
86 |
-
"review the notes in the Billing Details section below."
|
87 |
-
msgstr ""
|
88 |
-
"Betalings detaljer for dette niveau understøttes ikke af Payflow. Gennemgå "
|
89 |
-
"venligst notater under Betalings Detajler sektionen."
|
90 |
-
|
91 |
-
#: adminpages/admin_header.php:78
|
92 |
-
msgid ""
|
93 |
-
"The billing details for some of your membership levels is not supported by "
|
94 |
-
"Braintree."
|
95 |
-
msgstr ""
|
96 |
-
"Betalings detaljer for nogen af dine medlems niveaur, undersøttes ikke af "
|
97 |
-
"Braintree."
|
98 |
-
|
99 |
-
#: adminpages/admin_header.php:86
|
100 |
-
msgid ""
|
101 |
-
"The billing details for this level are not supported by Braintree. Please "
|
102 |
-
"review the notes in the Billing Details section below."
|
103 |
-
msgstr ""
|
104 |
-
"Betalings detaljer for dette niveau understøttes ikke af Braintree. Gennemgå "
|
105 |
-
"venligst noter I Betalings Detaljer sektion nedenfor."
|
106 |
-
|
107 |
-
#: adminpages/admin_header.php:98
|
108 |
-
msgid ""
|
109 |
-
"The billing details for some of your membership levels is not supported by "
|
110 |
-
"TwoCheckout."
|
111 |
-
msgstr ""
|
112 |
-
"Betalings detaljer for nogle af dine medlemsskab niveaur, understøttes ikke "
|
113 |
-
"af TwoCheckout. "
|
114 |
-
|
115 |
-
#: adminpages/admin_header.php:107
|
116 |
-
msgid ""
|
117 |
-
"The billing details for this level are not supported by 2Checkout. Please "
|
118 |
-
"review the notes in the Billing Details section below."
|
119 |
-
msgstr ""
|
120 |
-
"Betalings detaljer for dette niveau understøttes ikke af 2Checkout. Gennemgå "
|
121 |
-
"venligst noter I Betalings Detaljer sektionen nedenfor."
|
122 |
-
|
123 |
-
#: adminpages/admin_header.php:127 adminpages/admin_header.php:106
|
124 |
-
msgid "Plugin Support"
|
125 |
-
msgstr "Plugin Support"
|
126 |
-
|
127 |
-
#: adminpages/admin_header.php:127 adminpages/admin_header.php:106
|
128 |
-
msgid "User Forum"
|
129 |
-
msgstr "Bruger Forum"
|
130 |
-
|
131 |
-
#: adminpages/admin_header.php:149 adminpages/membershiplevels.php:498
|
132 |
-
#: adminpages/pagesettings.php:69 includes/adminpages.php:107
|
133 |
-
#: adminpages/admin_header.php:128 adminpages/membershiplevels.php:490
|
134 |
-
#: adminpages/membershiplevels.php:496 includes/adminpages.php:44
|
135 |
-
#: includes/adminpages.php:100
|
136 |
-
msgid "Membership Levels"
|
137 |
-
msgstr "Medlemsskab Niveaur"
|
138 |
-
|
139 |
-
#: adminpages/admin_header.php:150 adminpages/pagesettings.php:120
|
140 |
-
#: adminpages/admin_header.php:129 adminpages/pagesettings.php:92
|
141 |
-
msgid "Pages"
|
142 |
-
msgstr "Sider"
|
143 |
-
|
144 |
-
#: adminpages/admin_header.php:151 adminpages/admin_header.php:130
|
145 |
-
msgid "Payment Gateway & SSL"
|
146 |
-
msgstr "Betalings Gateway & SSL"
|
147 |
-
|
148 |
-
#: adminpages/admin_header.php:152 adminpages/memberslist.php:148
|
149 |
-
#: pages/account.php:56 adminpages/admin_header.php:131
|
150 |
-
#: adminpages/memberslist.php:115 pages/account.php:52
|
151 |
-
msgid "Email"
|
152 |
-
msgstr "Email"
|
153 |
-
|
154 |
-
#: adminpages/admin_header.php:153 adminpages/admin_header.php:132
|
155 |
-
msgid "Advanced"
|
156 |
-
msgstr "Avanceret"
|
157 |
-
|
158 |
-
#: adminpages/admin_header.php:154 includes/adminpages.php:52
|
159 |
-
#: includes/adminpages.php:142 adminpages/admin_header.php:133
|
160 |
-
#: includes/adminpages.php:14 includes/adminpages.php:69
|
161 |
-
#: includes/adminpages.php:135
|
162 |
-
msgid "Add Ons"
|
163 |
-
msgstr "Add Ons"
|
164 |
-
|
165 |
-
#: adminpages/advancedsettings.php:42 adminpages/advancedsettings.php:35
|
166 |
-
msgid "Your advanced settings have been updated."
|
167 |
-
msgstr "Dine advanceret indstillinger er bleven opdateret."
|
168 |
-
|
169 |
-
#: adminpages/advancedsettings.php:66
|
170 |
-
#, php-format
|
171 |
-
msgid ""
|
172 |
-
"This content is for !!levels!! members only. <a href=\"%s\">Register here</"
|
173 |
-
"a>."
|
174 |
-
msgstr ""
|
175 |
-
"Dette indhold er kun for !!levels!! medlemmer. <a href=\"%s\">Registrerer "
|
176 |
-
"her</a>."
|
177 |
-
|
178 |
-
#: adminpages/advancedsettings.php:71
|
179 |
-
#, php-format
|
180 |
-
msgid ""
|
181 |
-
"Please <a href=\"%s\">login</a> to view this content. (<a href=\"%s"
|
182 |
-
"\">Register here</a>.)"
|
183 |
-
msgstr ""
|
184 |
-
"Vær venlig at <a href=\"%s\">Log Ind</a> for at læse dette indhold. (<a href="
|
185 |
-
"\"%s\">Registerer her</a>.)"
|
186 |
-
|
187 |
-
#: adminpages/advancedsettings.php:76
|
188 |
-
msgid ""
|
189 |
-
"This content is for members only. Visit the site and log in/register to read."
|
190 |
-
msgstr ""
|
191 |
-
"Dette indhold er kun for medllemmer. Besøg siden og log ind/registrerer for "
|
192 |
-
"at læse."
|
193 |
-
|
194 |
-
#: adminpages/advancedsettings.php:86 includes/adminpages.php:51
|
195 |
-
#: includes/adminpages.php:135 adminpages/advancedsettings.php:79
|
196 |
-
#: includes/adminpages.php:13 includes/adminpages.php:64
|
197 |
-
#: includes/adminpages.php:128
|
198 |
-
msgid "Advanced Settings"
|
199 |
-
msgstr "Avanceret Indstillinger"
|
200 |
-
|
201 |
-
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:85
|
202 |
-
msgid "Message for Logged-in Non-members"
|
203 |
-
msgstr "Beskeder til logget ind ikke-medlemmer"
|
204 |
-
|
205 |
-
#: adminpages/advancedsettings.php:96 adminpages/advancedsettings.php:89
|
206 |
-
msgid ""
|
207 |
-
"This message replaces the post content for non-members. Available variables"
|
208 |
-
msgstr ""
|
209 |
-
"Denne besked erstatter dette indhold for ikke-medlemmer. Forskellige "
|
210 |
-
"muligheder er tilgængelig"
|
211 |
-
|
212 |
-
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:94
|
213 |
-
msgid "Message for Logged-out Users"
|
214 |
-
msgstr "Besked til brugere der er logget ud"
|
215 |
-
|
216 |
-
#: adminpages/advancedsettings.php:105 adminpages/advancedsettings.php:98
|
217 |
-
msgid "This message replaces the post content for logged-out visitors."
|
218 |
-
msgstr "Denne besked erstatter det postet indhold for lbesøgende."
|
219 |
-
|
220 |
-
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:103
|
221 |
-
msgid "Message for RSS Feed"
|
222 |
-
msgstr "Besked til RSS Feed"
|
223 |
-
|
224 |
-
#: adminpages/advancedsettings.php:114 adminpages/advancedsettings.php:107
|
225 |
-
msgid "This message replaces the post content in RSS feeds."
|
226 |
-
msgstr "Denne besked erstatter postet indhold I RSS feeds."
|
227 |
-
|
228 |
-
#: adminpages/advancedsettings.php:120 adminpages/advancedsettings.php:113
|
229 |
-
msgid "Show Excerpts to Non-Members?"
|
230 |
-
msgstr "Vis Uddrag til ikke-medlemmer?"
|
231 |
-
|
232 |
-
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:117
|
233 |
-
msgid "No - Hide excerpts."
|
234 |
-
msgstr "Nej - Skjul uddrag"
|
235 |
-
|
236 |
-
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:118
|
237 |
-
msgid "Yes - Show excerpts."
|
238 |
-
msgstr "Ja - Vis uddrag"
|
239 |
-
|
240 |
-
#: adminpages/advancedsettings.php:135 adminpages/advancedsettings.php:194
|
241 |
-
#: adminpages/advancedsettings.php:206 adminpages/membershiplevels.php:571
|
242 |
-
#: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:459
|
243 |
-
#: includes/profile.php:123 adminpages/advancedsettings.php:128
|
244 |
-
#: adminpages/advancedsettings.php:187 adminpages/advancedsettings.php:199
|
245 |
-
#: adminpages/membershiplevels.php:563 adminpages/membershiplevels.php:569
|
246 |
-
#: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
|
247 |
-
#: adminpages/paymentsettings.php:454 includes/profile.php:121
|
248 |
-
msgid "No"
|
249 |
-
msgstr "Nej"
|
250 |
-
|
251 |
-
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:129
|
252 |
-
msgid "Hide Ads From All Members"
|
253 |
-
msgstr "Skjul Reklamer For Alle Medlemmer"
|
254 |
-
|
255 |
-
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:130
|
256 |
-
msgid "Hide Ads From Certain Members"
|
257 |
-
msgstr "Skjul Reklamer For Specifikke Medlemmer"
|
258 |
-
|
259 |
-
#: adminpages/advancedsettings.php:144 adminpages/advancedsettings.php:137
|
260 |
-
msgid "Ads from the following plugins will be automatically turned off"
|
261 |
-
msgstr "Reklamer fra følgende plugins ville automatisk blive slået fra"
|
262 |
-
|
263 |
-
#: adminpages/advancedsettings.php:145 adminpages/advancedsettings.php:138
|
264 |
-
msgid "To hide ads in your template code, use code like the following"
|
265 |
-
msgstr "For at skjule reklamer i din template kode, brug følgende"
|
266 |
-
|
267 |
-
#: adminpages/advancedsettings.php:156 adminpages/advancedsettings.php:149
|
268 |
-
msgid "Choose Levels to Hide Ads From"
|
269 |
-
msgstr "Vælg nivauer for at Skjule Reklamer Fra"
|
270 |
-
|
271 |
-
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:183
|
272 |
-
msgid "Redirect all traffic from registration page to /susbcription/?"
|
273 |
-
msgstr "Omdigerer alt trafik fra Registrerings siden til /registrering/?"
|
274 |
-
|
275 |
-
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:183
|
276 |
-
msgid "multisite only"
|
277 |
-
msgstr "kun for flere sites"
|
278 |
-
|
279 |
-
#: adminpages/advancedsettings.php:195 adminpages/membershiplevels.php:571
|
280 |
-
#: adminpages/paymentsettings.php:435 adminpages/paymentsettings.php:460
|
281 |
-
#: includes/profile.php:124 adminpages/advancedsettings.php:188
|
282 |
-
#: adminpages/membershiplevels.php:563 adminpages/membershiplevels.php:569
|
283 |
-
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
|
284 |
-
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:455
|
285 |
-
#: includes/profile.php:122
|
286 |
-
msgid "Yes"
|
287 |
-
msgstr "Ja"
|
288 |
-
|
289 |
-
#: adminpages/advancedsettings.php:202 adminpages/advancedsettings.php:195
|
290 |
-
msgid "Use reCAPTCHA?"
|
291 |
-
msgstr "Brug reCAPTCHA?"
|
292 |
-
|
293 |
-
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:200
|
294 |
-
msgid "Yes - Free memberships only."
|
295 |
-
msgstr "Ja - Kun for gratis medlemsskab."
|
296 |
-
|
297 |
-
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:201
|
298 |
-
msgid "Yes - All memberships."
|
299 |
-
msgstr "Ja - Alle medlemsskaber."
|
300 |
-
|
301 |
-
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:203
|
302 |
-
msgid "A free reCAPTCHA key is required."
|
303 |
-
msgstr "En gratis reCAPTCHA nøgle er påkrævet."
|
304 |
-
|
305 |
-
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:203
|
306 |
-
msgid "Click here to signup for reCAPTCHA"
|
307 |
-
msgstr "Klik her, for at registerer med reCAPTCHA"
|
308 |
-
|
309 |
-
#: adminpages/advancedsettings.php:216 adminpages/advancedsettings.php:209
|
310 |
-
msgid "reCAPTCHA Public Key"
|
311 |
-
msgstr "reCAPTCHA Offentlig Nøgle"
|
312 |
-
|
313 |
-
#: adminpages/advancedsettings.php:219 adminpages/advancedsettings.php:212
|
314 |
-
msgid "reCAPTCHA Private Key"
|
315 |
-
msgstr "reCAPTCHA Privat Nøgle"
|
316 |
-
|
317 |
-
#: adminpages/advancedsettings.php:225 adminpages/advancedsettings.php:218
|
318 |
-
msgid "Require Terms of Service on signups?"
|
319 |
-
msgstr "Ønskes Vilkår og Betingelser med registrering? "
|
320 |
-
|
321 |
-
#: adminpages/advancedsettings.php:232 adminpages/advancedsettings.php:225
|
322 |
-
msgid ""
|
323 |
-
"If yes, create a WordPress page containing your TOS agreement and assign it "
|
324 |
-
"using the dropdown above."
|
325 |
-
msgstr ""
|
326 |
-
"Hvis ja er valgt, opret en Wordpress side, med indhold af din VOB aftale, og "
|
327 |
-
"tilføje den, med dropdown ovenfor.t"
|
328 |
-
|
329 |
-
#: adminpages/advancedsettings.php:272
|
330 |
-
msgid "selected"
|
331 |
-
msgstr "valgte"
|
332 |
-
|
333 |
-
#: adminpages/advancedsettings.php:355 adminpages/pagesettings.php:251
|
334 |
-
#: adminpages/paymentsettings.php:532 adminpages/advancedsettings.php:284
|
335 |
-
#: adminpages/pagesettings.php:209 adminpages/pagesettings.php:223
|
336 |
-
#: adminpages/paymentsettings.php:485 adminpages/paymentsettings.php:526
|
337 |
-
msgid "Save Settings"
|
338 |
-
msgstr "Gem Indstillinger"
|
339 |
-
|
340 |
-
#: adminpages/discountcodes.php:48
|
341 |
-
msgid "Discount code updated successfully."
|
342 |
-
msgstr "Rabat kode er opdateret succesfuldt"
|
343 |
-
|
344 |
-
#: adminpages/discountcodes.php:55
|
345 |
-
msgid "Error updating discount code. That code may already be in use."
|
346 |
-
msgstr "Fejl I at opdatere rabat kode. Denne kode er nok allerede i brug."
|
347 |
-
|
348 |
-
#: adminpages/discountcodes.php:64
|
349 |
-
msgid "Discount code added successfully."
|
350 |
-
msgstr "Rabat kode er tilføjet succesfuldt."
|
351 |
-
|
352 |
-
#: adminpages/discountcodes.php:71
|
353 |
-
msgid "Error adding discount code. That code may already be in use."
|
354 |
-
msgstr "Fejl i at tilføje rabat kode. Denne kode må allerede være i brug,"
|
355 |
-
|
356 |
-
#: adminpages/discountcodes.php:196
|
357 |
-
#, php-format
|
358 |
-
msgid "Error saving values for the %s level."
|
359 |
-
msgstr "Fejl i at gemme værdier til denne %s niveau."
|
360 |
-
|
361 |
-
#: adminpages/discountcodes.php:204
|
362 |
-
msgid "There were errors updating the level values: "
|
363 |
-
msgstr "Der opstod fejl I at opdatere niveau værdier: "
|
364 |
-
|
365 |
-
#: adminpages/discountcodes.php:237 adminpages/discountcodes.php:234
|
366 |
-
#, php-format
|
367 |
-
msgid "Code %s deleted successfully."
|
368 |
-
msgstr "Kode %s slettet succesfuldt."
|
369 |
-
|
370 |
-
#: adminpages/discountcodes.php:242 adminpages/discountcodes.php:239
|
371 |
-
msgid ""
|
372 |
-
"Error deleting discount code. The code was only partially deleted. Please "
|
373 |
-
"try again."
|
374 |
-
msgstr ""
|
375 |
-
"Fejl opstod, med at slette rabat kode. Koden blev delvist slettet. Prøv igen."
|
376 |
-
|
377 |
-
#: adminpages/discountcodes.php:248 adminpages/discountcodes.php:245
|
378 |
-
msgid "Error deleting code. Please try again."
|
379 |
-
msgstr "Fejl opstod I at slette koden. Prøv igen"
|
380 |
-
|
381 |
-
#: adminpages/discountcodes.php:254 adminpages/discountcodes.php:251
|
382 |
-
msgid "Code not found."
|
383 |
-
msgstr "Kode ikke fundet."
|
384 |
-
|
385 |
-
#: adminpages/discountcodes.php:267 adminpages/discountcodes.php:264
|
386 |
-
msgid "Edit Discount Code"
|
387 |
-
msgstr "Redigere Rabat Kode"
|
388 |
-
|
389 |
-
#: adminpages/discountcodes.php:269 adminpages/discountcodes.php:529
|
390 |
-
#: adminpages/discountcodes.php:266 adminpages/discountcodes.php:526
|
391 |
-
msgid "Add New Discount Code"
|
392 |
-
msgstr "Tilføj Ny Rabat Kode"
|
393 |
-
|
394 |
-
#: adminpages/discountcodes.php:309 adminpages/discountcodes.php:557
|
395 |
-
#: adminpages/membershiplevels.php:286 adminpages/membershiplevels.php:513
|
396 |
-
#: adminpages/memberslist.php:144 adminpages/orders.php:900
|
397 |
-
#: adminpages/reports/login.php:140 adminpages/discountcodes.php:306
|
398 |
-
#: adminpages/discountcodes.php:547 adminpages/membershiplevels.php:284
|
399 |
-
#: adminpages/membershiplevels.php:505 adminpages/membershiplevels.php:511
|
400 |
-
#: adminpages/memberslist.php:111 adminpages/orders.php:597
|
401 |
-
msgid "ID"
|
402 |
-
msgstr "ID"
|
403 |
-
|
404 |
-
#: adminpages/discountcodes.php:310 adminpages/orders.php:261
|
405 |
-
#: adminpages/discountcodes.php:307 adminpages/orders.php:211
|
406 |
-
msgid "This will be generated when you save."
|
407 |
-
msgstr "Dette ville blive generet, når du gemmer."
|
408 |
-
|
409 |
-
#: adminpages/discountcodes.php:314 adminpages/discountcodes.php:558
|
410 |
-
#: adminpages/orders.php:265 adminpages/orders.php:901
|
411 |
-
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:548
|
412 |
-
#: adminpages/orders.php:215 adminpages/orders.php:598
|
413 |
-
msgid "Code"
|
414 |
-
msgstr "Kode"
|
415 |
-
|
416 |
-
#: adminpages/discountcodes.php:352 adminpages/discountcodes.php:349
|
417 |
-
msgid "Start Date"
|
418 |
-
msgstr "Start Dato"
|
419 |
-
|
420 |
-
#: adminpages/discountcodes.php:370 pages/billing.php:253
|
421 |
-
#: pages/checkout.php:508 adminpages/discountcodes.php:367
|
422 |
-
#: pages/billing.php:249 pages/checkout.php:525 pages/checkout.php:532
|
423 |
-
msgid "Expiration Date"
|
424 |
-
msgstr "Udløbs Dato"
|
425 |
-
|
426 |
-
#: adminpages/discountcodes.php:388 adminpages/discountcodes.php:561
|
427 |
-
#: adminpages/discountcodes.php:385 adminpages/discountcodes.php:551
|
428 |
-
msgid "Uses"
|
429 |
-
msgstr "Forbrug"
|
430 |
-
|
431 |
-
#: adminpages/discountcodes.php:391 adminpages/discountcodes.php:388
|
432 |
-
msgid "Leave blank for unlimited uses."
|
433 |
-
msgstr "Lad dette stå blank, for uendelig brug."
|
434 |
-
|
435 |
-
#: adminpages/discountcodes.php:430 adminpages/membershiplevels.php:339
|
436 |
-
#: adminpages/membershiplevels.php:515 adminpages/discountcodes.php:427
|
437 |
-
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:507
|
438 |
-
#: adminpages/membershiplevels.php:513 pages/levels.php:14
|
439 |
-
msgid "Initial Payment"
|
440 |
-
msgstr "Begynd Betaling"
|
441 |
-
|
442 |
-
#: adminpages/discountcodes.php:431 adminpages/membershiplevels.php:340
|
443 |
-
#: adminpages/discountcodes.php:428 adminpages/membershiplevels.php:338
|
444 |
-
msgid "The initial amount collected at registration."
|
445 |
-
msgstr "Det påbegyndte beløb, er indsamlet ved registrering."
|
446 |
-
|
447 |
-
#: adminpages/discountcodes.php:435 adminpages/membershiplevels.php:344
|
448 |
-
#: adminpages/discountcodes.php:432 adminpages/membershiplevels.php:342
|
449 |
-
msgid "Recurring Subscription"
|
450 |
-
msgstr "Gentag Abonnoment"
|
451 |
-
|
452 |
-
#: adminpages/discountcodes.php:436 adminpages/membershiplevels.php:345
|
453 |
-
#: adminpages/discountcodes.php:433 adminpages/membershiplevels.php:343
|
454 |
-
msgid "Check if this level has a recurring subscription payment."
|
455 |
-
msgstr "Klik her, hvis dette niveau har en gentagene betaling."
|
456 |
-
|
457 |
-
#: adminpages/discountcodes.php:440 adminpages/membershiplevels.php:349
|
458 |
-
#: adminpages/membershiplevels.php:347
|
459 |
-
msgid "Billing Amount"
|
460 |
-
msgstr "Fakture Beløb"
|
461 |
-
|
462 |
-
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:492
|
463 |
-
#: adminpages/membershiplevels.php:355 adminpages/membershiplevels.php:449
|
464 |
-
#: adminpages/membershiplevels.php:353
|
465 |
-
msgid "Day(s)"
|
466 |
-
msgstr "Dag(e)"
|
467 |
-
|
468 |
-
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:492
|
469 |
-
#: adminpages/membershiplevels.php:355 adminpages/membershiplevels.php:449
|
470 |
-
#: adminpages/membershiplevels.php:353
|
471 |
-
msgid "Month(s)"
|
472 |
-
msgstr "Måned(er)"
|
473 |
-
|
474 |
-
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:492
|
475 |
-
#: adminpages/membershiplevels.php:355 adminpages/membershiplevels.php:449
|
476 |
-
#: adminpages/membershiplevels.php:353
|
477 |
-
msgid "Week(s)"
|
478 |
-
msgstr "Uge(r)"
|
479 |
-
|
480 |
-
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:492
|
481 |
-
#: adminpages/membershiplevels.php:355 adminpages/membershiplevels.php:449
|
482 |
-
#: adminpages/membershiplevels.php:353
|
483 |
-
msgid "Year(s)"
|
484 |
-
msgstr "År()"
|
485 |
-
|
486 |
-
#: adminpages/discountcodes.php:454 adminpages/membershiplevels.php:364
|
487 |
-
#: adminpages/discountcodes.php:451 adminpages/membershiplevels.php:362
|
488 |
-
msgid "The amount to be billed one cycle after the initial payment."
|
489 |
-
msgstr ""
|
490 |
-
"Det beløb, der faktureres den ene cyklus efter den oprindelige betaling."
|
491 |
-
|
492 |
-
#: adminpages/discountcodes.php:459 adminpages/membershiplevels.php:382
|
493 |
-
#: adminpages/discountcodes.php:456 adminpages/membershiplevels.php:380
|
494 |
-
msgid "Billing Cycle Limit"
|
495 |
-
msgstr "Betalings Cyklus Grænse "
|
496 |
-
|
497 |
-
#: adminpages/discountcodes.php:462 adminpages/membershiplevels.php:386
|
498 |
-
#: adminpages/discountcodes.php:459 adminpages/membershiplevels.php:384
|
499 |
-
msgid ""
|
500 |
-
"The <strong>total</strong> number of recurring billing cycles for this "
|
501 |
-
"level, including the trial period (if applicable) but not including the "
|
502 |
-
"initial payment. Set to zero if membership is indefinite."
|
503 |
-
msgstr ""
|
504 |
-
"Det <strong>totale</strong> antal af gentagende fakture cykluser for dette "
|
505 |
-
"niveau, herunder prøveperioden (hvis relevant), men ikke inkluderet I den "
|
506 |
-
"oprindelige betaling. Sæt til nul, hvis medlemskab er ubegrænset."
|
507 |
-
|
508 |
-
#: adminpages/discountcodes.php:467 adminpages/membershiplevels.php:395
|
509 |
-
#: adminpages/discountcodes.php:464 adminpages/membershiplevels.php:393
|
510 |
-
msgid "Custom Trial"
|
511 |
-
msgstr "Brugerdefineret Prøveperiode"
|
512 |
-
|
513 |
-
#: adminpages/discountcodes.php:468 adminpages/membershiplevels.php:397
|
514 |
-
#: adminpages/discountcodes.php:465 adminpages/membershiplevels.php:394
|
515 |
-
#: adminpages/membershiplevels.php:395
|
516 |
-
msgid "Check to add a custom trial period."
|
517 |
-
msgstr "Klik her, for at tilføje en brugerdefineret prøve periode"
|
518 |
-
|
519 |
-
#: adminpages/discountcodes.php:472 adminpages/membershiplevels.php:406
|
520 |
-
#: adminpages/discountcodes.php:469 adminpages/membershiplevels.php:398
|
521 |
-
#: adminpages/membershiplevels.php:404
|
522 |
-
msgid "Trial Billing Amount"
|
523 |
-
msgstr "Prøveperiode Fakture konto"
|
524 |
-
|
525 |
-
#: adminpages/discountcodes.php:475 adminpages/membershiplevels.php:409
|
526 |
-
#: adminpages/discountcodes.php:472 adminpages/membershiplevels.php:401
|
527 |
-
#: adminpages/membershiplevels.php:407
|
528 |
-
msgid "for the first"
|
529 |
-
msgstr "for det første"
|
530 |
-
|
531 |
-
#: adminpages/discountcodes.php:477 adminpages/membershiplevels.php:411
|
532 |
-
#: adminpages/discountcodes.php:474 adminpages/membershiplevels.php:403
|
533 |
-
#: adminpages/membershiplevels.php:409
|
534 |
-
msgid "subscription payments"
|
535 |
-
msgstr "abonnoments betalings"
|
536 |
-
|
537 |
-
#: adminpages/discountcodes.php:482 adminpages/membershiplevels.php:439
|
538 |
-
#: adminpages/discountcodes.php:479 adminpages/membershiplevels.php:431
|
539 |
-
#: adminpages/membershiplevels.php:437
|
540 |
-
msgid "Membership Expiration"
|
541 |
-
msgstr "Medlemskab Udløber"
|
542 |
-
|
543 |
-
#: adminpages/discountcodes.php:483 adminpages/membershiplevels.php:440
|
544 |
-
#: adminpages/membershiplevels.php:432 adminpages/membershiplevels.php:438
|
545 |
-
msgid "Check this to set when membership access expires."
|
546 |
-
msgstr "Klik her, for at sætte, hvornår medlemsskab udløber"
|
547 |
-
|
548 |
-
#: adminpages/discountcodes.php:487 adminpages/membershiplevels.php:444
|
549 |
-
#: adminpages/discountcodes.php:484 adminpages/membershiplevels.php:436
|
550 |
-
#: adminpages/membershiplevels.php:442
|
551 |
-
msgid "Expires In"
|
552 |
-
msgstr "Udløber om"
|
553 |
-
|
554 |
-
#: adminpages/discountcodes.php:500 adminpages/membershiplevels.php:457
|
555 |
-
#: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:455
|
556 |
-
msgid ""
|
557 |
-
"Set the duration of membership access. Note that the any future payments "
|
558 |
-
"(recurring subscription, if any) will be cancelled when the membership "
|
559 |
-
"expires."
|
560 |
-
msgstr ""
|
561 |
-
"Indstil varigheden af medlemskab. Bemærk, at de eventuelle fremtidige "
|
562 |
-
"betalinger (tilbagevendende abonnementer, hvis nogen) vil blive annulleret, "
|
563 |
-
"når medlemskabet udløber."
|
564 |
-
|
565 |
-
#: adminpages/discountcodes.php:528 adminpages/discountcodes.php:525
|
566 |
-
msgid "Memberships Discount Codes"
|
567 |
-
msgstr "Medlemsskab Rabat Kode"
|
568 |
-
|
569 |
-
#: adminpages/discountcodes.php:538 adminpages/discountcodes.php:535
|
570 |
-
msgid "Search Discount Codes"
|
571 |
-
msgstr "Søg efter Rabat Koder"
|
572 |
-
|
573 |
-
#: adminpages/discountcodes.php:541 adminpages/reports/login.php:81
|
574 |
-
#: adminpages/discountcodes.php:538
|
575 |
-
msgid "Search"
|
576 |
-
msgstr "Søg"
|
577 |
-
|
578 |
-
#: adminpages/discountcodes.php:559 adminpages/discountcodes.php:549
|
579 |
-
msgid "Starts"
|
580 |
-
msgstr "Starter"
|
581 |
-
|
582 |
-
#: adminpages/discountcodes.php:560 adminpages/memberslist.php:159
|
583 |
-
#: adminpages/reports/login.php:145 includes/profile.php:120
|
584 |
-
#: adminpages/discountcodes.php:550 adminpages/memberslist.php:121
|
585 |
-
#: includes/profile.php:118
|
586 |
-
msgid "Expires"
|
587 |
-
msgstr "Udløber"
|
588 |
-
|
589 |
-
#: adminpages/discountcodes.php:562 adminpages/discountcodes.php:552
|
590 |
-
msgid "Levels"
|
591 |
-
msgstr "Niveauer"
|
592 |
-
|
593 |
-
#: adminpages/discountcodes.php:574 adminpages/discountcodes.php:570
|
594 |
-
msgid "Create your first discount code now"
|
595 |
-
msgstr "Opret din første Rabat kode nu"
|
596 |
-
|
597 |
-
#: adminpages/discountcodes.php:574 adminpages/discountcodes.php:570
|
598 |
-
msgid ""
|
599 |
-
"Discount codes allow you to offer your memberships at discounted prices to "
|
600 |
-
"select customers."
|
601 |
-
msgstr ""
|
602 |
-
"Rabat koder, giver dig mulighed for, at tilbyde medlemmer Rabat priser til "
|
603 |
-
"udvalgte kunder."
|
604 |
-
|
605 |
-
#: adminpages/discountcodes.php:619 adminpages/membershiplevels.php:572
|
606 |
-
#: adminpages/orders.php:961 adminpages/discountcodes.php:614
|
607 |
-
#: adminpages/membershiplevels.php:564 adminpages/membershiplevels.php:570
|
608 |
-
#: adminpages/orders.php:658
|
609 |
-
msgid "edit"
|
610 |
-
msgstr "Redigere"
|
611 |
-
|
612 |
-
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:617
|
613 |
-
#, php-format
|
614 |
-
msgid ""
|
615 |
-
"Are you sure you want to delete the %s discount code? The subscriptions for "
|
616 |
-
"existing users will not change, but new users will not be able to use this "
|
617 |
-
"code anymore."
|
618 |
-
msgstr ""
|
619 |
-
"Er du sikker på, at du ville slette %s rabat kode?. Abonnement for den "
|
620 |
-
"eksisterende bruger ville ikke ændre sig, men nye brugere har ikke mulighed "
|
621 |
-
"for, at bruge koden."
|
622 |
-
|
623 |
-
#: adminpages/discountcodes.php:622 adminpages/membershiplevels.php:574
|
624 |
-
#: adminpages/orders.php:967 adminpages/discountcodes.php:617
|
625 |
-
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:572
|
626 |
-
#: adminpages/orders.php:664
|
627 |
-
msgid "delete"
|
628 |
-
msgstr "Slet"
|
629 |
-
|
630 |
-
#: adminpages/emailsettings.php:69 includes/adminpages.php:50
|
631 |
-
#: includes/adminpages.php:128 adminpages/emailsettings.php:60
|
632 |
-
#: includes/adminpages.php:12 includes/adminpages.php:59
|
633 |
-
#: includes/adminpages.php:121
|
634 |
-
msgid "Email Settings"
|
635 |
-
msgstr "Email Indstillinger"
|
636 |
-
|
637 |
-
#: adminpages/emailsettings.php:70 adminpages/emailsettings.php:61
|
638 |
-
msgid ""
|
639 |
-
"By default, system generated emails are sent from "
|
640 |
-
"<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
|
641 |
-
"address using the fields below."
|
642 |
-
msgstr ""
|
643 |
-
"Som standard, vil systemet generere email sendt fra "
|
644 |
-
"<em><strong>wordpress@ditdomæne.com</strong></em>. Du har mulighed for, at "
|
645 |
-
"opdatere adresse, ved at bruge felterne nedenfor. "
|
646 |
-
|
647 |
-
#: adminpages/emailsettings.php:72 adminpages/emailsettings.php:63
|
648 |
-
msgid ""
|
649 |
-
"To modify the appearance of system generated emails, add the files "
|
650 |
-
"<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
|
651 |
-
"directory. This will modify both the WordPress default messages as well as "
|
652 |
-
"messages generated by Paid Memberships Pro. <a title=\"Paid Memberships Pro "
|
653 |
-
"- Member Communications\" target=\"_blank\" href=\"http://www."
|
654 |
-
"paidmembershipspro.com/documentation/member-communications/\">Click here to "
|
655 |
-
"learn more about Paid Memberships Pro emails</a>."
|
656 |
-
msgstr ""
|
657 |
-
"Hvis du vil ændre udseendet af systemet genererede e-mails, tilføje filerne "
|
658 |
-
"<em>email_header.html</em> og <em>email_footer.html</em> til din tema mappe. "
|
659 |
-
"Dette vil ændre både WordPress standard beskeder samt meddelelser genereres "
|
660 |
-
"af Paid Memberships Pro.<a title=\"Paid medlemskaber Pro - Medlber "
|
661 |
-
"Communications\" target=\"_blank\" href=\"http://www.paidmembershipspro.com/"
|
662 |
-
"documentation/member-communications/\">Klik her for at lære mere om Paid "
|
663 |
-
"Memberships Pro emails</a>."
|
664 |
-
|
665 |
-
#: adminpages/emailsettings.php:78 adminpages/emailsettings.php:69
|
666 |
-
msgid "From Email"
|
667 |
-
msgstr "Fra Email"
|
668 |
-
|
669 |
-
#: adminpages/emailsettings.php:86 adminpages/emailsettings.php:77
|
670 |
-
msgid "From Name"
|
671 |
-
msgstr "Fra Navn"
|
672 |
-
|
673 |
-
#: adminpages/emailsettings.php:94
|
674 |
-
msgid "Only Filter PMPro Emails?"
|
675 |
-
msgstr "Filtere Kun PMPro Emails?"
|
676 |
-
|
677 |
-
#: adminpages/emailsettings.php:98
|
678 |
-
msgid "If unchecked, all emails from \"WordPress <"
|
679 |
-
msgstr "Hvis ikke aktiveret, alle emails fra \"WordPress <"
|
680 |
-
|
681 |
-
#: adminpages/emailsettings.php:115 adminpages/emailsettings.php:86
|
682 |
-
#: adminpages/emailsettings.php:104
|
683 |
-
msgid "Send the site admin emails"
|
684 |
-
msgstr "Send site admin emails"
|
685 |
-
|
686 |
-
#: adminpages/emailsettings.php:121 adminpages/emailsettings.php:92
|
687 |
-
#: adminpages/emailsettings.php:110
|
688 |
-
msgid "Checkout"
|
689 |
-
msgstr "Gå til Kassen"
|
690 |
-
|
691 |
-
#: adminpages/emailsettings.php:125 adminpages/emailsettings.php:96
|
692 |
-
#: adminpages/emailsettings.php:114
|
693 |
-
msgid "when a member checks out."
|
694 |
-
msgstr "Når et medlem går til Kassen"
|
695 |
-
|
696 |
-
#: adminpages/emailsettings.php:130 adminpages/emailsettings.php:101
|
697 |
-
#: adminpages/emailsettings.php:119
|
698 |
-
msgid "Admin Changes"
|
699 |
-
msgstr "Admin Ændringer"
|
700 |
-
|
701 |
-
#: adminpages/emailsettings.php:134 adminpages/emailsettings.php:105
|
702 |
-
#: adminpages/emailsettings.php:123
|
703 |
-
msgid "when an admin changes a user's membership level through the dashboard."
|
704 |
-
msgstr "Når en admin ændre en bruger's medlemsskab niveau gennem kontrolpanel."
|
705 |
-
|
706 |
-
#: adminpages/emailsettings.php:139 adminpages/emailsettings.php:110
|
707 |
-
#: adminpages/emailsettings.php:128
|
708 |
-
msgid "Cancellation"
|
709 |
-
msgstr "Annullering"
|
710 |
-
|
711 |
-
#: adminpages/emailsettings.php:143 adminpages/emailsettings.php:114
|
712 |
-
#: adminpages/emailsettings.php:132
|
713 |
-
msgid "when a user cancels his or her account."
|
714 |
-
msgstr "når en bruger annullere hans eller hendes konto."
|
715 |
-
|
716 |
-
#: adminpages/emailsettings.php:148 adminpages/emailsettings.php:119
|
717 |
-
#: adminpages/emailsettings.php:137
|
718 |
-
msgid "Bill Updates"
|
719 |
-
msgstr "Fakture Opdates"
|
720 |
-
|
721 |
-
#: adminpages/emailsettings.php:152 adminpages/emailsettings.php:123
|
722 |
-
#: adminpages/emailsettings.php:141
|
723 |
-
msgid "when a user updates his or her billing information."
|
724 |
-
msgstr "når en bruger opdatere hans eller hendes betalings informationer."
|
725 |
-
|
726 |
-
#: adminpages/emailsettings.php:158 adminpages/emailsettings.php:129
|
727 |
-
#: adminpages/emailsettings.php:147
|
728 |
-
msgid "Send members emails"
|
729 |
-
msgstr "Send medlemmers email"
|
730 |
-
|
731 |
-
#: adminpages/emailsettings.php:164 adminpages/emailsettings.php:135
|
732 |
-
#: adminpages/emailsettings.php:153
|
733 |
-
msgid "New Users"
|
734 |
-
msgstr "Nye Brugere"
|
735 |
-
|
736 |
-
#: adminpages/emailsettings.php:168 adminpages/emailsettings.php:139
|
737 |
-
#: adminpages/emailsettings.php:157
|
738 |
-
msgid ""
|
739 |
-
"Default WP notification email. (Recommended: Leave unchecked. Members will "
|
740 |
-
"still get an email confirmation from PMPro after checkout.)"
|
741 |
-
msgstr ""
|
742 |
-
"Standard WP notifikations email. (Anbefales: Ikke Aktiveret. Medlemmer vil "
|
743 |
-
"stadig få email bekræftigelse fra PMPRO efter de har været kassen.)"
|
744 |
-
|
745 |
-
#: adminpages/membershiplevels.php:118
|
746 |
-
msgid "Membership level updated successfully."
|
747 |
-
msgstr "Medlemsskab Niveau opdateret succesfuldt."
|
748 |
-
|
749 |
-
#: adminpages/membershiplevels.php:124
|
750 |
-
msgid "Error updating membership level."
|
751 |
-
msgstr "Fejl I opdatering af medlemsskab niveau."
|
752 |
-
|
753 |
-
#: adminpages/membershiplevels.php:141
|
754 |
-
msgid "Membership level added successfully."
|
755 |
-
msgstr "Medlemsskab niveau tilføjet succesfuldt."
|
756 |
-
|
757 |
-
#: adminpages/membershiplevels.php:146
|
758 |
-
msgid "Error adding membership level."
|
759 |
-
msgstr "Fejl I at tilføje medlemskabs niveau."
|
760 |
-
|
761 |
-
#: adminpages/membershiplevels.php:181 adminpages/membershiplevels.php:179
|
762 |
-
#, php-format
|
763 |
-
msgid ""
|
764 |
-
"There was an error canceling the subscription for user with ID=%d. You will "
|
765 |
-
"want to check your payment gateway to see if their subscription is still "
|
766 |
-
"active."
|
767 |
-
msgstr ""
|
768 |
-
"Der opstod en fejl, med annullering af abonnement for bruger med ID=%d. Du "
|
769 |
-
"bliver nødtil at kontrollere din betalings gateway, for at se, om deres "
|
770 |
-
"betaling stadig er aktiv. "
|
771 |
-
|
772 |
-
#: adminpages/membershiplevels.php:184 adminpages/membershiplevels.php:182
|
773 |
-
msgid "Last Invoice"
|
774 |
-
msgstr "Sidste Faktura"
|
775 |
-
|
776 |
-
#: adminpages/membershiplevels.php:198 adminpages/membershiplevels.php:196
|
777 |
-
msgid "Membership level deleted successfully."
|
778 |
-
msgstr "Medlemskabs niveau slettet succesfuldt."
|
779 |
-
|
780 |
-
#: adminpages/membershiplevels.php:203 adminpages/membershiplevels.php:209
|
781 |
-
#: adminpages/membershiplevels.php:201 adminpages/membershiplevels.php:207
|
782 |
-
msgid "Error deleting membership level."
|
783 |
-
msgstr "Fejl I at slette medlemsskab niveau."
|
784 |
-
|
785 |
-
#: adminpages/membershiplevels.php:224 adminpages/membershiplevels.php:222
|
786 |
-
msgid "Edit Membership Level"
|
787 |
-
msgstr "Redigere medlemsskab niveau"
|
788 |
-
|
789 |
-
#: adminpages/membershiplevels.php:226 adminpages/membershiplevels.php:224
|
790 |
-
msgid "Add New Membership Level"
|
791 |
-
msgstr "Tilføj Ny Medlemsskab Niveau"
|
792 |
-
|
793 |
-
#: adminpages/membershiplevels.php:293 adminpages/membershiplevels.php:514
|
794 |
-
#: adminpages/reports/login.php:142 adminpages/membershiplevels.php:291
|
795 |
-
#: adminpages/membershiplevels.php:506 adminpages/membershiplevels.php:512
|
796 |
-
msgid "Name"
|
797 |
-
msgstr "Navn"
|
798 |
-
|
799 |
-
#: adminpages/membershiplevels.php:298 adminpages/membershiplevels.php:296
|
800 |
-
msgid "Description"
|
801 |
-
msgstr "Beskrivelse"
|
802 |
-
|
803 |
-
#: adminpages/membershiplevels.php:316 adminpages/membershiplevels.php:314
|
804 |
-
msgid "Confirmation Message"
|
805 |
-
msgstr "Bekræftigelses Besked"
|
806 |
-
|
807 |
-
#: adminpages/membershiplevels.php:335 adminpages/membershiplevels.php:333
|
808 |
-
msgid "Billing Details"
|
809 |
-
msgstr "Faktura Detaljer"
|
810 |
-
|
811 |
-
#: adminpages/membershiplevels.php:351 adminpages/membershiplevels.php:349
|
812 |
-
msgid "per"
|
813 |
-
msgstr "pr"
|
814 |
-
|
815 |
-
#: adminpages/membershiplevels.php:366
|
816 |
-
msgid ""
|
817 |
-
"Stripe integration currently only supports billing periods of \"Week\", "
|
818 |
-
"\"Month\" or \"Year\"."
|
819 |
-
msgstr ""
|
820 |
-
"Stripe integration understøtter kun Faktura af \"Uge\", \"Måned\" eller \"År"
|
821 |
-
"\"."
|
822 |
-
|
823 |
-
#: adminpages/membershiplevels.php:368 adminpages/membershiplevels.php:366
|
824 |
-
msgid ""
|
825 |
-
"Braintree integration currently only supports billing periods of \"Month\" "
|
826 |
-
"or \"Year\"."
|
827 |
-
msgstr ""
|
828 |
-
"Braintree integration understøtter kun Faktura af \"Uge\", \"Måned\" eller "
|
829 |
-
"\"År\"."
|
830 |
-
|
831 |
-
#: adminpages/membershiplevels.php:370 adminpages/membershiplevels.php:368
|
832 |
-
msgid ""
|
833 |
-
"Payflow integration currently only supports billing frequencies of 1 and "
|
834 |
-
"billing periods of \"Week\", \"Month\" or \"Year\"."
|
835 |
-
msgstr ""
|
836 |
-
"Payflow integration understøtter kun Faktura frekvens af og faktura periode "
|
837 |
-
"af \"Uge\", \"Måned\" eller \"År\"."
|
838 |
-
|
839 |
-
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:372
|
840 |
-
msgid ""
|
841 |
-
"After saving this level, make note of the ID and create a \"Plan\" in your "
|
842 |
-
"Braintree dashboard with the same settings and the \"Plan ID\" set to "
|
843 |
-
"<em>pmpro_#</em>, where # is the level ID."
|
844 |
-
msgstr ""
|
845 |
-
"Efter at gemme dette niveau, lav en note af ID og opret en \"Plan\" i dit "
|
846 |
-
"Braintree kontrolpanel, med det samme indstillinger, og at \"Plan ID\" er "
|
847 |
-
"sat til <em>pmpro_#</em>, hvor # er niveau ID."
|
848 |
-
|
849 |
-
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
850 |
-
#: adminpages/paymentsettings.php:174 adminpages/paymentsettings.php:179
|
851 |
-
#: adminpages/membershiplevels.php:372 adminpages/paymentsettings.php:170
|
852 |
-
msgid "Note"
|
853 |
-
msgstr "Note"
|
854 |
-
|
855 |
-
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:374
|
856 |
-
msgid ""
|
857 |
-
"You will need to create a \"Plan\" in your Braintree dashboard with the same "
|
858 |
-
"settings and the \"Plan ID\" set to"
|
859 |
-
msgstr ""
|
860 |
-
"Du er nødtil at oprette en \"Plan\" i dit Braintree kontrolpanel med de "
|
861 |
-
"samme indstillinger og hvor \"Plan ID\" er sat til"
|
862 |
-
|
863 |
-
#: adminpages/membershiplevels.php:388 adminpages/membershiplevels.php:386
|
864 |
-
msgid ""
|
865 |
-
"Stripe integration currently does not support billing limits. You can still "
|
866 |
-
"set an expiration date below."
|
867 |
-
msgstr ""
|
868 |
-
"Stripe integration understøtter ikke faktura begræsninger. Du kan stadig "
|
869 |
-
"sætte en udløbsdato på nedenfor."
|
870 |
-
|
871 |
-
#: adminpages/membershiplevels.php:400 adminpages/membershiplevels.php:398
|
872 |
-
msgid ""
|
873 |
-
"2Checkout integration does not support custom trials. You can do one period "
|
874 |
-
"trials by setting an initial payment different from the billing amount."
|
875 |
-
msgstr ""
|
876 |
-
"2Checkout integration understøtter ikke brugerdefineret prøveperiode. Du kan "
|
877 |
-
"lave en prøveperiode via indstillinger, og sætte betalings mulighed til en "
|
878 |
-
"anden fakture."
|
879 |
-
|
880 |
-
#: adminpages/membershiplevels.php:414 adminpages/membershiplevels.php:406
|
881 |
-
#: adminpages/membershiplevels.php:412
|
882 |
-
msgid ""
|
883 |
-
"Stripe integration currently does not support trial amounts greater than $0."
|
884 |
-
msgstr ""
|
885 |
-
"Stripe integration understøtter ikke prøveperioder der er større en $0."
|
886 |
-
|
887 |
-
#: adminpages/membershiplevels.php:418 adminpages/membershiplevels.php:410
|
888 |
-
#: adminpages/membershiplevels.php:416
|
889 |
-
msgid ""
|
890 |
-
"Braintree integration currently does not support trial amounts greater than "
|
891 |
-
"$0."
|
892 |
-
msgstr "Braintree integration understøtter prøveperioder der er større end $0."
|
893 |
-
|
894 |
-
#: adminpages/membershiplevels.php:422 adminpages/membershiplevels.php:414
|
895 |
-
#: adminpages/membershiplevels.php:420
|
896 |
-
msgid ""
|
897 |
-
"Payflow integration currently does not support trial amounts greater than $0."
|
898 |
-
msgstr ""
|
899 |
-
"Payflow integration understøtter ikke prøveåerioder der er større end $0."
|
900 |
-
|
901 |
-
#: adminpages/membershiplevels.php:430 adminpages/membershiplevels.php:422
|
902 |
-
#: adminpages/membershiplevels.php:428
|
903 |
-
msgid "Other Settings"
|
904 |
-
msgstr "Andre Indstillinger"
|
905 |
-
|
906 |
-
#: adminpages/membershiplevels.php:434 adminpages/membershiplevels.php:426
|
907 |
-
#: adminpages/membershiplevels.php:432
|
908 |
-
msgid "Disable New Signups"
|
909 |
-
msgstr "Deaktivere Nye Tilmeldinger"
|
910 |
-
|
911 |
-
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:427
|
912 |
-
#: adminpages/membershiplevels.php:433
|
913 |
-
msgid ""
|
914 |
-
"Check to hide this level from the membership levels page and disable "
|
915 |
-
"registration."
|
916 |
-
msgstr ""
|
917 |
-
"Klik her, for at skjule dette Niveau fra medlemsskabs Niveau side, og "
|
918 |
-
"deaktivere registrering."
|
919 |
-
|
920 |
-
#: adminpages/membershiplevels.php:465 adminpages/membershiplevels.php:457
|
921 |
-
#: adminpages/membershiplevels.php:463
|
922 |
-
msgid "Content Settings"
|
923 |
-
msgstr "Indhols Indstillinger"
|
924 |
-
|
925 |
-
#: adminpages/membershiplevels.php:469 adminpages/membershiplevels.php:461
|
926 |
-
#: adminpages/membershiplevels.php:467
|
927 |
-
msgid "Categories"
|
928 |
-
msgstr "Kategorier"
|
929 |
-
|
930 |
-
#: adminpages/membershiplevels.php:498 adminpages/membershiplevels.php:490
|
931 |
-
#: adminpages/membershiplevels.php:496
|
932 |
-
msgid "Add New Level"
|
933 |
-
msgstr "Tilføj Ny Niveau"
|
934 |
-
|
935 |
-
#: adminpages/membershiplevels.php:501 adminpages/membershiplevels.php:504
|
936 |
-
#: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
|
937 |
-
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:502
|
938 |
-
msgid "Search Levels"
|
939 |
-
msgstr "Søg Niveauer"
|
940 |
-
|
941 |
-
#: adminpages/membershiplevels.php:516 adminpages/membershiplevels.php:508
|
942 |
-
#: adminpages/membershiplevels.php:514
|
943 |
-
msgid "Billing Cycle"
|
944 |
-
msgstr "Faktura Cyklus"
|
945 |
-
|
946 |
-
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:509
|
947 |
-
#: adminpages/membershiplevels.php:515
|
948 |
-
msgid "Trial Cycle"
|
949 |
-
msgstr "Prøveperiode Cyklus"
|
950 |
-
|
951 |
-
#: adminpages/membershiplevels.php:518 pages/confirmation.php:83
|
952 |
-
#: pages/invoice.php:70 adminpages/membershiplevels.php:510
|
953 |
-
#: adminpages/membershiplevels.php:516 pages/confirmation.php:81
|
954 |
-
#: pages/invoice.php:68
|
955 |
-
msgid "Expiration"
|
956 |
-
msgstr "Udløbs"
|
957 |
-
|
958 |
-
#: adminpages/membershiplevels.php:519 adminpages/membershiplevels.php:511
|
959 |
-
#: adminpages/membershiplevels.php:517
|
960 |
-
msgid "Allow Signups"
|
961 |
-
msgstr "Tillad Registrering"
|
962 |
-
|
963 |
-
#: adminpages/membershiplevels.php:542 adminpages/membershiplevels.php:534
|
964 |
-
#: adminpages/membershiplevels.php:540
|
965 |
-
msgid "FREE"
|
966 |
-
msgstr "GRATIS"
|
967 |
-
|
968 |
-
#: adminpages/membershiplevels.php:551 adminpages/membershiplevels.php:543
|
969 |
-
#: adminpages/membershiplevels.php:549
|
970 |
-
msgid "every"
|
971 |
-
msgstr "alle"
|
972 |
-
|
973 |
-
#: adminpages/membershiplevels.php:553 adminpages/membershiplevels.php:561
|
974 |
-
#: adminpages/reports/memberships.php:304
|
975 |
-
#: adminpages/reports/memberships.php:315 adminpages/reports/sales.php:203
|
976 |
-
#: adminpages/reports/sales.php:214 adminpages/membershiplevels.php:545
|
977 |
-
#: adminpages/membershiplevels.php:551 adminpages/membershiplevels.php:559
|
978 |
-
#: adminpages/reports/sales.php:195 adminpages/reports/sales.php:204
|
979 |
-
#: adminpages/reports/sales.php:206 adminpages/reports/sales.php:215
|
980 |
-
msgid "for"
|
981 |
-
msgstr "for"
|
982 |
-
|
983 |
-
#: adminpages/membershiplevels.php:568 adminpages/membershiplevels.php:560
|
984 |
-
#: adminpages/membershiplevels.php:566
|
985 |
-
msgid "After"
|
986 |
-
msgstr "Efter"
|
987 |
-
|
988 |
-
#: adminpages/membershiplevels.php:573 adminpages/orders.php:964
|
989 |
-
#: adminpages/membershiplevels.php:565 adminpages/membershiplevels.php:571
|
990 |
-
#: adminpages/orders.php:661
|
991 |
-
msgid "copy"
|
992 |
-
msgstr "Kopiere"
|
993 |
-
|
994 |
-
#: adminpages/membershiplevels.php:574 adminpages/membershiplevels.php:566
|
995 |
-
#: adminpages/membershiplevels.php:572
|
996 |
-
#, php-format
|
997 |
-
msgid ""
|
998 |
-
"Are you sure you want to delete membership level %s? All subscriptions will "
|
999 |
-
"be cancelled."
|
1000 |
-
msgstr ""
|
1001 |
-
"Er du sikker på, at du ville slette medlemsskab niveau %s? Alle abonnenter "
|
1002 |
-
"ville blive annulleret."
|
1003 |
-
|
1004 |
-
#: adminpages/memberslist.php:25 includes/adminpages.php:53
|
1005 |
-
#: includes/adminpages.php:149 includes/adminpages.php:15
|
1006 |
-
#: includes/adminpages.php:74 includes/adminpages.php:142
|
1007 |
-
msgid "Members List"
|
1008 |
-
msgstr "Medlems Liste"
|
1009 |
-
|
1010 |
-
#: adminpages/memberslist.php:26 adminpages/orders.php:591
|
1011 |
-
#: adminpages/orders.php:522
|
1012 |
-
msgid "Export to CSV"
|
1013 |
-
msgstr "Eksportere til CSV"
|
1014 |
-
|
1015 |
-
#: adminpages/memberslist.php:30 adminpages/orders.php:603
|
1016 |
-
#: adminpages/reports/login.php:65 adminpages/reports/memberships.php:292
|
1017 |
-
#: adminpages/reports/sales.php:193 adminpages/reports/sales.php:185
|
1018 |
-
#: adminpages/reports/sales.php:194
|
1019 |
-
msgid "Show"
|
1020 |
-
msgstr "Vis"
|
1021 |
-
|
1022 |
-
#: adminpages/memberslist.php:32 adminpages/reports/login.php:67
|
1023 |
-
#: adminpages/reports/memberships.php:317 adminpages/reports/sales.php:216
|
1024 |
-
#: adminpages/reports/sales.php:208 adminpages/reports/sales.php:217
|
1025 |
-
msgid "All Levels"
|
1026 |
-
msgstr "All Niveauer"
|
1027 |
-
|
1028 |
-
#: adminpages/memberslist.php:42
|
1029 |
-
msgid "Old Members"
|
1030 |
-
msgstr "Gamle Medlemmer"
|
1031 |
-
|
1032 |
-
#: adminpages/memberslist.php:47 adminpages/memberslist.php:50
|
1033 |
-
#: adminpages/memberslist.php:46 adminpages/memberslist.php:49
|
1034 |
-
msgid "Search Members"
|
1035 |
-
msgstr "Søg Medlemmer"
|
1036 |
-
|
1037 |
-
#: adminpages/memberslist.php:136 adminpages/memberslist.php:103
|
1038 |
-
#, php-format
|
1039 |
-
msgid "%d members found."
|
1040 |
-
msgstr "%d medlemmer fundet."
|
1041 |
-
|
1042 |
-
#: adminpages/memberslist.php:145 pages/account.php:55 pages/checkout.php:171
|
1043 |
-
#: adminpages/memberslist.php:112 pages/account.php:51 pages/checkout.php:168
|
1044 |
-
msgid "Username"
|
1045 |
-
msgstr "Brugernavn"
|
1046 |
-
|
1047 |
-
#: adminpages/memberslist.php:146 adminpages/memberslist.php:113
|
1048 |
-
msgid "First Name"
|
1049 |
-
msgstr "For Navn"
|
1050 |
-
|
1051 |
-
#: adminpages/memberslist.php:147 adminpages/memberslist.php:114
|
1052 |
-
msgid "Last Name"
|
1053 |
-
msgstr "Efter Navn"
|
1054 |
-
|
1055 |
-
#: adminpages/memberslist.php:150 pages/account.php:94 pages/billing.php:62
|
1056 |
-
#: pages/checkout.php:298 pages/confirmation.php:61 pages/invoice.php:48
|
1057 |
-
#: adminpages/memberslist.php:117 pages/account.php:90 pages/billing.php:58
|
1058 |
-
#: pages/checkout.php:314 pages/checkout.php:321 pages/confirmation.php:59
|
1059 |
-
#: pages/invoice.php:46
|
1060 |
-
msgid "Billing Address"
|
1061 |
-
msgstr "Fakture Addresse"
|
1062 |
-
|
1063 |
-
#: adminpages/memberslist.php:151 adminpages/reports/login.php:143
|
1064 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:187
|
1065 |
-
#: adminpages/memberslist.php:118 adminpages/pagesettings.php:51
|
1066 |
-
msgid "Membership"
|
1067 |
-
msgstr "Medlemsskab"
|
1068 |
-
|
1069 |
-
#: adminpages/memberslist.php:152 adminpages/memberslist.php:119
|
1070 |
-
msgid "Fee"
|
1071 |
-
msgstr "Gebyr"
|
1072 |
-
|
1073 |
-
#: adminpages/memberslist.php:153 adminpages/reports/login.php:144
|
1074 |
-
#: adminpages/memberslist.php:120
|
1075 |
-
msgid "Joined"
|
1076 |
-
msgstr "Forbundet"
|
1077 |
-
|
1078 |
-
#: adminpages/memberslist.php:157
|
1079 |
-
msgid "Ended"
|
1080 |
-
msgstr "Sluttet"
|
1081 |
-
|
1082 |
-
#: adminpages/memberslist.php:223 adminpages/reports/login.php:210
|
1083 |
-
#: adminpages/memberslist.php:195
|
1084 |
-
msgid "No members found."
|
1085 |
-
msgstr "Ingen Medlemmer fundet."
|
1086 |
-
|
1087 |
-
#: adminpages/memberslist.php:223 adminpages/reports/login.php:210
|
1088 |
-
#: adminpages/memberslist.php:195
|
1089 |
-
msgid "Search all levels"
|
1090 |
-
msgstr "Søg efter Niveauer"
|
1091 |
-
|
1092 |
-
#: adminpages/orders.php:67 adminpages/orders.php:26
|
1093 |
-
msgid "Order deleted successfully."
|
1094 |
-
msgstr "Ordre blev slettet succesfuldt."
|
1095 |
-
|
1096 |
-
#: adminpages/orders.php:72 adminpages/orders.php:31
|
1097 |
-
msgid "Error deleting order."
|
1098 |
-
msgstr "Fejl i at slette ordre."
|
1099 |
-
|
1100 |
-
#: adminpages/orders.php:169 adminpages/orders.php:119
|
1101 |
-
msgid "Order saved successfully."
|
1102 |
-
msgstr "Ordre gent succesfuldt."
|
1103 |
-
|
1104 |
-
#: adminpages/orders.php:174 adminpages/orders.php:124
|
1105 |
-
msgid "Error updating order timestamp."
|
1106 |
-
msgstr "Fejl i at opdatere tidsstempel ordre."
|
1107 |
-
|
1108 |
-
#: adminpages/orders.php:180 adminpages/orders.php:130
|
1109 |
-
msgid "Error saving order."
|
1110 |
-
msgstr "Fejl i at gemme ordre."
|
1111 |
-
|
1112 |
-
#: adminpages/orders.php:245 adminpages/orders.php:195
|
1113 |
-
msgid "Order"
|
1114 |
-
msgstr "Ordre"
|
1115 |
-
|
1116 |
-
#: adminpages/orders.php:247 adminpages/orders.php:197
|
1117 |
-
msgid "New Order"
|
1118 |
-
msgstr "Ny Ordre"
|
1119 |
-
|
1120 |
-
#: adminpages/orders.php:270 adminpages/orders.php:220
|
1121 |
-
msgid "Randomly generated for you."
|
1122 |
-
msgstr "Tilfældig genereret kun for dig"
|
1123 |
-
|
1124 |
-
#: adminpages/orders.php:275 adminpages/orders.php:225
|
1125 |
-
msgid "User ID"
|
1126 |
-
msgstr "Bruger ID"
|
1127 |
-
|
1128 |
-
#: adminpages/orders.php:284 adminpages/orders.php:234
|
1129 |
-
msgid "Membership Level ID"
|
1130 |
-
msgstr "Medlems Niveau ID"
|
1131 |
-
|
1132 |
-
#: adminpages/orders.php:293 adminpages/orders.php:243
|
1133 |
-
msgid "Billing Name"
|
1134 |
-
msgstr "Faktura Navn"
|
1135 |
-
|
1136 |
-
#: adminpages/orders.php:301 adminpages/orders.php:251
|
1137 |
-
msgid "Billing Street"
|
1138 |
-
msgstr "Faktura Vej"
|
1139 |
-
|
1140 |
-
#: adminpages/orders.php:308 adminpages/orders.php:258
|
1141 |
-
msgid "Billing City"
|
1142 |
-
msgstr "Faktura By"
|
1143 |
-
|
1144 |
-
#: adminpages/orders.php:315 adminpages/orders.php:265
|
1145 |
-
msgid "Billing State"
|
1146 |
-
msgstr "Faktura Region"
|
1147 |
-
|
1148 |
-
#: adminpages/orders.php:322 adminpages/orders.php:272
|
1149 |
-
msgid "Billing Postal Code"
|
1150 |
-
msgstr "Faktura Post Nummer"
|
1151 |
-
|
1152 |
-
#: adminpages/orders.php:329 adminpages/orders.php:279
|
1153 |
-
msgid "Billing Country"
|
1154 |
-
msgstr "Faktura Land"
|
1155 |
-
|
1156 |
-
#: adminpages/orders.php:337 adminpages/orders.php:287
|
1157 |
-
msgid "Billing Phone"
|
1158 |
-
msgstr "Faktura Telefon"
|
1159 |
-
|
1160 |
-
#: adminpages/orders.php:346 adminpages/orders.php:296
|
1161 |
-
msgid "Sub Total"
|
1162 |
-
msgstr "Subtotal"
|
1163 |
-
|
1164 |
-
#: adminpages/orders.php:354 pages/invoice.php:80 adminpages/orders.php:304
|
1165 |
-
#: pages/invoice.php:78
|
1166 |
-
msgid "Tax"
|
1167 |
-
msgstr "Skat"
|
1168 |
-
|
1169 |
-
#: adminpages/orders.php:362 adminpages/orders.php:312
|
1170 |
-
msgid "Coupon Amount"
|
1171 |
-
msgstr "Rabat Beløb"
|
1172 |
-
|
1173 |
-
#: adminpages/orders.php:370 adminpages/orders.php:905 pages/invoice.php:84
|
1174 |
-
#: adminpages/orders.php:320 adminpages/orders.php:602 pages/invoice.php:82
|
1175 |
-
msgid "Total"
|
1176 |
-
msgstr "Total"
|
1177 |
-
|
1178 |
-
#: adminpages/orders.php:375 adminpages/orders.php:325
|
1179 |
-
msgid "Should be subtotal + tax - couponamount."
|
1180 |
-
msgstr "Skulle være subtotal + skat - rabat beløb"
|
1181 |
-
|
1182 |
-
#: adminpages/orders.php:380 adminpages/orders.php:330
|
1183 |
-
msgid "Payment Type"
|
1184 |
-
msgstr "Betalings Type"
|
1185 |
-
|
1186 |
-
#: adminpages/orders.php:385 adminpages/orders.php:335
|
1187 |
-
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
|
1188 |
-
msgstr "e.g. PayPal Express, PayPal Standard. Kreditkort."
|
1189 |
-
|
1190 |
-
#: adminpages/orders.php:389 pages/billing.php:238 pages/checkout.php:493
|
1191 |
-
#: adminpages/orders.php:339 pages/billing.php:234 pages/checkout.php:510
|
1192 |
-
#: pages/checkout.php:517
|
1193 |
-
msgid "Card Type"
|
1194 |
-
msgstr "Kort Type"
|
1195 |
-
|
1196 |
-
#: adminpages/orders.php:394 adminpages/orders.php:344
|
1197 |
-
msgid "e.g. Visa, MasterCard, AMEX, etc"
|
1198 |
-
msgstr "e.g Visa, MasterCard. AMEX, etc"
|
1199 |
-
|
1200 |
-
#: adminpages/orders.php:398 adminpages/paymentsettings.php:352
|
1201 |
-
#: adminpages/orders.php:348 adminpages/paymentsettings.php:347
|
1202 |
-
msgid "Account Number"
|
1203 |
-
msgstr "Konto Nummer"
|
1204 |
-
|
1205 |
-
#: adminpages/orders.php:403 adminpages/orders.php:353
|
1206 |
-
msgid "Obscure all but last 4 digits."
|
1207 |
-
msgstr "Skjul alle personlige oplysninger, undtagen de sidste 4 cifre"
|
1208 |
-
|
1209 |
-
#: adminpages/orders.php:408 adminpages/orders.php:358
|
1210 |
-
msgid "Expiration Month"
|
1211 |
-
msgstr "Udløbs Måned"
|
1212 |
-
|
1213 |
-
#: adminpages/orders.php:415 adminpages/orders.php:365
|
1214 |
-
msgid "Expiration Year"
|
1215 |
-
msgstr "Udløbs År"
|
1216 |
-
|
1217 |
-
#: adminpages/orders.php:423 adminpages/orders.php:909
|
1218 |
-
#: adminpages/orders.php:373 adminpages/orders.php:606
|
1219 |
-
msgid "Status"
|
1220 |
-
msgstr "Status"
|
1221 |
-
|
1222 |
-
#: adminpages/orders.php:444 adminpages/orders.php:907
|
1223 |
-
#: adminpages/orders.php:394 adminpages/orders.php:604
|
1224 |
-
msgid "Gateway"
|
1225 |
-
msgstr "Gateway"
|
1226 |
-
|
1227 |
-
#: adminpages/orders.php:448 adminpages/orders.php:398
|
1228 |
-
msgid "Testing Only"
|
1229 |
-
msgstr "Kun for Test"
|
1230 |
-
|
1231 |
-
#: adminpages/orders.php:449 adminpages/paymentsettings.php:159
|
1232 |
-
#: adminpages/orders.php:399 adminpages/paymentsettings.php:157
|
1233 |
-
msgid "Pay by Check"
|
1234 |
-
msgstr "Betal med Check"
|
1235 |
-
|
1236 |
-
#: adminpages/orders.php:461 adminpages/paymentsettings.php:184
|
1237 |
-
#: adminpages/orders.php:411 adminpages/paymentsettings.php:175
|
1238 |
-
#: adminpages/paymentsettings.php:179
|
1239 |
-
msgid "Gateway Environment"
|
1240 |
-
msgstr "Gateway Miljø"
|
1241 |
-
|
1242 |
-
#: adminpages/orders.php:465 adminpages/paymentsettings.php:188
|
1243 |
-
#: adminpages/orders.php:415 adminpages/paymentsettings.php:179
|
1244 |
-
#: adminpages/paymentsettings.php:183
|
1245 |
-
msgid "Sandbox/Testing"
|
1246 |
-
msgstr "Sandkasse/Test"
|
1247 |
-
|
1248 |
-
#: adminpages/orders.php:466 adminpages/paymentsettings.php:189
|
1249 |
-
#: adminpages/orders.php:416 adminpages/paymentsettings.php:180
|
1250 |
-
#: adminpages/paymentsettings.php:184
|
1251 |
-
msgid "Live/Production"
|
1252 |
-
msgstr "Live/Produktion"
|
1253 |
-
|
1254 |
-
#: adminpages/orders.php:473 adminpages/orders.php:423
|
1255 |
-
msgid "Payment Transaction ID"
|
1256 |
-
msgstr "Betalings Transaktions ID"
|
1257 |
-
|
1258 |
-
#: adminpages/orders.php:478 adminpages/orders.php:428
|
1259 |
-
msgid "Generated by the gateway. Useful to cross reference orders."
|
1260 |
-
msgstr "Genereret af Gateway. Nyttigt til at krydse referencer med ordre."
|
1261 |
-
|
1262 |
-
#: adminpages/orders.php:482 adminpages/orders.php:432
|
1263 |
-
msgid "Subscription Transaction ID"
|
1264 |
-
msgstr "Abonnoments Transaktion ID"
|
1265 |
-
|
1266 |
-
#: adminpages/orders.php:487 adminpages/orders.php:437
|
1267 |
-
msgid "Generated by the gateway. Useful to cross reference subscriptions."
|
1268 |
-
msgstr ""
|
1269 |
-
"Genereret af Gateway. Nyttigt til at krydse referencer med abonnomenter. "
|
1270 |
-
|
1271 |
-
#: adminpages/orders.php:492 adminpages/orders.php:910 pages/invoice.php:107
|
1272 |
-
#: adminpages/orders.php:442 adminpages/orders.php:607 pages/invoice.php:105
|
1273 |
-
msgid "Date"
|
1274 |
-
msgstr "Dato"
|
1275 |
-
|
1276 |
-
#: adminpages/orders.php:527 adminpages/orders.php:477
|
1277 |
-
msgid "Affiliate ID"
|
1278 |
-
msgstr "Assosieret ID"
|
1279 |
-
|
1280 |
-
#: adminpages/orders.php:535 adminpages/orders.php:485
|
1281 |
-
msgid "Affiliate SubID"
|
1282 |
-
msgstr "Assosieret SubID"
|
1283 |
-
|
1284 |
-
#: adminpages/orders.php:545 adminpages/orders.php:495
|
1285 |
-
msgid "Notes"
|
1286 |
-
msgstr "Noter"
|
1287 |
-
|
1288 |
-
#: adminpages/orders.php:560 adminpages/orders.php:510
|
1289 |
-
msgid "Save Order"
|
1290 |
-
msgstr "Gem Ordre"
|
1291 |
-
|
1292 |
-
#: adminpages/orders.php:561 pages/billing.php:330 adminpages/orders.php:511
|
1293 |
-
#: pages/billing.php:295 pages/billing.php:299
|
1294 |
-
msgid "Cancel"
|
1295 |
-
msgstr "Annullere"
|
1296 |
-
|
1297 |
-
#: adminpages/orders.php:570 includes/adminpages.php:55
|
1298 |
-
#: includes/adminpages.php:163 adminpages/orders.php:520
|
1299 |
-
#: includes/adminpages.php:17 includes/adminpages.php:84
|
1300 |
-
#: includes/adminpages.php:156
|
1301 |
-
msgid "Orders"
|
1302 |
-
msgstr "Ordrer"
|
1303 |
-
|
1304 |
-
#: adminpages/orders.php:571 adminpages/orders.php:521
|
1305 |
-
msgid "Add New Order"
|
1306 |
-
msgstr "Tilføj Ny Ordrer"
|
1307 |
-
|
1308 |
-
#: adminpages/orders.php:605
|
1309 |
-
msgid "All"
|
1310 |
-
msgstr "Alle"
|
1311 |
-
|
1312 |
-
#: adminpages/orders.php:606
|
1313 |
-
msgid "Within a Date Range"
|
1314 |
-
msgstr "Inden for et datointerval"
|
1315 |
-
|
1316 |
-
#: adminpages/orders.php:607
|
1317 |
-
msgid "Predefined Date Range"
|
1318 |
-
msgstr "Foruddefineret datointerval"
|
1319 |
-
|
1320 |
-
#: adminpages/orders.php:608
|
1321 |
-
msgid "Within a Level"
|
1322 |
-
msgstr "Indenfor et Niveau"
|
1323 |
-
|
1324 |
-
#: adminpages/orders.php:609
|
1325 |
-
msgid "Within a Status"
|
1326 |
-
msgstr "Indenfor en Status"
|
1327 |
-
|
1328 |
-
#: adminpages/orders.php:612
|
1329 |
-
msgid "From"
|
1330 |
-
msgstr "Fra"
|
1331 |
-
|
1332 |
-
#: adminpages/orders.php:624
|
1333 |
-
msgid "To"
|
1334 |
-
msgstr "Til"
|
1335 |
-
|
1336 |
-
#: adminpages/orders.php:636
|
1337 |
-
msgid "filter by "
|
1338 |
-
msgstr "Filtreret af"
|
1339 |
-
|
1340 |
-
#: adminpages/orders.php:674
|
1341 |
-
msgid "Filter"
|
1342 |
-
msgstr "Filtreret"
|
1343 |
-
|
1344 |
-
#: adminpages/orders.php:777 adminpages/orders.php:780
|
1345 |
-
#: adminpages/orders.php:535 adminpages/orders.php:538
|
1346 |
-
msgid "Search Orders"
|
1347 |
-
msgstr "Søg Ordrer"
|
1348 |
-
|
1349 |
-
#: adminpages/orders.php:893 adminpages/orders.php:590
|
1350 |
-
#, php-format
|
1351 |
-
msgid "%d orders found."
|
1352 |
-
msgstr "%d ordre fundet."
|
1353 |
-
|
1354 |
-
#: adminpages/orders.php:902 adminpages/paymentsettings.php:220
|
1355 |
-
#: adminpages/reports/login.php:141 adminpages/orders.php:599
|
1356 |
-
#: adminpages/paymentsettings.php:211 adminpages/paymentsettings.php:215
|
1357 |
-
msgid "User"
|
1358 |
-
msgstr "Bruger"
|
1359 |
-
|
1360 |
-
#: adminpages/orders.php:904 includes/profile.php:27 pages/checkout.php:33
|
1361 |
-
#: pages/confirmation.php:47 pages/confirmation.php:64
|
1362 |
-
#: pages/confirmation.php:105 pages/invoice.php:28 pages/invoice.php:51
|
1363 |
-
#: adminpages/orders.php:601 includes/profile.php:25 pages/checkout.php:34
|
1364 |
-
#: pages/confirmation.php:46 pages/confirmation.php:62
|
1365 |
-
#: pages/confirmation.php:103 pages/invoice.php:27 pages/invoice.php:49
|
1366 |
-
msgid "Membership Level"
|
1367 |
-
msgstr "Medlems Niveau"
|
1368 |
-
|
1369 |
-
#: adminpages/orders.php:906 adminpages/orders.php:954
|
1370 |
-
#: adminpages/orders.php:603 adminpages/orders.php:651
|
1371 |
-
msgid "Payment"
|
1372 |
-
msgstr "Betaling"
|
1373 |
-
|
1374 |
-
#: adminpages/orders.php:908 adminpages/orders.php:605
|
1375 |
-
msgid "Transaction IDs"
|
1376 |
-
msgstr "Transaktion ID'er"
|
1377 |
-
|
1378 |
-
#: adminpages/orders.php:933 adminpages/orders.php:630
|
1379 |
-
msgid "deleted"
|
1380 |
-
msgstr "slettet"
|
1381 |
-
|
1382 |
-
#: adminpages/orders.php:956 adminpages/orders.php:653
|
1383 |
-
msgid "Subscription"
|
1384 |
-
msgstr "Abonnoment"
|
1385 |
-
|
1386 |
-
#: adminpages/orders.php:967 adminpages/orders.php:664
|
1387 |
-
#, php-format
|
1388 |
-
msgid ""
|
1389 |
-
"Deleting orders is permanent and can affect active users. Are you sure you "
|
1390 |
-
"want to delete order %s?"
|
1391 |
-
msgstr ""
|
1392 |
-
"Slette ordrer er permanent og kan ikke påvirke aktive brugere. Er du sikker "
|
1393 |
-
"på, at du ville slette ordrer %s?"
|
1394 |
-
|
1395 |
-
#: adminpages/orders.php:977 adminpages/orders.php:674
|
1396 |
-
msgid "No orders found."
|
1397 |
-
msgstr "Ingen ordrer fundet."
|
1398 |
-
|
1399 |
-
#: adminpages/pagesettings.php:51
|
1400 |
-
msgid "Membership Account"
|
1401 |
-
msgstr "Medlems Konto"
|
1402 |
-
|
1403 |
-
#: adminpages/pagesettings.php:54
|
1404 |
-
msgid "Membership Billing"
|
1405 |
-
msgstr "Medlems Regning"
|
1406 |
-
|
1407 |
-
#: adminpages/pagesettings.php:57
|
1408 |
-
msgid "Membership Cancel"
|
1409 |
-
msgstr "Medlems Annullering"
|
1410 |
-
|
1411 |
-
#: adminpages/pagesettings.php:60
|
1412 |
-
msgid "Membership Checkout"
|
1413 |
-
msgstr "Medlems Gå til Kassen"
|
1414 |
-
|
1415 |
-
#: adminpages/pagesettings.php:63
|
1416 |
-
msgid "Membership Confirmation"
|
1417 |
-
msgstr "Medlems Bekræftigelse"
|
1418 |
-
|
1419 |
-
#: adminpages/pagesettings.php:66
|
1420 |
-
msgid "Membership Invoice"
|
1421 |
-
msgstr "Medlems Faktura"
|
1422 |
-
|
1423 |
-
#: adminpages/pagesettings.php:73
|
1424 |
-
#, php-format
|
1425 |
-
msgid "Membership %s"
|
1426 |
-
msgstr "Medlems %s"
|
1427 |
-
|
1428 |
-
#: adminpages/pagesettings.php:111 adminpages/pagesettings.php:83
|
1429 |
-
msgid "The following pages have been created for you"
|
1430 |
-
msgstr "De følgende sider, er bleven oprettet for dig"
|
1431 |
-
|
1432 |
-
#: adminpages/pagesettings.php:126 adminpages/pagesettings.php:98
|
1433 |
-
msgid ""
|
1434 |
-
"Manage the WordPress pages assigned to each required Paid Memberships Pro "
|
1435 |
-
"page."
|
1436 |
-
msgstr ""
|
1437 |
-
"Håndtere Wordpress sider, som er tildelt og påkrævet til hver Paid "
|
1438 |
-
"Memberships Pro sider eller."
|
1439 |
-
|
1440 |
-
#: adminpages/pagesettings.php:132 adminpages/pagesettings.php:104
|
1441 |
-
msgid ""
|
1442 |
-
"Assign the WordPress pages for each required Paid Memberships Pro page or"
|
1443 |
-
msgstr ""
|
1444 |
-
"Tildel Wordpress sider, til hver påkrævet Paid Memberships Pro sider eller"
|
1445 |
-
|
1446 |
-
#: adminpages/pagesettings.php:132 adminpages/pagesettings.php:104
|
1447 |
-
msgid "click here to let us generate them for you"
|
1448 |
-
msgstr "Klik her, for at lade dem generere dem for dig"
|
1449 |
-
|
1450 |
-
#: adminpages/pagesettings.php:140 adminpages/pagesettings.php:112
|
1451 |
-
msgid "Account Page"
|
1452 |
-
msgstr "Konto Side"
|
1453 |
-
|
1454 |
-
#: adminpages/pagesettings.php:147 adminpages/pagesettings.php:162
|
1455 |
-
#: adminpages/pagesettings.php:177 adminpages/pagesettings.php:193
|
1456 |
-
#: adminpages/pagesettings.php:209 adminpages/pagesettings.php:225
|
1457 |
-
#: adminpages/pagesettings.php:241 adminpages/pagesettings.php:119
|
1458 |
-
#: adminpages/pagesettings.php:132 adminpages/pagesettings.php:134
|
1459 |
-
#: adminpages/pagesettings.php:145 adminpages/pagesettings.php:149
|
1460 |
-
#: adminpages/pagesettings.php:159 adminpages/pagesettings.php:165
|
1461 |
-
#: adminpages/pagesettings.php:173 adminpages/pagesettings.php:181
|
1462 |
-
#: adminpages/pagesettings.php:187 adminpages/pagesettings.php:197
|
1463 |
-
#: adminpages/pagesettings.php:201 adminpages/pagesettings.php:213
|
1464 |
-
msgid "edit page"
|
1465 |
-
msgstr "redigere side"
|
1466 |
-
|
1467 |
-
#: adminpages/pagesettings.php:149 adminpages/pagesettings.php:164
|
1468 |
-
#: adminpages/pagesettings.php:179 adminpages/pagesettings.php:195
|
1469 |
-
#: adminpages/pagesettings.php:211 adminpages/pagesettings.php:227
|
1470 |
-
#: adminpages/pagesettings.php:243 adminpages/pagesettings.php:121
|
1471 |
-
#: adminpages/pagesettings.php:136 adminpages/pagesettings.php:151
|
1472 |
-
#: adminpages/pagesettings.php:167 adminpages/pagesettings.php:183
|
1473 |
-
#: adminpages/pagesettings.php:199 adminpages/pagesettings.php:215
|
1474 |
-
msgid "view page"
|
1475 |
-
msgstr "se side"
|
1476 |
-
|
1477 |
-
#: adminpages/pagesettings.php:151 adminpages/pagesettings.php:166
|
1478 |
-
#: adminpages/pagesettings.php:181 adminpages/pagesettings.php:197
|
1479 |
-
#: adminpages/pagesettings.php:213 adminpages/pagesettings.php:229
|
1480 |
-
#: adminpages/pagesettings.php:245 adminpages/pagesettings.php:121
|
1481 |
-
#: adminpages/pagesettings.php:123 adminpages/pagesettings.php:134
|
1482 |
-
#: adminpages/pagesettings.php:138 adminpages/pagesettings.php:147
|
1483 |
-
#: adminpages/pagesettings.php:153 adminpages/pagesettings.php:161
|
1484 |
-
#: adminpages/pagesettings.php:169 adminpages/pagesettings.php:175
|
1485 |
-
#: adminpages/pagesettings.php:185 adminpages/pagesettings.php:189
|
1486 |
-
#: adminpages/pagesettings.php:201 adminpages/pagesettings.php:203
|
1487 |
-
#: adminpages/pagesettings.php:217
|
1488 |
-
msgid "Include the shortcode"
|
1489 |
-
msgstr "Include kort kode"
|
1490 |
-
|
1491 |
-
#: adminpages/pagesettings.php:155 adminpages/pagesettings.php:125
|
1492 |
-
#: adminpages/pagesettings.php:127
|
1493 |
-
msgid "Billing Information Page"
|
1494 |
-
msgstr "Regnings Informations Side"
|
1495 |
-
|
1496 |
-
#: adminpages/pagesettings.php:170 adminpages/pagesettings.php:138
|
1497 |
-
#: adminpages/pagesettings.php:142
|
1498 |
-
msgid "Cancel Page"
|
1499 |
-
msgstr "Annullere Side"
|
1500 |
-
|
1501 |
-
#: adminpages/pagesettings.php:186 adminpages/pagesettings.php:152
|
1502 |
-
#: adminpages/pagesettings.php:158
|
1503 |
-
msgid "Checkout Page"
|
1504 |
-
msgstr "Gå til Kassen Side"
|
1505 |
-
|
1506 |
-
#: adminpages/pagesettings.php:202 adminpages/pagesettings.php:166
|
1507 |
-
#: adminpages/pagesettings.php:174
|
1508 |
-
msgid "Confirmation Page"
|
1509 |
-
msgstr "Bekræftigelses Side"
|
1510 |
-
|
1511 |
-
#: adminpages/pagesettings.php:218 adminpages/pagesettings.php:180
|
1512 |
-
#: adminpages/pagesettings.php:190
|
1513 |
-
msgid "Invoice Page"
|
1514 |
-
msgstr "Fakturer Side"
|
1515 |
-
|
1516 |
-
#: adminpages/pagesettings.php:234 adminpages/pagesettings.php:194
|
1517 |
-
#: adminpages/pagesettings.php:206
|
1518 |
-
msgid "Levels Page"
|
1519 |
-
msgstr "Nivauers Side"
|
1520 |
-
|
1521 |
-
#: adminpages/paymentsettings.php:77 adminpages/paymentsettings.php:82
|
1522 |
-
msgid "Your payment settings have been updated."
|
1523 |
-
msgstr "Din betalings indstillinger er bleven opdatert."
|
1524 |
-
|
1525 |
-
#: adminpages/paymentsettings.php:146 adminpages/paymentsettings.php:154
|
1526 |
-
#: adminpages/paymentsettings.php:144 adminpages/paymentsettings.php:152
|
1527 |
-
msgid "Payment Gateway"
|
1528 |
-
msgstr "Betalings Gateway"
|
1529 |
-
|
1530 |
-
#: adminpages/paymentsettings.php:146 adminpages/paymentsettings.php:144
|
1531 |
-
msgid "SSL Settings"
|
1532 |
-
msgstr "SSL Indstillinger"
|
1533 |
-
|
1534 |
-
#: adminpages/paymentsettings.php:148
|
1535 |
-
msgid ""
|
1536 |
-
"Learn more about <a title=\"Paid Memberships Pro - SSL Settings\" target="
|
1537 |
-
"\"_blank\" href=\"http://www.paidmembershipspro.com/support/initial-plugin-"
|
1538 |
-
"setup/ssl/\">SSL</a> or <a title=\"Paid Memberships Pro - Payment Gateway "
|
1539 |
-
"Settings\" target=\"_blank\" href=\"http://www.paidmembershipspro.com/"
|
1540 |
-
"support/initial-plugin-setup/payment-gateway/\">Payment Gateway Settings</a>."
|
1541 |
-
msgstr ""
|
1542 |
-
"Lær mere omkring <a title=\"Paid Memberships Pro - SSL Indstillinger\" "
|
1543 |
-
"target=\"_blank\" href=\"http://www.paidmembershipspro.com/support/initial-"
|
1544 |
-
"plugin-setup/ssl/\">SSL</a> eller <a title=\"Paid Memberships Pro - Betaling "
|
1545 |
-
"Gateway Indstillinger\" target=\"_blank\" href=\"http://www."
|
1546 |
-
"paidmembershipspro.com/support/initial-plugin-setup/payment-gateway/"
|
1547 |
-
"\">Betalings Gateway Indstillinger</a>."
|
1548 |
-
|
1549 |
-
#: adminpages/paymentsettings.php:174
|
1550 |
-
msgid ""
|
1551 |
-
"This gateway option is in beta. Some functionality may not be available. "
|
1552 |
-
"Please contact Paid Memberships Pro with any issues you run into. "
|
1553 |
-
"<strong>Please be sure to upgrade Paid Memberships Pro to the latest "
|
1554 |
-
"versions when available.</strong>"
|
1555 |
-
msgstr ""
|
1556 |
-
"Denne gateway funktion er I beta. Nogle funktioner er nok ikke tilgængelig. "
|
1557 |
-
"Venlig kontakt Paid Memberships Pro med de problemer, du oplever. "
|
1558 |
-
"<strong>Husk at opgradere Paid Memberships Pro til den seneste version, når "
|
1559 |
-
"det er tilgængeligt.</strong>"
|
1560 |
-
|
1561 |
-
#: adminpages/paymentsettings.php:179
|
1562 |
-
msgid ""
|
1563 |
-
"We do not recommend using PayPal Standard. We suggest using PayPal Express, "
|
1564 |
-
"Website Payments Pro (Legacy), or PayPal Pro (Payflow Pro). <a target="
|
1565 |
-
"\"_blank\" href=\"http://www.paidmembershipspro.com/2013/09/read-using-"
|
1566 |
-
"paypal-standard-paid-memberships-pro/\">More information on why can be found "
|
1567 |
-
"here.</a>"
|
1568 |
-
msgstr ""
|
1569 |
-
"Vi anbefaler ikke, at bruge Paypal Standard. Vi forslår at brute PayPal "
|
1570 |
-
"Express, Website Payments Pro (Legacy), eller PayPal Pro (Payflow Pro). <a "
|
1571 |
-
"target=\"_blank\" href=\"http://www.paidmembershipspro.com/2013/09/read-"
|
1572 |
-
"using-paypal-standard-paid-memberships-pro/\">Mere information om hvorfor, "
|
1573 |
-
"kan findes her.</a>"
|
1574 |
-
|
1575 |
-
#: adminpages/paymentsettings.php:204 adminpages/paymentsettings.php:195
|
1576 |
-
#: adminpages/paymentsettings.php:199
|
1577 |
-
msgid "Partner"
|
1578 |
-
msgstr "Partner"
|
1579 |
-
|
1580 |
-
#: adminpages/paymentsettings.php:212 adminpages/paymentsettings.php:203
|
1581 |
-
#: adminpages/paymentsettings.php:207
|
1582 |
-
msgid "Vendor"
|
1583 |
-
msgstr "Sælger"
|
1584 |
-
|
1585 |
-
#: adminpages/paymentsettings.php:228 pages/checkout.php:180
|
1586 |
-
#: adminpages/paymentsettings.php:219 adminpages/paymentsettings.php:223
|
1587 |
-
#: pages/checkout.php:177
|
1588 |
-
msgid "Password"
|
1589 |
-
msgstr "Adgangskode"
|
1590 |
-
|
1591 |
-
#: adminpages/paymentsettings.php:236 adminpages/paymentsettings.php:227
|
1592 |
-
#: adminpages/paymentsettings.php:231
|
1593 |
-
msgid "Gateway Account Email"
|
1594 |
-
msgstr "Gateway Konto Email"
|
1595 |
-
|
1596 |
-
#: adminpages/paymentsettings.php:244 adminpages/paymentsettings.php:336
|
1597 |
-
#: adminpages/paymentsettings.php:235 adminpages/paymentsettings.php:239
|
1598 |
-
#: adminpages/paymentsettings.php:331
|
1599 |
-
msgid "API Username"
|
1600 |
-
msgstr "API Brugernavn"
|
1601 |
-
|
1602 |
-
#: adminpages/paymentsettings.php:252 adminpages/paymentsettings.php:344
|
1603 |
-
#: adminpages/paymentsettings.php:243 adminpages/paymentsettings.php:247
|
1604 |
-
#: adminpages/paymentsettings.php:339
|
1605 |
-
msgid "API Password"
|
1606 |
-
msgstr "API Adgangskode"
|
1607 |
-
|
1608 |
-
#: adminpages/paymentsettings.php:260 adminpages/paymentsettings.php:251
|
1609 |
-
#: adminpages/paymentsettings.php:255
|
1610 |
-
msgid "API Signature"
|
1611 |
-
msgstr "API Signatur"
|
1612 |
-
|
1613 |
-
#: adminpages/paymentsettings.php:269 adminpages/paymentsettings.php:260
|
1614 |
-
#: adminpages/paymentsettings.php:264
|
1615 |
-
msgid "Login Name"
|
1616 |
-
msgstr "Login Navn"
|
1617 |
-
|
1618 |
-
#: adminpages/paymentsettings.php:277 adminpages/paymentsettings.php:268
|
1619 |
-
#: adminpages/paymentsettings.php:272
|
1620 |
-
msgid "Transaction Key"
|
1621 |
-
msgstr "Transaktions Nøgle"
|
1622 |
-
|
1623 |
-
#: adminpages/paymentsettings.php:286 adminpages/paymentsettings.php:277
|
1624 |
-
#: adminpages/paymentsettings.php:281
|
1625 |
-
msgid "Secret Key"
|
1626 |
-
msgstr "Hemmelig Nøgle"
|
1627 |
-
|
1628 |
-
#: adminpages/paymentsettings.php:294 adminpages/paymentsettings.php:285
|
1629 |
-
#: adminpages/paymentsettings.php:289
|
1630 |
-
msgid "Publishable Key"
|
1631 |
-
msgstr "Publicerbar Nøgle"
|
1632 |
-
|
1633 |
-
#: adminpages/paymentsettings.php:303 adminpages/paymentsettings.php:369
|
1634 |
-
#: adminpages/paymentsettings.php:294 adminpages/paymentsettings.php:298
|
1635 |
-
#: adminpages/paymentsettings.php:364
|
1636 |
-
msgid "Merchant ID"
|
1637 |
-
msgstr "Købmands ID"
|
1638 |
-
|
1639 |
-
#: adminpages/paymentsettings.php:311 adminpages/paymentsettings.php:302
|
1640 |
-
#: adminpages/paymentsettings.php:306
|
1641 |
-
msgid "Public Key"
|
1642 |
-
msgstr "Offentlig Nøgle"
|
1643 |
-
|
1644 |
-
#: adminpages/paymentsettings.php:319 adminpages/paymentsettings.php:310
|
1645 |
-
#: adminpages/paymentsettings.php:314
|
1646 |
-
msgid "Private Key"
|
1647 |
-
msgstr "Privat Nøgle"
|
1648 |
-
|
1649 |
-
#: adminpages/paymentsettings.php:327 adminpages/paymentsettings.php:318
|
1650 |
-
#: adminpages/paymentsettings.php:322
|
1651 |
-
msgid "Client-Side Encryption Key"
|
1652 |
-
msgstr "Klient-Side Krypteret Nøgle"
|
1653 |
-
|
1654 |
-
#: adminpages/paymentsettings.php:360 adminpages/paymentsettings.php:355
|
1655 |
-
msgid "Secret Word"
|
1656 |
-
msgstr "Hemmlig Ord"
|
1657 |
-
|
1658 |
-
#: adminpages/paymentsettings.php:377 adminpages/paymentsettings.php:372
|
1659 |
-
msgid "Transaction Security Key"
|
1660 |
-
msgstr "Transaktion Sikkerheds Nøgle"
|
1661 |
-
|
1662 |
-
#: adminpages/paymentsettings.php:386 adminpages/paymentsettings.php:327
|
1663 |
-
#: adminpages/paymentsettings.php:337 adminpages/paymentsettings.php:356
|
1664 |
-
#: adminpages/paymentsettings.php:381
|
1665 |
-
msgid "Currency"
|
1666 |
-
msgstr "Valuta"
|
1667 |
-
|
1668 |
-
#: adminpages/paymentsettings.php:400
|
1669 |
-
msgid ""
|
1670 |
-
"Not all currencies will be supported by every gateway. Please check with "
|
1671 |
-
"your gateway."
|
1672 |
-
msgstr ""
|
1673 |
-
"Ikke alt Valuta understøtter alle gateways. Kontrollere venligst din Gateway."
|
1674 |
-
|
1675 |
-
#: adminpages/paymentsettings.php:406 adminpages/paymentsettings.php:375
|
1676 |
-
#: adminpages/paymentsettings.php:401
|
1677 |
-
msgid "Accepted Credit Card Types"
|
1678 |
-
msgstr "Accepteret Kreditkort Typer"
|
1679 |
-
|
1680 |
-
#: adminpages/paymentsettings.php:420 adminpages/paymentsettings.php:389
|
1681 |
-
#: adminpages/paymentsettings.php:415
|
1682 |
-
msgid "Instructions"
|
1683 |
-
msgstr "Instruktioner"
|
1684 |
-
|
1685 |
-
#: adminpages/paymentsettings.php:424 adminpages/paymentsettings.php:393
|
1686 |
-
#: adminpages/paymentsettings.php:419
|
1687 |
-
msgid ""
|
1688 |
-
"Who to write the check out to. Where to mail it. Shown on checkout, "
|
1689 |
-
"confirmation, and invoice pages."
|
1690 |
-
msgstr ""
|
1691 |
-
"Hvem skal checken udskrives til. Hvor skal den mails til. Vis ved gå til "
|
1692 |
-
"kassen, bekræftigelse, og faktura sider."
|
1693 |
-
|
1694 |
-
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:425
|
1695 |
-
msgid "Show Billing Address Fields"
|
1696 |
-
msgstr "Vis Regnings Adresse Felter."
|
1697 |
-
|
1698 |
-
#: adminpages/paymentsettings.php:437
|
1699 |
-
msgid ""
|
1700 |
-
"Stripe doesn't require billing address fields. Choose 'No' to hide them on "
|
1701 |
-
"the checkout page.<br /><strong>If No, make sure you disable address "
|
1702 |
-
"verification in the Stripe dashboard settings.</strong>"
|
1703 |
-
msgstr ""
|
1704 |
-
"Stripe behøver ikke regnings adresse felter. Vælg 'Nej' for at skjule dem "
|
1705 |
-
"ved gå til kassen side.<br/><strong>Hvis Nej, så vær sikker på, at du har "
|
1706 |
-
"deaktiveret bekræftigelse I Strip Kontrolpanel Indstillinger.</strong>"
|
1707 |
-
|
1708 |
-
#: adminpages/paymentsettings.php:443 adminpages/paymentsettings.php:398
|
1709 |
-
#: adminpages/paymentsettings.php:438
|
1710 |
-
msgid "Sales Tax"
|
1711 |
-
msgstr "Moms"
|
1712 |
-
|
1713 |
-
#: adminpages/paymentsettings.php:443 pages/billing.php:82
|
1714 |
-
#: adminpages/paymentsettings.php:398 adminpages/paymentsettings.php:438
|
1715 |
-
#: pages/billing.php:78
|
1716 |
-
msgid "optional"
|
1717 |
-
msgstr "valgfri"
|
1718 |
-
|
1719 |
-
#: adminpages/paymentsettings.php:446 adminpages/paymentsettings.php:401
|
1720 |
-
#: adminpages/paymentsettings.php:441
|
1721 |
-
msgid "Tax State"
|
1722 |
-
msgstr "Moms ialt"
|
1723 |
-
|
1724 |
-
#: adminpages/paymentsettings.php:447 adminpages/paymentsettings.php:402
|
1725 |
-
#: adminpages/paymentsettings.php:442
|
1726 |
-
msgid "abbreviation, e.g. \"PA\""
|
1727 |
-
msgstr "forkortelse, e.g. \"PA\""
|
1728 |
-
|
1729 |
-
#: adminpages/paymentsettings.php:449 adminpages/paymentsettings.php:404
|
1730 |
-
#: adminpages/paymentsettings.php:444
|
1731 |
-
msgid "decimal, e.g. \"0.06\""
|
1732 |
-
msgstr "decimal, e.g \"0.06\""
|
1733 |
-
|
1734 |
-
#: adminpages/paymentsettings.php:450
|
1735 |
-
msgid ""
|
1736 |
-
"US only. If values are given, tax will be applied for any members ordering "
|
1737 |
-
"from the selected state.<br />For non-US or more complex tax rules, use the "
|
1738 |
-
"<a target=\"_blank\" href=\"http://www.paidmembershipspro.com/2013/10/non-us-"
|
1739 |
-
"taxes-paid-memberships-pro/\">pmpro_tax filter</a>."
|
1740 |
-
msgstr ""
|
1741 |
-
"Kun for US. Hvis værdien er sat korret op, så ville skat blive tilføjet til "
|
1742 |
-
"hvilken som helst medlems ordre fra den valgte stat.<br> For ikke-US eller "
|
1743 |
-
"mere komplekse skatte regler, brug dette <a target=\"_blank\" href=\"http://"
|
1744 |
-
"www.paidmembershipspro.com/2013/10/non-us-taxes-paid-memberships-pro/"
|
1745 |
-
"\">pmpro_tax filter</a>."
|
1746 |
-
|
1747 |
-
#: adminpages/paymentsettings.php:455 adminpages/paymentsettings.php:450
|
1748 |
-
msgid "Force SSL"
|
1749 |
-
msgstr "Tving SSL"
|
1750 |
-
|
1751 |
-
#: adminpages/paymentsettings.php:461 adminpages/paymentsettings.php:456
|
1752 |
-
msgid "Yes (with JavaScript redirects)"
|
1753 |
-
msgstr "Ja (med JavaScript omdirigering)"
|
1754 |
-
|
1755 |
-
#: adminpages/paymentsettings.php:468 adminpages/paymentsettings.php:430
|
1756 |
-
#: adminpages/paymentsettings.php:463
|
1757 |
-
msgid "SSL Seal Code"
|
1758 |
-
msgstr "SSL Seal Kode"
|
1759 |
-
|
1760 |
-
#: adminpages/paymentsettings.php:477 adminpages/paymentsettings.php:438
|
1761 |
-
#: adminpages/paymentsettings.php:471
|
1762 |
-
msgid "HTTPS Nuclear Option"
|
1763 |
-
msgstr "HTTPS Nuclear Funktioner"
|
1764 |
-
|
1765 |
-
#: adminpages/paymentsettings.php:480 adminpages/paymentsettings.php:441
|
1766 |
-
#: adminpages/paymentsettings.php:474
|
1767 |
-
msgid ""
|
1768 |
-
"Use the \"Nuclear Option\" to use secure (HTTPS) URLs on your secure pages. "
|
1769 |
-
"Check this if you are using SSL and have warnings on your checkout pages."
|
1770 |
-
msgstr ""
|
1771 |
-
"Brug \"Nuclear Funktion\" for at sikre (HTTPS) URLs på dine sikre sider. "
|
1772 |
-
"Tjek hvis du bruger SSL og har advarsler på din gå til kassen sider."
|
1773 |
-
|
1774 |
-
#: adminpages/paymentsettings.php:485 adminpages/paymentsettings.php:446
|
1775 |
-
#: adminpages/paymentsettings.php:479
|
1776 |
-
msgid "IPN Handler URL"
|
1777 |
-
msgstr "IPN Handler URL"
|
1778 |
-
|
1779 |
-
#: adminpages/paymentsettings.php:488 adminpages/paymentsettings.php:449
|
1780 |
-
#: adminpages/paymentsettings.php:482
|
1781 |
-
msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
|
1782 |
-
msgstr ""
|
1783 |
-
"For at integrerer fuldt ud med PayPal, vær sikker på, sæt din IPN Handler "
|
1784 |
-
"URL til "
|
1785 |
-
|
1786 |
-
#: adminpages/paymentsettings.php:493 adminpages/paymentsettings.php:487
|
1787 |
-
msgid "TwoCheckout INS URL"
|
1788 |
-
msgstr "TwoCheckout INS URL"
|
1789 |
-
|
1790 |
-
#: adminpages/paymentsettings.php:496 adminpages/paymentsettings.php:490
|
1791 |
-
msgid ""
|
1792 |
-
"To fully integrate with 2Checkout, be sure to set your 2Checkout INS URL "
|
1793 |
-
msgstr ""
|
1794 |
-
"For at kunne integrerer fuldtud med 2Checkout, vær sikker på, at sætte din "
|
1795 |
-
"2Checkout INS URL"
|
1796 |
-
|
1797 |
-
#: adminpages/paymentsettings.php:501 adminpages/paymentsettings.php:454
|
1798 |
-
#: adminpages/paymentsettings.php:495
|
1799 |
-
msgid "Silent Post URL"
|
1800 |
-
msgstr "Skjul Post URL"
|
1801 |
-
|
1802 |
-
#: adminpages/paymentsettings.php:504 adminpages/paymentsettings.php:457
|
1803 |
-
#: adminpages/paymentsettings.php:498
|
1804 |
-
msgid ""
|
1805 |
-
"To fully integrate with Authorize.net, be sure to set your Silent Post URL to"
|
1806 |
-
msgstr ""
|
1807 |
-
"For at kunne integrerer fuldtud med Authorize.net, vær sikker på, at sætte "
|
1808 |
-
"din Silent Post URL til"
|
1809 |
-
|
1810 |
-
#: adminpages/paymentsettings.php:509 adminpages/paymentsettings.php:517
|
1811 |
-
#: adminpages/paymentsettings.php:462 adminpages/paymentsettings.php:470
|
1812 |
-
#: adminpages/paymentsettings.php:503 adminpages/paymentsettings.php:511
|
1813 |
-
msgid "Web Hook URL"
|
1814 |
-
msgstr "Web Hook URL"
|
1815 |
-
|
1816 |
-
#: adminpages/paymentsettings.php:512 adminpages/paymentsettings.php:465
|
1817 |
-
#: adminpages/paymentsettings.php:506
|
1818 |
-
msgid "To fully integrate with Stripe, be sure to set your Web Hook URL to"
|
1819 |
-
msgstr ""
|
1820 |
-
"For at kunne integrerer fuldtud med Stripe, vær sikker på, at sætte din web "
|
1821 |
-
"Hook URL til"
|
1822 |
-
|
1823 |
-
#: adminpages/paymentsettings.php:521 adminpages/paymentsettings.php:474
|
1824 |
-
#: adminpages/paymentsettings.php:515
|
1825 |
-
msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
|
1826 |
-
msgstr ""
|
1827 |
-
"For at kunne integrerer fuldtud med Braintree, vær sikker på, at sætte din "
|
1828 |
-
"Silent Post URL til"
|
1829 |
-
|
1830 |
-
#: adminpages/reports.php:40 adminpages/reports.php:26
|
1831 |
-
#: adminpages/reports.php:37
|
1832 |
-
msgid "Details"
|
1833 |
-
msgstr "Detaljer"
|
1834 |
-
|
1835 |
-
#: adminpages/reports/login.php:16
|
1836 |
-
msgid "Visits, Views, and Logins"
|
1837 |
-
msgstr "Besøgende, Set, og Logget Ind"
|
1838 |
-
|
1839 |
-
#: adminpages/reports/login.php:26
|
1840 |
-
msgid "Visits Today"
|
1841 |
-
msgstr "Besøgende Idag"
|
1842 |
-
|
1843 |
-
#: adminpages/reports/login.php:27 adminpages/reports/login.php:147
|
1844 |
-
msgid "Visits This Month"
|
1845 |
-
msgstr "Besøgende I denne Måned"
|
1846 |
-
|
1847 |
-
#: adminpages/reports/login.php:28
|
1848 |
-
msgid "Visits All Time"
|
1849 |
-
msgstr "Besøgende Hele Tiden"
|
1850 |
-
|
1851 |
-
#: adminpages/reports/login.php:31
|
1852 |
-
msgid "Views Today"
|
1853 |
-
msgstr "Set Idag"
|
1854 |
-
|
1855 |
-
#: adminpages/reports/login.php:32 adminpages/reports/login.php:149
|
1856 |
-
msgid "Views This Month"
|
1857 |
-
msgstr "Set I Denne Måned"
|
1858 |
-
|
1859 |
-
#: adminpages/reports/login.php:33
|
1860 |
-
msgid "Views All Time"
|
1861 |
-
msgstr "Set Hele Tiden"
|
1862 |
-
|
1863 |
-
#: adminpages/reports/login.php:36
|
1864 |
-
msgid "Logins Today"
|
1865 |
-
msgstr "Logget ind Idag"
|
1866 |
-
|
1867 |
-
#: adminpages/reports/login.php:37 adminpages/reports/login.php:152
|
1868 |
-
msgid "Logins This Month"
|
1869 |
-
msgstr "Logget ind I denne måned"
|
1870 |
-
|
1871 |
-
#: adminpages/reports/login.php:38
|
1872 |
-
msgid "Logins All Time"
|
1873 |
-
msgstr "Logget ind hele Tiden"
|
1874 |
-
|
1875 |
-
#: adminpages/reports/login.php:61
|
1876 |
-
msgid "Visits, Views, and Logins Report"
|
1877 |
-
msgstr "Besøgende, Set. og Logget Ind Report"
|
1878 |
-
|
1879 |
-
#: adminpages/reports/login.php:66
|
1880 |
-
msgid "All Users"
|
1881 |
-
msgstr "Alle Brugere"
|
1882 |
-
|
1883 |
-
#: adminpages/reports/login.php:146
|
1884 |
-
msgid "Last Visit"
|
1885 |
-
msgstr "Sidst Besøgt"
|
1886 |
-
|
1887 |
-
#: adminpages/reports/login.php:148
|
1888 |
-
msgid "Total Visits"
|
1889 |
-
msgstr "Total Besøgende"
|
1890 |
-
|
1891 |
-
#: adminpages/reports/login.php:150
|
1892 |
-
msgid "Total Views"
|
1893 |
-
msgstr "Total Set"
|
1894 |
-
|
1895 |
-
#: adminpages/reports/login.php:151
|
1896 |
-
msgid "Last Login"
|
1897 |
-
msgstr "Sidst Logget Ind"
|
1898 |
-
|
1899 |
-
#: adminpages/reports/login.php:153
|
1900 |
-
msgid "Total Logins"
|
1901 |
-
msgstr "Logget ind Total"
|
1902 |
-
|
1903 |
-
#: adminpages/reports/memberships.php:18
|
1904 |
-
#: adminpages/reports/memberships.php:288
|
1905 |
-
msgid "Membership Stats"
|
1906 |
-
msgstr "Medlems Statestikker"
|
1907 |
-
|
1908 |
-
#: adminpages/reports/memberships.php:48
|
1909 |
-
msgid "Signups"
|
1910 |
-
msgstr "Regestreringer"
|
1911 |
-
|
1912 |
-
#: adminpages/reports/memberships.php:50 adminpages/reports/memberships.php:69
|
1913 |
-
msgid "All Time"
|
1914 |
-
msgstr "Hele Tiden"
|
1915 |
-
|
1916 |
-
#: adminpages/reports/memberships.php:54 adminpages/reports/memberships.php:73
|
1917 |
-
msgid "This Year"
|
1918 |
-
msgstr "Dette År"
|
1919 |
-
|
1920 |
-
#: adminpages/reports/memberships.php:58 adminpages/reports/memberships.php:77
|
1921 |
-
msgid "This Month"
|
1922 |
-
msgstr "Denne Måned"
|
1923 |
-
|
1924 |
-
#: adminpages/reports/memberships.php:62 adminpages/reports/memberships.php:81
|
1925 |
-
msgid "Today"
|
1926 |
-
msgstr "Idag"
|
1927 |
-
|
1928 |
-
#: adminpages/reports/memberships.php:67
|
1929 |
-
msgid "Cancellations"
|
1930 |
-
msgstr "Annulleringer"
|
1931 |
-
|
1932 |
-
#: adminpages/reports/memberships.php:86
|
1933 |
-
msgid "Other Stats"
|
1934 |
-
msgstr "Andre Statestikker"
|
1935 |
-
|
1936 |
-
#: adminpages/reports/memberships.php:88
|
1937 |
-
msgid "Monthly Recurring Revenue (MRR)"
|
1938 |
-
msgstr "Månedligt Tilbagevendende Indtægter (MTI)"
|
1939 |
-
|
1940 |
-
#: adminpages/reports/memberships.php:92
|
1941 |
-
msgid "Cancellation Rate"
|
1942 |
-
msgstr "Annullerings Rate"
|
1943 |
-
|
1944 |
-
#: adminpages/reports/memberships.php:96
|
1945 |
-
msgid "Lifetime Value (LTV)"
|
1946 |
-
msgstr "Livstids Værdi (LTV)"
|
1947 |
-
|
1948 |
-
#: adminpages/reports/memberships.php:294 adminpages/reports/sales.php:195
|
1949 |
-
#: adminpages/reports/sales.php:187 adminpages/reports/sales.php:196
|
1950 |
-
msgid "Daily"
|
1951 |
-
msgstr "Daglig"
|
1952 |
-
|
1953 |
-
#: adminpages/reports/memberships.php:295 adminpages/reports/sales.php:196
|
1954 |
-
#: adminpages/reports/sales.php:188 adminpages/reports/sales.php:197
|
1955 |
-
msgid "Monthly"
|
1956 |
-
msgstr "Månedelig"
|
1957 |
-
|
1958 |
-
#: adminpages/reports/memberships.php:296 adminpages/reports/sales.php:197
|
1959 |
-
#: adminpages/reports/sales.php:189 adminpages/reports/sales.php:198
|
1960 |
-
msgid "Annual"
|
1961 |
-
msgstr "Årlig"
|
1962 |
-
|
1963 |
-
#: adminpages/reports/memberships.php:299
|
1964 |
-
msgid "Signups vs. Cancellations"
|
1965 |
-
msgstr "Regestreringer vs Annulleringer"
|
1966 |
-
|
1967 |
-
#: adminpages/reports/memberships.php:331 adminpages/reports/sales.php:230
|
1968 |
-
#: adminpages/reports/sales.php:222 adminpages/reports/sales.php:231
|
1969 |
-
msgid "Generate Report"
|
1970 |
-
msgstr "Genereret Report"
|
1971 |
-
|
1972 |
-
#: adminpages/reports/sales.php:18
|
1973 |
-
msgid "Sales and Revenue (Testing/Sandbox)"
|
1974 |
-
msgstr "Salg og Indtægter (Test/Sandkasse)"
|
1975 |
-
|
1976 |
-
#: adminpages/reports/sales.php:20 adminpages/reports/sales.php:189
|
1977 |
-
#: adminpages/reports/sales.php:180
|
1978 |
-
msgid "Sales and Revenue"
|
1979 |
-
msgstr "Salg og Indtægter"
|
1980 |
-
|
1981 |
-
#: adminpages/reports/sales.php:200 adminpages/reports/sales.php:192
|
1982 |
-
#: adminpages/reports/sales.php:201
|
1983 |
-
msgid "Revenue"
|
1984 |
-
msgstr "Indtægter"
|
1985 |
-
|
1986 |
-
#: adminpages/reports/sales.php:201 adminpages/reports/sales.php:193
|
1987 |
-
#: adminpages/reports/sales.php:202
|
1988 |
-
msgid "Sales"
|
1989 |
-
msgstr "Salg"
|
1990 |
-
|
1991 |
-
#: classes/class.memberorder.php:564 classes/class.memberorder.php:553
|
1992 |
-
#: classes/class.memberorder.php:561 includes/cleanup.php:24
|
1993 |
-
#, php-format
|
1994 |
-
msgid ""
|
1995 |
-
"There was an error canceling the subscription for user with ID=%s. You will "
|
1996 |
-
"want to check your payment gateway to see if their subscription is still "
|
1997 |
-
"active."
|
1998 |
-
msgstr ""
|
1999 |
-
"Der var en fejl, med annullering af abonnement for bruger med ID=%s. Du "
|
2000 |
-
"ville nok kontrollere din betalings gateway, for at kunne se om deres "
|
2001 |
-
"abonnement stadig er aktiv"
|
2002 |
-
|
2003 |
-
#: classes/class.pmproemail.php:37
|
2004 |
-
#, php-format
|
2005 |
-
msgid "An Email From %s"
|
2006 |
-
msgstr "En Email Fra %s"
|
2007 |
-
|
2008 |
-
#: classes/class.pmproemail.php:122 classes/class.pmproemail.php:120
|
2009 |
-
#, php-format
|
2010 |
-
msgid "Your membership at %s has been CANCELLED"
|
2011 |
-
msgstr "Dit medlemskab hos %s er blevet ANNULLERET"
|
2012 |
-
|
2013 |
-
#: classes/class.pmproemail.php:144 classes/class.pmproemail.php:142
|
2014 |
-
#, php-format
|
2015 |
-
msgid "Membership for %s at %s has been CANCELLED"
|
2016 |
-
msgstr "Medlemskab for %s hos %s er blevet ANNULLERET"
|
2017 |
-
|
2018 |
-
#: classes/class.pmproemail.php:175 classes/class.pmproemail.php:172
|
2019 |
-
#: classes/class.pmproemail.php:173
|
2020 |
-
#, php-format
|
2021 |
-
msgid "Your membership confirmation for %s"
|
2022 |
-
msgstr "Dit medlemskab bekræftigelse for %s"
|
2023 |
-
|
2024 |
-
#: classes/class.pmproemail.php:228 classes/class.pmproemail.php:237
|
2025 |
-
#: classes/class.pmproemail.php:246 classes/class.pmproemail.php:325
|
2026 |
-
#: classes/class.pmproemail.php:334 classes/class.pmproemail.php:645
|
2027 |
-
#: pages/checkout.php:66 pages/checkout.php:76 pages/checkout.php:549
|
2028 |
-
#: pages/confirmation.php:52 pages/invoice.php:33
|
2029 |
-
#: classes/class.pmproemail.php:216 classes/class.pmproemail.php:218
|
2030 |
-
#: classes/class.pmproemail.php:225 classes/class.pmproemail.php:227
|
2031 |
-
#: classes/class.pmproemail.php:234 classes/class.pmproemail.php:236
|
2032 |
-
#: classes/class.pmproemail.php:304 classes/class.pmproemail.php:307
|
2033 |
-
#: classes/class.pmproemail.php:313 classes/class.pmproemail.php:316
|
2034 |
-
#: classes/class.pmproemail.php:532 classes/class.pmproemail.php:580
|
2035 |
-
#: pages/checkout.php:67 pages/checkout.php:77 pages/checkout.php:566
|
2036 |
-
#: pages/checkout.php:573 pages/confirmation.php:51 pages/invoice.php:32
|
2037 |
-
msgid "Discount Code"
|
2038 |
-
msgstr "Rabat Kode"
|
2039 |
-
|
2040 |
-
#: classes/class.pmproemail.php:253 classes/class.pmproemail.php:346
|
2041 |
-
#: classes/class.pmproemail.php:651 classes/class.pmproemail.php:241
|
2042 |
-
#: classes/class.pmproemail.php:243 classes/class.pmproemail.php:325
|
2043 |
-
#: classes/class.pmproemail.php:328 classes/class.pmproemail.php:538
|
2044 |
-
#: classes/class.pmproemail.php:586
|
2045 |
-
#, php-format
|
2046 |
-
msgid "This membership will expire on %s."
|
2047 |
-
msgstr "Dette medlemskab udløber den %s."
|
2048 |
-
|
2049 |
-
#: classes/class.pmproemail.php:275 classes/class.pmproemail.php:263
|
2050 |
-
#: classes/class.pmproemail.php:265
|
2051 |
-
#, php-format
|
2052 |
-
msgid "Member Checkout for %s at %s"
|
2053 |
-
msgstr "Medlem gå til kassen ved %s hos %s"
|
2054 |
-
|
2055 |
-
#: classes/class.pmproemail.php:363 classes/class.pmproemail.php:342
|
2056 |
-
#: classes/class.pmproemail.php:345
|
2057 |
-
#, php-format
|
2058 |
-
msgid "Your billing information has been udpated at %s"
|
2059 |
-
msgstr "Dine betalings informationer er blevet opdateret hos %s"
|
2060 |
-
|
2061 |
-
#: classes/class.pmproemail.php:416 classes/class.pmproemail.php:386
|
2062 |
-
#: classes/class.pmproemail.php:390
|
2063 |
-
#, php-format
|
2064 |
-
msgid "Billing information has been udpated for %s at %s"
|
2065 |
-
msgstr "Betalings informationer er blevet opdateret ved %s hos %s"
|
2066 |
-
|
2067 |
-
#: classes/class.pmproemail.php:464 classes/class.pmproemail.php:425
|
2068 |
-
#: classes/class.pmproemail.php:430
|
2069 |
-
#, php-format
|
2070 |
-
msgid "Membership Payment Failed at %s"
|
2071 |
-
msgstr "Medlemsskabs Betaling Fejlet hos %s"
|
2072 |
-
|
2073 |
-
#: classes/class.pmproemail.php:510 classes/class.pmproemail.php:462
|
2074 |
-
#: classes/class.pmproemail.php:468
|
2075 |
-
#, php-format
|
2076 |
-
msgid "Membership Payment Failed For %s at %s"
|
2077 |
-
msgstr "Medlemsskat Betaling Fejlet for %s ved %s"
|
2078 |
-
|
2079 |
-
#: classes/class.pmproemail.php:557 classes/class.pmproemail.php:508
|
2080 |
-
#, php-format
|
2081 |
-
msgid "Credit Card on File Expiring Soon at %s"
|
2082 |
-
msgstr "Kreditkort udløber snart hos %s"
|
2083 |
-
|
2084 |
-
#: classes/class.pmproemail.php:605 classes/class.pmproemail.php:501
|
2085 |
-
#: classes/class.pmproemail.php:548
|
2086 |
-
#, php-format
|
2087 |
-
msgid "INVOICE for %s membership"
|
2088 |
-
msgstr "FAKTURA for %s medlemsskab"
|
2089 |
-
|
2090 |
-
#: classes/class.pmproemail.php:676 classes/class.pmproemail.php:563
|
2091 |
-
#: classes/class.pmproemail.php:611
|
2092 |
-
#, php-format
|
2093 |
-
msgid "Your trial at %s is ending soon"
|
2094 |
-
msgstr "Din prøveperiode ved %s ender snart"
|
2095 |
-
|
2096 |
-
#: classes/class.pmproemail.php:710 classes/class.pmproemail.php:596
|
2097 |
-
#: classes/class.pmproemail.php:645
|
2098 |
-
#, php-format
|
2099 |
-
msgid "Your membership at %s has ended"
|
2100 |
-
msgstr "Dit medlemskab hos %s er endt"
|
2101 |
-
|
2102 |
-
#: classes/class.pmproemail.php:735 classes/class.pmproemail.php:621
|
2103 |
-
#: classes/class.pmproemail.php:670
|
2104 |
-
#, php-format
|
2105 |
-
msgid "Your membership at %s will end soon"
|
2106 |
-
msgstr "Dit medlemsskab hos %s vil snart ende"
|
2107 |
-
|
2108 |
-
#: classes/class.pmproemail.php:755 classes/class.pmproemail.php:641
|
2109 |
-
#: classes/class.pmproemail.php:690
|
2110 |
-
#, php-format
|
2111 |
-
msgid "Your membership at %s has been changed"
|
2112 |
-
msgstr "Dit medlemsskab hos %s er belven ændret"
|
2113 |
-
|
2114 |
-
#: classes/class.pmproemail.php:759
|
2115 |
-
#, php-format
|
2116 |
-
msgid "The new level is %s."
|
2117 |
-
msgstr "Det nye niveau er %s."
|
2118 |
-
|
2119 |
-
#: classes/class.pmproemail.php:761 classes/class.pmproemail.php:647
|
2120 |
-
#: classes/class.pmproemail.php:696
|
2121 |
-
msgid "Your membership has been cancelled"
|
2122 |
-
msgstr "Dit medlskabskab er bleven annulleret"
|
2123 |
-
|
2124 |
-
#: classes/class.pmproemail.php:765 classes/class.pmproemail.php:803
|
2125 |
-
#: classes/class.pmproemail.php:651 classes/class.pmproemail.php:689
|
2126 |
-
#: classes/class.pmproemail.php:700 classes/class.pmproemail.php:738
|
2127 |
-
#, php-format
|
2128 |
-
msgid "This membership will expire on %s"
|
2129 |
-
msgstr "Dette medlemsskab ville udløbe hos %s"
|
2130 |
-
|
2131 |
-
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:807
|
2132 |
-
#: classes/class.pmproemail.php:655 classes/class.pmproemail.php:693
|
2133 |
-
#: classes/class.pmproemail.php:704 classes/class.pmproemail.php:742
|
2134 |
-
msgid "This membership does not expire"
|
2135 |
-
msgstr "Dette medlemsskab udløber ikke"
|
2136 |
-
|
2137 |
-
#: classes/class.pmproemail.php:793 classes/class.pmproemail.php:679
|
2138 |
-
#: classes/class.pmproemail.php:728
|
2139 |
-
#, php-format
|
2140 |
-
msgid "Membership for %s at %s has been changed"
|
2141 |
-
msgstr "Medlemsskab for %s hos %s er bleven ændret"
|
2142 |
-
|
2143 |
-
#: classes/class.pmproemail.php:797 classes/class.pmproemail.php:645
|
2144 |
-
#: classes/class.pmproemail.php:683 classes/class.pmproemail.php:694
|
2145 |
-
#: classes/class.pmproemail.php:732
|
2146 |
-
#, php-format
|
2147 |
-
msgid "The new level is %s. This membership is free"
|
2148 |
-
msgstr "Det nye niveau er %s. Dette medlemsskab er gratis"
|
2149 |
-
|
2150 |
-
#: classes/class.pmproemail.php:799
|
2151 |
-
msgid "Membership has been cancelled"
|
2152 |
-
msgstr "Medlemsskab er bleven annulleret"
|
2153 |
-
|
2154 |
-
#: classes/gateways/class.pmprogateway.php:55
|
2155 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:55
|
2156 |
-
#: classes/gateways/class.pmprogateway_check.php:60
|
2157 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:57
|
2158 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:27
|
2159 |
-
#: classes/gateways/class.pmprogateway_paypal.php:27
|
2160 |
-
msgid "Unknown error: Authorization failed."
|
2161 |
-
msgstr "Ukendt fejl: Godkendelse fejlet."
|
2162 |
-
|
2163 |
-
#: classes/gateways/class.pmprogateway.php:106
|
2164 |
-
#: classes/gateways/class.pmprogateway.php:111
|
2165 |
-
#: classes/gateways/class.pmprogateway.php:129
|
2166 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:106
|
2167 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:111
|
2168 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:128
|
2169 |
-
#: classes/gateways/class.pmprogateway_check.php:111
|
2170 |
-
#: classes/gateways/class.pmprogateway_check.php:116
|
2171 |
-
#: classes/gateways/class.pmprogateway_check.php:134
|
2172 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:108
|
2173 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:113
|
2174 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:131
|
2175 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:50
|
2176 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:55
|
2177 |
-
#: classes/gateways/class.pmprogateway_paypal.php:50
|
2178 |
-
msgid "Unknown error: Payment failed."
|
2179 |
-
msgstr "Ukendt fejl. Betaling fejlet."
|
2180 |
-
|
2181 |
-
#: classes/gateways/class.pmprogateway.php:113
|
2182 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:112
|
2183 |
-
#: classes/gateways/class.pmprogateway_check.php:118
|
2184 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:115
|
2185 |
-
msgid ""
|
2186 |
-
"A partial payment was made that we could not void. Please contact the site "
|
2187 |
-
"owner immediately to correct this."
|
2188 |
-
msgstr ""
|
2189 |
-
"Noget af betaling var sket, som vi ikke kunne stoppe. Kontakt venligst site "
|
2190 |
-
"admin med det sammme, for at få det rettet."
|
2191 |
-
|
2192 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:787
|
2193 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:788
|
2194 |
-
#: classes/gateways/class.pmprogateway_authorizenet.php:789
|
2195 |
-
msgid "Could not connect to Authorize.net"
|
2196 |
-
msgstr "Kunne ikke forbinde til Authorize.net"
|
2197 |
-
|
2198 |
-
#: classes/gateways/class.pmprogateway_braintree.php:61
|
2199 |
-
#: classes/gateways/class.pmprogateway_stripe.php:53
|
2200 |
-
msgid "Unknown error: Initial payment failed."
|
2201 |
-
msgstr "Ukendt fejl: Indledende betaling mislykkedes."
|
2202 |
-
|
2203 |
-
#: classes/gateways/class.pmprogateway_braintree.php:120
|
2204 |
-
msgid "Error during settlement:"
|
2205 |
-
msgstr "Fejl under afvikling:"
|
2206 |
-
|
2207 |
-
#: classes/gateways/class.pmprogateway_braintree.php:129
|
2208 |
-
msgid "Error during charge:"
|
2209 |
-
msgstr "Fejl under ændrening:"
|
2210 |
-
|
2211 |
-
#: classes/gateways/class.pmprogateway_braintree.php:198
|
2212 |
-
msgid "Failed to update customer."
|
2213 |
-
msgstr "Fejlet I at opdatere kunde."
|
2214 |
-
|
2215 |
-
#: classes/gateways/class.pmprogateway_braintree.php:246
|
2216 |
-
msgid "Failed to create customer."
|
2217 |
-
msgstr "Fejlret I at oprette kunde."
|
2218 |
-
|
2219 |
-
#: classes/gateways/class.pmprogateway_braintree.php:253
|
2220 |
-
msgid "Error creating customer record with Braintree:"
|
2221 |
-
msgstr "Fejl I at oprette en kunde rekord med Braintree:"
|
2222 |
-
|
2223 |
-
#: classes/gateways/class.pmprogateway_braintree.php:344
|
2224 |
-
#: classes/gateways/class.pmprogateway_braintree.php:345
|
2225 |
-
msgid "Error subscribing customer to plan with Braintree:"
|
2226 |
-
msgstr "Fejl i at abonnere kunde til plan med Braintree:"
|
2227 |
-
|
2228 |
-
#: classes/gateways/class.pmprogateway_braintree.php:359
|
2229 |
-
#: classes/gateways/class.pmprogateway_braintree.php:360
|
2230 |
-
msgid "Failed to subscribe with Braintree:"
|
2231 |
-
msgstr "Fejl i at abonnere med Braintree:"
|
2232 |
-
|
2233 |
-
#: classes/gateways/class.pmprogateway_braintree.php:397
|
2234 |
-
#: classes/gateways/class.pmprogateway_braintree.php:410
|
2235 |
-
#: classes/gateways/class.pmprogateway_braintree.php:417
|
2236 |
-
#: classes/gateways/class.pmprogateway_stripe.php:396
|
2237 |
-
#: classes/gateways/class.pmprogateway_braintree.php:398
|
2238 |
-
#: classes/gateways/class.pmprogateway_braintree.php:411
|
2239 |
-
#: classes/gateways/class.pmprogateway_braintree.php:418
|
2240 |
-
#: classes/gateways/class.pmprogateway_stripe.php:343
|
2241 |
-
#: classes/gateways/class.pmprogateway_stripe.php:344
|
2242 |
-
#: classes/gateways/class.pmprogateway_stripe.php:351
|
2243 |
-
#: classes/gateways/class.pmprogateway_stripe.php:353
|
2244 |
-
#: classes/gateways/class.pmprogateway_stripe.php:354
|
2245 |
-
#: classes/gateways/class.pmprogateway_stripe.php:361
|
2246 |
-
msgid "Could not find the subscription."
|
2247 |
-
msgstr "Kunne ikke finde abonnere."
|
2248 |
-
|
2249 |
-
#: classes/gateways/class.pmprogateway_payflowpro.php:57
|
2250 |
-
#: classes/gateways/class.pmprogateway_paypal.php:57
|
2251 |
-
msgid ""
|
2252 |
-
"A partial payment was made that we could not refund. Please contact the site "
|
2253 |
-
"owner immediately to correct this."
|
2254 |
-
msgstr ""
|
2255 |
-
"Noget af betaling gik igennem, men vi kunne ikke refundere beløbet. Kontakt "
|
2256 |
-
"venligst site admin med det samme, for at få det rettet."
|
2257 |
-
|
2258 |
-
#: classes/gateways/class.pmprogateway_paypal.php:385
|
2259 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:305
|
2260 |
-
#: classes/gateways/class.pmprogateway_paypalstandard.php:220
|
2261 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:301
|
2262 |
-
#: classes/gateways/class.pmprogateway_paypalstandard.php:216
|
2263 |
-
msgid ""
|
2264 |
-
"Please contact the site owner or cancel your subscription from within PayPal "
|
2265 |
-
"to make sure you are not charged going forward."
|
2266 |
-
msgstr ""
|
2267 |
-
"Kontakt venligst site admin eller annullere dit abonnement gennem PAyPal, "
|
2268 |
-
"for at være sikker på, at du ikke bliver trukket I betaling."
|
2269 |
-
|
2270 |
-
#: classes/gateways/class.pmprogateway_stripe.php:199
|
2271 |
-
#: classes/gateways/class.pmprogateway_stripe.php:190
|
2272 |
-
#: classes/gateways/class.pmprogateway_stripe.php:192
|
2273 |
-
msgid "Error creating customer record with Stripe:"
|
2274 |
-
msgstr "Fejl i at oprette kunde rekord med Stripe;"
|
2275 |
-
|
2276 |
-
#: classes/gateways/class.pmprogateway_stripe.php:302
|
2277 |
-
#: classes/gateways/class.pmprogateway_stripe.php:278
|
2278 |
-
#: classes/gateways/class.pmprogateway_stripe.php:279
|
2279 |
-
#: classes/gateways/class.pmprogateway_stripe.php:286
|
2280 |
-
msgid "Error creating plan with Stripe:"
|
2281 |
-
msgstr "Fejl I at oprette plan med Stripe:"
|
2282 |
-
|
2283 |
-
#: classes/gateways/class.pmprogateway_stripe.php:318
|
2284 |
-
#: classes/gateways/class.pmprogateway_stripe.php:294
|
2285 |
-
#: classes/gateways/class.pmprogateway_stripe.php:295
|
2286 |
-
#: classes/gateways/class.pmprogateway_stripe.php:302
|
2287 |
-
msgid "Error subscribing customer to plan with Stripe:"
|
2288 |
-
msgstr "Fejl I at abonnere kunde til plan med Stripe:"
|
2289 |
-
|
2290 |
-
#: classes/gateways/class.pmprogateway_stripe.php:383
|
2291 |
-
msgid "Could not cancel old subscription."
|
2292 |
-
msgstr "Kunne ikke annullere gammel abonnement."
|
2293 |
-
|
2294 |
-
#: includes/adminpages.php:47 includes/adminpages.php:100
|
2295 |
-
#: includes/adminpages.php:9 includes/adminpages.php:39
|
2296 |
-
#: includes/adminpages.php:93
|
2297 |
-
msgid "Memberships"
|
2298 |
-
msgstr "Medlemsskaber"
|
2299 |
-
|
2300 |
-
#: includes/adminpages.php:48 includes/adminpages.php:114
|
2301 |
-
#: includes/adminpages.php:10 includes/adminpages.php:49
|
2302 |
-
#: includes/adminpages.php:107
|
2303 |
-
msgid "Page Settings"
|
2304 |
-
msgstr "Side Indstilinger"
|
2305 |
-
|
2306 |
-
#: includes/adminpages.php:49 includes/adminpages.php:121
|
2307 |
-
#: includes/adminpages.php:11 includes/adminpages.php:54
|
2308 |
-
#: includes/adminpages.php:114
|
2309 |
-
msgid "Payment Settings"
|
2310 |
-
msgstr "Betalings Indstillinger"
|
2311 |
-
|
2312 |
-
#: includes/adminpages.php:54 includes/adminpages.php:156
|
2313 |
-
#: includes/adminpages.php:16 includes/adminpages.php:79
|
2314 |
-
#: includes/adminpages.php:149
|
2315 |
-
msgid "Reports"
|
2316 |
-
msgstr "Reporter"
|
2317 |
-
|
2318 |
-
#: includes/adminpages.php:56 includes/adminpages.php:170
|
2319 |
-
#: includes/adminpages.php:18 includes/adminpages.php:89
|
2320 |
-
#: includes/adminpages.php:163
|
2321 |
-
msgid "Discount Codes"
|
2322 |
-
msgstr "Rabat Kode"
|
2323 |
-
|
2324 |
-
#: includes/currencies.php:7 includes/currencies.php:44
|
2325 |
-
#: includes/currencies.php:37
|
2326 |
-
msgid "US Dollars ($)"
|
2327 |
-
msgstr "US Dollar ($)"
|
2328 |
-
|
2329 |
-
#: includes/currencies.php:8 includes/currencies.php:47
|
2330 |
-
#: includes/currencies.php:40
|
2331 |
-
msgid "Euros (€)"
|
2332 |
-
msgstr "Euro (€)"
|
2333 |
-
|
2334 |
-
#: includes/currencies.php:9 includes/currencies.php:46
|
2335 |
-
#: includes/currencies.php:39
|
2336 |
-
msgid "Pounds Sterling (£)"
|
2337 |
-
msgstr "Pound Sterling (£)"
|
2338 |
-
|
2339 |
-
#: includes/currencies.php:10
|
2340 |
-
msgid "Australian Dollars ($)"
|
2341 |
-
msgstr "Australsk Dollar ($)"
|
2342 |
-
|
2343 |
-
#: includes/currencies.php:11
|
2344 |
-
msgid "Brazilian Real ($)"
|
2345 |
-
msgstr "Brasilian Real ($)"
|
2346 |
-
|
2347 |
-
#: includes/currencies.php:12 includes/currencies.php:45
|
2348 |
-
#: includes/currencies.php:38
|
2349 |
-
msgid "Canadian Dollars ($)"
|
2350 |
-
msgstr "Canadisk Dollar ($)"
|
2351 |
-
|
2352 |
-
#: includes/currencies.php:13
|
2353 |
-
msgid "Chinese Yuan"
|
2354 |
-
msgstr "Kinesisk Yuan"
|
2355 |
-
|
2356 |
-
#: includes/currencies.php:14 includes/currencies.php:13
|
2357 |
-
msgid "Czech Koruna"
|
2358 |
-
msgstr "Tjekkisk Koruna"
|
2359 |
-
|
2360 |
-
#: includes/currencies.php:15 includes/currencies.php:14
|
2361 |
-
msgid "Danish Krone"
|
2362 |
-
msgstr "Dansk Krone"
|
2363 |
-
|
2364 |
-
#: includes/currencies.php:16 includes/currencies.php:15
|
2365 |
-
msgid "Hong Kong Dollar ($)"
|
2366 |
-
msgstr "Kong Kong Dollar ($)"
|
2367 |
-
|
2368 |
-
#: includes/currencies.php:17 includes/currencies.php:16
|
2369 |
-
msgid "Hungarian Forint"
|
2370 |
-
msgstr "Ungarnsk Forint"
|
2371 |
-
|
2372 |
-
#: includes/currencies.php:18
|
2373 |
-
msgid "Indian Rupee"
|
2374 |
-
msgstr "Indisk Rupee"
|
2375 |
-
|
2376 |
-
#: includes/currencies.php:19
|
2377 |
-
msgid "Indonesia Rupiah"
|
2378 |
-
msgstr "Indonesien Rupiah"
|
2379 |
-
|
2380 |
-
#: includes/currencies.php:20 includes/currencies.php:17
|
2381 |
-
msgid "Israeli Shekel"
|
2382 |
-
msgstr "Isralsk Shekel"
|
2383 |
-
|
2384 |
-
#: includes/currencies.php:21 includes/currencies.php:18
|
2385 |
-
msgid "Japanese Yen (¥)"
|
2386 |
-
msgstr "Japansk Yen (¥)"
|
2387 |
-
|
2388 |
-
#: includes/currencies.php:22 includes/currencies.php:19
|
2389 |
-
msgid "Malaysian Ringgits"
|
2390 |
-
msgstr "Malaysisk Ringgits"
|
2391 |
-
|
2392 |
-
#: includes/currencies.php:23 includes/currencies.php:20
|
2393 |
-
msgid "Mexican Peso ($)"
|
2394 |
-
msgstr "Mexicansk Peso ($)"
|
2395 |
-
|
2396 |
-
#: includes/currencies.php:24 includes/currencies.php:21
|
2397 |
-
msgid "New Zealand Dollar ($)"
|
2398 |
-
msgstr "New Zealand Dollar (8#36;)"
|
2399 |
-
|
2400 |
-
#: includes/currencies.php:25 includes/currencies.php:22
|
2401 |
-
msgid "Norwegian Krone"
|
2402 |
-
msgstr "Norsk Krone"
|
2403 |
-
|
2404 |
-
#: includes/currencies.php:26 includes/currencies.php:23
|
2405 |
-
msgid "Philippine Pesos"
|
2406 |
-
msgstr "Filippinsk Pesos"
|
2407 |
-
|
2408 |
-
#: includes/currencies.php:27 includes/currencies.php:24
|
2409 |
-
msgid "Polish Zloty"
|
2410 |
-
msgstr "Polsk Zloty"
|
2411 |
-
|
2412 |
-
#: includes/currencies.php:28 includes/currencies.php:25
|
2413 |
-
msgid "Singapore Dollar ($)"
|
2414 |
-
msgstr "Singapore Dollar ($)"
|
2415 |
-
|
2416 |
-
#: includes/currencies.php:29
|
2417 |
-
msgid "South African Rand"
|
2418 |
-
msgstr "Syd Afrikansk Rand"
|
2419 |
-
|
2420 |
-
#: includes/currencies.php:30
|
2421 |
-
msgid "South Korean Won"
|
2422 |
-
msgstr "Syd Korea Won"
|
2423 |
-
|
2424 |
-
#: includes/currencies.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|