Paid Memberships Pro - Version 1.7.2.1

Version Description

  • Fixed warning when trying to load the "free" gateway on free level checkouts.
  • Fixed warning coming from login report tracking.
  • Changed all $wpdb->escape() calls to esc_sql() to fix notice.
  • Fixed another bug in revenue/sales report for daily charts. (backported to 1.7.2, but a few people who upgraded missed it)
  • Fixed bug on add/edit level page that was causing issues in some versions of IE.
  • Fixed bug where links in the email_header.html and email_footer.html templates were not being converted to true links.
  • Removed an extra $ from the PayPal Express confirmation emails.
  • Fixed loading of local (in the paid-memberships-pro/languages directory) translation files. (Should have some bundled with the plugin soon.)
Download this release

Release Info

Developer strangerstudios
Plugin Icon 128x128 Paid Memberships Pro
Version 1.7.2.1
Comparing to
See all releases

Code changes from version 1.7.14 to 1.7.2.1

Files changed (169) hide show
  1. adminpages/addons.php +1 -1
  2. adminpages/addons/images/pmpro-bbpress.jpg +0 -0
  3. adminpages/addons/images/pmpro-constant-contact.gif +0 -0
  4. adminpages/addons/images/pmpro-email-templates.gif +0 -0
  5. adminpages/addons/images/pmpro-woocommerce.gif +0 -0
  6. adminpages/addons/pmpro-addon-packages.php +2 -2
  7. adminpages/addons/pmpro-affiliates.php +2 -2
  8. adminpages/addons/pmpro-aweber.php +2 -2
  9. adminpages/addons/pmpro-bbpress.php +6 -9
  10. adminpages/addons/pmpro-constant-contact.php +0 -31
  11. adminpages/addons/pmpro-email-templates.php +0 -31
  12. adminpages/addons/pmpro-expiration.php +8 -10
  13. adminpages/addons/pmpro-freeaddress.php +5 -7
  14. adminpages/addons/pmpro-infusionsoft.php +4 -4
  15. adminpages/addons/pmpro-mailchimp.php +3 -3
  16. adminpages/addons/pmpro-network-subsite.php +0 -31
  17. adminpages/addons/pmpro-post-affiliate-pro.php +1 -1
  18. adminpages/addons/pmpro-register-helper.php +1 -1
  19. adminpages/addons/pmpro-series.php +1 -1
  20. adminpages/addons/pmpro-shipping.php +1 -1
  21. adminpages/addons/pmpro-stripe-lite.php +30 -0
  22. adminpages/addons/pmpro-user-pages.php +1 -1
  23. adminpages/addons/pmpro-woocommerce.php +0 -31
  24. adminpages/addons/pmpro-wp-affiliate.php +3 -5
  25. adminpages/addons/tml.php +1 -1
  26. adminpages/addons/wp-bouncer.php +2 -2
  27. adminpages/admin_header.php +1 -22
  28. adminpages/advancedsettings.php +12 -96
  29. adminpages/dashboard.php +2 -2
  30. adminpages/discountcodes.php +631 -636
  31. adminpages/emailsettings.php +152 -181
  32. adminpages/functions.php +3 -68
  33. adminpages/membershiplevels.php +12 -20
  34. adminpages/memberslist-csv.php +32 -95
  35. adminpages/memberslist.php +30 -58
  36. adminpages/orders-csv.php +19 -127
  37. adminpages/orders.php +9 -314
  38. adminpages/pagesettings.php +9 -51
  39. adminpages/paymentsettings.php +491 -538
  40. adminpages/reports.php +10 -25
  41. adminpages/reports/login.php +18 -18
  42. adminpages/reports/memberships.php +0 -651
  43. adminpages/reports/sales.php +50 -51
  44. classes/class.memberorder.php +16 -76
  45. classes/class.pmproemail.php +24 -102
  46. classes/gateways/class.pmprogateway.php +2 -21
  47. classes/gateways/class.pmprogateway_authorizenet.php +4 -3
  48. classes/gateways/class.pmprogateway_braintree.php +14 -13
  49. classes/gateways/class.pmprogateway_check.php +2 -2
  50. classes/gateways/class.pmprogateway_cybersource.php +0 -765
  51. classes/gateways/class.pmprogateway_payflowpro.php +20 -19
  52. classes/gateways/class.pmprogateway_paypal.php +12 -13
  53. classes/gateways/class.pmprogateway_paypalexpress.php +24 -67
  54. classes/gateways/class.pmprogateway_paypalstandard.php +17 -34
  55. classes/gateways/class.pmprogateway_stripe.php +33 -82
  56. classes/gateways/class.pmprogateway_twocheckout.php +0 -145
  57. css/admin-rtl.css +0 -63
  58. css/admin.css +6 -5
  59. css/frontend-rtl.css +0 -111
  60. css/frontend.css +86 -49
  61. email/billing.html +4 -1
  62. email/billing_failure.html +5 -1
  63. email/billing_failure_admin.html +5 -1
  64. email/checkout_check.html +1 -1
  65. email/checkout_freetrial.html +4 -1
  66. email/checkout_freetrial_admin.html +4 -1
  67. email/checkout_paid.html +4 -1
  68. email/checkout_paid_admin.html +4 -1
  69. email/checkout_trial.html +4 -1
  70. email/checkout_trial_admin.html +4 -1
  71. email/credit_card_expiring.html +3 -1
  72. email/invoice.html +6 -2
  73. includes/adminpages.php +66 -147
  74. includes/cleanup.php +12 -1
  75. includes/content.php +35 -70
  76. includes/currencies.php +2 -9
  77. includes/email.php +18 -50
  78. includes/filters.php +2 -40
  79. includes/functions.php +1608 -1742
  80. includes/https.php +18 -53
  81. includes/init.php +24 -69
  82. includes/lib/CyberSource/cyber_source_soap_client.php +0 -87
  83. includes/lib/Stripe/Stripe.php +0 -10
  84. includes/lib/Stripe/Stripe/Account.php +6 -5
  85. includes/lib/Stripe/Stripe/ApiRequestor.php +51 -153
  86. includes/lib/Stripe/Stripe/ApiResource.php +17 -51
  87. includes/lib/Stripe/Stripe/ApplicationFee.php +0 -53
  88. includes/lib/Stripe/Stripe/AttachedObject.php +0 -23
  89. includes/lib/Stripe/Stripe/Balance.php +0 -15
  90. includes/lib/Stripe/Stripe/BalanceTransaction.php +0 -39
  91. includes/lib/Stripe/Stripe/Card.php +0 -54
  92. includes/lib/Stripe/Stripe/CardError.php +2 -4
  93. includes/lib/Stripe/Stripe/Charge.php +7 -55
  94. includes/lib/Stripe/Stripe/Coupon.php +7 -24
  95. includes/lib/Stripe/Stripe/Customer.php +6 -61
  96. includes/lib/Stripe/Stripe/Error.php +7 -9
  97. includes/lib/Stripe/Stripe/Event.php +6 -12
  98. includes/lib/Stripe/Stripe/InvalidRequestError.php +2 -4
  99. includes/lib/Stripe/Stripe/Invoice.php +6 -30
  100. includes/lib/Stripe/Stripe/InvoiceItem.php +6 -24
  101. includes/lib/Stripe/Stripe/List.php +5 -25
  102. includes/lib/Stripe/Stripe/Object.php +12 -123
  103. includes/lib/Stripe/Stripe/Plan.php +6 -26
  104. includes/lib/Stripe/Stripe/Recipient.php +0 -75
  105. includes/lib/Stripe/Stripe/SingletonApiResource.php +0 -7
  106. includes/lib/Stripe/Stripe/Stripe.php +3 -49
  107. includes/lib/Stripe/Stripe/Subscription.php +0 -58
  108. includes/lib/Stripe/Stripe/Token.php +6 -12
  109. includes/lib/Stripe/Stripe/Transfer.php +6 -34
  110. includes/lib/Stripe/Stripe/Util.php +14 -42
  111. includes/lib/Twocheckout/Twocheckout.php +0 -31
  112. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutAccount.php +0 -25
  113. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutApi.php +0 -33
  114. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutCoupon.php +0 -42
  115. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutError.php +0 -14
  116. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutOption.php +0 -42
  117. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutPayment.php +0 -24
  118. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutProduct.php +0 -42
  119. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutSale.php +0 -104
  120. includes/lib/Twocheckout/Twocheckout/Api/TwocheckoutUtil.php +0 -72
  121. includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php +0 -61
  122. includes/lib/Twocheckout/Twocheckout/TwocheckoutMessage.php +0 -13
  123. includes/lib/Twocheckout/Twocheckout/TwocheckoutNotification.php +0 -20
  124. includes/lib/Twocheckout/Twocheckout/TwocheckoutReturn.php +0 -21
  125. includes/login.php +7 -31
  126. includes/metaboxes.php +2 -2
  127. includes/notifications.php +3 -9
  128. includes/profile.php +4 -4
  129. includes/services.php +1 -8
  130. includes/upgradecheck.php +4 -31
  131. includes/xmlrpc.php +0 -80
  132. languages/email/da_DK/admin_change.html +0 -7
  133. languages/email/da_DK/admin_change_admin.html +0 -5
  134. languages/email/da_DK/billing.html +0 -16
  135. languages/email/da_DK/billing_admin.html +0 -17
  136. languages/email/da_DK/billing_failure.html +0 -11
  137. languages/email/da_DK/billing_failure_admin.html +0 -11
  138. languages/email/da_DK/cancel.html +0 -3
  139. languages/email/da_DK/cancel_admin.html +0 -8
  140. languages/email/da_DK/checkout_check.html +0 -17
  141. languages/email/da_DK/checkout_check_admin.html +0 -17
  142. languages/email/da_DK/checkout_express.html +0 -14
  143. languages/email/da_DK/checkout_express_admin.html +0 -14
  144. languages/email/da_DK/checkout_free.html +0 -8
  145. languages/email/da_DK/checkout_free_admin.html +0 -8
  146. languages/email/da_DK/checkout_freetrial.html +0 -19
  147. languages/email/da_DK/checkout_freetrial_admin.html +0 -19
  148. languages/email/da_DK/checkout_paid.html +0 -23
  149. languages/email/da_DK/checkout_paid_admin.html +0 -23
  150. languages/email/da_DK/checkout_trial.html +0 -23
  151. languages/email/da_DK/checkout_trial_admin.html +0 -23
  152. languages/email/da_DK/credit_card_expiring.html +0 -13
  153. languages/email/da_DK/default.html +0 -1
  154. languages/email/da_DK/footer.html +0 -4
  155. languages/email/da_DK/header.html +0 -1
  156. languages/email/da_DK/invoice.html +0 -19
  157. languages/email/da_DK/membership_expired.html +0 -7
  158. languages/email/da_DK/membership_expiring.html +0 -6
  159. languages/email/da_DK/trial_ending.html +0 -8
  160. languages/gettext.sh +0 -23
  161. languages/pmpro-cs_CZ.mo +0 -0
  162. languages/pmpro-cs_CZ.po +0 -2889
  163. languages/pmpro-da_DK.mo +0 -0
  164. languages/pmpro-da_DK.po +0 -3502
  165. languages/pmpro-en_GB.mo +0 -0
  166. languages/pmpro-en_GB.po +0 -2661
  167. languages/pmpro-es_CL.mo +0 -0
  168. languages/pmpro-es_CL.po +0 -2662
  169. languages/pmpro-es_CL.pot +0 -1114
adminpages/addons.php CHANGED
@@ -1,6 +1,6 @@
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
  }
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.", "pmpro"));
6
  }
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-woocommerce.gif DELETED
Binary file
adminpages/addons/pmpro-addon-packages.php CHANGED
@@ -5,7 +5,7 @@
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
  )
@@ -22,7 +22,7 @@ function pmpro_addon_pmpro_addon_packages_widget($addon)
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 -->
5
  */
6
  pmpro_add_addon('github', array(
7
  'title' => 'PMPro Addon Packages',
8
+ 'version' => '.1.3',
9
  'widget' => 'pmpro_addon_pmpro_addon_packages_widget',
10
  'enabled' => function_exists('pmproap_post_meta')
11
  )
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://github.com/strangerstudios/pmpro-addon-packages/archive/master.zip" class="button button-primary">Download</a>
26
  <?php } ?>
27
  </div>
28
  </div> <!-- end info -->
adminpages/addons/pmpro-affiliates.php CHANGED
@@ -5,7 +5,7 @@
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
  )
@@ -22,7 +22,7 @@ function pmpro_addon_pmpro_affiliates_widget($addon)
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 -->
5
  */
6
  pmpro_add_addon('github', array(
7
  'title' => 'PMPro Affiliates',
8
+ 'version' => '.2.2',
9
  'widget' => 'pmpro_addon_pmpro_affiliates_widget',
10
  'enabled' => function_exists('pmpro_affiliates_dependencies')
11
  )
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="https://github.com/strangerstudios/pmpro-affiliates/archive/master.zip" class="button button-primary">Download</a>
26
  <?php } ?>
27
  </div>
28
  </div> <!-- end info -->
adminpages/addons/pmpro-aweber.php CHANGED
@@ -5,7 +5,7 @@
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
  )
@@ -19,7 +19,7 @@ function pmpro_addon_pmpro_aweber_widget($addon)
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 { ?>
5
  */
6
  pmpro_add_addon('thirdparty', array(
7
  'title' => 'PMPro AWeber Integration',
8
+ 'version' => '.2',
9
  'widget' => 'pmpro_addon_pmpro_aweber_widget',
10
  'enabled' => function_exists('pmproaw_init')
11
  )
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="https://github.com/strangerstudios/pmpro-aweber/" 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 { ?>
adminpages/addons/pmpro-bbpress.php CHANGED
@@ -3,28 +3,25 @@
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
3
  Addon: PMPro bbPress
4
  Slug: pmpro-bbpress
5
  */
6
+ pmpro_add_addon('gists', array(
7
  'title' => 'PMPro bbPress',
8
+ 'version' => '.1',
9
  'widget' => 'pmpro_addon_pmpro_bbpress_widget',
10
+ 'enabled' => function_exists('pmpro_check_forum')
11
  )
12
  );
13
 
14
  function pmpro_addon_pmpro_bbpress_widget($addon)
15
  {
16
  ?>
 
17
  <div class="info">
18
  <p>Locking down bbPress Forums by Membership Level and Forum ID.</p>
19
  <div class="actions">
20
  <?php if($addon['enabled']) { ?>
21
+ <a target="_blank" href="https://gist.github.com/strangerstudios/1633637" class="button">Enabled</a>
 
 
22
  <?php } else { ?>
23
+ <a target="_blank" href="https://gist.github.com/strangerstudios/1633637" class="button button-primary">View Gist</a>
24
+ <?php } ?>
25
  </div>
26
  </div> <!-- end info -->
27
  <?php
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-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 CHANGED
@@ -3,11 +3,11 @@
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
 
@@ -15,15 +15,13 @@ 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
3
  Addon: PMPro Expiration Date
4
  Slug: pmpro-expiration
5
  */
6
+ pmpro_add_addon('gists', array(
7
+ 'title' => 'PMPro Expiration Date',
8
+ 'version' => '.1',
9
  'widget' => 'pmpro_addon_pmpro_expiration_widget',
10
+ 'enabled' => function_exists('my_pmpro_checkout_level_specific_expiration')
11
  )
12
  );
13
 
15
  {
16
  ?>
17
  <div class="info">
18
+ <p>Set a specific expiration date for a Membership Level.</p>
19
  <div class="actions">
20
  <?php if($addon['enabled']) { ?>
21
+ <a target="_blank" href="https://gist.github.com/strangerstudios/5709300" class="button">Enabled</a>
 
 
22
  <?php } else { ?>
23
+ <a target="_blank" href="https://gist.github.com/strangerstudios/5709300" class="button button-primary">View Gist</a>
24
+ <?php } ?>
25
  </div>
26
  </div> <!-- end info -->
27
  <?php
adminpages/addons/pmpro-freeaddress.php CHANGED
@@ -3,9 +3,9 @@
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
  )
@@ -18,12 +18,10 @@ function pmpro_addon_pmpro_freerequire_widget($addon)
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
3
  Addon: PMPro Require Name and Address for Free Level
4
  Slug: pmpro-freerequire
5
  */
6
+ pmpro_add_addon('gists', array(
7
  'title' => 'PMPro Require Name/Address for Free Level',
8
+ 'version' => '.1',
9
  'widget' => 'pmpro_addon_pmpro_freerequire_widget',
10
  'enabled' => function_exists('my_pmpro_checkout_boxes_require_address')
11
  )
18
  <p>Require name/address for free Membership Level checkout.</p>
19
  <div class="actions">
20
  <?php if($addon['enabled']) { ?>
21
+ <a target="_blank" href="https://gist.github.com/strangerstudios/5716249" class="button">Enabled</a>
 
 
22
  <?php } else { ?>
23
+ <a target="_blank" href="https://gist.github.com/strangerstudios/5716249" class="button button-primary">View Gist</a>
24
+ <?php } ?>
25
  </div>
26
  </div> <!-- end info -->
27
  <?php
adminpages/addons/pmpro-infusionsoft.php CHANGED
@@ -5,7 +5,7 @@
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
  )
@@ -19,12 +19,12 @@ function pmpro_addon_pmpro_infusionsoft_widget($addon)
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
5
  */
6
  pmpro_add_addon('thirdparty', array(
7
  'title' => 'PMPro Infusionsoft Integration',
8
+ 'version' => '.1',
9
  'widget' => 'pmpro_addon_pmpro_infusionsoft_widget',
10
  'enabled' => function_exists('pmprois_init')
11
  )
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="https://github.com/strangerstudios/pmpro-infusionsoft/" 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="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-infusionsoft.zip" class="button button-primary">Download</a>
27
+ <?php } ?>
28
  </div>
29
  </div> <!-- end info -->
30
  <?php
adminpages/addons/pmpro-mailchimp.php CHANGED
@@ -5,7 +5,7 @@
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
  )
@@ -19,12 +19,12 @@ function pmpro_addon_pmpro_mailchimp_widget($addon)
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
5
  */
6
  pmpro_add_addon('thirdparty', array(
7
  'title' => 'PMPro MailChimp Integration',
8
+ 'version' => '.3.2',
9
  'widget' => 'pmpro_addon_pmpro_mailchimp_widget',
10
  'enabled' => function_exists('pmpromc_init')
11
  )
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="https://github.com/strangerstudios/pmpro-mailchimp/" 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
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-post-affiliate-pro.php CHANGED
@@ -5,7 +5,7 @@
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
  )
5
  */
6
  pmpro_add_addon('thirdparty', array(
7
  'title' => 'PMPro Post Affiliate Pro Integration',
8
+ 'version' => '.3',
9
  'widget' => 'pmpro_addon_pmpro_post_affiliate_pro_widget',
10
  'enabled' => function_exists('pap_pmpro_track_sale')
11
  )
adminpages/addons/pmpro-register-helper.php CHANGED
@@ -5,7 +5,7 @@
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
  )
5
  */
6
  pmpro_add_addon('github', array(
7
  'title' => 'PMPro Register Helper',
8
+ 'version' => '.5.2',
9
  'widget' => 'pmpro_addon_pmpro_register_helper_widget',
10
  'enabled' => class_exists('PMProRH_Field')
11
  )
adminpages/addons/pmpro-series.php CHANGED
@@ -5,7 +5,7 @@
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
  )
5
  */
6
  pmpro_add_addon('github', array(
7
  'title' => 'PMPro Series',
8
+ 'version' => '.2',
9
  'widget' => 'pmpro_addon_pmpro_series_widget',
10
  'enabled' => class_exists("PMProSeries")
11
  )
adminpages/addons/pmpro-shipping.php CHANGED
@@ -5,7 +5,7 @@
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
  )
5
  */
6
  pmpro_add_addon('github', array(
7
  'title' => 'PMPro Shipping Add On',
8
+ 'version' => '.2.2.1',
9
  'widget' => 'pmpro_addon_pmpro_shipping_widget',
10
  'enabled' => function_exists('pmproship_pmpro_checkout_boxes')
11
  )
adminpages/addons/pmpro-stripe-lite.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Addon: PMPro Stripe Lite
4
+ Slug: pmpro-stripe-lite
5
+ */
6
+ pmpro_add_addon('github', array(
7
+ 'title' => 'PMPro Stripe Lite',
8
+ 'version' => '.1.1',
9
+ 'widget' => 'pmpro_addon_pmpro_stripe_lite_widget',
10
+ 'enabled' => function_exists('pmprosl_pmpro_pages_shortcode_checkout')
11
+ )
12
+ );
13
+
14
+ function pmpro_addon_pmpro_stripe_lite_widget($addon)
15
+ {
16
+ ?>
17
+ <div class="info">
18
+ <p>Remove billing fields (not required by Stripe) from the checkout page when using the Stripe payment gateway with PMPro.</p>
19
+ <div class="actions">
20
+ <?php if($addon['enabled']) { ?>
21
+ <a href="https://github.com/strangerstudios/pmpro-stripe-lite/blob/master/readme.txt" class="button">Enabled</a>
22
+ <?php } elseif(file_exists(dirname(__FILE__) . "/../../../pmpro-stripe-lite/pmpro-stripe-lite.php")) { ?>
23
+ <a href="<?php echo wp_nonce_url(self_admin_url('plugins.php?action=activate&plugin=pmpro-stripe-lite/pmpro-stripe-lite.php'), 'activate-plugin_pmpro-stripe-lite/pmpro-stripe-lite.php')?>" class="button button-primary">Activate</a>
24
+ <?php } else { ?>
25
+ <a href="http://www.paidmembershipspro.com/wp-content/uploads/plugins/pmpro-stripe-lite.zip" class="button button-primary">Download</a>
26
+ <?php } ?>
27
+ </div>
28
+ </div> <!-- end info -->
29
+ <?php
30
+ }
adminpages/addons/pmpro-user-pages.php CHANGED
@@ -14,7 +14,7 @@ pmpro_add_addon('github', array(
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']) { ?>
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']) { ?>
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 CHANGED
@@ -19,12 +19,10 @@ function pmpro_addon_pmpro_wp_affiliate_widget($addon)
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
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 target="_blank" href="https://gist.github.com/strangerstudios/3137539" class="button">Enabled</a>
 
 
23
  <?php } else { ?>
24
+ <a target="_blank" href="https://gist.github.com/strangerstudios/3137539" class="button button-primary">View Gist</a>
25
+ <?php } ?>
26
  </div>
27
  </div> <!-- end info -->
28
  <?php
adminpages/addons/tml.php CHANGED
@@ -7,7 +7,7 @@ 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
 
7
  'title' => 'Theme My Login',
8
  'widget' => 'pmpro_addon_tml_widget',
9
  'enabled' => class_exists('Theme_My_Login'),
10
+ 'version' => '6.3.8'
11
  )
12
  );
13
 
adminpages/addons/wp-bouncer.php CHANGED
@@ -5,7 +5,7 @@
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
  )
@@ -19,7 +19,7 @@ function pmpro_addon_wp_bouncer_widget($addon)
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 { ?>
5
  */
6
  pmpro_add_addon('repo', array(
7
  'title' => 'WP Bouncer',
8
+ 'version' => '1.0.1',
9
  'widget' => 'pmpro_addon_wp_bouncer_widget',
10
  'enabled' => class_exists('WP_Bouncer')
11
  )
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="https://github.com/strangerstudios/wp-bouncer/blob/master/readme.txt" 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 { ?>
adminpages/admin_header.php CHANGED
@@ -92,27 +92,6 @@
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 .= " " . __("The levels with issues are highlighted below.", "pmpro");
112
- else
113
- $msgt .= " <a href=\"?page=pmpro-membershiplevels\">" . __("Please edit your levels", "pmpro") . "</a>.";
114
- }
115
-
116
  if(!empty($msg))
117
  {
118
  ?>
@@ -124,7 +103,7 @@
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/Paid-Memberships-Pro.png" width="350" height="75" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
127
- <div class="pmpro_meta"><span class="pmpro_tag-grey">v<?php echo PMPRO_VERSION?></span><a target="_blank" class="pmpro_tag-blue" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><?php _e('Plugin Support', 'pmpro');?></a><a target="_blank" class="pmpro_tag-blue" href="http://www.paidmembershipspro.com/forums/"><?php _e('User Forum', 'pmpro');?></a></div>
128
 
129
  <br style="clear:both;" />
130
  </div>
92
  $msgt .= " <a href=\"?page=pmpro-membershiplevels\">" . __("Please edit your levels", "pmpro") . "</a>.";
93
  }
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  if(!empty($msg))
96
  {
97
  ?>
103
  <div class="wrap pmpro_admin">
104
  <div class="pmpro_banner">
105
  <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/Paid-Memberships-Pro.png" width="350" height="75" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
106
+ <div class="pmpro_meta"><span class="pmpro_tag-grey">v<?php echo PMPRO_VERSION?></span><a class="pmpro_tag-blue" href="<?php echo pmpro_https_filter("http://www.paidmembershipspro.com")?>"><?php _e('Plugin Support', 'pmpro');?></a><a class="pmpro_tag-blue" href="http://www.paidmembershipspro.com/forums/"><?php _e('User Forum', 'pmpro');?></a></div>
107
 
108
  <br style="clear:both;" />
109
  </div>
adminpages/advancedsettings.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  //only admins can get this
3
- if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_advancedsettings")))
4
  {
5
  die(__("You do not have permissions to perform this action.", "pmpro"));
6
  }
@@ -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,13 +29,6 @@
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;
@@ -47,7 +39,6 @@
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 = sprintf( __( 'This content is for !!levels!! members only. <a href="%s">Register here</a>.', 'pmpro' ), wp_login_url() . "?action=register" );
69
  pmpro_setOption("nonmembertext", $nonmembertext);
70
  }
71
  if(!$notloggedintext)
72
  {
73
- $notloggedintext = sprintf( __( 'Please <a href="%s">login</a> to view this content. (<a href="%s">Register here</a>.)', 'pmpro' ), wp_login_url( get_permalink() ), wp_login_url() . "?action=register" );
74
  pmpro_setOption("notloggedintext", $notloggedintext);
75
  }
76
  if(!$rsstext)
77
  {
78
- $rsstext = __( 'This content is for members only. Visit the site and log in/register to read.', 'pmpro' );
79
  pmpro_setOption("rsstext", $rsstext);
80
  }
81
 
@@ -119,27 +110,16 @@
119
 
120
  <tr>
121
  <th scope="row" valign="top">
122
- <label for="filterqueries"><?php _e("Filter searches and archives?", 'pmpro');?></label>
123
  </th>
124
  <td>
125
- <select id="filterqueries" name="filterqueries">
126
- <option value="0" <?php if(!$filterqueries) { ?>selected="selected"<?php } ?>><?php _e('No - Non-members will see restricted posts/pages in searches and archives.', 'pmpro');?></option>
127
- <option value="1" <?php if($filterqueries == 1) { ?>selected="selected"<?php } ?>><?php _e('Yes - Only members will see restricted posts/pages in searches and archives.', 'pmpro');?></option>
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>
@@ -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 button-primary" value="<?php _e('Save Settings', 'pmpro');?>" />
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.", "pmpro"));
6
  }
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;
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
 
110
 
111
  <tr>
112
  <th scope="row" valign="top">
113
+ <label for="showexcerpts"><?php _e('Show Excerpts to Non-Members?', 'pmpro');?></label>
114
  </th>
115
  <td>
116
+ <select id="showexcerpts" name="showexcerpts">
117
+ <option value="0" <?php if(!$showexcerpts) { ?>selected="selected"<?php } ?>><?php _e('No - Hide excerpts.', 'pmpro');?></option>
118
+ <option value="1" <?php if($showexcerpts == 1) { ?>selected="selected"<?php } ?>><?php _e('Yes - Show excerpts.', 'pmpro');?></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>
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="<?php _e('Save Settings', 'pmpro');?>" />
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 target="_blank" href="'.$pmpro_feed.'"><img src="'.get_bloginfo('wpurl').'/wp-includes/images/rss.png" alt=""/> Subscribe with RSS</a>';
109
  echo ' &nbsp; &nbsp; &nbsp; ';
110
- echo '<a target="_blank" href="http://www.paidmembershipspro.com/blog/">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
  }
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 ' &nbsp; &nbsp; &nbsp; ';
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,631 @@
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.", "pmpro"));
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, current_time("timestamp")));
40
- $expires = date("Y-m-d", strtotime($expires_month . "/" . $expires_day . "/" . $expires_year, current_time("timestamp")));
41
-
42
- //updating or new?
43
- if($saveid > 0)
44
- {
45
- $sqlQuery = "UPDATE $wpdb->pmpro_discount_codes SET code = '" . esc_sql($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.", "pmpro");
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.", "pmpro");
56
- $pmpro_msgt = "error";
57
- }
58
- }
59
- else
60
- {
61
- $sqlQuery = "INSERT INTO $wpdb->pmpro_discount_codes (code, starts, expires, uses) VALUES('" . esc_sql($code) . "', '" . $starts . "', '" . $expires . "', '" . intval($uses) . "')";
62
- if($wpdb->query($sqlQuery) !== false)
63
- {
64
- $pmpro_msg = __("Discount code added successfully.", "pmpro");
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.", "pmpro") . $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('" . esc_sql($edit) . "', '" . esc_sql($level_id) . "', '" . (double)esc_sql($initial_payment) . "', '" . (double)esc_sql($billing_amount) . "', '" . intval(esc_sql($cycle_number)) . "', '" . esc_sql($cycle_period) . "', '" . intval(esc_sql($billing_limit)) . "', '" . (double)esc_sql($trial_amount) . "', '" . intval(esc_sql($trial_limit)) . "', '" . intval(esc_sql($expiration_number)) . "', '" . esc_sql($expiration_period) . "')";
188
-
189
- if($wpdb->query($sqlQuery) !== false)
190
- {
191
- //okay
192
- do_action("pmpro_save_discount_code_level", $edit, $level_id);
193
- }
194
- else
195
- {
196
- $level_errors[] = sprintf(__("Error saving values for the %s level.", "pmpro"), $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1"));
197
- }
198
- }
199
- }
200
-
201
- //errors?
202
- if(!empty($level_errors))
203
- {
204
- $pmpro_msg = __("There were errors updating the level values: ", "pmpro") . 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
- //action
225
- do_action("pmpro_delete_discount_code", $delete);
226
-
227
- //delete the code levels
228
- $r1 = $wpdb->query("DELETE FROM $wpdb->pmpro_discount_codes_levels WHERE code_id = '" . $delete . "'");
229
-
230
- if($r1 !== false)
231
- {
232
- //delete the code
233
- $r2 = $wpdb->query("DELETE FROM $wpdb->pmpro_discount_codes WHERE id = '" . $delete . "' LIMIT 1");
234
-
235
- if($r2 !== false)
236
- {
237
- $pmpro_msg = sprintf(__("Code %s deleted successfully.", "pmpro"), $code);
238
- $pmpro_msgt = "success";
239
- }
240
- else
241
- {
242
- $pmpro_msg = __("Error deleting discount code. The code was only partially deleted. Please try again.", "pmpro");
243
- $pmpro_msgt = "error";
244
- }
245
- }
246
- else
247
- {
248
- $pmpro_msg = __("Error deleting code. Please try again.", "pmpro");
249
- $pmpro_msgt = "error";
250
- }
251
- }
252
- else
253
- {
254
- $pmpro_msg = __("Code not found.", "pmpro");
255
- $pmpro_msgt = "error";
256
- }
257
- }
258
-
259
- require_once(dirname(__FILE__) . "/admin_header.php");
260
- ?>
261
-
262
- <?php if($edit) { ?>
263
-
264
- <h2>
265
- <?php
266
- if($edit > 0)
267
- echo __("Edit Discount Code", "pmpro");
268
- else
269
- echo __("Add New Discount Code", "pmpro");
270
- ?>
271
- </h2>
272
-
273
- <?php if(!empty($pmpro_msg)) { ?>
274
- <div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
275
- <?php } ?>
276
-
277
- <div>
278
- <?php
279
- // get the code...
280
- if($edit > 0)
281
- {
282
- $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);
283
- $uses = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $code->id . "'");
284
- $levels = $wpdb->get_results("SELECT l.id, l.name, cl.initial_payment, cl.billing_amount, cl.cycle_number, cl.cycle_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 . "'");
285
- $temp_id = $code->id;
286
- }
287
- elseif(!empty($copy) && $copy > 0)
288
- {
289
- $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);
290
- $temp_id = $level->id;
291
- $level->id = NULL;
292
- }
293
-
294
- // didn't find a discount code, let's add a new one...
295
- if(empty($code->id)) $edit = -1;
296
-
297
- //defaults for new codes
298
- if($edit == -1)
299
- {
300
- $code = new stdClass();
301
- $code->code = pmpro_getDiscountCode();
302
- }
303
- ?>
304
- <form action="" method="post">
305
- <input name="saveid" type="hidden" value="<?php echo $edit?>" />
306
- <table class="form-table">
307
- <tbody>
308
- <tr>
309
- <th scope="row" valign="top"><label><?php _e('ID', 'pmpro');?>:</label></th>
310
- <td class="pmpro_lite"><?php if(!empty($code->id)) echo $code->id; else echo __("This will be generated when you save.", "pmpro");?></td>
311
- </tr>
312
-
313
- <tr>
314
- <th scope="row" valign="top"><label for="code"><?php _e('Code', 'pmpro');?>:</label></th>
315
- <td><input name="code" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($code->code))?>" /></td>
316
- </tr>
317
-
318
- <?php
319
- //some vars for the dates
320
- $current_day = date("j");
321
- if(!empty($code->starts))
322
- $selected_starts_day = date("j", $code->starts);
323
- else
324
- $selected_starts_day = $current_day;
325
- if(!empty($code->expires))
326
- $selected_expires_day = date("j", $code->expires);
327
- else
328
- $selected_expires_day = $current_day;
329
-
330
- $current_month = date("M");
331
- if(!empty($code->starts))
332
- $selected_starts_month = date("m", $code->starts);
333
- else
334
- $selected_starts_month = date("m");
335
- if(!empty($code->expires))
336
- $selected_expires_month = date("m", $code->expires);
337
- else
338
- $selected_expires_month = date("m");
339
-
340
- $current_year = date("Y");
341
- if(!empty($code->starts))
342
- $selected_starts_year = date("Y", $code->starts);
343
- else
344
- $selected_starts_year = $current_year;
345
- if(!empty($code->expires))
346
- $selected_expires_year = date("Y", $code->expires);
347
- else
348
- $selected_expires_year = (int)$current_year + 1;
349
- ?>
350
-
351
- <tr>
352
- <th scope="row" valign="top"><label for="starts"><?php _e('Start Date', 'pmpro');?>:</label></th>
353
- <td>
354
- <select name="starts_month">
355
- <?php
356
- for($i = 1; $i < 13; $i++)
357
- {
358
- ?>
359
- <option value="<?php echo $i?>" <?php if($i == $selected_starts_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $current_year, current_time("timestamp")))?></option>
360
- <?php
361
- }
362
- ?>
363
- </select>
364
- <input name="starts_day" type="text" size="2" value="<?php echo $selected_starts_day?>" />
365
- <input name="starts_year" type="text" size="4" value="<?php echo $selected_starts_year?>" />
366
- </td>
367
- </tr>
368
-
369
- <tr>
370
- <th scope="row" valign="top"><label for="expires"><?php _e('Expiration Date', 'pmpro');?>:</label></th>
371
- <td>
372
- <select name="expires_month">
373
- <?php
374
- for($i = 1; $i < 13; $i++)
375
- {
376
- ?>
377
- <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>
378
- <?php
379
- }
380
- ?>
381
- </select>
382
- <input name="expires_day" type="text" size="2" value="<?php echo $selected_expires_day?>" />
383
- <input name="expires_year" type="text" size="4" value="<?php echo $selected_expires_year?>" />
384
- </td>
385
- </tr>
386
-
387
- <tr>
388
- <th scope="row" valign="top"><label for="uses"><?php _e('Uses', 'pmpro');?>:</label></th>
389
- <td>
390
- <input name="uses" type="text" size="10" value="<?php if(!empty($code->uses)) echo str_replace("\"", "&quot;", stripslashes($code->uses));?>" />
391
- <small class="pmpro_lite"><?php _e('Leave blank for unlimited uses.', 'pmpro');?></small>
392
- </td>
393
- </tr>
394
-
395
- </tbody>
396
- </table>
397
-
398
- <?php do_action("pmpro_discount_code_after_settings"); ?>
399
-
400
- <h3><?php _e('Which Levels Will This Code Apply To?', 'pmpro'); ?></h3>
401
-
402
- <div class="pmpro_discount_levels">
403
- <?php
404
- $levels = $wpdb->get_results("SELECT * FROM $wpdb->pmpro_membership_levels");
405
- foreach($levels as $level)
406
- {
407
- //if this level is already managed for this discount code, use the code values
408
- if($edit > 0)
409
- {
410
- $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");
411
- if($code_level)
412
- {
413
- $level = $code_level;
414
- $level->checked = true;
415
- }
416
- else
417
- $level_checked = false;
418
- }
419
- else
420
- $level_checked = false;
421
- ?>
422
- <div>
423
- <input type="hidden" name="all_levels[]" value="<?php echo $level->id?>" />
424
- <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();" />
425
- <?php echo $level->name?>
426
- <div class="pmpro_discount_levels_pricing level_<?php echo $level->id?>" <?php if(empty($level->checked)) { ?>style="display: none;"<?php } ?>>
427
- <table class="form-table">
428
- <tbody>
429
- <tr>
430
- <th scope="row" valign="top"><label for="initial_payment"><?php _e('Initial Payment', 'pmpro');?>:</label></th>
431
- <td><?php echo $pmpro_currency_symbol?><input name="initial_payment[]" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->initial_payment))?>" /> <small><?php _e('The initial amount collected at registration.', 'pmpro');?></small></td>
432
- </tr>
433
-
434
- <tr>
435
- <th scope="row" valign="top"><label><?php _e('Recurring Subscription', 'pmpro');?>:</label></th>
436
- <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><?php _e('Check if this level has a recurring subscription payment.', 'pmpro');?></small></td>
437
- </tr>
438
-
439
- <tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
440
- <th scope="row" valign="top"><label for="billing_amount"><?php _e('Billing Amount', 'pmpro');?>:</label></th>
441
- <td>
442
- <?php echo $pmpro_currency_symbol?><input name="billing_amount[]" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->billing_amount))?>" /> <small>per</small>
443
- <input name="cycle_number[]" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->cycle_number))?>" />
444
- <select name="cycle_period[]" onchange="updateCyclePeriod();">
445
- <?php
446
- $cycles = array( __('Day(s)', 'pmpro') => 'Day', __('Week(s)', 'pmpro') => 'Week', __('Month(s)', 'pmpro') => 'Month', __('Year(s)', 'pmpro') => 'Year' );
447
- foreach ( $cycles as $name => $value ) {
448
- echo "<option value='$value'";
449
- if ( $level->cycle_period == $value ) echo " selected='selected'";
450
- echo ">$name</option>";
451
- }
452
- ?>
453
- </select>
454
- <br /><small><?php _e('The amount to be billed one cycle after the initial payment.', 'pmpro');?></small>
455
- </td>
456
- </tr>
457
-
458
- <tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
459
- <th scope="row" valign="top"><label for="billing_limit"><?php _e('Billing Cycle Limit', 'pmpro');?>:</label></th>
460
- <td>
461
- <input name="billing_limit[]" type="text" size="20" value="<?php echo $level->billing_limit?>" />
462
- <br /><small><?php _e('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.', 'pmpro');?></small>
463
- </td>
464
- </tr>
465
-
466
- <tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
467
- <th scope="row" valign="top"><label><?php _e('Custom Trial', 'pmpro');?>:</label></th>
468
- <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();" /> <?php _e('Check to add a custom trial period.', 'pmpro');?></td>
469
- </tr>
470
-
471
- <tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
472
- <th scope="row" valign="top"><label for="trial_amount"><?php _e('Trial Billing Amount', 'pmpro');?>:</label></th>
473
- <td>
474
- <?php echo $pmpro_currency_symbol?><input name="trial_amount[]" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->trial_amount))?>" />
475
- <small><?php _e('for the first', 'pmpro');?></small>
476
- <input name="trial_limit[]" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->trial_limit))?>" />
477
- <small><?php _e('subscription payments', 'pmpro');?>.</small>
478
- </td>
479
- </tr>
480
-
481
- <tr>
482
- <th scope="row" valign="top"><label><?php _e('Membership Expiration', 'pmpro');?>:</label></th>
483
- <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();}" /> <?php _e('Check this to set when membership access expires.', 'pmpro');?></td>
484
- </tr>
485
-
486
- <tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
487
- <th scope="row" valign="top"><label for="billing_amount"><?php _e('Expires In', 'pmpro');?>:</label></th>
488
- <td>
489
- <input id="expiration_number" name="expiration_number[]" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->expiration_number))?>" />
490
- <select id="expiration_period" name="expiration_period[]">
491
- <?php
492
- $cycles = array( __('Day(s)', 'pmpro') => 'Day', __('Week(s)', 'pmpro') => 'Week', __('Month(s)', 'pmpro') => 'Month', __('Year(s)', 'pmpro') => 'Year' );
493
- foreach ( $cycles as $name => $value ) {
494
- echo "<option value='$value'";
495
- if ( $level->expiration_period == $value ) echo " selected='selected'";
496
- echo ">$name</option>";
497
- }
498
- ?>
499
- </select>
500
- <br /><small><?php _e('Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires.', 'pmpro');?></small>
501
- </td>
502
- </tr>
503
- </tbody>
504
- </table>
505
-
506
- <?php do_action("pmpro_discount_code_after_level_settings", $edit, $level); ?>
507
-
508
- </div>
509
- </div>
510
- <script>
511
-
512
- </script>
513
- <?php
514
- }
515
- ?>
516
- </div>
517
-
518
- <p class="submit topborder">
519
- <input name="save" type="submit" class="button button-primary" value="Save Code" />
520
- <input name="cancel" type="button" class="button button-secondary" value="Cancel" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-discountcodes')?>';" />
521
- </p>
522
- </form>
523
- </div>
524
-
525
- <?php } else { ?>
526
-
527
- <h2>
528
- <?php _e('Memberships Discount Codes', 'pmpro');?>
529
- <a href="admin.php?page=pmpro-discountcodes&edit=-1" class="add-new-h2"><?php _e('Add New Discount Code', 'pmpro');?></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
- <form id="posts-filter" method="get" action="">
537
- <p class="search-box">
538
- <label class="screen-reader-text" for="post-search-input"><?php _e('Search Discount Codes', 'pmpro');?>:</label>
539
- <input type="hidden" name="page" value="pmpro-discountcodes" />
540
- <input id="post-search-input" type="text" value="<?php if(!empty($s)) echo $s;?>" name="s" size="30" />
541
- <input class="button" type="submit" value="<?php _e('Search', 'pmpro');?>" id="search-submit "/>
542
- </p>
543
- </form>
544
-
545
- <br class="clear" />
546
- <?php
547
- $sqlQuery = "SELECT *, UNIX_TIMESTAMP(starts) as starts, UNIX_TIMESTAMP(expires) as expires FROM $wpdb->pmpro_discount_codes ";
548
- if(!empty($s))
549
- $sqlQuery .= "WHERE code LIKE '%$s%' ";
550
- $sqlQuery .= "ORDER BY id ASC";
551
-
552
- $codes = $wpdb->get_results($sqlQuery, OBJECT);
553
- ?>
554
- <table class="widefat">
555
- <thead>
556
- <tr>
557
- <th><?php _e('ID', 'pmpro');?></th>
558
- <th><?php _e('Code', 'pmpro');?></th>
559
- <th><?php _e('Starts', 'pmpro');?></th>
560
- <th><?php _e('Expires', 'pmpro');?></th>
561
- <th><?php _e('Uses', 'pmpro');?></th>
562
- <th><?php _e('Levels', 'pmpro');?></th>
563
- <?php do_action("pmpro_discountcodes_extra_cols_header", $codes);?>
564
- <th></th>
565
- <th></th>
566
- </tr>
567
- </thead>
568
- <tbody>
569
- <?php
570
- if(!$codes)
571
- {
572
- ?>
573
- <tr><td colspan="7" class="pmpro_pad20">
574
- <p><?php _e('Discount codes allow you to offer your memberships at discounted prices to select customers.', 'pmpro');?> <a href="admin.php?page=pmpro-discountcodes&edit=-1"><?php _e('Create your first discount code now', 'pmpro');?></a>.</p>
575
- </td></tr>
576
- <?php
577
- }
578
- else
579
- {
580
- foreach($codes as $code)
581
- {
582
- ?>
583
- <tr>
584
- <td><?php echo $code->id?></td>
585
- <td>
586
- <a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php echo $code->code?></a>
587
- </td>
588
- <td>
589
- <?php echo date(get_option('date_format'), $code->starts)?>
590
- </td>
591
- <td>
592
- <?php echo date(get_option('date_format'), $code->expires)?>
593
- </td>
594
- <td>
595
- <?php
596
- $uses = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $code->id . "'");
597
- if($code->uses > 0)
598
- echo "<strong>" . (int)$uses . "</strong>/" . $code->uses;
599
- else
600
- echo "<strong>" . (int)$uses . "</strong>/unlimited";
601
- ?>
602
- </td>
603
- <td>
604
- <?php
605
- $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 . "'";
606
- $levels = $wpdb->get_results($sqlQuery);
607
-
608
- $level_names = array();
609
- foreach($levels as $level)
610
- $level_names[] = "<a target=\"_blank\" href=\"" . pmpro_url("checkout", "?level=" . $level->id . "&discount_code=" . $code->code) . "\">" . $level->name . "</a>";
611
- if($level_names)
612
- echo implode(", ", $level_names);
613
- else
614
- echo "None";
615
- ?>
616
- </td>
617
- <?php do_action("pmpro_discountcodes_extra_cols_body", $code);?>
618
- <td>
619
- <a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php _e('edit', 'pmpro');?></a>
620
- </td>
621
- <td>
622
- <a href="javascript:askfirst('<?php printf(__('Are you sure you want to delete the %s discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', 'pmpro'), $code->code);?>', '?page=pmpro-discountcodes&delete=<?php echo $code->id?>'); void(0);"><?php _e('delete', 'pmpro');?></a>
623
- </td>
624
- </tr>
625
- <?php
626
- }
627
- }
628
- ?>
629
- </tbody>
630
- </table>
631
-
632
- <?php } ?>
633
-
634
- <?php
635
- require_once(dirname(__FILE__) . "/admin_footer.php");
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.", "pmpro"));
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 = '" . esc_sql($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.", "pmpro");
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.", "pmpro");
56
+ $pmpro_msgt = "error";
57
+ }
58
+ }
59
+ else
60
+ {
61
+ $sqlQuery = "INSERT INTO $wpdb->pmpro_discount_codes (code, starts, expires, uses) VALUES('" . esc_sql($code) . "', '" . $starts . "', '" . $expires . "', '" . intval($uses) . "')";
62
+ if($wpdb->query($sqlQuery) !== false)
63
+ {
64
+ $pmpro_msg = __("Discount code added successfully.", "pmpro");
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.", "pmpro") . $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('" . esc_sql($edit) . "', '" . esc_sql($level_id) . "', '" . (double)esc_sql($initial_payment) . "', '" . (double)esc_sql($billing_amount) . "', '" . intval(esc_sql($cycle_number)) . "', '" . esc_sql($cycle_period) . "', '" . intval(esc_sql($billing_limit)) . "', '" . (double)esc_sql($trial_amount) . "', '" . intval(esc_sql($trial_limit)) . "', '" . intval(esc_sql($expiration_number)) . "', '" . esc_sql($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[] = sprintf(__("Error saving values for the %s level.", "pmpro"), $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1"));
197
+ }
198
+ }
199
+ }
200
+
201
+ //errors?
202
+ if(!empty($level_errors))
203
+ {
204
+ $pmpro_msg = __("There were errors updating the level values: ", "pmpro") . 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 = sprintf(__("Code %s deleted successfully.", "pmpro"), $code);
235
+ $pmpro_msgt = "success";
236
+ }
237
+ else
238
+ {
239
+ $pmpro_msg = __("Error deleting discount code. The code was only partially deleted. Please try again.", "pmpro");
240
+ $pmpro_msgt = "error";
241
+ }
242
+ }
243
+ else
244
+ {
245
+ $pmpro_msg = __("Error deleting code. Please try again.", "pmpro");
246
+ $pmpro_msgt = "error";
247
+ }
248
+ }
249
+ else
250
+ {
251
+ $pmpro_msg = __("Code not found.", "pmpro");
252
+ $pmpro_msgt = "error";
253
+ }
254
+ }
255
+
256
+ require_once(dirname(__FILE__) . "/admin_header.php");
257
+ ?>
258
+
259
+ <?php if($edit) { ?>
260
+
261
+ <h2>
262
+ <?php
263
+ if($edit > 0)
264
+ echo __("Edit Discount Code", "pmpro");
265
+ else
266
+ echo __("Add New Discount Code", "pmpro");
267
+ ?>
268
+ </h2>
269
+
270
+ <?php if(!empty($pmpro_msg)) { ?>
271
+ <div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
272
+ <?php } ?>
273
+
274
+ <div>
275
+ <?php
276
+ // get the code...
277
+ if($edit > 0)
278
+ {
279
+ $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);
280
+ $uses = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $code->id . "'");
281
+ $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 . "'");
282
+ $temp_id = $code->id;
283
+ }
284
+ elseif(!empty($copy) && $copy > 0)
285
+ {
286
+ $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);
287
+ $temp_id = $level->id;
288
+ $level->id = NULL;
289
+ }
290
+
291
+ // didn't find a discount code, let's add a new one...
292
+ if(empty($code->id)) $edit = -1;
293
+
294
+ //defaults for new codes
295
+ if($edit == -1)
296
+ {
297
+ $code = new stdClass();
298
+ $code->code = pmpro_getDiscountCode();
299
+ }
300
+ ?>
301
+ <form action="" method="post">
302
+ <input name="saveid" type="hidden" value="<?php echo $edit?>" />
303
+ <table class="form-table">
304
+ <tbody>
305
+ <tr>
306
+ <th scope="row" valign="top"><label><?php _e('ID', 'pmpro');?>:</label></th>
307
+ <td class="pmpro_lite"><?php if(!empty($code->id)) echo $code->id; else echo __("This will be generated when you save.", "pmpro");?></td>
308
+ </tr>
309
+
310
+ <tr>
311
+ <th scope="row" valign="top"><label for="code"><?php _e('Code', 'pmpro');?>:</label></th>
312
+ <td><input name="code" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($code->code))?>" /></td>
313
+ </tr>
314
+
315
+ <?php
316
+ //some vars for the dates
317
+ $current_day = date("j");
318
+ if(!empty($code->starts))
319
+ $selected_starts_day = date("j", $code->starts);
320
+ else
321
+ $selected_starts_day = $current_day;
322
+ if(!empty($code->expires))
323
+ $selected_expires_day = date("j", $code->expires);
324
+ else
325
+ $selected_expires_day = $current_day;
326
+
327
+ $current_month = date("M");
328
+ if(!empty($code->starts))
329
+ $selected_starts_month = date("m", $code->starts);
330
+ else
331
+ $selected_starts_month = date("m");
332
+ if(!empty($code->expires))
333
+ $selected_expires_month = date("m", $code->expires);
334
+ else
335
+ $selected_expires_month = date("m");
336
+
337
+ $current_year = date("Y");
338
+ if(!empty($code->starts))
339
+ $selected_starts_year = date("Y", $code->starts);
340
+ else
341
+ $selected_starts_year = $current_year;
342
+ if(!empty($code->expires))
343
+ $selected_expires_year = date("Y", $code->expires);
344
+ else
345
+ $selected_expires_year = (int)$current_year + 1;
346
+ ?>
347
+
348
+ <tr>
349
+ <th scope="row" valign="top"><label for="starts"><?php _e('Start Date', 'pmpro');?>:</label></th>
350
+ <td>
351
+ <select name="starts_month">
352
+ <?php
353
+ for($i = 1; $i < 13; $i++)
354
+ {
355
+ ?>
356
+ <option value="<?php echo $i?>" <?php if($i == $selected_starts_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $current_year))?></option>
357
+ <?php
358
+ }
359
+ ?>
360
+ </select>
361
+ <input name="starts_day" type="text" size="2" value="<?php echo $selected_starts_day?>" />
362
+ <input name="starts_year" type="text" size="4" value="<?php echo $selected_starts_year?>" />
363
+ </td>
364
+ </tr>
365
+
366
+ <tr>
367
+ <th scope="row" valign="top"><label for="expires"><?php _e('Expiration Date', 'pmpro');?>:</label></th>
368
+ <td>
369
+ <select name="expires_month">
370
+ <?php
371
+ for($i = 1; $i < 13; $i++)
372
+ {
373
+ ?>
374
+ <option value="<?php echo $i?>" <?php if($i == $selected_expires_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $current_year))?></option>
375
+ <?php
376
+ }
377
+ ?>
378
+ </select>
379
+ <input name="expires_day" type="text" size="2" value="<?php echo $selected_expires_day?>" />
380
+ <input name="expires_year" type="text" size="4" value="<?php echo $selected_expires_year?>" />
381
+ </td>
382
+ </tr>
383
+
384
+ <tr>
385
+ <th scope="row" valign="top"><label for="uses"><?php _ex('Uses', 'Number of uses for a discount code', 'pmpro');?>:</label></th>
386
+ <td>
387
+ <input name="uses" type="text" size="10" value="<?php if(!empty($code->uses)) echo str_replace("\"", "&quot;", stripslashes($code->uses));?>" />
388
+ <small class="pmpro_lite"><?php _e('Leave blank for unlimited uses.', 'pmpro');?></small>
389
+ </td>
390
+ </tr>
391
+
392
+ </tbody>
393
+ </table>
394
+
395
+ <?php do_action("pmpro_discount_code_after_settings"); ?>
396
+
397
+ <h3>Which Levels Will This Code Apply To?</h3>
398
+
399
+ <div class="pmpro_discount_levels">
400
+ <?php
401
+ $levels = $wpdb->get_results("SELECT * FROM $wpdb->pmpro_membership_levels");
402
+ foreach($levels as $level)
403
+ {
404
+ //if this level is already managed for this discount code, use the code values
405
+ if($edit > 0)
406
+ {
407
+ $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");
408
+ if($code_level)
409
+ {
410
+ $level = $code_level;
411
+ $level->checked = true;
412
+ }
413
+ else
414
+ $level_checked = false;
415
+ }
416
+ else
417
+ $level_checked = false;
418
+ ?>
419
+ <div>
420
+ <input type="hidden" name="all_levels[]" value="<?php echo $level->id?>" />
421
+ <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();" />
422
+ <?php echo $level->name?>
423
+ <div class="pmpro_discount_levels_pricing level_<?php echo $level->id?>" <?php if(empty($level->checked)) { ?>style="display: none;"<?php } ?>>
424
+ <table class="form-table">
425
+ <tbody>
426
+ <tr>
427
+ <th scope="row" valign="top"><label for="initial_payment"><?php _e('Initial Payment', 'pmpro');?>:</label></th>
428
+ <td><?php echo $pmpro_currency_symbol?><input name="initial_payment[]" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->initial_payment))?>" /> <small><?php _e('The initial amount collected at registration.', 'pmpro');?></small></td>
429
+ </tr>
430
+
431
+ <tr>
432
+ <th scope="row" valign="top"><label><?php _e('Recurring Subscription', 'pmpro');?>:</label></th>
433
+ <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><?php _e('Check if this level has a recurring subscription payment.', 'pmpro');?></small></td>
434
+ </tr>
435
+
436
+ <tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
437
+ <th scope="row" valign="top"><label for="billing_amount"><?php _e('Billing Ammount', 'pmpro');?>:</label></th>
438
+ <td>
439
+ <?php echo $pmpro_currency_symbol?><input name="billing_amount[]" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->billing_amount))?>" /> <small>per</small>
440
+ <input name="cycle_number[]" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->cycle_number))?>" />
441
+ <select name="cycle_period[]" onchange="updateCyclePeriod();">
442
+ <?php
443
+ $cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
444
+ foreach ( $cycles as $name => $value ) {
445
+ echo "<option value='$value'";
446
+ if ( $level->cycle_period == $value ) echo " selected='selected'";
447
+ echo ">$name</option>";
448
+ }
449
+ ?>
450
+ </select>
451
+ <br /><small><?php _e('The amount to be billed one cycle after the initial payment.', 'pmpro');?></small>
452
+ </td>
453
+ </tr>
454
+
455
+ <tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
456
+ <th scope="row" valign="top"><label for="billing_limit"><?php _e('Billing Cycle Limit', 'pmpro');?>:</label></th>
457
+ <td>
458
+ <input name="billing_limit[]" type="text" size="20" value="<?php echo $level->billing_limit?>" />
459
+ <br /><small><?php _e('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.', 'pmpro');?></small>
460
+ </td>
461
+ </tr>
462
+
463
+ <tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
464
+ <th scope="row" valign="top"><label><?php _e('Custom Trial', 'pmpro');?>:</label></th>
465
+ <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();" /> <?php _e('Check to add a custom trial period.', 'pmpro');?></td>
466
+ </tr>
467
+
468
+ <tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
469
+ <th scope="row" valign="top"><label for="trial_amount"><?php _e('Trial Billing Amount', 'pmpro');?>:</label></th>
470
+ <td>
471
+ <?php echo $pmpro_currency_symbol?><input name="trial_amount[]" type="text" size="20" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->trial_amount))?>" />
472
+ <small><?php _e('for the first', 'pmpro');?></small>
473
+ <input name="trial_limit[]" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->trial_limit))?>" />
474
+ <small><?php _e('subscription payments', 'pmpro');?>.</small>
475
+ </td>
476
+ </tr>
477
+
478
+ <tr>
479
+ <th scope="row" valign="top"><label><?php _e('Membership Expiration', 'pmpro');?>:</label></th>
480
+ <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><?php _e('Check this to set an expiration date for new sign ups.', 'pmpro');?></small></td>
481
+ </tr>
482
+
483
+ <tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
484
+ <th scope="row" valign="top"><label for="billing_amount"><?php _e('Expires In', 'pmpro');?>:</label></th>
485
+ <td>
486
+ <input id="expiration_number" name="expiration_number[]" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->expiration_number))?>" />
487
+ <select id="expiration_period" name="expiration_period[]">
488
+ <?php
489
+ $cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
490
+ foreach ( $cycles as $name => $value ) {
491
+ echo "<option value='$value'";
492
+ if ( $level->expiration_period == $value ) echo " selected='selected'";
493
+ echo ">$name</option>";
494
+ }
495
+ ?>
496
+ </select>
497
+ <br /><small><?php _e('How long before the expiration expires. Note that any future payments will be cancelled when the membership expires.', 'pmpro');?></small>
498
+ </td>
499
+ </tr>
500
+ </tbody>
501
+ </table>
502
+
503
+ <?php do_action("pmpro_discount_code_after_level_settings", $edit, $level); ?>
504
+
505
+ </div>
506
+ </div>
507
+ <script>
508
+
509
+ </script>
510
+ <?php
511
+ }
512
+ ?>
513
+ </div>
514
+
515
+ <p class="submit topborder">
516
+ <input name="save" type="submit" class="button-primary" value="Save Code" />
517
+ <input name="cancel" type="button" value="Cancel" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-discountcodes')?>';" />
518
+ </p>
519
+ </form>
520
+ </div>
521
+
522
+ <?php } else { ?>
523
+
524
+ <h2>
525
+ <?php _e('Memberships Discount Codes', 'pmpro');?>
526
+ <a href="admin.php?page=pmpro-discountcodes&edit=-1" class="button add-new-h2"><?php _e('Add New Discount Code', 'pmpro');?></a>
527
+ </h2>
528
+
529
+ <?php if(!empty($pmpro_msg)) { ?>
530
+ <div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
531
+ <?php } ?>
532
+
533
+ <form id="posts-filter" method="get" action="">
534
+ <p class="search-box">
535
+ <label class="screen-reader-text" for="post-search-input"><?php _e('Search Discount Codes', 'pmpro');?>:</label>
536
+ <input type="hidden" name="page" value="pmpro-discountcodes" />
537
+ <input id="post-search-input" type="text" value="<?php if(!empty($s)) echo $s;?>" name="s" size="30" />
538
+ <input class="button" type="submit" value="<?php _e('Search', 'pmpro');?>" id="search-submit "/>
539
+ </p>
540
+ </form>
541
+
542
+ <br class="clear" />
543
+
544
+ <table class="widefat">
545
+ <thead>
546
+ <tr>
547
+ <th><?php _e('ID', 'pmpro');?></th>
548
+ <th><?php _e('Code', 'pmpro');?></th>
549
+ <th><?php _e('Starts', 'pmpro');?></th>
550
+ <th><?php _e('Expires', 'pmpro');?></th>
551
+ <th><?php _e('Uses', 'pmpro');?></th>
552
+ <th><?php _e('Levels', 'pmpro');?></th>
553
+ <th></th>
554
+ <th></th>
555
+ </tr>
556
+ </thead>
557
+ <tbody>
558
+ <?php
559
+ $sqlQuery = "SELECT *, UNIX_TIMESTAMP(starts) as starts, UNIX_TIMESTAMP(expires) as expires FROM $wpdb->pmpro_discount_codes ";
560
+ if(!empty($s))
561
+ $sqlQuery .= "WHERE code LIKE '%$s%' ";
562
+ $sqlQuery .= "ORDER BY id ASC";
563
+
564
+ $codes = $wpdb->get_results($sqlQuery, OBJECT);
565
+
566
+ if(!$codes)
567
+ {
568
+ ?>
569
+ <tr><td colspan="7" class="pmpro_pad20">
570
+ <p><?php _e('Discount codes allow you to offer your memberships at discounted prices to select customers.', 'pmpro');?> <a href="admin.php?page=pmpro-discountcodes&edit=-1"><?php _e('Create your first discount code now', 'pmpro');?></a>.</p>
571
+ </td></tr>
572
+ <?php
573
+ }
574
+ else
575
+ {
576
+ foreach($codes as $code)
577
+ {
578
+ ?>
579
+ <tr>
580
+ <td><?php echo $code->id?></td>
581
+ <td>
582
+ <a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php echo $code->code?></a>
583
+ </td>
584
+ <td>
585
+ <?php echo date(get_option('date_format'), $code->starts)?>
586
+ </td>
587
+ <td>
588
+ <?php echo date(get_option('date_format'), $code->expires)?>
589
+ </td>
590
+ <td>
591
+ <?php
592
+ $uses = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $code->id . "'");
593
+ if($code->uses > 0)
594
+ echo "<strong>" . (int)$uses . "</strong>/" . $code->uses;
595
+ else
596
+ echo "<strong>" . (int)$uses . "</strong>/unlimited";
597
+ ?>
598
+ </td>
599
+ <td>
600
+ <?php
601
+ $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 . "'";
602
+ $levels = $wpdb->get_results($sqlQuery);
603
+
604
+ $level_names = array();
605
+ foreach($levels as $level)
606
+ $level_names[] = "<a target=\"_blank\" href=\"" . pmpro_url("checkout", "?level=" . $level->id . "&discount_code=" . $code->code) . "\">" . $level->name . "</a>";
607
+ if($level_names)
608
+ echo implode(", ", $level_names);
609
+ else
610
+ echo "None";
611
+ ?>
612
+ </td>
613
+ <td>
614
+ <a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php _e('edit', 'pmpro');?></a>
615
+ </td>
616
+ <td>
617
+ <a href="javascript:askfirst('<?php printf(__('Are you sure you want to delete the %s discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', 'pmpro'), $code->code);?>', '?page=pmpro-discountcodes&delete=<?php echo $code->id?>'); void(0);"><?php _e('delete', 'pmpro');?></a>
618
+ </td>
619
+ </tr>
620
+ <?php
621
+ }
622
+ }
623
+ ?>
624
+ </tbody>
625
+ </table>
626
+
627
+ <?php } ?>
628
+
629
+ <?php
630
+ require_once(dirname(__FILE__) . "/admin_footer.php");
631
+ ?>
 
 
 
 
 
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(__("You do not have permissions to perform this action.", "pmpro"));
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
- pmpro_setOption("only_filter_pmpro_emails");
18
-
19
- pmpro_setOption("email_admin_checkout");
20
- pmpro_setOption("email_admin_changes");
21
- pmpro_setOption("email_admin_cancels");
22
- pmpro_setOption("email_admin_billing");
23
-
24
- pmpro_setOption("email_member_notification");
25
-
26
- //assume success
27
- $msg = true;
28
- $msgt = "Your email settings have been updated.";
29
- }
30
-
31
- $from_email = pmpro_getOption("from_email");
32
- $from_name = pmpro_getOption("from_name");
33
- $only_filter_pmpro_emails = pmpro_getOption("only_filter_pmpro_emails");
34
-
35
- $email_admin_checkout = pmpro_getOption("email_admin_checkout");
36
- $email_admin_changes = pmpro_getOption("email_admin_changes");
37
- $email_admin_cancels = pmpro_getOption("email_admin_cancels");
38
- $email_admin_billing = pmpro_getOption("email_admin_billing");
39
-
40
- $email_member_notification = pmpro_getOption("email_member_notification");
41
-
42
- if(empty($from_email))
43
- {
44
- $parsed = parse_url(home_url());
45
- $hostname = $parsed[host];
46
- $hostparts = split("\.", $hostname);
47
- $email_domain = $hostparts[count($hostparts) - 2] . "." . $hostparts[count($hostparts) - 1];
48
- $from_email = "wordpress@" . $email_domain;
49
- pmpro_setOption("from_email", $from_email);
50
- }
51
-
52
- if(empty($from_name))
53
- {
54
- $from_name = "WordPress";
55
- pmpro_setOption("from_name", $from_name);
56
- }
57
-
58
- // default from email wordpress@sitename
59
- $sitename = strtolower( $_SERVER['SERVER_NAME'] );
60
- if ( substr( $sitename, 0, 4 ) == 'www.' ) {
61
- $sitename = substr( $sitename, 4 );
62
- }
63
- $default_from_email = 'wordpress@' . $sitename;
64
-
65
- require_once(dirname(__FILE__) . "/admin_header.php");
66
- ?>
67
-
68
- <form action="" method="post" enctype="multipart/form-data">
69
- <h2><?php _e('Email Settings', 'pmpro');?></h2>
70
- <p><?php _e('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.', 'pmpro');?></p>
71
-
72
- <p><?php _e('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/documentation/member-communications/">Click here to learn more about Paid Memberships Pro emails</a>.', 'pmpro');?></p>
73
-
74
- <table class="form-table">
75
- <tbody>
76
- <tr>
77
- <th scope="row" valign="top">
78
- <label for="from_email"><?php _e('From Email', 'pmpro');?>:</label>
79
- </th>
80
- <td>
81
- <input type="text" name="from_email" size="60" value="<?php echo $from_email?>" />
82
- </td>
83
- </tr>
84
- <tr>
85
- <th scope="row" valign="top">
86
- <label for="from_name"><?php _e('From Name', 'pmpro');?>:</label>
87
- </th>
88
- <td>
89
- <input type="text" name="from_name" size="60" value="<?php echo $from_name?>" />
90
- </td>
91
- </tr>
92
- <tr>
93
- <th scope="row" valign="top">
94
- <label for="only_filter_pmpro_emails"><?php _e('Only Filter PMPro Emails?', 'pmpro');?>:</label>
95
- </th>
96
- <td>
97
- <input type="checkbox" id="only_filter_pmpro_emails" name="only_filter_pmpro_emails" value="1" <?php if(!empty($only_filter_pmpro_emails)) { ?>checked="checked"<?php } ?> />
98
- <?php _e('If unchecked, all emails from "WordPress &lt;' . $default_from_email . '&gt;" will be filtered to use the above settings.', 'pmpro');?>
99
- </td>
100
- </tr>
101
- </tbody>
102
- </table>
103
-
104
- <?php /* going to put something like this here in next version
105
- <h3><?php _e('Modify System-generated Email Templates', 'pmpro');?>:</h3>
106
- <?php
107
- if (function_exists('pmproet_scripts'))
108
- {
109
- _e('You have installed the PMPro Email Templates add on. <a href="' . admin_url('admin.php?page=pmpro-email-templates') . '">Click here to modify email templates</a>');
110
- }
111
- ?>
112
- <p><?php _e('To modify the subject line and body content of system generated emails, <a title="Paid Memberships Pro - Email Templates Plugin" target="_blank" href="' . wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=pmpro-email-templates-addon'), 'install-plugin_pmpro-email-templates-addon') . '">Install and Activate the PMPro Email Templates add on</a>.', 'pmpro'); ?></p>
113
- */ ?>
114
-
115
- <h3><?php _e('Send the site admin emails', 'pmpro');?>:</h3>
116
-
117
- <table class="form-table">
118
- <tbody>
119
- <tr>
120
- <th scope="row" valign="top">
121
- <label for="email_admin_checkout"><?php _e('Checkout', 'pmpro');?>:</label>
122
- </th>
123
- <td>
124
- <input type="checkbox" id="email_admin_checkout" name="email_admin_checkout" value="1" <?php if(!empty($email_admin_checkout)) { ?>checked="checked"<?php } ?> />
125
- <?php _e('when a member checks out.', 'pmpro');?>
126
- </td>
127
- </tr>
128
- <tr>
129
- <th scope="row" valign="top">
130
- <label for="email_admin_changes"><?php _e('Admin Changes', 'pmpro');?>:</label>
131
- </th>
132
- <td>
133
- <input type="checkbox" id="email_admin_changes" name="email_admin_changes" value="1" <?php if(!empty($email_admin_changes)) { ?>checked="checked"<?php } ?> />
134
- <?php _e('when an admin changes a user\'s membership level through the dashboard.', 'pmpro');?>
135
- </td>
136
- </tr>
137
- <tr>
138
- <th scope="row" valign="top">
139
- <label for="email_admin_cancels"><?php _e('Cancellation', 'pmpro');?>:</label>
140
- </th>
141
- <td>
142
- <input type="checkbox" id="email_admin_cancels" name="email_admin_cancels" value="1" <?php if(!empty($email_admin_cancels)) { ?>checked="checked"<?php } ?> />
143
- <?php _e('when a user cancels his or her account.', 'pmpro');?>
144
- </td>
145
- </tr>
146
- <tr>
147
- <th scope="row" valign="top">
148
- <label for="email_admin_billing"><?php _e('Bill Updates', 'pmpro');?>:</label>
149
- </th>
150
- <td>
151
- <input type="checkbox" id="email_admin_billing" name="email_admin_billing" value="1" <?php if(!empty($email_admin_billing)) { ?>checked="checked"<?php } ?> />
152
- <?php _e('when a user updates his or her billing information.', 'pmpro');?>
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.", "pmpro"));
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><?php _e('Email Settings', 'pmpro');?></h2>
61
+ <p><?php _e('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.', 'pmpro');?></p>
62
+
63
+ <p><?php _e('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/documentation/member-communications/">Click here to learn more about Paid Memberships Pro emails</a>.', 'pmpro');?></p>
64
+
65
+ <table class="form-table">
66
+ <tbody>
67
+ <tr>
68
+ <th scope="row" valign="top">
69
+ <label for="from_email"><?php _e('From Email', 'pmpro');?>:</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"><?php _e('From Name', 'pmpro');?>:</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><?php _e('Send the site admin emails', 'pmpro');?>:</h3>
87
+
88
+ <table class="form-table">
89
+ <tbody>
90
+ <tr>
91
+ <th scope="row" valign="top">
92
+ <label for="email_admin_checkout"><?php _e('Checkout', 'pmpro');?>:</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
+ <?php _e('when a member checks out.', 'pmpro');?>
97
+ </td>
98
+ </tr>
99
+ <tr>
100
+ <th scope="row" valign="top">
101
+ <label for="email_admin_changes"><?php _e('Admin Changes', 'pmpro');?>:</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
+ <?php _e('when an admin changes a user\'s membership level through the dashboard.', 'pmpro');?>
106
+ </td>
107
+ </tr>
108
+ <tr>
109
+ <th scope="row" valign="top">
110
+ <label for="email_admin_cancels"><?php _e('Cancellation', 'pmpro');?>:</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
+ <?php _e('when a user cancels his or her account.', 'pmpro');?>
115
+ </td>
116
+ </tr>
117
+ <tr>
118
+ <th scope="row" valign="top">
119
+ <label for="email_admin_billing"><?php _e('Bill Updates', 'pmpro');?>:</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
+ <?php _e('when a user updates his or her billing information.', 'pmpro');?>
124
+ </td>
125
+ </tr>
126
+ </tbody>
127
+ </table>
128
+
129
+ <h3><?php _e('Send members emails', 'pmpro');?>:</h3>
130
+
131
+ <table class="form-table">
132
+ <tbody>
133
+ <tr>
134
+ <th scope="row" valign="top">
135
+ <label for="email_admin_checkout"><?php _e('New Users', 'pmpro');?>:</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
+ <?php _e('Default WP notification email. (Recommended: Leave unchecked. Members will still get an email confirmation from PMPro after checkout.)', 'pmpro');?>
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 CHANGED
@@ -1,23 +1,4 @@
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
  */
@@ -40,11 +21,11 @@ function pmpro_checkLevelForStripeCompatibility($level = NULL)
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;
@@ -60,7 +41,7 @@ function pmpro_checkLevelForStripeCompatibility($level = NULL)
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;
@@ -174,49 +155,3 @@ function pmpro_checkLevelForBraintreeCompatibility($level = NULL)
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
- }
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  /*
3
  Checks if PMPro settings are complete or if there are any errors.
4
  */
21
  /*
22
  Stripe currently does not support:
23
  * Trial Amounts > 0.
24
+ * Daily or Weekly billing periods.
25
  * Billing Limits.
26
  */
27
  if($level->trial_amount > 0 ||
28
+ ($level->cycle_number > 0 && ($level->cycle_period == "Day" || $level->cycle_period == "Week")) ||
29
  $level->billing_limit > 0)
30
  {
31
  return false;
41
 
42
  //check this level
43
  if($level->trial_amount > 0 ||
44
+ ($level->cycle_number > 0 && ($level->cycle_period == "Day" || $level->cycle_period == "Week")) ||
45
  $level->billing_limit > 0)
46
  {
47
  return false;
155
  return true;
156
  }
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
adminpages/membershiplevels.php CHANGED
@@ -9,7 +9,7 @@
9
 
10
  //some vars
11
  $gateway = pmpro_getOption("gateway");
12
- global $pmpro_stripe_error, $pmpro_braintree_error, $pmpro_payflow_error, $pmpro_twocheckout_error, $wp_version;
13
 
14
  if(isset($_REQUEST['edit']))
15
  $edit = $_REQUEST['edit'];
@@ -157,8 +157,6 @@
157
 
158
  if($ml_id > 0)
159
  {
160
- do_action("pmpro_delete_membership_level", $ml_id);
161
-
162
  //remove any categories from the ml
163
  $sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_categories WHERE membership_id = '$ml_id'";
164
  $r1 = $wpdb->query($sqlQuery);
@@ -363,7 +361,7 @@
363
  <br /><small>
364
  <?php _e('The amount to be billed one cycle after the initial payment.', 'pmpro');?>
365
  <?php if($gateway == "stripe") { ?>
366
- <br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('Stripe integration currently only supports billing periods of "Week", "Month" or "Year".', 'pmpro');?>
367
  <?php } elseif($gateway == "braintree") { ?>
368
  <br /><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('Braintree integration currently only supports billing periods of "Month" or "Year".', 'pmpro');?>
369
  <?php } elseif($gateway == "payflowpro") { ?>
@@ -393,13 +391,7 @@
393
 
394
  <tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
395
  <th scope="row" valign="top"><label><?php _e('Custom Trial', 'pmpro');?>:</label></th>
396
- <td>
397
- <input id="custom_trial" name="custom_trial" type="checkbox" value="yes" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="jQuery('.trial_info').toggle();" /> <?php _e('Check to add a custom trial period.', 'pmpro');?>
398
-
399
- <?php if($gateway == "twocheckout") { ?>
400
- <br /><small><strong <?php if(!empty($pmpro_twocheckout_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount.', 'pmpro');?></strong></small>
401
- <?php } ?>
402
- </td>
403
  </tr>
404
 
405
  <tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
@@ -420,8 +412,8 @@
420
  <?php } elseif($gateway == "payflowpro") { ?>
421
  <br /><small>
422
  <strong <?php if(!empty($pmpro_payflow_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('Payflow integration currently does not support trial amounts greater than $0.', 'pmpro');?></strong>
423
- </small>
424
- <?php } ?>
425
  </td>
426
  </tr>
427
 
@@ -446,7 +438,7 @@
446
  <input id="expiration_number" name="expiration_number" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->expiration_number))?>" />
447
  <select id="expiration_period" name="expiration_period">
448
  <?php
449
- $cycles = array( __('Day(s)', 'pmpro') => 'Day', __('Week(s)', 'pmpro') => 'Week', __('Month(s)', 'pmpro') => 'Month', __('Year(s)', 'pmpro') => 'Year' );
450
  foreach ( $cycles as $name => $value ) {
451
  echo "<option value='$value'";
452
  if ( $level->expiration_period == $value ) echo " selected='selected'";
@@ -495,7 +487,7 @@
495
  {
496
  ?>
497
 
498
- <h2><?php _e('Membership Levels', 'pmpro');?> <a href="admin.php?page=pmpro-membershiplevels&edit=-1" class="add-new-h2"><?php _e('Add New Level', 'pmpro');?></a></h2>
499
  <form id="posts-filter" method="get" action="">
500
  <p class="search-box">
501
  <label class="screen-reader-text" for="post-search-input"><?php _e('Search Levels', 'pmpro');?>:</label>
@@ -534,7 +526,7 @@
534
  foreach($levels as $level)
535
  {
536
  ?>
537
- <tr class="<?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level) || !pmpro_checkLevelForPayflowCompatibility($level) || !pmpro_checkLevelForTwoCheckoutCompatibility($level)) { ?>pmpro_error<?php } ?>">
538
  <td><?php echo $level->id?></td>
539
  <td><?php echo $level->name?></td>
540
  <td>
@@ -548,7 +540,7 @@
548
  <?php if(!pmpro_isLevelRecurring($level)) { ?>
549
  --
550
  <?php } else { ?>
551
- <?php echo $pmpro_currency_symbol?><?php echo $level->billing_amount?> <?php _e('every', 'pmpro');?> <?php echo $level->cycle_number.' '.pmpro_translate_billing_period($level->cycle_period,$level->cycle_number)?>
552
 
553
  <?php if($level->billing_limit) { ?>(<?php _e('for', 'pmpro');?> <?php echo $level->billing_limit?> <?php echo sornot($level->cycle_period,$level->billing_limit)?>)<?php } ?>
554
 
@@ -569,9 +561,9 @@
569
  <?php } ?>
570
  </td>
571
  <td><?php if($level->allow_signups) { ?><?php _e('Yes', 'pmpro');?><?php } else { ?><?php _e('No', 'pmpro');?><?php } ?></td>
572
- <td align="center"><a href="admin.php?page=pmpro-membershiplevels&amp;edit=<?php echo $level->id?>" class="edit"><?php _e('edit', 'pmpro');?></a></td>
573
- <td align="center"><a href="admin.php?page=pmpro-membershiplevels&amp;copy=<?php echo $level->id?>&amp;edit=-1" class="edit"><?php _e('copy', 'pmpro');?></a></td>
574
- <td align="center"><a href="javascript: askfirst('<?php printf(__("Are you sure you want to delete membership level %s? All subscriptions will be cancelled.", "pmpro"), $level->name);?>','admin.php?page=pmpro-membershiplevels&amp;action=delete_membership_level&amp;deleteid=<?php echo $level->id?>'); void(0);" class="delete"><?php _e('delete', 'pmpro');?></a></td>
575
  </tr>
576
  <?php
577
  }
9
 
10
  //some vars
11
  $gateway = pmpro_getOption("gateway");
12
+ global $pmpro_stripe_error, $pmpro_braintree_error, $pmpro_payflow_error, $wp_version;
13
 
14
  if(isset($_REQUEST['edit']))
15
  $edit = $_REQUEST['edit'];
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);
361
  <br /><small>
362
  <?php _e('The amount to be billed one cycle after the initial payment.', 'pmpro');?>
363
  <?php if($gateway == "stripe") { ?>
364
+ <br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('Stripe integration currently only supports billing periods of "Month" or "Year".', 'pmpro');?>
365
  <?php } elseif($gateway == "braintree") { ?>
366
  <br /><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('Braintree integration currently only supports billing periods of "Month" or "Year".', 'pmpro');?>
367
  <?php } elseif($gateway == "payflowpro") { ?>
391
 
392
  <tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
393
  <th scope="row" valign="top"><label><?php _e('Custom Trial', 'pmpro');?>:</label></th>
394
+ <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();" /> <?php _e('Check to add a custom trial period.', 'pmpro');?></td>
 
 
 
 
 
 
395
  </tr>
396
 
397
  <tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
412
  <?php } elseif($gateway == "payflowpro") { ?>
413
  <br /><small>
414
  <strong <?php if(!empty($pmpro_payflow_error)) { ?>class="pmpro_red"<?php } ?>><?php _e('Payflow integration currently does not support trial amounts greater than $0.', 'pmpro');?></strong>
415
+ </small>
416
+ <?php } ?>
417
  </td>
418
  </tr>
419
 
438
  <input id="expiration_number" name="expiration_number" type="text" size="10" value="<?php echo str_replace("\"", "&quot;", stripslashes($level->expiration_number))?>" />
439
  <select id="expiration_period" name="expiration_period">
440
  <?php
441
+ $cycles = array( 'Day(s)' => 'Day', 'Week(s)' => 'Week', 'Month(s)' => 'Month', 'Year(s)' => 'Year' );
442
  foreach ( $cycles as $name => $value ) {
443
  echo "<option value='$value'";
444
  if ( $level->expiration_period == $value ) echo " selected='selected'";
487
  {
488
  ?>
489
 
490
+ <h2><?php _e('Membership Levels', 'pmpro');?> <a href="admin.php?page=pmpro-membershiplevels&edit=-1" class="button add-new-h2"><?php _e('Add New Level', 'pmpro');?></a></h2>
491
  <form id="posts-filter" method="get" action="">
492
  <p class="search-box">
493
  <label class="screen-reader-text" for="post-search-input"><?php _e('Search Levels', 'pmpro');?>:</label>
526
  foreach($levels as $level)
527
  {
528
  ?>
529
+ <tr class="<?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level) || !pmpro_checkLevelForPayflowCompatibility($level)) { ?>pmpro_error<?php } ?>">
530
  <td><?php echo $level->id?></td>
531
  <td><?php echo $level->name?></td>
532
  <td>
540
  <?php if(!pmpro_isLevelRecurring($level)) { ?>
541
  --
542
  <?php } else { ?>
543
+ <?php echo $pmpro_currency_symbol?><?php echo $level->billing_amount?> <?php _e('every', 'pmpro');?> <?php echo $level->cycle_number.' '.sornot($level->cycle_period,$level->cycle_number)?>
544
 
545
  <?php if($level->billing_limit) { ?>(<?php _e('for', 'pmpro');?> <?php echo $level->billing_limit?> <?php echo sornot($level->cycle_period,$level->billing_limit)?>)<?php } ?>
546
 
561
  <?php } ?>
562
  </td>
563
  <td><?php if($level->allow_signups) { ?><?php _e('Yes', 'pmpro');?><?php } else { ?><?php _e('No', 'pmpro');?><?php } ?></td>
564
+ <td align="center"><a href="admin.php?page=pmpro-membershiplevels&edit=<?php echo $level->id?>" class="edit"><?php _e('edit', 'pmpro');?></a></td>
565
+ <td align="center"><a href="admin.php?page=pmpro-membershiplevels&copy=<?php echo $level->id?>&edit=-1" class="edit"><?php _e('copy', 'pmpro');?></a></td>
566
+ <td align="center"><a href="javascript: askfirst('<?php printf(__("Are you sure you want to delete membership level %s? All subscriptions will be cancelled.", "pmpro"), $level->name);?>','admin.php?page=pmpro-membershiplevels&action=delete_membership_level&deleteid=<?php echo $level->id?>'); void(0);" class="delete"><?php _e('delete', 'pmpro');?></a></td>
567
  </tr>
568
  <?php
569
  }
adminpages/memberslist-csv.php CHANGED
@@ -42,83 +42,32 @@
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 == "oldmembers")
53
- $sqlQuery .= " AND mu.status = 'inactive' AND mu2.status IS NULL ";
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 == "oldmembers")
74
- $sqlQuery .= " LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON u.ID = mu2.user_id AND mu2.status = 'active' ";
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
- //get users
100
- $theusers = $wpdb->get_col($sqlQuery);
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
 
@@ -162,23 +111,12 @@
162
 
163
  $csvoutput .= "\n";
164
 
165
- //output
166
- echo $csvoutput;
167
- $csvoutput = "";
168
-
169
  if($theusers)
170
  {
171
- foreach($theusers as $user_id)
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
  $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.user_id = '" . $theuser->ID . "' ORDER BY c.id DESC LIMIT 1";
@@ -203,38 +141,37 @@
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 .= "N/A";
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, $heading));
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)
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 '%" . esc_sql($s) . "%' OR u.user_email LIKE '%" . esc_sql($s) . "%' OR um.meta_value LIKE '%" . esc_sql($s) . "%') ";
 
 
 
 
 
46
 
47
+ if($l)
48
+ $sqlQuery .= " AND mu.membership_id = '" . esc_sql($l) . "' ";
 
 
 
 
49
 
50
+ $sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC ";
 
 
 
 
 
51
 
52
  if($limit)
53
  $sqlQuery .= "LIMIT $start, $limit";
54
  }
55
  else
56
  {
57
+ $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";
58
+ $sqlQuery .= " WHERE mu.membership_id > 0 AND mu.status = 'active' ";
59
+ if($l)
60
+ $sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
61
+ $sqlQuery .= "ORDER BY user_registered DESC ";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  if($limit)
63
  $sqlQuery .= "LIMIT $start, $limit";
64
  }
65
 
 
66
  $sqlQuery = apply_filters("pmpro_members_list_sql", $sqlQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
+ $theusers = $wpdb->get_results($sqlQuery);
69
+
70
+ $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,expires";
71
  $heading = apply_filters("pmpro_members_list_csv_heading", $heading);
72
  $csvoutput = $heading;
73
 
111
 
112
  $csvoutput .= "\n";
113
 
 
 
 
 
114
  if($theusers)
115
  {
116
+ foreach($theusers as $theuser)
117
  {
 
118
  //get meta
119
+ $sqlQuery = "SELECT meta_key as `key`, meta_value as `value` FROM $wpdb->usermeta WHERE $wpdb->usermeta.user_id = '" . $theuser->ID . "'";
 
 
 
 
 
 
120
  $metavalues = pmpro_getMetavalues($sqlQuery);
121
  $theuser->metavalues = $metavalues;
122
  $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.user_id = '" . $theuser->ID . "' ORDER BY c.id DESC LIMIT 1";
141
 
142
  //joindate and enddate
143
  $csvoutput .= "," . pmpro_enclose(date("Y-m-d", $theuser->joindate)) . ",";
144
+ if($theuser->enddate)
 
 
 
 
 
 
 
 
 
145
  $csvoutput .= pmpro_enclose(date("Y-m-d", $theuser->enddate));
 
146
  else
147
+ $csvoutput .= pmpro_enclose("Never");
148
+
149
  //any extra columns
150
  if(!empty($extra_columns))
151
  {
152
  foreach($extra_columns as $heading => $callback)
153
  {
154
+ $csvoutput .= "," . pmpro_enclose(call_user_func($callback, $theuser));
155
  }
156
  }
157
 
158
  $csvoutput .= "\n";
159
+
 
 
 
160
  }
161
  }
162
+
163
+ $size_in_bytes = strlen($csvoutput);
164
+ header("Content-type: text/csv");
165
+ //header("Content-type: application/vnd.ms-excel");
166
+ if($s && $l)
167
+ header("Content-Disposition: attachment; filename=members_list_" . intval($l) . "_level" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
168
+ elseif($s)
169
+ header("Content-Disposition: attachment; filename=members_list_" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
170
+ elseif($l)
171
+ header("Content-Disposition: attachment; filename=members_list_level" . intval($l) . ".csv; size=$size_in_bytes");
172
+ else
173
+ header("Content-Disposition: attachment; filename=members_list.csv; size=$size_in_bytes");
174
+
175
  print $csvoutput;
176
 
177
  function pmpro_enclose($s)
adminpages/memberslist.php CHANGED
@@ -23,7 +23,7 @@
23
  <form id="posts-filter" method="get" action="">
24
  <h2>
25
  <?php _e('Members List', 'pmpro');?>
26
- <a target="_blank" href="<?php echo admin_url('admin-ajax.php');?>?action=memberslist_csv&s=<?php echo $s?>&l=<?php echo $l?>" class="add-new-h2"><?php _e('Export to CSV', 'pmpro');?></a>
27
  </h2>
28
  <ul class="subsubsub">
29
  <li>
@@ -39,7 +39,6 @@
39
  <?php
40
  }
41
  ?>
42
- <option value="oldmembers" <?php if($l == "oldmembers") { ?>selected="selected"<?php } ?>><?php _e('Old Members', 'pmpro');?></option>
43
  </select>
44
  </li>
45
  </ul>
@@ -66,56 +65,24 @@
66
 
67
  if($s)
68
  {
69
- $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 ";
70
-
71
- if($l == "oldmembers")
72
- $sqlQuery .= " LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON u.ID = mu2.user_id AND mu2.status = 'active' ";
73
-
74
- $sqlQuery .= " WHERE mu.membership_id > 0 AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
75
 
76
- if($l == "oldmembers")
77
- $sqlQuery .= " AND mu.status = 'inactive' AND mu2.status IS NULL ";
78
- elseif($l)
79
- $sqlQuery .= " AND mu.status = 'active' AND mu.membership_id = '" . $l . "' ";
80
- else
81
- $sqlQuery .= " AND mu.status = 'active' ";
82
-
83
- $sqlQuery .= "GROUP BY u.ID ";
84
-
85
- if($l == "oldmembers")
86
- $sqlQuery .= "ORDER BY enddate DESC ";
87
- else
88
- $sqlQuery .= "ORDER BY u.user_registered DESC ";
89
-
90
- $sqlQuery .= "LIMIT $start, $limit";
91
  }
92
  else
93
  {
94
  $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";
95
-
96
- if($l == "oldmembers")
97
- $sqlQuery .= " LEFT JOIN $wpdb->pmpro_memberships_users mu2 ON u.ID = mu2.user_id AND mu2.status = 'active' ";
98
-
99
- $sqlQuery .= " WHERE mu.membership_id > 0 ";
100
-
101
- if($l == "oldmembers")
102
- $sqlQuery .= " AND mu.status = 'inactive' AND mu2.status IS NULL ";
103
- elseif($l)
104
- $sqlQuery .= " AND mu.status = 'active' AND mu.membership_id = '" . $l . "' ";
105
- else
106
- $sqlQuery .= " AND mu.status = 'active' ";
107
- $sqlQuery .= "GROUP BY u.ID ";
108
-
109
- if($l == "oldmembers")
110
- $sqlQuery .= "ORDER BY enddate DESC ";
111
- else
112
- $sqlQuery .= "ORDER BY u.user_registered DESC ";
113
-
114
- $sqlQuery .= "LIMIT $start, $limit";
115
  }
116
 
117
  $sqlQuery = apply_filters("pmpro_members_list_sql", $sqlQuery);
118
-
119
  $theusers = $wpdb->get_results($sqlQuery);
120
  $totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
121
 
@@ -151,14 +118,7 @@
151
  <th><?php _e('Membership', 'pmpro');?></th>
152
  <th><?php _e('Fee', 'pmpro');?></th>
153
  <th><?php _e('Joined', 'pmpro');?></th>
154
- <th>
155
- <?php
156
- if($l == "oldmembers")
157
- _e('Ended', 'pmpro');
158
- else
159
- _e('Expires', 'pmpro');
160
- ?>
161
- </th>
162
  </tr>
163
  </thead>
164
  <tbody id="users" class="list:user user-list">
@@ -186,9 +146,21 @@
186
  <td><a href="mailto:<?php echo $theuser->user_email?>"><?php echo $theuser->user_email?></a></td>
187
  <?php do_action("pmpro_memberslist_extra_cols_body", $theuser);?>
188
  <td>
189
- <?php
190
- echo pmpro_formatAddress(trim($theuser->pmpro_bfirstname . " " . $theuser->pmpro_blastname), $theuser->pmpro_baddress1, $theuser->pmpro_baddress2, $theuser->pmpro_bcity, $theuser->pmpro_bstate, $theuser->pmpro_bzipcode, $theuser->pmpro_bcountry, $theuser->pmpro_bphone);
191
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
192
  </td>
193
  <td><?php echo $auser->membership?></td>
194
  <td>
@@ -203,13 +175,13 @@
203
  -
204
  <?php } ?>
205
  </td>
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>
23
  <form id="posts-filter" method="get" action="">
24
  <h2>
25
  <?php _e('Members List', 'pmpro');?>
26
+ <a target="_blank" href="<?php echo admin_url('admin-ajax.php');?>?action=memberslist_csv&s=<?php echo $s?>&l=<?php echo $l?>" class="button add-new-h2"><?php _e('Export to CSV', 'pmpro');?></a>
27
  </h2>
28
  <ul class="subsubsub">
29
  <li>
39
  <?php
40
  }
41
  ?>
 
42
  </select>
43
  </li>
44
  </ul>
65
 
66
  if($s)
67
  {
68
+ $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%') ";
 
 
 
 
 
69
 
70
+ if($l)
71
+ $sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
72
+
73
+ $sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
  else
76
  {
77
  $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";
78
+ $sqlQuery .= " WHERE mu.membership_id > 0 AND mu.status = 'active' ";
79
+ if($l)
80
+ $sqlQuery .= " AND mu.membership_id = '" . $l . "' ";
81
+ $sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  }
83
 
84
  $sqlQuery = apply_filters("pmpro_members_list_sql", $sqlQuery);
85
+
86
  $theusers = $wpdb->get_results($sqlQuery);
87
  $totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
88
 
118
  <th><?php _e('Membership', 'pmpro');?></th>
119
  <th><?php _e('Fee', 'pmpro');?></th>
120
  <th><?php _e('Joined', 'pmpro');?></th>
121
+ <th><?php _e('Expires', 'pmpro');?></th>
 
 
 
 
 
 
 
122
  </tr>
123
  </thead>
124
  <tbody id="users" class="list:user user-list">
146
  <td><a href="mailto:<?php echo $theuser->user_email?>"><?php echo $theuser->user_email?></a></td>
147
  <?php do_action("pmpro_memberslist_extra_cols_body", $theuser);?>
148
  <td>
149
+ <?php
150
+ if(empty($theuser->pmpro_bfirstname))
151
+ $theuser->pmpro_bfirstname = "";
152
+ if(empty($theuser->pmpro_blastname))
153
+ $theuser->pmpro_blastname = "";
154
+ echo trim($theuser->pmpro_bfirstname . " " . $theuser->pmpro_blastname);
155
+ ?><br />
156
+ <?php if(!empty($theuser->pmpro_baddress1)) { ?>
157
+ <?php echo $theuser->pmpro_baddress1; ?><br />
158
+ <?php if(!empty($theuser->pmpro_baddress2)) echo $theuser->pmpro_baddress2 . "<br />"; ?>
159
+ <?php if($theuser->pmpro_bcity && $theuser->pmpro_bstate) { ?>
160
+ <?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 />
161
+ <?php } ?>
162
+ <?php } ?>
163
+ <?php if(!empty($theuser->pmpro_bphone)) echo formatPhone($theuser->pmpro_bphone);?>
164
  </td>
165
  <td><?php echo $auser->membership?></td>
166
  <td>
175
  -
176
  <?php } ?>
177
  </td>
178
+ <td><?php echo date("m/d/Y", strtotime($theuser->user_registered))?></td>
179
  <td>
180
  <?php
181
  if($auser->enddate)
182
+ echo date(get_option('date_format'), $auser->enddate);
183
  else
184
+ echo __("Never", "pmpro");
185
  ?>
186
  </td>
187
  </tr>
adminpages/orders-csv.php CHANGED
@@ -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,41 +49,29 @@
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 '%" . esc_sql($s) . "%' ";
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 WHERE ".$condition." ORDER BY id DESC, timestamp DESC ";
172
  }
173
 
174
- if(!empty($start) && !empty($limit))
175
  $sqlQuery .= "LIMIT $start, $limit";
176
 
177
  $order_ids = $wpdb->get_col($sqlQuery);
178
 
179
- //begin output
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)
@@ -234,10 +121,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)
@@ -282,12 +165,21 @@
282
  }
283
 
284
  $csvoutput .= "\n";
285
-
286
- //output
287
- echo $csvoutput;
288
- $csvoutput = "";
289
  }
290
- }
 
 
 
 
 
 
 
 
 
 
 
 
291
 
292
  print $csvoutput;
293
 
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 '%" . esc_sql($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,discount_code_id,discount_code,timestamp";
76
 
77
  //these are the meta_keys for the fields (arrays are object, property. so e.g. $theuser->ID)
121
 
122
  $csvoutput .= "\n";
123
 
 
 
 
 
124
  if($order_ids)
125
  {
126
  foreach($order_ids as $order_id)
165
  }
166
 
167
  $csvoutput .= "\n";
168
+
 
 
 
169
  }
170
+ }
171
+
172
+ $size_in_bytes = strlen($csvoutput);
173
+ header("Content-type: text/csv");
174
+ //header("Content-type: application/vnd.ms-excel");
175
+ if($s && $l)
176
+ header("Content-Disposition: attachment; filename=orders" . intval($l) . "_level" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
177
+ elseif($s)
178
+ header("Content-Disposition: attachment; filename=orders_" . sanitize_file_name($s) . ".csv; size=$size_in_bytes");
179
+ elseif($l)
180
+ header("Content-Disposition: attachment; filename=orders_level" . intval($l) . ".csv; size=$size_in_bytes");
181
+ else
182
+ header("Content-Disposition: attachment; filename=orders.csv; size=$size_in_bytes");
183
 
184
  print $csvoutput;
185
 
adminpages/orders.php CHANGED
@@ -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']))
@@ -74,15 +33,6 @@
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
 
@@ -481,7 +431,7 @@
481
  <tr>
482
  <th scope="row" valign="top"><label for="subscription_transaction_id"><?php _e('Subscription Transaction ID', 'pmpro');?>:</label></th>
483
  <td>
484
- <?php if(in_array("subscription_transaction_id", $read_only_fields) && $order_id > 0) { echo $order->subscription_transaction_id; } else { ?>
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"><?php _e('Generated by the gateway. Useful to cross reference subscriptions.', 'pmpro');?></small>
@@ -497,7 +447,7 @@
497
  if(!empty($order->timestamp))
498
  $timestamp = $order->timestamp;
499
  else
500
- $timestamp = current_time('timestamp');
501
 
502
  $year = date("Y", $timestamp);
503
  $month = date("n", $timestamp);
@@ -508,7 +458,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, current_time("timestamp")))?></option>
512
  <?php
513
  }
514
  ?>
@@ -558,7 +508,7 @@
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="<?php _e('Save Order', 'pmpro');?>" />
561
- <input name="cancel" type="button" class="cancel button-secondary" value="<?php _e('Cancel', 'pmpro');?>" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-orders')?>';" />
562
  </p>
563
 
564
  </form>
@@ -568,218 +518,25 @@
568
  <form id="posts-filter" method="get" action="">
569
  <h2>
570
  <?php _e('Orders', 'pmpro');?>
571
- <a href="admin.php?page=pmpro-orders&order=-1" class="add-new-h2">+ <?php _e('Add New Order', 'pmpro');?></a>
572
-
573
- <?php
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"><?php _e('Search Orders', 'pmpro');?>:</label>
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="<?php _e('Search Orders', 'pmpro');?>"/>
781
  </p>
782
-
783
  <?php
784
  //some vars for the search
785
  if(isset($_REQUEST['pn']))
@@ -795,62 +552,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 ";
@@ -871,20 +572,16 @@
871
  foreach($fields as $field)
872
  $sqlQuery .= " OR " . $field . " LIKE '%" . esc_sql($s) . "%' ";
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 WHERE ".$condition." ORDER BY id DESC, timestamp DESC ";
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)
@@ -984,9 +681,7 @@
984
  </form>
985
 
986
  <?php
987
- //add normal args
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 } ?>
16
  $l = $_REQUEST['l'];
17
  else
18
  $l = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  //deleting?
21
  if(!empty($_REQUEST['delete']))
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
 
431
  <tr>
432
  <th scope="row" valign="top"><label for="subscription_transaction_id"><?php _e('Subscription Transaction ID', 'pmpro');?>:</label></th>
433
  <td>
434
+ <?php if(in_array("code", $read_only_fields) && $order_id > 0) { echo $order->subscription_transaction_id; } else { ?>
435
  <input id="subscription_transaction_id" name="subscription_transaction_id" type="text" size="50" value="<?php echo esc_attr($order->subscription_transaction_id);?>" />
436
  <?php } ?>
437
  <small class="pmpro_lite"><?php _e('Generated by the gateway. Useful to cross reference subscriptions.', 'pmpro');?></small>
447
  if(!empty($order->timestamp))
448
  $timestamp = $order->timestamp;
449
  else
450
+ $timestamp = time();
451
 
452
  $year = date("Y", $timestamp);
453
  $month = date("n", $timestamp);
458
  for($i = 1; $i < 13; $i++)
459
  {
460
  ?>
461
+ <option value="<?php echo $i?>" <?php if($i == $month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/1/" . $year))?></option>
462
  <?php
463
  }
464
  ?>
508
  <p class="submit topborder">
509
  <input name="order" type="hidden" value="<?php if(!empty($order->id)) echo $order->id; else echo $order_id;?>" />
510
  <input name="save" type="submit" class="button-primary" value="<?php _e('Save Order', 'pmpro');?>" />
511
+ <input name="cancel" type="button" value="<?php _e('Cancel', 'pmpro');?>" onclick="location.href='<?php echo get_admin_url(NULL, '/admin.php?page=pmpro-orders')?>';" />
512
  </p>
513
 
514
  </form>
518
  <form id="posts-filter" method="get" action="">
519
  <h2>
520
  <?php _e('Orders', 'pmpro');?>
521
+ <a href="admin.php?page=pmpro-orders&order=-1" class="button add-new-h2">+ <?php _e('Add New Order', 'pmpro');?></a>
522
+ <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"><?php _e('Export to CSV', 'pmpro');?></a>
523
+ </h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
524
 
525
  <?php if(!empty($pmpro_msg)) { ?>
526
  <div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
527
  <?php } ?>
528
 
 
529
  <ul class="subsubsub">
530
  <li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  </li>
533
  </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
534
  <p class="search-box">
535
  <label class="hidden" for="post-search-input"><?php _e('Search Orders', 'pmpro');?>:</label>
536
  <input type="hidden" name="page" value="pmpro-orders" />
537
  <input id="post-search-input" type="text" value="<?php echo $s?>" name="s"/>
538
  <input class="button" type="submit" value="<?php _e('Search Orders', 'pmpro');?>"/>
539
  </p>
 
540
  <?php
541
  //some vars for the search
542
  if(isset($_REQUEST['pn']))
552
  $end = $pn * $limit;
553
  $start = $end - $limit;
554
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
555
  if($s)
556
  {
557
  $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 ";
572
  foreach($fields as $field)
573
  $sqlQuery .= " OR " . $field . " LIKE '%" . esc_sql($s) . "%' ";
574
  $sqlQuery .= ") ";
 
 
 
575
  $sqlQuery .= "GROUP BY o.id ORDER BY o.id DESC, o.timestamp DESC ";
576
  }
577
  else
578
  {
579
+ $sqlQuery = "SELECT SQL_CALC_FOUND_ROWS id FROM $wpdb->pmpro_membership_orders ORDER BY id DESC, timestamp DESC ";
580
  }
581
 
582
  $sqlQuery .= "LIMIT $start, $limit";
583
 
584
  $order_ids = $wpdb->get_col($sqlQuery);
 
585
  $totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
586
 
587
  if($order_ids)
681
  </form>
682
 
683
  <?php
684
+ echo pmpro_getPaginationString($pn, $totalrows, $limit, 1, get_admin_url(NULL, "/admin.php?page=pmpro-orders&s=" . urlencode($s)), "&l=$l&limit=$limit&pn=");
 
 
685
  ?>
686
 
687
  <?php } ?>
adminpages/pagesettings.php CHANGED
@@ -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' => $pmpro_page_title,
80
  'post_status' => 'publish',
81
  'post_type' => 'page',
82
  'post_content' => '[pmpro_' . $pmpro_page_name . ']',
@@ -144,9 +116,7 @@
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'];?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
148
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_account].</small>
152
  </td>
@@ -159,9 +129,7 @@
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="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
163
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_billing].</small>
167
  </td>
@@ -174,9 +142,7 @@
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="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
178
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_cancel].</small>
182
  </td>
@@ -190,9 +156,7 @@
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="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
194
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_checkout].</small>
198
  </td>
@@ -206,9 +170,7 @@
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="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
210
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_confirmation].</small>
214
  </td>
@@ -222,9 +184,7 @@
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="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
226
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_invoice].</small>
230
  </td>
@@ -238,9 +198,7 @@
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="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
242
- &nbsp;
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"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_levels].</small>
246
  </td>
@@ -248,7 +206,7 @@
248
  </tbody>
249
  </table>
250
  <p class="submit">
251
- <input name="savesettings" type="submit" class="button button-primary" value="<?php _e('Save Settings', 'pmpro');?>" />
252
  </p>
253
  </form>
254
 
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', 'pmpro') . ' ' . ucwords($pmpro_page_name),
52
  'post_status' => 'publish',
53
  'post_type' => 'page',
54
  'post_content' => '[pmpro_' . $pmpro_page_name . ']',
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"><?php _e('edit page', 'pmpro');?></a>
 
 
120
  <?php } ?>
121
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_account].</small>
122
  </td>
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"><?php _e('edit page', 'pmpro');?></a>
 
 
133
  <?php } ?>
134
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_billing].</small>
135
  </td>
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"><?php _e('edit page', 'pmpro');?></a>
 
 
146
  <?php } ?>
147
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_cancel].</small>
148
  </td>
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"><?php _e('edit page', 'pmpro');?></a>
 
 
160
  <?php } ?>
161
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_checkout].</small>
162
  </td>
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"><?php _e('edit page', 'pmpro');?></a>
 
 
174
  <?php } ?>
175
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_confirmation].</small>
176
  </td>
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"><?php _e('edit page', 'pmpro');?></a>
 
 
188
  <?php } ?>
189
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_invoice].</small>
190
  </td>
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"><?php _e('edit page', 'pmpro');?></a>
 
 
202
  <?php } ?>
203
  <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_levels].</small>
204
  </td>
206
  </tbody>
207
  </table>
208
  <p class="submit">
209
+ <input name="savesettings" type="submit" class="button-primary" value="<?php _e('Save Settings', 'pmpro');?>" />
210
  </p>
211
  </form>
212
 
adminpages/paymentsettings.php CHANGED
@@ -1,538 +1,491 @@
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.", "pmpro"));
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("stripe_billingaddress");
32
- pmpro_setOption("braintree_merchantid");
33
- pmpro_setOption("braintree_publickey");
34
- pmpro_setOption("braintree_privatekey");
35
- pmpro_setOption("braintree_encryptionkey");
36
- pmpro_setOption("twocheckout_apiusername");
37
- pmpro_setOption("twocheckout_apipassword");
38
- pmpro_setOption("twocheckout_accountnumber");
39
- pmpro_setOption("twocheckout_secretword");
40
- pmpro_setOption("cybersource_merchantid");
41
- pmpro_setOption("cybersource_securitykey");
42
-
43
- //currency
44
- pmpro_setOption("currency");
45
-
46
- //credit cards
47
- $pmpro_accepted_credit_cards = array();
48
- if(!empty($_REQUEST['creditcards_visa']))
49
- $pmpro_accepted_credit_cards[] = "Visa";
50
- if(!empty($_REQUEST['creditcards_mastercard']))
51
- $pmpro_accepted_credit_cards[] = "Mastercard";
52
- if(!empty($_REQUEST['creditcards_amex']))
53
- $pmpro_accepted_credit_cards[] = "American Express";
54
- if(!empty($_REQUEST['creditcards_discover']))
55
- $pmpro_accepted_credit_cards[] = "Discover";
56
- if(!empty($_REQUEST['creditcards_dinersclub']))
57
- $pmpro_accepted_credit_cards[] = "Diners Club";
58
- if(!empty($_REQUEST['creditcards_enroute']))
59
- $pmpro_accepted_credit_cards[] = "EnRoute";
60
- if(!empty($_REQUEST['creditcards_jcb']))
61
- $pmpro_accepted_credit_cards[] = "JCB";
62
-
63
- //check instructions
64
- pmpro_setOption("instructions");
65
-
66
- //use_ssl
67
- pmpro_setOption("use_ssl");
68
-
69
- //tax
70
- pmpro_setOption("tax_state");
71
- pmpro_setOption("tax_rate");
72
-
73
- pmpro_setOption("accepted_credit_cards", implode(",", $pmpro_accepted_credit_cards));
74
-
75
- //assume success
76
- $msg = true;
77
- $msgt = __("Your payment settings have been updated.", "pmpro");
78
- }
79
-
80
- $sslseal = pmpro_getOption("sslseal");
81
- $nuclear_HTTPS = pmpro_getOption("nuclear_HTTPS");
82
-
83
- $gateway = pmpro_getOption("gateway");
84
- $gateway_environment = pmpro_getOption("gateway_environment");
85
- $gateway_email = pmpro_getOption("gateway_email");
86
- $payflow_partner = pmpro_getOption("payflow_partner");
87
- $payflow_vendor = pmpro_getOption("payflow_vendor");
88
- $payflow_user = pmpro_getOption("payflow_user");
89
- $payflow_pwd = pmpro_getOption("payflow_pwd");
90
- $apiusername = pmpro_getOption("apiusername");
91
- $apipassword = pmpro_getOption("apipassword");
92
- $apisignature = pmpro_getOption("apisignature");
93
- $loginname = pmpro_getOption("loginname");
94
- $transactionkey = pmpro_getOption("transactionkey");
95
- $stripe_secretkey = pmpro_getOption("stripe_secretkey");
96
- $stripe_publishablekey = pmpro_getOption("stripe_publishablekey");
97
- $stripe_billingaddress = pmpro_getOption("stripe_billingaddress");
98
- $braintree_merchantid = pmpro_getOption("braintree_merchantid");
99
- $braintree_publickey = pmpro_getOption("braintree_publickey");
100
- $braintree_privatekey = pmpro_getOption("braintree_privatekey");
101
- $braintree_encryptionkey = pmpro_getOption("braintree_encryptionkey");
102
- $twocheckout_apiusername = pmpro_getOption("twocheckout_apiusername");
103
- $twocheckout_apipassword = pmpro_getOption("twocheckout_apipassword");
104
- $twocheckout_accountnumber = pmpro_getOption("twocheckout_accountnumber");
105
- $twocheckout_secretword = pmpro_getOption("twocheckout_secretword");
106
- $cybersource_merchantid = pmpro_getOption("cybersource_merchantid");
107
- $cybersource_securitykey = pmpro_getOption("cybersource_securitykey");
108
-
109
- $currency = pmpro_getOption("currency");
110
-
111
- $pmpro_accepted_credit_cards = pmpro_getOption("accepted_credit_cards");
112
-
113
- $instructions = pmpro_getOption("instructions");
114
-
115
- $tax_state = pmpro_getOption("tax_state");
116
- $tax_rate = pmpro_getOption("tax_rate");
117
-
118
- //make sure the tax rate is not > 1
119
- if((double)$tax_rate > 1)
120
- {
121
- //assume the entered X%
122
- $tax_rate = $tax_rate / 100;
123
- pmpro_setOption("tax_rate", $tax_rate);
124
- }
125
-
126
- $use_ssl = pmpro_getOption("use_ssl");
127
-
128
- //default settings
129
- if(empty($gateway_environment))
130
- {
131
- $gateway_environment = "sandbox";
132
- pmpro_setOption("gateway_environment", $gateway_environment);
133
- }
134
- if(empty($pmpro_accepted_credit_cards))
135
- {
136
- $pmpro_accepted_credit_cards = "Visa,Mastercard,American Express,Discover";
137
- pmpro_setOption("accepted_credit_cards", $pmpro_accepted_credit_cards);
138
- }
139
-
140
- $pmpro_accepted_credit_cards = explode(",", $pmpro_accepted_credit_cards);
141
-
142
- require_once(dirname(__FILE__) . "/admin_header.php");
143
- ?>
144
-
145
- <form action="" method="post" enctype="multipart/form-data">
146
- <h2><?php _e('Payment Gateway', 'pmpro');?> &amp; <?php _e('SSL Settings', 'pmpro');?></h2>
147
-
148
- <p><?php _e('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>.', 'pmpro'); ?></p>
149
-
150
- <table class="form-table">
151
- <tbody>
152
- <tr>
153
- <th scope="row" valign="top">
154
- <label for="gateway"><?php _e('Payment Gateway', 'pmpro');?>:</label>
155
- </th>
156
- <td>
157
- <select id="gateway" name="gateway" onchange="pmpro_changeGateway(jQuery(this).val());">
158
- <option value="">Testing Only</option>
159
- <option value="check" <?php selected( $gateway, "check" ); ?>><?php _e('Pay by Check', 'pmpro');?></option>
160
- <option value="stripe" <?php selected( $gateway, "stripe" ); ?>>Stripe</option>
161
- <option value="paypalexpress" <?php selected( $gateway, "paypalexpress" ); ?>>PayPal Express</option>
162
- <option value="paypal" <?php selected( $gateway, "paypal" ); ?>>PayPal Website Payments Pro</option>
163
- <option value="payflowpro" <?php selected( $gateway, "payflowpro" ); ?>>PayPal Payflow Pro/PayPal Pro</option>
164
- <option value="paypalstandard" <?php selected( $gateway, "paypalstandard" ); ?>>PayPal Standard</option>
165
- <option value="authorizenet" <?php selected( $gateway, "authorizenet" ); ?>>Authorize.net</option>
166
- <option value="braintree" <?php selected( $gateway, "braintree" ); ?>>Braintree Payments</option>
167
- <option value="twocheckout" <?php selected( $gateway, "twocheckout" ); ?>>2Checkout</option>
168
- <option value="cybersource" <?php selected( $gateway, "cybersource" ); ?>>CyberSource</option>
169
- </select>
170
- </td>
171
- </tr>
172
- <tr class="gateway gateway_cybersource gateway_twocheckout" <?php if($gateway != "cybersource" && $gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
173
- <td colspan="2">
174
- <strong><?php _e('Note', 'pmpro');?>:</strong> <?php _e('This gateway option is in beta. Some functionality may not be available. Please contact Paid Memberships Pro with any issues you run into. <strong>Please be sure to upgrade Paid Memberships Pro to the latest versions when available.</strong>', 'pmpro');?>
175
- </td>
176
- </tr>
177
- <tr class="gateway gateway_paypalstandard" <?php if($gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
178
- <td colspan="2">
179
- <strong><?php _e('Note', 'pmpro');?>:</strong> <?php _e('We do not recommend using PayPal Standard. We suggest using PayPal Express, Website Payments Pro (Legacy), or PayPal Pro (Payflow Pro). <a target="_blank" href="http://www.paidmembershipspro.com/2013/09/read-using-paypal-standard-paid-memberships-pro/">More information on why can be found here.</a>', 'pmpro');?>
180
- </td>
181
- </tr>
182
- <tr>
183
- <th scope="row" valign="top">
184
- <label for="gateway_environment"><?php _e('Gateway Environment', 'pmpro');?>:</label>
185
- </th>
186
- <td>
187
- <select name="gateway_environment">
188
- <option value="sandbox" <?php selected( $gateway_environment, "sandbox" ); ?>><?php _e('Sandbox/Testing', 'pmpro');?></option>
189
- <option value="live" <?php selected( $gateway_environment, "live" ); ?>><?php _e('Live/Production', 'pmpro');?></option>
190
- </select>
191
- <script>
192
- function pmpro_changeGateway(gateway)
193
- {
194
- //hide all gateway options
195
- jQuery('tr.gateway').hide();
196
- jQuery('tr.gateway_'+gateway).show();
197
- }
198
- pmpro_changeGateway(jQuery('#gateway').val());
199
- </script>
200
- </td>
201
- </tr>
202
- <tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
203
- <th scope="row" valign="top">
204
- <label for="payflow_partner"><?php _e('Partner', 'pmpro');?>:</label>
205
- </th>
206
- <td>
207
- <input type="text" id="payflow_partner" name="payflow_partner" size="60" value="<?php echo esc_attr($payflow_partner)?>" />
208
- </td>
209
- </tr>
210
- <tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
211
- <th scope="row" valign="top">
212
- <label for="payflow_vendor"><?php _e('Vendor', 'pmpro');?>:</label>
213
- </th>
214
- <td>
215
- <input type="text" id="payflow_vendor" name="payflow_vendor" size="60" value="<?php echo esc_attr($payflow_vendor)?>" />
216
- </td>
217
- </tr>
218
- <tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
219
- <th scope="row" valign="top">
220
- <label for="payflow_user"><?php _e('User', 'pmpro');?>:</label>
221
- </th>
222
- <td>
223
- <input type="text" id="payflow_user" name="payflow_user" size="60" value="<?php echo esc_attr($payflow_user)?>" />
224
- </td>
225
- </tr>
226
- <tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
227
- <th scope="row" valign="top">
228
- <label for="payflow_pwd"><?php _e('Password', 'pmpro');?>:</label>
229
- </th>
230
- <td>
231
- <input type="password" id="payflow_pwd" name="payflow_pwd" size="60" value="<?php echo esc_attr($payflow_pwd)?>" />
232
- </td>
233
- </tr>
234
- <tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
235
- <th scope="row" valign="top">
236
- <label for="gateway_email"><?php _e('Gateway Account Email', 'pmpro');?>:</label>
237
- </th>
238
- <td>
239
- <input type="text" id="gateway_email" name="gateway_email" size="60" value="<?php echo esc_attr($gateway_email)?>" />
240
- </td>
241
- </tr>
242
- <tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
243
- <th scope="row" valign="top">
244
- <label for="apiusername"><?php _e('API Username', 'pmpro');?>:</label>
245
- </th>
246
- <td>
247
- <input type="text" id="apiusername" name="apiusername" size="60" value="<?php echo esc_attr($apiusername)?>" />
248
- </td>
249
- </tr>
250
- <tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
251
- <th scope="row" valign="top">
252
- <label for="apipassword"><?php _e('API Password', 'pmpro');?>:</label>
253
- </th>
254
- <td>
255
- <input type="text" id="apipassword" name="apipassword" size="60" value="<?php echo esc_attr($apipassword)?>" />
256
- </td>
257
- </tr>
258
- <tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
259
- <th scope="row" valign="top">
260
- <label for="apisignature"><?php _e('API Signature', 'pmpro');?>:</label>
261
- </th>
262
- <td>
263
- <input type="text" id="apisignature" name="apisignature" size="60" value="<?php echo esc_attr($apisignature)?>" />
264
- </td>
265
- </tr>
266
-
267
- <tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
268
- <th scope="row" valign="top">
269
- <label for="loginname"><?php _e('Login Name', 'pmpro');?>:</label>
270
- </th>
271
- <td>
272
- <input type="text" id="loginname" name="loginname" size="60" value="<?php echo esc_attr($loginname)?>" />
273
- </td>
274
- </tr>
275
- <tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
276
- <th scope="row" valign="top">
277
- <label for="transactionkey"><?php _e('Transaction Key', 'pmpro');?>:</label>
278
- </th>
279
- <td>
280
- <input type="text" id="transactionkey" name="transactionkey" size="60" value="<?php echo esc_attr($transactionkey)?>" />
281
- </td>
282
- </tr>
283
-
284
- <tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
285
- <th scope="row" valign="top">
286
- <label for="stripe_secretkey"><?php _e('Secret Key', 'pmpro');?>:</label>
287
- </th>
288
- <td>
289
- <input type="text" id="stripe_secretkey" name="stripe_secretkey" size="60" value="<?php echo esc_attr($stripe_secretkey)?>" />
290
- </td>
291
- </tr>
292
- <tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
293
- <th scope="row" valign="top">
294
- <label for="stripe_publishablekey"><?php _e('Publishable Key', 'pmpro');?>:</label>
295
- </th>
296
- <td>
297
- <input type="text" id="stripe_publishablekey" name="stripe_publishablekey" size="60" value="<?php echo esc_attr($stripe_publishablekey)?>" />
298
- </td>
299
- </tr>
300
-
301
- <tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
302
- <th scope="row" valign="top">
303
- <label for="braintree_merchantid"><?php _e('Merchant ID', 'pmpro');?>:</label>
304
- </th>
305
- <td>
306
- <input type="text" id="braintree_merchantid" name="braintree_merchantid" size="60" value="<?php echo esc_attr($braintree_merchantid)?>" />
307
- </td>
308
- </tr>
309
- <tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
310
- <th scope="row" valign="top">
311
- <label for="braintree_publickey"><?php _e('Public Key', 'pmpro');?>:</label>
312
- </th>
313
- <td>
314
- <input type="text" id="braintree_publickey" name="braintree_publickey" size="60" value="<?php echo esc_attr($braintree_publickey)?>" />
315
- </td>
316
- </tr>
317
- <tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
318
- <th scope="row" valign="top">
319
- <label for="braintree_privatekey"><?php _e('Private Key', 'pmpro');?>:</label>
320
- </th>
321
- <td>
322
- <input type="text" id="braintree_privatekey" name="braintree_privatekey" size="60" value="<?php echo esc_attr($braintree_privatekey)?>" />
323
- </td>
324
- </tr>
325
- <tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
326
- <th scope="row" valign="top">
327
- <label for="braintree_encryptionkey"><?php _e('Client-Side Encryption Key', 'pmpro');?>:</label>
328
- </th>
329
- <td>
330
- <textarea id="braintree_encryptionkey" name="braintree_encryptionkey" rows="3" cols="80"><?php echo esc_textarea($braintree_encryptionkey)?></textarea>
331
- </td>
332
- </tr>
333
-
334
- <tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
335
- <th scope="row" valign="top">
336
- <label for="twocheckout_apiusername"><?php _e('API Username', 'pmpro');?>:</label>
337
- </th>
338
- <td>
339
- <input type="text" id="twocheckout_apiusername" name="twocheckout_apiusername" size="60" value="<?php echo esc_attr($twocheckout_apiusername)?>" />
340
- </td>
341
- </tr>
342
- <tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
343
- <th scope="row" valign="top">
344
- <label for="twocheckout_apipassword"><?php _e('API Password', 'pmpro');?>:</label>
345
- </th>
346
- <td>
347
- <input type="text" id="twocheckout_apipassword" name="twocheckout_apipassword" size="60" value="<?php echo esc_attr($twocheckout_apipassword)?>" />
348
- </td>
349
- </tr>
350
- <tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
351
- <th scope="row" valign="top">
352
- <label for="twocheckout_accountnumber"><?php _e('Account Number', 'pmpro');?>:</label>
353
- </th>
354
- <td>
355
- <input type="text" name="twocheckout_accountnumber" size="60" value="<?php echo $twocheckout_accountnumber?>" />
356
- </td>
357
- </tr>
358
- <tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
359
- <th scope="row" valign="top">
360
- <label for="twocheckout_secretword"><?php _e('Secret Word', 'pmpro');?>:</label>
361
- </th>
362
- <td>
363
- <input type="text" name="twocheckout_secretword" size="60" value="<?php echo $twocheckout_secretword?>" />
364
- </td>
365
- </tr>
366
-
367
- <tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
368
- <th scope="row" valign="top">
369
- <label for="cybersource_merchantid"><?php _e('Merchant ID', 'pmpro');?>:</label>
370
- </th>
371
- <td>
372
- <input type="text" id="cybersource_merchantid" name="cybersource_merchantid" size="60" value="<?php echo esc_attr($cybersource_merchantid)?>" />
373
- </td>
374
- </tr>
375
- <tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
376
- <th scope="row" valign="top">
377
- <label for="cybersource_securitykey"><?php _e('Transaction Security Key', 'pmpro');?>:</label>
378
- </th>
379
- <td>
380
- <textarea id="cybersource_securitykey" name="cybersource_securitykey" rows="3" cols="80"><?php echo esc_textarea($cybersource_securitykey);?></textarea>
381
- </td>
382
- </tr>
383
-
384
- <tr class="gateway gateway_ gateway_paypal gateway_paypalexpress gateway_paypalstandard gateway_braintree gateway_twocheckout gateway_cybersource gateway_stripe gateway_authorizenet gateway_payflowpro gateway_check" <?php if(!empty($gateway) && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource" && $gateway != "payflowpro" && $gateway != "stripe" && $gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
385
- <th scope="row" valign="top">
386
- <label for="currency"><?php _e('Currency', 'pmpro');?>:</label>
387
- </th>
388
- <td>
389
- <select name="currency">
390
- <?php
391
- global $pmpro_currencies;
392
- foreach($pmpro_currencies as $ccode => $cdescription)
393
- {
394
- ?>
395
- <option value="<?php echo $ccode?>" <?php if($currency == $ccode) { ?>selected="selected"<?php } ?>><?php echo $cdescription?></option>
396
- <?php
397
- }
398
- ?>
399
- </select>
400
- <small><?php _e( 'Not all currencies will be supported by every gateway. Please check with your gateway.', 'pmpro' ); ?></small>
401
- </td>
402
- </tr>
403
-
404
- <tr class="gateway gateway_ gateway_stripe gateway_authorizenet gateway_paypal gateway_payflowpro gateway_braintree gateway_twocheckout gateway_cybersource" <?php if(!empty($gateway) && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "stripe" && $gateway != "payflowpro" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
405
- <th scope="row" valign="top">
406
- <label for="creditcards"><?php _e('Accepted Credit Card Types', 'pmpro');?></label>
407
- </th>
408
- <td>
409
- <input type="checkbox" name="creditcards_visa" value="1" <?php if(in_array("Visa", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> Visa<br />
410
- <input type="checkbox" name="creditcards_mastercard" value="1" <?php if(in_array("Mastercard", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> Mastercard<br />
411
- <input type="checkbox" name="creditcards_amex" value="1" <?php if(in_array("American Express", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> American Express<br />
412
- <input type="checkbox" name="creditcards_discover" value="1" <?php if(in_array("Discover", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> Discover<br />
413
- <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 />
414
- <input type="checkbox" name="creditcards_enroute" value="1" <?php if(in_array("EnRoute", $pmpro_accepted_credit_cards)) {?>checked="checked"<?php } ?> /> EnRoute<br />
415
- <input type="checkbox" name="creditcards_jcb" value="1" <?php if(in_array("JCB", $pmpro_accepted_credit_cards)) {?>checked="checked"<?php } ?> /> JCB<br />
416
- </td>
417
- </tr>
418
- <tr class="gateway gateway_check" <?php if($gateway != "check") { ?>style="display: none;"<?php } ?>>
419
- <th scope="row" valign="top">
420
- <label for="instructions"><?php _e('Instructions', 'pmpro');?></label>
421
- </th>
422
- <td>
423
- <textarea id="instructions" name="instructions" rows="3" cols="80"><?php echo esc_textarea($instructions)?></textarea>
424
- <p><small><?php _e('Who to write the check out to. Where to mail it. Shown on checkout, confirmation, and invoice pages.', 'pmpro');?></small></p>
425
- </td>
426
- </tr>
427
-
428
- <tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
429
- <th scope="row" valign="top">
430
- <label for="stripe_billingaddress"><?php _e('Show Billing Address Fields', 'pmpro');?>:</label>
431
- </th>
432
- <td>
433
- <select id="stripe_billingaddress" name="stripe_billingaddress">
434
- <option value="0" <?php if(empty($stripe_billingaddress)) { ?>selected="selected"<?php } ?>><?php _e('No', 'pmpro');?></option>
435
- <option value="1" <?php if(!empty($stripe_billingaddress)) { ?>selected="selected"<?php } ?>><?php _e('Yes', 'pmpro');?></option>
436
- </select>
437
- <small><?php _e("Stripe doesn't require billing address fields. Choose 'No' to hide them on the checkout page.<br /><strong>If No, make sure you disable address verification in the Stripe dashboard settings.</strong>", 'pmpro');?></small>
438
- </td>
439
- </tr>
440
-
441
- <tr class="gateway gateway_ gateway_stripe gateway_authorizenet gateway_paypal gateway_paypalexpress gateway_check gateway_paypalstandard gateway_payflowpro gateway_braintree gateway_twocheckout gateway_cybersource" <?php if(!empty($gateway) && $gateway != "stripe" && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "payflowpro" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
442
- <th scope="row" valign="top">
443
- <label for="tax"><?php _e('Sales Tax', 'pmpro');?> <small>(<?php _e('optional', 'pmpro');?>)</small></label>
444
- </th>
445
- <td>
446
- <?php _e('Tax State', 'pmpro');?>:
447
- <input type="text" id="tax_state" name="tax_state" size="4" value="<?php echo esc_attr($tax_state)?>" /> <small>(<?php _e('abbreviation, e.g. "PA"', 'pmpro');?>)</small>
448
- &nbsp; Tax Rate:
449
- <input type="text" id="tax_rate" name="tax_rate" size="10" value="<?php echo esc_attr($tax_rate)?>" /> <small>(<?php _e('decimal, e.g. "0.06"', 'pmpro');?>)</small>
450
- <p><small><?php _e('US only. If values are given, tax will be applied for any members ordering from the selected state.<br />For non-US or more complex tax rules, use the <a target="_blank" href="http://www.paidmembershipspro.com/2013/10/non-us-taxes-paid-memberships-pro/">pmpro_tax filter</a>.', 'pmpro');?></small></p>
451
- </td>
452
- </tr>
453
- <tr class="gateway gateway_ gateway_stripe gateway_paypalexpress gateway_check gateway_paypalstandard gateway_braintree gateway_twocheckout gateway_cybersource gateway_payflowpro gateway_authorizenet gateway_paypal">
454
- <th scope="row" valign="top">
455
- <label for="use_ssl"><?php _e('Force SSL', 'pmpro');?>:</label>
456
- </th>
457
- <td>
458
- <select id="use_ssl" name="use_ssl">
459
- <option value="0" <?php if(empty($use_ssl)) { ?>selected="selected"<?php } ?>><?php _e('No', 'pmpro');?></option>
460
- <option value="1" <?php if(!empty($use_ssl) && $use_ssl == 1) { ?>selected="selected"<?php } ?>><?php _e('Yes', 'pmpro');?></option>
461
- <option value="2" <?php if(!empty($use_ssl) && $use_ssl == 2) { ?>selected="selected"<?php } ?>><?php _e('Yes (with JavaScript redirects)', 'pmpro');?></option>
462
- </select>
463
- <small>Recommended: Yes. Try the JavaScript redirects setting if you are having issues with infinite redirect loops.</small>
464
- </td>
465
- </tr>
466
- <tr>
467
- <th scope="row" valign="top">
468
- <label for="sslseal"><?php _e('SSL Seal Code', 'pmpro');?>:</label>
469
- </th>
470
- <td>
471
- <textarea id="sslseal" name="sslseal" rows="3" cols="80"><?php echo stripslashes(esc_textarea($sslseal))?></textarea>
472
- <br /><small>Your <strong><a target="_blank" href="http://www.paidmembershipspro.com/documentation/initial-plugin-setup/ssl/">SSL Certificate</a></strong> must be installed by your web host. Your <strong>SSL Seal</strong> will be a short HTML or JavaScript snippet that can be pasted here.</small>
473
- </td>
474
- </tr>
475
- <tr>
476
- <th scope="row" valign="top">
477
- <label for="nuclear_HTTPS"><?php _e('HTTPS Nuclear Option', 'pmpro');?>:</label>
478
- </th>
479
- <td>
480
- <input type="checkbox" id="nuclear_HTTPS" name="nuclear_HTTPS" value="1" <?php if(!empty($nuclear_HTTPS)) { ?>checked="checked"<?php } ?> /> <?php _e('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.', 'pmpro');?>
481
- </td>
482
- </tr>
483
- <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 } ?>>
484
- <th scope="row" valign="top">
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.", "pmpro"));
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.", "pmpro");
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><?php _e('Payment Gateway', 'pmpro');?> &amp; <?php _e('SSL Settings', 'pmpro');?></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"><?php _e('Payment Gateway', 'pmpro');?>:</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 } ?>><?php _e('Pay by Check', 'pmpro');?></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/PayPal Advanced</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><?php _e('Note', 'pmpro');?>:</strong> <?php _e('Payflow Pro currently only supports one-time payments. Users will not be able to checkout for levels with recurring payments.', 'pmpro');?>
171
+ </td>
172
+ </tr>
173
+ <tr>
174
+ <th scope="row" valign="top">
175
+ <label for="gateway_environment"><?php _e('Gateway Environment', 'pmpro');?>:</label>
176
+ </th>
177
+ <td>
178
+ <select name="gateway_environment">
179
+ <option value="sandbox" <?php if($gateway_environment == "sandbox") { ?>selected="selected"<?php } ?>><?php _e('Sandbox/Testing', 'pmpro');?></option>
180
+ <option value="live" <?php if($gateway_environment == "live") { ?>selected="selected"<?php } ?>><?php _e('Live/Production', 'pmpro');?></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"><?php _e('Partner', 'pmpro');?>:</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"><?php _e('Vendor', 'pmpro');?>:</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"><?php _e('User', 'pmpro');?>:</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"><?php _e('Password', 'pmpro');?>:</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"><?php _e('Gateway Account Email', 'pmpro');?>:</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"><?php _e('API Username', 'pmpro');?>:</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"><?php _e('API Password', 'pmpro');?>:</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"><?php _e('API Signature', 'pmpro');?>:</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"><?php _e('Login Name', 'pmpro');?>:</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"><?php _e('Transaction Key', 'pmpro');?>:</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"><?php _e('Secret Key', 'pmpro');?>:</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"><?php _e('Publishable Key', 'pmpro');?>:</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"><?php _e('Merchant ID', 'pmpro');?>:</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"><?php _e('Public Key', 'pmpro');?>:</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"><?php _e('Private Key', 'pmpro');?>:</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"><?php _e('Client-Side Encryption Key', 'pmpro');?>:</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"><?php _e('Currency', 'pmpro');?>:</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"><?php _e('Currency', 'pmpro');?>:</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"><?php _e('Currency', 'pmpro');?>:</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"><?php _e('Accepted Credit Card Types', 'pmpro');?></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"><?php _e('Instructions', 'pmpro');?></label>
390
+ </th>
391
+ <td>
392
+ <textarea id="instructions" name="instructions" rows="3" cols="80"><?php echo esc_textarea($instructions)?></textarea>
393
+ <p><small><?php _e('Who to write the check out to. Where to mail it. Shown on checkout, confirmation, and invoice pages.', 'pmpro');?></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 != "stripe" && $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"><?php _e('Sales Tax', 'pmpro');?> <small>(<?php _e('optional', 'pmpro');?>)</small></label>
399
+ </th>
400
+ <td>
401
+ <?php _e('Tax State', 'pmpro');?>:
402
+ <input type="text" name="tax_state" size="4" value="<?php echo $tax_state?>" /> <small>(<?php _e('abbreviation, e.g. "PA"', 'pmpro');?>)</small>
403
+ &nbsp; Tax Rate:
404
+ <input type="text" name="tax_rate" size="10" value="<?php echo $tax_rate?>" /> <small>(<?php _e('decimal, e.g. "0.06"', 'pmpro');?>)</small>
405
+ <p><small><?php _e('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.', 'pmpro');?></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"><?php _e('Use SSL', 'pmpro');?>:</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 } ?>><?php _e('No', 'pmpro');?></option>
415
+ <option value="1" <?php if(!empty($use_ssl)) { ?>selected="selected"<?php } ?>><?php _e('Yes', 'pmpro');?></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"><?php _e('Use SSL', 'pmpro');?>:</label>
422
+ </th>
423
+ <td>
424
+ <?php _e('Yes', 'pmpro');?>.
425
+ (<?php _e('Required by this Gateway Option', 'pmpro');?>)
426
+ </td>
427
+ </tr>
428
+ <tr>
429
+ <th scope="row" valign="top">
430
+ <label for="sslseal"><?php _e('SSL Seal Code', 'pmpro');?>:</label>
431
+ </th>
432
+ <td>
433
+ <textarea id="sslseal" name="sslseal" rows="3" cols="80"><?php echo stripslashes($sslseal)?></textarea>
434
+ </td>
435
+ </tr>
436
+ <tr>
437
+ <th scope="row" valign="top">
438
+ <label for="nuclear_HTTPS"><?php _e('HTTPS Nuclear Option', 'pmpro');?>:</label>
439
+ </th>
440
+ <td>
441
+ <input type="checkbox" id="nuclear_HTTPS" name="nuclear_HTTPS" value="1" <?php if(!empty($nuclear_HTTPS)) { ?>checked="checked"<?php } ?> /> <?php _e('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.', 'pmpro');?>
442
+ </td>
443
+ </tr>
444
+ <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 } ?>>
445
+ <th scope="row" valign="top">
446
+ <label><?php _e('IPN Handler URL', 'pmpro');?>:</label>
447
+ </th>
448
+ <td>
449
+ <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>
450
+ </td>
451
+ </tr>
452
+ <tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
453
+ <th scope="row" valign="top">
454
+ <label><?php _e('Silent Post URL', 'pmpro');?>:</label>
455
+ </th>
456
+ <td>
457
+ <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>
458
+ </td>
459
+ </tr>
460
+ <tr class="gateway gateway_stripe" <?php if($gateway != "stripe") { ?>style="display: none;"<?php } ?>>
461
+ <th scope="row" valign="top">
462
+ <label><?php _e('Web Hook URL', 'pmpro');?>:</label>
463
+ </th>
464
+ <td>
465
+ <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>
466
+ </td>
467
+ </tr>
468
+ <tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
469
+ <th scope="row" valign="top">
470
+ <label><?php _e('Web Hook URL', 'pmpro');?>:</label>
471
+ </th>
472
+ <td>
473
+ <p>
474
+ <?php _e('To fully integrate with Braintree, be sure to set your Web Hook URL to', 'pmpro');?>
475
+ <pre><?php
476
+ //echo admin_url("admin-ajax.php") . "?action=braintree_webhook";
477
+ echo PMPRO_URL . "/services/braintree-webhook.php";
478
+ ?></pre>.
479
+ </p>
480
+ </td>
481
+ </tr>
482
+ </tbody>
483
+ </table>
484
+ <p class="submit">
485
+ <input name="savesettings" type="submit" class="button-primary" value="<?php _e('Save Settings', 'pmpro');?>" />
486
+ </p>
487
+ </form>
488
+
489
+ <?php
490
+ require_once(dirname(__FILE__) . "/admin_footer.php");
491
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
adminpages/reports.php CHANGED
@@ -10,36 +10,22 @@
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
  }
@@ -47,7 +33,6 @@
47
  //end wrapper
48
  ?>
49
  </div>
50
- </div>
51
  </div>
52
  <?php
53
  }
10
  ?>
11
  <div id="dashboard-widgets-wrap">
12
  <div id="dashboard-widgets" class="metabox-holder pmpro_reports-holder columns-2">
 
 
13
  <?php
14
 
15
  //report widgets
 
 
 
16
  foreach($pmpro_reports as $report => $title)
17
  {
 
 
 
 
 
 
 
 
 
 
 
18
  ?>
19
+ <div class="postbox-container">
20
+ <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);?>';">
21
+ <h3 class="hndle"><span><?php echo $title; ?></span></h3>
22
+ <div class="inside">
23
+ <?php call_user_func("pmpro_report_" . $report . "_widget"); ?>
24
+ <div style="margin-top:10px;border-top: 1px solid #ddd; padding-top: 10px; text-align:center;">
25
+ <a class="button button-primary" href="<?php echo admin_url("admin.php?page=pmpro-reports&report=" . $report);?>"><?php _e('Details', 'pmpro');?></a>
26
+ </div>
27
+ </div>
28
+ </div>
29
  </div>
30
  <?php
31
  }
33
  //end wrapper
34
  ?>
35
  </div>
 
36
  </div>
37
  <?php
38
  }
adminpages/reports/login.php CHANGED
@@ -20,7 +20,7 @@ function pmpro_report_login_widget()
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>
@@ -101,7 +101,7 @@ function pmpro_report_login_page()
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 ";
@@ -112,7 +112,7 @@ function pmpro_report_login_page()
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")
@@ -182,23 +182,23 @@ function pmpro_report_login_page()
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
  }
@@ -250,7 +250,7 @@ function pmpro_report_login_wp_visits()
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"));
@@ -271,7 +271,7 @@ function pmpro_report_login_wp_visits()
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");
@@ -337,7 +337,7 @@ function pmpro_report_login_wp_views()
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");
@@ -368,7 +368,7 @@ function pmpro_report_login_wp_login($user_login)
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"));
@@ -388,7 +388,7 @@ function pmpro_report_login_wp_login($user_login)
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");
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>
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 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 ";
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 LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id";
116
  $sqlQuery .= " WHERE 1=1 ";
117
 
118
  if($l == "all")
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))?></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 echo $visits['last'];?></td>
195
+ <td><?php echo $visits['month'];?></td>
196
+ <td><?php echo $visits['alltime'];?></td>
197
+ <td><?php echo $views['month'];?></td>
198
+ <td><?php echo $views['alltime'];?></td>
199
+ <td><?php echo $logins['last'];?></td>
200
+ <td><?php echo $logins['month'];?></td>
201
+ <td><?php echo $logins['alltime'];?></td>
202
  </tr>
203
  <?php
204
  }
250
  {
251
  $visits = $current_user->pmpro_visits;
252
  if(empty($visits))
253
+ $visits = array("last"=>"N/A", "month"=>0, "alltime"=>0);
254
 
255
  //track logins for user
256
  $visits['last'] = date(get_option("date_format"));
271
  //track for all
272
  $visits = get_option("pmpro_visits");
273
  if(empty($visits))
274
+ $visits = array("today"=>0, "month"=>0, "alltime"=>0);
275
 
276
  $visits['alltime']++;
277
  $thisdate = date("Y-d-m");
337
  //track for all
338
  $views = get_option("pmpro_views");
339
  if(empty($views))
340
+ $views = array("today"=>0, "month"=>0, "alltime"=>0);
341
 
342
  $views['alltime']++;
343
  $thisdate = date("Y-d-m");
368
  $user = get_user_by("login", $user_login);
369
  $logins = $user->pmpro_logins;
370
  if(empty($logins))
371
+ $logins = array("last"=>"N/A", "month"=>0, "alltime"=>0);
372
 
373
  //track logins for user
374
  $logins['last'] = date(get_option("date_format"));
388
  //track logins overall
389
  $logins = get_option("pmpro_logins");
390
  if(empty($logins))
391
+ $logins = array("today"=>0, "month"=>0, "alltime"=>0);
392
 
393
  $logins['alltime']++;
394
  $thisdate = date("Y-d-m");
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 CHANGED
@@ -33,6 +33,9 @@ add_action("init", "pmpro_report_sales_init");
33
  function pmpro_report_sales_widget()
34
  {
35
  global $wpdb, $pmpro_currency_symbol;
 
 
 
36
  ?>
37
  <style>
38
  #pmpro_report_sales div {text-align: center;}
@@ -40,22 +43,18 @@ function pmpro_report_sales_widget()
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>
@@ -123,7 +122,7 @@ function pmpro_report_sales_page()
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 . "' ";
@@ -189,46 +188,48 @@ function pmpro_report_sales_page()
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
 
@@ -283,10 +284,8 @@ function pmpro_report_sales_page()
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);
@@ -309,7 +308,7 @@ function pmpro_getSales($period, $levels = NULL)
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")
@@ -323,7 +322,7 @@ function pmpro_getSales($period, $levels = NULL)
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))
@@ -352,7 +351,7 @@ function pmpro_getRevenue($period, $levels = NULL)
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")
@@ -366,7 +365,7 @@ function pmpro_getRevenue($period, $levels = NULL)
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))
33
  function pmpro_report_sales_widget()
34
  {
35
  global $wpdb, $pmpro_currency_symbol;
36
+ $visits = get_option("pmpro_visits", array("today"=>0, "thisday"=>date("Y-m-d"), "alltime"=>0, "month"=>0, "thismonth"=>date("n")));
37
+ $views = get_option("pmpro_views", array("today"=>0, "thisday"=>date("Y-m-d"), "alltime"=>0, "month"=>0, "thismonth"=>date("n")));
38
+ $logins = get_option("pmpro_logins", array("today"=>0, "thisday"=>date("Y-m-d"), "alltime"=>0, "month"=>0, "thismonth"=>date("n")));
39
  ?>
40
  <style>
41
  #pmpro_report_sales div {text-align: center;}
43
  </style>
44
  <span id="#pmpro_report_sales">
45
  <div style="width: 25%; float: left;">
 
46
  <label>All Time</label>
47
  <em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("all time"), 2);?></em>
48
  </div>
49
  <div style="width: 25%; float: left;">
 
50
  <label>This Year</label>
51
  <em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("this year"), 2);?></em>
52
  </div>
53
  <div style="width: 25%; float: left;">
 
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
  <label>Today</label>
59
  <em><?php echo $pmpro_currency_symbol . number_format(pmpro_getRevenue("today"), 2);?></em>
60
  </div>
122
  $gateway_environment = pmpro_getOption("gateway_environment");
123
 
124
  //get data
125
+ $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') AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
126
 
127
  if(!empty($enddate))
128
  $sqlQuery .= "AND timestamp < '" . $enddate . "' ";
188
  <?php _e('Sales and Revenue', 'pmpro');?>
189
  </h2>
190
 
191
+ <ul class="subsubsub">
192
+ <li>
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" value="<?php _ex('Generate Report', 'Submit button value.', 'pmpro');?>" />
231
+ </li>
232
+ </ul>
233
 
234
  <div id="chart_div" style="clear: both; width: 100%; height: 500px;"></div>
235
 
284
  vAxis: {color: 'green', titleTextStyle: {color: '#51a351'}},
285
  };
286
 
 
287
  var formatter = new google.visualization.NumberFormat({prefix: '<?php echo html_entity_decode($pmpro_currency_symbol);?>'});
288
  formatter.format(data, 1);
 
289
 
290
  var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
291
  chart.draw(data, options);
308
  if(!empty($cache) && !empty($cache[$period]) && !empty($cache[$period][$levels]))
309
  return $cache[$period][$levels];
310
 
311
+ //a sale is an order with status NOT IN('refunded', 'review', 'token')
312
  if($period == "today")
313
  $startdate = date("Y-m-d");
314
  elseif($period == "this month")
322
 
323
  //build query
324
  global $wpdb;
325
+ $sqlQuery = "SELECT COUNT(*) FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token') AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
326
 
327
  //restrict by level
328
  if(!empty($levels))
351
  if(!empty($cache) && !empty($cache[$period]) && !empty($cache[$period][$levels]))
352
  return $cache[$period][$levels];
353
 
354
+ //a sale is an order with status NOT IN('refunded', 'review', 'token')
355
  if($period == "today")
356
  $startdate = date("Y-m-d");
357
  elseif($period == "this month")
365
 
366
  //build query
367
  global $wpdb;
368
+ $sqlQuery = "SELECT SUM(total) FROM $wpdb->pmpro_membership_orders WHERE status NOT IN('refunded', 'review', 'token') AND timestamp >= '" . $startdate . "' AND gateway_environment = '" . esc_sql($gateway_environment) . "' ";
369
 
370
  //restrict by level
371
  if(!empty($levels))
classes/class.memberorder.php CHANGED
@@ -125,7 +125,7 @@
125
  return $this->Gateway;
126
  }
127
 
128
- function getLastMemberOrder($user_id = NULL, $status = 'success', $membership_id = NULL)
129
  {
130
  global $current_user, $wpdb;
131
  if(!$user_id)
@@ -140,9 +140,6 @@
140
  $this->sqlQuery .= "AND status IN('" . implode("','", $status) . "') ";
141
  elseif(!empty($status))
142
  $this->sqlQuery .= "AND status = '" . esc_sql($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,15 +158,8 @@
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 = '" . esc_sql($payment_transaction_id) . "' LIMIT 1");
178
  if($id)
@@ -217,9 +204,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 +239,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
- if(!empty($this->discount_code->code))
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 +265,7 @@
287
  if($tax_state && $tax_rate)
288
  {
289
  //we have values, is this order in the tax state?
290
- if(!empty($this->billing) && trim(strtoupper($this->billing->state)) == trim(strtoupper($tax_state)))
291
  {
292
  //return value, pass through filter
293
  $tax = round((float)$price * (float)$tax_rate, 2);
@@ -375,11 +353,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 = 0;
383
  if(empty($this->paypal_token))
384
  $this->paypal_token = "";
385
  if(empty($this->couponamount))
@@ -395,15 +372,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,8 +392,8 @@
423
  $this->sqlQuery = "UPDATE $wpdb->pmpro_membership_orders
424
  SET `code` = '" . $this->code . "',
425
  `session_id` = '" . $this->session_id . "',
426
- `user_id` = " . intval($this->user_id) . ",
427
- `membership_id` = " . intval($this->membership_id) . ",
428
  `paypal_token` = '" . $this->paypal_token . "',
429
  `billing_name` = '" . esc_sql($this->billing->name) . "',
430
  `billing_street` = '" . esc_sql($this->billing->street) . "',
@@ -436,7 +405,7 @@
436
  `subtotal` = '" . $this->subtotal . "',
437
  `tax` = '" . $this->tax . "',
438
  `couponamount` = '" . $this->couponamount . "',
439
- `certificate_id` = " . intval($this->certificate_id) . ",
440
  `certificateamount` = '" . $this->certificateamount . "',
441
  `total` = '" . $this->total . "',
442
  `payment_type` = '" . $this->payment_type . "',
@@ -465,8 +434,8 @@
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
- " . intval($this->user_id) . ",
469
- " . intval($this->membership_id) . ",
470
  '" . $this->paypal_token . "',
471
  '" . esc_sql(trim($this->billing->name)) . "',
472
  '" . esc_sql(trim($this->billing->street)) . "',
@@ -478,7 +447,7 @@
478
  '" . $amount . "',
479
  '" . $tax . "',
480
  '" . $this->couponamount. "',
481
- " . intval($this->certificate_id) . ",
482
  '" . $this->certificateamount . "',
483
  '" . $total . "',
484
  '" . $this->payment_type . "',
@@ -491,7 +460,7 @@
491
  '" . $this->gateway_environment . "',
492
  '" . esc_sql($this->payment_transaction_id) . "',
493
  '" . esc_sql($this->subscription_transaction_id) . "',
494
- '" . current_time('mysql') . "',
495
  '" . esc_sql($this->affiliate_id) . "',
496
  '" . esc_sql($this->affiliate_subid) . "',
497
  '" . esc_sql($this->notes) . "'
@@ -518,7 +487,7 @@
518
 
519
  while(empty($code))
520
  {
521
- $scramble = md5(AUTH_KEY . current_time('timestamp') . SECURE_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");
@@ -550,7 +519,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 +528,9 @@
559
  return true;
560
  }
561
  else
562
- {
563
  //cancel the gateway subscription first
564
- $result = $this->Gateway->cancel($this);
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 +539,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))
125
  return $this->Gateway;
126
  }
127
 
128
+ function getLastMemberOrder($user_id = NULL, $status = 'success')
129
  {
130
  global $current_user, $wpdb;
131
  if(!$user_id)
140
  $this->sqlQuery .= "AND status IN('" . implode("','", $status) . "') ";
141
  elseif(!empty($status))
142
  $this->sqlQuery .= "AND status = '" . esc_sql($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 = '" . esc_sql($payment_transaction_id) . "' LIMIT 1");
165
  if($id)
204
  global $wpdb;
205
  $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");
206
 
 
 
 
207
  return $this->discount_code;
208
  }
209
 
239
  //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)
240
  if(!empty($this->discount_code) && empty($this->membership_level->membership_id))
241
  {
242
+ $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";
 
 
 
 
 
 
243
  $this->membership_level = $wpdb->get_row($sqlQuery);
244
  }
245
 
265
  if($tax_state && $tax_rate)
266
  {
267
  //we have values, is this order in the tax state?
268
+ if(trim(strtoupper($this->billing->state)) == trim(strtoupper($tax_state)))
269
  {
270
  //return value, pass through filter
271
  $tax = round((float)$price * (float)$tax_rate, 2);
353
  //these fix some warnings/notices
354
  if(empty($this->billing))
355
  {
 
356
  $this->billing->name = $this->billing->street = $this->billing->city = $this->billing->state = $this->billing->zip = $this->billing->country = $this->billing->phone = "";
357
  }
358
  if(empty($this->user_id))
359
+ $this->user_id = "";
360
  if(empty($this->paypal_token))
361
  $this->paypal_token = "";
362
  if(empty($this->couponamount))
372
  if(empty($this->affiliate_subid))
373
  $this->affiliate_subid = "";
374
  if(empty($this->session_id))
375
+ $this->session_id = "";
 
 
 
 
 
 
 
 
376
 
377
  if(empty($this->gateway))
378
  $this->gateway = pmpro_getOption("gateway");
392
  $this->sqlQuery = "UPDATE $wpdb->pmpro_membership_orders
393
  SET `code` = '" . $this->code . "',
394
  `session_id` = '" . $this->session_id . "',
395
+ `user_id` = '" . $this->user_id . "',
396
+ `membership_id` = '" . $this->membership_id . "',
397
  `paypal_token` = '" . $this->paypal_token . "',
398
  `billing_name` = '" . esc_sql($this->billing->name) . "',
399
  `billing_street` = '" . esc_sql($this->billing->street) . "',
405
  `subtotal` = '" . $this->subtotal . "',
406
  `tax` = '" . $this->tax . "',
407
  `couponamount` = '" . $this->couponamount . "',
408
+ `certificate_id` = '" . $this->certificate_id . "',
409
  `certificateamount` = '" . $this->certificateamount . "',
410
  `total` = '" . $this->total . "',
411
  `payment_type` = '" . $this->payment_type . "',
434
  (`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`)
435
  VALUES('" . $this->code . "',
436
  '" . session_id() . "',
437
+ '" . $this->user_id . "',
438
+ '" . $this->membership_id . "',
439
  '" . $this->paypal_token . "',
440
  '" . esc_sql(trim($this->billing->name)) . "',
441
  '" . esc_sql(trim($this->billing->street)) . "',
447
  '" . $amount . "',
448
  '" . $tax . "',
449
  '" . $this->couponamount. "',
450
+ '" . intval($this->certificate_id) . "',
451
  '" . $this->certificateamount . "',
452
  '" . $total . "',
453
  '" . $this->payment_type . "',
460
  '" . $this->gateway_environment . "',
461
  '" . esc_sql($this->payment_transaction_id) . "',
462
  '" . esc_sql($this->subscription_transaction_id) . "',
463
+ now(),
464
  '" . esc_sql($this->affiliate_id) . "',
465
  '" . esc_sql($this->affiliate_subid) . "',
466
  '" . esc_sql($this->notes) . "'
487
 
488
  while(empty($code))
489
  {
490
+ $scramble = md5(AUTH_KEY . time() . SECURE_AUTH_KEY);
491
  $code = substr($scramble, 0, 10);
492
  $code = apply_filters("pmpro_random_code", $code, $this); //filter
493
  $check = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_orders WHERE code = '$code' LIMIT 1");
519
  }
520
 
521
  function cancel()
522
+ {
523
  //only need to cancel on the gateway if there is a subscription id
524
  if(empty($this->subscription_transaction_id))
525
  {
528
  return true;
529
  }
530
  else
531
+ {
532
  //cancel the gateway subscription first
533
+ return $this->Gateway->cancel($this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
534
  }
535
  }
536
 
539
  return $this->Gateway->update($this);
540
  }
541
 
 
 
 
 
 
 
 
 
 
 
542
  function deleteMe()
543
  {
544
  if(empty($this->id))
classes/class.pmproemail.php CHANGED
@@ -44,8 +44,6 @@
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"))
@@ -60,9 +58,7 @@
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"); //default template in plugin
63
- elseif(!empty($this->data) && !empty($this->data['body']))
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 +96,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,$this->attachments))
106
  {
107
  return true;
108
  }
@@ -147,7 +142,6 @@
147
  $this->subject = sprintf(__("Membership for %s at %s has been CANCELLED", "pmpro"), $user->user_login, get_option("blogname"));
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
@@ -183,15 +177,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" => wp_login_url(pmpro_url("account")),
190
  "display_name" => $user->display_name,
191
  "user_email" => $user->user_email,0
192
  );
193
-
194
- if(!empty($invoice) && !pmpro_isLevelFree($user->membership_level))
195
  {
196
  if($invoice->gateway == "paypalexpress")
197
  $this->template = "checkout_express";
@@ -218,14 +211,6 @@
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>" . __("Discount Code", "pmpro") . ": " . $invoice->discount_code->code . "</p>\n";
@@ -283,15 +268,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" => wp_login_url(pmpro_url("account")),
290
  "display_name" => $user->display_name,
291
  "user_email" => $user->user_email,0
292
  );
293
 
294
- if(!empty($invoice) && !pmpro_isLevelFree($user->membership_level))
295
  {
296
  if($invoice->gateway == "paypalexpress")
297
  $this->template = "checkout_express_admin";
@@ -315,14 +299,6 @@
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>" . __("Discount Code", "pmpro") . ": " . $invoice->discount_code->code . "</p>\n";
@@ -342,7 +318,7 @@
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)
@@ -372,7 +348,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 +362,8 @@
387
  "accountnumber" => hideCardNumber($invoice->accountnumber),
388
  "expirationmonth" => $invoice->expirationmonth,
389
  "expirationyear" => $invoice->expirationyear,
390
- "login_link" => wp_login_url(pmpro_url("account"))
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
  }
@@ -425,7 +392,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 +408,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
  }
@@ -473,7 +431,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,16 +445,8 @@
488
  "accountnumber" => hideCardNumber($invoice->accountnumber),
489
  "expirationmonth" => $invoice->expirationmonth,
490
  "expirationyear" => $invoice->expirationyear,
491
- "login_link" => wp_login_url(pmpro_url("billing"))
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
  }
@@ -519,7 +468,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,16 +482,9 @@
534
  "accountnumber" => hideCardNumber($invoice->accountnumber),
535
  "expirationmonth" => $invoice->expirationmonth,
536
  "expirationyear" => $invoice->expirationyear,
537
- "login_link" => wp_login_url(pmpro_url("billing"))
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
 
@@ -566,7 +507,6 @@
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,
@@ -581,16 +521,8 @@
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
  }
@@ -614,11 +546,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->code,
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,17 +563,9 @@
632
  "accountnumber" => hideCardNumber($invoice->accountnumber),
633
  "expirationmonth" => $invoice->expirationmonth,
634
  "expirationyear" => $invoice->expirationyear,
635
- "login_link" => wp_login_url(pmpro_url("account")),
636
- "invoice_link" => wp_login_url(pmpro_url("invoice", "?invoice=" . $invoice->code)
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>" . __("Discount Code", "pmpro") . ": " . $invoice->discount_code . "</p>\n";
@@ -683,9 +606,8 @@
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" => pmpro_getOption("from_email"),
689
  "login_link" => wp_login_url(),
690
  "display_name" => $user->display_name,
691
  "user_email" => $user->user_email,
@@ -694,7 +616,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), current_time("timestamp"))
698
  );
699
 
700
  return $this->sendEmail();
@@ -712,7 +634,7 @@
712
  $this->email = $user->user_email;
713
  $this->subject = sprintf(__("Your membership at %s has ended", "pmpro"), get_option("blogname"));
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" => pmpro_getOption("from_email"), "login_link" => wp_login_url(), "display_name" => $user->display_name, "user_email" => $user->user_email, "levels_link" => pmpro_url("levels"));
716
 
717
  return $this->sendEmail();
718
  }
@@ -737,7 +659,7 @@
737
  $this->email = $user->user_email;
738
  $this->subject = sprintf(__("Your membership at %s will end soon", "pmpro"), get_option("blogname"));
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"), "membership_id" => $user->membership_level->id, "membership_level_name" => $user->membership_level->name, "siteemail" => pmpro_getOption("from_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);
741
 
742
  return $this->sendEmail();
743
  }
@@ -757,9 +679,9 @@
757
  $this->email = $user->user_email;
758
  $this->subject = sprintf(__("Your membership at %s has been changed", "pmpro"), get_option("blogname"));
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"), "membership_id" => $user->membership_level->id, "membership_level_name" => $user->membership_level->name, "siteemail" => pmpro_getOption("from_email"), "login_link" => wp_login_url());
761
  if($user->membership_level->ID)
762
- $this->data["membership_change"] = sprintf(__("The new level is %s.", "pmpro"), $user->membership_level->name);
763
  else
764
  $this->data["membership_change"] = __("Your membership has been cancelled", "pmpro");
765
 
@@ -799,7 +721,7 @@
799
  if($user->membership_level->ID)
800
  $this->data["membership_change"] = sprintf(__("The new level is %s. This membership is free", "pmpro"), $user->membership_level->name);
801
  else
802
- $this->data["membership_change"] = __("Membership has been cancelled", "pmpro");
803
 
804
  if(!empty($user->membership_level->enddate))
805
  {
44
 
45
  $this->headers = array("Content-Type: text/html");
46
 
 
 
47
  //load the template
48
  $locale = apply_filters("plugin_locale", get_locale(), "pmpro");
49
  if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/email/" . $this->template . ".html"))
58
  $this->body = file_get_contents(PMPRO_DIR . "/languages/" . $locale . "/" . $this->template . ".html"); //email folder in PMPro language folder
59
  elseif(file_exists(PMPRO_DIR . "/email/" . $this->template . ".html"))
60
  $this->body = file_get_contents(PMPRO_DIR . "/email/" . $this->template . ".html"); //default template in plugin
61
+
 
 
62
  //header and footer
63
  /* This is handled for all emails via the pmpro_send_html function in paid-memberships-pro now
64
  if(file_exists(TEMPLATEPATH . "/email_header.html"))
96
  $this->template = apply_filters("pmpro_email_template", $temail->template, $this);
97
  $this->body = apply_filters("pmpro_email_body", $temail->body, $this);
98
  $this->headers = apply_filters("pmpro_email_headers", $temail->headers, $this);
 
99
 
100
+ if(wp_mail($this->email,$this->subject,$this->body,$this->headers))
101
  {
102
  return true;
103
  }
142
  $this->subject = sprintf(__("Membership for %s at %s has been CANCELLED", "pmpro"), $user->user_login, get_option("blogname"));
143
  $this->template = "cancel_admin";
144
  $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());
 
145
  $this->data['membership_level_name'] = $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $old_level_id . "' LIMIT 1");
146
 
147
  //start and end date
177
  "user_login" => $user->user_login,
178
  "sitename" => get_option("blogname"),
179
  "siteemail" => pmpro_getOption("from_email"),
 
180
  "membership_level_name" => $user->membership_level->name,
181
  "membership_cost" => pmpro_getLevelCost($user->membership_level),
182
+ "login_link" => pmpro_url("account"),
183
  "display_name" => $user->display_name,
184
  "user_email" => $user->user_email,0
185
  );
186
+
187
+ if($invoice)
188
  {
189
  if($invoice->gateway == "paypalexpress")
190
  $this->template = "checkout_express";
211
  $this->data["accountnumber"] = hideCardNumber($invoice->accountnumber);
212
  $this->data["expirationmonth"] = $invoice->expirationmonth;
213
  $this->data["expirationyear"] = $invoice->expirationyear;
 
 
 
 
 
 
 
 
214
 
215
  if($invoice->getDiscountCode())
216
  $this->data["discount_code"] = "<p>" . __("Discount Code", "pmpro") . ": " . $invoice->discount_code->code . "</p>\n";
268
  "user_login" => $user->user_login,
269
  "sitename" => get_option("blogname"),
270
  "siteemail" => pmpro_getOption("from_email"),
 
271
  "membership_level_name" => $user->membership_level->name,
272
  "membership_cost" => pmpro_getLevelCost($user->membership_level),
273
+ "login_link" => pmpro_url("account"),
274
  "display_name" => $user->display_name,
275
  "user_email" => $user->user_email,0
276
  );
277
 
278
+ if($invoice)
279
  {
280
  if($invoice->gateway == "paypalexpress")
281
  $this->template = "checkout_express_admin";
299
  $this->data["accountnumber"] = hideCardNumber($invoice->accountnumber);
300
  $this->data["expirationmonth"] = $invoice->expirationmonth;
301
  $this->data["expirationyear"] = $invoice->expirationyear;
 
 
 
 
 
 
 
 
302
 
303
  if($invoice->getDiscountCode())
304
  $this->data["discount_code"] = "<p>" . __("Discount Code", "pmpro") . ": " . $invoice->discount_code->code . "</p>\n";
318
  {
319
  $this->template = "checkout_freetrial_admin";
320
  $this->data["discount_code"] = "";
321
+ }
322
 
323
  $enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND status = 'active' LIMIT 1");
324
  if($enddate)
348
  "user_login" => $user->user_login,
349
  "sitename" => get_option("blogname"),
350
  "siteemail" => pmpro_getOption("from_email"),
 
351
  "membership_level_name" => $user->membership_level->name,
352
  "display_name" => $user->display_name,
353
  "user_email" => $user->user_email,
362
  "accountnumber" => hideCardNumber($invoice->accountnumber),
363
  "expirationmonth" => $invoice->expirationmonth,
364
  "expirationyear" => $invoice->expirationyear,
365
+ "login_link" => pmpro_url("account")
366
  );
 
 
 
 
 
 
 
 
367
 
368
  return $this->sendEmail();
369
  }
392
  "user_login" => $user->user_login,
393
  "sitename" => get_option("blogname"),
394
  "siteemail" => pmpro_getOption("from_email"),
 
395
  "membership_level_name" => $user->membership_level->name,
396
  "display_name" => $user->display_name,
397
  "user_email" => $user->user_email,
408
  "expirationyear" => $invoice->expirationyear,
409
  "login_link" => wp_login_url()
410
  );
 
 
 
 
 
 
 
 
411
 
412
  return $this->sendEmail();
413
  }
431
  "user_login" => $user->user_login,
432
  "sitename" => get_option("blogname"),
433
  "siteemail" => pmpro_getOption("from_email"),
 
434
  "membership_level_name" => $user->membership_level->name,
435
  "display_name" => $user->display_name,
436
  "user_email" => $user->user_email,
445
  "accountnumber" => hideCardNumber($invoice->accountnumber),
446
  "expirationmonth" => $invoice->expirationmonth,
447
  "expirationyear" => $invoice->expirationyear,
448
+ "login_link" => pmpro_url("billing")
449
  );
 
 
 
 
 
 
 
 
450
 
451
  return $this->sendEmail();
452
  }
468
  "user_login" => $user->user_login,
469
  "sitename" => get_option("blogname"),
470
  "siteemail" => pmpro_getOption("from_email"),
 
471
  "membership_level_name" => $user->membership_level->name,
472
  "display_name" => $user->display_name,
473
  "user_email" => $user->user_email,
482
  "accountnumber" => hideCardNumber($invoice->accountnumber),
483
  "expirationmonth" => $invoice->expirationmonth,
484
  "expirationyear" => $invoice->expirationyear,
485
+ "login_link" => pmpro_url("billing")
486
  );
487
+
 
 
 
 
 
 
 
488
  return $this->sendEmail();
489
  }
490
 
507
  "user_login" => $user->user_login,
508
  "sitename" => get_option("blogname"),
509
  "siteemail" => pmpro_getOption("from_email"),
 
510
  "membership_level_name" => $user->membership_level->name,
511
  "display_name" => $user->display_name,
512
  "user_email" => $user->user_email,
521
  "accountnumber" => hideCardNumber($invoice->accountnumber),
522
  "expirationmonth" => $invoice->expirationmonth,
523
  "expirationyear" => $invoice->expirationyear,
524
+ "login_link" => pmpro_url("billing")
525
  );
 
 
 
 
 
 
 
 
526
 
527
  return $this->sendEmail();
528
  }
546
  "user_login" => $user->user_login,
547
  "sitename" => get_option("blogname"),
548
  "siteemail" => pmpro_getOption("from_email"),
 
549
  "membership_level_name" => $user->membership_level->name,
550
  "display_name" => $user->display_name,
551
  "user_email" => $user->user_email,
552
+ "invoice_id" => $invoice->payment_transaction_id,
553
  "invoice_total" => $pmpro_currency_symbol . number_format($invoice->total, 2),
554
  "invoice_date" => date(get_option('date_format'), $invoice->timestamp),
555
  "billing_name" => $invoice->billing->name,
563
  "accountnumber" => hideCardNumber($invoice->accountnumber),
564
  "expirationmonth" => $invoice->expirationmonth,
565
  "expirationyear" => $invoice->expirationyear,
566
+ "login_link" => pmpro_url("account"),
567
+ "invoice_link" => pmpro_url("invoice", "?invoice=" . $invoice->code)
568
+ );
 
 
 
 
 
 
 
 
569
 
570
  if($invoice->getDiscountCode())
571
  $this->data["discount_code"] = "<p>" . __("Discount Code", "pmpro") . ": " . $invoice->discount_code . "</p>\n";
606
  "name" => $user->display_name,
607
  "user_login" => $user->user_login,
608
  "sitename" => get_option("blogname"),
 
609
  "membership_level_name" => $user->membership_level->name,
610
+ "siteemail" => get_bloginfo("admin_email"),
611
  "login_link" => wp_login_url(),
612
  "display_name" => $user->display_name,
613
  "user_email" => $user->user_email,
616
  "cycle_period" => $user->membership_level->cycle_period,
617
  "trial_amount" => $pmpro_currency_symbol . $user->membership_level->trial_amount,
618
  "trial_limit" => $user->membership_level->trial_limit,
619
+ "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))
620
  );
621
 
622
  return $this->sendEmail();
634
  $this->email = $user->user_email;
635
  $this->subject = sprintf(__("Your membership at %s has ended", "pmpro"), get_option("blogname"));
636
  $this->template = "membership_expired";
637
+ $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"));
638
 
639
  return $this->sendEmail();
640
  }
659
  $this->email = $user->user_email;
660
  $this->subject = sprintf(__("Your membership at %s will end soon", "pmpro"), get_option("blogname"));
661
  $this->template = "membership_expiring";
662
+ $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);
663
 
664
  return $this->sendEmail();
665
  }
679
  $this->email = $user->user_email;
680
  $this->subject = sprintf(__("Your membership at %s has been changed", "pmpro"), get_option("blogname"));
681
  $this->template = "admin_change";
682
+ $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());
683
  if($user->membership_level->ID)
684
+ $this->data["membership_change"] = sprintf(__("The new level is %s. This membership is free", "pmpro"), $user->membership_level->name);
685
  else
686
  $this->data["membership_change"] = __("Your membership has been cancelled", "pmpro");
687
 
721
  if($user->membership_level->ID)
722
  $this->data["membership_change"] = sprintf(__("The new level is %s. This membership is free", "pmpro"), $user->membership_level->name);
723
  else
724
+ $this->data["membership_change"] = __("membership has been cancelled", "pmpro");
725
 
726
  if(!empty($user->membership_level->enddate))
727
  {
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, current_time("timestamp"))) . "T0:0:0";
47
  }
48
 
49
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
@@ -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, current_time("timestamp"))) . "T0:0:0";
94
  }
95
 
96
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
@@ -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);
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);
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, current_time("timestamp"))) . "T0:0:0";
47
  }
48
 
49
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
@@ -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, current_time("timestamp"))) . "T0:0:0";
94
  }
95
 
96
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
@@ -490,7 +490,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
 
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);
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);
490
  //taxes
491
  $amount_tax = $order->getTaxForPrice($amount);
492
  $trial_tax = $order->getTaxForPrice($trialAmount);
493
+
494
+ $order->subtotal = $amount;
495
  $amount = round((float)$amount + (float)$amount_tax, 2);
496
  $trialAmount = round((float)$trialAmount + (float)$trial_tax, 2);
497
 
classes/gateways/class.pmprogateway_braintree.php CHANGED
@@ -183,19 +183,19 @@
183
  'expirationDate' => $order->braintree->expiration_date,
184
  'cardholderName' => trim($order->FirstName . " " . $order->LastName),
185
  'options' => array(
186
- 'updateExistingToken' => $this->customer->creditCards[0]->token
187
  )
188
  )
189
  )
190
  );
191
-
192
  if($response->success)
193
  {
194
- $this->customer = $response->customer;
195
  }
196
  else
197
  {
198
- $order->error = __("Failed to update customer.", "pmpro") . " " . $response->message;
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,7 +243,7 @@
243
  }
244
  else
245
  {
246
- $order->error = __("Failed to create customer.", "pmpro") . " " . $result->message;
247
  $order->shorterror = $order->error;
248
  return false;
249
  }
@@ -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", current_time("timestamp"))) . "T0:0:0";
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, current_time("timestamp"))) / 86400);
306
 
307
  //now add the actual trial set by the site
308
  if(!empty($order->TrialBillingCycles))
@@ -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) && empty($order->error))
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 = __("Could not find the subscription.", "pmpro") . " " . $e->getMessage();
398
  $order->shorterror = $order->error;
399
  return false; //no subscription found
400
  }
@@ -407,7 +408,7 @@
407
  else
408
  {
409
  $order->updateStatus("cancelled"); //assume it's been cancelled already
410
- $order->error = __("Could not find the subscription.", "pmpro") . " " . $result->message;
411
  $order->shorterror = $order->error;
412
  return false; //no subscription found
413
  }
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.", "pmpro");
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.", "pmpro");
247
  $order->shorterror = $order->error;
248
  return false;
249
  }
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))
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.", "pmpro");
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.", "pmpro");
412
  $order->shorterror = $order->error;
413
  return false; //no subscription found
414
  }
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, current_time("timestamp"))) . "T0:0:0";
52
  }
53
 
54
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
@@ -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, current_time("timestamp"))) . "T0:0:0";
99
  }
100
 
101
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
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);
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);
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
@@ -17,7 +17,7 @@
17
  if($authorization_id)
18
  {
19
  $this->void($order, $authorization_id);
20
- $order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
21
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
22
  return $this->subscribe($order);
23
  }
@@ -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, current_time("timestamp"))) . "T0:0:0";
40
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
41
  if($this->subscribe($order))
42
  {
@@ -159,7 +159,7 @@
159
 
160
  //paypal profile stuff
161
  $nvpStr = "";
162
- $nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCY=" . $pmpro_currency;
163
  $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
164
  //$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
165
 
@@ -179,7 +179,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"])) {
@@ -207,7 +207,8 @@
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")
@@ -219,7 +220,7 @@
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
 
@@ -227,7 +228,7 @@
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))
@@ -253,13 +254,13 @@
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))
@@ -276,7 +277,7 @@
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));
@@ -295,9 +296,9 @@
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";
@@ -309,6 +310,9 @@
309
  $order->shorterror = urldecode($this->httpParsedResponseAr['RESPMSG']);
310
  return false;
311
  }
 
 
 
312
  }
313
 
314
  function update(&$order)
@@ -321,7 +325,7 @@
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;
@@ -365,13 +369,10 @@
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']);
@@ -445,4 +446,4 @@
445
 
446
  return $httpParsedResponseAr;
447
  }
448
- }
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
  }
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
  {
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
  $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"])) {
207
 
208
  //taxes on the amount
209
  $amount = $order->PaymentAmount;
210
+ $amount_tax = $order->getTaxForPrice($amount);
211
+ $order->subtotal = $amount;
212
  $amount = round((float)$amount + (float)$amount_tax, 2);
213
 
214
  if($order->BillingPeriod == "Week")
220
 
221
  //paypal profile stuff
222
  $nvpStr = "&ACTION=A";
223
+ $nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax;
224
  $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
225
  //$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
226
 
228
 
229
  $nvpStr .= "&PAYPERIOD=" . $payperiod;
230
 
231
+ $nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
232
 
233
  //if billing cycles are defined
234
  if(!empty($order->TotalBillingCycles))
254
  $trial_period_days = $order->BillingFrequency * 30; //assume monthly
255
 
256
  //convert to a profile start date
257
+ $order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day")) . "T0:0:0";
258
 
259
  //filter the start date
260
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
261
 
262
  //convert back to days
263
+ $trial_period_days = ceil(abs(strtotime(date("Y-m-d")) - strtotime($order->ProfileStartDate)) / 86400);
264
 
265
  //now add the actual trial set by the site
266
  if(!empty($order->TrialBillingCycles))
277
  }
278
 
279
  //convert back into a date
280
+ $order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day")) . "T0:0:0";
281
 
282
  //start date
283
  $nvpStr .= "&START=" . date("mdY", strtotime($order->ProfileStartDate));
296
  $nvpStr .= "&CITY=" . $order->billing->city . "&STATE=" . $order->billing->state . "&BILLTOCOUNTRY=" . $order->billing->country . "&ZIP=" . $order->billing->zip . "&PHONENUM=" . $order->billing->phone;
297
  }
298
 
299
+ $this->nvpStr = $nvpStr;
300
  $this->httpParsedResponseAr = $this->PPHttpPost('R', $nvpStr);
301
+
302
  if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
303
  $order->subscription_transaction_id = $this->httpParsedResponseAr['PROFILEID'];
304
  $order->status = "success";
310
  $order->shorterror = urldecode($this->httpParsedResponseAr['RESPMSG']);
311
  return false;
312
  }
313
+
314
+ //$order->error = "Recurring subscriptions with Payflow are not currently supported by Paid Memberships Pro";
315
+ //return false;
316
  }
317
 
318
  function update(&$order)
325
 
326
  $nvpStr .= "&PROFILENAME=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
327
 
328
+ $nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
329
 
330
  if(!empty($order->accountnumber))
331
  $nvpStr .= "&ACCT=" . $order->accountnumber . "&EXPDATE=" . $order->expirationmonth . substr($order->expirationyear, 2, 2) . "&CVV2=" . $order->CVV2;
369
  $this->nvpStr = $nvpStr;
370
  $this->httpParsedResponseAr = $this->PPHttpPost('R', $nvpStr);
371
 
372
+ if("0" == strtoupper($this->httpParsedResponseAr["RESULT"])) {
 
373
  $order->updateStatus("cancelled");
374
  return true;
375
+ } else {
 
 
376
  $order->status = "error";
377
  $order->errorcode = $this->httpParsedResponseAr['RESULT'];
378
  $order->error = urldecode($this->httpParsedResponseAr['RESPMSG']);
446
 
447
  return $httpParsedResponseAr;
448
  }
449
+ }
classes/gateways/class.pmprogateway_paypal.php CHANGED
@@ -17,7 +17,7 @@
17
  if($authorization_id)
18
  {
19
  $this->void($order, $authorization_id);
20
- $order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
21
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
22
  return $this->subscribe($order);
23
  }
@@ -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, current_time("timestamp"))) . "T0:0:0";
40
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
41
  if($this->subscribe($order))
42
  {
@@ -244,7 +244,8 @@
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 +370,21 @@
369
  {
370
  //paypal profile stuff
371
  $nvpStr = "";
372
- $nvpStr .= "&PROFILEID=" . urlencode($order->subscription_transaction_id) . "&ACTION=Cancel&NOTE=" . urlencode("User requested cancel.");
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']) . ". " . __("Please contact the site owner or cancel your subscription from within PayPal to make sure you are not charged going forward.", "pmpro");
386
  $order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
387
-
388
- return false;
389
  }
390
  }
391
 
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
  }
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
  {
244
 
245
  //taxes on the amount
246
  $amount = $order->PaymentAmount;
247
+ $amount_tax = $order->getTaxForPrice($amount);
248
+ $order->subtotal = $amount;
249
  $amount = round((float)$amount + (float)$amount_tax, 2);
250
 
251
  //paypal profile stuff
370
  {
371
  //paypal profile stuff
372
  $nvpStr = "";
373
+ $nvpStr .= "&PROFILEID=" . $order->subscription_transaction_id . "&ACTION=Cancel&NOTE=User requested cancel.";
374
 
375
  $this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
376
 
377
+ if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]) || $this->httpParsedResponseAr['L_ERRORCODE0'] == "11556") {
 
378
  $order->updateStatus("cancelled");
379
+ return true;
380
+ //exit('CreateRecurringPaymentsProfile Completed Successfully: '.print_r($this->httpParsedResponseAr, true));
381
+ } else {
 
382
  $order->status = "error";
383
  $order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
384
+ $order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
385
  $order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
386
+ return false;
387
+ //exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
388
  }
389
  }
390
 
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, current_time("timestamp"))) . "T0:0:0";
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
- if(!empty($order->ProfileStartDate) && strtotime($order->ProfileStartDate, current_time("timestamp")) > 0)
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))
@@ -89,14 +86,7 @@
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
 
@@ -178,13 +168,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 +180,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";
@@ -229,8 +216,9 @@
229
 
230
  //taxes on the amount
231
  $amount = $order->PaymentAmount;
232
- $amount_tax = $order->getTaxForPrice($amount);
233
- //$amount = round((float)$amount + (float)$amount_tax, 2);
 
234
 
235
  //paypal profile stuff
236
  $nvpStr = "";
@@ -260,10 +248,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 +274,23 @@
289
  {
290
  //paypal profile stuff
291
  $nvpStr = "";
292
- $nvpStr .= "&PROFILEID=" . urlencode($order->subscription_transaction_id) . "&ACTION=Cancel&NOTE=" . urlencode("User requested cancel.");
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']) . ". " . __("Please contact the site owner or cancel your subscription from within PayPal to make sure you are not charged going forward.", "pmpro");
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
@@ -399,4 +356,4 @@
399
 
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))
86
 
87
  $nvpStr .= "&CANCELURL=" . urlencode(pmpro_url("levels"));
88
 
89
+ $nvpStr = apply_filters("pmpro_set_express_checkout_nvpstr", $nvpStr, $order);
 
 
 
 
 
 
 
90
 
91
  $this->httpParsedResponseAr = $this->PPHttpPost('SetExpressCheckout', $nvpStr);
92
 
168
  $nvpStr = "";
169
  if(!empty($order->Token))
170
  $nvpStr .= "&TOKEN=" . $order->Token;
171
+ $nvpStr .="&AMT=" . $amount . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
 
172
  if(!empty($amount_tax))
173
  $nvpStr .= "&TAXAMT=" . $amount_tax;
174
+ $nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLAMT=AddToNextBilling";
 
 
175
  $nvpStr .= "&DESC=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127));
176
  $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php') . "?action=ipnhandler");
177
  $nvpStr .= "&NOSHIPPING=1";
180
  $order->nvpStr = $nvpStr;
181
 
182
  $this->httpParsedResponseAr = $this->PPHttpPost('DoExpressCheckoutPayment', $nvpStr);
183
+
184
  if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
185
  $order->payment_transaction_id = urldecode($this->httpParsedResponseAr['TRANSACTIONID']);
186
  $order->status = "success";
216
 
217
  //taxes on the amount
218
  $amount = $order->PaymentAmount;
219
+ $amount_tax = $order->getTaxForPrice($amount);
220
+ $order->subtotal = $amount;
221
+ $amount = round((float)$amount + (float)$amount_tax, 2);
222
 
223
  //paypal profile stuff
224
  $nvpStr = "";
248
  $nvpStr .= "&TRIALTOTALBILLINGCYCLES=" . $order->TrialBillingCycles;
249
 
250
  $this->nvpStr = $nvpStr;
251
+
 
 
 
252
  $this->httpParsedResponseAr = $this->PPHttpPost('CreateRecurringPaymentsProfile', $nvpStr);
253
 
254
  if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"])) {
274
  {
275
  //paypal profile stuff
276
  $nvpStr = "";
277
+ $nvpStr .= "&PROFILEID=" . $order->subscription_transaction_id . "&ACTION=Cancel&NOTE=User requested cancel.";
278
 
279
  $this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
280
+ if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]) || $this->httpParsedResponseAr['L_ERRORCODE0'] == "11556") {
 
 
281
  $order->updateStatus("cancelled");
282
+ return true;
283
+ //exit('CreateRecurringPaymentsProfile Completed Successfully: '.print_r($this->httpParsedResponseAr, true));
284
+ } else {
 
285
  $order->status = "error";
286
  $order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
287
+ $order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
288
  $order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
289
 
 
 
 
 
 
 
 
290
  return false;
291
+ //exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
  }
293
+ }
294
 
295
  /**
296
  * PAYPAL Function
356
 
357
  return $httpParsedResponseAr;
358
  }
359
+ }
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' => $order->BillingFrequency,
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, current_time("timestamp"))) . "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, current_time("timestamp"));
123
- $seconds_til_psd = $adjusted_psd_time - current_time('timestamp');
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['src'] = '0';
161
  }
162
  else
163
  $paypal_args['srt'] = '0'; //indefinite subscription
@@ -195,17 +184,13 @@
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
- //wp_die(str_replace("&", "<br />", $paypal_url));
209
 
210
  wp_redirect($paypal_url);
211
  exit;
@@ -215,23 +200,21 @@
215
  {
216
  //paypal profile stuff
217
  $nvpStr = "";
218
- $nvpStr .= "&PROFILEID=" . urlencode($order->subscription_transaction_id) . "&ACTION=Cancel&NOTE=" . urlencode("User requested cancel.");
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']) . ". " . __("Please contact the site owner or cancel your subscription from within PayPal to make sure you are not charged going forward.", "pmpro");
232
  $order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
233
 
234
- return false;
 
235
  }
236
  }
237
 
@@ -271,7 +254,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
 
@@ -299,4 +282,4 @@
299
 
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
  $nvpStr = apply_filters("pmpro_paypal_standard_nvpstr", $nvpStr, $order);
189
 
190
  //redirect to paypal
191
  $paypal_url .= $nvpStr;
192
 
193
+ //die($paypal_url);
194
 
195
  wp_redirect($paypal_url);
196
  exit;
200
  {
201
  //paypal profile stuff
202
  $nvpStr = "";
203
+ $nvpStr .= "&PROFILEID=" . $order->subscription_transaction_id . "&ACTION=Cancel&NOTE=User requested cancel.";
204
 
205
  $this->httpParsedResponseAr = $this->PPHttpPost('ManageRecurringPaymentsProfileStatus', $nvpStr);
206
+ if("SUCCESS" == strtoupper($this->httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($this->httpParsedResponseAr["ACK"]) || $this->httpParsedResponseAr['L_ERRORCODE0'] == "11556") {
 
 
207
  $order->updateStatus("cancelled");
208
+ return true;
209
+ //exit('CreateRecurringPaymentsProfile Completed Successfully: '.print_r($this->httpParsedResponseAr, true));
210
+ } else {
 
211
  $order->status = "error";
212
  $order->errorcode = $this->httpParsedResponseAr['L_ERRORCODE0'];
213
+ $order->error = urldecode($this->httpParsedResponseAr['L_LONGMESSAGE0']);
214
  $order->shorterror = urldecode($this->httpParsedResponseAr['L_SHORTMESSAGE0']);
215
 
216
+ return false;
217
+ //exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
218
  }
219
  }
220
 
254
 
255
  // NVPRequest for submitting to server
256
  $nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_";
257
+
258
  // setting the nvpreq as POST FIELD to curl
259
  curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
260
 
282
 
283
  return $httpParsedResponseAr;
284
  }
285
+ }
classes/gateways/class.pmprogateway_stripe.php CHANGED
@@ -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" => $pmpro_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
- $name = trim($order->FirstName . " " . $order->LastName);
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,7 +182,6 @@
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
  }
@@ -203,25 +192,9 @@
203
  return false;
204
  }
205
 
206
- if(!empty($user_id))
207
- {
208
- //user logged in/etc
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,8 +202,6 @@
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();
@@ -245,7 +216,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 +238,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", current_time("timestamp"))) . "T0:0:0";
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"), current_time("timestamp")) - strtotime($order->ProfileStartDate, current_time("timestamp"))) / 86400);
276
 
277
  //now add the actual trial set by the site
278
  if(!empty($order->TrialBillingCycles))
@@ -290,18 +262,16 @@
290
 
291
  //create a plan
292
  try
293
- {
294
- $plan = array(
295
- "amount" => $amount * 100,
296
- "interval_count" => $order->BillingFrequency,
297
- "interval" => strtolower($order->BillingPeriod),
298
- "trial_period_days" => $trial_period_days,
299
- "name" => $order->membership_name . " for order " . $order->code,
300
- "currency" => strtolower($pmpro_currency),
301
- "id" => $order->code
302
- );
303
-
304
- $plan = Stripe_Plan::create(apply_filters('pmpro_stripe_create_plan_array', $plan));
305
  }
306
  catch (Exception $e)
307
  {
@@ -353,48 +323,29 @@
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
- //find subscription with this order code
369
- $subscriptions = $this->customer->subscriptions->all();
370
-
371
- if(!empty($subscriptions))
 
 
372
  {
373
- //in case only one is returned
374
- if(!is_array($subscriptions))
375
- $subscriptions = array($subscriptions);
376
-
377
- foreach($subscriptions as $sub)
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
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
  }
192
  return false;
193
  }
194
 
195
+ update_user_meta($user_id, "pmpro_stripe_customerid", $this->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();
216
 
217
  //figure out the amounts
218
  $amount = $order->PaymentAmount;
219
+ $amount_tax = $order->getTaxForPrice($amount);
220
+ $order->subtotal = $amount;
221
  $amount = round((float)$amount + (float)$amount_tax, 2);
222
 
223
  /*
238
  $trial_period_days = $order->BillingFrequency * 30; //assume monthly
239
 
240
  //convert to a profile start date
241
+ $order->ProfileStartDate = date("Y-m-d", strtotime("+ " . $trial_period_days . " Day")) . "T0:0:0";
242
 
243
  //filter the start date
244
  $order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
245
 
246
  //convert back to days
247
+ $trial_period_days = ceil(abs(strtotime(date("Y-m-d")) - strtotime($order->ProfileStartDate)) / 86400);
248
 
249
  //now add the actual trial set by the site
250
  if(!empty($order->TrialBillingCycles))
262
 
263
  //create a plan
264
  try
265
+ {
266
+ $plan = Stripe_Plan::create(array(
267
+ "amount" => $amount * 100,
268
+ "interval_count" => $order->BillingFrequency,
269
+ "interval" => strtolower($order->BillingPeriod),
270
+ "trial_period_days" => $trial_period_days,
271
+ "name" => $order->membership_name . " for order " . $order->code,
272
+ "currency" => strtolower(pmpro_getOption("currency")),
273
+ "id" => $order->code)
274
+ );
 
 
275
  }
276
  catch (Exception $e)
277
  {
323
 
324
  function cancel(&$order)
325
  {
 
 
 
326
  //require a subscription id
327
  if(empty($order->subscription_transaction_id))
328
  return false;
329
 
330
  //find the customer
331
+ $this->getCustomer($order);
332
 
333
  if(!empty($this->customer))
334
  {
335
+ //cancel
336
+ try
337
+ {
338
+ $this->customer->cancelSubscription();
339
+ }
340
+ catch(Exception $e)
341
  {
342
+ $order->updateStatus("cancelled"); //assume it's been cancelled already
343
+ $order->error = __("Could not find the subscription.", "pmpro");
344
+ $order->shorterror = $order->error;
345
+ return false; //no subscription found
346
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
347
 
348
+ $order->updateStatus("cancelled");
349
  return true;
350
  }
351
  else
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
@@ -59,9 +59,9 @@ div.pmpro_pagination span.disabled {padding: 2px 5px 2px 5px; margin: 2px; borde
59
  p.pmpro_meta_notice {font-size: .8em; padding-top: 5px; border-top: 1px solid #CCC;}
60
 
61
  /* add ons */
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; }
@@ -73,8 +73,8 @@ height: 10px; overflow: hidden; border-radius: 10px; -moz-border-radius: 10px; -
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; }
@@ -93,5 +93,6 @@ height: 10px; overflow: hidden; border-radius: 10px; -moz-border-radius: 10px; -
93
 
94
  /* reports */
95
  .pmpro_reports-holder { }
 
96
  .pmpro_clickable {cursor: pointer;}
97
  .js .postbox.pmpro_clickable h3 {cursor: pointer;}
59
  p.pmpro_meta_notice {font-size: .8em; padding-top: 5px; border-top: 1px solid #CCC;}
60
 
61
  /* add ons */
62
+ .pmpro_admin .widgets-holder-wrap {clear: both; margin-top: 50px; }
63
+ .pmpro_admin .widgets-holder-wrap h3 {margin: 2em 0 0 0; }
64
+ .pmpro_admin .widgets-holder-wrap .widget {float: left; width: 32%; margin: 0 1% 10px 0; border: 1px solid #DFDFDF; position: relative; }
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; }
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: 5px; right: 5px; }
77
+ .pmpro_admin .widgets-holder-wrap .widget-inside .addon-thumb {width: 100px; height: 100px; float: right; margin: 0 0 10px 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; }
93
 
94
  /* reports */
95
  .pmpro_reports-holder { }
96
+ .pmpro_reports-holder .postbox-container {margin-right: 5px; }
97
  .pmpro_clickable {cursor: pointer;}
98
  .js .postbox.pmpro_clickable h3 {cursor: pointer;}
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,70 +1,108 @@
1
  /*---------------------------------------
2
  Buttons
3
  ---------------------------------------*/
4
- .pmpro_btn, .pmpro_btn:link, .pmpro_content_message a, .pmpro_content_message a:link {
5
- display: inline-block;
6
- background-color: #EFEFEF;
7
- background-image: none;
8
- border: 1px solid #D6D6D6;
9
- -webkit-border-radius: 4px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  -moz-border-radius: 4px;
11
  border-radius: 4px;
12
- padding: 6px 12px;
13
- margin: 0;
14
- color: #444;
15
- font-size: 12px;
16
- font-weight: 700;
17
- text-transform: none;
18
- text-decoration: none;
19
- text-align: center;
20
- white-space: nowrap;
21
- vertical-align: middle;
22
- cursor: pointer;
23
- -webkit-user-select: none;
24
- -moz-user-select: none;
25
- -ms-user-select: none;
26
- -o-user-select: none;
27
- user-select: none;
28
  }
29
 
30
- .pmpro_btn:focus, .pmpro_content_message a:focus {
31
- outline: thin dotted;
32
- outline: 5px auto -webkit-focus-ring-color;
33
- outline-offset: -2px;
 
 
 
 
 
 
34
  }
35
 
36
- .pmpro_btn:hover, .pmpro_btn:focus, .pmpro_content_message a:focus, .pmpro_content_message a:hover {
37
- color: #000;
38
- background-color: #FAFAFA;
 
 
 
 
 
 
 
 
 
 
39
  text-decoration: none;
 
 
 
 
 
40
  }
41
 
42
- .pmpro_btn:active,
43
- .pmpro_btn.active {
 
 
 
 
 
 
44
  background-image: none;
45
  outline: 0;
46
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
47
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
 
48
  }
49
 
50
  .pmpro_btn.disabled,
51
- .pmpro_btn[disabled],
52
- fieldset[disabled] .pmpro_btn {
53
- pointer-events: none;
54
- cursor: not-allowed;
55
  opacity: 0.65;
56
  filter: alpha(opacity=65);
57
  -webkit-box-shadow: none;
 
58
  box-shadow: none;
59
  }
60
 
 
61
  /*---------------------------------------
62
  Forms
63
  ---------------------------------------*/
64
  form.pmpro_form div {clear: left; margin: .5em 0 1em 0; }
65
  form.pmpro_form label {float: left; margin: 3px 10px 0 0; width: 120px; font-weight: bold; text-align: right; }
66
- form.pmpro_form label.pmpro_normal {float: none; margin: 0 0 0 0; width: auto; font-weight: normal; text-align: auto;}
67
- .pmpro_clickable {cursor: pointer;}
68
  form.pmpro_form .likelabel {font-weight: bold; }
69
  form.pmpro_form .input, form.pmpro_form textarea, .input, form.pmpro_form select {padding: 3px; border: 1px solid #AAA; margin: 0 3px 0 0; }
70
  form.pmpro_form textarea {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
@@ -81,21 +119,20 @@ form.pmpro_form #pmpro_processing_message {margin: 5px 0 0 10px; font-style: ita
81
  /*--------------------------------------------------
82
  Messages - Success, Error, Alert
83
  ----------------------------------------------------*/
84
- .pmpro_message {background-color: #d9edf7; margin: .5em 0; padding: 10px 15px; color: #31708f; font-size: 14px; font-weight: 400; line-height: 1.5em; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border: 1px solid #bce8f1; }
85
 
86
- .pmpro_success {background-color: #dff0d8; color: #3c763d; border-color: #bce8f1; }
87
- .pmpro_error {background-color: #f2dede; color: #a94442; border-color: #ebccd1; }
88
- .pmpro_alert {background-color: #fcf8e3; color: #8a6d3b; border-color: #faebcc;}
89
 
90
  .pmpro_content_message a {margin: 5px 5px 0 0; }
91
 
92
- .pmpro_message a {color: #245269; text-decoration: underline; }
93
- .pmpro_success a {color: #2b542c; }
94
- .pmpro_error a {color: #843534; }
95
- .pmpro_alert a {color: #66512c; }
96
 
97
  input.pmpro_error {background-image: none;}
98
- select.pmpro_error {background-image: none;}
99
 
100
  /*---------------------------------------
101
  Membership Checkout
@@ -117,7 +154,7 @@ select.pmpro_error {background-image: none;}
117
 
118
  .pmpro_checkout select {font-size: 11px; }
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
 
1
  /*---------------------------------------
2
  Buttons
3
  ---------------------------------------*/
4
+ .pmpro_btn, .pmpro_content_message a, .pmpro_content_message a:link {
5
+ display: inline-block;
6
+ *display: inline;
7
+ padding: 4px 12px;
8
+ margin-bottom: 0;
9
+ *margin-left: .3em;
10
+ line-height: 20px;
11
+ color: #333333;
12
+ text-align: center;
13
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
14
+ text-decoration: none;
15
+ vertical-align: middle;
16
+ cursor: pointer;
17
+ background-color: #f5f5f5;
18
+ *background-color: #e6e6e6;
19
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
20
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
21
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
22
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
23
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
24
+ background-repeat: repeat-x;
25
+ border: 1px solid #cccccc;
26
+ *border: 0;
27
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
28
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
29
+ border-bottom-color: #b3b3b3;
30
+ -webkit-border-radius: 4px;
31
  -moz-border-radius: 4px;
32
  border-radius: 4px;
33
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
34
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
35
+ *zoom: 1;
36
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
37
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
38
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 
 
 
 
 
 
 
 
 
 
39
  }
40
 
41
+ .pmpro_btn:hover,
42
+ .pmpro_btn:focus,
43
+ .pmpro_btn:active,
44
+ .pmpro_btn.active,
45
+ .pmpro_btn.disabled,
46
+ .pmpro_btn[disabled],
47
+ .pmpro_content_message a:hover {
48
+ color: #333333;
49
+ background-color: #e6e6e6;
50
+ *background-color: #d9d9d9;
51
  }
52
 
53
+ .pmpro_btn:active,
54
+ .pmpro_btn.active {
55
+ background-color: #cccccc \9;
56
+ }
57
+
58
+ .pmpro_btn:first-child {
59
+ *margin-left: 0;
60
+ }
61
+
62
+ .pmpro_btn:hover,
63
+ .pmpro_btn:focus,
64
+ .pmpro_content_message a:hover {
65
+ color: #333333;
66
  text-decoration: none;
67
+ background-position: 0 -15px;
68
+ -webkit-transition: background-position 0.1s linear;
69
+ -moz-transition: background-position 0.1s linear;
70
+ -o-transition: background-position 0.1s linear;
71
+ transition: background-position 0.1s linear;
72
  }
73
 
74
+ .pmpro_btn:focus {
75
+ outline: thin dotted #333;
76
+ outline: 5px auto -webkit-focus-ring-color;
77
+ outline-offset: -2px;
78
+ }
79
+
80
+ .pmpro_btn.active,
81
+ .pmpro_btn:active {
82
  background-image: none;
83
  outline: 0;
84
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
85
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
86
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
87
  }
88
 
89
  .pmpro_btn.disabled,
90
+ .pmpro_btn[disabled] {
91
+ cursor: default;
92
+ background-image: none;
 
93
  opacity: 0.65;
94
  filter: alpha(opacity=65);
95
  -webkit-box-shadow: none;
96
+ -moz-box-shadow: none;
97
  box-shadow: none;
98
  }
99
 
100
+
101
  /*---------------------------------------
102
  Forms
103
  ---------------------------------------*/
104
  form.pmpro_form div {clear: left; margin: .5em 0 1em 0; }
105
  form.pmpro_form label {float: left; margin: 3px 10px 0 0; width: 120px; font-weight: bold; text-align: right; }
 
 
106
  form.pmpro_form .likelabel {font-weight: bold; }
107
  form.pmpro_form .input, form.pmpro_form textarea, .input, form.pmpro_form select {padding: 3px; border: 1px solid #AAA; margin: 0 3px 0 0; }
108
  form.pmpro_form textarea {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
119
  /*--------------------------------------------------
120
  Messages - Success, Error, Alert
121
  ----------------------------------------------------*/
122
+ .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; }
123
 
124
+ .pmpro_success {background-color: #CFEECA; background-image: url(../images/icon_success.gif); color: #208A1B; }
125
+ .pmpro_error {background-color: #F9D6CB; background-image: url(../images/icon_error.gif); color: #E36154; }
126
+ .pmpro_alert {background-color: #FFF6CC; background-image: url(../images/icon_alert.gif); color: #CF8516; }
127
 
128
  .pmpro_content_message a {margin: 5px 5px 0 0; }
129
 
130
+ .pmpro_message a {color: #345395; }
131
+ .pmpro_success a {color: #208A1B; }
132
+ .pmpro_error a {color: #E36154; }
133
+ .pmpro_alert a {color: #CF8516; }
134
 
135
  input.pmpro_error {background-image: none;}
 
136
 
137
  /*---------------------------------------
138
  Membership Checkout
154
 
155
  .pmpro_checkout select {font-size: 11px; }
156
 
157
+ .pmpro_thead-msg {display: block; float: right; width: auto; font-style: italic; font-weight: normal; text-align: right; }
158
 
159
  .pmpro_ordersummary {float: right; }
160
 
email/billing.html CHANGED
@@ -3,7 +3,10 @@
3
  <p>Account: !!display_name!! (!!user_email!!)</p>
4
  <p>
5
  Billing Information:<br />
6
- !!billing_address!!
 
 
 
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>!!billing_address!!</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>!!billing_address!!</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/checkout_check.html CHANGED
@@ -11,7 +11,7 @@
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>
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_freetrial.html CHANGED
@@ -8,7 +8,10 @@
8
 
9
  <p>
10
  Billing Information on File:<br />
11
- !!billing_address!!
 
 
 
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
- !!billing_address!!
 
 
 
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
- !!billing_address!!
 
 
 
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
- !!billing_address!!
 
 
 
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
- !!billing_address!!
 
 
 
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
- !!billing_address!!
 
 
 
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 CHANGED
@@ -4,7 +4,9 @@
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>
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>
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: !!invoice_total!!
7
  </p>
8
  <p>
9
  Billing Information:<br />
10
- !!billing_address!!
 
 
 
 
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>
includes/adminpages.php CHANGED
@@ -1,73 +1,28 @@
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');
@@ -77,98 +32,62 @@ add_action('admin_menu', 'pmpro_add_pages');
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
 
@@ -223,4 +142,4 @@ function pmpro_addons()
223
  function pmpro_orders()
224
  {
225
  require_once(PMPRO_DIR . "/adminpages/orders.php");
226
- }
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  /*
3
  Dashboard Menu
4
  */
5
  function pmpro_add_pages()
6
  {
7
+ global $wpdb;
8
 
9
+ add_menu_page(__('Memberships', 'pmpro'), __('Memberships', 'pmpro'), 'manage_options', 'pmpro-membershiplevels', 'pmpro_membershiplevels', PMPRO_URL . '/images/menu_users.png');
10
+ add_submenu_page('pmpro-membershiplevels', __('Page Settings', 'pmpro'), __('Page Settings', 'pmpro'), 'manage_options', 'pmpro-pagesettings', 'pmpro_pagesettings');
11
+ add_submenu_page('pmpro-membershiplevels', __('Payment Settings', 'pmpro'), __('Payment Settings', 'pmpro'), 'manage_options', 'pmpro-paymentsettings', 'pmpro_paymentsettings');
12
+ add_submenu_page('pmpro-membershiplevels', __('Email Settings', 'pmpro'), __('Email Settings', 'pmpro'), 'manage_options', 'pmpro-emailsettings', 'pmpro_emailsettings');
13
+ add_submenu_page('pmpro-membershiplevels', __('Advanced Settings', 'pmpro'), __('Advanced Settings', 'pmpro'), 'manage_options', 'pmpro-advancedsettings', 'pmpro_advancedsettings');
14
+ add_submenu_page('pmpro-membershiplevels', __('Add Ons', 'pmpro'), __('Add Ons', 'pmpro'), 'manage_options', 'pmpro-addons', 'pmpro_addons');
15
+ add_submenu_page('pmpro-membershiplevels', __('Members List', 'pmpro'), __('Members List', 'pmpro'), 'manage_options', 'pmpro-memberslist', 'pmpro_memberslist');
16
+ add_submenu_page('pmpro-membershiplevels', __('Reports', 'pmpro'), __('Reports', 'pmpro'), 'manage_options', 'pmpro-reports', 'pmpro_reports');
17
+ add_submenu_page('pmpro-membershiplevels', __('Orders', 'pmpro'), __('Orders', 'pmpro'), 'manage_options', 'pmpro-orders', 'pmpro_orders');
18
+ add_submenu_page('pmpro-membershiplevels', __('Discount Codes', 'pmpro'), __('Discount Codes', 'pmpro'), 'manage_options', 'pmpro-discountcodes', 'pmpro_discountcodes');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  //rename the automatically added Memberships submenu item
21
  global $submenu;
22
  if(!empty($submenu['pmpro-membershiplevels']))
23
  {
24
+ $submenu['pmpro-membershiplevels'][0][0] = "Membership Levels";
25
+ $submenu['pmpro-membershiplevels'][0][3] = "Membership Levels";
 
 
 
 
 
 
 
26
  }
27
  }
28
  add_action('admin_menu', 'pmpro_add_pages');
32
  */
33
  function pmpro_admin_bar_menu() {
34
  global $wp_admin_bar;
35
+ if ( !is_super_admin() || !is_admin_bar_showing() )
 
 
36
  return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  $wp_admin_bar->add_menu( array(
38
  'id' => 'paid-memberships-pro',
39
  'title' => __( 'Memberships', 'pmpro'),
40
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-membershiplevels') ) );
41
+ $wp_admin_bar->add_menu( array(
42
+ 'id' => 'pmpro-membership-levels',
43
+ 'parent' => 'paid-memberships-pro',
44
+ 'title' => __( 'Membership Levels', 'pmpro'),
45
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-membershiplevels') ) );
46
+ $wp_admin_bar->add_menu( array(
47
+ 'id' => 'pmpro-page-settings',
48
+ 'parent' => 'paid-memberships-pro',
49
+ 'title' => __( 'Page Settings', 'pmpro'),
50
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-pagesettings') ) );
51
+ $wp_admin_bar->add_menu( array(
52
+ 'id' => 'pmpro-payment-settings',
53
+ 'parent' => 'paid-memberships-pro',
54
+ 'title' => __( 'Payment Settings', 'pmpro'),
55
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-paymentsettings') ) );
56
+ $wp_admin_bar->add_menu( array(
57
+ 'id' => 'pmpro-email-settings',
58
+ 'parent' => 'paid-memberships-pro',
59
+ 'title' => __( 'Email Settings', 'pmpro'),
60
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-emailsettings') ) );
61
+ $wp_admin_bar->add_menu( array(
62
+ 'id' => 'pmpro-advanced-settings',
63
+ 'parent' => 'paid-memberships-pro',
64
+ 'title' => __( 'Advanced Settings', 'pmpro'),
65
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-advancedsettings') ) );
66
+ $wp_admin_bar->add_menu( array(
67
+ 'id' => 'pmpro-addons',
68
+ 'parent' => 'paid-memberships-pro',
69
+ 'title' => __( 'Add Ons', 'pmpro'),
70
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-addons') ) );
71
+ $wp_admin_bar->add_menu( array(
72
+ 'id' => 'pmpro-members-list',
73
+ 'parent' => 'paid-memberships-pro',
74
+ 'title' => __( 'Members List', 'pmpro'),
75
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-memberslist') ) );
76
+ $wp_admin_bar->add_menu( array(
77
+ 'id' => 'pmpro-reports',
78
+ 'parent' => 'paid-memberships-pro',
79
+ 'title' => __( 'Reports', 'pmpro'),
80
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-reports') ) );
81
+ $wp_admin_bar->add_menu( array(
82
+ 'id' => 'pmpro-orders',
83
+ 'parent' => 'paid-memberships-pro',
84
+ 'title' => __( 'Orders', 'pmpro'),
85
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-orders') ) );
86
+ $wp_admin_bar->add_menu( array(
87
+ 'id' => 'pmpro-discount-codes',
88
+ 'parent' => 'paid-memberships-pro',
89
+ 'title' => __( 'Discount Codes', 'pmpro'),
90
+ 'href' => get_admin_url(NULL, '/admin.php?page=pmpro-discountcodes') ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  }
92
  add_action('admin_bar_menu', 'pmpro_admin_bar_menu', 1000);
93
 
142
  function pmpro_orders()
143
  {
144
  require_once(PMPRO_DIR . "/adminpages/orders.php");
145
+ }
includes/cleanup.php CHANGED
@@ -15,7 +15,18 @@ function pmpro_delete_user($user_id = NULL)
15
  }
16
  else
17
  {
18
- //okay, guessing they didn't have a level
 
 
 
 
 
 
 
 
 
 
 
19
  }
20
  }
21
  add_action('delete_user', 'pmpro_delete_user');
15
  }
16
  else
17
  {
18
+ //couldn't delete the subscription
19
+ //we should probably notify the admin
20
+ global $pmpro_error;
21
+ if(!empty($pmpro_error))
22
+ {
23
+ $pmproemail = new PMProEmail();
24
+ $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($user_id)) . "</p><p>Error: " . $pmpro_error . "</p>");
25
+ $last_order = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' ORDER BY timestamp DESC LIMIT 1");
26
+ if(!empty($last_order))
27
+ $pmproemail->data["body"] .= "<p>Last Invoice:<br />" . nl2br(var_export($last_order, true)) . "</p>";
28
+ $pmproemail->sendEmail(get_bloginfo("admin_email"));
29
+ }
30
  }
31
  }
32
  add_action('delete_user', 'pmpro_delete_user');
includes/content.php CHANGED
@@ -24,7 +24,7 @@ function pmpro_has_membership_access($post_id = NULL, $user_id = NULL, $return_m
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")
@@ -80,7 +80,6 @@ function pmpro_has_membership_access($post_id = NULL, $user_id = NULL, $return_m
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
@@ -106,7 +105,7 @@ function pmpro_has_membership_access($post_id = NULL, $user_id = NULL, $return_m
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
@@ -118,76 +117,42 @@ function pmpro_has_membership_access($post_id = NULL, $user_id = NULL, $return_m
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;
@@ -402,4 +367,4 @@ function pmpro_hide_pages_redirect()
402
  }
403
  }
404
  }
405
- add_action('wp', 'pmpro_hide_pages_redirect');
24
  if($user_id == $current_user->ID)
25
  $myuser = $current_user;
26
  else
27
+ $myuser = get_user($user_id);
28
 
29
  //for these post types, we want to check the parent
30
  if($mypost->post_type == "attachment" || $mypost->post_type == "revision")
80
  }
81
  elseif(!empty($myuser->ID))
82
  {
 
83
  if(!empty($myuser->membership_level->ID) && in_array($myuser->membership_level->ID, $post_membership_levels_ids))
84
  {
85
  //the users membership id is one that will grant access
105
  //general filter for all posts
106
  $hasaccess = apply_filters("pmpro_has_membership_access_filter", $hasaccess, $mypost, $myuser, $post_membership_levels);
107
  //filter for this post type
108
+ if(has_filter("pmpro_has_membership_access_action_" . $mypost->post_type))
109
  $hasaccess = apply_filters("pmpro_has_membership_access_filter_" . $mypost->post_type, $hasaccess, $mypost, $myuser, $post_membership_levels);
110
 
111
  //return
117
 
118
  function pmpro_search_filter($query)
119
  {
120
+ global $current_user, $wpdb, $pmpro_pages;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
 
122
+ //hide pmpro pages from search results
123
+ if(!$query->is_admin && $query->is_search)
124
+ {
125
+ $query->set('post__not_in', $pmpro_pages ); // id of page or post
126
+ }
 
 
 
 
 
 
 
 
 
 
 
 
127
 
128
+ //hide member pages from non-members (make sure they aren't hidden from members)
129
+ if(!$query->is_admin && $query->is_search)
130
+ {
131
+ //get pages that are in levels, but not in mine
132
+ $sqlQuery = "SELECT page_id FROM $wpdb->pmpro_memberships_pages ";
133
+ if(!empty($current_user->membership_level->ID))
134
+ $sqlQuery .= "WHERE membership_id <> '" . $current_user->membership_level->ID . "' ";
135
+ $hidden_page_ids = $wpdb->get_col($sqlQuery);
136
+ if($hidden_page_ids)
137
+ $query->set('post__not_in', $hidden_page_ids ); // id of page or post
138
+
139
+ //get categories that are filtered by level, but not my level
140
+ $sqlQuery = "SELECT category_id FROM $wpdb->pmpro_memberships_categories ";
141
+ if(!empty($current_user->membership_level->ID))
142
+ $sqlQuery .= "WHERE membership_id <> '" . $current_user->membership_level->ID . "' ";
143
+ $hidden_post_cats = $wpdb->get_col($sqlQuery);
144
+
145
+ //make this work
146
+ if($hidden_post_cats)
147
+ $query->set('category__not_in', $hidden_post_cats);
148
+ }
149
 
150
+ return $query;
151
  }
152
+ $showexcerpts = pmpro_getOption("showexcerpts");
153
+ if(empty($showexcerpts))
154
+ add_filter( 'pre_get_posts', 'pmpro_search_filter' );
155
+
156
  function pmpro_membership_content_filter($content, $skipcheck = false)
157
  {
158
  global $post, $current_user;
367
  }
368
  }
369
  }
370
+ add_action('wp', 'pmpro_hide_pages_redirect');
includes/currencies.php CHANGED
@@ -10,13 +10,10 @@
10
  'AUD' => __('Australian Dollars (&#36;)', 'pmpro'),
11
  'BRL' => __('Brazilian Real (&#36;)', 'pmpro'),
12
  'CAD' => __('Canadian Dollars (&#36;)', 'pmpro'),
13
- 'CNY' => __('Chinese Yuan', 'pmpro'),
14
  'CZK' => __('Czech Koruna', 'pmpro'),
15
  'DKK' => __('Danish Krone', 'pmpro'),
16
  'HKD' => __('Hong Kong Dollar (&#36;)', '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 (&yen;)', 'pmpro'),
22
  'MYR' => __('Malaysian Ringgits', 'pmpro'),
@@ -26,19 +23,15 @@
26
  'PHP' => __('Philippine Pesos', 'pmpro'),
27
  'PLN' => __('Polish Zloty', 'pmpro'),
28
  'SGD' => __('Singapore Dollar (&#36;)', '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 (not using this anymore since 1.7.4)
42
  global $pmpro_stripe_currencies;
43
  $pmpro_stripe_currencies = array(
44
  'USD' => __('US Dollars (&#36;)', 'pmpro'),
10
  'AUD' => __('Australian Dollars (&#36;)', 'pmpro'),
11
  'BRL' => __('Brazilian Real (&#36;)', 'pmpro'),
12
  'CAD' => __('Canadian Dollars (&#36;)', 'pmpro'),
 
13
  'CZK' => __('Czech Koruna', 'pmpro'),
14
  'DKK' => __('Danish Krone', 'pmpro'),
15
  'HKD' => __('Hong Kong Dollar (&#36;)', 'pmpro'),
16
  'HUF' => __('Hungarian Forint', 'pmpro'),
 
 
17
  'ILS' => __('Israeli Shekel', 'pmpro'),
18
  'JPY' => __('Japanese Yen (&yen;)', 'pmpro'),
19
  'MYR' => __('Malaysian Ringgits', 'pmpro'),
23
  'PHP' => __('Philippine Pesos', 'pmpro'),
24
  'PLN' => __('Polish Zloty', 'pmpro'),
25
  'SGD' => __('Singapore Dollar (&#36;)', '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 (&#36;)', 'pmpro'),
includes/email.php CHANGED
@@ -4,49 +4,20 @@
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.
@@ -59,25 +30,22 @@ if(empty($email_member_notification))
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;
4
  */
5
  function pmpro_wp_mail_from_name($from_name)
6
  {
7
+ $pmpro_from_name = pmpro_getOption("from_name");
8
+ if ($pmpro_from_name)
9
+ return $pmpro_from_name;
 
 
 
 
 
 
 
10
  return $from_name;
11
  }
12
  function pmpro_wp_mail_from($from_email)
13
  {
14
+ $pmpro_from_email = pmpro_getOption("from_email");
15
+ if ($pmpro_from_email && is_email( $pmpro_from_email ) )
16
+ return $pmpro_from_email;
 
 
 
 
 
 
 
 
 
 
 
 
17
  return $from_email;
18
  }
19
+ add_filter('wp_mail_from_name', 'pmpro_wp_mail_from_name');
20
+ add_filter('wp_mail_from', 'pmpro_wp_mail_from');
 
 
 
 
 
 
 
 
 
 
21
 
22
  /*
23
  If the $email_member_notification option is empty, disable the wp_new_user_notification email at checkout.
30
  Adds template files and changes content type to html if using PHPMailer directly.
31
  */
32
  function pmpro_send_html( $phpmailer ) {
 
33
  // Set the original plain text message
34
  $phpmailer->AltBody = wp_specialchars_decode($phpmailer->Body, ENT_QUOTES);
35
  // Clean < and > around text links in WP 3.1
36
  $phpmailer->Body = preg_replace('#<(http://[^*]+)>#', '$1', $phpmailer->Body);
37
  // Convert line breaks & make links clickable
38
+ $phpmailer->Body = wpautop ( make_clickable ($phpmailer->Body) );
39
 
40
+ // Add template to message
41
+ if(file_exists(TEMPLATEPATH . "/email_header.html"))
42
+ {
43
+ $phpmailer->Body = file_get_contents(TEMPLATEPATH . "/email_header.html") . "\n" . $phpmailer->Body;
44
+ }
45
+ if(file_exists(TEMPLATEPATH . "/email_footer.html"))
46
+ {
47
+ $phpmailer->Body = $phpmailer->Body . "\n" . file_get_contents(TEMPLATEPATH . "/email_footer.html");
48
+ }
 
 
49
 
50
  // Replace variables in email
51
  global $current_user;
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 = current_time('timestamp');
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 = current_time('timestamp');
66
  $time_left = $expiration_date - $todays_date;
67
 
68
  //time left?
@@ -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?
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,1608 @@
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
- if(!function_exists("sornot"))
21
- {
22
- function sornot($t, $n)
23
- {
24
- if($n == 1)
25
- return $t;
26
- else
27
- return $t . "s";
28
- }
29
- }
30
-
31
- //setup wpdb for the tables we need
32
- function pmpro_setDBTables()
33
- {
34
- global $table_prefix, $wpdb;
35
- $wpdb->hide_errors();
36
- $wpdb->pmpro_membership_levels = $table_prefix . 'pmpro_membership_levels';
37
- $wpdb->pmpro_memberships_users = $table_prefix . 'pmpro_memberships_users';
38
- $wpdb->pmpro_memberships_categories = $table_prefix . 'pmpro_memberships_categories';
39
- $wpdb->pmpro_memberships_pages = $table_prefix . 'pmpro_memberships_pages';
40
- $wpdb->pmpro_membership_orders = $table_prefix . 'pmpro_membership_orders';
41
- $wpdb->pmpro_discount_codes = $wpdb->prefix . 'pmpro_discount_codes';
42
- $wpdb->pmpro_discount_codes_levels = $wpdb->prefix . 'pmpro_discount_codes_levels';
43
- $wpdb->pmpro_discount_codes_uses = $wpdb->prefix . 'pmpro_discount_codes_uses';
44
- }
45
- pmpro_setDBTables();
46
-
47
- //from: http://stackoverflow.com/questions/5266945/wordpress-how-detect-if-current-page-is-the-login-page/5892694#5892694
48
- function pmpro_is_login_page() {
49
- return (in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')) || is_page("login"));
50
- }
51
-
52
- //thanks: http://wordpress.org/support/topic/is_plugin_active
53
- function pmpro_is_plugin_active( $plugin ) {
54
- return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
55
- }
56
-
57
- //scraping - override n if you have more than 1 group of matches and don't want the first group
58
- function pmpro_getMatches($p, $s, $firstvalue = FALSE, $n = 1)
59
- {
60
- $ok = preg_match_all($p, $s, $matches);
61
-
62
- if(!$ok)
63
- return false;
64
- else
65
- {
66
- if($firstvalue)
67
- return $matches[$n][0];
68
- else
69
- return $matches[$n];
70
- }
71
- }
72
-
73
- function pmpro_br2nl($text, $tags = "br")
74
- {
75
- if(!is_array($tags))
76
- $tags = explode(" ", $tags);
77
-
78
- foreach($tags as $tag)
79
- {
80
- $text = eregi_replace("<" . $tag . "[^>]*>", "\n", $text);
81
- $text = eregi_replace("</" . $tag . "[^>]*>", "\n", $text);
82
- }
83
-
84
- return($text);
85
- }
86
-
87
- function pmpro_getOption($s, $force = false)
88
- {
89
- if(isset($_REQUEST[$s]) && !$force)
90
- {
91
- if(!is_array($_REQUEST[$s]))
92
- return trim($_REQUEST[$s]);
93
- else
94
- return $_REQUEST[$s];
95
- }
96
- elseif(get_option("pmpro_" . $s))
97
- return get_option("pmpro_" . $s);
98
- else
99
- return "";
100
- }
101
-
102
- function pmpro_setOption($s, $v = NULL)
103
- {
104
- //no value is given, set v to the request var
105
- if($v === NULL && isset($_REQUEST[$s]))
106
- $v = $_REQUEST[$s];
107
-
108
- if(is_array($v))
109
- $v = implode(",", $v);
110
- else
111
- $v = trim($v);
112
-
113
- return update_option("pmpro_" . $s, $v);
114
- }
115
-
116
- function pmpro_get_slug($post_id)
117
- {
118
- global $pmpro_slugs, $wpdb;
119
- if(!$pmpro_slugs[$post_id])
120
- $pmpro_slugs[$post_id] = $wpdb->get_var("SELECT post_name FROM $wpdb->posts WHERE ID = '" . $post_id . "' LIMIT 1");
121
-
122
- return $pmpro_slugs[$post_id];
123
- }
124
-
125
- function pmpro_url($page = NULL, $querystring = "", $scheme = NULL)
126
- {
127
- global $besecure;
128
- $besecure = apply_filters("besecure", $besecure);
129
-
130
- if(!$scheme && $besecure)
131
- $scheme = "https";
132
- elseif(!$scheme)
133
- $scheme = "http";
134
-
135
- if(!$page)
136
- $page = "levels";
137
-
138
- global $pmpro_pages;
139
-
140
- //start with the permalink
141
- $url = get_permalink($pmpro_pages[$page]);
142
-
143
- //WPML/etc support
144
- if(function_exists("icl_object_id") && defined("ICL_LANGUAGE_CODE"))
145
- {
146
- $trans_id = icl_object_id($pmpro_pages[$page], "page", false, ICL_LANGUAGE_CODE);
147
- if(!empty($trans_id))
148
- {
149
- $url = get_permalink($trans_id);
150
- }
151
- }
152
-
153
- //figure out querystring
154
- if(strpos($url, "?"))
155
- $querystring = str_replace("?", "&", $querystring);
156
- $url .= $querystring;
157
-
158
- //figure out scheme
159
- if(is_ssl())
160
- $url = str_replace("http:", "https:", $url);
161
-
162
- return $url;
163
- }
164
-
165
- function pmpro_isLevelFree(&$level)
166
- {
167
- if(!empty($level) && $level->initial_payment <= 0 && $level->billing_amount <= 0 && $level->trial_amount <= 0)
168
- return true;
169
- else
170
- return false;
171
- }
172
-
173
- function pmpro_isLevelRecurring(&$level)
174
- {
175
- if(!empty($level) && ($level->billing_amount > 0 || $level->trial_amount > 0))
176
- return true;
177
- else
178
- return false;
179
- }
180
-
181
- function pmpro_isLevelTrial(&$level)
182
- {
183
- if($level->trial_limit > 0)
184
- {
185
- return true;
186
- }
187
- else
188
- return false;
189
- }
190
-
191
- function pmpro_isLevelExpiring(&$level)
192
- {
193
- if($level->expiration_number > 0)
194
- return true;
195
- else
196
- return false;
197
- }
198
-
199
- function pmpro_getLevelCost(&$level, $tags = true, $short = false)
200
- {
201
- global $pmpro_currency_symbol;
202
- //initial payment
203
- if(!$short)
204
- $r = sprintf(__('The price for membership is <strong>%s</strong> now', 'pmpro'), $pmpro_currency_symbol . number_format($level->initial_payment, 2));
205
- else
206
- $r = sprintf(__('<strong>%s</strong> now', 'pmpro'), $pmpro_currency_symbol . number_format($level->initial_payment, 2));
207
-
208
- //recurring part
209
- if($level->billing_amount != '0.00')
210
- {
211
- if($level->billing_limit > 1)
212
- {
213
- if($level->cycle_number == '1')
214
- {
215
- $r .= sprintf(__(' and then <strong>%s per %s for %d more %s</strong>.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, pmpro_translate_billing_period($level->cycle_period), $level->billing_limit, pmpro_translate_billing_period($level->cycle_period, $level->billing_limit));
216
- }
217
- else
218
- {
219
- $r .= sprintf(__(' and then <strong>%s every %d %s for %d more %s</strong>.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number), $level->billing_limit, pmpro_translate_billing_period($level->cycle_period, $level->billing_limit));
220
- }
221
- }
222
- elseif($level->billing_limit == 1)
223
- {
224
- $r .= sprintf(__(' and then <strong>%s after %d %s</strong>.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number));
225
- }
226
- else
227
- {
228
- if( $level->billing_amount === $level->initial_payment ) {
229
- if($level->cycle_number == '1')
230
- {
231
- $r = sprintf(__('The price for membership is <strong>%s per %s</strong>.', 'pmpro'), $pmpro_currency_symbol . number_format($level->initial_payment, 2), pmpro_translate_billing_period($level->cycle_period) );
232
- }
233
- else
234
- {
235
- $r = sprintf(__('The price for membership is <strong>%s every %d %s</strong>.', 'pmpro'), $pmpro_currency_symbol . number_format($level->initial_payment, 2), $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number) );
236
- }
237
- } else {
238
- if($level->cycle_number == '1')
239
- {
240
- $r .= sprintf(__(' and then <strong>%s per %s</strong>.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, pmpro_translate_billing_period($level->cycle_period));
241
- }
242
- else
243
- {
244
- $r .= sprintf(__(' and then <strong>%s every %d %s</strong>.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number));
245
- }
246
- }
247
- }
248
- }
249
- else
250
- $r .= '.';
251
-
252
- //add a space
253
- $r .= ' ';
254
-
255
- //trial part
256
- if($level->trial_limit)
257
- {
258
- if($level->trial_amount == '0.00')
259
- {
260
- if($level->trial_limit == '1')
261
- {
262
- $r .= ' ' . __('After your initial payment, your first payment is Free.', 'pmpro');
263
- }
264
- else
265
- {
266
- $r .= ' ' . sprintf(__('After your initial payment, your first %d payments are Free.', 'pmpro'), $level->trial_limit);
267
- }
268
- }
269
- else
270
- {
271
- if($level->trial_limit == '1')
272
- {
273
- $r .= ' ' . sprintf(__('After your initial payment, your first payment will cost %s.', 'pmpro'), $pmpro_currency_symbol . $level->trial_amount);
274
- }
275
- else
276
- {
277
- $r .= ' ' . sprintf(__('After your initial payment, your first %d payments will cost %s.', 'pmpro'), $level->trial_limit, $pmpro_currency_symbol . $level->trial_amount);
278
- }
279
- }
280
- }
281
-
282
- //taxes part
283
- $tax_state = pmpro_getOption("tax_state");
284
- $tax_rate = pmpro_getOption("tax_rate");
285
-
286
- if($tax_state && $tax_rate && !pmpro_isLevelFree($level))
287
- {
288
- $r .= sprintf(__('Customers in %s will be charged %s%% tax.', 'pmpro'), $tax_state, round($tax_rate * 100, 2));
289
- }
290
-
291
- if(!$tags)
292
- $r = strip_tags($r);
293
-
294
- $r = apply_filters("pmpro_level_cost_text", $r, $level);
295
- return $r;
296
- }
297
-
298
- function pmpro_getLevelExpiration(&$level)
299
- {
300
- if($level->expiration_number)
301
- {
302
- $expiration_text = sprintf(__("Membership expires after %d %s.", "pmpro"), $level->expiration_number, pmpro_translate_billing_period($level->expiration_period, $level->expiration_number));
303
- }
304
- else
305
- $expiration_text = "";
306
-
307
- $expiration_text = apply_filters("pmpro_level_expiration_text", $expiration_text, $level);
308
- return $expiration_text;
309
- }
310
-
311
- function pmpro_hideAds()
312
- {
313
- global $pmpro_display_ads;
314
- return !$pmpro_display_ads;
315
- }
316
-
317
- function pmpro_displayAds()
318
- {
319
- global $pmpro_display_ads;
320
- return $pmpro_display_ads;
321
- }
322
-
323
- function pmpro_next_payment($user_id = NULL, $order_status = "success")
324
- {
325
- global $wpdb, $current_user;
326
- if(!$user_id)
327
- $user_id = $current_user->ID;
328
-
329
- if(!$user_id)
330
- return false;
331
-
332
- //get last order
333
- $order = new MemberOrder();
334
- $order->getLastMemberOrder($user_id, $order_status);
335
-
336
- //get current membership level
337
- $level = pmpro_getMembershipLevelForUser($user_id);
338
-
339
- if(!empty($order) && !empty($level) && !empty($level->cycle_number))
340
- {
341
- //last payment date
342
- $lastdate = date("Y-m-d", $order->timestamp);
343
-
344
- //next payment date
345
- $nextdate = $wpdb->get_var("SELECT UNIX_TIMESTAMP('" . $lastdate . "' + INTERVAL " . $level->cycle_number . " " . $level->cycle_period . ")");
346
-
347
- return $nextdate;
348
- }
349
- else
350
- {
351
- //no order or level found, or level was not recurring
352
- return false;
353
- }
354
- }
355
-
356
- if(!function_exists("last4"))
357
- {
358
- function last4($t)
359
- {
360
- return substr($t, strlen($t) - 4, 4);
361
- }
362
- }
363
-
364
- if(!function_exists("hideCardNumber"))
365
- {
366
- function hideCardNumber($c, $dashes = true)
367
- {
368
- if($c)
369
- {
370
- if($dashes)
371
- return "XXXX-XXXX-XXXX-" . substr($c, strlen($c) - 4, 4);
372
- else
373
- return "XXXXXXXXXXXX" . substr($c, strlen($c) - 4, 4);
374
- }
375
- else
376
- {
377
- return "";
378
- }
379
- }
380
- }
381
-
382
- if(!function_exists("cleanPhone"))
383
- {
384
- function cleanPhone($phone)
385
- {
386
- //if a + is passed, just pass it along
387
- if(strpos($phone, "+") !== false)
388
- return $phone;
389
-
390
- //clean the phone
391
- $phone = str_replace("-", "", $phone);
392
- $phone = str_replace(".", "", $phone);
393
- $phone = str_replace("(", "", $phone);
394
- $phone = str_replace(")", "", $phone);
395
- $phone = str_replace(" ", "", $phone);
396
-
397
- return $phone;
398
- }
399
- }
400
-
401
- if(!function_exists("formatPhone"))
402
- {
403
- function formatPhone($phone)
404
- {
405
- $phone = cleanPhone($phone);
406
-
407
- if(strlen($phone) == 11)
408
- return substr($phone, 0, 1) . " (" . substr($phone, 1, 3) . ") " . substr($phone, 4, 3) . "-" . substr($phone, 7, 4);
409
- elseif(strlen($phone) == 10)
410
- return "(" . substr($phone, 0, 3) . ") " . substr($phone, 3, 3) . "-" . substr($phone, 6, 4);
411
- elseif(strlen($phone) == 7)
412
- return substr($phone, 0, 3) . "-" . substr($phone, 3, 4);
413
- else
414
- return $phone;
415
- }
416
- }
417
-
418
- function pmpro_showRequiresMembershipMessage()
419
- {
420
- //get the correct message
421
- if(is_feed())
422
- {
423
- $content = pmpro_getOption("rsstext");
424
- $content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
425
- }
426
- elseif($current_user->ID)
427
- {
428
- //not a member
429
- $content = pmpro_getOption("nonmembertext");
430
- $content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
431
- }
432
- else
433
- {
434
- //not logged in!
435
- $content = pmpro_getOption("notloggedintext");
436
- $content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
437
- }
438
- }
439
-
440
- /* pmpro_hasMembershipLevel() checks if the passed user is a member of the passed level
441
- *
442
- * $level may either be the ID or name of the desired membership_level. (or an array of such)
443
- * If $user_id is omitted, the value will be retrieved from $current_user.
444
- *
445
- * Return values:
446
- * Success returns boolean true.
447
- * Failure returns a string containing the error message.
448
- */
449
- function pmpro_hasMembershipLevel($levels = NULL, $user_id = NULL)
450
- {
451
- global $current_user, $all_membership_levels, $wpdb;
452
-
453
- $return = false;
454
-
455
- if(empty($user_id)) //no user_id passed, check the current user
456
- {
457
- $user_id = $current_user->ID;
458
- $membership_levels = $current_user->membership_levels;
459
- }
460
- else //get membership levels for given user
461
- {
462
- $membership_levels = pmpro_getMembershipLevelsForUser($user_id);
463
- }
464
-
465
- if($levels === "0" || $levels === 0) //if 0 was passed, return true if they have no level and false if they have any
466
- {
467
- $return = empty($membership_levels);
468
- }
469
- elseif(empty($levels)) //if no level var was passed, we're just checking if they have any level
470
- {
471
- $return = !empty($membership_levels);
472
- }
473
- else
474
- {
475
- if(!is_array($levels)) //make an array out of a single element so we can use the same code
476
- {
477
- $levels = array($levels);
478
- }
479
-
480
- if(empty($membership_levels))
481
- {
482
- //user has no levels just check if 0 was sent in one of the levels
483
- if(in_array(0, $levels) || in_array("0", $levels))
484
- $return = true;
485
- }
486
- else
487
- {
488
- foreach($levels as $level)
489
- {
490
- $level_obj = pmpro_getLevel(is_numeric($level) ? abs(intval($level)) : $level); //make sure our level is in a proper format
491
- if(empty($level_obj)){continue;} //invalid level
492
- $found_level = false;
493
- foreach($membership_levels as $membership_level)
494
- {
495
- if($membership_level->id == $level_obj->id) //found a match
496
- {
497
- $found_level = true;
498
- }
499
- }
500
-
501
- if(is_numeric($level) and intval($level) < 0 and !$found_level) //checking for the absence of this level
502
- {
503
- $return = true;
504
- }
505
- else if($found_level) //checking for the presence of this level
506
- {
507
- $return = true;
508
- }
509
- }
510
- }
511
- }
512
-
513
- $return = apply_filters("pmpro_has_membership_level", $return, $user_id, $levels);
514
- return $return;
515
- }
516
-
517
- /* pmpro_changeMembershipLevel() creates or updates the membership level of the given user to the given level.
518
- *
519
- * $level may either be the ID or name of the desired membership_level.
520
- * If $user_id is omitted, the value will be retrieved from $current_user.
521
- *
522
- * Return values:
523
- * Success returns boolean true.
524
- * Failure returns boolean false.
525
- */
526
- function pmpro_changeMembershipLevel($level, $user_id = NULL)
527
- {
528
- global $wpdb;
529
- global $current_user, $pmpro_error;
530
-
531
- if(empty($user_id))
532
- {
533
- $user_id = $current_user->ID;
534
- }
535
-
536
- if(empty($user_id))
537
- {
538
- $pmpro_error = __("User ID not found.", "pmpro");
539
- return false;
540
- }
541
-
542
- if(empty($level)) //cancelling membership
543
- {
544
- $level = 0;
545
- }
546
- else if(is_array($level))
547
- {
548
- //custom level
549
- }
550
- else
551
- {
552
- $level_obj = pmpro_getLevel($level);
553
- if(empty($level_obj))
554
- {
555
- $pmpro_error = __("Invalid level.", "pmpro");
556
- return false;
557
- }
558
- $level = $level_obj->id;
559
- }
560
-
561
- //if it's a custom level, they're changing
562
- if(!is_array($level))
563
- {
564
- //are they even changing?
565
- if(pmpro_hasMembershipLevel($level, $user_id)) {
566
- $pmpro_error = __("not changing?", "pmpro");
567
- return false; //not changing
568
- }
569
- }
570
-
571
- $old_levels = pmpro_getMembershipLevelsForUser($user_id);
572
-
573
- $pmpro_cancel_previous_subscriptions = apply_filters("pmpro_cancel_previous_subscriptions", true);
574
- if($pmpro_cancel_previous_subscriptions)
575
- {
576
- //deactivate old memberships (updates pmpro_memberships_users table)
577
- if(!empty($old_levels))
578
- {
579
- foreach($old_levels as $old_level) {
580
- $sql = "UPDATE $wpdb->pmpro_memberships_users SET `status`='inactive', `enddate`='" . current_time('mysql') . "' WHERE `id`=".$old_level->subscription_id;
581
- if(!$wpdb->query($sql))
582
- {
583
- $pmpro_error = __("Error interacting with database", "pmpro") . ": ".(mysql_errno()?mysql_error():'unavailable');
584
- return false;
585
- }
586
- }
587
- }
588
-
589
- //cancel any other subscriptions they have (updates pmpro_membership_orders table)
590
- $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");
591
-
592
- foreach($other_order_ids as $order_id)
593
- {
594
- $c_order = new MemberOrder($order_id);
595
- $c_order->cancel();
596
-
597
- if(!empty($c_order->error))
598
- $pmpro_error = $c_order->error;
599
- }
600
- }
601
-
602
- //insert current membership
603
- if(!empty($level)) //are we getting a new one or just cancelling the old ones
604
- {
605
- if(is_array($level))
606
- {
607
- //make sure the dates are in good formats
608
- if($level['startdate'] != current_time('mysql') && $level['startdate'] != "NULL" && substr($level['startdate'], 0, 1) != "'")
609
- $level['startdate'] = "'" . $level['startdate'] . "'";
610
-
611
- if($level['enddate'] != current_time('mysql') && $level['enddate'] != "NULL" && substr($level['enddate'], 0, 1) != "'")
612
- $level['enddate'] = "'" . $level['enddate'] . "'";
613
-
614
- //Better support mySQL Strict Mode by passing a proper enum value for cycle_period
615
- if ($level['cycle_period'] == '') $level['cycle_period'] = 0;
616
-
617
- $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)
618
- VALUES('" . $level['user_id'] . "',
619
- '" . $level['membership_id'] . "',
620
- '" . intval($level['code_id']) . "',
621
- '" . $level['initial_payment'] . "',
622
- '" . $level['billing_amount'] . "',
623
- '" . $level['cycle_number'] . "',
624
- '" . $level['cycle_period'] . "',
625
- '" . $level['billing_limit'] . "',
626
- '" . $level['trial_amount'] . "',
627
- '" . $level['trial_limit'] . "',
628
- " . $level['startdate'] . ",
629
- " . $level['enddate'] . ")";
630
-
631
- if(!$wpdb->query($sql))
632
- {
633
- $pmpro_error = __("Error interacting with database", "pmpro") . ": ".(mysql_errno()?mysql_error():'unavailable');
634
- return false;
635
- }
636
- }
637
- else
638
- {
639
- $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)
640
- VALUES (
641
- '" . $user_id . "',
642
- '" . $level . "',
643
- '0',
644
- '0',
645
- '0',
646
- '0',
647
- '0',
648
- '0',
649
- '0',
650
- '0',
651
- '" . current_time('mysql') . "',
652
- '0000-00-00 00:00:00'
653
- )";
654
-
655
- if(!$wpdb->query($sql))
656
- {
657
- $pmpro_error = __("Error interacting with database", "pmpro") . ": ".(mysql_errno()?mysql_error():'unavailable');
658
- return false;
659
- }
660
- }
661
- }
662
-
663
- //get level id
664
- if(is_array($level))
665
- $level_id = $level['membership_id']; //custom level
666
- else
667
- $level_id = $level; //just id
668
-
669
- //remove cached level
670
- global $all_membership_levels;
671
- unset($all_membership_levels[$user_id]);
672
-
673
- //update user data and call action
674
- pmpro_set_current_user();
675
- do_action("pmpro_after_change_membership_level", $level_id, $user_id); //$level is the $level_id here
676
- return true;
677
- }
678
-
679
- /* pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
680
- *
681
- * $level may either be the ID or name of the desired membership_level.
682
- * $category must be a valid post category ID.
683
- *
684
- * Return values:
685
- * Success returns boolean true.
686
- * Failure returns a string containing the error message.
687
- */
688
- function pmpro_toggleMembershipCategory( $level, $category, $value )
689
- {
690
- global $wpdb;
691
- $category = intval($category);
692
-
693
- if ( ($level = intval($level)) <= 0 )
694
- {
695
- $safe = addslashes($level);
696
- if ( ($level = intval($wpdb->get_var("SELECT id FROM {$wpdb->pmpro_membership_levels} WHERE name = '$safe' LIMIT 1"))) <= 0 )
697
- {
698
- return __("Membership level not found.", "pmpro");
699
- }
700
- }
701
-
702
- if ( $value )
703
- {
704
- $sql = "REPLACE INTO {$wpdb->pmpro_memberships_categories} (`membership_id`,`category_id`) VALUES ('$level','$category')";
705
- $wpdb->query($sql);
706
- if(mysql_errno()) return mysql_error();
707
- }
708
- else
709
- {
710
- $sql = "DELETE FROM {$wpdb->pmpro_memberships_categories} WHERE `membership_id` = '$level' AND `category_id` = '$category' LIMIT 1";
711
- $wpdb->query($sql);
712
- if(mysql_errno()) return mysql_error();
713
- }
714
-
715
- return true;
716
- }
717
-
718
- /* pmpro_updateMembershipCategories() ensures that all those and only those categories given
719
- * are associated with the given membership level.
720
- *
721
- * $level is a valid membership level ID or name
722
- * $categories is an array of post category IDs
723
- *
724
- * Return values:
725
- * Success returns boolean true.
726
- * Failure returns a string containing the error message.
727
- */
728
- function pmpro_updateMembershipCategories($level, $categories)
729
- {
730
- global $wpdb;
731
-
732
- if(!is_numeric($level))
733
- {
734
- $level = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_levels WHERE name = '" . esc_sql($level) . "' LIMIT 1");
735
- if(empty($level))
736
- {
737
- return __("Membership level not found.", "pmpro");
738
- }
739
- }
740
-
741
- // remove all existing links...
742
- $sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_categories WHERE `membership_id` = '" . esc_sql($level) . "'";
743
- $wpdb->query($sqlQuery);
744
- if(mysql_errno()) return mysql_error();
745
-
746
- // add the given links [back?] in...
747
- foreach($categories as $cat)
748
- {
749
- if(is_string($r = pmpro_toggleMembershipCategory( $level, $cat, true)))
750
- {
751
- //uh oh, error
752
- return $r;
753
- }
754
- }
755
-
756
- //all good
757
- return true;
758
- }
759
-
760
- /* pmpro_getMembershipCategories() returns the categories for a given level
761
- *
762
- * $level_id is a valid membership level ID
763
- *
764
- * Return values:
765
- * Success returns boolean true.
766
- * Failure returns boolean false.
767
- */
768
- function pmpro_getMembershipCategories($level_id)
769
- {
770
- global $wpdb;
771
- $categories = $wpdb->get_col("SELECT c.category_id
772
- FROM {$wpdb->pmpro_memberships_categories} AS c
773
- WHERE c.membership_id = '" . $level_id . "'");
774
-
775
- return $categories;
776
- }
777
-
778
-
779
- function pmpro_isAdmin($user_id = NULL)
780
- {
781
- global $current_user, $wpdb;
782
- if(!$user_id)
783
- $user_id = $current_user->ID;
784
-
785
- if(!$user_id)
786
- return false;
787
-
788
- $admincap = user_can($user_id, "manage_options");
789
- if($admincap)
790
- return true;
791
- else
792
- return false;
793
- }
794
-
795
- function pmpro_replaceUserMeta($user_id, $meta_keys, $meta_values, $prev_values = NULL)
796
- {
797
- //expects all arrays for last 3 params or all strings
798
- if(!is_array($meta_keys))
799
- {
800
- $meta_keys = array($meta_keys);
801
- $meta_values = array($meta_values);
802
- $prev_values = array($prev_values);
803
- }
804
-
805
- for($i = 0; $i < count($meta_values); $i++)
806
- {
807
- if($prev_values[$i])
808
- {
809
- update_user_meta($user_id, $meta_keys[$i], $meta_values[$i], $prev_values[$i]);
810
- }
811
- else
812
- {
813
- $old_value = get_user_meta($user_id, $meta_keys[$i], true);
814
- if($old_value)
815
- {
816
- update_user_meta($user_id, $meta_keys[$i], $meta_values[$i], $old_value);
817
- }
818
- else
819
- {
820
- update_user_meta($user_id, $meta_keys[$i], $meta_values[$i]);
821
- }
822
- }
823
- }
824
-
825
- return $i;
826
- }
827
-
828
- function pmpro_getMetavalues($query)
829
- {
830
- global $wpdb;
831
-
832
- $results = $wpdb->get_results($query);
833
- $r = new stdClass();
834
- foreach($results as $result)
835
- {
836
- $r->{$result->key} = $result->value;
837
- }
838
-
839
- return $r;
840
- }
841
-
842
- //function to return the pagination string
843
- function pmpro_getPaginationString($page = 1, $totalitems, $limit = 15, $adjacents = 1, $targetpage = "/", $pagestring = "&pn=")
844
- {
845
- //defaults
846
- if(!$adjacents) $adjacents = 1;
847
- if(!$limit) $limit = 15;
848
- if(!$page) $page = 1;
849
- if(!$targetpage) $targetpage = "/";
850
-
851
- //other vars
852
- $prev = $page - 1; //previous page is page - 1
853
- $next = $page + 1; //next page is page + 1
854
- $lastpage = ceil($totalitems / $limit); //lastpage is = total items / items per page, rounded up.
855
- $lpm1 = $lastpage - 1; //last page minus 1
856
-
857
- /*
858
- Now we apply our rules and draw the pagination object.
859
- We're actually saving the code to a variable in case we want to draw it more than once.
860
- */
861
- $pagination = "";
862
- if($lastpage > 1)
863
- {
864
- $pagination .= "<div class=\"pmpro_pagination\"";
865
- if(!empty($margin) || !empty($padding))
866
- {
867
- $pagination .= " style=\"";
868
- if($margin)
869
- $pagination .= "margin: $margin;";
870
- if($padding)
871
- $pagination .= "padding: $padding;";
872
- $pagination .= "\"";
873
- }
874
- $pagination .= ">";
875
-
876
- //previous button
877
- if ($page > 1)
878
- $pagination .= "<a href=\"$targetpage$pagestring$prev\">&laquo; prev</a>";
879
- else
880
- $pagination .= "<span class=\"disabled\">&laquo; prev</span>";
881
-
882
- //pages
883
- if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
884
- {
885
- for ($counter = 1; $counter <= $lastpage; $counter++)
886
- {
887
- if ($counter == $page)
888
- $pagination .= "<span class=\"current\">$counter</span>";
889
- else
890
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
891
- }
892
- }
893
- elseif($lastpage >= 7 + ($adjacents * 2)) //enough pages to hide some
894
- {
895
- //close to beginning; only hide later pages
896
- if($page < 1 + ($adjacents * 3))
897
- {
898
- for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
899
- {
900
- if ($counter == $page)
901
- $pagination .= "<span class=\"current\">$counter</span>";
902
- else
903
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
904
- }
905
- $pagination .= "...";
906
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $lpm1 . "\">$lpm1</a>";
907
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $lastpage . "\">$lastpage</a>";
908
- }
909
- //in middle; hide some front and some back
910
- elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
911
- {
912
- $pagination .= "<a href=\"" . $targetpage . $pagestring . "1\">1</a>";
913
- $pagination .= "<a href=\"" . $targetpage . $pagestring . "2\">2</a>";
914
- $pagination .= "...";
915
- for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
916
- {
917
- if ($counter == $page)
918
- $pagination .= "<span class=\"current\">$counter</span>";
919
- else
920
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
921
- }
922
- $pagination .= "...";
923
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $lpm1 . "\">$lpm1</a>";
924
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $lastpage . "\">$lastpage</a>";
925
- }
926
- //close to end; only hide early pages
927
- else
928
- {
929
- $pagination .= "<a href=\"" . $targetpage . $pagestring . "1\">1</a>";
930
- $pagination .= "<a href=\"" . $targetpage . $pagestring . "2\">2</a>";
931
- $pagination .= "...";
932
- for ($counter = $lastpage - (1 + ($adjacents * 3)); $counter <= $lastpage; $counter++)
933
- {
934
- if ($counter == $page)
935
- $pagination .= "<span class=\"current\">$counter</span>";
936
- else
937
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
938
- }
939
- }
940
- }
941
-
942
- //next button
943
- if ($page < $counter - 1)
944
- $pagination .= "<a href=\"" . $targetpage . $pagestring . $next . "\">next &raquo;</a>";
945
- else
946
- $pagination .= "<span class=\"disabled\">next &raquo;</span>";
947
- $pagination .= "</div>\n";
948
- }
949
-
950
- return $pagination;
951
-
952
- }
953
-
954
- function pmpro_calculateInitialPaymentRevenue($s = NULL, $l = NULL)
955
- {
956
- global $wpdb;
957
-
958
- //if we're limiting users by search
959
- if($s || $l)
960
- {
961
- $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' ";
962
- if($s)
963
- $user_ids_query .= "AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
964
- if($l)
965
- $user_ids_query .= "AND mu.membership_id = '$l' ";
966
- }
967
-
968
- //query to sum initial payments
969
- $sqlQuery = "SELECT SUM(initial_payment) FROM $wpdb->pmpro_memberships_users WHERE `status` = 'active' ";
970
- if(!empty($user_ids_query))
971
- $sqlQuery .= "AND user_id IN(" . $user_ids_query . ") ";
972
-
973
- $total = $wpdb->get_var($sqlQuery);
974
-
975
- return (double)$total;
976
- }
977
-
978
- function pmpro_calculateRecurringRevenue($s, $l)
979
- {
980
- global $wpdb;
981
-
982
- //if we're limiting users by search
983
- if($s || $l)
984
- {
985
- $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' ";
986
- if($s)
987
- $user_ids_query .= "AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
988
- if($l)
989
- $user_ids_query .= "AND mu.membership_id = '$l' ";
990
- $user_ids_query .= ")";
991
- }
992
- else
993
- $user_ids_query = "";
994
-
995
- //4 queries to get annual earnings for each cycle period. currently ignoring trial periods and billing limits.
996
- $sqlQuery = "
997
- 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
998
- UNION
999
- 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
1000
- UNION
1001
- 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
1002
- UNION
1003
- SELECT SUM(billing_amount) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND cycle_period = 'Year' $user_ids_query
1004
- ";
1005
-
1006
- $annual_revenues = $wpdb->get_col($sqlQuery);
1007
-
1008
- $total = 0;
1009
- foreach($annual_revenues as $r)
1010
- {
1011
- $total += $r;
1012
- }
1013
-
1014
- return $total;
1015
- }
1016
-
1017
- function pmpro_generateUsername($firstname = "", $lastname = "", $email = "")
1018
- {
1019
- global $wpdb;
1020
-
1021
- //try first initial + last name, firstname, lastname
1022
- $firstname = preg_replace("/[^A-Za-z]/", "", $firstname);
1023
- $lastname = preg_replace("/[^A-Za-z]/", "", $lastname);
1024
- if($firstname && $lastname)
1025
- {
1026
- $username = substr($firstname, 0, 1) . $lastname;
1027
- }
1028
- elseif($firstname)
1029
- {
1030
- $username = $firstname;
1031
- }
1032
- elseif($lastname)
1033
- {
1034
- $username = $lastname;
1035
- }
1036
-
1037
- //is it taken?
1038
- $taken = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_login = '" . $username . "' LIMIT 1");
1039
-
1040
- if(!$taken)
1041
- return $username;
1042
-
1043
- //try the beginning of the email address
1044
- $emailparts = explode("@", "email");
1045
- if(is_array($emailparts))
1046
- $email = preg_replace("/[^A-Za-z]/", "", $emailparts[0]);
1047
-
1048
- if($email)
1049
- {
1050
- $username = $email;
1051
- }
1052
-
1053
- //is this taken? if not, add numbers until it works
1054
- $taken = true;
1055
- $count = 0;
1056
- while($taken)
1057
- {
1058
- //add a # to the end
1059
- if($count)
1060
- {
1061
- $username = preg_replace("/[0-9]/", "", $username) . $count;
1062
- }
1063
-
1064
- //taken?
1065
- $taken = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_login = '" . $username . "' LIMIT 1");
1066
-
1067
- //increment the number
1068
- $count++;
1069
- }
1070
-
1071
- //must have a good username now
1072
- return $username;
1073
- }
1074
-
1075
- //get a new random code for discount codes
1076
- function pmpro_getDiscountCode($seed = NULL)
1077
- {
1078
- global $wpdb;
1079
-
1080
- while(empty($code))
1081
- {
1082
- $scramble = md5(AUTH_KEY . current_time('timestamp') . $seed . SECURE_AUTH_KEY);
1083
- $code = substr($scramble, 0, 10);
1084
- $check = $wpdb->get_var("SELECT code FROM $wpdb->pmpro_discount_codes WHERE code = '$code' LIMIT 1");
1085
- if($check || is_numeric($code))
1086
- $code = NULL;
1087
- }
1088
-
1089
- return strtoupper($code);
1090
- }
1091
-
1092
- //is a discount code valid
1093
- function pmpro_checkDiscountCode($code, $level_id = NULL, $return_errors = false)
1094
- {
1095
- global $wpdb;
1096
-
1097
- $error = false;
1098
-
1099
- //no code, no code
1100
- if(empty($code))
1101
- $error = __("No code was given to check.", "pmpro");
1102
-
1103
- //get code from db
1104
- if(!$error)
1105
- {
1106
- $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");
1107
-
1108
- //did we find it?
1109
- if(empty($dbcode->id))
1110
- $error = __("The discount code could not be found.", "pmpro");
1111
- }
1112
-
1113
- //check if the code has started
1114
- if(!$error)
1115
- {
1116
- //fix the date timestamps
1117
- $dbcode->starts = strtotime(date("m/d/Y", $dbcode->starts));
1118
- $dbcode->expires = strtotime(date("m/d/Y", $dbcode->expires));
1119
-
1120
- //today
1121
- $today = strtotime(date("m/d/Y 00:00:00", current_time("timestamp")));
1122
-
1123
- //has this code started yet?
1124
- if(!empty($dbcode->starts) && $dbcode->starts > $today)
1125
- $error = sprintf(__("This discount code goes into effect on %s.", "pmpro"), date(get_option('date_format'), $dbcode->starts));
1126
- }
1127
-
1128
- //check if the code is expired
1129
- if(!$error)
1130
- {
1131
- if(!empty($dbcode->expires) && $dbcode->expires < $today)
1132
- $error = sprintf(__("This discount code expired on %s.", "pmpro"), date(get_option('date_format'), $dbcode->expires));
1133
- }
1134
-
1135
- //have we run out of uses?
1136
- if(!$error)
1137
- {
1138
- if($dbcode->uses > 0)
1139
- {
1140
- $used = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $dbcode->id . "'");
1141
- if($used >= $dbcode->uses)
1142
- $error = __("This discount code is no longer valid.", "pmpro");
1143
- }
1144
- }
1145
-
1146
- //if a level was passed check if this code applies
1147
- if(!$error)
1148
- {
1149
- $pmpro_check_discount_code_levels = apply_filters("pmpro_check_discount_code_levels", true, $dbcode->id);
1150
- if(!empty($level_id) && $pmpro_check_discount_code_levels)
1151
- {
1152
- $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");
1153
-
1154
- if(empty($code_level))
1155
- $error = __("This discount code does not apply to this membership level.", "pmpro");
1156
- }
1157
- }
1158
-
1159
- //allow filter
1160
- $pmpro_check_discount_code = apply_filters("pmpro_check_discount_code", !$error, $dbcode, $level_id, $code);
1161
- if(is_string($pmpro_check_discount_code))
1162
- $error = $pmpro_check_discount_code; //string returned, this is an error
1163
- elseif(!$pmpro_check_discount_code && !$error)
1164
- $error = true; //no error before, but filter returned error
1165
- elseif($pmpro_check_discount_code)
1166
- $error = false; //filter is true, so error false
1167
-
1168
- //return
1169
- if($error)
1170
- {
1171
- //there was an error
1172
- if(!empty($return_errors))
1173
- return array(false, $error);
1174
- else
1175
- return false;
1176
- }
1177
- else
1178
- {
1179
- //guess we're all good
1180
- if(!empty($return_errors))
1181
- return array(true, __("This discount code is okay.", "pmpro"));
1182
- else
1183
- return true;
1184
- }
1185
- }
1186
-
1187
- function pmpro_no_quotes($s, $quotes = array("'", '"'))
1188
- {
1189
- return str_replace($quotes, "", $s);
1190
- }
1191
-
1192
- //from: http://www.php.net/manual/en/function.implode.php#86845
1193
- function pmpro_implodeToEnglish($array)
1194
- {
1195
- // sanity check
1196
- if (!$array || !count ($array))
1197
- return '';
1198
-
1199
- // get last element
1200
- $last = array_pop ($array);
1201
-
1202
- // if it was the only element - return it
1203
- if (!count ($array))
1204
- return $last;
1205
-
1206
- return implode (', ', $array).' ' . __('and', 'pmpro') . ' '.$last;
1207
- }
1208
-
1209
- //from yoast wordpress seo
1210
- function pmpro_text_limit( $text, $limit, $finish = '&hellip;')
1211
- {
1212
- if( strlen( $text ) > $limit ) {
1213
- $text = substr( $text, 0, $limit );
1214
- $text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) );
1215
- $text .= $finish;
1216
- }
1217
- return $text;
1218
- }
1219
-
1220
- /* pmpro_getMembershipLevelForUser() returns the first active membership level for a user
1221
- *
1222
- * If $user_id is omitted, the value will be retrieved from $current_user.
1223
- *
1224
- * Return values:
1225
- * Success returns the level object.
1226
- * Failure returns false.
1227
- */
1228
- function pmpro_getMembershipLevelForUser($user_id = NULL, $force = false)
1229
- {
1230
- if(empty($user_id))
1231
- {
1232
- global $current_user;
1233
- $user_id = $current_user->ID;
1234
- }
1235
-
1236
- if(empty($user_id))
1237
- {
1238
- return false;
1239
- }
1240
-
1241
- global $all_membership_levels;
1242
-
1243
- if(isset($all_membership_levels[$user_id]) && !$force)
1244
- {
1245
- return $all_membership_levels[$user_id];
1246
- }
1247
- else
1248
- {
1249
- global $wpdb;
1250
- $all_membership_levels[$user_id] = $wpdb->get_row("SELECT
1251
- l.id AS ID,
1252
- l.id as id,
1253
- mu.id as subscription_id,
1254
- l.name AS name,
1255
- l.description,
1256
- l.expiration_number,
1257
- l.expiration_period,
1258
- mu.initial_payment,
1259
- mu.billing_amount,
1260
- mu.cycle_number,
1261
- mu.cycle_period,
1262
- mu.billing_limit,
1263
- mu.trial_amount,
1264
- mu.trial_limit,
1265
- mu.code_id as code_id,
1266
- UNIX_TIMESTAMP(startdate) as startdate,
1267
- UNIX_TIMESTAMP(enddate) as enddate
1268
- FROM {$wpdb->pmpro_membership_levels} AS l
1269
- JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
1270
- WHERE mu.user_id = $user_id AND mu.status = 'active'
1271
- LIMIT 1");
1272
- return $all_membership_levels[$user_id];
1273
- }
1274
- }
1275
-
1276
- /* pmpro_getMembershipLevelsForUser() returns the membership levels for a user
1277
- *
1278
- * If $user_id is omitted, the value will be retrieved from $current_user.
1279
- * By default it only includes actvie memberships.
1280
- *
1281
- * Return values:
1282
- * Success returns an array of level objects.
1283
- * Failure returns false.
1284
- */
1285
- function pmpro_getMembershipLevelsForUser($user_id = NULL, $include_inactive = false)
1286
- {
1287
- if(empty($user_id))
1288
- {
1289
- global $current_user;
1290
- $user_id = $current_user->ID;
1291
- }
1292
-
1293
- if(empty($user_id))
1294
- {
1295
- return false;
1296
- }
1297
-
1298
- global $wpdb;
1299
- return $wpdb->get_results("SELECT
1300
- l.id AS ID,
1301
- l.id as id,
1302
- mu.id as subscription_id,
1303
- l.name,
1304
- l.description,
1305
- l.expiration_number,
1306
- l.expiration_period,
1307
- mu.initial_payment,
1308
- mu.billing_amount,
1309
- mu.cycle_number,
1310
- mu.cycle_period,
1311
- mu.billing_limit,
1312
- mu.trial_amount,
1313
- mu.trial_limit,
1314
- mu.code_id as code_id,
1315
- UNIX_TIMESTAMP(startdate) as startdate,
1316
- UNIX_TIMESTAMP(enddate) as enddate
1317
- FROM {$wpdb->pmpro_membership_levels} AS l
1318
- JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
1319
- WHERE mu.user_id = $user_id".($include_inactive?"":" AND mu.status = 'active'"));
1320
- }
1321
-
1322
- /* pmpro_getLevel() returns the level object for a level
1323
- *
1324
- * $level may be the level id or name
1325
- *
1326
- * Return values:
1327
- * Success returns the level object.
1328
- * Failure returns false.
1329
- */
1330
- function pmpro_getLevel($level)
1331
- {
1332
- global $pmpro_levels;
1333
-
1334
- if(is_object($level) && !empty($level->id))
1335
- $level = $level->id;
1336
-
1337
- //was a name passed? (Todo: make sure level names have at least one non-numeric character.
1338
- if(is_numeric($level))
1339
- {
1340
- $level_id = intval($level);
1341
- if(isset($pmpro_levels[$level_id]))
1342
- {
1343
- return $pmpro_levels[$level_id];
1344
- }
1345
- else
1346
- {
1347
- global $wpdb;
1348
- $pmpro_levels[$level_id] = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1");
1349
- return $pmpro_levels[$level_id];
1350
- }
1351
- }
1352
- else
1353
- {
1354
- global $wpdb;
1355
- $level_obj = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE name = '" . $level . "' LIMIT 1");
1356
- $level_id = $level_obj->id;
1357
- $pmpro_levels[$level_id] = $level_obj;
1358
- return $pmpro_levels[$level_id];
1359
- }
1360
- }
1361
-
1362
- /*
1363
- Function to populate pmpro_levels with all levels. We query the DB every time just to be sure we have the latest.
1364
- This should be called if you want to be sure you get all levels as $pmpro_levels may only have a subset of levels.
1365
- */
1366
- function pmpro_getAllLevels($include_hidden = false, $force = false)
1367
- {
1368
- global $pmpro_levels, $wpdb;
1369
-
1370
- //just use what's cached (doesn't take into account include_hidden setting)
1371
- if(!empty($pmpro_levels) && !$force)
1372
- return $pmpro_levels;
1373
-
1374
- //build query
1375
- $sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ";
1376
- if(!$include_hidden)
1377
- $sqlQuery .= " WHERE allow_signups = 1 ORDER BY id";
1378
-
1379
- //get levels from the DB
1380
- $raw_levels = $wpdb->get_results($sqlQuery);
1381
-
1382
- //lets put them into an array where the key is the id of the level
1383
- $pmpro_levels = array();
1384
- foreach($raw_levels as $raw_level)
1385
- {
1386
- $pmpro_levels[$raw_level->id] = $raw_level;
1387
- }
1388
-
1389
- return $pmpro_levels;
1390
- }
1391
-
1392
- function pmpro_getCheckoutButton($level_id, $button_text = NULL, $classes = NULL)
1393
- {
1394
- if(empty($button_text))
1395
- $button_text = __("Sign Up for !!name!! Now", "pmpro");
1396
-
1397
- if(empty($classes))
1398
- $classes = "btn btn-primary";
1399
-
1400
- if(empty($level_id))
1401
- $r = __("Please specify a level id.", "pmpro");
1402
- else
1403
- {
1404
- //get level
1405
- $level = pmpro_getLevel($level_id);
1406
-
1407
- //replace vars
1408
- $replacements = array(
1409
- "!!id!!" => $level->id,
1410
- "!!name!!" => $level->name,
1411
- "!!description!!" => $level->description,
1412
- "!!confirmation!!" => $level->confirmation,
1413
- "!!initial_payment!!" => $level->initial_payment,
1414
- "!!billing_amount!!" => $level->billing_amount,
1415
- "!!cycle_number!!" => $level->cycle_number,
1416
- "!!cycle_period!!" => $level->cycle_period,
1417
- "!!billing_limit!!" => $level->billing_limit,
1418
- "!!trial_amount!!" => $level->trial_amount,
1419
- "!!trial_limit!!" => $level->trial_limit,
1420
- "!!expiration_number!!" => $level->expiration_number,
1421
- "!!expiration_period!!" => $level->expiration_period
1422
- );
1423
- $button_text = str_replace(array_keys($replacements), $replacements, $button_text);
1424
-
1425
- //button text
1426
- $r = "<a href=\"" . pmpro_url("checkout", "?level=" . $level_id) . "\" class=\"" . $classes . "\">" . $button_text . "</a>";
1427
- }
1428
- return $r;
1429
- }
1430
-
1431
- /**
1432
- * Get the "domain" from a URL. By domain, we mean the host name, minus any subdomains. So just the domain and TLD.
1433
- *
1434
- * @param string $url The URL to parse. (generally pass site_url() in WP)
1435
- * @return string The domain.
1436
- */
1437
- function pmpro_getDomainFromURL($url = NULL)
1438
- {
1439
- $domainparts = parse_url($url);
1440
- $domainparts = explode(".", $domainparts['host']);
1441
- if(count($domainparts) > 1)
1442
- {
1443
- //check for ips
1444
- $isip = true;
1445
- foreach($domainparts as $part)
1446
- {
1447
- if(!is_numeric($part))
1448
- {
1449
- $isip = false;
1450
- break;
1451
- }
1452
- }
1453
-
1454
- if($isip)
1455
- {
1456
- //ip, e.g. 127.1.1.1
1457
- $domain = implode(".", $domainparts);
1458
- }
1459
- else
1460
- {
1461
- //www.something.com, etc.
1462
- $domain = $domainparts[count($domainparts)-2] . "." . $domainparts[count($domainparts)-1];
1463
- }
1464
- }
1465
- else
1466
- {
1467
- //localhost or another single word domain
1468
- $domain = $domainparts[0];
1469
- }
1470
-
1471
- return $domain;
1472
- }
1473
-
1474
- /*
1475
- Get a member's start date... either in general or for a specific level_id.
1476
- */
1477
- if(!function_exists("pmpro_getMemberStartdate"))
1478
- {
1479
- function pmpro_getMemberStartdate($user_id = NULL, $level_id = 0)
1480
- {
1481
- if(empty($user_id))
1482
- {
1483
- global $current_user;
1484
- $user_id = $current_user->ID;
1485
- }
1486
-
1487
- global $pmpro_startdates; //for cache
1488
- if(empty($pmpro_startdates[$user_id][$level_id]))
1489
- {
1490
- global $wpdb;
1491
-
1492
- if(!empty($level_id))
1493
- $sqlQuery = "SELECT UNIX_TIMESTAMP(startdate) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND membership_id IN(" . esc_sql($level_id) . ") AND user_id = '" . $user_id . "' ORDER BY id LIMIT 1";
1494
- else
1495
- $sqlQuery = "SELECT UNIX_TIMESTAMP(startdate) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND user_id = '" . $user_id . "' ORDER BY id LIMIT 1";
1496
-
1497
- $startdate = apply_filters("pmpro_member_startdate", $wpdb->get_var($sqlQuery), $user_id, $level_id);
1498
-
1499
- $pmpro_startdates[$user_id][$level_id] = $startdate;
1500
- }
1501
-
1502
- return $pmpro_startdates[$user_id][$level_id];
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 trim($_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 = trim($_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(!empty($level) && $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(!empty($level) && ($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
+ //initial payment
160
+ $r = sprintf(_x('The price for membership is <strong>%s</strong> now', 'Initial payment in cost text generation.', 'pmpro'), $pmpro_currency_symbol . number_format($level->initial_payment, 2));
161
+
162
+ //recurring part
163
+ if($level->billing_amount != '0.00')
164
+ {
165
+ if($level->billing_limit > 1)
166
+ {
167
+ if($level->cycle_number == '1')
168
+ {
169
+ $r .= sprintf(__(' and then <strong>%s per %s for %d more %s</strong>.', 'Recurring payment in cost text generation. E.g. $5 every month for 2 more payments.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, pmpro_translate_billing_period($level->cycle_period), $level->billing_limit, pmpro_translate_billing_period($level->cycle_period, $level->billing_limit));
170
+ }
171
+ else
172
+ {
173
+ $r .= sprintf(__(' and then <strong>%s every %d %s for %d more %s</strong>.', 'Recurring payment in cost text generation. E.g., $5 every 2 months for 2 more payments.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number), $level->billing_limit, pmpro_translate_billing_period($level->cycle_period, $level->billing_limit));
174
+ }
175
+ }
176
+ elseif($level->billing_limit == 1)
177
+ {
178
+ $r .= sprintf(__(' and then <strong>%s after %d %s</strong>.', 'Recurring payment in cost text generation. E.g. $5 after 2 months.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number));
179
+ }
180
+ else
181
+ {
182
+ if($level->cycle_number == '1')
183
+ {
184
+ $r .= sprintf(__(' and then <strong>%s per %s</strong>.', 'Recurring payment in cost text generation. E.g. $5 every month.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, pmpro_translate_billing_period($level->cycle_period));
185
+ }
186
+ else
187
+ {
188
+ $r .= sprintf(__(' and then <strong>%s every %d %s</strong>.', 'Recurring payment in cost text generation. E.g., $5 every 2 months.', 'pmpro'), $pmpro_currency_symbol . $level->billing_amount, $level->cycle_number, pmpro_translate_billing_period($level->cycle_period, $level->cycle_number));
189
+ }
190
+ }
191
+ }
192
+ else
193
+ $r .= '.';
194
+
195
+ //trial part
196
+ if($level->trial_limit)
197
+ {
198
+ if($level->trial_amount == '0.00')
199
+ {
200
+ if($level->trial_limit == '1')
201
+ {
202
+ $r .= ' ' . _x('After your initial payment, your first payment is Free.', 'Trial payment in cost text generation.', 'pmpro');
203
+ }
204
+ else
205
+ {
206
+ $r .= ' ' . sprintf(_x('After your initial payment, your first %d payments are Free.', 'Trial payment in cost text generation.', 'pmpro'), $level->trial_limit);
207
+ }
208
+ }
209
+ else
210
+ {
211
+ if($level->trial_limit == '1')
212
+ {
213
+ $r .= ' ' . sprintf(_x('After your initial payment, your first payment will cost %s.', 'Trial payment in cost text generation.', 'pmpro'), $pmpro_currency_symbol . $level->trial_amount);
214
+ }
215
+ else
216
+ {
217
+ $r .= ' ' . sprintf(_x('After your initial payment, your first %d payments will cost %s.', 'Trial payment in cost text generation. E.g. ... first 2 payments will cost $5', 'pmpro'), $level->trial_limit, $pmpro_currency_symbol . $level->trial_amount);
218
+ }
219
+ }
220
+ }
221
+
222
+ //taxes part
223
+ $tax_state = pmpro_getOption("tax_state");
224
+ $tax_rate = pmpro_getOption("tax_rate");
225
+
226
+ if($tax_state && $tax_rate && !pmpro_isLevelFree($level))
227
+ {
228
+ $r .= sprintf(_x('Customers in %s will be charged %s%% tax.', 'Tax part in cost text generation', 'pmpro'), $tax_state, round($tax_rate * 100, 2));
229
+ }
230
+
231
+ if(!$tags)
232
+ $r = strip_tags($r);
233
+
234
+ $r = apply_filters("pmpro_level_cost_text", $r, $level);
235
+ return $r;
236
+ }
237
+
238
+ function pmpro_getLevelExpiration(&$level)
239
+ {
240
+ if($level->expiration_number)
241
+ {
242
+ $expiration_text = sprintf(_x("Membership expires after %d %s.", "Expiration text. E.g. Membership expires after 5 Months.", "pmpro"), $level->expiration_number, pmpro_translate_billing_period($level->expiration_period, $level->expiration_number));
243
+ }
244
+ else
245
+ $expiration_text = "";
246
+
247
+ $expiration_text = apply_filters("pmpro_level_expiration_text", $expiration_text, $level);
248
+ return $expiration_text;
249
+ }
250
+
251
+ function pmpro_hideAds()
252
+ {
253
+ global $pmpro_display_ads;
254
+ return !$pmpro_display_ads;
255
+ }
256
+
257
+ function pmpro_displayAds()
258
+ {
259
+ global $pmpro_display_ads;
260
+ return $pmpro_display_ads;
261
+ }
262
+
263
+ function pmpro_next_payment($user_id = NULL)
264
+ {
265
+ global $wpdb, $current_user;
266
+ if(!$user_id)
267
+ $user_id = $current_user->ID;
268
+
269
+ if(!$user_id)
270
+ return false;
271
+
272
+ //when were they last billed
273
+ $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");
274
+
275
+ if($lastdate)
276
+ {
277
+ //next payment will be same day, following month
278
+ $lastmonth = date("n", $lastdate);
279
+ $lastday = date("j", $lastdate);
280
+ $lastyear = date("Y", $lastdate);
281
+
282
+ $nextmonth = ((int)$lastmonth) + 1;
283
+ if($nextmonth == 13)
284
+ {
285
+ $nextmonth = 1;
286
+ $nextyear = ((int)$lastyear) + 1;
287
+ }
288
+ else
289
+ $nextyear = $lastyear;
290
+
291
+ $daysinnextmonth = date("t", strtotime($nextyear . "-" . $nextmonth . "-1"));
292
+
293
+ if($daysinnextmonth < $lastday)
294
+ {
295
+ $nextday = $daysinnextmonth;
296
+ }
297
+ else
298
+ $nextday = $lastday;
299
+
300
+ return strtotime($nextyear . "-" . $nextmonth . "-" . $nextday);
301
+ }
302
+ else
303
+ {
304
+ return false;
305
+ }
306
+
307
+ }
308
+
309
+ if(!function_exists("last4"))
310
+ {
311
+ function last4($t)
312
+ {
313
+ return substr($t, strlen($t) - 4, 4);
314
+ }
315
+ }
316
+
317
+ if(!function_exists("hideCardNumber"))
318
+ {
319
+ function hideCardNumber($c, $dashes = true)
320
+ {
321
+ if($c)
322
+ {
323
+ if($dashes)
324
+ return "XXXX-XXXX-XXXX-" . substr($c, strlen($c) - 4, 4);
325
+ else
326
+ return "XXXXXXXXXXXX" . substr($c, strlen($c) - 4, 4);
327
+ }
328
+ else
329
+ {
330
+ return "";
331
+ }
332
+ }
333
+ }
334
+
335
+ if(!function_exists("cleanPhone"))
336
+ {
337
+ function cleanPhone($phone)
338
+ {
339
+ //if a + is passed, just pass it along
340
+ if(strpos($phone, "+") !== false)
341
+ return $phone;
342
+
343
+ //clean the phone
344
+ $phone = str_replace("-", "", $phone);
345
+ $phone = str_replace(".", "", $phone);
346
+ $phone = str_replace("(", "", $phone);
347
+ $phone = str_replace(")", "", $phone);
348
+ $phone = str_replace(" ", "", $phone);
349
+
350
+ return $phone;
351
+ }
352
+ }
353
+
354
+ if(!function_exists("formatPhone"))
355
+ {
356
+ function formatPhone($phone)
357
+ {
358
+ $phone = cleanPhone($phone);
359
+
360
+ if(strlen($phone) == 11)
361
+ return substr($phone, 0, 1) . " (" . substr($phone, 1, 3) . ") " . substr($phone, 4, 3) . "-" . substr($phone, 7, 4);
362
+ elseif(strlen($phone) == 10)
363
+ return "(" . substr($phone, 0, 3) . ") " . substr($phone, 3, 3) . "-" . substr($phone, 6, 4);
364
+ elseif(strlen($phone) == 7)
365
+ return substr($phone, 0, 3) . "-" . substr($phone, 3, 4);
366
+ else
367
+ return $phone;
368
+ }
369
+ }
370
+
371
+ function pmpro_showRequiresMembershipMessage()
372
+ {
373
+ //get the correct message
374
+ if(is_feed())
375
+ {
376
+ $content = pmpro_getOption("rsstext");
377
+ $content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
378
+ }
379
+ elseif($current_user->ID)
380
+ {
381
+ //not a member
382
+ $content = pmpro_getOption("nonmembertext");
383
+ $content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
384
+ }
385
+ else
386
+ {
387
+ //not logged in!
388
+ $content = pmpro_getOption("notloggedintext");
389
+ $content = str_replace("!!levels!!", implode(", ", $post_membership_levels_names), $content);
390
+ }
391
+ }
392
+
393
+ /* pmpro_hasMembershipLevel() checks if the passed user is a member of the passed level
394
+ *
395
+ * $level may either be the ID or name of the desired membership_level. (or an array of such)
396
+ * If $user_id is omitted, the value will be retrieved from $current_user.
397
+ *
398
+ * Return values:
399
+ * Success returns boolean true.
400
+ * Failure returns a string containing the error message.
401
+ */
402
+ function pmpro_hasMembershipLevel($levels = NULL, $user_id = NULL)
403
+ {
404
+ global $current_user, $all_membership_levels, $wpdb;
405
+
406
+ $return = false;
407
+
408
+ if(empty($user_id)) //no user_id passed, check the current user
409
+ {
410
+ $user_id = $current_user->ID;
411
+ $membership_levels = $current_user->membership_levels;
412
+ }
413
+ else //get membership levels for given user
414
+ {
415
+ $membership_levels = pmpro_getMembershipLevelsForUser($user_id);
416
+ }
417
+
418
+ if($levels === "0" || $levels === 0) //if 0 was passed, return true if they have no level and false if they have any
419
+ {
420
+ $return = empty($membership_levels);
421
+ }
422
+ elseif(empty($levels)) //if no level var was passed, we're just checking if they have any level
423
+ {
424
+ $return = !empty($membership_levels);
425
+ }
426
+ else
427
+ {
428
+ if(!is_array($levels)) //make an array out of a single element so we can use the same code
429
+ {
430
+ $levels = array($levels);
431
+ }
432
+
433
+ if(empty($membership_levels))
434
+ {
435
+ //user has no levels just check if 0 was sent in one of the levels
436
+ if(in_array(0, $levels) || in_array("0", $levels))
437
+ $return = true;
438
+ }
439
+ else
440
+ {
441
+ foreach($levels as $level)
442
+ {
443
+ $level_obj = pmpro_getLevel(is_numeric($level) ? abs(intval($level)) : $level); //make sure our level is in a proper format
444
+ if(empty($level_obj)){continue;} //invalid level
445
+ $found_level = false;
446
+ foreach($membership_levels as $membership_level)
447
+ {
448
+ if($membership_level->id == $level_obj->id) //found a match
449
+ {
450
+ $found_level = true;
451
+ }
452
+ }
453
+
454
+ if(is_numeric($level) and intval($level) < 0 and !$found_level) //checking for the absence of this level
455
+ {
456
+ $return = true;
457
+ }
458
+ else if($found_level) //checking for the presence of this level
459
+ {
460
+ $return = true;
461
+ }
462
+ }
463
+ }
464
+ }
465
+
466
+ $return = apply_filters("pmpro_has_membership_level", $return, $user_id, $levels);
467
+ return $return;
468
+ }
469
+
470
+ /* pmpro_changeMembershipLevel() creates or updates the membership level of the given user to the given level.
471
+ *
472
+ * $level may either be the ID or name of the desired membership_level.
473
+ * If $user_id is omitted, the value will be retrieved from $current_user.
474
+ *
475
+ * Return values:
476
+ * Success returns boolean true.
477
+ * Failure returns boolean false.
478
+ */
479
+ function pmpro_changeMembershipLevel($level, $user_id = NULL)
480
+ {
481
+ global $wpdb;
482
+ global $current_user, $pmpro_error;
483
+
484
+ if(empty($user_id))
485
+ {
486
+ $user_id = $current_user->ID;
487
+ }
488
+
489
+ if(empty($user_id))
490
+ {
491
+ $pmpro_error = __("User ID not found.", "pmpro");
492
+ return false;
493
+ }
494
+
495
+ if(empty($level)) //cancelling membership
496
+ {
497
+ $level = 0;
498
+ }
499
+ else if(is_array($level))
500
+ {
501
+ //custom level
502
+ }
503
+ else
504
+ {
505
+ $level_obj = pmpro_getLevel($level);
506
+ if(empty($level_obj))
507
+ {
508
+ $pmpro_error = __("Invalid level.", "pmpro");
509
+ return false;
510
+ }
511
+ $level = $level_obj->id;
512
+ }
513
+
514
+
515
+ //if it's a custom level, they're changing
516
+ if(!is_array($level))
517
+ {
518
+ //are they even changing?
519
+ if(pmpro_hasMembershipLevel($level, $user_id)) {
520
+ $pmpro_error = __("not changing?", "pmpro");
521
+ return false; //not changing
522
+ }
523
+ }
524
+
525
+ $old_levels = pmpro_getMembershipLevelsForUser($user_id);
526
+
527
+ $pmpro_cancel_previous_subscriptions = apply_filters("pmpro_cancel_previous_subscriptions", true);
528
+ if($pmpro_cancel_previous_subscriptions)
529
+ {
530
+ //deactivate old memberships (updates pmpro_memberships_users table)
531
+ if(!empty($old_levels))
532
+ {
533
+ foreach($old_levels as $old_level) {
534
+ $sql = "UPDATE $wpdb->pmpro_memberships_users SET `status`='inactive', `enddate`=NOW() WHERE `id`=".$old_level->subscription_id;
535
+ if(!$wpdb->query($sql))
536
+ {
537
+ $pmpro_error = __("Error interacting with database", "pmpro") . ": ".(mysql_errno()?mysql_error():'unavailable');
538
+ return false;
539
+ }
540
+ }
541
+ }
542
+
543
+ //cancel any other subscriptions they have (updates pmpro_membership_orders table)
544
+ $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");
545
+ foreach($other_order_ids as $order_id)
546
+ {
547
+ $c_order = new MemberOrder($order_id);
548
+ $c_order->cancel();
549
+ }
550
+ }
551
+
552
+ //insert current membership
553
+ if(!empty($level)) //are we getting a new one or just cancelling the old ones
554
+ {
555
+ if(is_array($level))
556
+ {
557
+ //make sure the dates are in good formats
558
+ if($level['startdate'] != "NOW()" && $level['startdate'] != "NULL" && substr($level['startdate'], 0, 1) != "'")
559
+ $level['startdate'] = "'" . $level['startdate'] . "'";
560
+
561
+ if($level['enddate'] != "NOW()" && $level['enddate'] != "NULL" && substr($level['enddate'], 0, 1) != "'")
562
+ $level['enddate'] = "'" . $level['enddate'] . "'";
563
+
564
+ //Better support mySQL Strict Mode by passing a proper enum value for cycle_period
565
+ if ($level['cycle_period'] == '') $level['cycle_period'] = 0;
566
+
567
+ $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)
568
+ VALUES('" . $level['user_id'] . "',
569
+ '" . $level['membership_id'] . "',
570
+ '" . intval($level['code_id']) . "',
571
+ '" . $level['initial_payment'] . "',
572
+ '" . $level['billing_amount'] . "',
573
+ '" . $level['cycle_number'] . "',
574
+ '" . $level['cycle_period'] . "',
575
+ '" . $level['billing_limit'] . "',
576
+ '" . $level['trial_amount'] . "',
577
+ '" . $level['trial_limit'] . "',
578
+ " . $level['startdate'] . ",
579
+ " . $level['enddate'] . ")";
580
+
581
+ if(!$wpdb->query($sql))
582
+ {
583
+ $pmpro_error = __("Error interacting with database", "pmpro") . ": ".(mysql_errno()?mysql_error():'unavailable');
584
+ return false;
585
+ }
586
+ }
587
+ else
588
+ {
589
+ $sql = "INSERT INTO $wpdb->pmpro_memberships_users (`membership_id`,`user_id`) VALUES ('" . $level . "','" . $user_id . "')";
590
+ if(!$wpdb->query($sql))
591
+ {
592
+ $pmpro_error = __("Error interacting with database", "pmpro") . ": ".(mysql_errno()?mysql_error():'unavailable');
593
+ return false;
594
+ }
595
+ }
596
+ }
597
+
598
+ //get level id
599
+ if(is_array($level))
600
+ $level_id = $level['membership_id']; //custom level
601
+ else
602
+ $level_id = $level; //just id
603
+
604
+ //update user data and call action
605
+ pmpro_set_current_user();
606
+ do_action("pmpro_after_change_membership_level", $level_id, $user_id); //$level is the $level_id here
607
+ return true;
608
+ }
609
+
610
+ /* pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
611
+ *
612
+ * $level may either be the ID or name of the desired membership_level.
613
+ * $category must be a valid post category ID.
614
+ *
615
+ * Return values:
616
+ * Success returns boolean true.
617
+ * Failure returns a string containing the error message.
618
+ */
619
+ function pmpro_toggleMembershipCategory( $level, $category, $value )
620
+ {
621
+ global $wpdb;
622
+ $category = intval($category);
623
+
624
+ if ( ($level = intval($level)) <= 0 )
625
+ {
626
+ $safe = addslashes($level);
627
+ if ( ($level = intval($wpdb->get_var("SELECT id FROM {$wpdb->pmpro_membership_levels} WHERE name = '$safe' LIMIT 1"))) <= 0 )
628
+ {
629
+ return __("Membership level not found.", "pmpro");
630
+ }
631
+ }
632
+
633
+ if ( $value )
634
+ {
635
+ $sql = "REPLACE INTO {$wpdb->pmpro_memberships_categories} (`membership_id`,`category_id`) VALUES ('$level','$category')";
636
+ $wpdb->query($sql);
637
+ if(mysql_errno()) return mysql_error();
638
+ }
639
+ else
640
+ {
641
+ $sql = "DELETE FROM {$wpdb->pmpro_memberships_categories} WHERE `membership_id` = '$level' AND `category_id` = '$category' LIMIT 1";
642
+ $wpdb->query($sql);
643
+ if(mysql_errno()) return mysql_error();
644
+ }
645
+
646
+ return true;
647
+ }
648
+
649
+ /* pmpro_updateMembershipCategories() ensures that all those and only those categories given
650
+ * are associated with the given membership level.
651
+ *
652
+ * $level is a valid membership level ID or name
653
+ * $categories is an array of post category IDs
654
+ *
655
+ * Return values:
656
+ * Success returns boolean true.
657
+ * Failure returns a string containing the error message.
658
+ */
659
+ function pmpro_updateMembershipCategories($level, $categories)
660
+ {
661
+ global $wpdb;
662
+
663
+ if(!is_numeric($level))
664
+ {
665
+ $level = $wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_levels WHERE name = '" . esc_sql($level) . "' LIMIT 1");
666
+ if(empty($level))
667
+ {
668
+ return __("Membership level not found.", "pmpro");
669
+ }
670
+ }
671
+
672
+ // remove all existing links...
673
+ $sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_categories WHERE `membership_id` = '" . esc_sql($level) . "'";
674
+ $wpdb->query($sqlQuery);
675
+ if(mysql_errno()) return mysql_error();
676
+
677
+ // add the given links [back?] in...
678
+ foreach($categories as $cat)
679
+ {
680
+ if(is_string($r = pmpro_toggleMembershipCategory( $level, $cat, true)))
681
+ {
682
+ //uh oh, error
683
+ return $r;
684
+ }
685
+ }
686
+
687
+ //all good
688
+ return true;
689
+ }
690
+
691
+ /* pmpro_getMembershipCategories() returns the categories for a given level
692
+ *
693
+ * $level_id is a valid membership level ID
694
+ *
695
+ * Return values:
696
+ * Success returns boolean true.
697
+ * Failure returns boolean false.
698
+ */
699
+ function pmpro_getMembershipCategories($level_id)
700
+ {
701
+ global $wpdb;
702
+ $categories = $wpdb->get_results("SELECT c.category_id
703
+ FROM {$wpdb->pmpro_memberships_categories} AS c
704
+ WHERE c.membership_id = '" . $level_id . "'", ARRAY_N);
705
+
706
+ $returns = array();
707
+ if(is_array($categories))
708
+ {
709
+ foreach($categories as $cat)
710
+ {
711
+ $returns[] = $cat;
712
+ }
713
+ }
714
+ return $returns;
715
+ }
716
+
717
+ function pmpro_isAdmin($user_id = NULL)
718
+ {
719
+ global $current_user, $wpdb;
720
+ if(!$user_id)
721
+ $user_id = $current_user->ID;
722
+
723
+ if(!$user_id)
724
+ return false;
725
+
726
+ $admincap = user_can($user_id, "manage_options");
727
+ if($admincap)
728
+ return true;
729
+ else
730
+ return false;
731
+ }
732
+
733
+ function pmpro_replaceUserMeta($user_id, $meta_keys, $meta_values, $prev_values = NULL)
734
+ {
735
+ //expects all arrays for last 3 params or all strings
736
+ if(!is_array($meta_keys))
737
+ {
738
+ $meta_keys = array($meta_keys);
739
+ $meta_values = array($meta_values);
740
+ $prev_values = array($prev_values);
741
+ }
742
+
743
+ for($i = 0; $i < count($meta_values); $i++)
744
+ {
745
+ if($prev_values[$i])
746
+ {
747
+ update_user_meta($user_id, $meta_keys[$i], $meta_values[$i], $prev_values[$i]);
748
+ }
749
+ else
750
+ {
751
+ $old_value = get_user_meta($user_id, $meta_keys[$i], true);
752
+ if($old_value)
753
+ {
754
+ update_user_meta($user_id, $meta_keys[$i], $meta_values[$i], $old_value);
755
+ }
756
+ else
757
+ {
758
+ update_user_meta($user_id, $meta_keys[$i], $meta_values[$i]);
759
+ }
760
+ }
761
+ }
762
+
763
+ return $i;
764
+ }
765
+
766
+ function pmpro_getMetavalues($query)
767
+ {
768
+ global $wpdb;
769
+
770
+ $results = $wpdb->get_results($query);
771
+ foreach($results as $result)
772
+ {
773
+ $r->{$result->key} = $result->value;
774
+ }
775
+
776
+ return $r;
777
+ }
778
+
779
+ //function to return the pagination string
780
+ function pmpro_getPaginationString($page = 1, $totalitems, $limit = 15, $adjacents = 1, $targetpage = "/", $pagestring = "&pn=")
781
+ {
782
+ //defaults
783
+ if(!$adjacents) $adjacents = 1;
784
+ if(!$limit) $limit = 15;
785
+ if(!$page) $page = 1;
786
+ if(!$targetpage) $targetpage = "/";
787
+
788
+ //other vars
789
+ $prev = $page - 1; //previous page is page - 1
790
+ $next = $page + 1; //next page is page + 1
791
+ $lastpage = ceil($totalitems / $limit); //lastpage is = total items / items per page, rounded up.
792
+ $lpm1 = $lastpage - 1; //last page minus 1
793
+
794
+ /*
795
+ Now we apply our rules and draw the pagination object.
796
+ We're actually saving the code to a variable in case we want to draw it more than once.
797
+ */
798
+ $pagination = "";
799
+ if($lastpage > 1)
800
+ {
801
+ $pagination .= "<div class=\"pmpro_pagination\"";
802
+ if(!empty($margin) || !empty($padding))
803
+ {
804
+ $pagination .= " style=\"";
805
+ if($margin)
806
+ $pagination .= "margin: $margin;";
807
+ if($padding)
808
+ $pagination .= "padding: $padding;";
809
+ $pagination .= "\"";
810
+ }
811
+ $pagination .= ">";
812
+
813
+ //previous button
814
+ if ($page > 1)
815
+ $pagination .= "<a href=\"$targetpage$pagestring$prev\">&laquo; prev</a>";
816
+ else
817
+ $pagination .= "<span class=\"disabled\">&laquo; prev</span>";
818
+
819
+ //pages
820
+ if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
821
+ {
822
+ for ($counter = 1; $counter <= $lastpage; $counter++)
823
+ {
824
+ if ($counter == $page)
825
+ $pagination .= "<span class=\"current\">$counter</span>";
826
+ else
827
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
828
+ }
829
+ }
830
+ elseif($lastpage >= 7 + ($adjacents * 2)) //enough pages to hide some
831
+ {
832
+ //close to beginning; only hide later pages
833
+ if($page < 1 + ($adjacents * 3))
834
+ {
835
+ for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
836
+ {
837
+ if ($counter == $page)
838
+ $pagination .= "<span class=\"current\">$counter</span>";
839
+ else
840
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
841
+ }
842
+ $pagination .= "...";
843
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $lpm1 . "\">$lpm1</a>";
844
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $lastpage . "\">$lastpage</a>";
845
+ }
846
+ //in middle; hide some front and some back
847
+ elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
848
+ {
849
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . "1\">1</a>";
850
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . "2\">2</a>";
851
+ $pagination .= "...";
852
+ for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
853
+ {
854
+ if ($counter == $page)
855
+ $pagination .= "<span class=\"current\">$counter</span>";
856
+ else
857
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
858
+ }
859
+ $pagination .= "...";
860
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $lpm1 . "\">$lpm1</a>";
861
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $lastpage . "\">$lastpage</a>";
862
+ }
863
+ //close to end; only hide early pages
864
+ else
865
+ {
866
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . "1\">1</a>";
867
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . "2\">2</a>";
868
+ $pagination .= "...";
869
+ for ($counter = $lastpage - (1 + ($adjacents * 3)); $counter <= $lastpage; $counter++)
870
+ {
871
+ if ($counter == $page)
872
+ $pagination .= "<span class=\"current\">$counter</span>";
873
+ else
874
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $counter . "\">$counter</a>";
875
+ }
876
+ }
877
+ }
878
+
879
+ //next button
880
+ if ($page < $counter - 1)
881
+ $pagination .= "<a href=\"" . $targetpage . $pagestring . $next . "\">next &raquo;</a>";
882
+ else
883
+ $pagination .= "<span class=\"disabled\">next &raquo;</span>";
884
+ $pagination .= "</div>\n";
885
+ }
886
+
887
+ return $pagination;
888
+
889
+ }
890
+
891
+ function pmpro_calculateInitialPaymentRevenue($s = NULL, $l = NULL)
892
+ {
893
+ global $wpdb;
894
+
895
+ //if we're limiting users by search
896
+ if($s || $l)
897
+ {
898
+ $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' ";
899
+ if($s)
900
+ $user_ids_query .= "AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
901
+ if($l)
902
+ $user_ids_query .= "AND mu.membership_id = '$l' ";
903
+ }
904
+
905
+ //query to sum initial payments
906
+ $sqlQuery = "SELECT SUM(initial_payment) FROM $wpdb->pmpro_memberships_users WHERE `status` = 'active' ";
907
+ if(!empty($user_ids_query))
908
+ $sqlQuery .= "AND user_id IN(" . $user_ids_query . ") ";
909
+
910
+ $total = $wpdb->get_var($sqlQuery);
911
+
912
+ return (double)$total;
913
+ }
914
+
915
+ function pmpro_calculateRecurringRevenue($s, $l)
916
+ {
917
+ global $wpdb;
918
+
919
+ //if we're limiting users by search
920
+ if($s || $l)
921
+ {
922
+ $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' ";
923
+ if($s)
924
+ $user_ids_query .= "AND (u.user_login LIKE '%$s%' OR u.user_email LIKE '%$s%' OR um.meta_value LIKE '%$s%') ";
925
+ if($l)
926
+ $user_ids_query .= "AND mu.membership_id = '$l' ";
927
+ $user_ids_query .= ")";
928
+ }
929
+ else
930
+ $user_ids_query = "";
931
+
932
+ //4 queries to get annual earnings for each cycle period. currently ignoring trial periods and billing limits.
933
+ $sqlQuery = "
934
+ 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
935
+ UNION
936
+ 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
937
+ UNION
938
+ 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
939
+ UNION
940
+ SELECT SUM(billing_amount) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND cycle_period = 'Year' $user_ids_query
941
+ ";
942
+
943
+ $annual_revenues = $wpdb->get_col($sqlQuery);
944
+
945
+ $total = 0;
946
+ foreach($annual_revenues as $r)
947
+ {
948
+ $total += $r;
949
+ }
950
+
951
+ return $total;
952
+ }
953
+
954
+ function pmpro_generateUsername($firstname = "", $lastname = "", $email = "")
955
+ {
956
+ global $wpdb;
957
+
958
+ //try first initial + last name, firstname, lastname
959
+ $firstname = preg_replace("/[^A-Za-z]/", "", $firstname);
960
+ $lastname = preg_replace("/[^A-Za-z]/", "", $lastname);
961
+ if($firstname && $lastname)
962
+ {
963
+ $username = substr($firstname, 0, 1) . $lastname;
964
+ }
965
+ elseif($firstname)
966
+ {
967
+ $username = $firstname;
968
+ }
969
+ elseif($lastname)
970
+ {
971
+ $username = $lastname;
972
+ }
973
+
974
+ //is it taken?
975
+ $taken = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_login = '" . $username . "' LIMIT 1");
976
+
977
+ if(!$taken)
978
+ return $username;
979
+
980
+ //try the beginning of the email address
981
+ $emailparts = explode("@", "email");
982
+ if(is_array($emailparts))
983
+ $email = preg_replace("/[^A-Za-z]/", "", $emailparts[0]);
984
+
985
+ if($email)
986
+ {
987
+ $username = $email;
988
+ }
989
+
990
+ //is this taken? if not, add numbers until it works
991
+ $taken = true;
992
+ $count = 0;
993
+ while($taken)
994
+ {
995
+ //add a # to the end
996
+ if($count)
997
+ {
998
+ $username = preg_replace("/[0-9]/", "", $username) . $count;
999
+ }
1000
+
1001
+ //taken?
1002
+ $taken = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_login = '" . $username . "' LIMIT 1");
1003
+
1004
+ //increment the number
1005
+ $count++;
1006
+ }
1007
+
1008
+ //must have a good username now
1009
+ return $username;
1010
+ }
1011
+
1012
+ //get a new random code for discount codes
1013
+ function pmpro_getDiscountCode()
1014
+ {
1015
+ global $wpdb;
1016
+
1017
+ while(empty($code))
1018
+ {
1019
+ $scramble = md5(AUTH_KEY . time() . SECURE_AUTH_KEY);
1020
+ $code = substr($scramble, 0, 10);
1021
+ $check = $wpdb->get_var("SELECT code FROM $wpdb->pmpro_discount_codes WHERE code = '$code' LIMIT 1");
1022
+ if($check || is_numeric($code))
1023
+ $code = NULL;
1024
+ }
1025
+
1026
+ return strtoupper($code);
1027
+ }
1028
+
1029
+ //is a discount code valid
1030
+ function pmpro_checkDiscountCode($code, $level_id = NULL, $return_errors = false)
1031
+ {
1032
+ global $wpdb;
1033
+
1034
+ //no code, no code
1035
+ if(empty($code))
1036
+ {
1037
+ if($return_errors)
1038
+ return array(false, "No code was given to check.");
1039
+ else
1040
+ return false;
1041
+ }
1042
+
1043
+ //get code from db
1044
+ $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");
1045
+
1046
+ //did we find it?
1047
+ if(empty($dbcode->id))
1048
+ {
1049
+ if($return_errors)
1050
+ return array(false, __("The discount code could not be found.", "pmpro"));
1051
+ else
1052
+ return false;
1053
+ }
1054
+
1055
+ //fix the date timestamps
1056
+ $dbcode->starts = strtotime(date("m/d/Y", $dbcode->starts));
1057
+ $dbcode->expires = strtotime(date("m/d/Y", $dbcode->expires));
1058
+
1059
+ //today
1060
+ $today = strtotime(date("m/d/Y 00:00:00"));
1061
+
1062
+ //has this code started yet?
1063
+ if(!empty($dbcode->starts) && $dbcode->starts > $today)
1064
+ {
1065
+ if($return_errors)
1066
+ return array(false, sprintf(__("This discount code goes into effect on %s.", "pmpro"), date(get_option('date_format'), $dbcode->starts)));
1067
+ else
1068
+ return false;
1069
+ }
1070
+
1071
+ //has this code expired?
1072
+ if(!empty($dbcode->expires) && $dbcode->expires < $today)
1073
+ {
1074
+ if($return_errors)
1075
+ return array(false, sprintf(__("This discount code expired on %s.", "pmpro"), date(get_option('date_format'), $dbcode->expires)));
1076
+ else
1077
+ return false;
1078
+ }
1079
+
1080
+ //have we run out of uses?
1081
+ if($dbcode->uses > 0)
1082
+ {
1083
+ $used = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = '" . $dbcode->id . "'");
1084
+ if($used >= $dbcode->uses)
1085
+ {
1086
+ if($return_errors)
1087
+ return array(false, __("This discount code is no longer valid.", "pmpro"));
1088
+ else
1089
+ return false;
1090
+ }
1091
+ }
1092
+
1093
+ //if a level was passed check if this code applies
1094
+ $pmpro_check_discount_code_levels = apply_filters("pmpro_check_discount_code_levels", true, $dbcode->id);
1095
+ if(!empty($level_id) && $pmpro_check_discount_code_levels)
1096
+ {
1097
+ $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");
1098
+
1099
+ if(empty($code_level))
1100
+ {
1101
+ if(!empty($return_errors))
1102
+ return array(false, __("This discount code does not apply to this membership level.", "pmpro"));
1103
+ else
1104
+ return false;
1105
+ }
1106
+ }
1107
+
1108
+ //guess we're all good
1109
+ if(!empty($return_errors))
1110
+ return array(true, __("This discount code is okay.", "pmpro"));
1111
+ else
1112
+ return true;
1113
+ }
1114
+
1115
+ function pmpro_no_quotes($s, $quotes = array("'", '"'))
1116
+ {
1117
+ return str_replace($quotes, "", $s);
1118
+ }
1119
+
1120
+ //from: http://www.php.net/manual/en/function.implode.php#86845
1121
+ function pmpro_implodeToEnglish($array)
1122
+ {
1123
+ // sanity check
1124
+ if (!$array || !count ($array))
1125
+ return '';
1126
+
1127
+ // get last element
1128
+ $last = array_pop ($array);
1129
+
1130
+ // if it was the only element - return it
1131
+ if (!count ($array))
1132
+ return $last;
1133
+
1134
+ return implode (', ', $array).' ' . _x('and', 'Used in generation of a list. E.g. a, b, c (AND) d.', 'pmpro') . ' '.$last;
1135
+ }
1136
+
1137
+ //from yoast wordpress seo
1138
+ function pmpro_text_limit( $text, $limit, $finish = '&hellip;')
1139
+ {
1140
+ if( strlen( $text ) > $limit ) {
1141
+ $text = substr( $text, 0, $limit );
1142
+ $text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) );
1143
+ $text .= $finish;
1144
+ }
1145
+ return $text;
1146
+ }
1147
+
1148
+ /* pmpro_getMembershipLevelForUser() returns the first active membership level for a user
1149
+ *
1150
+ * If $user_id is omitted, the value will be retrieved from $current_user.
1151
+ *
1152
+ * Return values:
1153
+ * Success returns the level object.
1154
+ * Failure returns false.
1155
+ */
1156
+ function pmpro_getMembershipLevelForUser($user_id = NULL)
1157
+ {
1158
+ if(empty($user_id))
1159
+ {
1160
+ global $current_user;
1161
+ $user_id = $current_user->ID;
1162
+ }
1163
+
1164
+ if(empty($user_id))
1165
+ {
1166
+ return false;
1167
+ }
1168
+
1169
+ global $all_membership_levels;
1170
+
1171
+ if(isset($all_membership_levels[$user_id]))
1172
+ {
1173
+ return $all_membership_levels[$user_id];
1174
+ }
1175
+ else
1176
+ {
1177
+ global $wpdb;
1178
+ $all_membership_levels[$user_id] = $wpdb->get_row("SELECT
1179
+ l.id AS ID,
1180
+ l.id as id,
1181
+ mu.id as subscription_id,
1182
+ l.name AS name,
1183
+ l.description,
1184
+ l.expiration_number,
1185
+ l.expiration_period,
1186
+ mu.initial_payment,
1187
+ mu.billing_amount,
1188
+ mu.cycle_number,
1189
+ mu.cycle_period,
1190
+ mu.billing_limit,
1191
+ mu.trial_amount,
1192
+ mu.trial_limit,
1193
+ mu.code_id as code_id,
1194
+ UNIX_TIMESTAMP(startdate) as startdate,
1195
+ UNIX_TIMESTAMP(enddate) as enddate
1196
+ FROM {$wpdb->pmpro_membership_levels} AS l
1197
+ JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
1198
+ WHERE mu.user_id = $user_id AND mu.status = 'active'
1199
+ LIMIT 1");
1200
+ return $all_membership_levels[$user_id];
1201
+ }
1202
+ }
1203
+
1204
+ /* pmpro_getMembershipLevelsForUser() returns the membership levels for a user
1205
+ *
1206
+ * If $user_id is omitted, the value will be retrieved from $current_user.
1207
+ * By default it only includes actvie memberships.
1208
+ *
1209
+ * Return values:
1210
+ * Success returns an array of level objects.
1211
+ * Failure returns false.
1212
+ */
1213
+ function pmpro_getMembershipLevelsForUser($user_id = NULL, $include_inactive = false)
1214
+ {
1215
+ if(empty($user_id))
1216
+ {
1217
+ global $current_user;
1218
+ $user_id = $current_user->ID;
1219
+ }
1220
+
1221
+ if(empty($user_id))
1222
+ {
1223
+ return false;
1224
+ }
1225
+
1226
+ global $wpdb;
1227
+ return $wpdb->get_results("SELECT
1228
+ l.id AS ID,
1229
+ l.id as id,
1230
+ mu.id as subscription_id,
1231
+ l.name,
1232
+ l.description,
1233
+ l.expiration_number,
1234
+ l.expiration_period,
1235
+ mu.initial_payment,
1236
+ mu.billing_amount,
1237
+ mu.cycle_number,
1238
+ mu.cycle_period,
1239
+ mu.billing_limit,
1240
+ mu.trial_amount,
1241
+ mu.trial_limit,
1242
+ mu.code_id as code_id,
1243
+ UNIX_TIMESTAMP(startdate) as startdate,
1244
+ UNIX_TIMESTAMP(enddate) as enddate
1245
+ FROM {$wpdb->pmpro_membership_levels} AS l
1246
+ JOIN {$wpdb->pmpro_memberships_users} AS mu ON (l.id = mu.membership_id)
1247
+ WHERE mu.user_id = $user_id".($include_inactive?"":" AND mu.status = 'active'"));
1248
+ }
1249
+
1250
+ /* pmpro_getLevel() returns the level object for a level
1251
+ *
1252
+ * $level may be the level id or name
1253
+ *
1254
+ * Return values:
1255
+ * Success returns the level object.
1256
+ * Failure returns false.
1257
+ */
1258
+ function pmpro_getLevel($level)
1259
+ {
1260
+ global $pmpro_levels;
1261
+
1262
+ if(is_object($level) && !empty($level->id))
1263
+ $level = $level->id;
1264
+
1265
+ //was a name passed? (Todo: make sure level names have at least one non-numeric character.
1266
+ if(is_numeric($level))
1267
+ {
1268
+ $level_id = intval($level);
1269
+ if(isset($pmpro_levels[$level_id]))
1270
+ {
1271
+ return $pmpro_levels[$level_id];
1272
+ }
1273
+ else
1274
+ {
1275
+ global $wpdb;
1276
+ $pmpro_levels[$level_id] = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1");
1277
+ return $pmpro_levels[$level_id];
1278
+ }
1279
+ }
1280
+ else
1281
+ {
1282
+ global $wpdb;
1283
+ $level_obj = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE name = '" . $level . "' LIMIT 1");
1284
+ $level_id = $level->ID;
1285
+ $pmpro_levels[$level_id] = $level_obj;
1286
+ return $pmpro_levels[$level_id];
1287
+ }
1288
+ }
1289
+
1290
+ /*
1291
+ Function to populate pmpro_levels with all levels. We query the DB every time just to be sure we have the latest.
1292
+ This should be called if you want to be sure you get all levels as $pmpro_levels may only have a subset of levels.
1293
+ */
1294
+ function pmpro_getAllLevels($include_hidden = false)
1295
+ {
1296
+ global $pmpro_levels, $wpdb;
1297
+
1298
+ //build query
1299
+ $sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels ";
1300
+ if(!$include_hidden)
1301
+ $sqlQuery .= " WHERE allow_signups = 1 ORDER BY id";
1302
+
1303
+ //get levels from the DB
1304
+ $raw_levels = $wpdb->get_results($sqlQuery);
1305
+
1306
+ //lets put them into an array where the key is the id of the level
1307
+ $pmpro_levels = array();
1308
+ foreach($raw_levels as $raw_level)
1309
+ {
1310
+ $pmpro_levels[$raw_level->id] = $raw_level;
1311
+ }
1312
+
1313
+ return $pmpro_levels;
1314
+ }
1315
+
1316
+ function pmpro_getCheckoutButton($level_id, $button_text = NULL, $classes = NULL)
1317
+ {
1318
+ if(empty($button_text))
1319
+ $button_text = _x("Sign Up for !!name!! Now", "Do not translate !!name!!", "pmpro");
1320
+
1321
+ if(empty($classes))
1322
+ $classes = "btn btn-primary";
1323
+
1324
+ if(empty($level_id))
1325
+ $r = __("Please specify a level id.", "pmpro");
1326
+ else
1327
+ {
1328
+ //get level
1329
+ $level = pmpro_getLevel($level_id);
1330
+
1331
+ //replace vars
1332
+ $replacements = array(
1333
+ "!!id!!" => $level->id,
1334
+ "!!name!!" => $level->name,
1335
+ "!!description!!" => $level->description,
1336
+ "!!confirmation!!" => $level->confirmation,
1337
+ "!!initial_payment!!" => $level->initial_payment,
1338
+ "!!billing_amount!!" => $level->billing_amount,
1339
+ "!!cycle_number!!" => $level->cycle_number,
1340
+ "!!cycle_period!!" => $level->cycle_period,
1341
+ "!!billing_limit!!" => $level->billing_limit,
1342
+ "!!trial_amount!!" => $level->trial_amount,
1343
+ "!!trial_limit!!" => $level->trial_limit,
1344
+ "!!expiration_number!!" => $level->expiration_number,
1345
+ "!!expiration_period!!" => $level->expiration_period
1346
+ );
1347
+ $button_text = str_replace(array_keys($replacements), $replacements, $button_text);
1348
+
1349
+ //button text
1350
+ $r = "<a href=\"" . pmpro_url("checkout", "?level=" . $level_id) . "\" class=\"" . $classes . "\">" . $button_text . "</a>";
1351
+ }
1352
+ return $r;
1353
+ }
1354
+
1355
+ /**
1356
+ * Get the "domain" from a URL. By domain, we mean the host name, minus any subdomains. So just the domain and TLD.
1357
+ *
1358
+ * @param string $url The URL to parse. (generally pass site_url() in WP)
1359
+ * @return string The domain.
1360
+ */
1361
+ function pmpro_getDomainFromURL($url = NULL)
1362
+ {
1363
+ $domainparts = parse_url($url);
1364
+ $domainparts = explode(".", $domainparts['host']);
1365
+ if(count($domainparts) > 1)
1366
+ {
1367
+ //check for ips
1368
+ $isip = true;
1369
+ foreach($domainparts as $part)
1370
+ {
1371
+ if(!is_numeric($part))
1372
+ {
1373
+ $isip = false;
1374
+ break;
1375
+ }
1376
+ }
1377
+
1378
+ if($isip)
1379
+ {
1380
+ //ip, e.g. 127.1.1.1
1381
+ $domain = implode(".", $domainparts);
1382
+ }
1383
+ else
1384
+ {
1385
+ //www.something.com, etc.
1386
+ $domain = $domainparts[count($domainparts)-2] . "." . $domainparts[count($domainparts)-1];
1387
+ }
1388
+ }
1389
+ else
1390
+ {
1391
+ //localhost or another single word domain
1392
+ $domain = $domainparts[0];
1393
+ }
1394
+
1395
+ return $domain;
1396
+ }
1397
+
1398
+ /*
1399
+ Get a member's start date... either in general or for a specific level_id.
1400
+ */
1401
+ if(!function_exists("pmpro_getMemberStartdate"))
1402
+ {
1403
+ function pmpro_getMemberStartdate($user_id = NULL, $level_id = 0)
1404
+ {
1405
+ if(empty($user_id))
1406
+ {
1407
+ global $current_user;
1408
+ $user_id = $current_user->ID;
1409
+ }
1410
+
1411
+ global $pmpro_startdates; //for cache
1412
+ if(empty($pmpro_startdates[$user_id][$level_id]))
1413
+ {
1414
+ global $wpdb;
1415
+
1416
+ if(!empty($level_id))
1417
+ $sqlQuery = "SELECT UNIX_TIMESTAMP(startdate) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND membership_id IN(" . esc_sql($level_id) . ") AND user_id = '" . $user_id . "' ORDER BY id LIMIT 1";
1418
+ else
1419
+ $sqlQuery = "SELECT UNIX_TIMESTAMP(startdate) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND user_id = '" . $user_id . "' ORDER BY id LIMIT 1";
1420
+
1421
+ $startdate = $wpdb->get_var($sqlQuery);
1422
+
1423
+ $pmpro_startdates[$user_id][$level_id] = $startdate;
1424
+ }
1425
+
1426
+ return $pmpro_startdates[$user_id][$level_id];
1427
+ }
1428
+ }
1429
+
1430
+ /*
1431
+ How long has this member been a member
1432
+ */
1433
+ if(!function_exists("pmpro_getMemberDays"))
1434
+ {
1435
+ function pmpro_getMemberDays($user_id = NULL, $level_id = 0)
1436
+ {
1437
+ if(empty($user_id))
1438
+ {
1439
+ global $current_user;
1440
+ $user_id = $current_user->ID;
1441
+ }
1442
+
1443
+ global $pmpro_member_days;
1444
+ if(empty($pmpro_member_days[$user_id][$level_id]))
1445
+ {
1446
+ $startdate = pmpro_getMemberStartdate($user_id, $level_id);
1447
+
1448
+ $now = time();
1449
+ $days = ($now - $startdate)/3600/24;
1450
+
1451
+ $pmpro_member_days[$user_id][$level_id] = $days;
1452
+ }
1453
+
1454
+ return $pmpro_member_days[$user_id][$level_id];
1455
+ }
1456
+ }
1457
+
1458
+ //the start of a message handling script
1459
+ function pmpro_setMessage($message, $type, $force = false)
1460
+ {
1461
+ global $pmpro_msg, $pmpro_msgt;
1462
+
1463
+ //for now, we only show the first message generated
1464
+ if($force || empty($pmpro_msg))
1465
+ {
1466
+ $pmpro_msg = $message;
1467
+ $pmpro_msgt = $type;
1468
+ }
1469
+ }
1470
+
1471
+ //used in class definitions for input fields to see if there was an error
1472
+ function pmpro_getClassForField($field)
1473
+ {
1474
+ global $pmpro_error_fields, $pmpro_required_billing_fields, $pmpro_required_user_fields;
1475
+ $classes = array();
1476
+
1477
+ //error on this field?
1478
+ if(in_array($field, $pmpro_error_fields))
1479
+ {
1480
+ $classes[] = "pmpro_error";
1481
+ }
1482
+
1483
+ $required_fields = array_merge(array_keys($pmpro_required_billing_fields), array_keys($pmpro_required_user_fields));
1484
+
1485
+ //required?
1486
+ if(in_array($field, $required_fields))
1487
+ {
1488
+ $classes[] = "pmpro_required";
1489
+ }
1490
+
1491
+ $classes = apply_filters("pmpro_field_classes", $classes, $field);
1492
+
1493
+ if(!empty($classes))
1494
+ return implode(" ", $classes);
1495
+ else
1496
+ return "";
1497
+ }
1498
+
1499
+ //get a var from $_GET or $_POST
1500
+ function pmpro_getParam($index, $method = "REQUEST", $default = "")
1501
+ {
1502
+ if($method == "REQUEST")
1503
+ {
1504
+ if(!empty($_REQUEST[$index]))
1505
+ return $_REQUEST[$index];
1506
+ }
1507
+ elseif($method == "POST")
1508
+ {
1509
+ if(!empty($_POST[$index]))
1510
+ return $_POST[$index];
1511
+ }
1512
+ elseif($method == "GET")
1513
+ {
1514
+ if(!empty($_GET[$index]))
1515
+ return $_GET[$index];
1516
+ }
1517
+
1518
+ return $default;
1519
+ }
1520
+
1521
+ /*
1522
+ Checks if all required settings are set.
1523
+ */
1524
+ function pmpro_is_ready()
1525
+ {
1526
+ global $wpdb, $pmpro_pages, $pmpro_level_ready, $pmpro_gateway_ready, $pmpro_pages_ready;
1527
+
1528
+ //check if there is at least one level
1529
+ $pmpro_level_ready = (bool)$wpdb->get_var("SELECT id FROM $wpdb->pmpro_membership_levels LIMIT 1");
1530
+
1531
+ //check if the gateway settings are good. first check if it's needed (is there paid membership level)
1532
+ $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");
1533
+ $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");
1534
+
1535
+ if(empty($paid_membership_level) && empty($paid_user_subscription))
1536
+ {
1537
+ //no paid membership level now or attached to a user. we don't need the gateway setup
1538
+ $pmpro_gateway_ready = true;
1539
+ }
1540
+ else
1541
+ {
1542
+ $gateway = pmpro_getOption("gateway");
1543
+ if($gateway == "authorizenet")
1544
+ {
1545
+ if(pmpro_getOption("gateway_environment") && pmpro_getOption("loginname") && pmpro_getOption("transactionkey"))
1546
+ $pmpro_gateway_ready = true;
1547
+ else
1548
+ $pmpro_gateway_ready = false;
1549
+ }
1550
+ elseif($gateway == "paypal" || $gateway == "paypalexpress")
1551
+ {
1552
+ if(pmpro_getOption("gateway_environment") && pmpro_getOption("gateway_email") && pmpro_getOption("apiusername") && pmpro_getOption("apipassword") && pmpro_getOption("apisignature"))
1553
+ $pmpro_gateway_ready = true;
1554
+ else
1555
+ $pmpro_gateway_ready = false;
1556
+ }
1557
+ elseif($gateway == "paypalstandard")
1558
+ {
1559
+ if(pmpro_getOption("gateway_environment") && pmpro_getOption("gateway_email"))
1560
+ $pmpro_gateway_ready = true;
1561
+ else
1562
+ $pmpro_gateway_ready = false;
1563
+ }
1564
+ elseif($gateway == "payflowpro")
1565
+ {
1566
+ if(pmpro_getOption("payflow_partner") && pmpro_getOption("payflow_vendor") && pmpro_getOption("payflow_user") && pmpro_getOption("payflow_pwd"))
1567
+ $pmpro_gateway_ready = true;
1568
+ else
1569
+ $pmpro_gateway_ready = false;
1570
+ }
1571
+ elseif($gateway == "stripe")
1572
+ {
1573
+ if(pmpro_getOption("gateway_environment") && pmpro_getOption("stripe_secretkey") && pmpro_getOption("stripe_publishablekey"))
1574
+ $pmpro_gateway_ready = true;
1575
+ else
1576
+ $pmpro_gateway_ready = false;
1577
+ }
1578
+ elseif($gateway == "braintree")
1579
+ {
1580
+ if(pmpro_getOption("gateway_environment") && pmpro_getOption("braintree_merchantid") && pmpro_getOption("braintree_publickey") && pmpro_getOption("braintree_privatekey"))
1581
+ $pmpro_gateway_ready = true;
1582
+ else
1583
+ $pmpro_gateway_ready = false;
1584
+ }
1585
+ else
1586
+ {
1587
+ $pmpro_gateway_ready = false;
1588
+ }
1589
+ }
1590
+
1591
+ //check if we have all pages
1592
+ if($pmpro_pages["account"] &&
1593
+ $pmpro_pages["billing"] &&
1594
+ $pmpro_pages["cancel"] &&
1595
+ $pmpro_pages["checkout"] &&
1596
+ $pmpro_pages["confirmation"] &&
1597
+ $pmpro_pages["invoice"] &&
1598
+ $pmpro_pages["levels"])
1599
+ $pmpro_pages_ready = true;
1600
+ else
1601
+ $pmpro_pages_ready = false;
1602
+
1603
+ //now check both
1604
+ if($pmpro_gateway_ready && $pmpro_pages_ready)
1605
+ return true;
1606
+ else
1607
+ return false;
1608
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/https.php CHANGED
@@ -50,72 +50,37 @@ add_action('init', 'pmpro_besecure_set', 2);
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
  {
@@ -182,4 +147,4 @@ function pmpro_replaceURLsInBuffer($buffer)
182
  }
183
 
184
  return $buffer;
185
- }
50
  function pmpro_besecure()
51
  {
52
  global $besecure, $post;
53
+
54
  //check the post option
55
+ if(!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
+ if($besecure && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off" || $_SERVER['HTTPS'] == "false"))
69
+ {
70
+ //need to be secure
71
+ wp_redirect("https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
72
+ exit;
 
 
 
 
 
 
 
 
 
 
73
  }
74
+ elseif(!$besecure && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "off" && $_SERVER['HTTPS'] != "false")
75
+ {
76
+ //don't need to be secure
77
+ wp_redirect("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
78
+ exit;
79
+ }
80
  }
81
  add_action('wp', 'pmpro_besecure', 2);
82
  add_action('login_init', 'pmpro_besecure', 2);
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  //If the site URL starts with https:, then force SSL/besecure to true. (Added 1.5.2)
85
  function pmpro_check_site_url_for_https($besecure)
86
  {
147
  }
148
 
149
  return $buffer;
150
+ }
includes/init.php CHANGED
@@ -13,51 +13,23 @@ function pmpro_init()
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";
@@ -108,11 +80,16 @@ function pmpro_wp()
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");
@@ -137,7 +114,14 @@ function pmpro_wp()
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);
@@ -208,33 +192,4 @@ function pmpro_set_current_user()
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
-
13
 
14
  if(is_admin())
15
  {
16
+ if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin.css"))
 
17
  $admin_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin.css";
18
+ elseif(file_exists(get_template_directory() . "/paid-memberships-pro/admin.css"))
 
 
 
19
  $admin_css = get_template_directory_uri() . "/paid-memberships-pro/admin.css";
20
+ else
21
+ $admin_css = plugins_url('css/admin.css',dirname(__FILE__) );
 
 
 
 
 
 
 
22
  wp_enqueue_style('pmpro_admin', $admin_css, array(), PMPRO_VERSION, "screen");
 
 
 
23
  }
24
  else
25
  {
26
+ if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend.css"))
 
27
  $frontend_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend.css";
28
+ elseif(file_exists(get_template_directory() . "/paid-memberships-pro/frontend.css"))
 
 
 
29
  $frontend_css = get_template_directory_uri() . "/paid-memberships-pro/frontend.css";
30
+ else
 
 
 
31
  $frontend_css = plugins_url('css/frontend.css',dirname(__FILE__) );
 
 
 
 
32
  wp_enqueue_style('pmpro_frontend', $frontend_css, array(), PMPRO_VERSION, "screen");
 
 
 
33
 
34
  if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/print.css"))
35
  $print_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/print.css";
80
  if(!is_admin())
81
  {
82
  global $post, $pmpro_pages, $pmpro_page_name, $pmpro_page_id, $pmpro_body_classes;
83
+
84
  //run the appropriate preheader function
85
  foreach($pmpro_pages as $pmpro_page_name => $pmpro_page_id)
86
+ {
87
+ if($pmpro_page_name == "checkout")
88
+ {
89
+ continue; //we do the checkout shortcode every time now
90
+ }
91
+
92
+ if(!empty($post->ID) && $pmpro_page_id == $post->ID)
93
  {
94
  //preheader
95
  require_once(PMPRO_DIR . "/preheaders/" . $pmpro_page_name . ".php");
114
  add_shortcode("pmpro_" . $pmpro_page_name, "pmpro_pages_shortcode");
115
  break; //only the first page found gets a shortcode replacement
116
  }
117
+ }
118
+
119
+ //make sure you load the preheader for the checkout page. the shortcode for checkout is loaded below
120
+ if(!empty($post->post_content) && strpos($post->post_content, "[pmpro_checkout]") !== false)
121
+ {
122
+ $pmpro_body_classes[] = "pmpro-checkout";
123
+ require_once(PMPRO_DIR . "/preheaders/checkout.php");
124
+ }
125
  }
126
  }
127
  add_action("wp", "pmpro_wp", 1);
192
 
193
  do_action("pmpro_after_set_current_user");
194
  }
195
+ add_action('set_current_user', 'pmpro_set_current_user');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- * @param string|null $apiKey
7
- *
8
- * @return Stripe_Account
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
- } else {
38
  return $value;
39
- }
40
  }
41
 
42
  private static function _encodeObjects($d)
43
  {
44
  if ($d instanceof Stripe_ApiResource) {
45
- return self::utf8($d->id);
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
- $res[$k] = self::_encodeObjects($v);
54
  return $res;
55
  } else {
56
- return self::utf8($d);
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
- if (!is_array($arr))
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($method, $url, $params);
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
- $msg = "Invalid response object from API: $rbody "
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
- throw new Stripe_InvalidRequestError(
138
- $msg, $param, $rcode, $rbody, $resp
139
- );
140
  case 401:
141
- throw new Stripe_AuthenticationError($msg, $rcode, $rbody, $resp);
142
  case 402:
143
- throw new Stripe_CardError($msg, $param, $code, $rcode, $rbody, $resp);
 
 
 
144
  default:
145
- throw new Stripe_ApiError($msg, $rcode, $rbody, $resp);
146
  }
147
  }
148
 
149
- private function _requestRaw($method, $url, $params)
150
  {
151
  $myApiKey = $this->_apiKey;
152
  if (!$myApiKey)
153
  $myApiKey = Stripe::$apiKey;
154
-
155
- if (!$myApiKey) {
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
- 'lang' => 'php',
169
- 'lang_version' => $langVersion,
170
- 'publisher' => 'stripe',
171
- 'uname' => $uname);
172
  $headers = array('X-Stripe-Client-User-Agent: ' . json_encode($ua),
173
- 'User-Agent: Stripe/v1 PhpBindings/' . Stripe::VERSION,
174
  'Authorization: Bearer ' . $myApiKey);
175
- if (Stripe::$apiVersion)
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
- $msg = "Invalid response body from API: $rbody "
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($method, $absUrl, $headers, $params)
203
  {
204
  $curl = curl_init();
205
- $method = strtolower($method);
206
  $opts = array();
207
- if ($method == 'get') {
208
  $opts[CURLOPT_HTTPGET] = 1;
209
  if (count($params) > 0) {
210
- $encoded = self::encode($params);
211
- $absUrl = "$absUrl?$encoded";
212
  }
213
- } else if ($method == 'post') {
214
  $opts[CURLOPT_POST] = 1;
215
  $opts[CURLOPT_POSTFIELDS] = self::encode($params);
216
- } else if ($method == 'delete') {
217
  $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
218
  if (count($params) > 0) {
219
- $encoded = self::encode($params);
220
- $absUrl = "$absUrl?$encoded";
221
  }
222
  } else {
223
- throw new Stripe_ApiError("Unrecognized method $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
- $errno == CURLE_SSL_PEER_CERTIFICATE ||
246
- $errno == CURLE_SSL_CACERT_BADFILE) {
247
- array_push(
248
- $headers,
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, $cert);
 
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
- . "internet connection and try again. If this problem persists, "
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
- . "that your network is not intercepting certificates. "
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::_scopedLsb($class, 'className', $class);
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
- $message = "Could not determine which URL to request: "
68
- . "$class instance has invalid ID: $id";
69
- throw new Stripe_InvalidRequestError($message, null);
70
  }
71
  $id = Stripe_ApiRequestor::utf8($id);
72
- $base = $this->_lsb('classUrl', $class);
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
- $message = "You must pass an array as the first argument to Stripe API "
81
- . "method calls. (HINT: an example call to create a charge "
82
- . "would be: \"StripeCharge::create(array('amount' => 100, "
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::_scopedLsb($class, 'classUrl', $class);
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::_scopedLsb($class, 'classUrl', $class);
111
  list($response, $apiKey) = $requestor->request('post', $url, $params);
112
  return Stripe_Util::convertToStripeObject($response, $apiKey);
113
  }
114
 
115
- protected function _scopedSave($class, $apiKey=null)
116
  {
117
  self::_validateCall('save');
118
- $requestor = new Stripe_ApiRequestor($apiKey);
119
- $params = $this->serializeParameters();
120
-
121
- if (count($params) > 0) {
 
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, $httpStatus,
6
- $httpBody, $jsonBody
7
- )
8
  {
9
- parent::__construct($message, $httpStatus, $httpBody, $jsonBody);
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
- * @param string $id The ID of the charge to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Charge
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
- * @param string $id The ID of the coupon to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Coupon
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
- * @param string $id The ID of the customer to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Customer
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, $httpStatus=null,
6
- $httpBody=null, $jsonBody=null
7
- )
8
  {
9
  parent::__construct($message);
10
- $this->httpStatus = $httpStatus;
11
- $this->httpBody = $httpBody;
12
- $this->jsonBody = $jsonBody;
13
  }
14
 
15
  public function getHttpStatus()
16
  {
17
- return $this->httpStatus;
18
  }
19
 
20
  public function getHttpBody()
21
  {
22
- return $this->httpBody;
23
  }
24
 
25
  public function getJsonBody()
26
  {
27
- return $this->jsonBody;
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
- * @param string $id The ID of the event to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Event
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, $httpStatus=null,
6
- $httpBody=null, $jsonBody=null
7
- )
8
  {
9
- parent::__construct($message, $httpStatus, $httpBody, $jsonBody);
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
- * @param array|null $params
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Invoice The created invoice.
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
- * @param string $id The ID of the invoice item to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_InvoiceItem
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 all($params=null)
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
- $requestor = new Stripe_ApiRequestor($this->_apiKey);
19
- list($response, $apiKey) = $requestor->request(
20
- 'post', $this['url'], $params
21
- );
22
- return Stripe_Util::convertToStripeObject($response, $apiKey);
23
  }
24
 
25
- public function retrieve($id, $params=null)
26
  {
27
  $requestor = new Stripe_ApiRequestor($this->_apiKey);
28
- $base = $this['url'];
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::$permanentAttributes = new Stripe_Util_Set(array('_apiKey', 'id'));
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
- if ($v === "") {
52
- throw new InvalidArgumentException(
53
- 'You cannot set \''.$k.'\'to an empty string. '
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
- $message = "Stripe Notice: Undefined property of $class instance: $k. "
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 function keys()
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($this);
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::$permanentAttributes->includes($k))
175
  continue;
176
  unset($this->$k);
177
  }
178
 
179
  foreach ($values as $k => $v) {
180
- if (self::$permanentAttributes->includes($k))
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
- * @param string $id The ID of the plan to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Plan
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.11.0';
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
- * @param string $id The ID of the token to retrieve.
7
- * @param string|null $apiKey
8
- *
9
- * @return Stripe_Token
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::_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_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::_scopedCreate($class, $params, $apiKey);
39
  }
40
 
41
- /**
42
- * @return Stripe_Transfer The saved transfer.
43
- */
44
- public function save()
45
  {
46
  $class = get_class();
47
- return self::_scopedSave($class);
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[0] == '_') {
36
  continue;
37
  }
38
  if ($v instanceof Stripe_Object) {
39
  $results[$k] = $v->__toArray(true);
40
- } else if (is_array($v)) {
 
41
  $results[$k] = self::convertStripeObjectToArray($v);
42
- } else {
 
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
- 'card' => 'Stripe_Card',
60
- 'charge' => 'Stripe_Charge',
61
- 'customer' => 'Stripe_Customer',
62
- 'list' => 'Stripe_List',
63
- 'invoice' => 'Stripe_Invoice',
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
- } else {
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, '', '&amp;');
52
- return $url;
53
- }
54
-
55
- public static function redirect($params)
56
- {
57
- $url = 'https://www.2checkout.com/checkout/purchase?'.http_build_query($params, '', '&amp;');
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/login.php CHANGED
@@ -54,23 +54,15 @@ 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);
@@ -86,7 +78,7 @@ function pmpro_login_head()
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)
@@ -112,7 +104,7 @@ function pmpro_login_head()
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");
@@ -139,20 +131,4 @@ function pmpro_login_head()
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);
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
+ if((pmpro_is_login_page() || is_page("login")) && $login_redirect)
 
 
 
 
 
60
  {
61
  //redirect registration page to levels page
62
+ if(isset($_REQUEST['action']) && $_REQUEST['action'] == "register" || isset($_REQUEST['registration']) && $_REQUEST['registration'] == "disabled")
 
 
 
63
  {
64
  //redirect to levels page unless filter is set.
65
+ $link = apply_filters("pmpro_register_redirect", pmpro_url("levels"));
66
  if(!empty($link))
67
  {
68
  wp_redirect($link);
78
  //check for the login page id and redirect there if we're not there already
79
  global $post;
80
 
81
+ if(is_array($GLOBALS['theme_my_login']->options))
82
  {
83
  //an older version of TML stores it this way
84
  if($GLOBALS['theme_my_login']->options['page_id'] !== $post->ID)
104
  exit;
105
  }
106
  }
107
+ elseif(class_exists("Theme_My_Login") && version_compare(Theme_My_Login::version, "6.3") >= 0)
108
  {
109
  //TML > 6.3
110
  $link = Theme_My_Login::get_page_link("login");
131
  }
132
  }
133
  add_action('wp', 'pmpro_login_head');
134
+ add_action('login_init', 'pmpro_login_head');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/metaboxes.php CHANGED
@@ -96,8 +96,8 @@ function pmpro_page_save($post_id)
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
  {
96
  //wrapper to add meta boxes
97
  function pmpro_page_meta_wrapper()
98
  {
99
+ add_meta_box('pmpro_page_meta', _x('Require Membership', 'metabox heading', 'pmpro'), 'pmpro_page_meta', 'page', 'side');
100
+ add_meta_box('pmpro_page_meta', _x('Require Membership', 'metabox heading', 'pmpro'), 'pmpro_page_meta', 'post', 'side');
101
  }
102
  if (is_admin())
103
  {
includes/notifications.php CHANGED
@@ -12,16 +12,10 @@ function pmpro_notifications()
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
 
12
  if(empty($pmpro_notification))
13
  {
14
  if(is_ssl())
15
+ $pmpro_notification = wp_remote_retrieve_body(wp_remote_get("https://www.paidmembershipspro.com/notifications/?v=" . PMPRO_VERSION));
 
 
16
  else
17
+ $pmpro_notification = wp_remote_retrieve_body(wp_remote_get("http://www.paidmembershipspro.com/notifications/?v=" . PMPRO_VERSION));
18
+
 
 
 
 
19
  set_transient("pmpro_notification_" . PMPRO_VERSION, $pmpro_notification, 86400);
20
  }
21
 
includes/profile.php CHANGED
@@ -130,7 +130,7 @@ function pmpro_membership_level_profile_fields($user)
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
  ?>
@@ -183,8 +183,8 @@ function pmpro_membership_level_profile_fields_update()
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
  }
@@ -197,7 +197,7 @@ function pmpro_membership_level_profile_fields_update()
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
  }
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))?></option>
134
  <?php
135
  }
136
  ?>
183
  if(!empty($_REQUEST['expires']))
184
  {
185
  //update the expiration date
186
+ $expiration_date = intval($_REQUEST['expires_year']) . "-" . intval($_REQUEST['expires_month']) . "-" . intval($_REQUEST['expires_day']);
187
+ $sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = '" . $expiration_date . "' WHERE status = 'active' AND user_id = '" . $user_ID . "' LIMIT 1";
188
  if($wpdb->query($sqlQuery))
189
  $expiration_changed = true;
190
  }
197
  if(empty($blank))
198
  {
199
  //null out the expiration
200
+ $sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = NULL WHERE status = 'active' AND user_id = '" . $user_ID . "' LIMIT 1";
201
  if($wpdb->query($sqlQuery))
202
  $expiration_changed = true;
203
  }
includes/services.php CHANGED
@@ -12,7 +12,7 @@ if(isset($_REQUEST['action']) && $_REQUEST['action'] == "applydiscountcode")
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
  {
@@ -49,13 +49,6 @@ function pmpro_wp_ajax_braintree_webhook()
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");
12
  require_once(dirname(__FILE__) . "/../services/applydiscountcode.php");
13
  exit;
14
  }
15
+ add_action("init", "pmpro_applydiscountcode_init");
16
  }
17
  function pmpro_wp_ajax_authnet_silent_post()
18
  {
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_memberlist_csv()
53
  {
54
  require_once(dirname(__FILE__) . "/../adminpages/memberslist-csv.php");
includes/upgradecheck.php CHANGED
@@ -73,38 +73,11 @@ function pmpro_checkForUpgrades()
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()
@@ -419,14 +392,14 @@ function pmpro_upgrade_1()
419
  /*
420
  default options
421
  */
422
- $nonmembertext = sprintf( __( 'This content is for !!levels!! members only.<br /><a href="%s">Register</a>', 'pmpro' ), wp_login_url() . "?action=register" );
423
  pmpro_setOption("nonmembertext", $nonmembertext);
424
 
425
- $notloggedintext = sprintf( __( 'This content is for !!levels!! members only.<br /><a href="%s">Log In</a> <a href="%s">Register</a>', 'pmpro' ), wp_login_url(), wp_login_url() . "?action=register" );
426
  '?action=register">Register</a>';
427
  pmpro_setOption("notloggedintext", $notloggedintext);
428
 
429
- $rsstext = __( "This content is for !!levels!! members only. Visit the site and log in/register to read.", 'pmpro' );
430
  pmpro_setOption("rsstext", $rsstext);
431
 
432
  $gateway_environment = "sandbox";
73
  if($pmpro_db_version < 1.72)
74
  {
75
  //schedule the credit card expiring cron
76
+ wp_schedule_event(time(), '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
  function pmpro_upgrade_1_7()
392
  /*
393
  default options
394
  */
395
+ $nonmembertext = 'This content is for !!levels!! members only.<br /><a href="' . wp_login_url() . '?action=register">Register</a>';
396
  pmpro_setOption("nonmembertext", $nonmembertext);
397
 
398
+ $notloggedintext = 'This content is for !!levels!! members only.<br /><a href="' . wp_login_url() . '">Log In</a> <a href="' . wp_login_url() .
399
  '?action=register">Register</a>';
400
  pmpro_setOption("notloggedintext", $notloggedintext);
401
 
402
+ $rsstext = "This content is for !!levels!! members only. Visit the site and log in/register to read.";
403
  pmpro_setOption("rsstext", $rsstext);
404
 
405
  $gateway_environment = "sandbox";
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 &amp; SSL"
140
- msgstr "Platební brány &amp; 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&nbsp;Name"
926
- msgstr "Jméno"
927
-
928
- #: adminpages/memberslist.php:114
929
- msgid "Last&nbsp;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 (&#36;)"
1922
- msgstr "Americký dolar (&#36;)"
1923
-
1924
- #: includes/currencies.php:8 includes/currencies.php:47
1925
- #: includes/currencies.php:40
1926
- msgid "Euros (&euro;)"
1927
- msgstr "Euro (&euro;)"
1928
-
1929
- #: includes/currencies.php:9 includes/currencies.php:46
1930
- #: includes/currencies.php:39
1931
- msgid "Pounds Sterling (&pound;)"
1932
- msgstr "Libra (&pound;)"
1933
-
1934
- #: includes/currencies.php:10
1935
- msgid "Australian Dollars (&#36;)"
1936
- msgstr "Australský dolar (&#36;)"
1937
-
1938
- #: includes/currencies.php:11
1939
- msgid "Brazilian Real (&#36;)"
1940
- msgstr "Brazilský real (&#36;)"
1941
-
1942
- #: includes/currencies.php:12 includes/currencies.php:45
1943
- #: includes/currencies.php:38
1944
- msgid "Canadian Dollars (&#36;)"
1945
- msgstr "Kanadský dolar (&#36;)"
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 (&#36;)"
1961
- msgstr "Hong Kongský dolar (&#36;)"
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 (&yen;)"
1981
- msgstr "Japonský Jen (&yen;)"
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 (&#36;)"
1989
- msgstr "Mexické peso (&#36;)"
1990
-
1991
- #: includes/currencies.php:24 includes/currencies.php:21
1992
- msgid "New Zealand Dollar (&#36;)"
1993
- msgstr "Novozélanský dolar (&#36;)"
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 (&#36;)"
2009
- msgstr "Singapurský dolar (&#36;)"
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 &rarr;"
2581
- msgstr "Zobrazit Vás členský účet &rarr;"
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 "&larr; View All Invoices"
2613
- msgstr "&larr; 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&nbsp;Level"
2662
- msgstr "Vaše&nbsp;úrověň"
2663
-
2664
- #: pages/levels.php:145 pages/levels.php:129
2665
- msgid "&larr; Return to Your Account"
2666
- msgstr "&larr; Návrat k účtu"
2667
-
2668
- #: pages/levels.php:147 pages/levels.php:131
2669
- msgid "&larr; Return to Home"
2670
- msgstr "&larr; 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\">&laquo; back to my account</a>"
2705
- msgstr "Informace upraveny. <a href=\"%s\">&laquo; 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 &amp; SSL"
146
- msgstr "Betalings Gateway &amp; 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 &lt;"
679
- msgstr "Hvis ikke aktiveret, alle emails fra \"WordPress &lt;"
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&nbsp;Name"
1049
- msgstr "For&nbsp;Navn"
1050
-
1051
- #: adminpages/memberslist.php:147 adminpages/memberslist.php:114
1052
- msgid "Last&nbsp;Name"
1053
- msgstr "Efter&nbsp;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 (&#36;)"
2327
- msgstr "US Dollar (&#36;)"
2328
-
2329
- #: includes/currencies.php:8 includes/currencies.php:47
2330
- #: includes/currencies.php:40
2331
- msgid "Euros (&euro;)"
2332
- msgstr "Euro (&euro;)"
2333
-
2334
- #: includes/currencies.php:9 includes/currencies.php:46
2335
- #: includes/currencies.php:39
2336
- msgid "Pounds Sterling (&pound;)"
2337
- msgstr "Pound Sterling (&pound;)"
2338
-
2339
- #: includes/currencies.php:10
2340
- msgid "Australian Dollars (&#36;)"
2341
- msgstr "Australsk Dollar (&#36;)"
2342
-
2343
- #: includes/currencies.php:11
2344
- msgid "Brazilian Real (&#36;)"
2345
- msgstr "Brasilian Real (&#36;)"
2346
-
2347
- #: includes/currencies.php:12 includes/currencies.php:45
2348
- #: includes/currencies.php:38
2349
- msgid "Canadian Dollars (&#36;)"
2350
- msgstr "Canadisk Dollar (&#36;)"
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 (&#36;)"
2366
- msgstr "Kong Kong Dollar (&#36;)"
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 (&yen;)"
2386
- msgstr "Japansk Yen (&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 (&#36;)"
2394
- msgstr "Mexicansk Peso (&#36;)"
2395
-
2396
- #: includes/currencies.php:24 includes/currencies.php:21
2397
- msgid "New Zealand Dollar (&#36;)"
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 (&#36;)"
2414
- msgstr "Singapore Dollar (&#36;)"
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:31 includes/currencies.php:26
2425
- msgid "Swedish Krona"
2426
- msgstr "Svensk Krone"
2427
-
2428
- #: includes/currencies.php:32 includes/currencies.php:27
2429
- msgid "Swiss Franc"
2430
- msgstr "Swiss Franc"
2431
-
2432
- #: includes/currencies.php:33 includes/currencies.php:28
2433
- msgid "Taiwan New Dollars"
2434
- msgstr "Taiwan New Dollar"
2435
-
2436
- #: includes/currencies.php:34 includes/currencies.php:29
2437
- msgid "Thai Baht"
2438
- msgstr "Thai Baht"
2439
-
2440
- #: includes/currencies.php:35
2441
- msgid "Turkish Lira"
2442
- msgstr "Tyrkisk Lira"
2443
-
2444
- #: includes/currencies.php:36
2445
- msgid "Vietnamese Dong"
2446
- msgstr "Vietnamesisk Dong"
2447
-
2448
- #: includes/functions.php:204 includes/functions.php:160
2449
- #: includes/functions.php:196 includes/functions.php:202
2450
- #, php-format
2451
- msgid "The price for membership is <strong>%s</strong> now"
2452
- msgstr "Pris for medlemskab er <strong>%s</strong> nu "
2453
-
2454
- #: includes/functions.php:206 includes/functions.php:204
2455
- #, php-format
2456
- msgid "<strong>%s</strong> now"
2457
- msgstr "<strong>%s</strong> nu"
2458
-
2459
- #: includes/functions.php:215 includes/functions.php:169
2460
- #: includes/functions.php:205 includes/functions.php:213
2461
- #, php-format
2462
- msgid " and then <strong>%s per %s for %d more %s</strong>."
2463
- msgstr "og denne <strong>%s pr %s for %d mere %s</strong>."
2464
-
2465
- #: includes/functions.php:219 includes/functions.php:173
2466
- #: includes/functions.php:209 includes/functions.php:217
2467
- #, php-format
2468
- msgid " and then <strong>%s every %d %s for %d more %s</strong>."
2469
- msgstr "og så <strong>%s hver %d %s for %d mere %s</strong>."
2470
-
2471
- #: includes/functions.php:224 includes/functions.php:178
2472
- #: includes/functions.php:214 includes/functions.php:222
2473
- #, php-format
2474
- msgid " and then <strong>%s after %d %s</strong>."
2475
- msgstr "og derfeter <strong>%s efter %d %s</strong>."
2476
-
2477
- #: includes/functions.php:231 includes/functions.php:229
2478
- #, php-format
2479
- msgid "The price for membership is <strong>%s per %s</strong>."
2480
- msgstr "Prisen for medlemskab er <strong>%s pr %s</strong>."
2481
-
2482
- #: includes/functions.php:235 includes/functions.php:233
2483
- #, php-format
2484
- msgid "The price for membership is <strong>%s every %d %s</strong>."
2485
- msgstr "Prisen for medlemskab er <strong>%s hver %d %s</strong>."
2486
-
2487
- #: includes/functions.php:240 includes/functions.php:184
2488
- #: includes/functions.php:220 includes/functions.php:228
2489
- #: includes/functions.php:238
2490
- #, php-format
2491
- msgid " and then <strong>%s per %s</strong>."
2492
- msgstr "og derefter <strong>%s pr %s</strong>."
2493
-
2494
- #: includes/functions.php:244 includes/functions.php:188
2495
- #: includes/functions.php:224 includes/functions.php:232
2496
- #: includes/functions.php:242
2497
- #, php-format
2498
- msgid " and then <strong>%s every %d %s</strong>."
2499
- msgstr "og derefter <strong>%s hver %d %s</strong>."
2500
-
2501
- #: includes/functions.php:262 includes/functions.php:202
2502
- #: includes/functions.php:238 includes/functions.php:249
2503
- #: includes/functions.php:260 pages/levels.php:82
2504
- msgid "After your initial payment, your first payment is Free."
2505
- msgstr ""
2506
- "Efter du har indsat din betaling, ville din første betaling være GRATIS."
2507
-
2508
- #: includes/functions.php:266 includes/functions.php:206
2509
- #: includes/functions.php:242 includes/functions.php:253
2510
- #: includes/functions.php:264 pages/levels.php:86
2511
- #, php-format
2512
- msgid "After your initial payment, your first %d payments are Free."
2513
- msgstr ""
2514
- "Efter du har indsat din betaling, ville din først %d betaling være GRATIS."
2515
-
2516
- #: includes/functions.php:273 includes/functions.php:213
2517
- #: includes/functions.php:249 includes/functions.php:260
2518
- #: includes/functions.php:271 pages/levels.php:93
2519
- #, php-format
2520
- msgid "After your initial payment, your first payment will cost %s."
2521
- msgstr "Efter du har indsat din betaling, ville din første betaling koste %s."
2522
-
2523
- #: includes/functions.php:277 includes/functions.php:217
2524
- #: includes/functions.php:253 includes/functions.php:264
2525
- #: includes/functions.php:275 pages/levels.php:97
2526
- #, php-format
2527
- msgid "After your initial payment, your first %d payments will cost %s."
2528
- msgstr "Efter du har indsat din betaling, vil dit %d betaling koste %s."
2529
-
2530
- #: includes/functions.php:288 includes/functions.php:228
2531
- #: includes/functions.php:264 includes/functions.php:275
2532
- #: includes/functions.php:286
2533
- #, php-format
2534
- msgid "Customers in %s will be charged %s%% tax."
2535
- msgstr "Kunder hos %s ville blive opkrævet i %s%% skat."
2536
-
2537
- #: includes/functions.php:302 includes/functions.php:242
2538
- #: includes/functions.php:278 includes/functions.php:289
2539
- #: includes/functions.php:300
2540
- #, php-format
2541
- msgid "Membership expires after %d %s."
2542
- msgstr "Medlemsskab udløber efter %d %s."
2543
-
2544
- #: includes/functions.php:538 includes/functions.php:491
2545
- #: includes/functions.php:514 includes/functions.php:525
2546
- #: includes/functions.php:536
2547
- msgid "User ID not found."
2548
- msgstr "Bruger ID ikke fundet."
2549
-
2550
- #: includes/functions.php:555 includes/functions.php:508
2551
- #: includes/functions.php:531 includes/functions.php:542
2552
- #: includes/functions.php:553
2553
- msgid "Invalid level."
2554
- msgstr "Ugyldigt niveau."
2555
-
2556
- #: includes/functions.php:566 includes/functions.php:520
2557
- #: includes/functions.php:542 includes/functions.php:553
2558
- #: includes/functions.php:564
2559
- msgid "not changing?"
2560
- msgstr "ændres ikke?"
2561
-
2562
- #: includes/functions.php:583 includes/functions.php:633
2563
- #: includes/functions.php:657 includes/functions.php:537
2564
- #: includes/functions.php:559 includes/functions.php:570
2565
- #: includes/functions.php:581 includes/functions.php:592
2566
- #: includes/functions.php:605 includes/functions.php:614
2567
- #: includes/functions.php:617 includes/functions.php:626
2568
- #: includes/functions.php:628 includes/functions.php:631
2569
- #: includes/functions.php:637 includes/functions.php:640
2570
- msgid "Error interacting with database"
2571
- msgstr "Fejl med at kommunikere med database"
2572
-
2573
- #: includes/functions.php:698 includes/functions.php:737
2574
- #: includes/functions.php:629 includes/functions.php:651
2575
- #: includes/functions.php:667 includes/functions.php:668
2576
- #: includes/functions.php:678 includes/functions.php:681
2577
- #: includes/functions.php:690 includes/functions.php:706
2578
- #: includes/functions.php:717 includes/functions.php:720
2579
- msgid "Membership level not found."
2580
- msgstr "Medlemsskabs niveau ikke fundet."
2581
-
2582
- #: includes/functions.php:1112 includes/functions.php:1050
2583
- #: includes/functions.php:1072 includes/functions.php:1088
2584
- #: includes/functions.php:1099 includes/functions.php:1102
2585
- msgid "The discount code could not be found."
2586
- msgstr "Denne rabat kode kunne ikke findes."
2587
-
2588
- #: includes/functions.php:1128 includes/functions.php:1066
2589
- #: includes/functions.php:1088 includes/functions.php:1104
2590
- #: includes/functions.php:1115 includes/functions.php:1118
2591
- #, php-format
2592
- msgid "This discount code goes into effect on %s."
2593
- msgstr "Denne rabat kode træder i kraft til %s."
2594
-
2595
- #: includes/functions.php:1137 includes/functions.php:1075
2596
- #: includes/functions.php:1097 includes/functions.php:1113
2597
- #: includes/functions.php:1124 includes/functions.php:1127
2598
- #, php-format
2599
- msgid "This discount code expired on %s."
2600
- msgstr "Denne rabat kode udløber den %s."
2601
-
2602
- #: includes/functions.php:1149 includes/functions.php:1087
2603
- #: includes/functions.php:1109 includes/functions.php:1125
2604
- #: includes/functions.php:1136 includes/functions.php:1139
2605
- msgid "This discount code is no longer valid."
2606
- msgstr "Denne rabat kode, er ikke længere gyldig."
2607
-
2608
- #: includes/functions.php:1164 includes/functions.php:1102
2609
- #: includes/functions.php:1124 includes/functions.php:1140
2610
- #: includes/functions.php:1151 includes/functions.php:1154
2611
- msgid "This discount code does not apply to this membership level."
2612
- msgstr "Denne rabat kode, kan ikke tilføjes til dette medlemsskabs niveau."
2613
-
2614
- #: includes/functions.php:1172 includes/functions.php:1110
2615
- #: includes/functions.php:1132 includes/functions.php:1148
2616
- #: includes/functions.php:1159 includes/functions.php:1162
2617
- msgid "This discount code is okay."
2618
- msgstr "Denne rabat kode er okay."
2619
-
2620
- #: includes/functions.php:1196 includes/functions.php:1134
2621
- #: includes/functions.php:1156 includes/functions.php:1172
2622
- #: includes/functions.php:1183 includes/functions.php:1186
2623
- msgid "and"
2624
- msgstr "og"
2625
-
2626
- #: includes/functions.php:1385 includes/functions.php:1319
2627
- #: includes/functions.php:1341 includes/functions.php:1361
2628
- #: includes/functions.php:1372 includes/functions.php:1375
2629
- msgid "Sign Up for !!name!! Now"
2630
- msgstr "Tilmeld !!name!! nu"
2631
-
2632
- #: includes/functions.php:1391 includes/functions.php:1325
2633
- #: includes/functions.php:1347 includes/functions.php:1367
2634
- #: includes/functions.php:1378 includes/functions.php:1381
2635
- msgid "Please specify a level id."
2636
- msgstr "Uddybe venlig en niveau id."
2637
-
2638
- #: includes/localization.php:23
2639
- msgid "Day"
2640
- msgstr "Dag"
2641
-
2642
- #: includes/localization.php:25
2643
- msgid "Week"
2644
- msgstr "Uge"
2645
-
2646
- #: includes/localization.php:27
2647
- msgid "Month"
2648
- msgstr "Måned"
2649
-
2650
- #: includes/localization.php:29
2651
- msgid "Year"
2652
- msgstr "År"
2653
-
2654
- #: includes/metaboxes.php:38
2655
- msgid ""
2656
- "This post is already protected for this level because it is within a "
2657
- "category that requires membership."
2658
- msgstr ""
2659
- "Denne post er allerede beskyttet til dette niveau, pga det er inde for en "
2660
- "kategori, hvor medlemsskab er påkrævet."
2661
-
2662
- #: includes/metaboxes.php:99 includes/metaboxes.php:100
2663
- msgid "Require Membership"
2664
- msgstr "Medlemskab er Påkrævet"
2665
-
2666
- #: includes/profile.php:36 includes/profile.php:34
2667
- msgid "Current Level"
2668
- msgstr "Nuværrende Niveau"
2669
-
2670
- #: includes/profile.php:39 includes/profile.php:37
2671
- msgid "None"
2672
- msgstr "Ingen"
2673
-
2674
- #: includes/profile.php:84 includes/profile.php:82
2675
- msgid "User is not paying."
2676
- msgstr "Bruger betaler ikke."
2677
-
2678
- #: includes/upgradecheck.php:410 includes/upgradecheck.php:401
2679
- #, php-format
2680
- msgid ""
2681
- "This content is for !!levels!! members only.<br /><a href=\"%s\">Register</a>"
2682
- msgstr ""
2683
- "Dette indhold er kun for !!niveau!! medlemmer.<br /><a href=\"%s"
2684
- "\">Registrere</a>"
2685
-
2686
- #: includes/upgradecheck.php:413 includes/upgradecheck.php:404
2687
- #, php-format
2688
- msgid ""
2689
- "This content is for !!levels!! members only.<br /><a href=\"%s\">Log In</a> "
2690
- "<a href=\"%s\">Register</a>"
2691
- msgstr ""
2692
- "Dette indhold er kun for !!niveau!! medlemmer.<br /><a href=\"%s\">Log Ind</"
2693
- "a> <a href=\"%s\">Registrere</a>"
2694
-
2695
- #: includes/upgradecheck.php:417 includes/upgradecheck.php:408
2696
- msgid ""
2697
- "This content is for !!levels!! members only. Visit the site and log in/"
2698
- "register to read."
2699
- msgstr ""
2700
- "Dette indhold er kun for !!niveau!! medlemmer. Besøg siden og log ind eller "
2701
- "registrere for at læse indhold."
2702
-
2703
- #: pages/account.php:10
2704
- msgid "Your membership is <strong>active</strong>."
2705
- msgstr "Dit medlemskab er <strong>aktiv</strong>."
2706
-
2707
- #: pages/account.php:12 pages/billing.php:16 pages/levels.php:13
2708
- msgid "Level"
2709
- msgstr "Niveau"
2710
-
2711
- #: pages/account.php:14 pages/billing.php:18
2712
- msgid "Membership Fee"
2713
- msgstr "Medlemskabs Gebyr"
2714
-
2715
- #: pages/account.php:18 pages/billing.php:22 pages/levels.php:70
2716
- #, php-format
2717
- msgid "%s every %d %s."
2718
- msgstr "%s hver %d %s."
2719
-
2720
- #: pages/account.php:20 pages/billing.php:24 pages/levels.php:66
2721
- #, php-format
2722
- msgid "%s per %s."
2723
- msgstr "%s pr %s."
2724
-
2725
- #: pages/account.php:29 pages/billing.php:33 pages/account.php:25
2726
- #: pages/billing.php:29
2727
- msgid "Duration"
2728
- msgstr "Varighed"
2729
-
2730
- #: pages/account.php:33 pages/confirmation.php:49 pages/invoice.php:30
2731
- #: pages/account.php:29 pages/confirmation.php:48 pages/invoice.php:29
2732
- msgid "Membership Expires"
2733
- msgstr "Medlemskab Udløber"
2734
-
2735
- #: pages/account.php:38 pages/account.php:34
2736
- #, php-format
2737
- msgid "Your first payment will cost %s."
2738
- msgstr "Din første betaling ville koste %s."
2739
-
2740
- #: pages/account.php:42 pages/account.php:38
2741
- #, php-format
2742
- msgid "Your first %d payments will cost %s."
2743
- msgstr "Din første %d betaling ville koste %s."
2744
-
2745
- #: pages/account.php:50 pages/account.php:46
2746
- msgid "My Account"
2747
- msgstr "Min Konto"
2748
-
2749
- #: pages/account.php:59 pages/account.php:55
2750
- msgid "Edit Profile"
2751
- msgstr "Redigere Profil"
2752
-
2753
- #: pages/account.php:60 pages/account.php:56
2754
- msgid "Change Password"
2755
- msgstr "Ændre Adganskode"
2756
-
2757
- #: pages/account.php:91 pages/account.php:87
2758
- msgid "Billing Information"
2759
- msgstr "Betalings Information"
2760
-
2761
- #: pages/account.php:109 pages/confirmation.php:63 pages/invoice.php:50
2762
- #: pages/account.php:105 pages/confirmation.php:61 pages/invoice.php:48
2763
- msgid "Payment Method"
2764
- msgstr "Betalings Metode"
2765
-
2766
- #: pages/account.php:118 pages/account.php:114
2767
- msgid "Edit Billing Information"
2768
- msgstr "Redigere Betalings Informationer"
2769
-
2770
- #: pages/account.php:129 pages/account.php:125
2771
- msgid "Past Invoices"
2772
- msgstr "Sidste Faktura"
2773
-
2774
- #: pages/account.php:144 pages/account.php:140
2775
- msgid "View All Invoices"
2776
- msgstr "Se Alle Fakturaere"
2777
-
2778
- #: pages/account.php:150 pages/account.php:146
2779
- msgid "Member Links"
2780
- msgstr "Medlems Links"
2781
-
2782
- #: pages/account.php:156 pages/account.php:152
2783
- msgid "Update Billing Information"
2784
- msgstr "Updatere Betalings Informationer"
2785
-
2786
- #: pages/account.php:159 pages/account.php:155
2787
- msgid "Change Membership Level"
2788
- msgstr "Ændre Medlemsskabs Niveau"
2789
-
2790
- #: pages/account.php:161 pages/account.php:157
2791
- msgid "Cancel Membership"
2792
- msgstr "Annullere Medlemsskab"
2793
-
2794
- #: pages/billing.php:14
2795
- #, php-format
2796
- msgid "Logged in as <strong>%s</strong>."
2797
- msgstr "Logget ind som <strong>%s</strong>."
2798
-
2799
- #: pages/billing.php:14
2800
- msgid "logout"
2801
- msgstr "Log ud"
2802
-
2803
- #: pages/billing.php:43 pages/billing.php:39
2804
- msgid ""
2805
- "Your payment subscription is managed by PayPal. Please <a href=\"http://www."
2806
- "paypal.com\">login to PayPal here</a> to update your billing information."
2807
- msgstr ""
2808
- "Din betalings abonnement bliver behandlet af PayPal. Venlig <a href=\"http://"
2809
- "www.paypal.com\">login til PayPal her</a> for at opdatere din regnings "
2810
- "information."
2811
-
2812
- #: pages/billing.php:69 pages/checkout.php:305 pages/billing.php:65
2813
- #: pages/checkout.php:321 pages/checkout.php:328
2814
- msgid "First Name"
2815
- msgstr "Fornavn"
2816
-
2817
- #: pages/billing.php:73 pages/checkout.php:309 pages/billing.php:69
2818
- #: pages/checkout.php:325 pages/checkout.php:332
2819
- msgid "Last Name"
2820
- msgstr "Efternavn"
2821
-
2822
- #: pages/billing.php:77 pages/checkout.php:313 pages/billing.php:73
2823
- #: pages/checkout.php:329 pages/checkout.php:336
2824
- msgid "Address 1"
2825
- msgstr "Adresse 1"
2826
-
2827
- #: pages/billing.php:81 pages/checkout.php:317 pages/billing.php:77
2828
- #: pages/checkout.php:333 pages/checkout.php:340
2829
- msgid "Address 2"
2830
- msgstr "Adresse 2"
2831
-
2832
- #: pages/billing.php:91 pages/checkout.php:327 pages/billing.php:87
2833
- #: pages/checkout.php:343 pages/checkout.php:350
2834
- msgid "City"
2835
- msgstr "By"
2836
-
2837
- #: pages/billing.php:95 pages/checkout.php:331 pages/billing.php:91
2838
- #: pages/checkout.php:347 pages/checkout.php:354
2839
- msgid "State"
2840
- msgstr "Region"
2841
-
2842
- #: pages/billing.php:99 pages/checkout.php:335 pages/billing.php:95
2843
- #: pages/checkout.php:351 pages/checkout.php:358
2844
- msgid "Postal Code"
2845
- msgstr "Postnummer"
2846
-
2847
- #: pages/billing.php:108 pages/checkout.php:344 pages/billing.php:104
2848
- #: pages/checkout.php:360 pages/checkout.php:367
2849
- msgid "City, State Zip"
2850
- msgstr "By, Region Postnummer"
2851
-
2852
- #: pages/billing.php:161 pages/checkout.php:397 pages/billing.php:157
2853
- #: pages/checkout.php:413 pages/checkout.php:420
2854
- msgid "Country"
2855
- msgstr "Land"
2856
-
2857
- #: pages/billing.php:186 pages/checkout.php:422 pages/billing.php:182
2858
- #: pages/checkout.php:438 pages/checkout.php:445
2859
- msgid "Phone"
2860
- msgstr "Telefon"
2861
-
2862
- #: pages/billing.php:197 pages/checkout.php:207 pages/checkout.php:436
2863
- #: pages/billing.php:193 pages/checkout.php:204 pages/checkout.php:453
2864
- #: pages/checkout.php:460
2865
- msgid "E-mail Address"
2866
- msgstr "E-mail Adresse"
2867
-
2868
- #: pages/billing.php:201 pages/checkout.php:445 pages/billing.php:197
2869
- #: pages/checkout.php:462 pages/checkout.php:469
2870
- msgid "Confirm E-mail"
2871
- msgstr "Bekræft E-mail"
2872
-
2873
- #: pages/billing.php:221 pages/billing.php:217
2874
- msgid "Credit Card Information"
2875
- msgstr "Kreditkort Information"
2876
-
2877
- #: pages/billing.php:221 pages/billing.php:217
2878
- #, php-format
2879
- msgid "We accept %s"
2880
- msgstr "Vi acceptere %s"
2881
-
2882
- #: pages/billing.php:248 pages/checkout.php:503 pages/billing.php:244
2883
- #: pages/checkout.php:520 pages/checkout.php:527
2884
- msgid "Card Number"
2885
- msgstr "Kort Nummer"
2886
-
2887
- #: pages/billing.php:285 pages/checkout.php:540 pages/billing.php:281
2888
- #: pages/checkout.php:557 pages/checkout.php:564
2889
- msgid "CVV"
2890
- msgstr "CVV"
2891
-
2892
- #: pages/billing.php:286 pages/checkout.php:541 pages/billing.php:282
2893
- #: pages/checkout.php:558 pages/checkout.php:565
2894
- msgid "what's this?"
2895
- msgstr "hvad er det?"
2896
-
2897
- #: pages/billing.php:329 pages/billing.php:294 pages/billing.php:298
2898
- msgid "Update"
2899
- msgstr "Opdatere"
2900
-
2901
- #: pages/billing.php:344 pages/billing.php:309 pages/billing.php:313
2902
- msgid ""
2903
- "This subscription is not recurring. So you don't need to update your billing "
2904
- "information."
2905
- msgstr ""
2906
- "Dette abonnement er ikke gentagene. Så du behøver ikke, at opdatere dine "
2907
- "betalings informationer."
2908
-
2909
- #: pages/cancel.php:14
2910
- msgid "Are you sure you want to cancel your membership?"
2911
- msgstr "Er du sikker på, at du vil annullere dit medlemsskab?"
2912
-
2913
- #: pages/cancel.php:17
2914
- msgid "Yes, cancel my account"
2915
- msgstr "Ja, Annullere min Konto"
2916
-
2917
- #: pages/cancel.php:19
2918
- msgid "No, keep my account"
2919
- msgstr "Nej, beholder min konto"
2920
-
2921
- #: pages/cancel.php:22
2922
- msgid "Click here to go to the home page."
2923
- msgstr "Klik her, for at komme til forsiden."
2924
-
2925
- #: pages/checkout.php:26 pages/checkout.php:27
2926
- msgid ""
2927
- "Almost done. Review the membership information and pricing below then "
2928
- "<strong>click the \"Complete Payment\" button</strong> to finish your order."
2929
- msgstr ""
2930
- "Næsten færdig. Gennemgå medlemsskabs informationer og priser neden for, "
2931
- "derefter <strong>Klik på \"Færdiggør Betaling\" Knappen</strong> for at "
2932
- "færdiggøre din ordre."
2933
-
2934
- #: pages/checkout.php:33 pages/checkout.php:34
2935
- msgid "change"
2936
- msgstr "ændre"
2937
-
2938
- #: pages/checkout.php:41 pages/checkout.php:42
2939
- #, php-format
2940
- msgid "You have selected the <strong>%s</strong> membership level."
2941
- msgstr "Du har valgt <strong>%s</strong> medlemsskab niveau."
2942
-
2943
- #: pages/checkout.php:51
2944
- #, php-format
2945
- msgid ""
2946
- "<p class=\"pmpro_level_discount_applied\">The <strong>%s</strong> code has "
2947
- "been applied to your order.</p>"
2948
- msgstr ""
2949
- "<p class=\"pmpro_level_discount_applied\">Denne <strong>%s</strong> kode er "
2950
- "bleven tilføjet til din ordre.</p>"
2951
-
2952
- #: pages/checkout.php:62 services/applydiscountcode.php:78
2953
- #: pages/checkout.php:63 services/applydiscountcode.php:74
2954
- #: services/applydiscountcode.php:75
2955
- msgid "Click here to change your discount code"
2956
- msgstr "Klik her for at ændre din rabat kode"
2957
-
2958
- #: pages/checkout.php:64 pages/checkout.php:65
2959
- msgid "Click here to enter your discount code"
2960
- msgstr "Klik her, for at indtaste din rabat kode"
2961
-
2962
- #: pages/checkout.php:64 pages/checkout.php:65
2963
- msgid "Do you have a discount code?"
2964
- msgstr "Har du en rabat kode?"
2965
-
2966
- #: pages/checkout.php:78 pages/checkout.php:551 pages/checkout.php:79
2967
- #: pages/checkout.php:568 pages/checkout.php:575
2968
- msgid "Apply"
2969
- msgstr "Anvend"
2970
-
2971
- #: pages/checkout.php:163 pages/checkout.php:160
2972
- msgid "Account Information"
2973
- msgstr "Konto Informationer"
2974
-
2975
- #: pages/checkout.php:163 pages/checkout.php:160
2976
- msgid "Already have an account?"
2977
- msgstr "Har du allerede en konto?"
2978
-
2979
- #: pages/checkout.php:163 pages/checkout.php:160
2980
- msgid "Log in here"
2981
- msgstr "Log ind her"
2982
-
2983
- #: pages/checkout.php:189 pages/checkout.php:186
2984
- msgid "Confirm Password"
2985
- msgstr "Bekræft Adgangskode"
2986
-
2987
- #: pages/checkout.php:216 pages/checkout.php:213
2988
- msgid "Confirm E-mail Address"
2989
- msgstr "Bekræft E-mail Adresse"
2990
-
2991
- #: pages/checkout.php:235 pages/checkout.php:232
2992
- msgid "Full Name"
2993
- msgstr "Fulde Navn"
2994
-
2995
- #: pages/checkout.php:236 pages/checkout.php:233
2996
- msgid "LEAVE THIS BLANK"
2997
- msgstr "LAD DETTE STÅ BLANK"
2998
-
2999
- #: pages/checkout.php:260 pages/checkout.php:257
3000
- #, php-format
3001
- msgid ""
3002
- "You are logged in as <strong>%s</strong>. If you would like to use a "
3003
- "different account for this membership, <a href=\"%s\">log out now</a>."
3004
- msgstr ""
3005
- "Du er logget ind som <strong>%s</strong>. Hvis du gerne ville bruge en anden "
3006
- "konto til dette medlemsskab, <a href=\"%s\">log ud nu</a>."
3007
-
3008
- #: pages/checkout.php:276 pages/checkout.php:292 pages/checkout.php:299
3009
- msgid "Choose your Payment Method"
3010
- msgstr "Vælg din Betalings Metode"
3011
-
3012
- #: pages/checkout.php:284 pages/checkout.php:300 pages/checkout.php:307
3013
- msgid "Check Out with a Credit Card Here"
3014
- msgstr "Gå til Kassen med Kreditkort her"
3015
-
3016
- #: pages/checkout.php:286 pages/checkout.php:685 pages/checkout.php:302
3017
- #: pages/checkout.php:309 pages/checkout.php:675 pages/checkout.php:682
3018
- msgid "Check Out with PayPal"
3019
- msgstr "Gå til Kassen med PayPal"
3020
-
3021
- #: pages/checkout.php:476 pages/checkout.php:493 pages/checkout.php:500
3022
- msgid "Payment Information"
3023
- msgstr "Betalings Information"
3024
-
3025
- #: pages/checkout.php:476 pages/checkout.php:493 pages/checkout.php:500
3026
- #, php-format
3027
- msgid "We Accept %s"
3028
- msgstr "Vi Acceptere %s"
3029
-
3030
- #: pages/checkout.php:657 pages/checkout.php:277 pages/checkout.php:284
3031
- #, php-format
3032
- msgid "I agree to the %s"
3033
- msgstr "Jeg Accepptere til %s"
3034
-
3035
- #: pages/checkout.php:677 pages/checkout.php:667 pages/checkout.php:674
3036
- msgid "Complete Payment"
3037
- msgstr "færdiggør Betaling"
3038
-
3039
- #: pages/checkout.php:691 pages/checkout.php:681 pages/checkout.php:688
3040
- msgid "Submit and Check Out"
3041
- msgstr "Anvend og Gå til Kassen"
3042
-
3043
- #: pages/checkout.php:691 pages/checkout.php:681 pages/checkout.php:688
3044
- msgid "Submit and Confirm"
3045
- msgstr "Anvend og Bekræft"
3046
-
3047
- #: pages/checkout.php:691 pages/checkout.php:688
3048
- msgid "Submit and Pay with 2CheckOut"
3049
- msgstr "Anvend og Betal med 2CheckOut"
3050
-
3051
- #: pages/checkout.php:697 pages/checkout.php:687 pages/checkout.php:694
3052
- msgid "Processing..."
3053
- msgstr "Bearbejder..."
3054
-
3055
- #: pages/confirmation.php:12
3056
- msgid ""
3057
- "Your payment has been submitted. Your membership will be activated shortly."
3058
- msgstr ""
3059
- "Din betaling er bleven tilføjet. Dit medlemsskab ville blive aktiveret inden "
3060
- "for kort tid."
3061
-
3062
- #: pages/confirmation.php:14
3063
- #, php-format
3064
- msgid "Thank you for your membership to %s. Your %s membership is now active."
3065
- msgstr ""
3066
- "Vi takker dig, for dir medlemsskab hos %s. Dit %s medlemsskab er nu aktiv."
3067
-
3068
- #: pages/confirmation.php:28
3069
- #, php-format
3070
- msgid ""
3071
- "Below are details about your membership account and a receipt for your "
3072
- "initial membership invoice. A welcome email with a copy of your initial "
3073
- "membership invoice has been sent to %s."
3074
- msgstr ""
3075
- "Nedenfor er der detaljer omkring dit medlemsskabs konto, og en faktura "
3076
- "omkring medlemsskabet. En velkomst email, med en kopi af din faktura er "
3077
- "blevet sendt til %s."
3078
-
3079
- #: pages/confirmation.php:41 pages/invoice.php:22
3080
- #, php-format
3081
- msgid "Invoice #%s on %s"
3082
- msgstr "Faktura #%s hos %s"
3083
-
3084
- #: pages/confirmation.php:43
3085
- msgid "Print"
3086
- msgstr "Print"
3087
-
3088
- #: pages/confirmation.php:46 pages/confirmation.php:104 pages/invoice.php:27
3089
- #: pages/confirmation.php:45 pages/confirmation.php:102 pages/invoice.php:26
3090
- msgid "Account"
3091
- msgstr "Konto"
3092
-
3093
- #: pages/confirmation.php:65 pages/invoice.php:52 pages/invoice.php:109
3094
- #: pages/confirmation.php:63 pages/invoice.php:50 pages/invoice.php:107
3095
- msgid "Total Billed"
3096
- msgstr "Regning total"
3097
-
3098
- #: pages/confirmation.php:82 pages/invoice.php:69 pages/confirmation.php:80
3099
- #: pages/invoice.php:67
3100
- msgid "ending in"
3101
- msgstr "ender om"
3102
-
3103
- #: pages/confirmation.php:97 pages/confirmation.php:95
3104
- #, php-format
3105
- msgid ""
3106
- "Below are details about your membership account. A welcome email with has "
3107
- "been sent to %s."
3108
- msgstr ""
3109
- "Nedenfor er detajlerne omkring dit medlemsskab. En velkomst mail er bleven "
3110
- "sendt til %s."
3111
-
3112
- #: pages/confirmation.php:105 pages/confirmation.php:103
3113
- msgid "Pending"
3114
- msgstr "Afventer"
3115
-
3116
- #: pages/confirmation.php:113 pages/invoice.php:141 pages/confirmation.php:111
3117
- #: pages/invoice.php:139
3118
- msgid "View Your Membership Account &rarr;"
3119
- msgstr "Se Din Medlemsskabs Konto &rarr;"
3120
-
3121
- #: pages/confirmation.php:115 pages/confirmation.php:113
3122
- msgid ""
3123
- "If your account is not activated within a few minutes, please contact the "
3124
- "site owner."
3125
- msgstr ""
3126
- "Hvis din konto ikke er aktiveret inden for få minuter, kontakt venligst site "
3127
- "admin."
3128
-
3129
- #: pages/invoice.php:79 pages/invoice.php:77
3130
- msgid "Subtotal"
3131
- msgstr "Subtotal"
3132
-
3133
- #: pages/invoice.php:82 pages/invoice.php:80
3134
- msgid "Coupon"
3135
- msgstr "Kupon"
3136
-
3137
- #: pages/invoice.php:108 pages/invoice.php:106
3138
- msgid "Invoice #"
3139
- msgstr "Faktura #"
3140
-
3141
- #: pages/invoice.php:122 pages/invoice.php:120
3142
- msgid "View Invoice"
3143
- msgstr "Se Faktura"
3144
-
3145
- #: pages/invoice.php:134 pages/invoice.php:132
3146
- msgid "No invoices found."
3147
- msgstr "Ingen Faktura Fundet,"
3148
-
3149
- #: pages/invoice.php:145 pages/invoice.php:143
3150
- msgid "&larr; View All Invoices"
3151
- msgstr "&larr; Se Alle Fakturaer"
3152
-
3153
- #: pages/levels.php:14
3154
- msgid "Price"
3155
- msgstr "Pris"
3156
-
3157
- #: pages/levels.php:47 pages/levels.php:49 pages/levels.php:113
3158
- #: pages/levels.php:115
3159
- msgid "Select"
3160
- msgstr "Vælg"
3161
-
3162
- #: pages/levels.php:57 pages/levels.php:123
3163
- msgid "Renew"
3164
- msgstr "Forny"
3165
-
3166
- #: pages/levels.php:63 pages/levels.php:117 pages/levels.php:129
3167
- msgid "Your&nbsp;Level"
3168
- msgstr "Din&nbsp;Niveau"
3169
-
3170
- #: pages/levels.php:79 pages/levels.php:129 pages/levels.php:145
3171
- msgid "&larr; Return to Your Account"
3172
- msgstr "&larr; Tilbage til Din Konto"
3173
-
3174
- #: pages/levels.php:81 pages/levels.php:131 pages/levels.php:147
3175
- msgid "&larr; Return to Home"
3176
- msgstr "&larr; Tilbage til Hjem"
3177
-
3178
- #: preheaders/account.php:7 preheaders/levels.php:19
3179
- msgid "Your membership status has been updated - Thank you!"
3180
- msgstr "Dit medlemsskabs status er bleven opdateret. Mange tak!"
3181
-
3182
- #: preheaders/account.php:11 preheaders/levels.php:23
3183
- msgid ""
3184
- "Sorry, your request could not be completed - please try again in a few "
3185
- "moments."
3186
- msgstr ""
3187
- "Beklager, din anmodning kunne ikke blive færdiggjort - venligst prøv igen om "
3188
- "et øjeblik."
3189
-
3190
- #: preheaders/billing.php:279 preheaders/checkout.php:482
3191
- #: preheaders/billing.php:258 preheaders/checkout.php:464
3192
- #: preheaders/checkout.php:481
3193
- msgid "Please complete all required fields."
3194
- msgstr "Venligst færdiggøre alle påkrævet felter."
3195
-
3196
- #: preheaders/billing.php:284 preheaders/checkout.php:492
3197
- #: preheaders/billing.php:263 preheaders/checkout.php:474
3198
- #: preheaders/checkout.php:491
3199
- msgid "Your email addresses do not match. Please try again."
3200
- msgstr "Din email addresser passer ikke sammen. Prøv igen"
3201
-
3202
- #: preheaders/billing.php:289 preheaders/checkout.php:498
3203
- #: preheaders/billing.php:268 preheaders/checkout.php:480
3204
- #: preheaders/checkout.php:497
3205
- msgid "The email address entered is in an invalid format. Please try again."
3206
- msgstr "Den indtastet email adresse er en ugyldig format. Prøv igen."
3207
-
3208
- #: preheaders/billing.php:295 preheaders/billing.php:274
3209
- msgid "All good!"
3210
- msgstr "Alt er Fint!"
3211
-
3212
- #: preheaders/billing.php:370 preheaders/billing.php:340
3213
- #, php-format
3214
- msgid "Information updated. <a href=\"%s\">&laquo; back to my account</a>"
3215
- msgstr ""
3216
- "Informationer er opdateret. <a href=\"%s\">&laquo; tilbage til min konto</a>"
3217
-
3218
- #: preheaders/billing.php:378 preheaders/billing.php:347
3219
- #: preheaders/billing.php:380
3220
- msgid "Error updating billing information."
3221
- msgstr "Fejl I opdatering af betalings informationer."
3222
-
3223
- #: preheaders/cancel.php:24
3224
- msgid "Your membership has been cancelled."
3225
- msgstr "Dit medlemsskab er blevet annulleret."
3226
-
3227
- #: preheaders/checkout.php:28 preheaders/checkout.php:509
3228
- #: preheaders/checkout.php:491 preheaders/checkout.php:508
3229
- msgid "Invalid gateway."
3230
- msgstr "Ugyldig gateway."
3231
-
3232
- #: preheaders/checkout.php:96
3233
- msgid "Checkout: Payment Information"
3234
- msgstr "Gå til Kassen: Betalings Informationer"
3235
-
3236
- #: preheaders/checkout.php:109
3237
- msgid "Setup Your Account"
3238
- msgstr "Sæt op din Konto"
3239
-
3240
- #: preheaders/checkout.php:486 preheaders/checkout.php:468
3241
- #: preheaders/checkout.php:485
3242
- msgid "Your passwords do not match. Please try again."
3243
- msgstr "Dine adgangskoder passer ikke sammen. Prv igen."
3244
-
3245
- #: preheaders/checkout.php:504 preheaders/checkout.php:486
3246
- #: preheaders/checkout.php:503
3247
- #, php-format
3248
- msgid "Please check the box to agree to the %s."
3249
- msgstr "Klik på boksen, for at acceptere til %s. "
3250
-
3251
- #: preheaders/checkout.php:513 preheaders/checkout.php:495
3252
- #: preheaders/checkout.php:512
3253
- msgid "Are you a spammer?"
3254
- msgstr "Er du en spammer?"
3255
-
3256
- #: preheaders/checkout.php:536 preheaders/checkout.php:518
3257
- #: preheaders/checkout.php:535
3258
- msgid "That username is already taken. Please try another."
3259
- msgstr "Dette brugernavn er allerede i brug. Prøv et andet."
3260
-
3261
- #: preheaders/checkout.php:542 preheaders/checkout.php:524
3262
- #: preheaders/checkout.php:541
3263
- msgid "That email address is already taken. Please try another."
3264
- msgstr "Denne email adresse er allerede i brug. Prøv et andet."
3265
-
3266
- #: preheaders/checkout.php:562 preheaders/checkout.php:544
3267
- #: preheaders/checkout.php:561
3268
- #, php-format
3269
- msgid "reCAPTCHA failed. (%s) Please try again."
3270
- msgstr "reCAPTCHA fejlet. (%s) Prøv igen."
3271
-
3272
- #: preheaders/checkout.php:702 preheaders/checkout.php:683
3273
- #: preheaders/checkout.php:701
3274
- msgid "Payment accepted."
3275
- msgstr "Betaling accepteret."
3276
-
3277
- #: preheaders/checkout.php:710 preheaders/checkout.php:691
3278
- #: preheaders/checkout.php:709
3279
- msgid ""
3280
- "Unknown error generating account. Please contact us to setup your membership."
3281
- msgstr ""
3282
- "Ukendt fejl med at generer konto. Kontakt os, med at sætte dit medlemsskab "
3283
- "op."
3284
-
3285
- #: preheaders/checkout.php:754 preheaders/checkout.php:823
3286
- #: preheaders/checkout.php:735 preheaders/checkout.php:753
3287
- #: preheaders/checkout.php:803 preheaders/checkout.php:822
3288
- msgid "The PayPal Token was lost."
3289
- msgstr "PayPal Polet er væk."
3290
-
3291
- #: preheaders/checkout.php:860 preheaders/checkout.php:825
3292
- #: preheaders/checkout.php:844 preheaders/checkout.php:859
3293
- msgid ""
3294
- "Your payment was accepted, but there was an error setting up your account. "
3295
- "Please contact us."
3296
- msgstr ""
3297
- "Din betaling er accepteret. Men der opstod en fejl, med at sætte din konto "
3298
- "op. Venligst kontakt os."
3299
-
3300
- #: preheaders/checkout.php:1046 preheaders/checkout.php:983
3301
- #: preheaders/checkout.php:1030 preheaders/checkout.php:1045
3302
- msgid ""
3303
- "IMPORTANT: Something went wrong during membership creation. Your credit card "
3304
- "authorized, but we cancelled the order immediately. You should not try to "
3305
- "submit this form again. Please contact the site owner to fix this issue."
3306
- msgstr ""
3307
- "VIGTIGT: Noget gik galt, under oprettelse af medlemsskab. Dit kreditkort "
3308
- "blive godkendt, men vi annullerede ordren med det samme. Du skal ikke "
3309
- "anvende formularen igen. Istedet kontakt vores site admin, for at problemet "
3310
- "kan blive fikset."
3311
-
3312
- #: preheaders/checkout.php:1051 preheaders/checkout.php:988
3313
- #: preheaders/checkout.php:1035 preheaders/checkout.php:1050
3314
- msgid ""
3315
- "IMPORTANT: Something went wrong during membership creation. Your credit card "
3316
- "was charged, but we couldn't assign your membership. You should not submit "
3317
- "this form again. Please contact the site owner to fix this issue."
3318
- msgstr ""
3319
- "VIGTIGT: Noget gik galt, under oprettelsen af medlemsskab. Der blev trukket "
3320
- "penge fra dit kreditkort, men vi kunne ikke tildele dig dit medlemsskab. Du "
3321
- "skal ikke anvende formularen igen. Kontakt venligst site admin, for at få "
3322
- "fikset problemet."
3323
-
3324
- #: preheaders/checkout.php:1064 preheaders/checkout.php:1001
3325
- #: preheaders/checkout.php:1048 preheaders/checkout.php:1063
3326
- #, php-format
3327
- msgid ""
3328
- "You must <a href=\"%s\">setup a Payment Gateway</a> before any payments will "
3329
- "be processed."
3330
- msgstr ""
3331
- "Du er nødtil at sætte <a href=\"%s\">en Betalings Gateway</a> før nogen "
3332
- "betaliger kan blive behandlet."
3333
-
3334
- #: preheaders/checkout.php:1066 preheaders/checkout.php:1003
3335
- #: preheaders/checkout.php:1050 preheaders/checkout.php:1065
3336
- msgid "A Payment Gateway must be setup before any payments will be processed."
3337
- msgstr ""
3338
- "En Betaling Gateway må sættes op, før betalinger ville blive behandlet."
3339
-
3340
- #: scheduled/crons.php:31 scheduled/crons.php:61
3341
- #, php-format
3342
- msgid "Membership expired email sent to %s. "
3343
- msgstr "Medlemsskab udløbet email sendt til %s."
3344
-
3345
- #: scheduled/crons.php:74 scheduled/crons.php:27
3346
- #, php-format
3347
- msgid "Membership expiring email sent to %s. "
3348
- msgstr "Medlemsskab udløbnings mail sendt til %s."
3349
-
3350
- #: scheduled/crons.php:143
3351
- #, php-format
3352
- msgid "Credit card expiring email sent to %s. "
3353
- msgstr "Kreditkort udløber email er sendt til %s."
3354
-
3355
- #: scheduled/crons.php:196 scheduled/crons.php:104
3356
- #, php-format
3357
- msgid "Trial ending email sent to %s. "
3358
- msgstr "Prøveperiode slutter email sendt til %s."
3359
-
3360
- #: services/applydiscountcode.php:67 services/applydiscountcode.php:64
3361
- #, php-format
3362
- msgid "The %s code has been applied to your order. "
3363
- msgstr "Denne %s kode er blevet tilføjet til din ordre."
3364
-
3365
- #: services/applydiscountcode.php:86 services/applydiscountcode.php:82
3366
- #: services/applydiscountcode.php:83
3367
- #, php-format
3368
- msgid "The <strong>%s</strong> code has been applied to your order."
3369
- msgstr "Denne <strong>%s</strong> kode er blevet tilføjet til din ordre."
3370
-
3371
- #: services/authnet-silent-post.php:138 services/authnet-silent-post.php:133
3372
- msgid ""
3373
- "<p>A payment is being held for review within Authorize.net.</p><p>Payment "
3374
- "Information From Authorize.net"
3375
- msgstr ""
3376
- "<p>En betaling holdes tilbage for undersøgelse hos Authorize.net.</"
3377
- "p><p>Betalings information fra Authorize.net"
3378
-
3379
- #: services/stripe-webhook.php:194 services/stripe-webhook.php:176
3380
- #, php-format
3381
- msgid ""
3382
- "%s has had their payment subscription cancelled by Stripe. Please check that "
3383
- "this user's membership is cancelled on your site if it should be."
3384
- msgstr ""
3385
- "%s har fået deres abonnement annulleret af Stripe. Venlig kontrollere, at "
3386
- "brugerens medlemsskab er annulleret på din side, hvis det skulle ønskes. "
3387
-
3388
- #: adminpages/discountcodes.php:437
3389
- msgid "Billing Ammount"
3390
- msgstr "Betalings Beløb"
3391
-
3392
- #: adminpages/discountcodes.php:480
3393
- msgid "Check this to set an expiration date for new sign ups."
3394
- msgstr "Klik her, for at sætte en udløbsdato for nye regestreringer."
3395
-
3396
- #: adminpages/discountcodes.php:497
3397
- msgid ""
3398
- "How long before the expiration expires. Note that any future payments will "
3399
- "be cancelled when the membership expires."
3400
- msgstr ""
3401
- "Hvor lang tid der går, før medlemsskab udløber. Husk at fremtidige betaling "
3402
- "ville blive annulleret, når medlemskabet udløber. "
3403
-
3404
- #: adminpages/membershiplevels.php:364
3405
- msgid ""
3406
- "Stripe integration currently only supports billing periods of \"Month\" or "
3407
- "\"Year\"."
3408
- msgstr ""
3409
- "Integration med Stripe understøtter kun betalings perioder af \"Måneder\" "
3410
- "eller \"År\"."
3411
-
3412
- #: adminpages/membershiplevels.php:398
3413
- msgid ""
3414
- "2Checkout integration does not currently support custom trials. You can do "
3415
- "one period trials by setting an initial payment different from the billing "
3416
- "amount."
3417
- msgstr ""
3418
- "Integration til 2Checkout understøtter ikke brugerdefineret prøve periode. "
3419
- "Du kan lave en prøve periode op, ved at sætte en betaling op, som er "
3420
- "anderledes fra det oprindelige beløb."
3421
-
3422
- #: adminpages/memberslist.php:184 adminpages/memberslist.php:212
3423
- msgid "Never"
3424
- msgstr "Aldrig"
3425
-
3426
- #: adminpages/paymentsettings.php:170
3427
- msgid ""
3428
- "Payflow Pro currently only supports one-time payments. Users will not be "
3429
- "able to checkout for levels with recurring payments."
3430
- msgstr ""
3431
- "Payflow Pro understøtter kun engangs betalinger. Brugere ville ikke have "
3432
- "mulighed for at bruge Gå til kassen, med genoptagene betalinger."
3433
-
3434
- #: adminpages/paymentsettings.php:405 adminpages/paymentsettings.php:445
3435
- msgid ""
3436
- "If values are given, tax will be applied for any members ordering from the "
3437
- "selected state. For more complex tax rules, use the \"pmpro_tax\" filter."
3438
- msgstr ""
3439
- "Hvis værdier er given, skat ville blive tilføjet til hvilken som helst "
3440
- "medlem, fra den valgte Stat. For mere komplekse skatte regler, brug "
3441
- "\"pmpro_tax\" filter."
3442
-
3443
- #: adminpages/paymentsettings.php:410 adminpages/paymentsettings.php:421
3444
- msgid "Use SSL"
3445
- msgstr "Brug SSL"
3446
-
3447
- #: adminpages/paymentsettings.php:425
3448
- msgid "Required by this Gateway Option"
3449
- msgstr "Påkrævet af denne Gateway Indstilling"
3450
-
3451
- #: adminpages/paymentsettings.php:432
3452
- msgid ""
3453
- "Stripe doesn't require billing address fields. Choose 'No' to hide them on "
3454
- "the checkout page."
3455
- msgstr ""
3456
- "Stripe behøver ikke nogen faktura adresse felter. Vælg 'Nej' for at gemme "
3457
- "dem på Gå til Kassen side."
3458
-
3459
- #: classes/class.pmproemail.php:685 classes/class.pmproemail.php:734
3460
- #: classes/class.pmproemail.php:799
3461
- msgid "membership has been cancelled"
3462
- msgstr "medlemsskab er bleven annulleret"
3463
-
3464
- #: pages/checkout.php:51 pages/checkout.php:52
3465
- #, php-format
3466
- msgid "<p>The <strong>%s</strong> code has been applied to your order.</p>"
3467
- msgstr "<p>denne <strong>%s</strong> kode er blevn tilføjet til din ordre.</p>"
3468
-
3469
- #: pages/confirmation.php:12
3470
- msgid ""
3471
- "Your payment has been submitted to PayPal. Your membership will be activated "
3472
- "shortly."
3473
- msgstr ""
3474
- "Din Betaling er bleven tilføjet til PayPal. Dit medlemskab bliver aktiveret "
3475
- "inde for kort tid."
3476
-
3477
- #: pages/levels.php:15
3478
- msgid "Subscription Information"
3479
- msgstr "Abonnoments Information"
3480
-
3481
- #: pages/levels.php:33
3482
- msgid "--"
3483
- msgstr "--"
3484
-
3485
- #: pages/levels.php:43
3486
- msgid "Free"
3487
- msgstr "Gratis"
3488
-
3489
- #: pages/levels.php:51
3490
- #, php-format
3491
- msgid "%s per %s for %d more %s."
3492
- msgstr "%s pr %s for %d mere %s."
3493
-
3494
- #: pages/levels.php:55
3495
- #, php-format
3496
- msgid "%s every %d %s for %d more %s."
3497
- msgstr "%s hver %d %s for %d mere %s."
3498
-
3499
- #: pages/levels.php:60
3500
- #, php-format
3501
- msgid "%s after %d %s."
3502
- msgstr "%s efter %d %s."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/pmpro-en_GB.mo DELETED
Binary file
languages/pmpro-en_GB.po DELETED
@@ -1,2661 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: pmpro\n"
4
- "POT-Creation-Date: 2014-01-31 10:16+0100\n"
5
- "PO-Revision-Date: 2014-01-31 10:20+0100\n"
6
- "Last-Translator: \n"
7
- "Language-Team: Stranger Studios <jason@strangerstudios.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: __;_;_e;_ex;_x;_n\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "X-Poedit-SearchPath-0: includes\n"
15
- "X-Poedit-SearchPath-1: .\n"
16
- "X-Poedit-SearchPath-2: classes\n"
17
- "X-Poedit-SearchPath-3: preheaders\n"
18
- "X-Poedit-SearchPath-4: pages\n"
19
- "X-Poedit-SearchPath-5: adminpages\n"
20
- "X-Poedit-SearchPath-6: classes/gateways\n"
21
- "X-Poedit-SearchPath-7: services\n"
22
- "X-Poedit-SearchPath-8: shortcodes\n"
23
- "X-Poedit-SearchPath-9: scheduled\n"
24
-
25
- #: includes/localization.php:23
26
- msgid "Day"
27
- msgstr ""
28
-
29
- #: includes/localization.php:25
30
- msgid "Week"
31
- msgstr ""
32
-
33
- #: includes/localization.php:27
34
- msgid "Month"
35
- msgstr ""
36
-
37
- #: includes/localization.php:29
38
- msgid "Year"
39
- msgstr ""
40
-
41
- #: includes/currencies.php:7 includes/currencies.php:44
42
- msgid "US Dollars (&#36;)"
43
- msgstr ""
44
-
45
- #: includes/currencies.php:8 includes/currencies.php:47
46
- msgid "Euros (&euro;)"
47
- msgstr ""
48
-
49
- #: includes/currencies.php:9 includes/currencies.php:46
50
- msgid "Pounds Sterling (&pound;)"
51
- msgstr ""
52
-
53
- #: includes/currencies.php:10
54
- msgid "Australian Dollars (&#36;)"
55
- msgstr ""
56
-
57
- #: includes/currencies.php:11
58
- msgid "Brazilian Real (&#36;)"
59
- msgstr ""
60
-
61
- #: includes/currencies.php:12 includes/currencies.php:45
62
- msgid "Canadian Dollars (&#36;)"
63
- msgstr ""
64
-
65
- #: includes/currencies.php:13
66
- msgid "Chinese Yuan"
67
- msgstr ""
68
-
69
- #: includes/currencies.php:14
70
- msgid "Czech Koruna"
71
- msgstr ""
72
-
73
- #: includes/currencies.php:15
74
- msgid "Danish Krone"
75
- msgstr ""
76
-
77
- #: includes/currencies.php:16
78
- msgid "Hong Kong Dollar (&#36;)"
79
- msgstr ""
80
-
81
- #: includes/currencies.php:17
82
- msgid "Hungarian Forint"
83
- msgstr ""
84
-
85
- #: includes/currencies.php:18
86
- msgid "Indian Rupee"
87
- msgstr ""
88
-
89
- #: includes/currencies.php:19
90
- msgid "Indonesia Rupiah"
91
- msgstr ""
92
-
93
- #: includes/currencies.php:20
94
- msgid "Israeli Shekel"
95
- msgstr ""
96
-
97
- #: includes/currencies.php:21
98
- msgid "Japanese Yen (&yen;)"
99
- msgstr ""
100
-
101
- #: includes/currencies.php:22
102
- msgid "Malaysian Ringgits"
103
- msgstr ""
104
-
105
- #: includes/currencies.php:23
106
- msgid "Mexican Peso (&#36;)"
107
- msgstr ""
108
-
109
- #: includes/currencies.php:24
110
- msgid "New Zealand Dollar (&#36;)"
111
- msgstr ""
112
-
113
- #: includes/currencies.php:25
114
- msgid "Norwegian Krone"
115
- msgstr ""
116
-
117
- #: includes/currencies.php:26
118
- msgid "Philippine Pesos"
119
- msgstr ""
120
-
121
- #: includes/currencies.php:27
122
- msgid "Polish Zloty"
123
- msgstr ""
124
-
125
- #: includes/currencies.php:28
126
- msgid "Singapore Dollar (&#36;)"
127
- msgstr ""
128
-
129
- #: includes/currencies.php:29
130
- msgid "South African Rand"
131
- msgstr ""
132
-
133
- #: includes/currencies.php:30
134
- msgid "South Korean Won"
135
- msgstr ""
136
-
137
- #: includes/currencies.php:31
138
- msgid "Swedish Krona"
139
- msgstr ""
140
-
141
- #: includes/currencies.php:32
142
- msgid "Swiss Franc"
143
- msgstr ""
144
-
145
- #: includes/currencies.php:33
146
- msgid "Taiwan New Dollars"
147
- msgstr ""
148
-
149
- #: includes/currencies.php:34
150
- msgid "Thai Baht"
151
- msgstr ""
152
-
153
- #: includes/currencies.php:35
154
- msgid "Turkish Lira"
155
- msgstr ""
156
-
157
- #: includes/currencies.php:36
158
- msgid "Vietnamese Dong"
159
- msgstr ""
160
-
161
- #: includes/metaboxes.php:38
162
- msgid ""
163
- "This post is already protected for this level because it is within a "
164
- "category that requires membership."
165
- msgstr ""
166
-
167
- #: includes/metaboxes.php:99 includes/metaboxes.php:100
168
- msgid "Require Membership"
169
- msgstr ""
170
-
171
- #: includes/adminpages.php:9 includes/adminpages.php:39
172
- msgid "Memberships"
173
- msgstr ""
174
-
175
- #: includes/adminpages.php:10 includes/adminpages.php:49
176
- msgid "Page Settings"
177
- msgstr ""
178
-
179
- #: includes/adminpages.php:11 includes/adminpages.php:54
180
- msgid "Payment Settings"
181
- msgstr ""
182
-
183
- #: includes/adminpages.php:12 includes/adminpages.php:59
184
- #: adminpages/emailsettings.php:60
185
- msgid "Email Settings"
186
- msgstr ""
187
-
188
- #: includes/adminpages.php:13 includes/adminpages.php:64
189
- #: adminpages/advancedsettings.php:79
190
- msgid "Advanced Settings"
191
- msgstr ""
192
-
193
- #: includes/adminpages.php:14 includes/adminpages.php:69
194
- #: adminpages/admin_header.php:154
195
- msgid "Add Ons"
196
- msgstr ""
197
-
198
- #: includes/adminpages.php:15 includes/adminpages.php:74
199
- #: adminpages/memberslist.php:25
200
- msgid "Members List"
201
- msgstr ""
202
-
203
- #: includes/adminpages.php:16 includes/adminpages.php:79
204
- msgid "Reports"
205
- msgstr ""
206
-
207
- #: includes/adminpages.php:17 includes/adminpages.php:84
208
- #: adminpages/orders.php:520
209
- msgid "Orders"
210
- msgstr ""
211
-
212
- #: includes/adminpages.php:18 includes/adminpages.php:89
213
- msgid "Discount Codes"
214
- msgstr ""
215
-
216
- #: includes/adminpages.php:44 adminpages/membershiplevels.php:496
217
- #: adminpages/admin_header.php:149
218
- msgid "Membership Levels"
219
- msgstr ""
220
-
221
- #: includes/profile.php:27 pages/invoice.php:28 pages/invoice.php:51
222
- #: pages/checkout.php:33 pages/confirmation.php:47 pages/confirmation.php:64
223
- #: pages/confirmation.php:105 adminpages/orders.php:601
224
- msgid "Membership Level"
225
- msgstr ""
226
-
227
- #: includes/profile.php:36
228
- msgid "Current Level"
229
- msgstr ""
230
-
231
- #: includes/profile.php:39
232
- msgid "None"
233
- msgstr ""
234
-
235
- #: includes/profile.php:84
236
- msgid "User is not paying."
237
- msgstr ""
238
-
239
- #: includes/profile.php:120 adminpages/memberslist.php:159
240
- #: adminpages/discountcodes.php:550 adminpages/reports/login.php:145
241
- msgid "Expires"
242
- msgstr ""
243
-
244
- #: includes/profile.php:123 adminpages/membershiplevels.php:569
245
- #: adminpages/paymentsettings.php:448 adminpages/paymentsettings.php:473
246
- #: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:187
247
- #: adminpages/advancedsettings.php:199
248
- msgid "No"
249
- msgstr ""
250
-
251
- #: includes/profile.php:124 adminpages/membershiplevels.php:569
252
- #: adminpages/paymentsettings.php:449 adminpages/paymentsettings.php:474
253
- #: adminpages/advancedsettings.php:188
254
- msgid "Yes"
255
- msgstr ""
256
-
257
- #: includes/functions.php:196
258
- #, php-format
259
- msgid "The price for membership is <strong>%s</strong> now"
260
- msgstr ""
261
-
262
- #: includes/functions.php:205
263
- #, php-format
264
- msgid " and then <strong>%s per %s for %d more %s</strong>."
265
- msgstr ""
266
-
267
- #: includes/functions.php:209
268
- #, php-format
269
- msgid " and then <strong>%s every %d %s for %d more %s</strong>."
270
- msgstr ""
271
-
272
- #: includes/functions.php:214
273
- #, php-format
274
- msgid " and then <strong>%s after %d %s</strong>."
275
- msgstr ""
276
-
277
- #: includes/functions.php:220
278
- #, php-format
279
- msgid " and then <strong>%s per %s</strong>."
280
- msgstr ""
281
-
282
- #: includes/functions.php:224
283
- #, php-format
284
- msgid " and then <strong>%s every %d %s</strong>."
285
- msgstr ""
286
-
287
- #: includes/functions.php:241 pages/levels.php:82
288
- msgid "After your initial payment, your first payment is Free."
289
- msgstr ""
290
-
291
- #: includes/functions.php:245 pages/levels.php:86
292
- #, php-format
293
- msgid "After your initial payment, your first %d payments are Free."
294
- msgstr ""
295
-
296
- #: includes/functions.php:252 pages/levels.php:93
297
- #, php-format
298
- msgid "After your initial payment, your first payment will cost %s."
299
- msgstr ""
300
-
301
- #: includes/functions.php:256 pages/levels.php:97
302
- #, php-format
303
- msgid "After your initial payment, your first %d payments will cost %s."
304
- msgstr ""
305
-
306
- #: includes/functions.php:267
307
- #, php-format
308
- msgid "Customers in %s will be charged %s%% tax."
309
- msgstr ""
310
-
311
- #: includes/functions.php:281
312
- #, php-format
313
- msgid "Membership expires after %d %s."
314
- msgstr ""
315
-
316
- #: includes/functions.php:517
317
- msgid "User ID not found."
318
- msgstr ""
319
-
320
- #: includes/functions.php:534
321
- msgid "Invalid level."
322
- msgstr ""
323
-
324
- #: includes/functions.php:545
325
- msgid "not changing?"
326
- msgstr ""
327
-
328
- #: includes/functions.php:562 includes/functions.php:609
329
- #: includes/functions.php:618
330
- msgid "Error interacting with database"
331
- msgstr ""
332
-
333
- #: includes/functions.php:659 includes/functions.php:698
334
- msgid "Membership level not found."
335
- msgstr ""
336
-
337
- #: includes/functions.php:1080
338
- msgid "The discount code could not be found."
339
- msgstr ""
340
-
341
- #: includes/functions.php:1096
342
- #, php-format
343
- msgid "This discount code goes into effect on %s."
344
- msgstr ""
345
-
346
- #: includes/functions.php:1105
347
- #, php-format
348
- msgid "This discount code expired on %s."
349
- msgstr ""
350
-
351
- #: includes/functions.php:1117
352
- msgid "This discount code is no longer valid."
353
- msgstr ""
354
-
355
- #: includes/functions.php:1132
356
- msgid "This discount code does not apply to this membership level."
357
- msgstr ""
358
-
359
- #: includes/functions.php:1140
360
- msgid "This discount code is okay."
361
- msgstr ""
362
-
363
- #: includes/functions.php:1164
364
- msgid "and"
365
- msgstr ""
366
-
367
- #: includes/functions.php:1349
368
- msgid "Sign Up for !!name!! Now"
369
- msgstr ""
370
-
371
- #: includes/functions.php:1355
372
- msgid "Please specify a level id."
373
- msgstr ""
374
-
375
- #: pages/invoice.php:22 pages/confirmation.php:41
376
- #, php-format
377
- msgid "Invoice #%s on %s"
378
- msgstr ""
379
-
380
- #: pages/invoice.php:27 pages/confirmation.php:46 pages/confirmation.php:104
381
- msgid "Account"
382
- msgstr ""
383
-
384
- #: pages/invoice.php:30 pages/account.php:29 pages/confirmation.php:49
385
- msgid "Membership Expires"
386
- msgstr ""
387
-
388
- #: pages/invoice.php:33 pages/checkout.php:66 pages/checkout.php:76
389
- #: pages/checkout.php:577 pages/confirmation.php:52
390
- #: classes/class.pmproemail.php:228 classes/class.pmproemail.php:237
391
- #: classes/class.pmproemail.php:246 classes/class.pmproemail.php:325
392
- #: classes/class.pmproemail.php:334 classes/class.pmproemail.php:645
393
- msgid "Discount Code"
394
- msgstr ""
395
-
396
- #: pages/invoice.php:48 pages/account.php:90 pages/checkout.php:325
397
- #: pages/confirmation.php:61 pages/billing.php:58
398
- #: adminpages/memberslist.php:150
399
- msgid "Billing Address"
400
- msgstr ""
401
-
402
- #: pages/invoice.php:50 pages/account.php:105 pages/confirmation.php:63
403
- msgid "Payment Method"
404
- msgstr ""
405
-
406
- #: pages/invoice.php:52 pages/invoice.php:109 pages/confirmation.php:65
407
- msgid "Total Billed"
408
- msgstr ""
409
-
410
- #: pages/invoice.php:69 pages/confirmation.php:82
411
- msgid "ending in"
412
- msgstr ""
413
-
414
- #: pages/invoice.php:70 pages/confirmation.php:83
415
- #: adminpages/membershiplevels.php:516
416
- msgid "Expiration"
417
- msgstr ""
418
-
419
- #: pages/invoice.php:79
420
- msgid "Subtotal"
421
- msgstr ""
422
-
423
- #: pages/invoice.php:80 adminpages/orders.php:304
424
- msgid "Tax"
425
- msgstr ""
426
-
427
- #: pages/invoice.php:82
428
- msgid "Coupon"
429
- msgstr ""
430
-
431
- #: pages/invoice.php:84 adminpages/orders.php:320 adminpages/orders.php:602
432
- msgid "Total"
433
- msgstr ""
434
-
435
- #: pages/invoice.php:107 adminpages/orders.php:442 adminpages/orders.php:607
436
- msgid "Date"
437
- msgstr ""
438
-
439
- #: pages/invoice.php:108
440
- msgid "Invoice #"
441
- msgstr ""
442
-
443
- #: pages/invoice.php:122
444
- msgid "View Invoice"
445
- msgstr ""
446
-
447
- #: pages/invoice.php:134
448
- msgid "No invoices found."
449
- msgstr ""
450
-
451
- #: pages/invoice.php:141 pages/confirmation.php:113
452
- msgid "View Your Membership Account &rarr;"
453
- msgstr ""
454
-
455
- #: pages/invoice.php:145
456
- msgid "&larr; View All Invoices"
457
- msgstr ""
458
-
459
- #: pages/account.php:10
460
- msgid "Your membership is <strong>active</strong>."
461
- msgstr ""
462
-
463
- #: pages/account.php:12 pages/billing.php:16 pages/levels.php:13
464
- msgid "Level"
465
- msgstr ""
466
-
467
- #: pages/account.php:14 pages/billing.php:18
468
- msgid "Membership Fee"
469
- msgstr ""
470
-
471
- #: pages/account.php:25 pages/billing.php:29
472
- msgid "Duration"
473
- msgstr ""
474
-
475
- #: pages/account.php:34
476
- #, php-format
477
- msgid "Your first payment will cost %s."
478
- msgstr ""
479
-
480
- #: pages/account.php:38
481
- #, php-format
482
- msgid "Your first %d payments will cost %s."
483
- msgstr ""
484
-
485
- #: pages/account.php:46
486
- msgid "My Account"
487
- msgstr ""
488
-
489
- #: pages/account.php:51 pages/checkout.php:171 adminpages/memberslist.php:145
490
- msgid "Username"
491
- msgstr ""
492
-
493
- #: pages/account.php:52 adminpages/memberslist.php:148
494
- #: adminpages/admin_header.php:152
495
- msgid "Email"
496
- msgstr ""
497
-
498
- #: pages/account.php:55
499
- msgid "Edit Profile"
500
- msgstr ""
501
-
502
- #: pages/account.php:56
503
- msgid "Change Password"
504
- msgstr ""
505
-
506
- #: pages/account.php:87
507
- msgid "Billing Information"
508
- msgstr ""
509
-
510
- #: pages/account.php:114
511
- msgid "Edit Billing Information"
512
- msgstr ""
513
-
514
- #: pages/account.php:125
515
- msgid "Past Invoices"
516
- msgstr ""
517
-
518
- #: pages/account.php:140
519
- msgid "View All Invoices"
520
- msgstr ""
521
-
522
- #: pages/account.php:146
523
- msgid "Member Links"
524
- msgstr ""
525
-
526
- #: pages/account.php:152
527
- msgid "Update Billing Information"
528
- msgstr ""
529
-
530
- #: pages/account.php:155
531
- msgid "Change Membership Level"
532
- msgstr ""
533
-
534
- #: pages/account.php:157
535
- msgid "Cancel Membership"
536
- msgstr ""
537
-
538
- #: pages/checkout.php:26
539
- msgid ""
540
- "Almost done. Review the membership information and pricing below then "
541
- "<strong>click the \"Complete Payment\" button</strong> to finish your order."
542
- msgstr ""
543
-
544
- #: pages/checkout.php:33
545
- msgid "change"
546
- msgstr ""
547
-
548
- #: pages/checkout.php:41
549
- #, php-format
550
- msgid "You have selected the <strong>%s</strong> membership level."
551
- msgstr ""
552
-
553
- #: pages/checkout.php:51
554
- #, php-format
555
- msgid ""
556
- "<p class=\"pmpro_level_discount_applied\">The <strong>%s</strong> code has "
557
- "been applied to your order.</p>"
558
- msgstr ""
559
-
560
- #: pages/checkout.php:62 services/applydiscountcode.php:75
561
- msgid "Click here to change your discount code"
562
- msgstr ""
563
-
564
- #: pages/checkout.php:64
565
- msgid "Do you have a discount code?"
566
- msgstr ""
567
-
568
- #: pages/checkout.php:64
569
- msgid "Click here to enter your discount code"
570
- msgstr ""
571
-
572
- #: pages/checkout.php:78 pages/checkout.php:579
573
- msgid "Apply"
574
- msgstr ""
575
-
576
- #: pages/checkout.php:163
577
- msgid "Already have an account?"
578
- msgstr ""
579
-
580
- #: pages/checkout.php:163
581
- msgid "Log in here"
582
- msgstr ""
583
-
584
- #: pages/checkout.php:163
585
- msgid "Account Information"
586
- msgstr ""
587
-
588
- #: pages/checkout.php:180 adminpages/paymentsettings.php:233
589
- msgid "Password"
590
- msgstr ""
591
-
592
- #: pages/checkout.php:189
593
- msgid "Confirm Password"
594
- msgstr ""
595
-
596
- #: pages/checkout.php:207 pages/checkout.php:464 pages/billing.php:193
597
- msgid "E-mail Address"
598
- msgstr ""
599
-
600
- #: pages/checkout.php:216
601
- msgid "Confirm E-mail Address"
602
- msgstr ""
603
-
604
- #: pages/checkout.php:235
605
- msgid "Full Name"
606
- msgstr ""
607
-
608
- #: pages/checkout.php:236
609
- msgid "LEAVE THIS BLANK"
610
- msgstr ""
611
-
612
- #: pages/checkout.php:260
613
- #, php-format
614
- msgid ""
615
- "You are logged in as <strong>%s</strong>. If you would like to use a "
616
- "different account for this membership, <a href=\"%s\">log out now</a>."
617
- msgstr ""
618
-
619
- #: pages/checkout.php:288
620
- #, php-format
621
- msgid "I agree to the %s"
622
- msgstr ""
623
-
624
- #: pages/checkout.php:303
625
- msgid "Choose your Payment Method"
626
- msgstr ""
627
-
628
- #: pages/checkout.php:311
629
- msgid "Check Out with a Credit Card Here"
630
- msgstr ""
631
-
632
- #: pages/checkout.php:313 pages/checkout.php:686
633
- msgid "Check Out with PayPal"
634
- msgstr ""
635
-
636
- #: pages/checkout.php:332 pages/billing.php:65
637
- msgid "First Name"
638
- msgstr ""
639
-
640
- #: pages/checkout.php:336 pages/billing.php:69
641
- msgid "Last Name"
642
- msgstr ""
643
-
644
- #: pages/checkout.php:340 pages/billing.php:73
645
- msgid "Address 1"
646
- msgstr ""
647
-
648
- #: pages/checkout.php:344 pages/billing.php:77
649
- msgid "Address 2"
650
- msgstr ""
651
-
652
- #: pages/checkout.php:354 pages/billing.php:87
653
- msgid "City"
654
- msgstr ""
655
-
656
- #: pages/checkout.php:358 pages/billing.php:91
657
- msgid "State"
658
- msgstr "County"
659
-
660
- #: pages/checkout.php:362 pages/billing.php:95
661
- msgid "Postal Code"
662
- msgstr ""
663
-
664
- #: pages/checkout.php:371 pages/billing.php:104
665
- msgid "City, State Zip"
666
- msgstr ""
667
-
668
- #: pages/checkout.php:424 pages/billing.php:157
669
- msgid "Country"
670
- msgstr ""
671
-
672
- #: pages/checkout.php:449 pages/billing.php:182
673
- msgid "Phone"
674
- msgstr ""
675
-
676
- #: pages/checkout.php:473 pages/billing.php:197
677
- msgid "Confirm E-mail"
678
- msgstr ""
679
-
680
- #: pages/checkout.php:504
681
- #, php-format
682
- msgid "We Accept %s"
683
- msgstr ""
684
-
685
- #: pages/checkout.php:504
686
- msgid "Payment Information"
687
- msgstr ""
688
-
689
- #: pages/checkout.php:521 pages/billing.php:234 adminpages/orders.php:339
690
- msgid "Card Type"
691
- msgstr ""
692
-
693
- #: pages/checkout.php:531 pages/billing.php:244
694
- msgid "Card Number"
695
- msgstr ""
696
-
697
- #: pages/checkout.php:536 pages/billing.php:249
698
- #: adminpages/discountcodes.php:367
699
- msgid "Expiration Date"
700
- msgstr ""
701
-
702
- #: pages/checkout.php:568 pages/billing.php:281
703
- msgid "CVV"
704
- msgstr ""
705
-
706
- #: pages/checkout.php:569 pages/billing.php:282
707
- msgid "what's this?"
708
- msgstr ""
709
-
710
- #: pages/checkout.php:678
711
- msgid "Complete Payment"
712
- msgstr ""
713
-
714
- #: pages/checkout.php:692
715
- msgid "Submit and Pay with 2CheckOut"
716
- msgstr ""
717
-
718
- #: pages/checkout.php:692
719
- msgid "Submit and Check Out"
720
- msgstr ""
721
-
722
- #: pages/checkout.php:692
723
- msgid "Submit and Confirm"
724
- msgstr ""
725
-
726
- #: pages/checkout.php:698
727
- msgid "Processing..."
728
- msgstr ""
729
-
730
- #: pages/cancel.php:14
731
- msgid "Are you sure you want to cancel your membership?"
732
- msgstr ""
733
-
734
- #: pages/cancel.php:17
735
- msgid "Yes, cancel my account"
736
- msgstr ""
737
-
738
- #: pages/cancel.php:19
739
- msgid "No, keep my account"
740
- msgstr ""
741
-
742
- #: pages/cancel.php:22
743
- msgid "Click here to go to the home page."
744
- msgstr ""
745
-
746
- #: pages/confirmation.php:12
747
- msgid ""
748
- "Your payment has been submitted. Your membership will be activated shortly."
749
- msgstr ""
750
-
751
- #: pages/confirmation.php:14
752
- #, php-format
753
- msgid "Thank you for your membership to %s. Your %s membership is now active."
754
- msgstr ""
755
-
756
- #: pages/confirmation.php:28
757
- #, php-format
758
- msgid ""
759
- "Below are details about your membership account and a receipt for your "
760
- "initial membership invoice. A welcome email with a copy of your initial "
761
- "membership invoice has been sent to %s."
762
- msgstr ""
763
-
764
- #: pages/confirmation.php:43
765
- msgid "Print"
766
- msgstr ""
767
-
768
- #: pages/confirmation.php:97
769
- #, php-format
770
- msgid ""
771
- "Below are details about your membership account. A welcome email with has "
772
- "been sent to %s."
773
- msgstr ""
774
-
775
- #: pages/confirmation.php:105
776
- msgid "Pending"
777
- msgstr ""
778
-
779
- #: pages/confirmation.php:115
780
- msgid ""
781
- "If your account is not activated within a few minutes, please contact the "
782
- "site owner."
783
- msgstr ""
784
-
785
- #: pages/billing.php:14
786
- #, php-format
787
- msgid "Logged in as <strong>%s</strong>."
788
- msgstr ""
789
-
790
- #: pages/billing.php:14
791
- msgid "logout"
792
- msgstr ""
793
-
794
- #: pages/billing.php:39
795
- msgid ""
796
- "Your payment subscription is managed by PayPal. Please <a href=\"http://www."
797
- "paypal.com\">login to PayPal here</a> to update your billing information."
798
- msgstr ""
799
-
800
- #: pages/billing.php:78 adminpages/paymentsettings.php:457
801
- msgid "optional"
802
- msgstr ""
803
-
804
- #: pages/billing.php:217
805
- #, php-format
806
- msgid "We accept %s"
807
- msgstr ""
808
-
809
- #: pages/billing.php:217
810
- msgid "Credit Card Information"
811
- msgstr ""
812
-
813
- #: pages/billing.php:294
814
- msgid "Update"
815
- msgstr ""
816
-
817
- #: pages/billing.php:295 adminpages/orders.php:511
818
- msgid "Cancel"
819
- msgstr ""
820
-
821
- #: pages/billing.php:309
822
- msgid ""
823
- "This subscription is not recurring. So you don't need to update your billing "
824
- "information."
825
- msgstr ""
826
-
827
- #: pages/levels.php:14 adminpages/membershiplevels.php:337
828
- #: adminpages/membershiplevels.php:513 adminpages/discountcodes.php:427
829
- msgid "Initial Payment"
830
- msgstr ""
831
-
832
- #: pages/levels.php:15
833
- msgid "Subscription Information"
834
- msgstr ""
835
-
836
- #: pages/levels.php:33
837
- msgid "--"
838
- msgstr ""
839
-
840
- #: pages/levels.php:43
841
- msgid "Free"
842
- msgstr ""
843
-
844
- #: pages/levels.php:51
845
- #, php-format
846
- msgid "%s per %s for %d more %s."
847
- msgstr ""
848
-
849
- #: pages/levels.php:55
850
- #, php-format
851
- msgid "%s every %d %s for %d more %s."
852
- msgstr ""
853
-
854
- #: pages/levels.php:60
855
- #, php-format
856
- msgid "%s after %d %s."
857
- msgstr ""
858
-
859
- #: pages/levels.php:66
860
- #, php-format
861
- msgid "%s per %s."
862
- msgstr ""
863
-
864
- #: pages/levels.php:70
865
- #, php-format
866
- msgid "%s every %d %s."
867
- msgstr ""
868
-
869
- #: pages/levels.php:113 pages/levels.php:115
870
- msgid "Select"
871
- msgstr ""
872
-
873
- #: pages/levels.php:123
874
- msgid "Renew"
875
- msgstr ""
876
-
877
- #: pages/levels.php:129
878
- msgid "Your&nbsp;Level"
879
- msgstr ""
880
-
881
- #: pages/levels.php:145
882
- msgid "&larr; Return to Your Account"
883
- msgstr ""
884
-
885
- #: pages/levels.php:147
886
- msgid "&larr; Return to Home"
887
- msgstr ""
888
-
889
- #: classes/class.memberorder.php:543
890
- #, php-format
891
- msgid ""
892
- "There was an error canceling the subscription for user with ID=%s. You will "
893
- "want to check your payment gateway to see if their subscription is still "
894
- "active."
895
- msgstr ""
896
-
897
- #: classes/class.pmproemail.php:37
898
- #, php-format
899
- msgid "An Email From %s"
900
- msgstr ""
901
-
902
- #: classes/class.pmproemail.php:122
903
- #, php-format
904
- msgid "Your membership at %s has been CANCELLED"
905
- msgstr ""
906
-
907
- #: classes/class.pmproemail.php:144
908
- #, php-format
909
- msgid "Membership for %s at %s has been CANCELLED"
910
- msgstr ""
911
-
912
- #: classes/class.pmproemail.php:175
913
- #, php-format
914
- msgid "Your membership confirmation for %s"
915
- msgstr ""
916
-
917
- #: classes/class.pmproemail.php:253 classes/class.pmproemail.php:346
918
- #: classes/class.pmproemail.php:651
919
- #, php-format
920
- msgid "This membership will expire on %s."
921
- msgstr ""
922
-
923
- #: classes/class.pmproemail.php:275
924
- #, php-format
925
- msgid "Member Checkout for %s at %s"
926
- msgstr ""
927
-
928
- #: classes/class.pmproemail.php:363
929
- #, php-format
930
- msgid "Your billing information has been udpated at %s"
931
- msgstr ""
932
-
933
- #: classes/class.pmproemail.php:416
934
- #, php-format
935
- msgid "Billing information has been udpated for %s at %s"
936
- msgstr ""
937
-
938
- #: classes/class.pmproemail.php:464
939
- #, php-format
940
- msgid "Membership Payment Failed at %s"
941
- msgstr ""
942
-
943
- #: classes/class.pmproemail.php:510
944
- #, php-format
945
- msgid "Membership Payment Failed For %s at %s"
946
- msgstr ""
947
-
948
- #: classes/class.pmproemail.php:557
949
- #, php-format
950
- msgid "Credit Card on File Expiring Soon at %s"
951
- msgstr ""
952
-
953
- #: classes/class.pmproemail.php:605
954
- #, php-format
955
- msgid "INVOICE for %s membership"
956
- msgstr ""
957
-
958
- #: classes/class.pmproemail.php:676
959
- #, php-format
960
- msgid "Your trial at %s is ending soon"
961
- msgstr ""
962
-
963
- #: classes/class.pmproemail.php:710
964
- #, php-format
965
- msgid "Your membership at %s has ended"
966
- msgstr ""
967
-
968
- #: classes/class.pmproemail.php:735
969
- #, php-format
970
- msgid "Your membership at %s will end soon"
971
- msgstr ""
972
-
973
- #: classes/class.pmproemail.php:755
974
- #, php-format
975
- msgid "Your membership at %s has been changed"
976
- msgstr ""
977
-
978
- #: classes/class.pmproemail.php:759
979
- #, php-format
980
- msgid "The new level is %s."
981
- msgstr ""
982
-
983
- #: classes/class.pmproemail.php:761
984
- msgid "Your membership has been cancelled"
985
- msgstr ""
986
-
987
- #: classes/class.pmproemail.php:765 classes/class.pmproemail.php:803
988
- #, php-format
989
- msgid "This membership will expire on %s"
990
- msgstr ""
991
-
992
- #: classes/class.pmproemail.php:769 classes/class.pmproemail.php:807
993
- msgid "This membership does not expire"
994
- msgstr ""
995
-
996
- #: classes/class.pmproemail.php:793
997
- #, php-format
998
- msgid "Membership for %s at %s has been changed"
999
- msgstr ""
1000
-
1001
- #: classes/class.pmproemail.php:797
1002
- #, php-format
1003
- msgid "The new level is %s. This membership is free"
1004
- msgstr ""
1005
-
1006
- #: classes/class.pmproemail.php:799
1007
- msgid "membership has been cancelled"
1008
- msgstr ""
1009
-
1010
- #: classes/gateways/class.pmprogateway_check.php:60
1011
- #: classes/gateways/class.pmprogateway_paypal.php:27
1012
- #: classes/gateways/class.pmprogateway_authorizenet.php:55
1013
- #: classes/gateways/class.pmprogateway_payflowpro.php:27
1014
- #: classes/gateways/class.pmprogateway_sagepay.php:81
1015
- #: classes/gateways/class.pmprogateway.php:55
1016
- #: classes/gateways/class.pmprogateway_cybersource.php:57
1017
- msgid "Unknown error: Authorization failed."
1018
- msgstr ""
1019
-
1020
- #: classes/gateways/class.pmprogateway_check.php:111
1021
- #: classes/gateways/class.pmprogateway_check.php:116
1022
- #: classes/gateways/class.pmprogateway_check.php:134
1023
- #: classes/gateways/class.pmprogateway_paypal.php:50
1024
- #: classes/gateways/class.pmprogateway_authorizenet.php:106
1025
- #: classes/gateways/class.pmprogateway_authorizenet.php:111
1026
- #: classes/gateways/class.pmprogateway_authorizenet.php:128
1027
- #: classes/gateways/class.pmprogateway_payflowpro.php:50
1028
- #: classes/gateways/class.pmprogateway_payflowpro.php:55
1029
- #: classes/gateways/class.pmprogateway_sagepay.php:140
1030
- #: classes/gateways/class.pmprogateway_sagepay.php:145
1031
- #: classes/gateways/class.pmprogateway_sagepay.php:168
1032
- #: classes/gateways/class.pmprogateway.php:106
1033
- #: classes/gateways/class.pmprogateway.php:111
1034
- #: classes/gateways/class.pmprogateway.php:129
1035
- #: classes/gateways/class.pmprogateway_cybersource.php:108
1036
- #: classes/gateways/class.pmprogateway_cybersource.php:113
1037
- #: classes/gateways/class.pmprogateway_cybersource.php:131
1038
- msgid "Unknown error: Payment failed."
1039
- msgstr ""
1040
-
1041
- #: classes/gateways/class.pmprogateway_check.php:118
1042
- #: classes/gateways/class.pmprogateway_authorizenet.php:112
1043
- #: classes/gateways/class.pmprogateway_sagepay.php:147
1044
- #: classes/gateways/class.pmprogateway.php:113
1045
- #: classes/gateways/class.pmprogateway_cybersource.php:115
1046
- msgid ""
1047
- "A partial payment was made that we could not void. Please contact the site "
1048
- "owner immediately to correct this."
1049
- msgstr ""
1050
-
1051
- #: classes/gateways/class.pmprogateway_braintree.php:61
1052
- #: classes/gateways/class.pmprogateway_stripe.php:53
1053
- msgid "Unknown error: Initial payment failed."
1054
- msgstr ""
1055
-
1056
- #: classes/gateways/class.pmprogateway_braintree.php:120
1057
- msgid "Error during settlement:"
1058
- msgstr ""
1059
-
1060
- #: classes/gateways/class.pmprogateway_braintree.php:129
1061
- msgid "Error during charge:"
1062
- msgstr ""
1063
-
1064
- #: classes/gateways/class.pmprogateway_braintree.php:198
1065
- msgid "Failed to update customer."
1066
- msgstr ""
1067
-
1068
- #: classes/gateways/class.pmprogateway_braintree.php:246
1069
- msgid "Failed to create customer."
1070
- msgstr ""
1071
-
1072
- #: classes/gateways/class.pmprogateway_braintree.php:253
1073
- msgid "Error creating customer record with Braintree:"
1074
- msgstr ""
1075
-
1076
- #: classes/gateways/class.pmprogateway_braintree.php:344
1077
- msgid "Error subscribing customer to plan with Braintree:"
1078
- msgstr ""
1079
-
1080
- #: classes/gateways/class.pmprogateway_braintree.php:359
1081
- msgid "Failed to subscribe with Braintree:"
1082
- msgstr ""
1083
-
1084
- #: classes/gateways/class.pmprogateway_braintree.php:397
1085
- #: classes/gateways/class.pmprogateway_braintree.php:410
1086
- #: classes/gateways/class.pmprogateway_braintree.php:417
1087
- #: classes/gateways/class.pmprogateway_stripe.php:344
1088
- #: classes/gateways/class.pmprogateway_stripe.php:354
1089
- msgid "Could not find the subscription."
1090
- msgstr ""
1091
-
1092
- #: classes/gateways/class.pmprogateway_paypal.php:57
1093
- #: classes/gateways/class.pmprogateway_payflowpro.php:57
1094
- msgid ""
1095
- "A partial payment was made that we could not refund. Please contact the site "
1096
- "owner immediately to correct this."
1097
- msgstr ""
1098
-
1099
- #: classes/gateways/class.pmprogateway_authorizenet.php:187
1100
- #: adminpages/memberslist.php:151 adminpages/pagesettings.php:51
1101
- #: adminpages/reports/login.php:143
1102
- msgid "Membership"
1103
- msgstr ""
1104
-
1105
- #: classes/gateways/class.pmprogateway_authorizenet.php:787
1106
- #: classes/gateways/class.pmprogateway_authorizenet.php:788
1107
- msgid "Could not connect to Authorize.net"
1108
- msgstr ""
1109
-
1110
- #: classes/gateways/class.pmprogateway_stripe.php:192
1111
- msgid "Error creating customer record with Stripe:"
1112
- msgstr ""
1113
-
1114
- #: classes/gateways/class.pmprogateway_stripe.php:279
1115
- msgid "Error creating plan with Stripe:"
1116
- msgstr ""
1117
-
1118
- #: classes/gateways/class.pmprogateway_stripe.php:295
1119
- msgid "Error subscribing customer to plan with Stripe:"
1120
- msgstr ""
1121
-
1122
- #: adminpages/membershiplevels.php:5 adminpages/orders.php:5
1123
- #: adminpages/memberslist.php:5 adminpages/paymentsettings.php:5
1124
- #: adminpages/pagesettings.php:5 adminpages/discountcodes.php:5
1125
- #: adminpages/memberslist-csv.php:5 adminpages/addons.php:5
1126
- #: adminpages/emailsettings.php:5 adminpages/advancedsettings.php:5
1127
- #: adminpages/orders-csv.php:5
1128
- msgid "You do not have permissions to perform this action."
1129
- msgstr ""
1130
-
1131
- #: adminpages/membershiplevels.php:118
1132
- msgid "Membership level updated successfully."
1133
- msgstr ""
1134
-
1135
- #: adminpages/membershiplevels.php:124
1136
- msgid "Error updating membership level."
1137
- msgstr ""
1138
-
1139
- #: adminpages/membershiplevels.php:141
1140
- msgid "Membership level added successfully."
1141
- msgstr ""
1142
-
1143
- #: adminpages/membershiplevels.php:146
1144
- msgid "Error adding membership level."
1145
- msgstr ""
1146
-
1147
- #: adminpages/membershiplevels.php:179
1148
- #, php-format
1149
- msgid ""
1150
- "There was an error canceling the subscription for user with ID=%d. You will "
1151
- "want to check your payment gateway to see if their subscription is still "
1152
- "active."
1153
- msgstr ""
1154
-
1155
- #: adminpages/membershiplevels.php:182
1156
- msgid "Last Invoice"
1157
- msgstr ""
1158
-
1159
- #: adminpages/membershiplevels.php:196
1160
- msgid "Membership level deleted successfully."
1161
- msgstr ""
1162
-
1163
- #: adminpages/membershiplevels.php:201 adminpages/membershiplevels.php:207
1164
- msgid "Error deleting membership level."
1165
- msgstr ""
1166
-
1167
- #: adminpages/membershiplevels.php:222
1168
- msgid "Edit Membership Level"
1169
- msgstr ""
1170
-
1171
- #: adminpages/membershiplevels.php:224
1172
- msgid "Add New Membership Level"
1173
- msgstr ""
1174
-
1175
- #: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:511
1176
- #: adminpages/orders.php:597 adminpages/memberslist.php:144
1177
- #: adminpages/discountcodes.php:306 adminpages/discountcodes.php:547
1178
- #: adminpages/reports/login.php:140
1179
- msgid "ID"
1180
- msgstr ""
1181
-
1182
- #: adminpages/membershiplevels.php:291 adminpages/membershiplevels.php:512
1183
- #: adminpages/reports/login.php:142
1184
- msgid "Name"
1185
- msgstr ""
1186
-
1187
- #: adminpages/membershiplevels.php:296
1188
- msgid "Description"
1189
- msgstr ""
1190
-
1191
- #: adminpages/membershiplevels.php:314
1192
- msgid "Confirmation Message"
1193
- msgstr ""
1194
-
1195
- #: adminpages/membershiplevels.php:333
1196
- msgid "Billing Details"
1197
- msgstr ""
1198
-
1199
- #: adminpages/membershiplevels.php:338 adminpages/discountcodes.php:428
1200
- msgid "The initial amount collected at registration."
1201
- msgstr ""
1202
-
1203
- #: adminpages/membershiplevels.php:342 adminpages/discountcodes.php:432
1204
- msgid "Recurring Subscription"
1205
- msgstr ""
1206
-
1207
- #: adminpages/membershiplevels.php:343 adminpages/discountcodes.php:433
1208
- msgid "Check if this level has a recurring subscription payment."
1209
- msgstr ""
1210
-
1211
- #: adminpages/membershiplevels.php:347
1212
- msgid "Billing Amount"
1213
- msgstr ""
1214
-
1215
- #: adminpages/membershiplevels.php:349
1216
- msgid "per"
1217
- msgstr ""
1218
-
1219
- #: adminpages/membershiplevels.php:353
1220
- msgid "Day(s)"
1221
- msgstr ""
1222
-
1223
- #: adminpages/membershiplevels.php:353
1224
- msgid "Week(s)"
1225
- msgstr ""
1226
-
1227
- #: adminpages/membershiplevels.php:353
1228
- msgid "Month(s)"
1229
- msgstr ""
1230
-
1231
- #: adminpages/membershiplevels.php:353
1232
- msgid "Year(s)"
1233
- msgstr ""
1234
-
1235
- #: adminpages/membershiplevels.php:362 adminpages/discountcodes.php:451
1236
- msgid "The amount to be billed one cycle after the initial payment."
1237
- msgstr ""
1238
-
1239
- #: adminpages/membershiplevels.php:364
1240
- msgid ""
1241
- "Stripe integration currently only supports billing periods of \"Week\", "
1242
- "\"Month\" or \"Year\"."
1243
- msgstr ""
1244
-
1245
- #: adminpages/membershiplevels.php:366
1246
- msgid ""
1247
- "Braintree integration currently only supports billing periods of \"Month\" "
1248
- "or \"Year\"."
1249
- msgstr ""
1250
-
1251
- #: adminpages/membershiplevels.php:368
1252
- msgid ""
1253
- "Payflow integration currently only supports billing frequencies of 1 and "
1254
- "billing periods of \"Week\", \"Month\" or \"Year\"."
1255
- msgstr ""
1256
-
1257
- #: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
1258
- #: adminpages/paymentsettings.php:179 adminpages/paymentsettings.php:184
1259
- msgid "Note"
1260
- msgstr ""
1261
-
1262
- #: adminpages/membershiplevels.php:372
1263
- msgid ""
1264
- "After saving this level, make note of the ID and create a \"Plan\" in your "
1265
- "Braintree dashboard with the same settings and the \"Plan ID\" set to "
1266
- "<em>pmpro_#</em>, where # is the level ID."
1267
- msgstr ""
1268
-
1269
- #: adminpages/membershiplevels.php:374
1270
- msgid ""
1271
- "You will need to create a \"Plan\" in your Braintree dashboard with the same "
1272
- "settings and the \"Plan ID\" set to"
1273
- msgstr ""
1274
-
1275
- #: adminpages/membershiplevels.php:380 adminpages/discountcodes.php:456
1276
- msgid "Billing Cycle Limit"
1277
- msgstr ""
1278
-
1279
- #: adminpages/membershiplevels.php:384 adminpages/discountcodes.php:459
1280
- msgid ""
1281
- "The <strong>total</strong> number of recurring billing cycles for this "
1282
- "level, including the trial period (if applicable) but not including the "
1283
- "initial payment. Set to zero if membership is indefinite."
1284
- msgstr ""
1285
-
1286
- #: adminpages/membershiplevels.php:386
1287
- msgid ""
1288
- "Stripe integration currently does not support billing limits. You can still "
1289
- "set an expiration date below."
1290
- msgstr ""
1291
-
1292
- #: adminpages/membershiplevels.php:393 adminpages/discountcodes.php:464
1293
- msgid "Custom Trial"
1294
- msgstr ""
1295
-
1296
- #: adminpages/membershiplevels.php:395 adminpages/discountcodes.php:465
1297
- msgid "Check to add a custom trial period."
1298
- msgstr ""
1299
-
1300
- #: adminpages/membershiplevels.php:398
1301
- msgid ""
1302
- "2Checkout integration does not support custom trials. You can do one period "
1303
- "trials by setting an initial payment different from the billing amount."
1304
- msgstr ""
1305
-
1306
- #: adminpages/membershiplevels.php:404 adminpages/discountcodes.php:469
1307
- msgid "Trial Billing Amount"
1308
- msgstr ""
1309
-
1310
- #: adminpages/membershiplevels.php:407 adminpages/discountcodes.php:472
1311
- msgid "for the first"
1312
- msgstr ""
1313
-
1314
- #: adminpages/membershiplevels.php:409 adminpages/discountcodes.php:474
1315
- msgid "subscription payments"
1316
- msgstr ""
1317
-
1318
- #: adminpages/membershiplevels.php:412
1319
- msgid ""
1320
- "Stripe integration currently does not support trial amounts greater than $0."
1321
- msgstr ""
1322
-
1323
- #: adminpages/membershiplevels.php:416
1324
- msgid ""
1325
- "Braintree integration currently does not support trial amounts greater than "
1326
- "$0."
1327
- msgstr ""
1328
-
1329
- #: adminpages/membershiplevels.php:420
1330
- msgid ""
1331
- "Payflow integration currently does not support trial amounts greater than $0."
1332
- msgstr ""
1333
-
1334
- #: adminpages/membershiplevels.php:428
1335
- msgid "Other Settings"
1336
- msgstr ""
1337
-
1338
- #: adminpages/membershiplevels.php:432
1339
- msgid "Disable New Signups"
1340
- msgstr ""
1341
-
1342
- #: adminpages/membershiplevels.php:433
1343
- msgid ""
1344
- "Check to hide this level from the membership levels page and disable "
1345
- "registration."
1346
- msgstr ""
1347
-
1348
- #: adminpages/membershiplevels.php:437 adminpages/discountcodes.php:479
1349
- msgid "Membership Expiration"
1350
- msgstr ""
1351
-
1352
- #: adminpages/membershiplevels.php:438 adminpages/discountcodes.php:480
1353
- msgid "Check this to set when membership access expires."
1354
- msgstr ""
1355
-
1356
- #: adminpages/membershiplevels.php:442 adminpages/discountcodes.php:484
1357
- msgid "Expires In"
1358
- msgstr ""
1359
-
1360
- #: adminpages/membershiplevels.php:455 adminpages/discountcodes.php:497
1361
- msgid ""
1362
- "Set the duration of membership access. Note that the any future payments "
1363
- "(recurring subscription, if any) will be cancelled when the membership "
1364
- "expires."
1365
- msgstr ""
1366
-
1367
- #: adminpages/membershiplevels.php:463
1368
- msgid "Content Settings"
1369
- msgstr ""
1370
-
1371
- #: adminpages/membershiplevels.php:467
1372
- msgid "Categories"
1373
- msgstr ""
1374
-
1375
- #: adminpages/membershiplevels.php:496
1376
- msgid "Add New Level"
1377
- msgstr ""
1378
-
1379
- #: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:502
1380
- msgid "Search Levels"
1381
- msgstr ""
1382
-
1383
- #: adminpages/membershiplevels.php:514
1384
- msgid "Billing Cycle"
1385
- msgstr ""
1386
-
1387
- #: adminpages/membershiplevels.php:515
1388
- msgid "Trial Cycle"
1389
- msgstr ""
1390
-
1391
- #: adminpages/membershiplevels.php:517
1392
- msgid "Allow Signups"
1393
- msgstr ""
1394
-
1395
- #: adminpages/membershiplevels.php:540
1396
- msgid "FREE"
1397
- msgstr ""
1398
-
1399
- #: adminpages/membershiplevels.php:549
1400
- msgid "every"
1401
- msgstr ""
1402
-
1403
- #: adminpages/membershiplevels.php:551 adminpages/membershiplevels.php:559
1404
- #: adminpages/reports/memberships.php:304
1405
- #: adminpages/reports/memberships.php:315 adminpages/reports/sales.php:203
1406
- #: adminpages/reports/sales.php:214
1407
- msgid "for"
1408
- msgstr ""
1409
-
1410
- #: adminpages/membershiplevels.php:566
1411
- msgid "After"
1412
- msgstr ""
1413
-
1414
- #: adminpages/membershiplevels.php:570 adminpages/orders.php:658
1415
- #: adminpages/discountcodes.php:614
1416
- msgid "edit"
1417
- msgstr ""
1418
-
1419
- #: adminpages/membershiplevels.php:571 adminpages/orders.php:661
1420
- msgid "copy"
1421
- msgstr ""
1422
-
1423
- #: adminpages/membershiplevels.php:572
1424
- #, php-format
1425
- msgid ""
1426
- "Are you sure you want to delete membership level %s? All subscriptions will "
1427
- "be cancelled."
1428
- msgstr ""
1429
-
1430
- #: adminpages/membershiplevels.php:572 adminpages/orders.php:664
1431
- #: adminpages/discountcodes.php:617
1432
- msgid "delete"
1433
- msgstr ""
1434
-
1435
- #: adminpages/orders.php:26
1436
- msgid "Order deleted successfully."
1437
- msgstr ""
1438
-
1439
- #: adminpages/orders.php:31
1440
- msgid "Error deleting order."
1441
- msgstr ""
1442
-
1443
- #: adminpages/orders.php:119
1444
- msgid "Order saved successfully."
1445
- msgstr ""
1446
-
1447
- #: adminpages/orders.php:124
1448
- msgid "Error updating order timestamp."
1449
- msgstr ""
1450
-
1451
- #: adminpages/orders.php:130
1452
- msgid "Error saving order."
1453
- msgstr ""
1454
-
1455
- #: adminpages/orders.php:195
1456
- msgid "Order"
1457
- msgstr ""
1458
-
1459
- #: adminpages/orders.php:197
1460
- msgid "New Order"
1461
- msgstr ""
1462
-
1463
- #: adminpages/orders.php:211 adminpages/discountcodes.php:307
1464
- msgid "This will be generated when you save."
1465
- msgstr ""
1466
-
1467
- #: adminpages/orders.php:215 adminpages/orders.php:598
1468
- #: adminpages/discountcodes.php:311 adminpages/discountcodes.php:548
1469
- msgid "Code"
1470
- msgstr ""
1471
-
1472
- #: adminpages/orders.php:220
1473
- msgid "Randomly generated for you."
1474
- msgstr ""
1475
-
1476
- #: adminpages/orders.php:225
1477
- msgid "User ID"
1478
- msgstr ""
1479
-
1480
- #: adminpages/orders.php:234
1481
- msgid "Membership Level ID"
1482
- msgstr ""
1483
-
1484
- #: adminpages/orders.php:243
1485
- msgid "Billing Name"
1486
- msgstr ""
1487
-
1488
- #: adminpages/orders.php:251
1489
- msgid "Billing Street"
1490
- msgstr ""
1491
-
1492
- #: adminpages/orders.php:258
1493
- msgid "Billing City"
1494
- msgstr ""
1495
-
1496
- #: adminpages/orders.php:265
1497
- msgid "Billing State"
1498
- msgstr "Billing County"
1499
-
1500
- #: adminpages/orders.php:272
1501
- msgid "Billing Postal Code"
1502
- msgstr ""
1503
-
1504
- #: adminpages/orders.php:279
1505
- msgid "Billing Country"
1506
- msgstr ""
1507
-
1508
- #: adminpages/orders.php:287
1509
- msgid "Billing Phone"
1510
- msgstr ""
1511
-
1512
- #: adminpages/orders.php:296
1513
- msgid "Sub Total"
1514
- msgstr ""
1515
-
1516
- #: adminpages/orders.php:312
1517
- msgid "Coupon Amount"
1518
- msgstr ""
1519
-
1520
- #: adminpages/orders.php:325
1521
- msgid "Should be subtotal + tax - couponamount."
1522
- msgstr ""
1523
-
1524
- #: adminpages/orders.php:330
1525
- msgid "Payment Type"
1526
- msgstr ""
1527
-
1528
- #: adminpages/orders.php:335
1529
- msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
1530
- msgstr ""
1531
-
1532
- #: adminpages/orders.php:344
1533
- msgid "e.g. Visa, MasterCard, AMEX, etc"
1534
- msgstr ""
1535
-
1536
- #: adminpages/orders.php:348 adminpages/paymentsettings.php:357
1537
- msgid "Account Number"
1538
- msgstr ""
1539
-
1540
- #: adminpages/orders.php:353
1541
- msgid "Obscure all but last 4 digits."
1542
- msgstr ""
1543
-
1544
- #: adminpages/orders.php:358
1545
- msgid "Expiration Month"
1546
- msgstr ""
1547
-
1548
- #: adminpages/orders.php:365
1549
- msgid "Expiration Year"
1550
- msgstr ""
1551
-
1552
- #: adminpages/orders.php:373 adminpages/orders.php:606
1553
- msgid "Status"
1554
- msgstr ""
1555
-
1556
- #: adminpages/orders.php:394 adminpages/orders.php:604
1557
- msgid "Gateway"
1558
- msgstr ""
1559
-
1560
- #: adminpages/orders.php:398
1561
- msgid "Testing Only"
1562
- msgstr ""
1563
-
1564
- #: adminpages/orders.php:399 adminpages/paymentsettings.php:163
1565
- msgid "Pay by Check"
1566
- msgstr ""
1567
-
1568
- #: adminpages/orders.php:411 adminpages/paymentsettings.php:189
1569
- msgid "Gateway Environment"
1570
- msgstr ""
1571
-
1572
- #: adminpages/orders.php:415 adminpages/paymentsettings.php:193
1573
- msgid "Sandbox/Testing"
1574
- msgstr ""
1575
-
1576
- #: adminpages/orders.php:416 adminpages/paymentsettings.php:194
1577
- msgid "Live/Production"
1578
- msgstr ""
1579
-
1580
- #: adminpages/orders.php:423
1581
- msgid "Payment Transaction ID"
1582
- msgstr ""
1583
-
1584
- #: adminpages/orders.php:428
1585
- msgid "Generated by the gateway. Useful to cross reference orders."
1586
- msgstr ""
1587
-
1588
- #: adminpages/orders.php:432
1589
- msgid "Subscription Transaction ID"
1590
- msgstr ""
1591
-
1592
- #: adminpages/orders.php:437
1593
- msgid "Generated by the gateway. Useful to cross reference subscriptions."
1594
- msgstr ""
1595
-
1596
- #: adminpages/orders.php:477
1597
- msgid "Affiliate ID"
1598
- msgstr ""
1599
-
1600
- #: adminpages/orders.php:485
1601
- msgid "Affiliate SubID"
1602
- msgstr ""
1603
-
1604
- #: adminpages/orders.php:495
1605
- msgid "Notes"
1606
- msgstr ""
1607
-
1608
- #: adminpages/orders.php:510
1609
- msgid "Save Order"
1610
- msgstr ""
1611
-
1612
- #: adminpages/orders.php:521
1613
- msgid "Add New Order"
1614
- msgstr ""
1615
-
1616
- #: adminpages/orders.php:522 adminpages/memberslist.php:26
1617
- msgid "Export to CSV"
1618
- msgstr ""
1619
-
1620
- #: adminpages/orders.php:535 adminpages/orders.php:538
1621
- msgid "Search Orders"
1622
- msgstr ""
1623
-
1624
- #: adminpages/orders.php:590
1625
- #, php-format
1626
- msgid "%d orders found."
1627
- msgstr ""
1628
-
1629
- #: adminpages/orders.php:599 adminpages/paymentsettings.php:225
1630
- #: adminpages/reports/login.php:141
1631
- msgid "User"
1632
- msgstr ""
1633
-
1634
- #: adminpages/orders.php:603 adminpages/orders.php:651
1635
- msgid "Payment"
1636
- msgstr ""
1637
-
1638
- #: adminpages/orders.php:605
1639
- msgid "Transaction IDs"
1640
- msgstr ""
1641
-
1642
- #: adminpages/orders.php:630
1643
- msgid "deleted"
1644
- msgstr ""
1645
-
1646
- #: adminpages/orders.php:653
1647
- msgid "Subscription"
1648
- msgstr ""
1649
-
1650
- #: adminpages/orders.php:664
1651
- #, php-format
1652
- msgid ""
1653
- "Deleting orders is permanent and can affect active users. Are you sure you "
1654
- "want to delete order %s?"
1655
- msgstr ""
1656
-
1657
- #: adminpages/orders.php:674
1658
- msgid "No orders found."
1659
- msgstr ""
1660
-
1661
- #: adminpages/memberslist.php:30 adminpages/reports/memberships.php:292
1662
- #: adminpages/reports/login.php:65 adminpages/reports/sales.php:193
1663
- msgid "Show"
1664
- msgstr ""
1665
-
1666
- #: adminpages/memberslist.php:32 adminpages/reports/memberships.php:317
1667
- #: adminpages/reports/login.php:67 adminpages/reports/sales.php:216
1668
- msgid "All Levels"
1669
- msgstr ""
1670
-
1671
- #: adminpages/memberslist.php:42
1672
- msgid "Old Members"
1673
- msgstr ""
1674
-
1675
- #: adminpages/memberslist.php:47 adminpages/memberslist.php:50
1676
- msgid "Search Members"
1677
- msgstr ""
1678
-
1679
- #: adminpages/memberslist.php:136
1680
- #, php-format
1681
- msgid "%d members found."
1682
- msgstr ""
1683
-
1684
- #: adminpages/memberslist.php:146
1685
- msgid "First&nbsp;Name"
1686
- msgstr ""
1687
-
1688
- #: adminpages/memberslist.php:147
1689
- msgid "Last&nbsp;Name"
1690
- msgstr ""
1691
-
1692
- #: adminpages/memberslist.php:152
1693
- msgid "Fee"
1694
- msgstr ""
1695
-
1696
- #: adminpages/memberslist.php:153 adminpages/reports/login.php:144
1697
- msgid "Joined"
1698
- msgstr ""
1699
-
1700
- #: adminpages/memberslist.php:157
1701
- msgid "Ended"
1702
- msgstr ""
1703
-
1704
- #: adminpages/memberslist.php:212
1705
- msgid "Never"
1706
- msgstr ""
1707
-
1708
- #: adminpages/memberslist.php:223 adminpages/reports/login.php:210
1709
- msgid "No members found."
1710
- msgstr ""
1711
-
1712
- #: adminpages/memberslist.php:223 adminpages/reports/login.php:210
1713
- msgid "Search all levels"
1714
- msgstr ""
1715
-
1716
- #: adminpages/paymentsettings.php:78
1717
- msgid "Your payment settings have been updated."
1718
- msgstr ""
1719
-
1720
- #: adminpages/paymentsettings.php:150 adminpages/paymentsettings.php:158
1721
- msgid "Payment Gateway"
1722
- msgstr ""
1723
-
1724
- #: adminpages/paymentsettings.php:150
1725
- msgid "SSL Settings"
1726
- msgstr ""
1727
-
1728
- #: adminpages/paymentsettings.php:179
1729
- msgid ""
1730
- "This gateway option is in beta. Some functionality may not be available. "
1731
- "Please contact Paid Memberships Pro with any issues you run into. "
1732
- "<strong>Please be sure to upgrade Paid Memberships Pro to the latest "
1733
- "versions when available.</strong>"
1734
- msgstr ""
1735
-
1736
- #: adminpages/paymentsettings.php:184
1737
- msgid ""
1738
- "We do not recommend using PayPal Standard. We suggest using PayPal Express, "
1739
- "Website Payments Pro (Legacy), or PayPal Pro (Payflow Pro). <a target="
1740
- "\"_blank\" href=\"http://www.paidmembershipspro.com/2013/09/read-using-"
1741
- "paypal-standard-paid-memberships-pro/\">More information on why can be found "
1742
- "here.</a>"
1743
- msgstr ""
1744
-
1745
- #: adminpages/paymentsettings.php:209
1746
- msgid "Partner"
1747
- msgstr ""
1748
-
1749
- #: adminpages/paymentsettings.php:217
1750
- msgid "Vendor"
1751
- msgstr ""
1752
-
1753
- #: adminpages/paymentsettings.php:241
1754
- msgid "Gateway Account Email"
1755
- msgstr ""
1756
-
1757
- #: adminpages/paymentsettings.php:249 adminpages/paymentsettings.php:341
1758
- msgid "API Username"
1759
- msgstr ""
1760
-
1761
- #: adminpages/paymentsettings.php:257 adminpages/paymentsettings.php:349
1762
- msgid "API Password"
1763
- msgstr ""
1764
-
1765
- #: adminpages/paymentsettings.php:265
1766
- msgid "API Signature"
1767
- msgstr ""
1768
-
1769
- #: adminpages/paymentsettings.php:274
1770
- msgid "Login Name"
1771
- msgstr ""
1772
-
1773
- #: adminpages/paymentsettings.php:282
1774
- msgid "Transaction Key"
1775
- msgstr ""
1776
-
1777
- #: adminpages/paymentsettings.php:291
1778
- msgid "Secret Key"
1779
- msgstr ""
1780
-
1781
- #: adminpages/paymentsettings.php:299
1782
- msgid "Publishable Key"
1783
- msgstr ""
1784
-
1785
- #: adminpages/paymentsettings.php:308 adminpages/paymentsettings.php:374
1786
- msgid "Merchant ID"
1787
- msgstr ""
1788
-
1789
- #: adminpages/paymentsettings.php:316
1790
- msgid "Public Key"
1791
- msgstr ""
1792
-
1793
- #: adminpages/paymentsettings.php:324
1794
- msgid "Private Key"
1795
- msgstr ""
1796
-
1797
- #: adminpages/paymentsettings.php:332
1798
- msgid "Client-Side Encryption Key"
1799
- msgstr ""
1800
-
1801
- #: adminpages/paymentsettings.php:365
1802
- msgid "Secret Word"
1803
- msgstr ""
1804
-
1805
- #: adminpages/paymentsettings.php:382
1806
- msgid "Transaction Security Key"
1807
- msgstr ""
1808
-
1809
- #: adminpages/paymentsettings.php:390
1810
- msgid "Encryption key"
1811
- msgstr ""
1812
-
1813
- #: adminpages/paymentsettings.php:400
1814
- msgid "Currency"
1815
- msgstr ""
1816
-
1817
- #: adminpages/paymentsettings.php:420
1818
- msgid "Accepted Credit Card Types"
1819
- msgstr ""
1820
-
1821
- #: adminpages/paymentsettings.php:434
1822
- msgid "Instructions"
1823
- msgstr ""
1824
-
1825
- #: adminpages/paymentsettings.php:438
1826
- msgid ""
1827
- "Who to write the check out to. Where to mail it. Shown on checkout, "
1828
- "confirmation, and invoice pages."
1829
- msgstr ""
1830
-
1831
- #: adminpages/paymentsettings.php:444
1832
- msgid "Show Billing Address Fields"
1833
- msgstr ""
1834
-
1835
- #: adminpages/paymentsettings.php:451
1836
- msgid ""
1837
- "Stripe doesn't require billing address fields. Choose 'No' to hide them on "
1838
- "the checkout page.<br /><strong>If No, make sure you disable address "
1839
- "verification in the Stripe dashboard settings.</strong>"
1840
- msgstr ""
1841
-
1842
- #: adminpages/paymentsettings.php:457
1843
- msgid "Sales Tax"
1844
- msgstr ""
1845
-
1846
- #: adminpages/paymentsettings.php:460
1847
- msgid "Tax State"
1848
- msgstr ""
1849
-
1850
- #: adminpages/paymentsettings.php:461
1851
- msgid "abbreviation, e.g. \"PA\""
1852
- msgstr ""
1853
-
1854
- #: adminpages/paymentsettings.php:463
1855
- msgid "decimal, e.g. \"0.06\""
1856
- msgstr ""
1857
-
1858
- #: adminpages/paymentsettings.php:464
1859
- msgid ""
1860
- "US only. If values are given, tax will be applied for any members ordering "
1861
- "from the selected state.<br />For non-US or more complex tax rules, use the "
1862
- "<a target=\"_blank\" href=\"http://www.paidmembershipspro.com/2013/10/non-us-"
1863
- "taxes-paid-memberships-pro/\">pmpro_tax filter</a>."
1864
- msgstr ""
1865
-
1866
- #: adminpages/paymentsettings.php:469
1867
- msgid "Force SSL"
1868
- msgstr ""
1869
-
1870
- #: adminpages/paymentsettings.php:475
1871
- msgid "Yes (with JavaScript redirects)"
1872
- msgstr ""
1873
-
1874
- #: adminpages/paymentsettings.php:482
1875
- msgid "SSL Seal Code"
1876
- msgstr ""
1877
-
1878
- #: adminpages/paymentsettings.php:491
1879
- msgid "HTTPS Nuclear Option"
1880
- msgstr ""
1881
-
1882
- #: adminpages/paymentsettings.php:494
1883
- msgid ""
1884
- "Use the \"Nuclear Option\" to use secure (HTTPS) URLs on your secure pages. "
1885
- "Check this if you are using SSL and have warnings on your checkout pages."
1886
- msgstr ""
1887
-
1888
- #: adminpages/paymentsettings.php:499
1889
- msgid "IPN Handler URL"
1890
- msgstr ""
1891
-
1892
- #: adminpages/paymentsettings.php:502
1893
- msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
1894
- msgstr ""
1895
-
1896
- #: adminpages/paymentsettings.php:507
1897
- msgid "TwoCheckout INS URL"
1898
- msgstr ""
1899
-
1900
- #: adminpages/paymentsettings.php:510
1901
- msgid ""
1902
- "To fully integrate with 2Checkout, be sure to set your 2Checkout INS URL "
1903
- msgstr ""
1904
-
1905
- #: adminpages/paymentsettings.php:515
1906
- msgid "Silent Post URL"
1907
- msgstr ""
1908
-
1909
- #: adminpages/paymentsettings.php:518
1910
- msgid ""
1911
- "To fully integrate with Authorize.net, be sure to set your Silent Post URL to"
1912
- msgstr ""
1913
-
1914
- #: adminpages/paymentsettings.php:523 adminpages/paymentsettings.php:531
1915
- msgid "Web Hook URL"
1916
- msgstr ""
1917
-
1918
- #: adminpages/paymentsettings.php:526
1919
- msgid "To fully integrate with Stripe, be sure to set your Web Hook URL to"
1920
- msgstr ""
1921
-
1922
- #: adminpages/paymentsettings.php:535
1923
- msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
1924
- msgstr ""
1925
-
1926
- #: adminpages/paymentsettings.php:546 adminpages/pagesettings.php:223
1927
- #: adminpages/advancedsettings.php:284
1928
- msgid "Save Settings"
1929
- msgstr ""
1930
-
1931
- #: adminpages/reports.php:37
1932
- msgid "Details"
1933
- msgstr ""
1934
-
1935
- #: adminpages/admin_header.php:25
1936
- msgid "Add a membership level to get started."
1937
- msgstr ""
1938
-
1939
- #: adminpages/admin_header.php:27
1940
- msgid "Setup the membership pages"
1941
- msgstr ""
1942
-
1943
- #: adminpages/admin_header.php:29
1944
- msgid "Setup your SSL certificate and payment gateway"
1945
- msgstr ""
1946
-
1947
- #: adminpages/admin_header.php:38
1948
- msgid ""
1949
- "The billing details for some of your membership levels is not supported by "
1950
- "Stripe."
1951
- msgstr ""
1952
-
1953
- #: adminpages/admin_header.php:46
1954
- msgid ""
1955
- "The billing details for this level are not supported by Stripe. Please "
1956
- "review the notes in the Billing Details section below."
1957
- msgstr ""
1958
-
1959
- #: adminpages/admin_header.php:50 adminpages/admin_header.php:70
1960
- #: adminpages/admin_header.php:90 adminpages/admin_header.php:111
1961
- msgid "The levels with issues are highlighted below."
1962
- msgstr ""
1963
-
1964
- #: adminpages/admin_header.php:52 adminpages/admin_header.php:72
1965
- #: adminpages/admin_header.php:92 adminpages/admin_header.php:113
1966
- msgid "Please edit your levels"
1967
- msgstr ""
1968
-
1969
- #: adminpages/admin_header.php:58
1970
- msgid ""
1971
- "The billing details for some of your membership levels is not supported by "
1972
- "Payflow."
1973
- msgstr ""
1974
-
1975
- #: adminpages/admin_header.php:66
1976
- msgid ""
1977
- "The billing details for this level are not supported by Payflow. Please "
1978
- "review the notes in the Billing Details section below."
1979
- msgstr ""
1980
-
1981
- #: adminpages/admin_header.php:78
1982
- msgid ""
1983
- "The billing details for some of your membership levels is not supported by "
1984
- "Braintree."
1985
- msgstr ""
1986
-
1987
- #: adminpages/admin_header.php:86
1988
- msgid ""
1989
- "The billing details for this level are not supported by Braintree. Please "
1990
- "review the notes in the Billing Details section below."
1991
- msgstr ""
1992
-
1993
- #: adminpages/admin_header.php:98
1994
- msgid ""
1995
- "The billing details for some of your membership levels is not supported by "
1996
- "TwoCheckout."
1997
- msgstr ""
1998
-
1999
- #: adminpages/admin_header.php:107
2000
- msgid ""
2001
- "The billing details for this level are not supported by 2Checkout. Please "
2002
- "review the notes in the Billing Details section below."
2003
- msgstr ""
2004
-
2005
- #: adminpages/admin_header.php:127
2006
- msgid "Plugin Support"
2007
- msgstr ""
2008
-
2009
- #: adminpages/admin_header.php:127
2010
- msgid "User Forum"
2011
- msgstr ""
2012
-
2013
- #: adminpages/admin_header.php:150 adminpages/pagesettings.php:92
2014
- msgid "Pages"
2015
- msgstr ""
2016
-
2017
- #: adminpages/admin_header.php:151
2018
- msgid "Payment Gateway &amp; SSL"
2019
- msgstr ""
2020
-
2021
- #: adminpages/admin_header.php:153
2022
- msgid "Advanced"
2023
- msgstr ""
2024
-
2025
- #: adminpages/pagesettings.php:83
2026
- msgid "The following pages have been created for you"
2027
- msgstr ""
2028
-
2029
- #: adminpages/pagesettings.php:98
2030
- msgid ""
2031
- "Manage the WordPress pages assigned to each required Paid Memberships Pro "
2032
- "page."
2033
- msgstr ""
2034
-
2035
- #: adminpages/pagesettings.php:104
2036
- msgid ""
2037
- "Assign the WordPress pages for each required Paid Memberships Pro page or"
2038
- msgstr ""
2039
-
2040
- #: adminpages/pagesettings.php:104
2041
- msgid "click here to let us generate them for you"
2042
- msgstr ""
2043
-
2044
- #: adminpages/pagesettings.php:112
2045
- msgid "Account Page"
2046
- msgstr ""
2047
-
2048
- #: adminpages/pagesettings.php:119 adminpages/pagesettings.php:134
2049
- #: adminpages/pagesettings.php:149 adminpages/pagesettings.php:165
2050
- #: adminpages/pagesettings.php:181 adminpages/pagesettings.php:197
2051
- #: adminpages/pagesettings.php:213
2052
- msgid "edit page"
2053
- msgstr ""
2054
-
2055
- #: adminpages/pagesettings.php:121 adminpages/pagesettings.php:136
2056
- #: adminpages/pagesettings.php:151 adminpages/pagesettings.php:167
2057
- #: adminpages/pagesettings.php:183 adminpages/pagesettings.php:199
2058
- #: adminpages/pagesettings.php:215
2059
- msgid "view page"
2060
- msgstr ""
2061
-
2062
- #: adminpages/pagesettings.php:123 adminpages/pagesettings.php:138
2063
- #: adminpages/pagesettings.php:153 adminpages/pagesettings.php:169
2064
- #: adminpages/pagesettings.php:185 adminpages/pagesettings.php:201
2065
- #: adminpages/pagesettings.php:217
2066
- msgid "Include the shortcode"
2067
- msgstr ""
2068
-
2069
- #: adminpages/pagesettings.php:127
2070
- msgid "Billing Information Page"
2071
- msgstr ""
2072
-
2073
- #: adminpages/pagesettings.php:142
2074
- msgid "Cancel Page"
2075
- msgstr ""
2076
-
2077
- #: adminpages/pagesettings.php:158
2078
- msgid "Checkout Page"
2079
- msgstr ""
2080
-
2081
- #: adminpages/pagesettings.php:174
2082
- msgid "Confirmation Page"
2083
- msgstr ""
2084
-
2085
- #: adminpages/pagesettings.php:190
2086
- msgid "Invoice Page"
2087
- msgstr ""
2088
-
2089
- #: adminpages/pagesettings.php:206
2090
- msgid "Levels Page"
2091
- msgstr ""
2092
-
2093
- #: adminpages/discountcodes.php:48
2094
- msgid "Discount code updated successfully."
2095
- msgstr ""
2096
-
2097
- #: adminpages/discountcodes.php:55
2098
- msgid "Error updating discount code. That code may already be in use."
2099
- msgstr ""
2100
-
2101
- #: adminpages/discountcodes.php:64
2102
- msgid "Discount code added successfully."
2103
- msgstr ""
2104
-
2105
- #: adminpages/discountcodes.php:71
2106
- msgid "Error adding discount code. That code may already be in use."
2107
- msgstr ""
2108
-
2109
- #: adminpages/discountcodes.php:196
2110
- #, php-format
2111
- msgid "Error saving values for the %s level."
2112
- msgstr ""
2113
-
2114
- #: adminpages/discountcodes.php:204
2115
- msgid "There were errors updating the level values: "
2116
- msgstr ""
2117
-
2118
- #: adminpages/discountcodes.php:234
2119
- #, php-format
2120
- msgid "Code %s deleted successfully."
2121
- msgstr ""
2122
-
2123
- #: adminpages/discountcodes.php:239
2124
- msgid ""
2125
- "Error deleting discount code. The code was only partially deleted. Please "
2126
- "try again."
2127
- msgstr ""
2128
-
2129
- #: adminpages/discountcodes.php:245
2130
- msgid "Error deleting code. Please try again."
2131
- msgstr ""
2132
-
2133
- #: adminpages/discountcodes.php:251
2134
- msgid "Code not found."
2135
- msgstr ""
2136
-
2137
- #: adminpages/discountcodes.php:264
2138
- msgid "Edit Discount Code"
2139
- msgstr ""
2140
-
2141
- #: adminpages/discountcodes.php:266 adminpages/discountcodes.php:526
2142
- msgid "Add New Discount Code"
2143
- msgstr ""
2144
-
2145
- #: adminpages/discountcodes.php:349
2146
- msgid "Start Date"
2147
- msgstr ""
2148
-
2149
- #: adminpages/discountcodes.php:385 adminpages/discountcodes.php:551
2150
- msgid "Uses"
2151
- msgstr ""
2152
-
2153
- #: adminpages/discountcodes.php:388
2154
- msgid "Leave blank for unlimited uses."
2155
- msgstr ""
2156
-
2157
- #: adminpages/discountcodes.php:437
2158
- msgid "Billing Ammount"
2159
- msgstr ""
2160
-
2161
- #: adminpages/discountcodes.php:525
2162
- msgid "Memberships Discount Codes"
2163
- msgstr ""
2164
-
2165
- #: adminpages/discountcodes.php:535
2166
- msgid "Search Discount Codes"
2167
- msgstr ""
2168
-
2169
- #: adminpages/discountcodes.php:538 adminpages/reports/login.php:81
2170
- msgid "Search"
2171
- msgstr ""
2172
-
2173
- #: adminpages/discountcodes.php:549
2174
- msgid "Starts"
2175
- msgstr ""
2176
-
2177
- #: adminpages/discountcodes.php:552
2178
- msgid "Levels"
2179
- msgstr ""
2180
-
2181
- #: adminpages/discountcodes.php:570
2182
- msgid ""
2183
- "Discount codes allow you to offer your memberships at discounted prices to "
2184
- "select customers."
2185
- msgstr ""
2186
-
2187
- #: adminpages/discountcodes.php:570
2188
- msgid "Create your first discount code now"
2189
- msgstr ""
2190
-
2191
- #: adminpages/discountcodes.php:617
2192
- #, php-format
2193
- msgid ""
2194
- "Are you sure you want to delete the %s discount code? The subscriptions for "
2195
- "existing users will not change, but new users will not be able to use this "
2196
- "code anymore."
2197
- msgstr ""
2198
-
2199
- #: adminpages/addons.php:79
2200
- msgid "Enabled"
2201
- msgstr ""
2202
-
2203
- #: adminpages/addons.php:79
2204
- msgid "Disabled"
2205
- msgstr ""
2206
-
2207
- #: adminpages/emailsettings.php:61
2208
- msgid ""
2209
- "By default, system generated emails are sent from "
2210
- "<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
2211
- "address using the fields below."
2212
- msgstr ""
2213
-
2214
- #: adminpages/emailsettings.php:63
2215
- msgid ""
2216
- "To modify the appearance of system generated emails, add the files "
2217
- "<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
2218
- "directory. This will modify both the WordPress default messages as well as "
2219
- "messages generated by Paid Memberships Pro. <a title=\"Paid Memberships Pro "
2220
- "- Member Communications\" target=\"_blank\" href=\"http://www."
2221
- "paidmembershipspro.com/documentation/member-communications/\">Click here to "
2222
- "learn more about Paid Memberships Pro emails</a>."
2223
- msgstr ""
2224
-
2225
- #: adminpages/emailsettings.php:69
2226
- msgid "From Email"
2227
- msgstr ""
2228
-
2229
- #: adminpages/emailsettings.php:77
2230
- msgid "From Name"
2231
- msgstr ""
2232
-
2233
- #: adminpages/emailsettings.php:86
2234
- msgid "Send the site admin emails"
2235
- msgstr ""
2236
-
2237
- #: adminpages/emailsettings.php:92
2238
- msgid "Checkout"
2239
- msgstr ""
2240
-
2241
- #: adminpages/emailsettings.php:96
2242
- msgid "when a member checks out."
2243
- msgstr ""
2244
-
2245
- #: adminpages/emailsettings.php:101
2246
- msgid "Admin Changes"
2247
- msgstr ""
2248
-
2249
- #: adminpages/emailsettings.php:105
2250
- msgid "when an admin changes a user's membership level through the dashboard."
2251
- msgstr ""
2252
-
2253
- #: adminpages/emailsettings.php:110
2254
- msgid "Cancellation"
2255
- msgstr ""
2256
-
2257
- #: adminpages/emailsettings.php:114
2258
- msgid "when a user cancels his or her account."
2259
- msgstr ""
2260
-
2261
- #: adminpages/emailsettings.php:119
2262
- msgid "Bill Updates"
2263
- msgstr ""
2264
-
2265
- #: adminpages/emailsettings.php:123
2266
- msgid "when a user updates his or her billing information."
2267
- msgstr ""
2268
-
2269
- #: adminpages/emailsettings.php:129
2270
- msgid "Send members emails"
2271
- msgstr ""
2272
-
2273
- #: adminpages/emailsettings.php:135
2274
- msgid "New Users"
2275
- msgstr ""
2276
-
2277
- #: adminpages/emailsettings.php:139
2278
- msgid ""
2279
- "Default WP notification email. (Recommended: Leave unchecked. Members will "
2280
- "still get an email confirmation from PMPro after checkout.)"
2281
- msgstr ""
2282
-
2283
- #: adminpages/advancedsettings.php:35
2284
- msgid "Your advanced settings have been updated."
2285
- msgstr ""
2286
-
2287
- #: adminpages/advancedsettings.php:85
2288
- msgid "Message for Logged-in Non-members"
2289
- msgstr ""
2290
-
2291
- #: adminpages/advancedsettings.php:89
2292
- msgid ""
2293
- "This message replaces the post content for non-members. Available variables"
2294
- msgstr ""
2295
-
2296
- #: adminpages/advancedsettings.php:94
2297
- msgid "Message for Logged-out Users"
2298
- msgstr ""
2299
-
2300
- #: adminpages/advancedsettings.php:98
2301
- msgid "This message replaces the post content for logged-out visitors."
2302
- msgstr ""
2303
-
2304
- #: adminpages/advancedsettings.php:103
2305
- msgid "Message for RSS Feed"
2306
- msgstr ""
2307
-
2308
- #: adminpages/advancedsettings.php:107
2309
- msgid "This message replaces the post content in RSS feeds."
2310
- msgstr ""
2311
-
2312
- #: adminpages/advancedsettings.php:113
2313
- msgid "Show Excerpts to Non-Members?"
2314
- msgstr ""
2315
-
2316
- #: adminpages/advancedsettings.php:117
2317
- msgid "No - Hide excerpts."
2318
- msgstr ""
2319
-
2320
- #: adminpages/advancedsettings.php:118
2321
- msgid "Yes - Show excerpts."
2322
- msgstr ""
2323
-
2324
- #: adminpages/advancedsettings.php:129
2325
- msgid "Hide Ads From All Members"
2326
- msgstr ""
2327
-
2328
- #: adminpages/advancedsettings.php:130
2329
- msgid "Hide Ads From Certain Members"
2330
- msgstr ""
2331
-
2332
- #: adminpages/advancedsettings.php:137
2333
- msgid "Ads from the following plugins will be automatically turned off"
2334
- msgstr ""
2335
-
2336
- #: adminpages/advancedsettings.php:138
2337
- msgid "To hide ads in your template code, use code like the following"
2338
- msgstr ""
2339
-
2340
- #: adminpages/advancedsettings.php:149
2341
- msgid "Choose Levels to Hide Ads From"
2342
- msgstr ""
2343
-
2344
- #: adminpages/advancedsettings.php:183
2345
- msgid "Redirect all traffic from registration page to /susbcription/?"
2346
- msgstr ""
2347
-
2348
- #: adminpages/advancedsettings.php:183
2349
- msgid "multisite only"
2350
- msgstr ""
2351
-
2352
- #: adminpages/advancedsettings.php:195
2353
- msgid "Use reCAPTCHA?"
2354
- msgstr ""
2355
-
2356
- #: adminpages/advancedsettings.php:200
2357
- msgid "Yes - Free memberships only."
2358
- msgstr ""
2359
-
2360
- #: adminpages/advancedsettings.php:201
2361
- msgid "Yes - All memberships."
2362
- msgstr ""
2363
-
2364
- #: adminpages/advancedsettings.php:203
2365
- msgid "A free reCAPTCHA key is required."
2366
- msgstr ""
2367
-
2368
- #: adminpages/advancedsettings.php:203
2369
- msgid "Click here to signup for reCAPTCHA"
2370
- msgstr ""
2371
-
2372
- #: adminpages/advancedsettings.php:209
2373
- msgid "reCAPTCHA Public Key"
2374
- msgstr ""
2375
-
2376
- #: adminpages/advancedsettings.php:212
2377
- msgid "reCAPTCHA Private Key"
2378
- msgstr ""
2379
-
2380
- #: adminpages/advancedsettings.php:218
2381
- msgid "Require Terms of Service on signups?"
2382
- msgstr ""
2383
-
2384
- #: adminpages/advancedsettings.php:225
2385
- msgid ""
2386
- "If yes, create a WordPress page containing your TOS agreement and assign it "
2387
- "using the dropdown above."
2388
- msgstr ""
2389
-
2390
- #: adminpages/reports/memberships.php:18
2391
- #: adminpages/reports/memberships.php:288
2392
- msgid "Membership Stats"
2393
- msgstr ""
2394
-
2395
- #: adminpages/reports/memberships.php:294 adminpages/reports/sales.php:195
2396
- msgid "Daily"
2397
- msgstr ""
2398
-
2399
- #: adminpages/reports/memberships.php:295 adminpages/reports/sales.php:196
2400
- msgid "Monthly"
2401
- msgstr ""
2402
-
2403
- #: adminpages/reports/memberships.php:296 adminpages/reports/sales.php:197
2404
- msgid "Annual"
2405
- msgstr ""
2406
-
2407
- #: adminpages/reports/memberships.php:299
2408
- msgid "Signups vs. Cancellations"
2409
- msgstr ""
2410
-
2411
- #: adminpages/reports/memberships.php:331 adminpages/reports/sales.php:230
2412
- msgid "Generate Report"
2413
- msgstr ""
2414
-
2415
- #: adminpages/reports/login.php:16
2416
- msgid "Visits, Views, and Logins"
2417
- msgstr ""
2418
-
2419
- #: adminpages/reports/login.php:26
2420
- msgid "Visits Today"
2421
- msgstr ""
2422
-
2423
- #: adminpages/reports/login.php:27 adminpages/reports/login.php:147
2424
- msgid "Visits This Month"
2425
- msgstr ""
2426
-
2427
- #: adminpages/reports/login.php:28
2428
- msgid "Visits All Time"
2429
- msgstr ""
2430
-
2431
- #: adminpages/reports/login.php:31
2432
- msgid "Views Today"
2433
- msgstr ""
2434
-
2435
- #: adminpages/reports/login.php:32 adminpages/reports/login.php:149
2436
- msgid "Views This Month"
2437
- msgstr ""
2438
-
2439
- #: adminpages/reports/login.php:33
2440
- msgid "Views All Time"
2441
- msgstr ""
2442
-
2443
- #: adminpages/reports/login.php:36
2444
- msgid "Logins Today"
2445
- msgstr ""
2446
-
2447
- #: adminpages/reports/login.php:37 adminpages/reports/login.php:152
2448
- msgid "Logins This Month"
2449
- msgstr ""
2450
-
2451
- #: adminpages/reports/login.php:38
2452
- msgid "Logins All Time"
2453
- msgstr ""
2454
-
2455
- #: adminpages/reports/login.php:61
2456
- msgid "Visits, Views, and Logins Report"
2457
- msgstr ""
2458
-
2459
- #: adminpages/reports/login.php:66
2460
- msgid "All Users"
2461
- msgstr ""
2462
-
2463
- #: adminpages/reports/login.php:146
2464
- msgid "Last Visit"
2465
- msgstr ""
2466
-
2467
- #: adminpages/reports/login.php:148
2468
- msgid "Total Visits"
2469
- msgstr ""
2470
-
2471
- #: adminpages/reports/login.php:150
2472
- msgid "Total Views"
2473
- msgstr ""
2474
-
2475
- #: adminpages/reports/login.php:151
2476
- msgid "Last Login"
2477
- msgstr ""
2478
-
2479
- #: adminpages/reports/login.php:153
2480
- msgid "Total Logins"
2481
- msgstr ""
2482
-
2483
- #: adminpages/reports/sales.php:18
2484
- msgid "Sales and Revenue (Testing/Sandbox)"
2485
- msgstr ""
2486
-
2487
- #: adminpages/reports/sales.php:20 adminpages/reports/sales.php:189
2488
- msgid "Sales and Revenue"
2489
- msgstr ""
2490
-
2491
- #: adminpages/reports/sales.php:200
2492
- msgid "Revenue"
2493
- msgstr ""
2494
-
2495
- #: adminpages/reports/sales.php:201
2496
- msgid "Sales"
2497
- msgstr ""
2498
-
2499
- #: scheduled/crons.php:31
2500
- #, php-format
2501
- msgid "Membership expired email sent to %s. "
2502
- msgstr ""
2503
-
2504
- #: scheduled/crons.php:384 scheduled/crons.php:440
2505
- #, php-format
2506
- msgid "Membership expiring email sent to %s. "
2507
- msgstr ""
2508
-
2509
- #: scheduled/crons.php:509
2510
- #, php-format
2511
- msgid "Credit card expiring email sent to %s. "
2512
- msgstr ""
2513
-
2514
- #: scheduled/crons.php:562
2515
- #, php-format
2516
- msgid "Trial ending email sent to %s. "
2517
- msgstr ""
2518
-
2519
- #: services/stripe-webhook.php:176
2520
- #, php-format
2521
- msgid ""
2522
- "%s has had their payment subscription cancelled by Stripe. Please check that "
2523
- "this user's membership is cancelled on your site if it should be."
2524
- msgstr ""
2525
-
2526
- #: services/authnet-silent-post.php:133
2527
- msgid ""
2528
- "<p>A payment is being held for review within Authorize.net.</p><p>Payment "
2529
- "Information From Authorize.net"
2530
- msgstr ""
2531
-
2532
- #: services/applydiscountcode.php:64
2533
- #, php-format
2534
- msgid "The %s code has been applied to your order. "
2535
- msgstr ""
2536
-
2537
- #: services/applydiscountcode.php:83
2538
- #, php-format
2539
- msgid "The <strong>%s</strong> code has been applied to your order."
2540
- msgstr ""
2541
-
2542
- #: preheaders/account.php:7 preheaders/levels.php:19
2543
- msgid "Your membership status has been updated - Thank you!"
2544
- msgstr ""
2545
-
2546
- #: preheaders/account.php:11 preheaders/levels.php:23
2547
- msgid ""
2548
- "Sorry, your request could not be completed - please try again in a few "
2549
- "moments."
2550
- msgstr ""
2551
-
2552
- #: preheaders/checkout.php:28 preheaders/checkout.php:509
2553
- msgid "Invalid gateway."
2554
- msgstr ""
2555
-
2556
- #: preheaders/checkout.php:96
2557
- msgid "Checkout: Payment Information"
2558
- msgstr ""
2559
-
2560
- #: preheaders/checkout.php:109
2561
- msgid "Setup Your Account"
2562
- msgstr ""
2563
-
2564
- #: preheaders/checkout.php:482 preheaders/billing.php:258
2565
- msgid "Please complete all required fields."
2566
- msgstr ""
2567
-
2568
- #: preheaders/checkout.php:486
2569
- msgid "Your passwords do not match. Please try again."
2570
- msgstr ""
2571
-
2572
- #: preheaders/checkout.php:492 preheaders/billing.php:263
2573
- msgid "Your email addresses do not match. Please try again."
2574
- msgstr ""
2575
-
2576
- #: preheaders/checkout.php:498 preheaders/billing.php:268
2577
- msgid "The email address entered is in an invalid format. Please try again."
2578
- msgstr ""
2579
-
2580
- #: preheaders/checkout.php:504
2581
- #, php-format
2582
- msgid "Please check the box to agree to the %s."
2583
- msgstr ""
2584
-
2585
- #: preheaders/checkout.php:513
2586
- msgid "Are you a spammer?"
2587
- msgstr ""
2588
-
2589
- #: preheaders/checkout.php:536
2590
- msgid "That username is already taken. Please try another."
2591
- msgstr ""
2592
-
2593
- #: preheaders/checkout.php:542
2594
- msgid "That email address is already taken. Please try another."
2595
- msgstr ""
2596
-
2597
- #: preheaders/checkout.php:562
2598
- #, php-format
2599
- msgid "reCAPTCHA failed. (%s) Please try again."
2600
- msgstr ""
2601
-
2602
- #: preheaders/checkout.php:702
2603
- msgid "Payment accepted."
2604
- msgstr ""
2605
-
2606
- #: preheaders/checkout.php:710
2607
- msgid ""
2608
- "Unknown error generating account. Please contact us to setup your membership."
2609
- msgstr ""
2610
-
2611
- #: preheaders/checkout.php:754 preheaders/checkout.php:823
2612
- msgid "The PayPal Token was lost."
2613
- msgstr ""
2614
-
2615
- #: preheaders/checkout.php:860
2616
- msgid ""
2617
- "Your payment was accepted, but there was an error setting up your account. "
2618
- "Please contact us."
2619
- msgstr ""
2620
-
2621
- #: preheaders/checkout.php:1046
2622
- msgid ""
2623
- "IMPORTANT: Something went wrong during membership creation. Your credit card "
2624
- "authorized, but we cancelled the order immediately. You should not try to "
2625
- "submit this form again. Please contact the site owner to fix this issue."
2626
- msgstr ""
2627
-
2628
- #: preheaders/checkout.php:1051
2629
- msgid ""
2630
- "IMPORTANT: Something went wrong during membership creation. Your credit card "
2631
- "was charged, but we couldn't assign your membership. You should not submit "
2632
- "this form again. Please contact the site owner to fix this issue."
2633
- msgstr ""
2634
-
2635
- #: preheaders/checkout.php:1064
2636
- #, php-format
2637
- msgid ""
2638
- "You must <a href=\"%s\">setup a Payment Gateway</a> before any payments will "
2639
- "be processed."
2640
- msgstr ""
2641
-
2642
- #: preheaders/checkout.php:1066
2643
- msgid "A Payment Gateway must be setup before any payments will be processed."
2644
- msgstr ""
2645
-
2646
- #: preheaders/cancel.php:24
2647
- msgid "Your membership has been cancelled."
2648
- msgstr ""
2649
-
2650
- #: preheaders/billing.php:274
2651
- msgid "All good!"
2652
- msgstr ""
2653
-
2654
- #: preheaders/billing.php:340
2655
- #, php-format
2656
- msgid "Information updated. <a href=\"%s\">&laquo; back to my account</a>"
2657
- msgstr ""
2658
-
2659
- #: preheaders/billing.php:347
2660
- msgid "Error updating billing information."
2661
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/pmpro-es_CL.mo DELETED
Binary file
languages/pmpro-es_CL.po DELETED
@@ -1,2662 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: pmpro\n"
4
- "POT-Creation-Date: 2013-08-01 05:01-0500\n"
5
- "PO-Revision-Date: 2013-08-22 03:37-0800\n"
6
- "Last-Translator: \n"
7
- "Language-Team: Stranger Studios <jason@strangerstudios.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.7\n"
12
- "X-Poedit-KeywordsList: __;_;_e;_ex;_x;_n\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "X-Poedit-SearchPath-0: includes\n"
15
- "X-Poedit-SearchPath-1: .\n"
16
- "X-Poedit-SearchPath-2: classes\n"
17
- "X-Poedit-SearchPath-3: preheaders\n"
18
- "X-Poedit-SearchPath-4: pages\n"
19
- "X-Poedit-SearchPath-5: adminpages\n"
20
- "X-Poedit-SearchPath-6: classes/gateways\n"
21
- "X-Poedit-SearchPath-7: services\n"
22
- "X-Poedit-SearchPath-8: shortcodes\n"
23
- "X-Poedit-SearchPath-9: scheduled\n"
24
-
25
- #: includes/adminpages.php:9 includes/adminpages.php:39
26
- msgid "Memberships"
27
- msgstr "Membresía"
28
-
29
- #: includes/adminpages.php:10 includes/adminpages.php:49
30
- msgid "Page Settings"
31
- msgstr "Ajustes de Página"
32
-
33
- #: includes/adminpages.php:11 includes/adminpages.php:54
34
- msgid "Payment Settings"
35
- msgstr "Ajustes de Facturación"
36
-
37
- #: includes/adminpages.php:12 includes/adminpages.php:59
38
- #: adminpages/emailsettings.php:60
39
- msgid "Email Settings"
40
- msgstr "Ajustes de Email"
41
-
42
- #: includes/adminpages.php:13 includes/adminpages.php:64
43
- #: adminpages/advancedsettings.php:79
44
- msgid "Advanced Settings"
45
- msgstr "Opciones Avanzadas"
46
-
47
- #: includes/adminpages.php:14 includes/adminpages.php:69
48
- #: adminpages/admin_header.php:133
49
- msgid "Add Ons"
50
- msgstr "Add Ons"
51
-
52
- #: includes/adminpages.php:15 includes/adminpages.php:74
53
- #: adminpages/memberslist.php:25
54
- msgid "Members List"
55
- msgstr "Lista de Miembros"
56
-
57
- #: includes/adminpages.php:16 includes/adminpages.php:79
58
- msgid "Reports"
59
- msgstr "Informes"
60
-
61
- #: includes/adminpages.php:17 includes/adminpages.php:84
62
- #: adminpages/orders.php:520
63
- msgid "Orders"
64
- msgstr "Órdenes"
65
-
66
- #: includes/adminpages.php:18 includes/adminpages.php:89
67
- msgid "Discount Codes"
68
- msgstr "Códigos de Descuento"
69
-
70
- #: includes/adminpages.php:44 adminpages/admin_header.php:128
71
- #: adminpages/membershiplevels.php:490
72
- msgid "Membership Levels"
73
- msgstr "Niveles de Membresía"
74
-
75
- #: includes/cleanup.php:24
76
- #, php-format
77
- msgid ""
78
- "There was an error canceling the subscription for user with ID=%s. You will "
79
- "want to check your payment gateway to see if their subscription is still "
80
- "active."
81
- msgstr ""
82
- "Hubo un error cancelando la subscripcion para el usuario con ID=%s. Deberías "
83
- "comprobar tu procesamiento de pagos (payment gateway) y ver si tu "
84
- "suscripción sigue activa."
85
-
86
- #: includes/currencies.php:7 includes/currencies.php:37
87
- msgid "US Dollars (&#36;)"
88
- msgstr "Dólares (&#36;)"
89
-
90
- #: includes/currencies.php:8 includes/currencies.php:40
91
- msgid "Euros (&euro;)"
92
- msgstr "Euros (&euro;)"
93
-
94
- #: includes/currencies.php:9 includes/currencies.php:39
95
- msgid "Pounds Sterling (&pound;)"
96
- msgstr "Libras Esterlinas (&pound;)"
97
-
98
- #: includes/currencies.php:10
99
- msgid "Australian Dollars (&#36;)"
100
- msgstr "Dólares Australianos (&#36;)"
101
-
102
- #: includes/currencies.php:11
103
- msgid "Brazilian Real (&#36;)"
104
- msgstr "Reales Brasileños (&#36;)"
105
-
106
- #: includes/currencies.php:12 includes/currencies.php:38
107
- msgid "Canadian Dollars (&#36;)"
108
- msgstr "Dólares Canadienses (&#36;)"
109
-
110
- #: includes/currencies.php:13
111
- msgid "Czech Koruna"
112
- msgstr "Corona Checa"
113
-
114
- #: includes/currencies.php:14
115
- msgid "Danish Krone"
116
- msgstr "Corona Danesa"
117
-
118
- #: includes/currencies.php:15
119
- msgid "Hong Kong Dollar (&#36;)"
120
- msgstr "Dolares de Hong Kong (&#36;)"
121
-
122
- #: includes/currencies.php:16
123
- msgid "Hungarian Forint"
124
- msgstr "Florín húngaro"
125
-
126
- #: includes/currencies.php:17
127
- msgid "Israeli Shekel"
128
- msgstr "Nuevo shéquel"
129
-
130
- #: includes/currencies.php:18
131
- msgid "Japanese Yen (&yen;)"
132
- msgstr "Yen japonés (&yen;)"
133
-
134
- #: includes/currencies.php:19
135
- msgid "Malaysian Ringgits"
136
- msgstr "Ringgit (dólar malayo)"
137
-
138
- #: includes/currencies.php:20
139
- msgid "Mexican Peso (&#36;)"
140
- msgstr "Peso mejicano (&#36;)"
141
-
142
- #: includes/currencies.php:21
143
- msgid "New Zealand Dollar (&#36;)"
144
- msgstr "dólar neozelandés (&#36;)"
145
-
146
- #: includes/currencies.php:22
147
- msgid "Norwegian Krone"
148
- msgstr "Corona noruega"
149
-
150
- #: includes/currencies.php:23
151
- msgid "Philippine Pesos"
152
- msgstr "Peso filipino"
153
-
154
- #: includes/currencies.php:24
155
- msgid "Polish Zloty"
156
- msgstr "esloti polaco"
157
-
158
- #: includes/currencies.php:25
159
- msgid "Singapore Dollar (&#36;)"
160
- msgstr "Dólar de Singapur (&#36;)"
161
-
162
- #: includes/currencies.php:26
163
- msgid "Swedish Krona"
164
- msgstr "Corona Sueca"
165
-
166
- #: includes/currencies.php:27
167
- msgid "Swiss Franc"
168
- msgstr "Franco Suizo"
169
-
170
- #: includes/currencies.php:28
171
- msgid "Taiwan New Dollars"
172
- msgstr "Nuevo dólar taiwanés"
173
-
174
- #: includes/currencies.php:29
175
- msgid "Thai Baht"
176
- msgstr "baht tailandés"
177
-
178
- #: includes/functions.php:160
179
- #, php-format
180
- msgid "The price for membership is <strong>%s</strong> now"
181
- msgstr "El precio por la membresía es <strong>%s</strong> ahora"
182
-
183
- #: includes/functions.php:169
184
- #, php-format
185
- msgid " and then <strong>%s per %s for %d more %s</strong>."
186
- msgstr "y después <strong>%s por %s durante %d %s mas </strong>."
187
-
188
- #: includes/functions.php:173
189
- #, php-format
190
- msgid " and then <strong>%s every %d %s for %d more %s</strong>."
191
- msgstr "y después <strong>%s cada %d %s por %d durante %s más </strong>."
192
-
193
- #: includes/functions.php:178
194
- #, php-format
195
- msgid " and then <strong>%s after %d %s</strong>."
196
- msgstr "y luego <strong>%s después %d %s</strong>."
197
-
198
- #: includes/functions.php:184
199
- #, php-format
200
- msgid " and then <strong>%s per %s</strong>."
201
- msgstr "y despues <strong>%s por %s</strong>."
202
-
203
- #: includes/functions.php:188
204
- #, php-format
205
- msgid " and then <strong>%s every %d %s</strong>."
206
- msgstr "y después <strong>%s cada %d %s</strong>."
207
-
208
- #: includes/functions.php:202 pages/levels.php:82
209
- msgid "After your initial payment, your first payment is Free."
210
- msgstr "Despues de tu pago inicial, tu primera cuota no tiene coste."
211
-
212
- #: includes/functions.php:206 pages/levels.php:86
213
- #, php-format
214
- msgid "After your initial payment, your first %d payments are Free."
215
- msgstr "Despues de tu pago inicial, tus primeras %d cuotas no tienen coste."
216
-
217
- #: includes/functions.php:213 pages/levels.php:93
218
- #, php-format
219
- msgid "After your initial payment, your first payment will cost %s."
220
- msgstr "Despues de tu pago inicial, tu primera cuota costará %s."
221
-
222
- #: includes/functions.php:217 pages/levels.php:97
223
- #, php-format
224
- msgid "After your initial payment, your first %d payments will cost %s."
225
- msgstr "Despues de tu pago inicial, tus primeras %d cuotas costarán %s."
226
-
227
- #: includes/functions.php:228
228
- #, php-format
229
- msgid "Customers in %s will be charged %s%% tax."
230
- msgstr "A los clientes en %s se les cobrará %s%% de impuestos."
231
-
232
- #: includes/functions.php:242
233
- #, php-format
234
- msgid "Membership expires after %d %s."
235
- msgstr "La membresía expira despues de %d %s."
236
-
237
- #: includes/functions.php:491
238
- msgid "User ID not found."
239
- msgstr "ID de usuario no encontrado."
240
-
241
- #: includes/functions.php:508
242
- msgid "Invalid level."
243
- msgstr "Nivel inválido."
244
-
245
- #: includes/functions.php:520
246
- msgid "not changing?"
247
- msgstr "Sin cambios?"
248
-
249
- #: includes/functions.php:537 includes/functions.php:583
250
- #: includes/functions.php:592
251
- msgid "Error interacting with database"
252
- msgstr "Error interactuando con la base de datos"
253
-
254
- #: includes/functions.php:629 includes/functions.php:668
255
- msgid "Membership level not found."
256
- msgstr "Nivel de membresía no encontrado."
257
-
258
- #: includes/functions.php:1050
259
- msgid "The discount code could not be found."
260
- msgstr "El cupón de descuento no se ha podido encontrar."
261
-
262
- #: includes/functions.php:1066
263
- #, php-format
264
- msgid "This discount code goes into effect on %s."
265
- msgstr "El cupón de descuento entra en efecto en %s."
266
-
267
- #: includes/functions.php:1075
268
- #, php-format
269
- msgid "This discount code expired on %s."
270
- msgstr "El cupón de descuento expiró en %s."
271
-
272
- #: includes/functions.php:1087
273
- msgid "This discount code is no longer valid."
274
- msgstr "Éste cupón de descuento ya no es válido."
275
-
276
- #: includes/functions.php:1102
277
- msgid "This discount code does not apply to this membership level."
278
- msgstr "Este cupón de descuento no se puede aplicar a este nivel de membresía."
279
-
280
- #: includes/functions.php:1110
281
- msgid "This discount code is okay."
282
- msgstr "El cupón de descuento es válido."
283
-
284
- #: includes/functions.php:1134
285
- msgid "and"
286
- msgstr "y"
287
-
288
- #: includes/functions.php:1319
289
- msgid "Sign Up for !!name!! Now"
290
- msgstr "Date de alta en !!name!! ya"
291
-
292
- #: includes/functions.php:1325
293
- msgid "Please specify a level id."
294
- msgstr "Por favor especifica un id de nivel."
295
-
296
- #: includes/localization.php:23
297
- msgid "Day"
298
- msgstr "Día"
299
-
300
- #: includes/localization.php:25
301
- msgid "Week"
302
- msgstr "Semana"
303
-
304
- #: includes/localization.php:27
305
- msgid "Month"
306
- msgstr "Mes"
307
-
308
- #: includes/localization.php:29
309
- msgid "Year"
310
- msgstr "Año"
311
-
312
- #: includes/metaboxes.php:38
313
- msgid ""
314
- "This post is already protected for this level because it is within a "
315
- "category that requires membership."
316
- msgstr ""
317
- "Esta entrada ya esta protegida para este nivel por que pertenece a una "
318
- "categoría que requiere membresía."
319
-
320
- #: includes/metaboxes.php:99 includes/metaboxes.php:100
321
- msgid "Require Membership"
322
- msgstr "Requerir membresía"
323
-
324
- #: includes/profile.php:25 adminpages/orders.php:601 pages/checkout.php:34
325
- #: pages/confirmation.php:46 pages/confirmation.php:62
326
- #: pages/confirmation.php:103 pages/invoice.php:27 pages/invoice.php:49
327
- msgid "Membership Level"
328
- msgstr "Nivel de membresía"
329
-
330
- #: includes/profile.php:34
331
- msgid "Current Level"
332
- msgstr "Nivel actual"
333
-
334
- #: includes/profile.php:37
335
- msgid "None"
336
- msgstr "Ninguno"
337
-
338
- #: includes/profile.php:82
339
- msgid "User is not paying."
340
- msgstr "El usuario no paga."
341
-
342
- #: includes/profile.php:118 adminpages/discountcodes.php:550
343
- #: adminpages/memberslist.php:121 adminpages/reports/login.php:145
344
- msgid "Expires"
345
- msgstr "Expira"
346
-
347
- #: includes/profile.php:121 adminpages/advancedsettings.php:128
348
- #: adminpages/advancedsettings.php:187 adminpages/advancedsettings.php:199
349
- #: adminpages/membershiplevels.php:563 adminpages/paymentsettings.php:414
350
- msgid "No"
351
- msgstr "No"
352
-
353
- #: includes/profile.php:122 adminpages/advancedsettings.php:188
354
- #: adminpages/membershiplevels.php:563 adminpages/paymentsettings.php:415
355
- #: adminpages/paymentsettings.php:424
356
- msgid "Yes"
357
- msgstr "Si"
358
-
359
- #: adminpages/addons.php:5 adminpages/advancedsettings.php:5
360
- #: adminpages/discountcodes.php:5 adminpages/emailsettings.php:5
361
- #: adminpages/membershiplevels.php:5 adminpages/memberslist-csv.php:5
362
- #: adminpages/memberslist.php:5 adminpages/orders-csv.php:5
363
- #: adminpages/orders.php:5 adminpages/pagesettings.php:5
364
- #: adminpages/paymentsettings.php:5
365
- msgid "You do not have permissions to perform this action."
366
- msgstr "No tienes permisos para realizar esta acción."
367
-
368
- #: adminpages/addons.php:79
369
- msgid "Enabled"
370
- msgstr "Activado"
371
-
372
- #: adminpages/addons.php:79
373
- msgid "Disabled"
374
- msgstr "Desactivado"
375
-
376
- #: adminpages/admin_header.php:25
377
- msgid "Add a membership level to get started."
378
- msgstr "Añade un nivel de membresía para comenzar."
379
-
380
- #: adminpages/admin_header.php:27
381
- msgid "Setup the membership pages"
382
- msgstr "Configura las paginas de membresía"
383
-
384
- #: adminpages/admin_header.php:29
385
- msgid "Setup your SSL certificate and payment gateway"
386
- msgstr "Configura tu certificado SSL y tu pasarela de pagos"
387
-
388
- #: adminpages/admin_header.php:38
389
- msgid ""
390
- "The billing details for some of your membership levels is not supported by "
391
- "Stripe."
392
- msgstr ""
393
- "Los detalles de facturación para alguna de tus niveles de membresía no esta "
394
- "soportado por Stripe."
395
-
396
- #: adminpages/admin_header.php:46
397
- msgid ""
398
- "The billing details for this level are not supported by Stripe. Please "
399
- "review the notes in the Billing Details section below."
400
- msgstr ""
401
- "Los detalles de facturación para este nivel no estan soportados por Stripe. "
402
- "Por favor revisa las notas en la sección Detalles de Facturación aqui debajo."
403
-
404
- #: adminpages/admin_header.php:50 adminpages/admin_header.php:70
405
- #: adminpages/admin_header.php:90
406
- msgid "The levels with issues are highlighted below."
407
- msgstr "Los niveles con problemas estan restaltados abajo."
408
-
409
- #: adminpages/admin_header.php:52 adminpages/admin_header.php:72
410
- #: adminpages/admin_header.php:92
411
- msgid "Please edit your levels"
412
- msgstr "Por favor edita tus niveles"
413
-
414
- #: adminpages/admin_header.php:58
415
- msgid ""
416
- "The billing details for some of your membership levels is not supported by "
417
- "Payflow."
418
- msgstr ""
419
- "Los detalles de facturación de tus niveles de membresa no estan soportados "
420
- "por Payflow."
421
-
422
- #: adminpages/admin_header.php:66
423
- msgid ""
424
- "The billing details for this level are not supported by Payflow. Please "
425
- "review the notes in the Billing Details section below."
426
- msgstr ""
427
- "Los detalles de facturación para este nivel no estan soportados por Payflow. "
428
- "Por favor revisa las notas en la sección de detalles de facturación abajo."
429
-
430
- #: adminpages/admin_header.php:78
431
- msgid ""
432
- "The billing details for some of your membership levels is not supported by "
433
- "Braintree."
434
- msgstr ""
435
- "Los detalles de facturación para alguno de tus niveles de membresía no estan "
436
- "soportados por Braintree."
437
-
438
- #: adminpages/admin_header.php:86
439
- msgid ""
440
- "The billing details for this level are not supported by Braintree. Please "
441
- "review the notes in the Billing Details section below."
442
- msgstr ""
443
- "Los detalles de facturación para este nivel no estan soportados por "
444
- "Braintree. Por favor revisa las notas en la sección de detalles de "
445
- "facturación abajo."
446
-
447
- #: adminpages/admin_header.php:106
448
- msgid "Plugin Support"
449
- msgstr "Soporte del Plugin"
450
-
451
- #: adminpages/admin_header.php:106
452
- msgid "User Forum"
453
- msgstr "Foro de usuarios"
454
-
455
- #: adminpages/admin_header.php:129 adminpages/pagesettings.php:92
456
- msgid "Pages"
457
- msgstr "Páginas"
458
-
459
- #: adminpages/admin_header.php:130
460
- msgid "Payment Gateway &amp; SSL"
461
- msgstr "Pasarela de pagos &amp; SSL"
462
-
463
- #: adminpages/admin_header.php:131 adminpages/memberslist.php:115
464
- #: pages/account.php:52
465
- msgid "Email"
466
- msgstr "Email"
467
-
468
- #: adminpages/admin_header.php:132
469
- msgid "Advanced"
470
- msgstr "Avanzado"
471
-
472
- #: adminpages/advancedsettings.php:35
473
- msgid "Your advanced settings have been updated."
474
- msgstr "Tus opciones avanzadas han sido actualizadas."
475
-
476
- #: adminpages/advancedsettings.php:85
477
- msgid "Message for Logged-in Non-members"
478
- msgstr "Mensaje para no-miembros logeados"
479
-
480
- #: adminpages/advancedsettings.php:89
481
- msgid ""
482
- "This message replaces the post content for non-members. Available variables"
483
- msgstr ""
484
- "Este mensaje reemplaza el contenido de la entrada para no-miembros. "
485
- "Variables disponibles"
486
-
487
- #: adminpages/advancedsettings.php:94
488
- msgid "Message for Logged-out Users"
489
- msgstr "Mensaje para usuarios desconectados (deslogeados)"
490
-
491
- #: adminpages/advancedsettings.php:98
492
- msgid "This message replaces the post content for logged-out visitors."
493
- msgstr ""
494
- "Este mensaje reemplaza el contenido de la entrada para visitantes no logeados"
495
-
496
- #: adminpages/advancedsettings.php:103
497
- msgid "Message for RSS Feed"
498
- msgstr "Mensaje para Feed RSS"
499
-
500
- #: adminpages/advancedsettings.php:107
501
- msgid "This message replaces the post content in RSS feeds."
502
- msgstr "Este mensaje reemplaza el contenido de la entrada en los feeds RSS"
503
-
504
- #: adminpages/advancedsettings.php:113
505
- msgid "Show Excerpts to Non-Members?"
506
- msgstr "Mostrar Extracto a no miembros?"
507
-
508
- #: adminpages/advancedsettings.php:117
509
- msgid "No - Hide excerpts."
510
- msgstr "No - Esconder Extracto."
511
-
512
- #: adminpages/advancedsettings.php:118
513
- msgid "Yes - Show excerpts."
514
- msgstr "Si - Mostrar Extracto."
515
-
516
- #: adminpages/advancedsettings.php:129
517
- msgid "Hide Ads From All Members"
518
- msgstr "Esconder anuncios para todos los miembros"
519
-
520
- #: adminpages/advancedsettings.php:130
521
- msgid "Hide Ads From Certain Members"
522
- msgstr "Esconder anuncios para ciertos miembros"
523
-
524
- #: adminpages/advancedsettings.php:137
525
- msgid "Ads from the following plugins will be automatically turned off"
526
- msgstr "Anuncios de los siguientes plugins serán automaticamente desactivados"
527
-
528
- #: adminpages/advancedsettings.php:138
529
- msgid "To hide ads in your template code, use code like the following"
530
- msgstr ""
531
- "Para esconder anuncios en el código de tus plantillas, usa codigo como el "
532
- "siguiente"
533
-
534
- #: adminpages/advancedsettings.php:149
535
- msgid "Choose Levels to Hide Ads From"
536
- msgstr "Elige niveles para los cuales esconder anuncios"
537
-
538
- #: adminpages/advancedsettings.php:183
539
- msgid "Redirect all traffic from registration page to /susbcription/?"
540
- msgstr "Redirigir todo el tráfico de la página de registro a /subscription/?"
541
-
542
- #: adminpages/advancedsettings.php:183
543
- msgid "multisite only"
544
- msgstr "Solo multisitio"
545
-
546
- #: adminpages/advancedsettings.php:195
547
- msgid "Use reCAPTCHA?"
548
- msgstr "Usar reCAPTCHA?"
549
-
550
- #: adminpages/advancedsettings.php:200
551
- msgid "Yes - Free memberships only."
552
- msgstr "Si - Solo membresías gratuitas."
553
-
554
- #: adminpages/advancedsettings.php:201
555
- msgid "Yes - All memberships."
556
- msgstr "Si - Todas las membresías."
557
-
558
- #: adminpages/advancedsettings.php:203
559
- msgid "A free reCAPTCHA key is required."
560
- msgstr "Una clave gratuita de reCAPTCHA es necesaria."
561
-
562
- #: adminpages/advancedsettings.php:203
563
- msgid "Click here to signup for reCAPTCHA"
564
- msgstr "Haz click aquí para registrarte en reCAPTCHA"
565
-
566
- #: adminpages/advancedsettings.php:209
567
- msgid "reCAPTCHA Public Key"
568
- msgstr "Clave pública reCAPTCHA"
569
-
570
- #: adminpages/advancedsettings.php:212
571
- msgid "reCAPTCHA Private Key"
572
- msgstr "Clave privada reCAPTCHA"
573
-
574
- #: adminpages/advancedsettings.php:218
575
- msgid "Require Terms of Service on signups?"
576
- msgstr "Requerir términos de servicio durante el registro?"
577
-
578
- #: adminpages/advancedsettings.php:225
579
- msgid ""
580
- "If yes, create a WordPress page containing your TOS agreement and assign it "
581
- "using the dropdown above."
582
- msgstr ""
583
- "En caso positivo, crear una página WordPress que contiene tus términos de "
584
- "servicio y asignala usando el desplegable superior."
585
-
586
- #: adminpages/advancedsettings.php:284 adminpages/pagesettings.php:209
587
- #: adminpages/paymentsettings.php:485
588
- msgid "Save Settings"
589
- msgstr "Guardar opciones"
590
-
591
- #: adminpages/discountcodes.php:48
592
- msgid "Discount code updated successfully."
593
- msgstr "Cupón de descuento actualizado correctamente."
594
-
595
- #: adminpages/discountcodes.php:55
596
- msgid "Error updating discount code. That code may already be in use."
597
- msgstr ""
598
- "Error actualizando el cupón de descuento. Es posible que el cupón "
599
- "introducido ya este en uso."
600
-
601
- #: adminpages/discountcodes.php:64
602
- msgid "Discount code added successfully."
603
- msgstr "Cupón de descuento añadido correctamente."
604
-
605
- #: adminpages/discountcodes.php:71
606
- msgid "Error adding discount code. That code may already be in use."
607
- msgstr ""
608
- "Error añadiendo cupón de descuento. Es posible que ese cupón ya este en uso."
609
-
610
- #: adminpages/discountcodes.php:196
611
- #, php-format
612
- msgid "Error saving values for the %s level."
613
- msgstr "Error guardando valores para el nivel %s."
614
-
615
- #: adminpages/discountcodes.php:204
616
- msgid "There were errors updating the level values: "
617
- msgstr "Hubo errores actualizando los valores del nivel:"
618
-
619
- #: adminpages/discountcodes.php:234
620
- #, php-format
621
- msgid "Code %s deleted successfully."
622
- msgstr "Cupón %s borrado correctamente."
623
-
624
- #: adminpages/discountcodes.php:239
625
- msgid ""
626
- "Error deleting discount code. The code was only partially deleted. Please "
627
- "try again."
628
- msgstr ""
629
- "Error borrando cupón de descuento. El cupón fue parcialmente eliminado. Por "
630
- "favor inténtelo de nuevo."
631
-
632
- #: adminpages/discountcodes.php:245
633
- msgid "Error deleting code. Please try again."
634
- msgstr "Error eliminado el cupón. Por favor intentelo de nuevo."
635
-
636
- #: adminpages/discountcodes.php:251
637
- msgid "Code not found."
638
- msgstr "Cupón no encontrado."
639
-
640
- #: adminpages/discountcodes.php:264
641
- msgid "Edit Discount Code"
642
- msgstr "Edita el cupón de descuento."
643
-
644
- #: adminpages/discountcodes.php:266 adminpages/discountcodes.php:526
645
- msgid "Add New Discount Code"
646
- msgstr "Añade un nuevo cupón de descuento."
647
-
648
- #: adminpages/discountcodes.php:306 adminpages/discountcodes.php:547
649
- #: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:505
650
- #: adminpages/memberslist.php:111 adminpages/orders.php:597
651
- #: adminpages/reports/login.php:140
652
- msgid "ID"
653
- msgstr "ID"
654
-
655
- #: adminpages/discountcodes.php:307 adminpages/orders.php:211
656
- msgid "This will be generated when you save."
657
- msgstr "Esto será generado cuando guardes."
658
-
659
- #: adminpages/discountcodes.php:311 adminpages/discountcodes.php:548
660
- #: adminpages/orders.php:215 adminpages/orders.php:598
661
- msgid "Code"
662
- msgstr "Cupón"
663
-
664
- #: adminpages/discountcodes.php:349
665
- msgid "Start Date"
666
- msgstr "Fecha de inicio"
667
-
668
- #: adminpages/discountcodes.php:367 pages/billing.php:249
669
- #: pages/checkout.php:525
670
- msgid "Expiration Date"
671
- msgstr "Fecha de expiración"
672
-
673
- #: adminpages/discountcodes.php:385 adminpages/discountcodes.php:551
674
- msgid "Uses"
675
- msgstr "Usa"
676
-
677
- #: adminpages/discountcodes.php:388
678
- msgid "Leave blank for unlimited uses."
679
- msgstr "Dejar en blanco para permitir uso ilimitado."
680
-
681
- #: adminpages/discountcodes.php:427 adminpages/membershiplevels.php:337
682
- #: adminpages/membershiplevels.php:507 pages/levels.php:14
683
- msgid "Initial Payment"
684
- msgstr "Pago inicial"
685
-
686
- #: adminpages/discountcodes.php:428 adminpages/membershiplevels.php:338
687
- msgid "The initial amount collected at registration."
688
- msgstr "La cantidad inicial recogida durante el registro."
689
-
690
- #: adminpages/discountcodes.php:432 adminpages/membershiplevels.php:342
691
- msgid "Recurring Subscription"
692
- msgstr "Subscripción recurrente."
693
-
694
- #: adminpages/discountcodes.php:433 adminpages/membershiplevels.php:343
695
- msgid "Check if this level has a recurring subscription payment."
696
- msgstr "Comprobar si el nivel tiene una subscripción de pago recurrente."
697
-
698
- #: adminpages/discountcodes.php:437
699
- msgid "Billing Ammount"
700
- msgstr "Cantidad a facturar"
701
-
702
- #: adminpages/discountcodes.php:451 adminpages/membershiplevels.php:362
703
- msgid "The amount to be billed one cycle after the initial payment."
704
- msgstr "La cantidad que se cobrará un ciclo despues del pago inicial."
705
-
706
- #: adminpages/discountcodes.php:456 adminpages/membershiplevels.php:380
707
- msgid "Billing Cycle Limit"
708
- msgstr "Límite del ciclo de facturación"
709
-
710
- #: adminpages/discountcodes.php:459 adminpages/membershiplevels.php:384
711
- msgid ""
712
- "The <strong>total</strong> number of recurring billing cycles for this "
713
- "level, including the trial period (if applicable) but not including the "
714
- "initial payment. Set to zero if membership is indefinite."
715
- msgstr ""
716
- "El número <strong>total</strong>de ciclos recurrentes para este nivel, "
717
- "incluyendo el periodo de prueba ( si existe) pero no incluyendo el pago "
718
- "inicial. "
719
-
720
- #: adminpages/discountcodes.php:464 adminpages/membershiplevels.php:393
721
- msgid "Custom Trial"
722
- msgstr "Periodo de prueba personalizado"
723
-
724
- #: adminpages/discountcodes.php:465 adminpages/membershiplevels.php:394
725
- msgid "Check to add a custom trial period."
726
- msgstr "Seleccionar para añadir un periodo de prueba personalizado."
727
-
728
- #: adminpages/discountcodes.php:469 adminpages/membershiplevels.php:398
729
- msgid "Trial Billing Amount"
730
- msgstr "Cantidad a facturar por periodo de prueba"
731
-
732
- #: adminpages/discountcodes.php:472 adminpages/membershiplevels.php:401
733
- msgid "for the first"
734
- msgstr "por el/los primer/os"
735
-
736
- #: adminpages/discountcodes.php:474 adminpages/membershiplevels.php:403
737
- msgid "subscription payments"
738
- msgstr "pagos de susbscipción"
739
-
740
- #: adminpages/discountcodes.php:479 adminpages/membershiplevels.php:431
741
- msgid "Membership Expiration"
742
- msgstr "Expiración de la membresía"
743
-
744
- #: adminpages/discountcodes.php:480
745
- msgid "Check this to set an expiration date for new sign ups."
746
- msgstr "Marcar para seleccionar una fecha de expiración para nuevos registros."
747
-
748
- #: adminpages/discountcodes.php:484 adminpages/membershiplevels.php:436
749
- msgid "Expires In"
750
- msgstr "Expira en"
751
-
752
- #: adminpages/discountcodes.php:497
753
- msgid ""
754
- "How long before the expiration expires. Note that any future payments will "
755
- "be cancelled when the membership expires."
756
- msgstr ""
757
- "Cuanto tiempo ha de pasar antes de que la expiración expire. Ten en cuenta "
758
- "que los pagos futuros serán cancelados cuando la membresía expire."
759
-
760
- #: adminpages/discountcodes.php:525
761
- msgid "Memberships Discount Codes"
762
- msgstr "Cupónes de descuento de membresías"
763
-
764
- #: adminpages/discountcodes.php:535
765
- msgid "Search Discount Codes"
766
- msgstr "Buscar cupones de descuento"
767
-
768
- #: adminpages/discountcodes.php:538 adminpages/reports/login.php:81
769
- msgid "Search"
770
- msgstr "Busqueda"
771
-
772
- #: adminpages/discountcodes.php:549
773
- msgid "Starts"
774
- msgstr "Estadísticas"
775
-
776
- #: adminpages/discountcodes.php:552
777
- msgid "Levels"
778
- msgstr "Niveles"
779
-
780
- #: adminpages/discountcodes.php:570
781
- msgid ""
782
- "Discount codes allow you to offer your memberships at discounted prices to "
783
- "select customers."
784
- msgstr ""
785
- "Los cupones de descuento te permiten ofrecer tus membresías a precios "
786
- "descontados para cierto clientes."
787
-
788
- #: adminpages/discountcodes.php:570
789
- msgid "Create your first discount code now"
790
- msgstr "Crea tu primer cupón de descuento ahora"
791
-
792
- #: adminpages/discountcodes.php:614 adminpages/membershiplevels.php:564
793
- #: adminpages/orders.php:658
794
- msgid "edit"
795
- msgstr "editar"
796
-
797
- #: adminpages/discountcodes.php:617
798
- #, php-format
799
- msgid ""
800
- "Are you sure you want to delete the %s discount code? The subscriptions for "
801
- "existing users will not change, but new users will not be able to use this "
802
- "code anymore."
803
- msgstr ""
804
- "Estas seguro que quieres borrar los %s cupones de descuento? Las "
805
- "subscripciones para los usuarios existentes no cambiarán, pero nuevos "
806
- "usuarios no podrán usar este cupón."
807
-
808
- #: adminpages/discountcodes.php:617 adminpages/membershiplevels.php:566
809
- #: adminpages/orders.php:664
810
- msgid "delete"
811
- msgstr "borrar"
812
-
813
- #: adminpages/emailsettings.php:61
814
- msgid ""
815
- "By default, system generated emails are sent from "
816
- "<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
817
- "address using the fields below."
818
- msgstr ""
819
- "Por defecto, emails generados por el sistema son enviades desde "
820
- "<em><strong>wordpress@tudominio.com</strong></em>. Puedes actualizar esta "
821
- "dirección desde usando los campos de aqui abajo."
822
-
823
- #: adminpages/emailsettings.php:63
824
- msgid ""
825
- "To modify the appearance of system generated emails, add the files "
826
- "<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
827
- "directory. This will modify both the WordPress default messages as well as "
828
- "messages generated by Paid Memberships Pro. <a title=\"Paid Memberships Pro "
829
- "- Member Communications\" target=\"_blank\" href=\"http://www."
830
- "paidmembershipspro.com/documentation/member-communications/\">Click here to "
831
- "learn more about Paid Memberships Pro emails</a>."
832
- msgstr ""
833
- "Para modificar la apariencia de los emails generados por el sistema, añade "
834
- "los archivos <em>email_header.html</em> y <em>email_footer.html</em> al "
835
- "directorio de tu tema. Esto modificará los mensajes originales de wordpress "
836
- "tanto como los mensajes generados por Paid Memberships Pro. <a title=\"Paid "
837
- "Memberships Pro - Comunicaciones a miembros\" target=\"_blank\" href="
838
- "\"http://www.paidmembershipspro.com/documentation/member-communications/"
839
- "\">Haz click aquí para aprender sobre los emails de Paid Memberships Pro</a>."
840
-
841
- #: adminpages/emailsettings.php:69
842
- msgid "From Email"
843
- msgstr "Campo desde del email"
844
-
845
- #: adminpages/emailsettings.php:77
846
- msgid "From Name"
847
- msgstr "Campo nombre del email"
848
-
849
- #: adminpages/emailsettings.php:86
850
- msgid "Send the site admin emails"
851
- msgstr "Envía al administrador emails"
852
-
853
- #: adminpages/emailsettings.php:92
854
- msgid "Checkout"
855
- msgstr "Procesamiento de pago"
856
-
857
- #: adminpages/emailsettings.php:96
858
- msgid "when a member checks out."
859
- msgstr "Cuando un miembro paga"
860
-
861
- #: adminpages/emailsettings.php:101
862
- msgid "Admin Changes"
863
- msgstr "Cambios por el Admin"
864
-
865
- #: adminpages/emailsettings.php:105
866
- msgid "when an admin changes a user's membership level through the dashboard."
867
- msgstr ""
868
- "cuando un administrador cambia el nivel de un usuario a traves del "
869
- "Escritorio."
870
-
871
- #: adminpages/emailsettings.php:110
872
- msgid "Cancellation"
873
- msgstr "Cancelación"
874
-
875
- #: adminpages/emailsettings.php:114
876
- msgid "when a user cancels his or her account."
877
- msgstr "cuando un usuario cancela su cuenta."
878
-
879
- #: adminpages/emailsettings.php:119
880
- msgid "Bill Updates"
881
- msgstr "Actualización de información de facturación"
882
-
883
- #: adminpages/emailsettings.php:123
884
- msgid "when a user updates his or her billing information."
885
- msgstr "Cuando un usuario cambia su información de facturación."
886
-
887
- #: adminpages/emailsettings.php:129
888
- msgid "Send members emails"
889
- msgstr "Enviar emails a miembros"
890
-
891
- #: adminpages/emailsettings.php:135
892
- msgid "New Users"
893
- msgstr "Nuevos usuarios"
894
-
895
- #: adminpages/emailsettings.php:139
896
- msgid ""
897
- "Default WP notification email. (Recommended: Leave unchecked. Members will "
898
- "still get an email confirmation from PMPro after checkout.)"
899
- msgstr ""
900
- "Notificación por defecto de WordPress. (Recomendad: Dejar sin seleccionar. "
901
- "Los miembros recibiran una confirmación por email de PMPro despues del "
902
- "procesamiento de pago(checkout).)"
903
-
904
- #: adminpages/membershiplevels.php:118
905
- msgid "Membership level updated successfully."
906
- msgstr "Nivel de membresa actualizado correctamente."
907
-
908
- #: adminpages/membershiplevels.php:124
909
- msgid "Error updating membership level."
910
- msgstr "Error actualizando el nivel de membresa."
911
-
912
- #: adminpages/membershiplevels.php:141
913
- msgid "Membership level added successfully."
914
- msgstr "Nivel de membresa añadido correctamente."
915
-
916
- #: adminpages/membershiplevels.php:146
917
- msgid "Error adding membership level."
918
- msgstr "Error añadiendo nivel de membresía."
919
-
920
- #: adminpages/membershiplevels.php:179
921
- #, php-format
922
- msgid ""
923
- "There was an error canceling the subscription for user with ID=%d. You will "
924
- "want to check your payment gateway to see if their subscription is still "
925
- "active."
926
- msgstr ""
927
- "Hubo un error cancelando la subscripción para el usuario con ID=%d. Deberías "
928
- "comprobar tu pasarela de pagos y ver si la subscripción sigue activa."
929
-
930
- #: adminpages/membershiplevels.php:182
931
- msgid "Last Invoice"
932
- msgstr "Última factura"
933
-
934
- #: adminpages/membershiplevels.php:196
935
- msgid "Membership level deleted successfully."
936
- msgstr "Nivel de mebresa eliminado correctamente."
937
-
938
- #: adminpages/membershiplevels.php:201 adminpages/membershiplevels.php:207
939
- msgid "Error deleting membership level."
940
- msgstr "Error eliminando nivel de membresía."
941
-
942
- #: adminpages/membershiplevels.php:222
943
- msgid "Edit Membership Level"
944
- msgstr "Editar nivel de membresía"
945
-
946
- #: adminpages/membershiplevels.php:224
947
- msgid "Add New Membership Level"
948
- msgstr "Añade un nuevo nivel de membresía"
949
-
950
- #: adminpages/membershiplevels.php:291 adminpages/membershiplevels.php:506
951
- #: adminpages/reports/login.php:142
952
- msgid "Name"
953
- msgstr "Nombre"
954
-
955
- #: adminpages/membershiplevels.php:296
956
- msgid "Description"
957
- msgstr "Descripción"
958
-
959
- #: adminpages/membershiplevels.php:314
960
- msgid "Confirmation Message"
961
- msgstr "Mensaje de confirmación"
962
-
963
- #: adminpages/membershiplevels.php:333
964
- msgid "Billing Details"
965
- msgstr "Detalles de facturación"
966
-
967
- #: adminpages/membershiplevels.php:347
968
- msgid "Billing Amount"
969
- msgstr "Cantidad a facturar"
970
-
971
- #: adminpages/membershiplevels.php:349
972
- msgid "per"
973
- msgstr "por"
974
-
975
- #: adminpages/membershiplevels.php:353
976
- msgid "Day(s)"
977
- msgstr "Día(s)"
978
-
979
- #: adminpages/membershiplevels.php:353
980
- msgid "Week(s)"
981
- msgstr "Semana(s)"
982
-
983
- #: adminpages/membershiplevels.php:353
984
- msgid "Month(s)"
985
- msgstr "Mes(es)"
986
-
987
- #: adminpages/membershiplevels.php:353
988
- msgid "Year(s)"
989
- msgstr "Año(s)"
990
-
991
- #: adminpages/membershiplevels.php:364
992
- msgid ""
993
- "Stripe integration currently only supports billing periods of \"Month\" or "
994
- "\"Year\"."
995
- msgstr ""
996
- "La integración con Stripe actualmente solo soporta periodos de facturación "
997
- "\"mensuales \" o \"anuales \"."
998
-
999
- #: adminpages/membershiplevels.php:366
1000
- msgid ""
1001
- "Braintree integration currently only supports billing periods of \"Month\" "
1002
- "or \"Year\"."
1003
- msgstr ""
1004
- "La integración con Braintree actualmente solo soporta periodos de "
1005
- "facturación \"mensuales \" o \"anuales \"."
1006
-
1007
- #: adminpages/membershiplevels.php:368
1008
- msgid ""
1009
- "Payflow integration currently only supports billing frequencies of 1 and "
1010
- "billing periods of \"Week\", \"Month\" or \"Year\"."
1011
- msgstr ""
1012
- "La integración con Payflow actualmente solo soporta frecuencias de 1 pago y "
1013
- "periodos de facturación \"mensuales \" o \"anuales \"."
1014
-
1015
- #: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
1016
- #: adminpages/paymentsettings.php:170
1017
- msgid "Note"
1018
- msgstr "Nota"
1019
-
1020
- #: adminpages/membershiplevels.php:372
1021
- msgid ""
1022
- "After saving this level, make note of the ID and create a \"Plan\" in your "
1023
- "Braintree dashboard with the same settings and the \"Plan ID\" set to "
1024
- "<em>pmpro_#</em>, where # is the level ID."
1025
- msgstr ""
1026
- "Despues de guardar este nivel, apunta la ID y crea un \"Plan\" en tu "
1027
- "escritorio de Braintree con las mismas opciones y el \"Plan ID\" con valor "
1028
- "<em>pmpro_#</em> donde # es el ID de nivel."
1029
-
1030
- #: adminpages/membershiplevels.php:374
1031
- msgid ""
1032
- "You will need to create a \"Plan\" in your Braintree dashboard with the same "
1033
- "settings and the \"Plan ID\" set to"
1034
- msgstr ""
1035
- "Necesitas crear un \"Plan\" en el escritorio de tu Braintree con las mismas "
1036
- "opciones y el \"Plan ID\" con valor"
1037
-
1038
- #: adminpages/membershiplevels.php:386
1039
- msgid ""
1040
- "Stripe integration currently does not support billing limits. You can still "
1041
- "set an expiration date below."
1042
- msgstr ""
1043
- "La integración con Stripe actualmente no soporta límites de facturación. "
1044
- "Pero puedes elegir una fecha de expiración aqui abajo."
1045
-
1046
- #: adminpages/membershiplevels.php:406
1047
- msgid ""
1048
- "Stripe integration currently does not support trial amounts greater than $0."
1049
- msgstr ""
1050
- "La integracion con Stripe actualmente no soporta cantidades para el periodo "
1051
- "de prueba superiores a $0."
1052
-
1053
- #: adminpages/membershiplevels.php:410
1054
- msgid ""
1055
- "Braintree integration currently does not support trial amounts greater than "
1056
- "$0."
1057
- msgstr ""
1058
- "La integracion con Braintree actualmente no soporta cantidades para el "
1059
- "periodo de prueba superiores a $0."
1060
-
1061
- #: adminpages/membershiplevels.php:414
1062
- msgid ""
1063
- "Payflow integration currently does not support trial amounts greater than $0."
1064
- msgstr ""
1065
- "La integracion con Payflow actualmente no soporta cantidades para el periodo "
1066
- "de prueba superiores a $0."
1067
-
1068
- #: adminpages/membershiplevels.php:422
1069
- msgid "Other Settings"
1070
- msgstr "Otras opciones"
1071
-
1072
- #: adminpages/membershiplevels.php:426
1073
- msgid "Disable New Signups"
1074
- msgstr "Desactivar nuevos registros"
1075
-
1076
- #: adminpages/membershiplevels.php:427
1077
- msgid ""
1078
- "Check to hide this level from the membership levels page and disable "
1079
- "registration."
1080
- msgstr ""
1081
- "Marcar para esconder este nivel de la página de membresías y desactivar "
1082
- "registro."
1083
-
1084
- #: adminpages/membershiplevels.php:432
1085
- msgid "Check this to set when membership access expires."
1086
- msgstr "Marcar esto para elegir cuando termina el acceso a la membresía."
1087
-
1088
- #: adminpages/membershiplevels.php:449
1089
- msgid ""
1090
- "Set the duration of membership access. Note that the any future payments "
1091
- "(recurring subscription, if any) will be cancelled when the membership "
1092
- "expires."
1093
- msgstr ""
1094
- "Elige la duración de acceso para la membresía. Ten en cuenta que cualquier "
1095
- "futuro pago ( subscripciones recurrentes, si las hay) serán canceladas "
1096
- "cuando la membresía expire."
1097
-
1098
- #: adminpages/membershiplevels.php:457
1099
- msgid "Content Settings"
1100
- msgstr "Opciones de contenido"
1101
-
1102
- #: adminpages/membershiplevels.php:461
1103
- msgid "Categories"
1104
- msgstr "Categorías"
1105
-
1106
- #: adminpages/membershiplevels.php:490
1107
- msgid "Add New Level"
1108
- msgstr "Añadir un nuevo nivel"
1109
-
1110
- #: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
1111
- msgid "Search Levels"
1112
- msgstr "Buscar Niveles"
1113
-
1114
- #: adminpages/membershiplevels.php:508
1115
- msgid "Billing Cycle"
1116
- msgstr "Ciclo de facturación"
1117
-
1118
- #: adminpages/membershiplevels.php:509
1119
- msgid "Trial Cycle"
1120
- msgstr "Periodo de prueba"
1121
-
1122
- #: adminpages/membershiplevels.php:510 pages/confirmation.php:81
1123
- #: pages/invoice.php:68
1124
- msgid "Expiration"
1125
- msgstr "Expiración"
1126
-
1127
- #: adminpages/membershiplevels.php:511
1128
- msgid "Allow Signups"
1129
- msgstr "Permitir registros"
1130
-
1131
- #: adminpages/membershiplevels.php:534
1132
- msgid "FREE"
1133
- msgstr "GRATIS"
1134
-
1135
- #: adminpages/membershiplevels.php:543
1136
- msgid "every"
1137
- msgstr "cada"
1138
-
1139
- #: adminpages/membershiplevels.php:545 adminpages/membershiplevels.php:553
1140
- #: adminpages/reports/sales.php:195 adminpages/reports/sales.php:206
1141
- msgid "for"
1142
- msgstr "por"
1143
-
1144
- #: adminpages/membershiplevels.php:560
1145
- msgid "After"
1146
- msgstr "Despues"
1147
-
1148
- #: adminpages/membershiplevels.php:565 adminpages/orders.php:661
1149
- msgid "copy"
1150
- msgstr "copia"
1151
-
1152
- #: adminpages/membershiplevels.php:566
1153
- #, php-format
1154
- msgid ""
1155
- "Are you sure you want to delete membership level %s? All subscriptions will "
1156
- "be cancelled."
1157
- msgstr ""
1158
- "¿Seguro que quieres borrar el nivel de membresía %s? Todas las "
1159
- "subscripciones serán canceladas."
1160
-
1161
- #: adminpages/memberslist.php:26 adminpages/orders.php:522
1162
- msgid "Export to CSV"
1163
- msgstr "Exportar a CSV"
1164
-
1165
- #: adminpages/memberslist.php:30 adminpages/reports/login.php:65
1166
- #: adminpages/reports/sales.php:185
1167
- msgid "Show"
1168
- msgstr "Mostrar"
1169
-
1170
- #: adminpages/memberslist.php:32 adminpages/reports/login.php:67
1171
- #: adminpages/reports/sales.php:208
1172
- msgid "All Levels"
1173
- msgstr "Todos los niveles"
1174
-
1175
- #: adminpages/memberslist.php:46 adminpages/memberslist.php:49
1176
- msgid "Search Members"
1177
- msgstr "Buscar Miembros"
1178
-
1179
- #: adminpages/memberslist.php:103
1180
- #, php-format
1181
- msgid "%d members found."
1182
- msgstr "%d miembros encontrados."
1183
-
1184
- #: adminpages/memberslist.php:112 pages/account.php:51 pages/checkout.php:168
1185
- msgid "Username"
1186
- msgstr "Nombre de usuario"
1187
-
1188
- #: adminpages/memberslist.php:113
1189
- msgid "First&nbsp;Name"
1190
- msgstr "Nombre"
1191
-
1192
- #: adminpages/memberslist.php:114
1193
- msgid "Last&nbsp;Name"
1194
- msgstr "Apellidos"
1195
-
1196
- #: adminpages/memberslist.php:117 pages/account.php:90 pages/billing.php:58
1197
- #: pages/checkout.php:314 pages/confirmation.php:59 pages/invoice.php:46
1198
- msgid "Billing Address"
1199
- msgstr "Dirección de facturación"
1200
-
1201
- #: adminpages/memberslist.php:118 adminpages/pagesettings.php:51
1202
- #: adminpages/reports/login.php:143
1203
- #: classes/gateways/class.pmprogateway_authorizenet.php:187
1204
- msgid "Membership"
1205
- msgstr "Membresía"
1206
-
1207
- #: adminpages/memberslist.php:119
1208
- msgid "Fee"
1209
- msgstr "Cuota"
1210
-
1211
- #: adminpages/memberslist.php:120 adminpages/reports/login.php:144
1212
- msgid "Joined"
1213
- msgstr "Se unió"
1214
-
1215
- #: adminpages/memberslist.php:184
1216
- msgid "Never"
1217
- msgstr "Nunca"
1218
-
1219
- #: adminpages/memberslist.php:195 adminpages/reports/login.php:210
1220
- msgid "No members found."
1221
- msgstr "No se han encontrado miembros."
1222
-
1223
- #: adminpages/memberslist.php:195 adminpages/reports/login.php:210
1224
- msgid "Search all levels"
1225
- msgstr "Buscar en todos los niveles"
1226
-
1227
- #: adminpages/orders.php:26
1228
- msgid "Order deleted successfully."
1229
- msgstr "Pago eliminado correctamente."
1230
-
1231
- #: adminpages/orders.php:31
1232
- msgid "Error deleting order."
1233
- msgstr "Error eliminando pago."
1234
-
1235
- #: adminpages/orders.php:119
1236
- msgid "Order saved successfully."
1237
- msgstr "Pago guardado correctamente."
1238
-
1239
- #: adminpages/orders.php:124
1240
- msgid "Error updating order timestamp."
1241
- msgstr "Error actualizando timestamp del pago."
1242
-
1243
- #: adminpages/orders.php:130
1244
- msgid "Error saving order."
1245
- msgstr "Error guardando pago."
1246
-
1247
- #: adminpages/orders.php:195
1248
- msgid "Order"
1249
- msgstr "Pagos"
1250
-
1251
- #: adminpages/orders.php:197
1252
- msgid "New Order"
1253
- msgstr "Nuevo Pago"
1254
-
1255
- #: adminpages/orders.php:220
1256
- msgid "Randomly generated for you."
1257
- msgstr "Generado aleatoriamente para ti."
1258
-
1259
- #: adminpages/orders.php:225
1260
- msgid "User ID"
1261
- msgstr "ID de usuario"
1262
-
1263
- #: adminpages/orders.php:234
1264
- msgid "Membership Level ID"
1265
- msgstr "ID de nivel de membresía"
1266
-
1267
- #: adminpages/orders.php:243
1268
- msgid "Billing Name"
1269
- msgstr "Nombre (facturación)"
1270
-
1271
- #: adminpages/orders.php:251
1272
- msgid "Billing Street"
1273
- msgstr "Calle (facturación)"
1274
-
1275
- #: adminpages/orders.php:258
1276
- msgid "Billing City"
1277
- msgstr "Ciudad (facturación)"
1278
-
1279
- #: adminpages/orders.php:265
1280
- msgid "Billing State"
1281
- msgstr "Estado (facturación)"
1282
-
1283
- #: adminpages/orders.php:272
1284
- msgid "Billing Postal Code"
1285
- msgstr "Código Postal (facturación)"
1286
-
1287
- #: adminpages/orders.php:279
1288
- msgid "Billing Country"
1289
- msgstr "País (facturación)"
1290
-
1291
- #: adminpages/orders.php:287
1292
- msgid "Billing Phone"
1293
- msgstr "Teléfono (facturación)"
1294
-
1295
- #: adminpages/orders.php:296
1296
- msgid "Sub Total"
1297
- msgstr "Subtotal"
1298
-
1299
- #: adminpages/orders.php:304 pages/invoice.php:78
1300
- msgid "Tax"
1301
- msgstr "Impuesto"
1302
-
1303
- #: adminpages/orders.php:312
1304
- msgid "Coupon Amount"
1305
- msgstr "Cantidad de cupón"
1306
-
1307
- #: adminpages/orders.php:320 adminpages/orders.php:602 pages/invoice.php:82
1308
- msgid "Total"
1309
- msgstr "Total"
1310
-
1311
- #: adminpages/orders.php:325
1312
- msgid "Should be subtotal + tax - couponamount."
1313
- msgstr "Debería ser subtotal + impuesto -cantidadcupon"
1314
-
1315
- #: adminpages/orders.php:330
1316
- msgid "Payment Type"
1317
- msgstr "Tipo de pago"
1318
-
1319
- #: adminpages/orders.php:335
1320
- msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
1321
- msgstr "p.ej. PayPal Express, PayPal Standard, Credit Card."
1322
-
1323
- #: adminpages/orders.php:339 pages/billing.php:234 pages/checkout.php:510
1324
- msgid "Card Type"
1325
- msgstr "Tipo de tarjeta"
1326
-
1327
- #: adminpages/orders.php:344
1328
- msgid "e.g. Visa, MasterCard, AMEX, etc"
1329
- msgstr "p.ej. Visa, MasterCard, AMEX, etc"
1330
-
1331
- #: adminpages/orders.php:348
1332
- msgid "Account Number"
1333
- msgstr "Número de cuenta"
1334
-
1335
- #: adminpages/orders.php:353
1336
- msgid "Obscure all but last 4 digits."
1337
- msgstr "Esconde todo menos los últimos 4 dígitos"
1338
-
1339
- #: adminpages/orders.php:358
1340
- msgid "Expiration Month"
1341
- msgstr "Mes de expiración"
1342
-
1343
- #: adminpages/orders.php:365
1344
- msgid "Expiration Year"
1345
- msgstr "Año de expiración"
1346
-
1347
- #: adminpages/orders.php:373 adminpages/orders.php:606
1348
- msgid "Status"
1349
- msgstr "Estado"
1350
-
1351
- #: adminpages/orders.php:394 adminpages/orders.php:604
1352
- msgid "Gateway"
1353
- msgstr "Pasarela"
1354
-
1355
- #: adminpages/orders.php:398
1356
- msgid "Testing Only"
1357
- msgstr "Prueba solo"
1358
-
1359
- #: adminpages/orders.php:399 adminpages/paymentsettings.php:157
1360
- msgid "Pay by Check"
1361
- msgstr "Pagar con cheque"
1362
-
1363
- #: adminpages/orders.php:411 adminpages/paymentsettings.php:175
1364
- msgid "Gateway Environment"
1365
- msgstr "Entorno de pasarela (Gateway Environment)"
1366
-
1367
- #: adminpages/orders.php:415 adminpages/paymentsettings.php:179
1368
- msgid "Sandbox/Testing"
1369
- msgstr "Sandbox/Pruebas"
1370
-
1371
- #: adminpages/orders.php:416 adminpages/paymentsettings.php:180
1372
- msgid "Live/Production"
1373
- msgstr "Vivo/Producción"
1374
-
1375
- #: adminpages/orders.php:423
1376
- msgid "Payment Transaction ID"
1377
- msgstr "ID de transacción de pago"
1378
-
1379
- #: adminpages/orders.php:428
1380
- msgid "Generated by the gateway. Useful to cross reference orders."
1381
- msgstr "Generado por la pasarela. Útil para comparar pagos."
1382
-
1383
- #: adminpages/orders.php:432
1384
- msgid "Subscription Transaction ID"
1385
- msgstr "ID de transacción de la subscripción"
1386
-
1387
- #: adminpages/orders.php:437
1388
- msgid "Generated by the gateway. Useful to cross reference subscriptions."
1389
- msgstr "Generado por la pasarela. Util para comparar subscripciones."
1390
-
1391
- #: adminpages/orders.php:442 adminpages/orders.php:607 pages/invoice.php:105
1392
- msgid "Date"
1393
- msgstr "Fecha"
1394
-
1395
- #: adminpages/orders.php:477
1396
- msgid "Affiliate ID"
1397
- msgstr "ID de afiliado"
1398
-
1399
- #: adminpages/orders.php:485
1400
- msgid "Affiliate SubID"
1401
- msgstr "SubID de afiliado"
1402
-
1403
- #: adminpages/orders.php:495
1404
- msgid "Notes"
1405
- msgstr "Notas"
1406
-
1407
- #: adminpages/orders.php:510
1408
- msgid "Save Order"
1409
- msgstr "Guardar pago"
1410
-
1411
- #: adminpages/orders.php:511 pages/billing.php:295
1412
- msgid "Cancel"
1413
- msgstr "Cancelar"
1414
-
1415
- #: adminpages/orders.php:521
1416
- msgid "Add New Order"
1417
- msgstr "Añadir nuevo pago"
1418
-
1419
- #: adminpages/orders.php:535 adminpages/orders.php:538
1420
- msgid "Search Orders"
1421
- msgstr "Buscar pagos"
1422
-
1423
- #: adminpages/orders.php:590
1424
- #, php-format
1425
- msgid "%d orders found."
1426
- msgstr "%d pagos encontrados."
1427
-
1428
- #: adminpages/orders.php:599 adminpages/paymentsettings.php:211
1429
- #: adminpages/reports/login.php:141
1430
- msgid "User"
1431
- msgstr "Usuario"
1432
-
1433
- #: adminpages/orders.php:603 adminpages/orders.php:651
1434
- msgid "Payment"
1435
- msgstr "Método de pago"
1436
-
1437
- #: adminpages/orders.php:605
1438
- msgid "Transaction IDs"
1439
- msgstr "IDs de transacción"
1440
-
1441
- #: adminpages/orders.php:630
1442
- msgid "deleted"
1443
- msgstr "borrado"
1444
-
1445
- #: adminpages/orders.php:653
1446
- msgid "Subscription"
1447
- msgstr "Subscripción"
1448
-
1449
- #: adminpages/orders.php:664
1450
- #, php-format
1451
- msgid ""
1452
- "Deleting orders is permanent and can affect active users. Are you sure you "
1453
- "want to delete order %s?"
1454
- msgstr ""
1455
- "Borrar un pago es permanente y puede afectar a los usuarios activos. ¿Seguro "
1456
- "que quieres borrar el pago %s?"
1457
-
1458
- #: adminpages/orders.php:674
1459
- msgid "No orders found."
1460
- msgstr "No se han encontrado pagos."
1461
-
1462
- #: adminpages/pagesettings.php:83
1463
- msgid "The following pages have been created for you"
1464
- msgstr "Las siguientes páginas han sido creadas para ti"
1465
-
1466
- #: adminpages/pagesettings.php:98
1467
- msgid ""
1468
- "Manage the WordPress pages assigned to each required Paid Memberships Pro "
1469
- "page."
1470
- msgstr ""
1471
- "Gestiona las páginas WordPress asignando a cada una la página de Paid "
1472
- "Memberships Pro requerida."
1473
-
1474
- #: adminpages/pagesettings.php:104
1475
- msgid ""
1476
- "Assign the WordPress pages for each required Paid Memberships Pro page or"
1477
- msgstr ""
1478
- "Asigna a cada página WordPress la página de Paid Memberships Pro requerida o"
1479
-
1480
- #: adminpages/pagesettings.php:104
1481
- msgid "click here to let us generate them for you"
1482
- msgstr "haz click aqui para que dejarnos generarlas por ti"
1483
-
1484
- #: adminpages/pagesettings.php:112
1485
- msgid "Account Page"
1486
- msgstr "Página de Cuenta"
1487
-
1488
- #: adminpages/pagesettings.php:119 adminpages/pagesettings.php:132
1489
- #: adminpages/pagesettings.php:145 adminpages/pagesettings.php:159
1490
- #: adminpages/pagesettings.php:173 adminpages/pagesettings.php:187
1491
- #: adminpages/pagesettings.php:201
1492
- msgid "edit page"
1493
- msgstr "editar página"
1494
-
1495
- #: adminpages/pagesettings.php:121 adminpages/pagesettings.php:134
1496
- #: adminpages/pagesettings.php:147 adminpages/pagesettings.php:161
1497
- #: adminpages/pagesettings.php:175 adminpages/pagesettings.php:189
1498
- #: adminpages/pagesettings.php:203
1499
- msgid "Include the shortcode"
1500
- msgstr "Incluye el shortcode"
1501
-
1502
- #: adminpages/pagesettings.php:125
1503
- msgid "Billing Information Page"
1504
- msgstr "Página de información de facturación"
1505
-
1506
- #: adminpages/pagesettings.php:138
1507
- msgid "Cancel Page"
1508
- msgstr "Página de cancelación"
1509
-
1510
- #: adminpages/pagesettings.php:152
1511
- msgid "Checkout Page"
1512
- msgstr "Página de pago"
1513
-
1514
- #: adminpages/pagesettings.php:166
1515
- msgid "Confirmation Page"
1516
- msgstr "Página de confirmación"
1517
-
1518
- #: adminpages/pagesettings.php:180
1519
- msgid "Invoice Page"
1520
- msgstr "Página de facturas"
1521
-
1522
- #: adminpages/pagesettings.php:194
1523
- msgid "Levels Page"
1524
- msgstr "Página de niveles"
1525
-
1526
- #: adminpages/paymentsettings.php:82
1527
- msgid "Your payment settings have been updated."
1528
- msgstr "Las opciones de pago han sido actualizadas."
1529
-
1530
- #: adminpages/paymentsettings.php:144 adminpages/paymentsettings.php:152
1531
- msgid "Payment Gateway"
1532
- msgstr "Pasarela de pagos"
1533
-
1534
- #: adminpages/paymentsettings.php:144
1535
- msgid "SSL Settings"
1536
- msgstr "Opciones SSL"
1537
-
1538
- #: adminpages/paymentsettings.php:170
1539
- msgid ""
1540
- "Payflow Pro currently only supports one-time payments. Users will not be "
1541
- "able to checkout for levels with recurring payments."
1542
- msgstr ""
1543
- "Payflow Pro actualmente solo soporta pagos on-time. Los usuarios no podrán "
1544
- "darse de alta en niveles con pagos recurrentes."
1545
-
1546
- #: adminpages/paymentsettings.php:195
1547
- msgid "Partner"
1548
- msgstr "Compañero"
1549
-
1550
- #: adminpages/paymentsettings.php:203
1551
- msgid "Vendor"
1552
- msgstr "Vendedor"
1553
-
1554
- #: adminpages/paymentsettings.php:219 pages/checkout.php:177
1555
- msgid "Password"
1556
- msgstr "Contraseña"
1557
-
1558
- #: adminpages/paymentsettings.php:227
1559
- msgid "Gateway Account Email"
1560
- msgstr "Email de cuenta de la Pasarela "
1561
-
1562
- #: adminpages/paymentsettings.php:235
1563
- msgid "API Username"
1564
- msgstr "Nombre de usuario de API (API Username)"
1565
-
1566
- #: adminpages/paymentsettings.php:243
1567
- msgid "API Password"
1568
- msgstr "Contraseña de API (API Password)"
1569
-
1570
- #: adminpages/paymentsettings.php:251
1571
- msgid "API Signature"
1572
- msgstr "Firma de API (API Signature)"
1573
-
1574
- #: adminpages/paymentsettings.php:260
1575
- msgid "Login Name"
1576
- msgstr "Nombre de login"
1577
-
1578
- #: adminpages/paymentsettings.php:268
1579
- msgid "Transaction Key"
1580
- msgstr "Llave de transaccion (Transaction Key)"
1581
-
1582
- #: adminpages/paymentsettings.php:277
1583
- msgid "Secret Key"
1584
- msgstr "Llave secreta (Secret Key)"
1585
-
1586
- #: adminpages/paymentsettings.php:285
1587
- msgid "Publishable Key"
1588
- msgstr "Llave publicable (Publishable Key)"
1589
-
1590
- #: adminpages/paymentsettings.php:294
1591
- msgid "Merchant ID"
1592
- msgstr "ID de mercader (Merchant ID)"
1593
-
1594
- #: adminpages/paymentsettings.php:302
1595
- msgid "Public Key"
1596
- msgstr "Llave pública (Public Key)"
1597
-
1598
- #: adminpages/paymentsettings.php:310
1599
- msgid "Private Key"
1600
- msgstr "Llave privada (Private Key)"
1601
-
1602
- #: adminpages/paymentsettings.php:318
1603
- msgid "Client-Side Encryption Key"
1604
- msgstr ""
1605
- "Llave de encripción para el lado del cliente (Client-Side Encryption Key)"
1606
-
1607
- #: adminpages/paymentsettings.php:327 adminpages/paymentsettings.php:337
1608
- #: adminpages/paymentsettings.php:356
1609
- msgid "Currency"
1610
- msgstr "Moneda"
1611
-
1612
- #: adminpages/paymentsettings.php:375
1613
- msgid "Accepted Credit Card Types"
1614
- msgstr "Tipos de tarjeta de crédito aceptados"
1615
-
1616
- #: adminpages/paymentsettings.php:389
1617
- msgid "Instructions"
1618
- msgstr "Instrucciones"
1619
-
1620
- #: adminpages/paymentsettings.php:393
1621
- msgid ""
1622
- "Who to write the check out to. Where to mail it. Shown on checkout, "
1623
- "confirmation, and invoice pages."
1624
- msgstr ""
1625
- "A nombre de quien escribir el cheque. Donde enviarlo. Mostrado durante "
1626
- "checkout, confirmación, y página de facturación."
1627
-
1628
- #: adminpages/paymentsettings.php:398
1629
- msgid "Sales Tax"
1630
- msgstr "IVA (impuesto a las ventas)"
1631
-
1632
- #: adminpages/paymentsettings.php:398 pages/billing.php:78
1633
- msgid "optional"
1634
- msgstr "opcional"
1635
-
1636
- #: adminpages/paymentsettings.php:401
1637
- msgid "Tax State"
1638
- msgstr "Impuesto del estado"
1639
-
1640
- #: adminpages/paymentsettings.php:402
1641
- msgid "abbreviation, e.g. \"PA\""
1642
- msgstr "abreviación, p.ej. \"PA\""
1643
-
1644
- #: adminpages/paymentsettings.php:404
1645
- msgid "decimal, e.g. \"0.06\""
1646
- msgstr "decimal, p.ej. \"0.06\""
1647
-
1648
- #: adminpages/paymentsettings.php:405
1649
- msgid ""
1650
- "If values are given, tax will be applied for any members ordering from the "
1651
- "selected state. For more complex tax rules, use the \"pmpro_tax\" filter."
1652
- msgstr ""
1653
- "Si se asignan valores, el impuesto será aplicado para miembros localizados "
1654
- "dentro del estado seleccionado. Para reglas de impuestos mas complejas, usa "
1655
- "el filtro \"pmpro_tax\"."
1656
-
1657
- #: adminpages/paymentsettings.php:410 adminpages/paymentsettings.php:421
1658
- msgid "Use SSL"
1659
- msgstr "Usar SSL"
1660
-
1661
- #: adminpages/paymentsettings.php:425
1662
- msgid "Required by this Gateway Option"
1663
- msgstr "Requerido por esta opcion de pasarela"
1664
-
1665
- #: adminpages/paymentsettings.php:430
1666
- msgid "SSL Seal Code"
1667
- msgstr "Código de sellado SSL"
1668
-
1669
- #: adminpages/paymentsettings.php:438
1670
- msgid "HTTPS Nuclear Option"
1671
- msgstr "Opción nuclear HTTPS"
1672
-
1673
- #: adminpages/paymentsettings.php:441
1674
- msgid ""
1675
- "Use the \"Nuclear Option\" to use secure (HTTPS) URLs on your secure pages. "
1676
- "Check this if you are using SSL and have warnings on your checkout pages."
1677
- msgstr ""
1678
- "Usar la \"Opción Nuclear\" para usar URLs seguras (HTTPS) en tus páginas "
1679
- "seguras. Marca esto si usas SSL y tienes warnings en las paginas de checkout."
1680
-
1681
- #: adminpages/paymentsettings.php:446
1682
- msgid "IPN Handler URL"
1683
- msgstr "IPN Handler URL"
1684
-
1685
- #: adminpages/paymentsettings.php:449
1686
- msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
1687
- msgstr ""
1688
- "Para integrar completamente con Paypal, asegúrate de introducir tu IPN "
1689
- "Handler URL a"
1690
-
1691
- #: adminpages/paymentsettings.php:454
1692
- msgid "Silent Post URL"
1693
- msgstr "Silent Post URL"
1694
-
1695
- #: adminpages/paymentsettings.php:457
1696
- msgid ""
1697
- "To fully integrate with Authorize.net, be sure to set your Silent Post URL to"
1698
- msgstr ""
1699
- "Para integrar completamente con Authorize.net, asegurate de asignar tu "
1700
- "Silent Post URL a"
1701
-
1702
- #: adminpages/paymentsettings.php:462 adminpages/paymentsettings.php:470
1703
- msgid "Web Hook URL"
1704
- msgstr "Web Hook URL"
1705
-
1706
- #: adminpages/paymentsettings.php:465
1707
- msgid "To fully integrate with Stripe, be sure to set your Web Hook URL to"
1708
- msgstr ""
1709
- "Para integrar completamente con Stripe, asegurate de asignar tu Web Hook URL "
1710
- "a"
1711
-
1712
- #: adminpages/paymentsettings.php:474
1713
- msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
1714
- msgstr ""
1715
- "Para integrar completamente con Braintree, asegurate de asignar tu Web Hook "
1716
- "URL a"
1717
-
1718
- #: adminpages/reports.php:26
1719
- msgid "Details"
1720
- msgstr "Detalles"
1721
-
1722
- #: adminpages/reports/login.php:16
1723
- msgid "Visits, Views, and Logins"
1724
- msgstr "Visitas, Vistas, y logins"
1725
-
1726
- #: adminpages/reports/login.php:26
1727
- msgid "Visits Today"
1728
- msgstr "Visitas hoy"
1729
-
1730
- #: adminpages/reports/login.php:27 adminpages/reports/login.php:147
1731
- msgid "Visits This Month"
1732
- msgstr "Visitas este mes"
1733
-
1734
- #: adminpages/reports/login.php:28
1735
- msgid "Visits All Time"
1736
- msgstr "Visitas desde el principio"
1737
-
1738
- #: adminpages/reports/login.php:31
1739
- msgid "Views Today"
1740
- msgstr "Vistas hoy"
1741
-
1742
- #: adminpages/reports/login.php:32 adminpages/reports/login.php:149
1743
- msgid "Views This Month"
1744
- msgstr "Vistas este mes"
1745
-
1746
- #: adminpages/reports/login.php:33
1747
- msgid "Views All Time"
1748
- msgstr "Vistas desde el principio"
1749
-
1750
- #: adminpages/reports/login.php:36
1751
- msgid "Logins Today"
1752
- msgstr "Logins hoy"
1753
-
1754
- #: adminpages/reports/login.php:37 adminpages/reports/login.php:152
1755
- msgid "Logins This Month"
1756
- msgstr "Logins este mes"
1757
-
1758
- #: adminpages/reports/login.php:38
1759
- msgid "Logins All Time"
1760
- msgstr "Logins desde el principio"
1761
-
1762
- #: adminpages/reports/login.php:61
1763
- msgid "Visits, Views, and Logins Report"
1764
- msgstr "Informe de visitas, vistas, y logins"
1765
-
1766
- #: adminpages/reports/login.php:66
1767
- msgid "All Users"
1768
- msgstr "Todos los usuarios"
1769
-
1770
- #: adminpages/reports/login.php:146
1771
- msgid "Last Visit"
1772
- msgstr "Última visita"
1773
-
1774
- #: adminpages/reports/login.php:148
1775
- msgid "Total Visits"
1776
- msgstr "Visitas totales"
1777
-
1778
- #: adminpages/reports/login.php:150
1779
- msgid "Total Views"
1780
- msgstr "Vistas totales"
1781
-
1782
- #: adminpages/reports/login.php:151
1783
- msgid "Last Login"
1784
- msgstr "Último login"
1785
-
1786
- #: adminpages/reports/login.php:153
1787
- msgid "Total Logins"
1788
- msgstr "Total de logins"
1789
-
1790
- #: adminpages/reports/sales.php:18
1791
- msgid "Sales and Revenue (Testing/Sandbox)"
1792
- msgstr "Vengas e ingresos ( Prueba/Sandbox)"
1793
-
1794
- #: adminpages/reports/sales.php:20 adminpages/reports/sales.php:180
1795
- msgid "Sales and Revenue"
1796
- msgstr "Ventas y ingresos"
1797
-
1798
- #: adminpages/reports/sales.php:187
1799
- msgid "Daily"
1800
- msgstr "A diario"
1801
-
1802
- #: adminpages/reports/sales.php:188
1803
- msgid "Monthly"
1804
- msgstr "Al mes"
1805
-
1806
- #: adminpages/reports/sales.php:189
1807
- msgid "Annual"
1808
- msgstr "Al año"
1809
-
1810
- #: adminpages/reports/sales.php:192
1811
- msgid "Revenue"
1812
- msgstr "Ingresos"
1813
-
1814
- #: adminpages/reports/sales.php:193
1815
- msgid "Sales"
1816
- msgstr "Ventas"
1817
-
1818
- #: adminpages/reports/sales.php:222
1819
- msgid "Generate Report"
1820
- msgstr "Generar informe"
1821
-
1822
- #: classes/class.pmproemail.php:37
1823
- #, php-format
1824
- msgid "An Email From %s"
1825
- msgstr "Un email de %s"
1826
-
1827
- #: classes/class.pmproemail.php:120
1828
- #, php-format
1829
- msgid "Your membership at %s has been CANCELLED"
1830
- msgstr "Tu membresía %s ha sido CANCELADA"
1831
-
1832
- #: classes/class.pmproemail.php:142
1833
- #, php-format
1834
- msgid "Membership for %s at %s has been CANCELLED"
1835
- msgstr "Membresía para %s en %s ha sido CANCELADA"
1836
-
1837
- #: classes/class.pmproemail.php:172
1838
- #, php-format
1839
- msgid "Your membership confirmation for %s"
1840
- msgstr "Confirmación de membresía para %s"
1841
-
1842
- #: classes/class.pmproemail.php:216 classes/class.pmproemail.php:225
1843
- #: classes/class.pmproemail.php:234 classes/class.pmproemail.php:304
1844
- #: classes/class.pmproemail.php:313 classes/class.pmproemail.php:532
1845
- #: pages/checkout.php:67 pages/checkout.php:77 pages/checkout.php:566
1846
- #: pages/confirmation.php:51 pages/invoice.php:32
1847
- msgid "Discount Code"
1848
- msgstr "Cupón de descuento"
1849
-
1850
- #: classes/class.pmproemail.php:241 classes/class.pmproemail.php:325
1851
- #: classes/class.pmproemail.php:538
1852
- #, php-format
1853
- msgid "This membership will expire on %s."
1854
- msgstr "Esta membresía caducará en %s"
1855
-
1856
- #: classes/class.pmproemail.php:263
1857
- #, php-format
1858
- msgid "Member Checkout for %s at %s"
1859
- msgstr "Checkout de miembro para %s en %s"
1860
-
1861
- #: classes/class.pmproemail.php:342
1862
- #, php-format
1863
- msgid "Your billing information has been udpated at %s"
1864
- msgstr "Tu información de facturación ha sido actualizada en %s"
1865
-
1866
- #: classes/class.pmproemail.php:386
1867
- #, php-format
1868
- msgid "Billing information has been udpated for %s at %s"
1869
- msgstr "La información de facturacion para %s ha sido actualizada a %s"
1870
-
1871
- #: classes/class.pmproemail.php:425
1872
- #, php-format
1873
- msgid "Membership Payment Failed at %s"
1874
- msgstr "Pago de membresía ha fallado a %s"
1875
-
1876
- #: classes/class.pmproemail.php:462
1877
- #, php-format
1878
- msgid "Membership Payment Failed For %s at %s"
1879
- msgstr "Pago de membresía ha fallado para %s a %s"
1880
-
1881
- #: classes/class.pmproemail.php:501
1882
- #, php-format
1883
- msgid "INVOICE for %s membership"
1884
- msgstr "FACTURA por mebresa %s"
1885
-
1886
- #: classes/class.pmproemail.php:563
1887
- #, php-format
1888
- msgid "Your trial at %s is ending soon"
1889
- msgstr "Tu periodo de prueba en %s se acaba pronto"
1890
-
1891
- #: classes/class.pmproemail.php:596
1892
- #, php-format
1893
- msgid "Your membership at %s has ended"
1894
- msgstr "Tu membresía en %s ha terminado"
1895
-
1896
- #: classes/class.pmproemail.php:621
1897
- #, php-format
1898
- msgid "Your membership at %s will end soon"
1899
- msgstr "Tu membresía en %s acabará pronto"
1900
-
1901
- #: classes/class.pmproemail.php:641
1902
- #, php-format
1903
- msgid "Your membership at %s has been changed"
1904
- msgstr "Tu membresía en %s ha cambiado"
1905
-
1906
- #: classes/class.pmproemail.php:645 classes/class.pmproemail.php:683
1907
- #, php-format
1908
- msgid "The new level is %s. This membership is free"
1909
- msgstr "El nuevo nivel es %s. Esta membresa es gratuita"
1910
-
1911
- #: classes/class.pmproemail.php:647
1912
- msgid "Your membership has been cancelled"
1913
- msgstr "Tu membresa ha sido cancelada"
1914
-
1915
- #: classes/class.pmproemail.php:651 classes/class.pmproemail.php:689
1916
- #, php-format
1917
- msgid "This membership will expire on %s"
1918
- msgstr "Esta membresía terminará en %s"
1919
-
1920
- #: classes/class.pmproemail.php:655 classes/class.pmproemail.php:693
1921
- msgid "This membership does not expire"
1922
- msgstr "Esta membresa no caduca"
1923
-
1924
- #: classes/class.pmproemail.php:679
1925
- #, php-format
1926
- msgid "Membership for %s at %s has been changed"
1927
- msgstr "La membresía para %s en %s ha cambiado"
1928
-
1929
- #: classes/class.pmproemail.php:685
1930
- msgid "membership has been cancelled"
1931
- msgstr "La membresía ha sido cancelada"
1932
-
1933
- #: classes/gateways/class.pmprogateway.php:55
1934
- #: classes/gateways/class.pmprogateway_authorizenet.php:55
1935
- #: classes/gateways/class.pmprogateway_check.php:60
1936
- #: classes/gateways/class.pmprogateway_payflowpro.php:27
1937
- #: classes/gateways/class.pmprogateway_paypal.php:27
1938
- msgid "Unknown error: Authorization failed."
1939
- msgstr "Error desconocido: La autorización ha fallado."
1940
-
1941
- #: classes/gateways/class.pmprogateway.php:106
1942
- #: classes/gateways/class.pmprogateway.php:111
1943
- #: classes/gateways/class.pmprogateway.php:129
1944
- #: classes/gateways/class.pmprogateway_authorizenet.php:106
1945
- #: classes/gateways/class.pmprogateway_authorizenet.php:111
1946
- #: classes/gateways/class.pmprogateway_authorizenet.php:128
1947
- #: classes/gateways/class.pmprogateway_check.php:111
1948
- #: classes/gateways/class.pmprogateway_check.php:116
1949
- #: classes/gateways/class.pmprogateway_check.php:134
1950
- #: classes/gateways/class.pmprogateway_payflowpro.php:50
1951
- #: classes/gateways/class.pmprogateway_payflowpro.php:55
1952
- #: classes/gateways/class.pmprogateway_paypal.php:50
1953
- msgid "Unknown error: Payment failed."
1954
- msgstr "Error desconocido: El pago ha fallado."
1955
-
1956
- #: classes/gateways/class.pmprogateway.php:113
1957
- #: classes/gateways/class.pmprogateway_authorizenet.php:112
1958
- #: classes/gateways/class.pmprogateway_check.php:118
1959
- msgid ""
1960
- "A partial payment was made that we could not void. Please contact the site "
1961
- "owner immediately to correct this."
1962
- msgstr ""
1963
- "Se ha realizado un pago parcial que no hemos podido cancelar. Por favor "
1964
- "contacta al administrador del sitio inmediatamente para corregir esto."
1965
-
1966
- #: classes/gateways/class.pmprogateway_authorizenet.php:788
1967
- #: classes/gateways/class.pmprogateway_authorizenet.php:789
1968
- msgid "Could not connect to Authorize.net"
1969
- msgstr "No se pudo conectar a Authorize.net"
1970
-
1971
- #: classes/gateways/class.pmprogateway_braintree.php:61
1972
- #: classes/gateways/class.pmprogateway_stripe.php:53
1973
- msgid "Unknown error: Initial payment failed."
1974
- msgstr "Error desconocido: El pago inicial ha fallado."
1975
-
1976
- #: classes/gateways/class.pmprogateway_braintree.php:120
1977
- msgid "Error during settlement:"
1978
- msgstr "Error durante la resolución del pago:"
1979
-
1980
- #: classes/gateways/class.pmprogateway_braintree.php:129
1981
- msgid "Error during charge:"
1982
- msgstr "Error durante el pago:"
1983
-
1984
- #: classes/gateways/class.pmprogateway_braintree.php:198
1985
- msgid "Failed to update customer."
1986
- msgstr "Falló actualizando cliente."
1987
-
1988
- #: classes/gateways/class.pmprogateway_braintree.php:246
1989
- msgid "Failed to create customer."
1990
- msgstr "Falló al crear cliente."
1991
-
1992
- #: classes/gateways/class.pmprogateway_braintree.php:253
1993
- msgid "Error creating customer record with Braintree:"
1994
- msgstr "Error creando entrada para el cliente con Braintree:"
1995
-
1996
- #: classes/gateways/class.pmprogateway_braintree.php:345
1997
- msgid "Error subscribing customer to plan with Braintree:"
1998
- msgstr "Error subscribiendo al cliente al plan con Braintree:"
1999
-
2000
- #: classes/gateways/class.pmprogateway_braintree.php:360
2001
- msgid "Failed to subscribe with Braintree:"
2002
- msgstr "Error al subscribirse con Braintree:"
2003
-
2004
- #: classes/gateways/class.pmprogateway_braintree.php:398
2005
- #: classes/gateways/class.pmprogateway_braintree.php:411
2006
- #: classes/gateways/class.pmprogateway_braintree.php:418
2007
- #: classes/gateways/class.pmprogateway_stripe.php:343
2008
- #: classes/gateways/class.pmprogateway_stripe.php:353
2009
- msgid "Could not find the subscription."
2010
- msgstr "No se pudo encontrar la subscripción."
2011
-
2012
- #: classes/gateways/class.pmprogateway_payflowpro.php:57
2013
- #: classes/gateways/class.pmprogateway_paypal.php:57
2014
- msgid ""
2015
- "A partial payment was made that we could not refund. Please contact the site "
2016
- "owner immediately to correct this."
2017
- msgstr ""
2018
- "Se realizó un pago parcial que hemos podido devolver. Por favor contacte al "
2019
- "administrador del sitio para corregir este problema."
2020
-
2021
- #: classes/gateways/class.pmprogateway_stripe.php:190
2022
- msgid "Error creating customer record with Stripe:"
2023
- msgstr "Error creando entrada para el cliente con Stripe:"
2024
-
2025
- #: classes/gateways/class.pmprogateway_stripe.php:278
2026
- msgid "Error creating plan with Stripe:"
2027
- msgstr "Error creando plan con Stripe:"
2028
-
2029
- #: classes/gateways/class.pmprogateway_stripe.php:294
2030
- msgid "Error subscribing customer to plan with Stripe:"
2031
- msgstr "Error subscribiendo al cliente al plan con Stripe:"
2032
-
2033
- #: pages/account.php:10
2034
- msgid "Your membership is <strong>active</strong>."
2035
- msgstr "Tu membresía esta <strong>activa</strong>."
2036
-
2037
- #: pages/account.php:12 pages/billing.php:16 pages/levels.php:13
2038
- msgid "Level"
2039
- msgstr "Nivel"
2040
-
2041
- #: pages/account.php:14 pages/billing.php:18
2042
- msgid "Membership Fee"
2043
- msgstr "Cuota de membresía"
2044
-
2045
- #: pages/account.php:25 pages/billing.php:29
2046
- msgid "Duration"
2047
- msgstr "Duración"
2048
-
2049
- #: pages/account.php:29 pages/confirmation.php:48 pages/invoice.php:29
2050
- msgid "Membership Expires"
2051
- msgstr "La membresía expira"
2052
-
2053
- #: pages/account.php:34
2054
- #, php-format
2055
- msgid "Your first payment will cost %s."
2056
- msgstr "Tu primer pago costará %s."
2057
-
2058
- #: pages/account.php:38
2059
- #, php-format
2060
- msgid "Your first %d payments will cost %s."
2061
- msgstr "Tus primeros %d pagos costarán %s."
2062
-
2063
- #: pages/account.php:46
2064
- msgid "My Account"
2065
- msgstr "Mi Cuenta"
2066
-
2067
- #: pages/account.php:55
2068
- msgid "Edit Profile"
2069
- msgstr "Editar Perfil"
2070
-
2071
- #: pages/account.php:56
2072
- msgid "Change Password"
2073
- msgstr "Cambiar Contraseña"
2074
-
2075
- #: pages/account.php:105 pages/confirmation.php:61 pages/invoice.php:48
2076
- msgid "Payment Method"
2077
- msgstr "Método de pago"
2078
-
2079
- #: pages/account.php:114
2080
- msgid "Edit Billing Information"
2081
- msgstr "Editar información de facturación"
2082
-
2083
- #: pages/account.php:125
2084
- msgid "Past Invoices"
2085
- msgstr "Facturas pasadas"
2086
-
2087
- #: pages/account.php:140
2088
- msgid "View All Invoices"
2089
- msgstr "Ver todas las facturas"
2090
-
2091
- #: pages/account.php:146
2092
- msgid "Member Links"
2093
- msgstr "Links para miembros"
2094
-
2095
- #: pages/account.php:152
2096
- msgid "Update Billing Information"
2097
- msgstr "Actualizar información de facturación"
2098
-
2099
- #: pages/account.php:155
2100
- msgid "Change Membership Level"
2101
- msgstr "Cambiar nivel de membresía."
2102
-
2103
- #: pages/account.php:157
2104
- msgid "Cancel Membership"
2105
- msgstr "Cancelar membresía"
2106
-
2107
- #: pages/billing.php:14
2108
- #, php-format
2109
- msgid "Logged in as <strong>%s</strong>."
2110
- msgstr "Logeado como <strong>%s</strong>."
2111
-
2112
- #: pages/billing.php:14
2113
- msgid "logout"
2114
- msgstr "salir"
2115
-
2116
- #: pages/billing.php:39
2117
- msgid ""
2118
- "Your payment subscription is managed by PayPal. Please <a href=\"http://www."
2119
- "paypal.com\">login to PayPal here</a> to update your billing information."
2120
- msgstr ""
2121
- "Tu subscripción de pago es gestionada por Paypal. Por favor <a href=\"http://"
2122
- "www.paypal.com\">accede a PayPal aqui</a> para actualizar tu información de "
2123
- "facturación."
2124
-
2125
- #: pages/billing.php:65 pages/checkout.php:321
2126
- msgid "First Name"
2127
- msgstr "Nombre"
2128
-
2129
- #: pages/billing.php:69 pages/checkout.php:325
2130
- msgid "Last Name"
2131
- msgstr "Apellidos"
2132
-
2133
- #: pages/billing.php:73 pages/checkout.php:329
2134
- msgid "Address 1"
2135
- msgstr "Direccion 1"
2136
-
2137
- #: pages/billing.php:77 pages/checkout.php:333
2138
- msgid "Address 2"
2139
- msgstr "Direccion 2"
2140
-
2141
- #: pages/billing.php:87 pages/checkout.php:343
2142
- msgid "City"
2143
- msgstr "Ciudad"
2144
-
2145
- #: pages/billing.php:91 pages/checkout.php:347
2146
- msgid "State"
2147
- msgstr "Estado"
2148
-
2149
- #: pages/billing.php:95 pages/checkout.php:351
2150
- msgid "Postal Code"
2151
- msgstr "Código postal"
2152
-
2153
- #: pages/billing.php:104 pages/checkout.php:360
2154
- msgid "City, State Zip"
2155
- msgstr "Ciudad, Código postal de estado"
2156
-
2157
- #: pages/billing.php:157 pages/checkout.php:413
2158
- msgid "Country"
2159
- msgstr "País"
2160
-
2161
- #: pages/billing.php:182 pages/checkout.php:438
2162
- msgid "Phone"
2163
- msgstr "Teléfono"
2164
-
2165
- #: pages/billing.php:193 pages/checkout.php:204 pages/checkout.php:453
2166
- msgid "E-mail Address"
2167
- msgstr "Dirección de Email"
2168
-
2169
- #: pages/billing.php:197 pages/checkout.php:462
2170
- msgid "Confirm E-mail"
2171
- msgstr "Confirmar E-mail"
2172
-
2173
- #: pages/billing.php:217
2174
- #, php-format
2175
- msgid "We accept %s"
2176
- msgstr "Aceptamos %s"
2177
-
2178
- #: pages/billing.php:217
2179
- msgid "Credit Card Information"
2180
- msgstr "Información de la tarjeta de crédito"
2181
-
2182
- #: pages/billing.php:244 pages/checkout.php:520
2183
- msgid "Card Number"
2184
- msgstr "Número de la Tarjeta"
2185
-
2186
- #: pages/billing.php:281 pages/checkout.php:557
2187
- msgid "CVV"
2188
- msgstr "CVV"
2189
-
2190
- #: pages/billing.php:282 pages/checkout.php:558
2191
- msgid "what's this?"
2192
- msgstr "¿Que es esto?"
2193
-
2194
- #: pages/billing.php:294
2195
- msgid "Update"
2196
- msgstr "Actualizar"
2197
-
2198
- #: pages/billing.php:309
2199
- msgid ""
2200
- "This subscription is not recurring. So you don't need to update your billing "
2201
- "information."
2202
- msgstr ""
2203
- "Esta subscripción no es recurrente. Por lo tanto no necesitas actualizar tu "
2204
- "información de facturación."
2205
-
2206
- #: pages/cancel.php:14
2207
- msgid "Are you sure you want to cancel your membership?"
2208
- msgstr "¿Estas seguro de que quieres cancelar tu membresía?"
2209
-
2210
- #: pages/cancel.php:17
2211
- msgid "Yes, cancel my account"
2212
- msgstr "Si, cancela mi cuenta"
2213
-
2214
- #: pages/cancel.php:19
2215
- msgid "No, keep my account"
2216
- msgstr "No, mantén mi cuenta"
2217
-
2218
- #: pages/cancel.php:22
2219
- msgid "Click here to go to the home page."
2220
- msgstr "Haz click aquí para ir a la página principal."
2221
-
2222
- #: pages/checkout.php:27
2223
- msgid ""
2224
- "Almost done. Review the membership information and pricing below then "
2225
- "<strong>click the \"Complete Payment\" button</strong> to finish your order."
2226
- msgstr ""
2227
- "Casi has terminado. Revisa la información de la membresía y precios aqui "
2228
- "abajo y después <strong>haz click en el botón \"Completar pago\" </strong> "
2229
- "para finalizar."
2230
-
2231
- #: pages/checkout.php:34
2232
- msgid "change"
2233
- msgstr "cambiar"
2234
-
2235
- #: pages/checkout.php:42
2236
- #, php-format
2237
- msgid "You have selected the <strong>%s</strong> membership level."
2238
- msgstr "Has seleccionado el nivel de membresía <strong>%s</strong>."
2239
-
2240
- #: pages/checkout.php:52
2241
- #, php-format
2242
- msgid "<p>The <strong>%s</strong> code has been applied to your order.</p>"
2243
- msgstr "<p> El cupón <strong>%s</strong> ha sido aplicado a tu pago.</p>"
2244
-
2245
- #: pages/checkout.php:63 services/applydiscountcode.php:74
2246
- msgid "Click here to change your discount code"
2247
- msgstr "Haz click aquí para cambiar tu cupón de descuento"
2248
-
2249
- #: pages/checkout.php:65
2250
- msgid "Do you have a discount code?"
2251
- msgstr "¿Tienes un cupón de descuento?"
2252
-
2253
- #: pages/checkout.php:65
2254
- msgid "Click here to enter your discount code"
2255
- msgstr "Haz click aquí para introducir tu cupón de descuento"
2256
-
2257
- #: pages/checkout.php:79 pages/checkout.php:568
2258
- msgid "Apply"
2259
- msgstr "Aplicar"
2260
-
2261
- #: pages/checkout.php:160
2262
- msgid "Already have an account?"
2263
- msgstr "¿Ya tienes una cuenta?"
2264
-
2265
- #: pages/checkout.php:160
2266
- msgid "Log in here"
2267
- msgstr "logeate aquí"
2268
-
2269
- #: pages/checkout.php:160
2270
- msgid "Account Information"
2271
- msgstr "Información de la cuenta"
2272
-
2273
- #: pages/checkout.php:186
2274
- msgid "Confirm Password"
2275
- msgstr "Confirma tu contraseña"
2276
-
2277
- #: pages/checkout.php:213
2278
- msgid "Confirm E-mail Address"
2279
- msgstr "Confirma tu dirección de E-mail"
2280
-
2281
- #: pages/checkout.php:232
2282
- msgid "Full Name"
2283
- msgstr "Nombre Completo"
2284
-
2285
- #: pages/checkout.php:233
2286
- msgid "LEAVE THIS BLANK"
2287
- msgstr "DEJA ESTO EN BLANCO"
2288
-
2289
- #: pages/checkout.php:257
2290
- #, php-format
2291
- msgid ""
2292
- "You are logged in as <strong>%s</strong>. If you would like to use a "
2293
- "different account for this membership, <a href=\"%s\">log out now</a>."
2294
- msgstr ""
2295
- "Estas logeado como <strong>%s</strong>. Si deseas usar una cuenta diferente "
2296
- "para esta membresía,<a href=\"%s\">deslogeate ahora</a>."
2297
-
2298
- #: pages/checkout.php:277
2299
- #, php-format
2300
- msgid "I agree to the %s"
2301
- msgstr "Acepto %s"
2302
-
2303
- #: pages/checkout.php:292
2304
- msgid "Choose your Payment Method"
2305
- msgstr "Elije tu método de pago"
2306
-
2307
- #: pages/checkout.php:300
2308
- msgid "Check Out with a Credit Card Here"
2309
- msgstr "Pague con su tarjeta de crédito aquí"
2310
-
2311
- #: pages/checkout.php:302 pages/checkout.php:675
2312
- msgid "Check Out with PayPal"
2313
- msgstr "pague con PayPal"
2314
-
2315
- #: pages/checkout.php:493
2316
- #, php-format
2317
- msgid "We Accept %s"
2318
- msgstr "Aceptamos %s"
2319
-
2320
- #: pages/checkout.php:493
2321
- msgid "Payment Information"
2322
- msgstr "Información de pago"
2323
-
2324
- #: pages/checkout.php:667
2325
- msgid "Complete Payment"
2326
- msgstr "Completa el pago"
2327
-
2328
- #: pages/checkout.php:681
2329
- msgid "Submit and Check Out"
2330
- msgstr "Envíar y pagar"
2331
-
2332
- #: pages/checkout.php:681
2333
- msgid "Submit and Confirm"
2334
- msgstr "Enviar y confirmar"
2335
-
2336
- #: pages/checkout.php:687
2337
- msgid "Processing..."
2338
- msgstr "Procesando..."
2339
-
2340
- #: pages/confirmation.php:12
2341
- msgid ""
2342
- "Your payment has been submitted to PayPal. Your membership will be activated "
2343
- "shortly."
2344
- msgstr "Tu pago ha sido enviado a PayPal. Tu membresía será activada en breve."
2345
-
2346
- #: pages/confirmation.php:14
2347
- #, php-format
2348
- msgid "Thank you for your membership to %s. Your %s membership is now active."
2349
- msgstr ""
2350
- "Gracias por hacerte miembro en %s. Tu membresía %s ahora esta activada."
2351
-
2352
- #: pages/confirmation.php:28
2353
- #, php-format
2354
- msgid ""
2355
- "Below are details about your membership account and a receipt for your "
2356
- "initial membership invoice. A welcome email with a copy of your initial "
2357
- "membership invoice has been sent to %s."
2358
- msgstr ""
2359
- "Debajo estan los detalles sobre tu cuenta de membresía y un recibo por la "
2360
- "factura de tu pago inicial. Un email de bienvenida y una copia de la factura "
2361
- "de tu membresía inicial ha sido enviado a %s."
2362
-
2363
- #: pages/confirmation.php:41 pages/invoice.php:22
2364
- #, php-format
2365
- msgid "Invoice #%s on %s"
2366
- msgstr "Factura #%s en %s"
2367
-
2368
- #: pages/confirmation.php:43
2369
- msgid "Print"
2370
- msgstr "Imprimir"
2371
-
2372
- #: pages/confirmation.php:45 pages/confirmation.php:102 pages/invoice.php:26
2373
- msgid "Account"
2374
- msgstr "Cuenta"
2375
-
2376
- #: pages/confirmation.php:63 pages/invoice.php:50 pages/invoice.php:107
2377
- msgid "Total Billed"
2378
- msgstr "Total Cobrado"
2379
-
2380
- #: pages/confirmation.php:80 pages/invoice.php:67
2381
- msgid "ending in"
2382
- msgstr "terminado en"
2383
-
2384
- #: pages/confirmation.php:95
2385
- #, php-format
2386
- msgid ""
2387
- "Below are details about your membership account. A welcome email with has "
2388
- "been sent to %s."
2389
- msgstr ""
2390
- "Debajo estan los detalles sobre tu cuenta de miembro. Un email de bienvenida "
2391
- "ha sido enviado a %s."
2392
-
2393
- #: pages/confirmation.php:103
2394
- msgid "Pending"
2395
- msgstr "Pendiente"
2396
-
2397
- #: pages/confirmation.php:111 pages/invoice.php:139
2398
- msgid "View Your Membership Account &rarr;"
2399
- msgstr "Ver tu cuenta de miembro &rarr;"
2400
-
2401
- #: pages/confirmation.php:113
2402
- msgid ""
2403
- "If your account is not activated within a few minutes, please contact the "
2404
- "site owner."
2405
- msgstr ""
2406
- "Si tu cuenta no es activada en unos minutos, por favor contacta al "
2407
- "administrador del sitio."
2408
-
2409
- #: pages/invoice.php:77
2410
- msgid "Subtotal"
2411
- msgstr "Subtotal"
2412
-
2413
- #: pages/invoice.php:80
2414
- msgid "Coupon"
2415
- msgstr "Cupón"
2416
-
2417
- #: pages/invoice.php:106
2418
- msgid "Invoice #"
2419
- msgstr "Factura #"
2420
-
2421
- #: pages/invoice.php:120
2422
- msgid "View Invoice"
2423
- msgstr "Ver factura"
2424
-
2425
- #: pages/invoice.php:132
2426
- msgid "No invoices found."
2427
- msgstr "No se han encontrado facturas."
2428
-
2429
- #: pages/invoice.php:143
2430
- msgid "&larr; View All Invoices"
2431
- msgstr "&larr; Ver todas las facturas"
2432
-
2433
- #: pages/levels.php:15
2434
- msgid "Subscription Information"
2435
- msgstr "Información de subscripción"
2436
-
2437
- #: pages/levels.php:33
2438
- msgid "--"
2439
- msgstr "--"
2440
-
2441
- #: pages/levels.php:43
2442
- msgid "Free"
2443
- msgstr "Gratis"
2444
-
2445
- #: pages/levels.php:51
2446
- #, php-format
2447
- msgid "%s per %s for %d more %s."
2448
- msgstr "%s por %s por %d mas %s."
2449
-
2450
- #: pages/levels.php:55
2451
- #, php-format
2452
- msgid "%s every %d %s for %d more %s."
2453
- msgstr "%s cada %d %s por %d mas %s."
2454
-
2455
- #: pages/levels.php:60
2456
- #, php-format
2457
- msgid "%s after %d %s."
2458
- msgstr "%s y luego %d %s."
2459
-
2460
- #: pages/levels.php:66
2461
- #, php-format
2462
- msgid "%s per %s."
2463
- msgstr "%s por %s."
2464
-
2465
- #: pages/levels.php:70
2466
- #, php-format
2467
- msgid "%s every %d %s."
2468
- msgstr "%s cada %d %s."
2469
-
2470
- #: pages/levels.php:113 pages/levels.php:115
2471
- msgid "Select"
2472
- msgstr "Selecciona"
2473
-
2474
- #: pages/levels.php:117
2475
- msgid "Your&nbsp;Level"
2476
- msgstr "Tu&nbsp;Nivel"
2477
-
2478
- #: pages/levels.php:129
2479
- msgid "&larr; Return to Your Account"
2480
- msgstr "&larr; Vover a tu cuenta"
2481
-
2482
- #: pages/levels.php:131
2483
- msgid "&larr; Return to Home"
2484
- msgstr "&larr; Volver a la página principal"
2485
-
2486
- #: preheaders/account.php:7 preheaders/levels.php:19
2487
- msgid "Your membership status has been updated - Thank you!"
2488
- msgstr "El estado de tu membresa ha sido actualizado - Gracias!"
2489
-
2490
- #: preheaders/account.php:11 preheaders/levels.php:23
2491
- msgid ""
2492
- "Sorry, your request could not be completed - please try again in a few "
2493
- "moments."
2494
- msgstr ""
2495
- "Disculpa, tu petición no ha podido completarse - por favor prueba en unos "
2496
- "momentos."
2497
-
2498
- #: preheaders/billing.php:258 preheaders/checkout.php:464
2499
- msgid "Please complete all required fields."
2500
- msgstr "Por favor completa todos los campos requeridos."
2501
-
2502
- #: preheaders/billing.php:263 preheaders/checkout.php:474
2503
- msgid "Your email addresses do not match. Please try again."
2504
- msgstr "Tus direcciones de Email no coinciden. Por favor intentalo de nuevo."
2505
-
2506
- #: preheaders/billing.php:268 preheaders/checkout.php:480
2507
- msgid "The email address entered is in an invalid format. Please try again."
2508
- msgstr ""
2509
- "La dirección de email introducida esta en un formato inválido. Por favor "
2510
- "prueba de nuevo."
2511
-
2512
- #: preheaders/billing.php:274
2513
- msgid "All good!"
2514
- msgstr "Todo correcto!"
2515
-
2516
- #: preheaders/billing.php:340
2517
- #, php-format
2518
- msgid "Information updated. <a href=\"%s\">&laquo; back to my account</a>"
2519
- msgstr "Información actualizada.a href=\"%s\">&laquo; Volver a mi cuenta</a>"
2520
-
2521
- #: preheaders/billing.php:347
2522
- msgid "Error updating billing information."
2523
- msgstr "Error actualizando la información de facturación."
2524
-
2525
- #: preheaders/cancel.php:24
2526
- msgid "Your membership has been cancelled."
2527
- msgstr "Tu membresía ha sido cancelada."
2528
-
2529
- #: preheaders/checkout.php:28 preheaders/checkout.php:491
2530
- msgid "Invalid gateway."
2531
- msgstr "Pasarela de pago inválida."
2532
-
2533
- #: preheaders/checkout.php:96
2534
- msgid "Checkout: Payment Information"
2535
- msgstr "Checkout: Información de pago"
2536
-
2537
- #: preheaders/checkout.php:109
2538
- msgid "Setup Your Account"
2539
- msgstr "Configura tu cuenta"
2540
-
2541
- #: preheaders/checkout.php:468
2542
- msgid "Your passwords do not match. Please try again."
2543
- msgstr "Tus contraseñas no coinciden. Por favor intentalo de nuevo."
2544
-
2545
- #: preheaders/checkout.php:486
2546
- #, php-format
2547
- msgid "Please check the box to agree to the %s."
2548
- msgstr "Por favor marca la cajita para aceptar %s."
2549
-
2550
- #: preheaders/checkout.php:495
2551
- msgid "Are you a spammer?"
2552
- msgstr "¿Eres un spammer?"
2553
-
2554
- #: preheaders/checkout.php:518
2555
- msgid "That username is already taken. Please try another."
2556
- msgstr "Ese nombre de usuario ya esta en uso. Por favor prueba uno diferente."
2557
-
2558
- #: preheaders/checkout.php:524
2559
- msgid "That email address is already taken. Please try another."
2560
- msgstr "Esa dirección de correo está en uso. Por favor prueba una diferente."
2561
-
2562
- #: preheaders/checkout.php:544
2563
- #, php-format
2564
- msgid "reCAPTCHA failed. (%s) Please try again."
2565
- msgstr "reCAPTCHA ha fallado.(%s) Por favor intentalo de nuevo."
2566
-
2567
- #: preheaders/checkout.php:683
2568
- msgid "Payment accepted."
2569
- msgstr "Pago aceptado."
2570
-
2571
- #: preheaders/checkout.php:691
2572
- msgid ""
2573
- "Unknown error generating account. Please contact us to setup your membership."
2574
- msgstr ""
2575
- "Error desconocido generando tu cuenta. Por favor contactanos para que "
2576
- "podamos configurar tu membresía."
2577
-
2578
- #: preheaders/checkout.php:735 preheaders/checkout.php:803
2579
- msgid "The PayPal Token was lost."
2580
- msgstr "El token de PayPal se ha perdido."
2581
-
2582
- #: preheaders/checkout.php:825
2583
- msgid ""
2584
- "Your payment was accepted, but there was an error setting up your account. "
2585
- "Please contact us."
2586
- msgstr ""
2587
- "Tu pago ha sido aceptado, pero hubo un error creando tu cuenta. Contáctanos "
2588
- "por favor."
2589
-
2590
- #: preheaders/checkout.php:983
2591
- msgid ""
2592
- "IMPORTANT: Something went wrong during membership creation. Your credit card "
2593
- "authorized, but we cancelled the order immediately. You should not try to "
2594
- "submit this form again. Please contact the site owner to fix this issue."
2595
- msgstr ""
2596
- "IMPORTANTE: Algún error ocurrió durante la creación de tu membresía. Tu "
2597
- "tarjeta de crédito fue autorizada, pero hemos cancelado el pago "
2598
- "inmediatamente. No envíes este formulario de nuevo. Ponte en contacto con el "
2599
- "administrador del sitio para arreglar este problema."
2600
-
2601
- #: preheaders/checkout.php:988
2602
- msgid ""
2603
- "IMPORTANT: Something went wrong during membership creation. Your credit card "
2604
- "was charged, but we couldn't assign your membership. You should not submit "
2605
- "this form again. Please contact the site owner to fix this issue."
2606
- msgstr ""
2607
- "IMPORTANTE: Algún error ocurrió durante la creación de tu membresía. Tu "
2608
- "tarjeta de crédito ha recibito un cargo, pero no hemos podido asignarte la "
2609
- "membresía. No envíes este formulario de nuevo. Ponte en contacto con el "
2610
- "administrador del sitio para arreglar este problema."
2611
-
2612
- #: preheaders/checkout.php:1001
2613
- #, php-format
2614
- msgid ""
2615
- "You must <a href=\"%s\">setup a Payment Gateway</a> before any payments will "
2616
- "be processed."
2617
- msgstr ""
2618
- "Debes <a href=\"%s\">Configurar una pasarela de pagos</a> antes de poder "
2619
- "procesar pagos."
2620
-
2621
- #: preheaders/checkout.php:1003
2622
- msgid "A Payment Gateway must be setup before any payments will be processed."
2623
- msgstr ""
2624
- "Una pasarela de pagos debe de ser configurada antes de que los pagos puedan "
2625
- "ser procesados."
2626
-
2627
- #: scheduled/crons.php:27
2628
- #, php-format
2629
- msgid "Membership expiring email sent to %s. "
2630
- msgstr "Emails de expiración de membresía enviados a %s."
2631
-
2632
- #: scheduled/crons.php:61
2633
- #, php-format
2634
- msgid "Membership expired email sent to %s. "
2635
- msgstr "Email de membresía expirada enviado a %s."
2636
-
2637
- #: scheduled/crons.php:104
2638
- #, php-format
2639
- msgid "Trial ending email sent to %s. "
2640
- msgstr "Email de fin de periodo de prueba enviado a %s."
2641
-
2642
- #: services/applydiscountcode.php:82
2643
- #, php-format
2644
- msgid "The <strong>%s</strong> code has been applied to your order."
2645
- msgstr "El cupón <strong>%s</strong> ha sido aplicado a tu pago."
2646
-
2647
- #: services/authnet-silent-post.php:133
2648
- msgid ""
2649
- "<p>A payment is being held for review within Authorize.net.</p><p>Payment "
2650
- "Information From Authorize.net"
2651
- msgstr ""
2652
- "<p>Authorize.net ha congelado un pago y está revisandolo.</p><p>Información "
2653
- "de pago de Authorize.net"
2654
-
2655
- #: services/stripe-webhook.php:176
2656
- #, php-format
2657
- msgid ""
2658
- "%s has had their payment subscription cancelled by Stripe. Please check that "
2659
- "this user's membership is cancelled on your site if it should be."
2660
- msgstr ""
2661
- "Stripe ha cancelado la subscripción de pago para %s. Por favor asegurate que "
2662
- "la membresía de este usuario es cancelada en tu sitio si es necesario."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/pmpro-es_CL.pot DELETED
@@ -1,2662 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: pmpro\n"
4
- "POT-Creation-Date: 2013-08-01 05:01-0500\n"
5
- "PO-Revision-Date: 2013-08-22 03:37-0800\n"
6
- "Last-Translator: \n"
7
- "Language-Team: Stranger Studios <jason@strangerstudios.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.7\n"
12
- "X-Poedit-KeywordsList: __;_;_e;_ex;_x;_n\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "X-Poedit-SearchPath-0: includes\n"
15
- "X-Poedit-SearchPath-1: .\n"
16
- "X-Poedit-SearchPath-2: classes\n"
17
- "X-Poedit-SearchPath-3: preheaders\n"
18
- "X-Poedit-SearchPath-4: pages\n"
19
- "X-Poedit-SearchPath-5: adminpages\n"
20
- "X-Poedit-SearchPath-6: classes/gateways\n"
21
- "X-Poedit-SearchPath-7: services\n"
22
- "X-Poedit-SearchPath-8: shortcodes\n"
23
- "X-Poedit-SearchPath-9: scheduled\n"
24
-
25
- #: includes/adminpages.php:9 includes/adminpages.php:39
26
- msgid "Memberships"
27
- msgstr "Membresía"
28
-
29
- #: includes/adminpages.php:10 includes/adminpages.php:49
30
- msgid "Page Settings"
31
- msgstr "Ajustes de Página"
32
-
33
- #: includes/adminpages.php:11 includes/adminpages.php:54
34
- msgid "Payment Settings"
35
- msgstr "Ajustes de Facturación"
36
-
37
- #: includes/adminpages.php:12 includes/adminpages.php:59
38
- #: adminpages/emailsettings.php:60
39
- msgid "Email Settings"
40
- msgstr "Ajustes de Email"
41
-
42
- #: includes/adminpages.php:13 includes/adminpages.php:64
43
- #: adminpages/advancedsettings.php:79
44
- msgid "Advanced Settings"
45
- msgstr "Opciones Avanzadas"
46
-
47
- #: includes/adminpages.php:14 includes/adminpages.php:69
48
- #: adminpages/admin_header.php:133
49
- msgid "Add Ons"
50
- msgstr "Add Ons"
51
-
52
- #: includes/adminpages.php:15 includes/adminpages.php:74
53
- #: adminpages/memberslist.php:25
54
- msgid "Members List"
55
- msgstr "Lista de Miembros"
56
-
57
- #: includes/adminpages.php:16 includes/adminpages.php:79
58
- msgid "Reports"
59
- msgstr "Informes"
60
-
61
- #: includes/adminpages.php:17 includes/adminpages.php:84
62
- #: adminpages/orders.php:520
63
- msgid "Orders"
64
- msgstr "Órdenes"
65
-
66
- #: includes/adminpages.php:18 includes/adminpages.php:89
67
- msgid "Discount Codes"
68
- msgstr "Códigos de Descuento"
69
-
70
- #: includes/adminpages.php:44 adminpages/admin_header.php:128
71
- #: adminpages/membershiplevels.php:490
72
- msgid "Membership Levels"
73
- msgstr "Niveles de Membresía"
74
-
75
- #: includes/cleanup.php:24
76
- #, php-format
77
- msgid ""
78
- "There was an error canceling the subscription for user with ID=%s. You will "
79
- "want to check your payment gateway to see if their subscription is still "
80
- "active."
81
- msgstr ""
82
- "Hubo un error cancelando la subscripcion para el usuario con ID=%s. Deberías "
83
- "comprobar tu procesamiento de pagos (payment gateway) y ver si tu "
84
- "suscripción sigue activa."
85
-
86
- #: includes/currencies.php:7 includes/currencies.php:37
87
- msgid "US Dollars (&#36;)"
88
- msgstr "Dólares (&#36;)"
89
-
90
- #: includes/currencies.php:8 includes/currencies.php:40
91
- msgid "Euros (&euro;)"
92
- msgstr "Euros (&euro;)"
93
-
94
- #: includes/currencies.php:9 includes/currencies.php:39
95
- msgid "Pounds Sterling (&pound;)"
96
- msgstr "Libras Esterlinas (&pound;)"
97
-
98
- #: includes/currencies.php:10
99
- msgid "Australian Dollars (&#36;)"
100
- msgstr "Dólares Australianos (&#36;)"
101
-
102
- #: includes/currencies.php:11
103
- msgid "Brazilian Real (&#36;)"
104
- msgstr "Reales Brasileños (&#36;)"
105
-
106
- #: includes/currencies.php:12 includes/currencies.php:38
107
- msgid "Canadian Dollars (&#36;)"
108
- msgstr "Dólares Canadienses (&#36;)"
109
-
110
- #: includes/currencies.php:13
111
- msgid "Czech Koruna"
112
- msgstr "Corona Checa"
113
-
114
- #: includes/currencies.php:14
115
- msgid "Danish Krone"
116
- msgstr "Corona Danesa"
117
-
118
- #: includes/currencies.php:15
119
- msgid "Hong Kong Dollar (&#36;)"
120
- msgstr "Dolares de Hong Kong (&#36;)"
121
-
122
- #: includes/currencies.php:16
123
- msgid "Hungarian Forint"
124
- msgstr "Florín húngaro"
125
-
126
- #: includes/currencies.php:17
127
- msgid "Israeli Shekel"
128
- msgstr "Nuevo shéquel"
129
-
130
- #: includes/currencies.php:18
131
- msgid "Japanese Yen (&yen;)"
132
- msgstr "Yen japonés (&yen;)"
133
-
134
- #: includes/currencies.php:19
135
- msgid "Malaysian Ringgits"
136
- msgstr "Ringgit (dólar malayo)"
137
-
138
- #: includes/currencies.php:20
139
- msgid "Mexican Peso (&#36;)"
140
- msgstr "Peso mejicano (&#36;)"
141
-
142
- #: includes/currencies.php:21
143
- msgid "New Zealand Dollar (&#36;)"
144
- msgstr "dólar neozelandés (&#36;)"
145
-
146
- #: includes/currencies.php:22
147
- msgid "Norwegian Krone"
148
- msgstr "Corona noruega"
149
-
150
- #: includes/currencies.php:23
151
- msgid "Philippine Pesos"
152
- msgstr "Peso filipino"
153
-
154
- #: includes/currencies.php:24
155
- msgid "Polish Zloty"
156
- msgstr "esloti polaco"
157
-
158
- #: includes/currencies.php:25
159
- msgid "Singapore Dollar (&#36;)"
160
- msgstr "Dólar de Singapur (&#36;)"
161
-
162
- #: includes/currencies.php:26
163
- msgid "Swedish Krona"
164
- msgstr "Corona Sueca"
165
-
166
- #: includes/currencies.php:27
167
- msgid "Swiss Franc"
168
- msgstr "Franco Suizo"
169
-
170
- #: includes/currencies.php:28
171
- msgid "Taiwan New Dollars"
172
- msgstr "Nuevo dólar taiwanés"
173
-
174
- #: includes/currencies.php:29
175
- msgid "Thai Baht"
176
- msgstr "baht tailandés"
177
-
178
- #: includes/functions.php:160
179
- #, php-format
180
- msgid "The price for membership is <strong>%s</strong> now"
181
- msgstr "El precio por la membresía es <strong>%s</strong> ahora"
182
-
183
- #: includes/functions.php:169
184
- #, php-format
185
- msgid " and then <strong>%s per %s for %d more %s</strong>."
186
- msgstr "y después <strong>%s por %s durante %d %s mas </strong>."
187
-
188
- #: includes/functions.php:173
189
- #, php-format
190
- msgid " and then <strong>%s every %d %s for %d more %s</strong>."
191
- msgstr "y después <strong>%s cada %d %s por %d durante %s más </strong>."
192
-
193
- #: includes/functions.php:178
194
- #, php-format
195
- msgid " and then <strong>%s after %d %s</strong>."
196
- msgstr "y luego <strong>%s después %d %s</strong>."
197
-
198
- #: includes/functions.php:184
199
- #, php-format
200
- msgid " and then <strong>%s per %s</strong>."
201
- msgstr "y despues <strong>%s por %s</strong>."
202
-
203
- #: includes/functions.php:188
204
- #, php-format
205
- msgid " and then <strong>%s every %d %s</strong>."
206
- msgstr "y después <strong>%s cada %d %s</strong>."
207
-
208
- #: includes/functions.php:202 pages/levels.php:82
209
- msgid "After your initial payment, your first payment is Free."
210
- msgstr "Despues de tu pago inicial, tu primera cuota no tiene coste."
211
-
212
- #: includes/functions.php:206 pages/levels.php:86
213
- #, php-format
214
- msgid "After your initial payment, your first %d payments are Free."
215
- msgstr "Despues de tu pago inicial, tus primeras %d cuotas no tienen coste."
216
-
217
- #: includes/functions.php:213 pages/levels.php:93
218
- #, php-format
219
- msgid "After your initial payment, your first payment will cost %s."
220
- msgstr "Despues de tu pago inicial, tu primera cuota costará %s."
221
-
222
- #: includes/functions.php:217 pages/levels.php:97
223
- #, php-format
224
- msgid "After your initial payment, your first %d payments will cost %s."
225
- msgstr "Despues de tu pago inicial, tus primeras %d cuotas costarán %s."
226
-
227
- #: includes/functions.php:228
228
- #, php-format
229
- msgid "Customers in %s will be charged %s%% tax."
230
- msgstr "A los clientes en %s se les cobrará %s%% de impuestos."
231
-
232
- #: includes/functions.php:242
233
- #, php-format
234
- msgid "Membership expires after %d %s."
235
- msgstr "La membresía expira despues de %d %s."
236
-
237
- #: includes/functions.php:491
238
- msgid "User ID not found."
239
- msgstr "ID de usuario no encontrado."
240
-
241
- #: includes/functions.php:508
242
- msgid "Invalid level."
243
- msgstr "Nivel inválido."
244
-
245
- #: includes/functions.php:520
246
- msgid "not changing?"
247
- msgstr "Sin cambios?"
248
-
249
- #: includes/functions.php:537 includes/functions.php:583
250
- #: includes/functions.php:592
251
- msgid "Error interacting with database"
252
- msgstr "Error interactuando con la base de datos"
253
-
254
- #: includes/functions.php:629 includes/functions.php:668
255
- msgid "Membership level not found."
256
- msgstr "Nivel de membresía no encontrado."
257
-
258
- #: includes/functions.php:1050
259
- msgid "The discount code could not be found."
260
- msgstr "El cupón de descuento no se ha podido encontrar."
261
-
262
- #: includes/functions.php:1066
263
- #, php-format
264
- msgid "This discount code goes into effect on %s."
265
- msgstr "El cupón de descuento entra en efecto en %s."
266
-
267
- #: includes/functions.php:1075
268
- #, php-format
269
- msgid "This discount code expired on %s."
270
- msgstr "El cupón de descuento expiró en %s."
271
-
272
- #: includes/functions.php:1087
273
- msgid "This discount code is no longer valid."
274
- msgstr "Éste cupón de descuento ya no es válido."
275
-
276
- #: includes/functions.php:1102
277
- msgid "This discount code does not apply to this membership level."
278
- msgstr "Este cupón de descuento no se puede aplicar a este nivel de membresía."
279
-
280
- #: includes/functions.php:1110
281
- msgid "This discount code is okay."
282
- msgstr "El cupón de descuento es válido."
283
-
284
- #: includes/functions.php:1134
285
- msgid "and"
286
- msgstr "y"
287
-
288
- #: includes/functions.php:1319
289
- msgid "Sign Up for !!name!! Now"
290
- msgstr "Date de alta en !!name!! ya"
291
-
292
- #: includes/functions.php:1325
293
- msgid "Please specify a level id."
294
- msgstr "Por favor especifica un id de nivel."
295
-
296
- #: includes/localization.php:23
297
- msgid "Day"
298
- msgstr "Día"
299
-
300
- #: includes/localization.php:25
301
- msgid "Week"
302
- msgstr "Semana"
303
-
304
- #: includes/localization.php:27
305
- msgid "Month"
306
- msgstr "Mes"
307
-
308
- #: includes/localization.php:29
309
- msgid "Year"
310
- msgstr "Año"
311
-
312
- #: includes/metaboxes.php:38
313
- msgid ""
314
- "This post is already protected for this level because it is within a "
315
- "category that requires membership."
316
- msgstr ""
317
- "Esta entrada ya esta protegida para este nivel por que pertenece a una "
318
- "categoría que requiere membresía."
319
-
320
- #: includes/metaboxes.php:99 includes/metaboxes.php:100
321
- msgid "Require Membership"
322
- msgstr "Requerir membresía"
323
-
324
- #: includes/profile.php:25 adminpages/orders.php:601 pages/checkout.php:34
325
- #: pages/confirmation.php:46 pages/confirmation.php:62
326
- #: pages/confirmation.php:103 pages/invoice.php:27 pages/invoice.php:49
327
- msgid "Membership Level"
328
- msgstr "Nivel de membresía"
329
-
330
- #: includes/profile.php:34
331
- msgid "Current Level"
332
- msgstr "Nivel actual"
333
-
334
- #: includes/profile.php:37
335
- msgid "None"
336
- msgstr "Ninguno"
337
-
338
- #: includes/profile.php:82
339
- msgid "User is not paying."
340
- msgstr "El usuario no paga."
341
-
342
- #: includes/profile.php:118 adminpages/discountcodes.php:550
343
- #: adminpages/memberslist.php:121 adminpages/reports/login.php:145
344
- msgid "Expires"
345
- msgstr "Expira"
346
-
347
- #: includes/profile.php:121 adminpages/advancedsettings.php:128
348
- #: adminpages/advancedsettings.php:187 adminpages/advancedsettings.php:199
349
- #: adminpages/membershiplevels.php:563 adminpages/paymentsettings.php:414
350
- msgid "No"
351
- msgstr "No"
352
-
353
- #: includes/profile.php:122 adminpages/advancedsettings.php:188
354
- #: adminpages/membershiplevels.php:563 adminpages/paymentsettings.php:415
355
- #: adminpages/paymentsettings.php:424
356
- msgid "Yes"
357
- msgstr "Si"
358
-
359
- #: adminpages/addons.php:5 adminpages/advancedsettings.php:5
360
- #: adminpages/discountcodes.php:5 adminpages/emailsettings.php:5
361
- #: adminpages/membershiplevels.php:5 adminpages/memberslist-csv.php:5
362
- #: adminpages/memberslist.php:5 adminpages/orders-csv.php:5
363
- #: adminpages/orders.php:5 adminpages/pagesettings.php:5
364
- #: adminpages/paymentsettings.php:5
365
- msgid "You do not have permissions to perform this action."
366
- msgstr "No tienes permisos para realizar esta acción."
367
-
368
- #: adminpages/addons.php:79
369
- msgid "Enabled"
370
- msgstr "Activado"
371
-
372
- #: adminpages/addons.php:79
373
- msgid "Disabled"
374
- msgstr "Desactivado"
375
-
376
- #: adminpages/admin_header.php:25
377
- msgid "Add a membership level to get started."
378
- msgstr "Añade un nivel de membresía para comenzar."
379
-
380
- #: adminpages/admin_header.php:27
381
- msgid "Setup the membership pages"
382
- msgstr "Configura las paginas de membresía"
383
-
384
- #: adminpages/admin_header.php:29
385
- msgid "Setup your SSL certificate and payment gateway"
386
- msgstr "Configura tu certificado SSL y tu pasarela de pagos"
387
-
388
- #: adminpages/admin_header.php:38
389
- msgid ""
390
- "The billing details for some of your membership levels is not supported by "
391
- "Stripe."
392
- msgstr ""
393
- "Los detalles de facturación para alguna de tus niveles de membresía no esta "
394
- "soportado por Stripe."
395
-
396
- #: adminpages/admin_header.php:46
397
- msgid ""
398
- "The billing details for this level are not supported by Stripe. Please "
399
- "review the notes in the Billing Details section below."
400
- msgstr ""
401
- "Los detalles de facturación para este nivel no estan soportados por Stripe. "
402
- "Por favor revisa las notas en la sección Detalles de Facturación aqui debajo."
403
-
404
- #: adminpages/admin_header.php:50 adminpages/admin_header.php:70
405
- #: adminpages/admin_header.php:90
406
- msgid "The levels with issues are highlighted below."
407
- msgstr "Los niveles con problemas estan restaltados abajo."
408
-
409
- #: adminpages/admin_header.php:52 adminpages/admin_header.php:72
410
- #: adminpages/admin_header.php:92
411
- msgid "Please edit your levels"
412
- msgstr "Por favor edita tus niveles"
413
-
414
- #: adminpages/admin_header.php:58
415
- msgid ""
416
- "The billing details for some of your membership levels is not supported by "
417
- "Payflow."
418
- msgstr ""
419
- "Los detalles de facturación de tus niveles de membresa no estan soportados "
420
- "por Payflow."
421
-
422
- #: adminpages/admin_header.php:66
423
- msgid ""
424
- "The billing details for this level are not supported by Payflow. Please "
425
- "review the notes in the Billing Details section below."
426
- msgstr ""
427
- "Los detalles de facturación para este nivel no estan soportados por Payflow. "
428
- "Por favor revisa las notas en la sección de detalles de facturación abajo."
429
-
430
- #: adminpages/admin_header.php:78
431
- msgid ""
432
- "The billing details for some of your membership levels is not supported by "
433
- "Braintree."
434
- msgstr ""
435
- "Los detalles de facturación para alguno de tus niveles de membresía no estan "
436
- "soportados por Braintree."
437
-
438
- #: adminpages/admin_header.php:86
439
- msgid ""
440
- "The billing details for this level are not supported by Braintree. Please "
441
- "review the notes in the Billing Details section below."
442
- msgstr ""
443
- "Los detalles de facturación para este nivel no estan soportados por "
444
- "Braintree. Por favor revisa las notas en la sección de detalles de "
445
- "facturación abajo."
446
-
447
- #: adminpages/admin_header.php:106
448
- msgid "Plugin Support"
449
- msgstr "Soporte del Plugin"
450
-
451
- #: adminpages/admin_header.php:106
452
- msgid "User Forum"
453
- msgstr "Foro de usuarios"
454
-
455
- #: adminpages/admin_header.php:129 adminpages/pagesettings.php:92
456
- msgid "Pages"
457
- msgstr "Páginas"
458
-
459
- #: adminpages/admin_header.php:130
460
- msgid "Payment Gateway &amp; SSL"
461
- msgstr "Pasarela de pagos &amp; SSL"
462
-
463
- #: adminpages/admin_header.php:131 adminpages/memberslist.php:115
464
- #: pages/account.php:52
465
- msgid "Email"
466
- msgstr "Email"
467
-
468
- #: adminpages/admin_header.php:132
469
- msgid "Advanced"
470
- msgstr "Avanzado"
471
-
472
- #: adminpages/advancedsettings.php:35
473
- msgid "Your advanced settings have been updated."
474
- msgstr "Tus opciones avanzadas han sido actualizadas."
475
-
476
- #: adminpages/advancedsettings.php:85
477
- msgid "Message for Logged-in Non-members"
478
- msgstr "Mensaje para no-miembros logeados"
479
-
480
- #: adminpages/advancedsettings.php:89
481
- msgid ""
482
- "This message replaces the post content for non-members. Available variables"
483
- msgstr ""
484
- "Este mensaje reemplaza el contenido de la entrada para no-miembros. "
485
- "Variables disponibles"
486
-
487
- #: adminpages/advancedsettings.php:94
488
- msgid "Message for Logged-out Users"
489
- msgstr "Mensaje para usuarios desconectados (deslogeados)"
490
-
491
- #: adminpages/advancedsettings.php:98
492
- msgid "This message replaces the post content for logged-out visitors."
493
- msgstr ""
494
- "Este mensaje reemplaza el contenido de la entrada para visitantes no logeados"
495
-
496
- #: adminpages/advancedsettings.php:103
497
- msgid "Message for RSS Feed"
498
- msgstr "Mensaje para Feed RSS"
499
-
500
- #: adminpages/advancedsettings.php:107
501
- msgid "This message replaces the post content in RSS feeds."
502
- msgstr "Este mensaje reemplaza el contenido de la entrada en los feeds RSS"
503
-
504
- #: adminpages/advancedsettings.php:113
505
- msgid "Show Excerpts to Non-Members?"
506
- msgstr "Mostrar Extracto a no miembros?"
507
-
508
- #: adminpages/advancedsettings.php:117
509
- msgid "No - Hide excerpts."
510
- msgstr "No - Esconder Extracto."
511
-
512
- #: adminpages/advancedsettings.php:118
513
- msgid "Yes - Show excerpts."
514
- msgstr "Si - Mostrar Extracto."
515
-
516
- #: adminpages/advancedsettings.php:129
517
- msgid "Hide Ads From All Members"
518
- msgstr "Esconder anuncios para todos los miembros"
519
-
520
- #: adminpages/advancedsettings.php:130
521
- msgid "Hide Ads From Certain Members"
522
- msgstr "Esconder anuncios para ciertos miembros"
523
-
524
- #: adminpages/advancedsettings.php:137
525
- msgid "Ads from the following plugins will be automatically turned off"
526
- msgstr "Anuncios de los siguientes plugins serán automaticamente desactivados"
527
-
528
- #: adminpages/advancedsettings.php:138
529
- msgid "To hide ads in your template code, use code like the following"
530
- msgstr ""
531
- "Para esconder anuncios en el código de tus plantillas, usa codigo como el "
532
- "siguiente"
533
-
534
- #: adminpages/advancedsettings.php:149
535
- msgid "Choose Levels to Hide Ads From"
536
- msgstr "Elige niveles para los cuales esconder anuncios"
537
-
538
- #: adminpages/advancedsettings.php:183
539
- msgid "Redirect all traffic from registration page to /susbcription/?"
540
- msgstr "Redirigir todo el tráfico de la página de registro a /subscription/?"
541
-
542
- #: adminpages/advancedsettings.php:183
543
- msgid "multisite only"
544
- msgstr "Solo multisitio"
545
-
546
- #: adminpages/advancedsettings.php:195
547
- msgid "Use reCAPTCHA?"
548
- msgstr "Usar reCAPTCHA?"
549
-
550
- #: adminpages/advancedsettings.php:200
551
- msgid "Yes - Free memberships only."
552
- msgstr "Si - Solo membresías gratuitas."
553
-
554
- #: adminpages/advancedsettings.php:201
555
- msgid "Yes - All memberships."
556
- msgstr "Si - Todas las membresías."
557
-
558
- #: adminpages/advancedsettings.php:203
559
- msgid "A free reCAPTCHA key is required."
560
- msgstr "Una clave gratuita de reCAPTCHA es necesaria."
561
-
562
- #: adminpages/advancedsettings.php:203
563
- msgid "Click here to signup for reCAPTCHA"
564
- msgstr "Haz click aquí para registrarte en reCAPTCHA"
565
-
566
- #: adminpages/advancedsettings.php:209
567
- msgid "reCAPTCHA Public Key"
568
- msgstr "Clave pública reCAPTCHA"
569
-
570
- #: adminpages/advancedsettings.php:212
571
- msgid "reCAPTCHA Private Key"
572
- msgstr "Clave privada reCAPTCHA"
573
-
574
- #: adminpages/advancedsettings.php:218
575
- msgid "Require Terms of Service on signups?"
576
- msgstr "Requerir términos de servicio durante el registro?"
577
-
578
- #: adminpages/advancedsettings.php:225
579
- msgid ""
580
- "If yes, create a WordPress page containing your TOS agreement and assign it "
581
- "using the dropdown above."
582
- msgstr ""
583
- "En caso positivo, crear una página WordPress que contiene tus términos de "
584
- "servicio y asignala usando el desplegable superior."
585
-
586
- #: adminpages/advancedsettings.php:284 adminpages/pagesettings.php:209
587
- #: adminpages/paymentsettings.php:485
588
- msgid "Save Settings"
589
- msgstr "Guardar opciones"
590
-
591
- #: adminpages/discountcodes.php:48
592
- msgid "Discount code updated successfully."
593
- msgstr "Cupón de descuento actualizado correctamente."
594
-
595
- #: adminpages/discountcodes.php:55
596
- msgid "Error updating discount code. That code may already be in use."
597
- msgstr ""
598
- "Error actualizando el cupón de descuento. Es posible que el cupón "
599
- "introducido ya este en uso."
600
-
601
- #: adminpages/discountcodes.php:64
602
- msgid "Discount code added successfully."
603
- msgstr "Cupón de descuento añadido correctamente."
604
-
605
- #: adminpages/discountcodes.php:71
606
- msgid "Error adding discount code. That code may already be in use."
607
- msgstr ""
608
- "Error añadiendo cupón de descuento. Es posible que ese cupón ya este en uso."
609
-
610
- #: adminpages/discountcodes.php:196
611
- #, php-format
612
- msgid "Error saving values for the %s level."
613
- msgstr "Error guardando valores para el nivel %s."
614
-
615
- #: adminpages/discountcodes.php:204
616
- msgid "There were errors updating the level values: "
617
- msgstr "Hubo errores actualizando los valores del nivel:"
618
-
619
- #: adminpages/discountcodes.php:234
620
- #, php-format
621
- msgid "Code %s deleted successfully."
622
- msgstr "Cupón %s borrado correctamente."
623
-
624
- #: adminpages/discountcodes.php:239
625
- msgid ""
626
- "Error deleting discount code. The code was only partially deleted. Please "
627
- "try again."
628
- msgstr ""
629
- "Error borrando cupón de descuento. El cupón fue parcialmente eliminado. Por "
630
- "favor inténtelo de nuevo."
631
-
632
- #: adminpages/discountcodes.php:245
633
- msgid "Error deleting code. Please try again."
634
- msgstr "Error eliminado el cupón. Por favor intentelo de nuevo."
635
-
636
- #: adminpages/discountcodes.php:251
637
- msgid "Code not found."
638
- msgstr "Cupón no encontrado."
639
-
640
- #: adminpages/discountcodes.php:264
641
- msgid "Edit Discount Code"
642
- msgstr "Edita el cupón de descuento."
643
-
644
- #: adminpages/discountcodes.php:266 adminpages/discountcodes.php:526
645
- msgid "Add New Discount Code"
646
- msgstr "Añade un nuevo cupón de descuento."
647
-
648
- #: adminpages/discountcodes.php:306 adminpages/discountcodes.php:547
649
- #: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:505
650
- #: adminpages/memberslist.php:111 adminpages/orders.php:597
651
- #: adminpages/reports/login.php:140
652
- msgid "ID"
653
- msgstr "ID"
654
-
655
- #: adminpages/discountcodes.php:307 adminpages/orders.php:211
656
- msgid "This will be generated when you save."
657
- msgstr "Esto será generado cuando guardes."
658
-
659
- #: adminpages/discountcodes.php:311 adminpages/discountcodes.php:548
660
- #: adminpages/orders.php:215 adminpages/orders.php:598
661
- msgid "Code"
662
- msgstr "Cupón"
663
-
664
- #: adminpages/discountcodes.php:349
665
- msgid "Start Date"
666
- msgstr "Fecha de inicio"
667
-
668
- #: adminpages/discountcodes.php:367 pages/billing.php:249
669
- #: pages/checkout.php:525
670
- msgid "Expiration Date"
671
- msgstr "Fecha de expiración"
672
-
673
- #: adminpages/discountcodes.php:385 adminpages/discountcodes.php:551
674
- msgid "Uses"
675
- msgstr "Usa"
676
-
677
- #: adminpages/discountcodes.php:388
678
- msgid "Leave blank for unlimited uses."
679
- msgstr "Dejar en blanco para permitir uso ilimitado."
680
-
681
- #: adminpages/discountcodes.php:427 adminpages/membershiplevels.php:337
682
- #: adminpages/membershiplevels.php:507 pages/levels.php:14
683
- msgid "Initial Payment"
684
- msgstr "Pago inicial"
685
-
686
- #: adminpages/discountcodes.php:428 adminpages/membershiplevels.php:338
687
- msgid "The initial amount collected at registration."
688
- msgstr "La cantidad inicial recogida durante el registro."
689
-
690
- #: adminpages/discountcodes.php:432 adminpages/membershiplevels.php:342
691
- msgid "Recurring Subscription"
692
- msgstr "Subscripción recurrente."
693
-
694
- #: adminpages/discountcodes.php:433 adminpages/membershiplevels.php:343
695
- msgid "Check if this level has a recurring subscription payment."
696
- msgstr "Comprobar si el nivel tiene una subscripción de pago recurrente."
697
-
698
- #: adminpages/discountcodes.php:437
699
- msgid "Billing Ammount"
700
- msgstr "Cantidad a facturar"
701
-
702
- #: adminpages/discountcodes.php:451 adminpages/membershiplevels.php:362
703
- msgid "The amount to be billed one cycle after the initial payment."
704
- msgstr "La cantidad que se cobrará un ciclo despues del pago inicial."
705
-
706
- #: adminpages/discountcodes.php:456 adminpages/membershiplevels.php:380
707
- msgid "Billing Cycle Limit"
708
- msgstr "Límite del ciclo de facturación"
709
-
710
- #: adminpages/discountcodes.php:459 adminpages/membershiplevels.php:384
711
- msgid ""
712
- "The <strong>total</strong> number of recurring billing cycles for this "
713
- "level, including the trial period (if applicable) but not including the "
714
- "initial payment. Set to zero if membership is indefinite."
715
- msgstr ""
716
- "El número <strong>total</strong>de ciclos recurrentes para este nivel, "
717
- "incluyendo el periodo de prueba ( si existe) pero no incluyendo el pago "
718
- "inicial. "
719
-
720
- #: adminpages/discountcodes.php:464 adminpages/membershiplevels.php:393
721
- msgid "Custom Trial"
722
- msgstr "Periodo de prueba personalizado"
723
-
724
- #: adminpages/discountcodes.php:465 adminpages/membershiplevels.php:394
725
- msgid "Check to add a custom trial period."
726
- msgstr "Seleccionar para añadir un periodo de prueba personalizado."
727
-
728
- #: adminpages/discountcodes.php:469 adminpages/membershiplevels.php:398
729
- msgid "Trial Billing Amount"
730
- msgstr "Cantidad a facturar por periodo de prueba"
731
-
732
- #: adminpages/discountcodes.php:472 adminpages/membershiplevels.php:401
733
- msgid "for the first"
734
- msgstr "por el/los primer/os"
735
-
736
- #: adminpages/discountcodes.php:474 adminpages/membershiplevels.php:403
737
- msgid "subscription payments"
738
- msgstr "pagos de susbscipción"
739
-
740
- #: adminpages/discountcodes.php:479 adminpages/membershiplevels.php:431
741
- msgid "Membership Expiration"
742
- msgstr "Expiración de la membresía"
743
-
744
- #: adminpages/discountcodes.php:480
745
- msgid "Check this to set an expiration date for new sign ups."
746
- msgstr "Marcar para seleccionar una fecha de expiración para nuevos registros."
747
-
748
- #: adminpages/discountcodes.php:484 adminpages/membershiplevels.php:436
749
- msgid "Expires In"
750
- msgstr "Expira en"
751
-
752
- #: adminpages/discountcodes.php:497
753
- msgid ""
754
- "How long before the expiration expires. Note that any future payments will "
755
- "be cancelled when the membership expires."
756
- msgstr ""
757
- "Cuanto tiempo ha de pasar antes de que la expiración expire. Ten en cuenta "
758
- "que los pagos futuros serán cancelados cuando la membresía expire."
759
-
760
- #: adminpages/discountcodes.php:525
761
- msgid "Memberships Discount Codes"
762
- msgstr "Cupónes de descuento de membresías"
763
-
764
- #: adminpages/discountcodes.php:535
765
- msgid "Search Discount Codes"
766
- msgstr "Buscar cupones de descuento"
767
-
768
- #: adminpages/discountcodes.php:538 adminpages/reports/login.php:81
769
- msgid "Search"
770
- msgstr "Busqueda"
771
-
772
- #: adminpages/discountcodes.php:549
773
- msgid "Starts"
774
- msgstr "Estadísticas"
775
-
776
- #: adminpages/discountcodes.php:552
777
- msgid "Levels"
778
- msgstr "Niveles"
779
-
780
- #: adminpages/discountcodes.php:570
781
- msgid ""
782
- "Discount codes allow you to offer your memberships at discounted prices to "
783
- "select customers."
784
- msgstr ""
785
- "Los cupones de descuento te permiten ofrecer tus membresías a precios "
786
- "descontados para cierto clientes."
787
-
788
- #: adminpages/discountcodes.php:570
789
- msgid "Create your first discount code now"
790
- msgstr "Crea tu primer cupón de descuento ahora"
791
-
792
- #: adminpages/discountcodes.php:614 adminpages/membershiplevels.php:564
793
- #: adminpages/orders.php:658
794
- msgid "edit"
795
- msgstr "editar"
796
-
797
- #: adminpages/discountcodes.php:617
798
- #, php-format
799
- msgid ""
800
- "Are you sure you want to delete the %s discount code? The subscriptions for "
801
- "existing users will not change, but new users will not be able to use this "
802
- "code anymore."
803
- msgstr ""
804
- "Estas seguro que quieres borrar los %s cupones de descuento? Las "
805
- "subscripciones para los usuarios existentes no cambiarán, pero nuevos "
806
- "usuarios no podrán usar este cupón."
807
-
808
- #: adminpages/discountcodes.php:617 adminpages/membershiplevels.php:566
809
- #: adminpages/orders.php:664
810
- msgid "delete"
811
- msgstr "borrar"
812
-
813
- #: adminpages/emailsettings.php:61
814
- msgid ""
815
- "By default, system generated emails are sent from "
816
- "<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
817
- "address using the fields below."
818
- msgstr ""
819
- "Por defecto, emails generados por el sistema son enviades desde "
820
- "<em><strong>wordpress@tudominio.com</strong></em>. Puedes actualizar esta "
821
- "dirección desde usando los campos de aqui abajo."
822
-
823
- #: adminpages/emailsettings.php:63
824
- msgid ""
825
- "To modify the appearance of system generated emails, add the files "
826
- "<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
827
- "directory. This will modify both the WordPress default messages as well as "
828
- "messages generated by Paid Memberships Pro. <a title=\"Paid Memberships Pro "
829
- "- Member Communications\" target=\"_blank\" href=\"http://www."
830
- "paidmembershipspro.com/documentation/member-communications/\">Click here to "
831
- "learn more about Paid Memberships Pro emails</a>."
832
- msgstr ""
833
- "Para modificar la apariencia de los emails generados por el sistema, añade "
834
- "los archivos <em>email_header.html</em> y <em>email_footer.html</em> al "
835
- "directorio de tu tema. Esto modificará los mensajes originales de wordpress "
836
- "tanto como los mensajes generados por Paid Memberships Pro. <a title=\"Paid "
837
- "Memberships Pro - Comunicaciones a miembros\" target=\"_blank\" href="
838
- "\"http://www.paidmembershipspro.com/documentation/member-communications/"
839
- "\">Haz click aquí para aprender sobre los emails de Paid Memberships Pro</a>."
840
-
841
- #: adminpages/emailsettings.php:69
842
- msgid "From Email"
843
- msgstr "Campo desde del email"
844
-
845
- #: adminpages/emailsettings.php:77
846
- msgid "From Name"
847
- msgstr "Campo nombre del email"
848
-
849
- #: adminpages/emailsettings.php:86
850
- msgid "Send the site admin emails"
851
- msgstr "Envía al administrador emails"
852
-
853
- #: adminpages/emailsettings.php:92
854
- msgid "Checkout"
855
- msgstr "Procesamiento de pago"
856
-
857
- #: adminpages/emailsettings.php:96
858
- msgid "when a member checks out."
859
- msgstr "Cuando un miembro paga"
860
-
861
- #: adminpages/emailsettings.php:101
862
- msgid "Admin Changes"
863
- msgstr "Cambios por el Admin"
864
-
865
- #: adminpages/emailsettings.php:105
866
- msgid "when an admin changes a user's membership level through the dashboard."
867
- msgstr ""
868
- "cuando un administrador cambia el nivel de un usuario a traves del "
869
- "Escritorio."
870
-
871
- #: adminpages/emailsettings.php:110
872
- msgid "Cancellation"
873
- msgstr "Cancelación"
874
-
875
- #: adminpages/emailsettings.php:114
876
- msgid "when a user cancels his or her account."
877
- msgstr "cuando un usuario cancela su cuenta."
878
-
879
- #: adminpages/emailsettings.php:119
880
- msgid "Bill Updates"
881
- msgstr "Actualización de información de facturación"
882
-
883
- #: adminpages/emailsettings.php:123
884
- msgid "when a user updates his or her billing information."
885
- msgstr "Cuando un usuario cambia su información de facturación."
886
-
887
- #: adminpages/emailsettings.php:129
888
- msgid "Send members emails"
889
- msgstr "Enviar emails a miembros"
890
-
891
- #: adminpages/emailsettings.php:135
892
- msgid "New Users"
893
- msgstr "Nuevos usuarios"
894
-
895
- #: adminpages/emailsettings.php:139
896
- msgid ""
897
- "Default WP notification email. (Recommended: Leave unchecked. Members will "
898
- "still get an email confirmation from PMPro after checkout.)"
899
- msgstr ""
900
- "Notificación por defecto de WordPress. (Recomendad: Dejar sin seleccionar. "
901
- "Los miembros recibiran una confirmación por email de PMPro despues del "
902
- "procesamiento de pago(checkout).)"
903
-
904
- #: adminpages/membershiplevels.php:118
905
- msgid "Membership level updated successfully."
906
- msgstr "Nivel de membresa actualizado correctamente."
907
-
908
- #: adminpages/membershiplevels.php:124
909
- msgid "Error updating membership level."
910
- msgstr "Error actualizando el nivel de membresa."
911
-
912
- #: adminpages/membershiplevels.php:141
913
- msgid "Membership level added successfully."
914
- msgstr "Nivel de membresa añadido correctamente."
915
-
916
- #: adminpages/membershiplevels.php:146
917
- msgid "Error adding membership level."
918
- msgstr "Error añadiendo nivel de membresía."
919
-
920
- #: adminpages/membershiplevels.php:179
921
- #, php-format
922
- msgid ""
923
- "There was an error canceling the subscription for user with ID=%d. You will "
924
- "want to check your payment gateway to see if their subscription is still "
925
- "active."
926
- msgstr ""
927
- "Hubo un error cancelando la subscripción para el usuario con ID=%d. Deberías "
928
- "comprobar tu pasarela de pagos y ver si la subscripción sigue activa."
929
-
930
- #: adminpages/membershiplevels.php:182
931
- msgid "Last Invoice"
932
- msgstr "Última factura"
933
-
934
- #: adminpages/membershiplevels.php:196
935
- msgid "Membership level deleted successfully."
936
- msgstr "Nivel de mebresa eliminado correctamente."
937
-
938
- #: adminpages/membershiplevels.php:201 adminpages/membershiplevels.php:207
939
- msgid "Error deleting membership level."
940
- msgstr "Error eliminando nivel de membresía."
941
-
942
- #: adminpages/membershiplevels.php:222
943
- msgid "Edit Membership Level"
944
- msgstr "Editar nivel de membresía"
945
-
946
- #: adminpages/membershiplevels.php:224
947
- msgid "Add New Membership Level"
948
- msgstr "Añade un nuevo nivel de membresía"
949
-
950
- #: adminpages/membershiplevels.php:291 adminpages/membershiplevels.php:506
951
- #: adminpages/reports/login.php:142
952
- msgid "Name"
953
- msgstr "Nombre"
954
-
955
- #: adminpages/membershiplevels.php:296
956
- msgid "Description"
957
- msgstr "Descripción"
958
-
959
- #: adminpages/membershiplevels.php:314
960
- msgid "Confirmation Message"
961
- msgstr "Mensaje de confirmación"
962
-
963
- #: adminpages/membershiplevels.php:333
964
- msgid "Billing Details"
965
- msgstr "Detalles de facturación"
966
-
967
- #: adminpages/membershiplevels.php:347
968
- msgid "Billing Amount"
969
- msgstr "Cantidad a facturar"
970
-
971
- #: adminpages/membershiplevels.php:349
972
- msgid "per"
973
- msgstr "por"
974
-
975
- #: adminpages/membershiplevels.php:353
976
- msgid "Day(s)"
977
- msgstr "Día(s)"
978
-
979
- #: adminpages/membershiplevels.php:353
980
- msgid "Week(s)"
981
- msgstr "Semana(s)"
982
-
983
- #: adminpages/membershiplevels.php:353
984
- msgid "Month(s)"
985
- msgstr "Mes(es)"
986
-
987
- #: adminpages/membershiplevels.php:353
988
- msgid "Year(s)"
989
- msgstr "Año(s)"
990
-
991
- #: adminpages/membershiplevels.php:364
992
- msgid ""
993
- "Stripe integration currently only supports billing periods of \"Month\" or "
994
- "\"Year\"."
995
- msgstr ""
996
- "La integración con Stripe actualmente solo soporta periodos de facturación "
997
- "\"mensuales \" o \"anuales \"."
998
-
999
- #: adminpages/membershiplevels.php:366
1000
- msgid ""
1001
- "Braintree integration currently only supports billing periods of \"Month\" "
1002
- "or \"Year\"."
1003
- msgstr ""
1004
- "La integración con Braintree actualmente solo soporta periodos de "
1005
- "facturación \"mensuales \" o \"anuales \"."
1006
-
1007
- #: adminpages/membershiplevels.php:368
1008
- msgid ""
1009
- "Payflow integration currently only supports billing frequencies of 1 and "
1010
- "billing periods of \"Week\", \"Month\" or \"Year\"."
1011
- msgstr ""
1012
- "La integración con Payflow actualmente solo soporta frecuencias de 1 pago y "
1013
- "periodos de facturación \"mensuales \" o \"anuales \"."
1014
-
1015
- #: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
1016
- #: adminpages/paymentsettings.php:170
1017
- msgid "Note"
1018
- msgstr "Nota"
1019
-
1020
- #: adminpages/membershiplevels.php:372
1021
- msgid ""
1022
- "After saving this level, make note of the ID and create a \"Plan\" in your "
1023
- "Braintree dashboard with the same settings and the \"Plan ID\" set to "
1024
- "<em>pmpro_#</em>, where # is the level ID."
1025
- msgstr ""
1026
- "Despues de guardar este nivel, apunta la ID y crea un \"Plan\" en tu "
1027
- "escritorio de Braintree con las mismas opciones y el \"Plan ID\" con valor "
1028
- "<em>pmpro_#</em> donde # es el ID de nivel."
1029
-
1030
- #: adminpages/membershiplevels.php:374
1031
- msgid ""
1032
- "You will need to create a \"Plan\" in your Braintree dashboard with the same "
1033
- "settings and the \"Plan ID\" set to"
1034
- msgstr ""
1035
- "Necesitas crear un \"Plan\" en el escritorio de tu Braintree con las mismas "
1036
- "opciones y el \"Plan ID\" con valor"
1037
-
1038
- #: adminpages/membershiplevels.php:386
1039
- msgid ""
1040
- "Stripe integration currently does not support billing limits. You can still "
1041
- "set an expiration date below."
1042
- msgstr ""
1043
- "La integración con Stripe actualmente no soporta límites de facturación. "
1044
- "Pero puedes elegir una fecha de expiración aqui abajo."
1045
-
1046
- #: adminpages/membershiplevels.php:406
1047
- msgid ""
1048
- "Stripe integration currently does not support trial amounts greater than $0."
1049
- msgstr ""
1050
- "La integracion con Stripe actualmente no soporta cantidades para el periodo "
1051
- "de prueba superiores a $0."
1052
-
1053
- #: adminpages/membershiplevels.php:410
1054
- msgid ""
1055
- "Braintree integration currently does not support trial amounts greater than "
1056
- "$0."
1057
- msgstr ""
1058
- "La integracion con Braintree actualmente no soporta cantidades para el "
1059
- "periodo de prueba superiores a $0."
1060
-
1061
- #: adminpages/membershiplevels.php:414
1062
- msgid ""
1063
- "Payflow integration currently does not support trial amounts greater than $0."
1064
- msgstr ""
1065
- "La integracion con Payflow actualmente no soporta cantidades para el periodo "
1066
- "de prueba superiores a $0."
1067
-
1068
- #: adminpages/membershiplevels.php:422
1069
- msgid "Other Settings"
1070
- msgstr "Otras opciones"
1071
-
1072
- #: adminpages/membershiplevels.php:426
1073
- msgid "Disable New Signups"
1074
- msgstr "Desactivar nuevos registros"
1075
-
1076
- #: adminpages/membershiplevels.php:427
1077
- msgid ""
1078
- "Check to hide this level from the membership levels page and disable "
1079
- "registration."
1080
- msgstr ""
1081
- "Marcar para esconder este nivel de la página de membresías y desactivar "
1082
- "registro."
1083
-
1084
- #: adminpages/membershiplevels.php:432
1085
- msgid "Check this to set when membership access expires."
1086
- msgstr "Marcar esto para elegir cuando termina el acceso a la membresía."
1087
-
1088
- #: adminpages/membershiplevels.php:449
1089
- msgid ""
1090
- "Set the duration of membership access. Note that the any future payments "
1091
- "(recurring subscription, if any) will be cancelled when the membership "
1092
- "expires."
1093
- msgstr ""
1094
- "Elige la duración de acceso para la membresía. Ten en cuenta que cualquier "
1095
- "futuro pago ( subscripciones recurrentes, si las hay) serán canceladas "
1096
- "cuando la membresía expire."
1097
-
1098
- #: adminpages/membershiplevels.php:457
1099
- msgid "Content Settings"
1100
- msgstr "Opciones de contenido"
1101
-
1102
- #: adminpages/membershiplevels.php:461
1103
- msgid "Categories"
1104
- msgstr "Categorías"
1105
-
1106
- #: adminpages/membershiplevels.php:490
1107
- msgid "Add New Level"
1108
- msgstr "Añadir un nuevo nivel"
1109
-
1110
- #: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
1111
- msgid "Search Levels"
1112
- msgstr "Buscar Niveles"
1113
-
1114
- #: adminpages/me