Version Description
- Added a new feature in the email settings menu to allow disabling of the "Account Upgraded" email notification.
Download this release
Release Info
| Developer | mra13 |
| Plugin | |
| Version | 3.8.9 |
| Comparing to | |
| See all releases | |
Code changes from version 3.8.4 to 3.8.9
- classes/admin-includes/class.swpm-payment-buttons-list-table.php +2 -1
- classes/admin-includes/class.swpm-payments-admin-menu.php +3 -1
- classes/admin-includes/class.swpm-payments-list-table.php +223 -192
- classes/class.simple-wp-membership.php +33 -4
- classes/class.swpm-ajax.php +9 -1
- classes/class.swpm-auth.php +3 -2
- classes/class.swpm-category-list.php +8 -1
- classes/class.swpm-front-registration.php +1 -0
- classes/class.swpm-init-time-tasks.php +14 -0
- classes/class.swpm-members.php +21 -1
- classes/class.swpm-membership-levels.php +4 -2
- classes/class.swpm-post-list.php +8 -1
- classes/class.swpm-settings.php +8 -2
- classes/class.swpm-transactions.php +19 -0
- classes/class.swpm-utils-misc.php +30 -1
- classes/class.swpm-utils.php +17 -4
- ipn/swpm-braintree-buy-now-ipn.php +1 -0
- ipn/swpm-smart-checkout-ipn.php +403 -354
- ipn/swpm-stripe-buy-now-ipn.php +162 -154
- ipn/swpm-stripe-subscription-ipn.php +172 -171
- ipn/swpm_handle_pp_ipn.php +290 -315
- ipn/swpm_handle_subsc_ipn.php +316 -268
- js/jquery.validationEngine-en.js +2 -2
- languages/simple-membership-de_DE.mo +0 -0
- languages/simple-membership-de_DE.po +3109 -3081
- languages/simple-membership.pot +14 -6
- lib/stripe-util-functions.php +3 -1
- readme.txt +25 -1
- simple-wp-membership.php +2 -2
- views/admin_add_ons_page.php +4 -0
- views/admin_addon_settings.php +3 -2
- views/admin_category_list.php +6 -2
- views/admin_post_list.php +11 -3
- views/payments/admin_create_payment_buttons.php +3 -0
- views/payments/payment-gateway/admin_braintree_buy_now_button.php +3 -0
- views/payments/payment-gateway/admin_paypal_buy_now_button.php +7 -1
- views/payments/payment-gateway/admin_paypal_smart_checkout_button.php +6 -0
- views/payments/payment-gateway/admin_paypal_subscription_button.php +8 -1
- views/payments/payment-gateway/admin_stripe_buy_now_button.php +6 -1
- views/payments/payment-gateway/admin_stripe_subscription_button.php +3 -2
- views/payments/payment-gateway/braintree_button_shortcode_view.php +26 -11
- views/payments/payment-gateway/paypal_button_shortcode_view.php +11 -2
- views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php +16 -3
- views/payments/payment-gateway/stripe_button_shortcode_view.php +12 -2
classes/admin-includes/class.swpm-payment-buttons-list-table.php
CHANGED
|
@@ -33,7 +33,8 @@ class SwpmPaymentButtonsListTable extends WP_List_Table {
|
|
| 33 |
break;
|
| 34 |
case 'button_type':
|
| 35 |
$button_type = get_post_meta($item['ID'], 'button_type', true);
|
| 36 |
-
|
|
|
|
| 37 |
break;
|
| 38 |
case 'button_shortcode':
|
| 39 |
$level_id = get_post_meta($item['ID'], 'membership_level_id', true);
|
| 33 |
break;
|
| 34 |
case 'button_type':
|
| 35 |
$button_type = get_post_meta($item['ID'], 'button_type', true);
|
| 36 |
+
$button_name=SwpmMiscUtils::get_button_type_name($button_type);
|
| 37 |
+
return $button_name;
|
| 38 |
break;
|
| 39 |
case 'button_shortcode':
|
| 40 |
$level_id = get_post_meta($item['ID'], 'membership_level_id', true);
|
classes/admin-includes/class.swpm-payments-admin-menu.php
CHANGED
|
@@ -7,8 +7,10 @@ class SwpmPaymentsAdminMenu {
|
|
| 7 |
}
|
| 8 |
|
| 9 |
function handle_main_payments_admin_menu() {
|
| 10 |
-
|
| 11 |
do_action('swpm_payments_menu_start');
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
$output = '';
|
| 14 |
$tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : '';
|
| 7 |
}
|
| 8 |
|
| 9 |
function handle_main_payments_admin_menu() {
|
|
|
|
| 10 |
do_action('swpm_payments_menu_start');
|
| 11 |
+
|
| 12 |
+
//Check current_user_can() or die.
|
| 13 |
+
SwpmMiscUtils::check_user_permission_and_is_admin('Main Payments Admin Menu');
|
| 14 |
|
| 15 |
$output = '';
|
| 16 |
$tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : '';
|
classes/admin-includes/class.swpm-payments-list-table.php
CHANGED
|
@@ -1,192 +1,223 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
if (!class_exists('WP_List_Table')){
|
| 4 |
-
|
| 5 |
-
}
|
| 6 |
-
|
| 7 |
-
class SWPMPaymentsListTable extends WP_List_Table {
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
)
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
if ( ! class_exists( 'WP_List_Table' ) ) {
|
| 4 |
+
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
class SWPMPaymentsListTable extends WP_List_Table {
|
| 8 |
+
|
| 9 |
+
public function __construct() {
|
| 10 |
+
global $status, $page;
|
| 11 |
+
|
| 12 |
+
// Set parent defaults
|
| 13 |
+
parent::__construct(
|
| 14 |
+
array(
|
| 15 |
+
'singular' => 'transaction', // singular name of the listed records
|
| 16 |
+
'plural' => 'transactions', // plural name of the listed records
|
| 17 |
+
'ajax' => false, // does this table support ajax?
|
| 18 |
+
)
|
| 19 |
+
);
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
function column_default( $item, $column_name ) {
|
| 23 |
+
$val = $item[ $column_name ];
|
| 24 |
+
switch ( $column_name ) {
|
| 25 |
+
case 'payment_amount':
|
| 26 |
+
$val = SwpmMiscUtils::format_money( $val );
|
| 27 |
+
$val = apply_filters( 'swpm_transactions_page_amount_display', $val, $item );
|
| 28 |
+
break;
|
| 29 |
+
default:
|
| 30 |
+
break;
|
| 31 |
+
}
|
| 32 |
+
return $val;
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
function column_id( $item ) {
|
| 36 |
+
|
| 37 |
+
// Build row actions
|
| 38 |
+
$actions = array(
|
| 39 |
+
/* 'edit' => sprintf('<a href="admin.php?page=simple_wp_membership_payments&edit_txn=%s">Edit</a>', $item['id']),//TODO - Will be implemented in a future date */
|
| 40 |
+
'delete' => sprintf( '<a href="admin.php?page=simple_wp_membership_payments&action=delete_txn&id=%s" onclick="return confirm(\'Are you sure you want to delete this record?\')">Delete</a>', $item['id'] ),
|
| 41 |
+
);
|
| 42 |
+
|
| 43 |
+
// Return the refid column contents
|
| 44 |
+
return $item['id'] . $this->row_actions( $actions );
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
function column_member_profile( $item ) {
|
| 48 |
+
global $wpdb;
|
| 49 |
+
$member_id = $item['member_id'];
|
| 50 |
+
$subscr_id = $item['subscr_id'];
|
| 51 |
+
$column_value = '';
|
| 52 |
+
|
| 53 |
+
if ( empty( $member_id ) ) {// Lets try to get the member id using unique reference
|
| 54 |
+
if ( ! empty( $subscr_id ) ) {
|
| 55 |
+
$resultset = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id=%s", $subscr_id ), OBJECT );
|
| 56 |
+
if ( $resultset ) {
|
| 57 |
+
// Found a record
|
| 58 |
+
$member_id = $resultset->member_id;
|
| 59 |
+
}
|
| 60 |
+
}
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
if ( ! empty( $member_id ) ) {
|
| 64 |
+
$profile_page = 'admin.php?page=simple_wp_membership&member_action=edit&member_id=' . $member_id;
|
| 65 |
+
$column_value = '<a href="' . $profile_page . '">' . SwpmUtils::_( 'View Profile' ) . '</a>';
|
| 66 |
+
} else {
|
| 67 |
+
$column_value = '';
|
| 68 |
+
}
|
| 69 |
+
return $column_value;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
function column_cb( $item ) {
|
| 73 |
+
return sprintf(
|
| 74 |
+
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
| 75 |
+
/* $1%s */ $this->_args['singular'], // Let's reuse singular label (affiliate)
|
| 76 |
+
/* $2%s */ $item['id'] // The value of the checkbox should be the record's key/id
|
| 77 |
+
);
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
function get_columns() {
|
| 81 |
+
$columns = array(
|
| 82 |
+
'cb' => '<input type="checkbox" />', // Render a checkbox instead of text
|
| 83 |
+
'id' => SwpmUtils::_( 'Row ID' ),
|
| 84 |
+
'email' => SwpmUtils::_( 'Email Address' ),
|
| 85 |
+
'first_name' => SwpmUtils::_( 'First Name' ),
|
| 86 |
+
'last_name' => SwpmUtils::_( 'Last Name' ),
|
| 87 |
+
'member_profile' => SwpmUtils::_( 'Member Profile' ),
|
| 88 |
+
'txn_date' => SwpmUtils::_( 'Date' ),
|
| 89 |
+
'txn_id' => SwpmUtils::_( 'Transaction ID' ),
|
| 90 |
+
'subscr_id' => SwpmUtils::_( 'Subscriber ID' ),
|
| 91 |
+
'payment_amount' => SwpmUtils::_( 'Amount' ),
|
| 92 |
+
'membership_level' => SwpmUtils::_( 'Membership Level' ),
|
| 93 |
+
);
|
| 94 |
+
return $columns;
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
function get_sortable_columns() {
|
| 98 |
+
$sortable_columns = array(
|
| 99 |
+
'id' => array( 'id', false ), // true means its already sorted
|
| 100 |
+
'membership_level' => array( 'membership_level', false ),
|
| 101 |
+
'last_name' => array( 'last_name', false ),
|
| 102 |
+
'txn_date' => array( 'txn_date', false ),
|
| 103 |
+
);
|
| 104 |
+
return $sortable_columns;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
function get_bulk_actions() {
|
| 108 |
+
$actions = array(
|
| 109 |
+
'delete' => SwpmUtils::_( 'Delete' ),
|
| 110 |
+
);
|
| 111 |
+
return $actions;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
function process_bulk_action() {
|
| 115 |
+
// Detect when a bulk action is being triggered...
|
| 116 |
+
if ( 'delete' === $this->current_action() ) {
|
| 117 |
+
$records_to_delete = array_map( 'sanitize_text_field', $_GET['transaction'] );
|
| 118 |
+
if ( empty( $records_to_delete ) ) {
|
| 119 |
+
echo '<div id="message" class="updated fade"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
|
| 120 |
+
return;
|
| 121 |
+
}
|
| 122 |
+
foreach ( $records_to_delete as $record_id ) {
|
| 123 |
+
if ( ! is_numeric( $record_id ) ) {
|
| 124 |
+
wp_die( 'Error! ID must be numeric.' );
|
| 125 |
+
}
|
| 126 |
+
global $wpdb;
|
| 127 |
+
$wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'swpm_payments_tbl WHERE id = %d', $record_id ) );
|
| 128 |
+
}
|
| 129 |
+
echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
function delete_record( $record_id ) {
|
| 134 |
+
global $wpdb;
|
| 135 |
+
$wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'swpm_payments_tbl WHERE id = %d', $record_id ) );
|
| 136 |
+
// also delete record from swpm_transactions CPT
|
| 137 |
+
$trans = get_posts(
|
| 138 |
+
array(
|
| 139 |
+
'meta_key' => 'db_row_id',
|
| 140 |
+
'meta_value' => $record_id,
|
| 141 |
+
'posts_per_page' => 1,
|
| 142 |
+
'offset' => 0,
|
| 143 |
+
'post_type' => 'swpm_transactions',
|
| 144 |
+
)
|
| 145 |
+
);
|
| 146 |
+
wp_reset_postdata();
|
| 147 |
+
if ( empty( $trans ) ) {
|
| 148 |
+
return;
|
| 149 |
+
}
|
| 150 |
+
$trans = $trans[0];
|
| 151 |
+
wp_delete_post( $trans->ID, true );
|
| 152 |
+
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
function prepare_items() {
|
| 156 |
+
global $wpdb;
|
| 157 |
+
|
| 158 |
+
// Lets decide how many records per page to show
|
| 159 |
+
$per_page = apply_filters( 'swpm_transactions_menu_items_per_page', 50 );
|
| 160 |
+
|
| 161 |
+
$columns = $this->get_columns();
|
| 162 |
+
$hidden = array();
|
| 163 |
+
$sortable = $this->get_sortable_columns();
|
| 164 |
+
|
| 165 |
+
$this->_column_headers = array( $columns, $hidden, $sortable );
|
| 166 |
+
|
| 167 |
+
$this->process_bulk_action();
|
| 168 |
+
|
| 169 |
+
// This checks for sorting input. Read and sanitize the inputs
|
| 170 |
+
$orderby_column = isset( $_GET['orderby'] ) ? sanitize_text_field( $_GET['orderby'] ) : '';
|
| 171 |
+
$sort_order = isset( $_GET['order'] ) ? sanitize_text_field( $_GET['order'] ) : '';
|
| 172 |
+
if ( empty( $orderby_column ) ) {
|
| 173 |
+
$orderby_column = 'id';
|
| 174 |
+
$sort_order = 'DESC';
|
| 175 |
+
}
|
| 176 |
+
$orderby_column = SwpmUtils::sanitize_value_by_array( $orderby_column, $sortable );
|
| 177 |
+
$sort_order = SwpmUtils::sanitize_value_by_array(
|
| 178 |
+
$sort_order,
|
| 179 |
+
array(
|
| 180 |
+
'DESC' => '1',
|
| 181 |
+
'ASC' => '1',
|
| 182 |
+
)
|
| 183 |
+
);
|
| 184 |
+
|
| 185 |
+
// pagination requirement
|
| 186 |
+
$current_page = $this->get_pagenum();
|
| 187 |
+
|
| 188 |
+
$search_term = filter_input( INPUT_POST, 'swpm_txn_search', FILTER_SANITIZE_STRING );
|
| 189 |
+
$search_term = trim( $search_term );
|
| 190 |
+
|
| 191 |
+
if ( $search_term ) {// Only load the searched records.
|
| 192 |
+
$like = $wpdb->esc_like( $search_term );
|
| 193 |
+
$like = '%' . $like . '%';
|
| 194 |
+
$prepare_query = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_payments_tbl WHERE `email` LIKE %s OR `txn_id` LIKE %s OR `first_name` LIKE %s OR `last_name` LIKE %s", $like, $like, $like, $like );
|
| 195 |
+
$data = $wpdb->get_results( $prepare_query, ARRAY_A );
|
| 196 |
+
$total_items = count( $data );
|
| 197 |
+
} else { // Load all data in an optimized way (so it is only loading data for the current page)
|
| 198 |
+
$query = "SELECT COUNT(*) FROM {$wpdb->prefix}swpm_payments_tbl";
|
| 199 |
+
$total_items = $wpdb->get_var( $query );
|
| 200 |
+
|
| 201 |
+
// pagination requirement
|
| 202 |
+
$query = "SELECT * FROM {$wpdb->prefix}swpm_payments_tbl ORDER BY $orderby_column $sort_order";
|
| 203 |
+
|
| 204 |
+
$offset = ( $current_page - 1 ) * $per_page;
|
| 205 |
+
$query .= ' LIMIT ' . (int) $offset . ',' . (int) $per_page;
|
| 206 |
+
|
| 207 |
+
$data = $wpdb->get_results( $query, ARRAY_A );
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
// Now we add our *sorted* data to the items property, where it can be used by the rest of the class.
|
| 211 |
+
$this->items = $data;
|
| 212 |
+
|
| 213 |
+
// pagination requirement
|
| 214 |
+
$this->set_pagination_args(
|
| 215 |
+
array(
|
| 216 |
+
'total_items' => $total_items, // WE have to calculate the total number of items
|
| 217 |
+
'per_page' => $per_page, // WE have to determine how many items to show on a page
|
| 218 |
+
'total_pages' => ceil( $total_items / $per_page ), // WE have to calculate the total number of pages
|
| 219 |
+
)
|
| 220 |
+
);
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
}
|
classes/class.simple-wp-membership.php
CHANGED
|
@@ -65,7 +65,8 @@ class SimpleWpMembership {
|
|
| 65 |
add_action('load-toplevel_page_simple_wp_membership', array(&$this, 'admin_library'));
|
| 66 |
add_action('load-wp-membership_page_simple_wp_membership_levels', array(&$this, 'admin_library'));
|
| 67 |
|
| 68 |
-
add_action('
|
|
|
|
| 69 |
add_action('wp_logout', array(&$this, 'wp_logout'));
|
| 70 |
add_action('swpm_logout', array(&$this, 'swpm_do_user_logout'));
|
| 71 |
add_action('user_register', array(&$this, 'swpm_handle_wp_user_registration'));
|
|
@@ -93,6 +94,13 @@ class SimpleWpMembership {
|
|
| 93 |
|
| 94 |
function wp_password_reset_hook($user, $pass) {
|
| 95 |
$swpm_user = SwpmMemberUtils::get_user_by_user_name($user->user_login);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
$swpm_id = $swpm_user->member_id;
|
| 97 |
if (!empty($swpm_id)) {
|
| 98 |
$password_hash = SwpmUtils::encrypt_password($pass);
|
|
@@ -187,7 +195,8 @@ class SimpleWpMembership {
|
|
| 187 |
//Initialize the settings menu hooks.
|
| 188 |
$swpm_settings_obj->init_config_hooks();
|
| 189 |
$addon_saved = filter_input(INPUT_POST, 'swpm-addon-settings');
|
| 190 |
-
if (!empty($addon_saved)) {
|
|
|
|
| 191 |
do_action('swpm_addon_settings_save');
|
| 192 |
}
|
| 193 |
}
|
|
@@ -292,6 +301,17 @@ class SimpleWpMembership {
|
|
| 292 |
$auth->login_to_swpm_using_wp_user($user);
|
| 293 |
}
|
| 294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 295 |
public function wp_authenticate_handler($username, $password) {
|
| 296 |
|
| 297 |
$auth = SwpmAuth::get_instance();
|
|
@@ -640,7 +660,7 @@ class SimpleWpMembership {
|
|
| 640 |
wp_register_script('swpm.validationEngine-localization', SIMPLE_WP_MEMBERSHIP_URL . '/js/swpm.validationEngine-localization.js', array('jquery'));
|
| 641 |
}
|
| 642 |
|
| 643 |
-
public static function enqueue_validation_scripts($add_params =
|
| 644 |
//Localization for jquery.validationEngine
|
| 645 |
//This array will be merged with $.validationEngineLanguage.allRules object from jquery.validationEngine-en.js file
|
| 646 |
$loc_data = array(
|
|
@@ -673,13 +693,22 @@ class SimpleWpMembership {
|
|
| 673 |
),
|
| 674 |
);
|
| 675 |
|
| 676 |
-
|
|
|
|
|
|
|
| 677 |
// Additional parameters should be added to the array, replacing existing ones
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 678 |
$loc_data = array_replace_recursive($add_params, $loc_data);
|
| 679 |
}
|
| 680 |
|
| 681 |
wp_localize_script('swpm.validationEngine-localization', 'swpm_validationEngine_localization', $loc_data);
|
| 682 |
|
|
|
|
|
|
|
| 683 |
wp_enqueue_style('validationEngine.jquery');
|
| 684 |
wp_enqueue_script('jquery.validationEngine');
|
| 685 |
wp_enqueue_script('jquery.validationEngine-en');
|
| 65 |
add_action('load-toplevel_page_simple_wp_membership', array(&$this, 'admin_library'));
|
| 66 |
add_action('load-wp-membership_page_simple_wp_membership_levels', array(&$this, 'admin_library'));
|
| 67 |
|
| 68 |
+
add_action('wp_login', array(&$this, 'wp_login_hook_handler'), 10, 2);
|
| 69 |
+
add_action('wp_authenticate', array(&$this, 'wp_authenticate_handler'), 1, 2);
|
| 70 |
add_action('wp_logout', array(&$this, 'wp_logout'));
|
| 71 |
add_action('swpm_logout', array(&$this, 'swpm_do_user_logout'));
|
| 72 |
add_action('user_register', array(&$this, 'swpm_handle_wp_user_registration'));
|
| 94 |
|
| 95 |
function wp_password_reset_hook($user, $pass) {
|
| 96 |
$swpm_user = SwpmMemberUtils::get_user_by_user_name($user->user_login);
|
| 97 |
+
|
| 98 |
+
//Check if SWPM user entry exists
|
| 99 |
+
if (empty($swpm_user)) {
|
| 100 |
+
SwpmLog::log_auth_debug("wp_password_reset_hook() - SWPM user not found for username: '" . $user->user_login ."'. This is OK, assuming that this user was created directly in WP Users menu (not using SWPM).", true);
|
| 101 |
+
return;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
$swpm_id = $swpm_user->member_id;
|
| 105 |
if (!empty($swpm_id)) {
|
| 106 |
$password_hash = SwpmUtils::encrypt_password($pass);
|
| 195 |
//Initialize the settings menu hooks.
|
| 196 |
$swpm_settings_obj->init_config_hooks();
|
| 197 |
$addon_saved = filter_input(INPUT_POST, 'swpm-addon-settings');
|
| 198 |
+
if (!empty($addon_saved) && current_user_can('manage_options')) {
|
| 199 |
+
check_admin_referer('swpm_addon_settings_section', 'swpm_addon_settings_section_save_settings');
|
| 200 |
do_action('swpm_addon_settings_save');
|
| 201 |
}
|
| 202 |
}
|
| 301 |
$auth->login_to_swpm_using_wp_user($user);
|
| 302 |
}
|
| 303 |
|
| 304 |
+
/* Used to log the user into SWPM system using the wp_login hook. Some social plugins use this hook to handle the login */
|
| 305 |
+
public function wp_login_hook_handler($user_login, $user){
|
| 306 |
+
SwpmLog::log_auth_debug('wp_login hook triggered. Username: ' . $user_login, true);
|
| 307 |
+
$auth = SwpmAuth::get_instance();
|
| 308 |
+
if ($auth->is_logged_in()) {
|
| 309 |
+
//User is already logged-in. Nothing to do.
|
| 310 |
+
return;
|
| 311 |
+
}
|
| 312 |
+
$auth->login_to_swpm_using_wp_user($user);
|
| 313 |
+
}
|
| 314 |
+
|
| 315 |
public function wp_authenticate_handler($username, $password) {
|
| 316 |
|
| 317 |
$auth = SwpmAuth::get_instance();
|
| 660 |
wp_register_script('swpm.validationEngine-localization', SIMPLE_WP_MEMBERSHIP_URL . '/js/swpm.validationEngine-localization.js', array('jquery'));
|
| 661 |
}
|
| 662 |
|
| 663 |
+
public static function enqueue_validation_scripts($add_params = array()) {
|
| 664 |
//Localization for jquery.validationEngine
|
| 665 |
//This array will be merged with $.validationEngineLanguage.allRules object from jquery.validationEngine-en.js file
|
| 666 |
$loc_data = array(
|
| 693 |
),
|
| 694 |
);
|
| 695 |
|
| 696 |
+
$nonce=wp_create_nonce( 'swpm-rego-form-ajax-nonce' );
|
| 697 |
+
|
| 698 |
+
if ($add_params) {
|
| 699 |
// Additional parameters should be added to the array, replacing existing ones
|
| 700 |
+
if (isset($add_params['ajaxEmailCall'])) {
|
| 701 |
+
if (isset($add_params['ajaxEmailCall']['extraData'])) {
|
| 702 |
+
$add_params['ajaxEmailCall']['extraData'].='&nonce='.$nonce;
|
| 703 |
+
}
|
| 704 |
+
}
|
| 705 |
$loc_data = array_replace_recursive($add_params, $loc_data);
|
| 706 |
}
|
| 707 |
|
| 708 |
wp_localize_script('swpm.validationEngine-localization', 'swpm_validationEngine_localization', $loc_data);
|
| 709 |
|
| 710 |
+
wp_localize_script('jquery.validationEngine-en', 'swpmRegForm', array('nonce' => $nonce));
|
| 711 |
+
|
| 712 |
wp_enqueue_style('validationEngine.jquery');
|
| 713 |
wp_enqueue_script('jquery.validationEngine');
|
| 714 |
wp_enqueue_script('jquery.validationEngine-en');
|
classes/class.swpm-ajax.php
CHANGED
|
@@ -10,6 +10,10 @@ class SwpmAjax {
|
|
| 10 |
$field_value = filter_input(INPUT_GET, 'fieldValue');
|
| 11 |
$field_id = filter_input(INPUT_GET, 'fieldId');
|
| 12 |
$member_id = filter_input(INPUT_GET, 'member_id');
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
if (!is_email($field_value)){
|
| 14 |
echo '[ "' . $field_id . '",false, "'.SwpmUtils::_('Invalid Email Address').'" ]' ;
|
| 15 |
exit;
|
|
@@ -18,7 +22,7 @@ class SwpmAjax {
|
|
| 18 |
$query = $wpdb->prepare("SELECT member_id FROM $table WHERE email = %s AND user_name != ''", $field_value);
|
| 19 |
$db_id = $wpdb->get_var($query) ;
|
| 20 |
$exists = ($db_id > 0) && $db_id != $member_id;
|
| 21 |
-
echo '[ "' . $field_id . (($exists) ? '",false, "χ '.SwpmUtils::_('Aready taken').'"]' : '",true, "√ Available"]');
|
| 22 |
exit;
|
| 23 |
}
|
| 24 |
|
|
@@ -26,6 +30,10 @@ class SwpmAjax {
|
|
| 26 |
global $wpdb;
|
| 27 |
$field_value = filter_input(INPUT_GET, 'fieldValue');
|
| 28 |
$field_id = filter_input(INPUT_GET, 'fieldId');
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
if (!SwpmMemberUtils::is_valid_user_name($field_value)){
|
| 30 |
echo '[ "' . $field_id . '",false,"χ '. SwpmUtils::_('Name contains invalid character'). '"]';
|
| 31 |
exit;
|
| 10 |
$field_value = filter_input(INPUT_GET, 'fieldValue');
|
| 11 |
$field_id = filter_input(INPUT_GET, 'fieldId');
|
| 12 |
$member_id = filter_input(INPUT_GET, 'member_id');
|
| 13 |
+
if (!check_ajax_referer( 'swpm-rego-form-ajax-nonce', 'nonce', false )) {
|
| 14 |
+
echo '[ "' . $field_id . '",false, "'.SwpmUtils::_('Nonce check failed. Please reload page.').'" ]' ;
|
| 15 |
+
exit;
|
| 16 |
+
}
|
| 17 |
if (!is_email($field_value)){
|
| 18 |
echo '[ "' . $field_id . '",false, "'.SwpmUtils::_('Invalid Email Address').'" ]' ;
|
| 19 |
exit;
|
| 22 |
$query = $wpdb->prepare("SELECT member_id FROM $table WHERE email = %s AND user_name != ''", $field_value);
|
| 23 |
$db_id = $wpdb->get_var($query) ;
|
| 24 |
$exists = ($db_id > 0) && $db_id != $member_id;
|
| 25 |
+
echo '[ "' . $field_id . (($exists) ? '",false, "χ '.SwpmUtils::_('Aready taken').'"]' : '",true, "√ '.SwpmUtils::_('Available'). '"]');
|
| 26 |
exit;
|
| 27 |
}
|
| 28 |
|
| 30 |
global $wpdb;
|
| 31 |
$field_value = filter_input(INPUT_GET, 'fieldValue');
|
| 32 |
$field_id = filter_input(INPUT_GET, 'fieldId');
|
| 33 |
+
if (!check_ajax_referer( 'swpm-rego-form-ajax-nonce', 'nonce', false )) {
|
| 34 |
+
echo '[ "' . $field_id . '",false, "'.SwpmUtils::_('Nonce check failed. Please reload page.').'" ]' ;
|
| 35 |
+
exit;
|
| 36 |
+
}
|
| 37 |
if (!SwpmMemberUtils::is_valid_user_name($field_value)){
|
| 38 |
echo '[ "' . $field_id . '",false,"χ '. SwpmUtils::_('Name contains invalid character'). '"]';
|
| 39 |
exit;
|
classes/class.swpm-auth.php
CHANGED
|
@@ -385,8 +385,9 @@ class SwpmAuth {
|
|
| 385 |
; //Use live API key
|
| 386 |
}
|
| 387 |
//Include the Stripe library.
|
| 388 |
-
|
| 389 |
-
|
|
|
|
| 390 |
// Let's try to cancel subscription
|
| 391 |
try {
|
| 392 |
$sub = \Stripe\Subscription::retrieve($subscr_id);
|
| 385 |
; //Use live API key
|
| 386 |
}
|
| 387 |
//Include the Stripe library.
|
| 388 |
+
if ( ! class_exists( '\Stripe\Stripe' ) ) {
|
| 389 |
+
include(SIMPLE_WP_MEMBERSHIP_PATH . 'lib/stripe-gateway/init.php');
|
| 390 |
+
} \Stripe\Stripe::setApiKey($secret_key);
|
| 391 |
// Let's try to cancel subscription
|
| 392 |
try {
|
| 393 |
$sub = \Stripe\Subscription::retrieve($subscr_id);
|
classes/class.swpm-category-list.php
CHANGED
|
@@ -71,6 +71,13 @@ class SwpmCategoryList extends WP_List_Table {
|
|
| 71 |
//Check we are on the admin end and user has management permission
|
| 72 |
SwpmMiscUtils::check_user_permission_and_is_admin('category protection update');
|
| 73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
$selected = filter_input(INPUT_POST, 'membership_level_id');
|
| 75 |
$selected_level_id = empty($selected) ? 1 : $selected;
|
| 76 |
$category = ($selected_level_id == 1) ?
|
|
@@ -89,7 +96,7 @@ class SwpmCategoryList extends WP_List_Table {
|
|
| 89 |
$filtered = filter_input_array(INPUT_POST, $args);
|
| 90 |
$ids_in_page = $filtered['ids_in_page'];
|
| 91 |
$category->remove($ids_in_page, 'category')->apply($ids, 'category')->save();
|
| 92 |
-
$message = array('succeeded' => true, 'message' => '<p>' . SwpmUtils::_('Category protection updated!') . '</p>');
|
| 93 |
SwpmTransfer::get_instance()->set('status', $message);
|
| 94 |
}
|
| 95 |
|
| 71 |
//Check we are on the admin end and user has management permission
|
| 72 |
SwpmMiscUtils::check_user_permission_and_is_admin('category protection update');
|
| 73 |
|
| 74 |
+
//Check nonce
|
| 75 |
+
$swpm_category_prot_update_nonce = filter_input(INPUT_POST, 'swpm_category_prot_update_nonce');
|
| 76 |
+
if (!wp_verify_nonce($swpm_category_prot_update_nonce, 'swpm_category_prot_update_nonce_action')) {
|
| 77 |
+
//Nonce check failed.
|
| 78 |
+
wp_die(SwpmUtils::_("Error! Nonce security verification failed for Category Protection Update action. Clear cache and try again."));
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
$selected = filter_input(INPUT_POST, 'membership_level_id');
|
| 82 |
$selected_level_id = empty($selected) ? 1 : $selected;
|
| 83 |
$category = ($selected_level_id == 1) ?
|
| 96 |
$filtered = filter_input_array(INPUT_POST, $args);
|
| 97 |
$ids_in_page = $filtered['ids_in_page'];
|
| 98 |
$category->remove($ids_in_page, 'category')->apply($ids, 'category')->save();
|
| 99 |
+
$message = array('succeeded' => true, 'message' => '<p class="swpm-green-box">' . SwpmUtils::_('Category protection updated!') . '</p>');
|
| 100 |
SwpmTransfer::get_instance()->set('status', $message);
|
| 101 |
}
|
| 102 |
|
classes/class.swpm-front-registration.php
CHANGED
|
@@ -283,6 +283,7 @@ class SwpmFrontRegistration extends SwpmRegistration {
|
|
| 283 |
//Update the data in the swpm database.
|
| 284 |
$swpm_id = $auth->get('member_id');
|
| 285 |
//SwpmLog::log_simple_debug("Updating member profile data with SWPM ID: " . $swpm_id, true);
|
|
|
|
| 286 |
$wpdb->update($wpdb->prefix . "swpm_members_tbl", $member_info, array('member_id' => $swpm_id));
|
| 287 |
$auth->reload_user_data();//Reload user data after update so the profile page reflects the new data.
|
| 288 |
|
| 283 |
//Update the data in the swpm database.
|
| 284 |
$swpm_id = $auth->get('member_id');
|
| 285 |
//SwpmLog::log_simple_debug("Updating member profile data with SWPM ID: " . $swpm_id, true);
|
| 286 |
+
$member_info = array_filter($member_info);//Remove any null values.
|
| 287 |
$wpdb->update($wpdb->prefix . "swpm_members_tbl", $member_info, array('member_id' => $swpm_id));
|
| 288 |
$auth->reload_user_data();//Reload user data after update so the profile page reflects the new data.
|
| 289 |
|
classes/class.swpm-init-time-tasks.php
CHANGED
|
@@ -95,6 +95,20 @@ class SwpmInitTimeTasks {
|
|
| 95 |
'hierarchical' => false,
|
| 96 |
'supports' => array('title', 'editor')
|
| 97 |
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
}
|
| 99 |
|
| 100 |
private function verify_and_delete_account() {
|
| 95 |
'hierarchical' => false,
|
| 96 |
'supports' => array('title', 'editor')
|
| 97 |
));
|
| 98 |
+
|
| 99 |
+
//Transactions will be stored using this CPT in parallel with swpm_payments_tbl DB table
|
| 100 |
+
$args = array(
|
| 101 |
+
'supports' => array(''),
|
| 102 |
+
'hierarchical' => false,
|
| 103 |
+
'public' => false,
|
| 104 |
+
'show_ui' => false,
|
| 105 |
+
'can_export' => false,
|
| 106 |
+
'has_archive' => false,
|
| 107 |
+
'exclude_from_search' => true,
|
| 108 |
+
'publicly_queryable' => false,
|
| 109 |
+
'capability_type' => 'post',
|
| 110 |
+
);
|
| 111 |
+
register_post_type('swpm_transactions', $args);
|
| 112 |
}
|
| 113 |
|
| 114 |
private function verify_and_delete_account() {
|
classes/class.swpm-members.php
CHANGED
|
@@ -409,6 +409,13 @@ class SwpmMembers extends WP_List_Table {
|
|
| 409 |
echo '<div id="poststuff"><div id="post-body">';
|
| 410 |
|
| 411 |
if (isset($_REQUEST['swpm_bulk_change_level_process'])) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 412 |
$errorMsg = "";
|
| 413 |
$from_level_id = sanitize_text_field($_REQUEST["swpm_bulk_change_level_from"]);
|
| 414 |
$to_level_id = sanitize_text_field($_REQUEST['swpm_bulk_change_level_to']);
|
|
@@ -439,6 +446,13 @@ class SwpmMembers extends WP_List_Table {
|
|
| 439 |
}
|
| 440 |
|
| 441 |
if (isset($_REQUEST['swpm_bulk_user_start_date_change_process'])) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 442 |
$errorMsg = "";
|
| 443 |
$level_id = sanitize_text_field($_REQUEST["swpm_bulk_user_start_date_change_level"]);
|
| 444 |
$new_date = sanitize_text_field($_REQUEST['swpm_bulk_user_start_date_change_date']);
|
|
@@ -477,6 +491,8 @@ class SwpmMembers extends WP_List_Table {
|
|
| 477 |
<?php SwpmUtils::e('You can use the following option to bulk update the membership level of users who belong to the level you select below.'); ?>
|
| 478 |
</p>
|
| 479 |
<form method="post" action="">
|
|
|
|
|
|
|
| 480 |
<table width="100%" border="0" cellspacing="0" cellpadding="6">
|
| 481 |
<tr valign="top">
|
| 482 |
<td width="25%" align="left">
|
|
@@ -524,7 +540,8 @@ class SwpmMembers extends WP_List_Table {
|
|
| 524 |
<?php SwpmUtils::e('You can manually set a specific access starts date value of all members who belong to a particular level using the following option.'); ?>
|
| 525 |
</p>
|
| 526 |
<form method="post" action="">
|
| 527 |
-
|
|
|
|
| 528 |
<table width="100%" border="0" cellspacing="0" cellpadding="6">
|
| 529 |
<tr valign="top">
|
| 530 |
<td width="25%" align="left">
|
|
@@ -578,6 +595,9 @@ class SwpmMembers extends WP_List_Table {
|
|
| 578 |
function handle_main_members_admin_menu() {
|
| 579 |
do_action('swpm_members_menu_start');
|
| 580 |
|
|
|
|
|
|
|
|
|
|
| 581 |
$action = filter_input(INPUT_GET, 'member_action');
|
| 582 |
$action = empty($action) ? filter_input(INPUT_POST, 'action') : $action;
|
| 583 |
$selected = $action;
|
| 409 |
echo '<div id="poststuff"><div id="post-body">';
|
| 410 |
|
| 411 |
if (isset($_REQUEST['swpm_bulk_change_level_process'])) {
|
| 412 |
+
//Check nonce
|
| 413 |
+
$swpm_bulk_change_level_nonce = filter_input(INPUT_POST, 'swpm_bulk_change_level_nonce');
|
| 414 |
+
if (!wp_verify_nonce($swpm_bulk_change_level_nonce, 'swpm_bulk_change_level_nonce_action')) {
|
| 415 |
+
//Nonce check failed.
|
| 416 |
+
wp_die(SwpmUtils::_("Error! Nonce security verification failed for Bulk Change Membership Level action. Clear cache and try again."));
|
| 417 |
+
}
|
| 418 |
+
|
| 419 |
$errorMsg = "";
|
| 420 |
$from_level_id = sanitize_text_field($_REQUEST["swpm_bulk_change_level_from"]);
|
| 421 |
$to_level_id = sanitize_text_field($_REQUEST['swpm_bulk_change_level_to']);
|
| 446 |
}
|
| 447 |
|
| 448 |
if (isset($_REQUEST['swpm_bulk_user_start_date_change_process'])) {
|
| 449 |
+
//Check nonce
|
| 450 |
+
$swpm_bulk_start_date_nonce = filter_input(INPUT_POST, 'swpm_bulk_start_date_nonce');
|
| 451 |
+
if (!wp_verify_nonce($swpm_bulk_start_date_nonce, 'swpm_bulk_start_date_nonce_action')) {
|
| 452 |
+
//Nonce check failed.
|
| 453 |
+
wp_die(SwpmUtils::_("Error! Nonce security verification failed for Bulk Change Access Starts Date action. Clear cache and try again."));
|
| 454 |
+
}
|
| 455 |
+
|
| 456 |
$errorMsg = "";
|
| 457 |
$level_id = sanitize_text_field($_REQUEST["swpm_bulk_user_start_date_change_level"]);
|
| 458 |
$new_date = sanitize_text_field($_REQUEST['swpm_bulk_user_start_date_change_date']);
|
| 491 |
<?php SwpmUtils::e('You can use the following option to bulk update the membership level of users who belong to the level you select below.'); ?>
|
| 492 |
</p>
|
| 493 |
<form method="post" action="">
|
| 494 |
+
<input type="hidden" name="swpm_bulk_change_level_nonce" value="<?php echo wp_create_nonce('swpm_bulk_change_level_nonce_action'); ?>" />
|
| 495 |
+
|
| 496 |
<table width="100%" border="0" cellspacing="0" cellpadding="6">
|
| 497 |
<tr valign="top">
|
| 498 |
<td width="25%" align="left">
|
| 540 |
<?php SwpmUtils::e('You can manually set a specific access starts date value of all members who belong to a particular level using the following option.'); ?>
|
| 541 |
</p>
|
| 542 |
<form method="post" action="">
|
| 543 |
+
<input type="hidden" name="swpm_bulk_start_date_nonce" value="<?php echo wp_create_nonce('swpm_bulk_start_date_nonce_action'); ?>" />
|
| 544 |
+
|
| 545 |
<table width="100%" border="0" cellspacing="0" cellpadding="6">
|
| 546 |
<tr valign="top">
|
| 547 |
<td width="25%" align="left">
|
| 595 |
function handle_main_members_admin_menu() {
|
| 596 |
do_action('swpm_members_menu_start');
|
| 597 |
|
| 598 |
+
//Check current_user_can() or die.
|
| 599 |
+
SwpmMiscUtils::check_user_permission_and_is_admin('Main Members Admin Menu');
|
| 600 |
+
|
| 601 |
$action = filter_input(INPUT_GET, 'member_action');
|
| 602 |
$action = empty($action) ? filter_input(INPUT_POST, 'action') : $action;
|
| 603 |
$selected = $action;
|
classes/class.swpm-membership-levels.php
CHANGED
|
@@ -246,10 +246,12 @@ class SwpmMembershipLevels extends WP_List_Table {
|
|
| 246 |
include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_post_list.php');
|
| 247 |
}
|
| 248 |
|
| 249 |
-
function handle_main_membership_level_admin_menu(){
|
| 250 |
-
|
| 251 |
do_action( 'swpm_membership_level_menu_start' );
|
| 252 |
|
|
|
|
|
|
|
|
|
|
| 253 |
$level_action = filter_input(INPUT_GET, 'level_action');
|
| 254 |
$action = $level_action;
|
| 255 |
$selected= $action;
|
| 246 |
include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_post_list.php');
|
| 247 |
}
|
| 248 |
|
| 249 |
+
function handle_main_membership_level_admin_menu(){
|
|
|
|
| 250 |
do_action( 'swpm_membership_level_menu_start' );
|
| 251 |
|
| 252 |
+
//Check current_user_can() or die.
|
| 253 |
+
SwpmMiscUtils::check_user_permission_and_is_admin('Main Membership Level Admin Menu');
|
| 254 |
+
|
| 255 |
$level_action = filter_input(INPUT_GET, 'level_action');
|
| 256 |
$action = $level_action;
|
| 257 |
$selected= $action;
|
classes/class.swpm-post-list.php
CHANGED
|
@@ -102,6 +102,13 @@ class SwpmPostList extends WP_List_Table {
|
|
| 102 |
//Check we are on the admin end and user has management permission
|
| 103 |
SwpmMiscUtils::check_user_permission_and_is_admin('post protection update');
|
| 104 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
$type = filter_input(INPUT_POST, 'list_type');
|
| 106 |
|
| 107 |
$selected = filter_input(INPUT_POST, 'membership_level_id');
|
|
@@ -122,7 +129,7 @@ class SwpmPostList extends WP_List_Table {
|
|
| 122 |
$filtered = filter_input_array(INPUT_POST, $args);
|
| 123 |
$ids_in_page = $filtered['ids_in_page'];
|
| 124 |
$post->remove($ids_in_page, $type)->apply($ids, $type)->save();
|
| 125 |
-
$message = array('succeeded' => true, 'message' => '<p>' . SwpmUtils::_('Protection settings updated!') . '</p>');
|
| 126 |
SwpmTransfer::get_instance()->set('status', $message);
|
| 127 |
}
|
| 128 |
|
| 102 |
//Check we are on the admin end and user has management permission
|
| 103 |
SwpmMiscUtils::check_user_permission_and_is_admin('post protection update');
|
| 104 |
|
| 105 |
+
//Check nonce
|
| 106 |
+
$swpm_post_prot_update_nonce = filter_input(INPUT_POST, 'swpm_post_prot_update_nonce');
|
| 107 |
+
if (!wp_verify_nonce($swpm_post_prot_update_nonce, 'swpm_post_prot_update_nonce_action')) {
|
| 108 |
+
//Nonce check failed.
|
| 109 |
+
wp_die(SwpmUtils::_("Error! Nonce security verification failed for Post Protection Update action. Clear cache and try again."));
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
$type = filter_input(INPUT_POST, 'list_type');
|
| 113 |
|
| 114 |
$selected = filter_input(INPUT_POST, 'membership_level_id');
|
| 129 |
$filtered = filter_input_array(INPUT_POST, $args);
|
| 130 |
$ids_in_page = $filtered['ids_in_page'];
|
| 131 |
$post->remove($ids_in_page, $type)->apply($ids, $type)->save();
|
| 132 |
+
$message = array('succeeded' => true, 'message' => '<p class="swpm-green-box">' . SwpmUtils::_('Protection settings updated!') . '</p>');
|
| 133 |
SwpmTransfer::get_instance()->set('status', $message);
|
| 134 |
}
|
| 135 |
|
classes/class.swpm-settings.php
CHANGED
|
@@ -160,7 +160,9 @@ class SwpmSettings {
|
|
| 160 |
add_settings_section('upgrade-email-settings', SwpmUtils::_(' Email Settings (Account Upgrade Notification)'), array(&$this, 'upgrade_email_settings_callback'), 'simple_wp_membership_settings');
|
| 161 |
add_settings_field('upgrade-complete-mail-subject', SwpmUtils::_('Email Subject'), array(&$this, 'textfield_callback'), 'simple_wp_membership_settings', 'upgrade-email-settings', array('item' => 'upgrade-complete-mail-subject', 'message' => ''));
|
| 162 |
add_settings_field('upgrade-complete-mail-body', SwpmUtils::_('Email Body'), array(&$this, 'textarea_callback'), 'simple_wp_membership_settings', 'upgrade-email-settings', array('item' => 'upgrade-complete-mail-body', 'message' => ''));
|
| 163 |
-
|
|
|
|
|
|
|
| 164 |
//Bulk account activate and notify email settings.
|
| 165 |
add_settings_section('bulk-activate-email-settings', SwpmUtils::_(' Email Settings (Bulk Account Activate Notification)'), array(&$this, 'bulk_activate_email_settings_callback'), 'simple_wp_membership_settings');
|
| 166 |
add_settings_field('bulk-activate-notify-mail-subject', SwpmUtils::_('Email Subject'), array(&$this, 'textfield_callback'), 'simple_wp_membership_settings', 'bulk-activate-email-settings', array('item' => 'bulk-activate-notify-mail-subject', 'message' => ''));
|
|
@@ -474,6 +476,7 @@ class SwpmSettings {
|
|
| 474 |
|
| 475 |
$output['upgrade-complete-mail-subject'] = sanitize_text_field($input['upgrade-complete-mail-subject']);
|
| 476 |
$output['upgrade-complete-mail-body'] = wp_kses_data(force_balance_tags($input['upgrade-complete-mail-body']));
|
|
|
|
| 477 |
|
| 478 |
$output['bulk-activate-notify-mail-subject'] = sanitize_text_field($input['bulk-activate-notify-mail-subject']);
|
| 479 |
$output['bulk-activate-notify-mail-body'] = wp_kses_data(force_balance_tags($input['bulk-activate-notify-mail-body']));
|
|
@@ -550,8 +553,11 @@ class SwpmSettings {
|
|
| 550 |
}
|
| 551 |
|
| 552 |
public function handle_main_settings_admin_menu() {
|
| 553 |
-
|
| 554 |
do_action('swpm_settings_menu_start');
|
|
|
|
|
|
|
|
|
|
|
|
|
| 555 |
?>
|
| 556 |
<div class="wrap swpm-admin-menu-wrap"><!-- start wrap -->
|
| 557 |
|
| 160 |
add_settings_section('upgrade-email-settings', SwpmUtils::_(' Email Settings (Account Upgrade Notification)'), array(&$this, 'upgrade_email_settings_callback'), 'simple_wp_membership_settings');
|
| 161 |
add_settings_field('upgrade-complete-mail-subject', SwpmUtils::_('Email Subject'), array(&$this, 'textfield_callback'), 'simple_wp_membership_settings', 'upgrade-email-settings', array('item' => 'upgrade-complete-mail-subject', 'message' => ''));
|
| 162 |
add_settings_field('upgrade-complete-mail-body', SwpmUtils::_('Email Body'), array(&$this, 'textarea_callback'), 'simple_wp_membership_settings', 'upgrade-email-settings', array('item' => 'upgrade-complete-mail-body', 'message' => ''));
|
| 163 |
+
add_settings_field('disable-email-after-upgrade', SwpmUtils::_('Disable Email Notification After Upgrade'), array(&$this, 'checkbox_callback'), 'simple_wp_membership_settings', 'upgrade-email-settings', array('item' => 'disable-email-after-upgrade',
|
| 164 |
+
'message' => SwpmUtils::_('You can use this option to disable the email notification that gets sent to the members when they make a payment for upgrade or renewal.')));
|
| 165 |
+
|
| 166 |
//Bulk account activate and notify email settings.
|
| 167 |
add_settings_section('bulk-activate-email-settings', SwpmUtils::_(' Email Settings (Bulk Account Activate Notification)'), array(&$this, 'bulk_activate_email_settings_callback'), 'simple_wp_membership_settings');
|
| 168 |
add_settings_field('bulk-activate-notify-mail-subject', SwpmUtils::_('Email Subject'), array(&$this, 'textfield_callback'), 'simple_wp_membership_settings', 'bulk-activate-email-settings', array('item' => 'bulk-activate-notify-mail-subject', 'message' => ''));
|
| 476 |
|
| 477 |
$output['upgrade-complete-mail-subject'] = sanitize_text_field($input['upgrade-complete-mail-subject']);
|
| 478 |
$output['upgrade-complete-mail-body'] = wp_kses_data(force_balance_tags($input['upgrade-complete-mail-body']));
|
| 479 |
+
$output['disable-email-after-upgrade'] = isset($input['disable-email-after-upgrade']) ? esc_attr($input['disable-email-after-upgrade']) : "";
|
| 480 |
|
| 481 |
$output['bulk-activate-notify-mail-subject'] = sanitize_text_field($input['bulk-activate-notify-mail-subject']);
|
| 482 |
$output['bulk-activate-notify-mail-body'] = wp_kses_data(force_balance_tags($input['bulk-activate-notify-mail-body']));
|
| 553 |
}
|
| 554 |
|
| 555 |
public function handle_main_settings_admin_menu() {
|
|
|
|
| 556 |
do_action('swpm_settings_menu_start');
|
| 557 |
+
|
| 558 |
+
//Check current_user_can() or die.
|
| 559 |
+
SwpmMiscUtils::check_user_permission_and_is_admin('Main Settings Menu');
|
| 560 |
+
|
| 561 |
?>
|
| 562 |
<div class="wrap swpm-admin-menu-wrap"><!-- start wrap -->
|
| 563 |
|
classes/class.swpm-transactions.php
CHANGED
|
@@ -30,6 +30,25 @@ class SwpmTransactions {
|
|
| 30 |
|
| 31 |
$txn_data = array_filter($txn_data);//Remove any null values.
|
| 32 |
$wpdb->insert($wpdb->prefix . "swpm_payments_tbl", $txn_data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
}
|
| 35 |
|
| 30 |
|
| 31 |
$txn_data = array_filter($txn_data);//Remove any null values.
|
| 32 |
$wpdb->insert($wpdb->prefix . "swpm_payments_tbl", $txn_data);
|
| 33 |
+
|
| 34 |
+
$db_row_id=$wpdb->insert_id;
|
| 35 |
+
|
| 36 |
+
//let's also store transactions data in swpm_transactions CPT
|
| 37 |
+
$post = array();
|
| 38 |
+
$post[ 'post_title' ] = '';
|
| 39 |
+
$post[ 'post_status' ] = 'publish';
|
| 40 |
+
$post[ 'content' ] = '';
|
| 41 |
+
$post[ 'post_type' ] = 'swpm_transactions';
|
| 42 |
+
|
| 43 |
+
$post_id=wp_insert_post($post);
|
| 44 |
+
|
| 45 |
+
update_post_meta($post_id,'db_row_id',$db_row_id);
|
| 46 |
+
|
| 47 |
+
foreach ($txn_data as $key=>$value) {
|
| 48 |
+
update_post_meta($post_id,$key,$value);
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
do_action('swpm_txn_record_saved',$txn_data,$db_row_id,$post_id);
|
| 52 |
|
| 53 |
}
|
| 54 |
|
classes/class.swpm-utils-misc.php
CHANGED
|
@@ -412,7 +412,7 @@ class SwpmMiscUtils {
|
|
| 412 |
"El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia",
|
| 413 |
"Fiji", "Finland", "France", "Gabon", "Gambia, The", "Georgia", "Germany",
|
| 414 |
"Ghana", "Greece", "Grenada", "Guatemala", "Guinea", "Guinea-Bissau",
|
| 415 |
-
"Guyana", "Haiti", "Honduras", "Hungary", "Iceland", "India", "Indonesia",
|
| 416 |
"Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jordan",
|
| 417 |
"Kazakhstan", "Kenya", "Kiribati", "Korea, North", "Korea, South", "Kuwait",
|
| 418 |
"Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya",
|
|
@@ -467,4 +467,33 @@ class SwpmMiscUtils {
|
|
| 467 |
return $countries_dropdown;
|
| 468 |
}
|
| 469 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 470 |
}
|
| 412 |
"El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia",
|
| 413 |
"Fiji", "Finland", "France", "Gabon", "Gambia, The", "Georgia", "Germany",
|
| 414 |
"Ghana", "Greece", "Grenada", "Guatemala", "Guinea", "Guinea-Bissau",
|
| 415 |
+
"Guyana", "Haiti", "Honduras", "Hong Kong", "Hungary", "Iceland", "India", "Indonesia",
|
| 416 |
"Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jordan",
|
| 417 |
"Kazakhstan", "Kenya", "Kiribati", "Korea, North", "Korea, South", "Kuwait",
|
| 418 |
"Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya",
|
| 467 |
return $countries_dropdown;
|
| 468 |
}
|
| 469 |
|
| 470 |
+
public static function get_button_type_name($button_type)
|
| 471 |
+
{
|
| 472 |
+
$btnTypesNames = array(
|
| 473 |
+
'pp_buy_now' => SwpmUtils::_('PayPal Buy Now'),
|
| 474 |
+
'pp_subscription' => SwpmUtils::_('PayPal Subscription'),
|
| 475 |
+
'pp_smart_checkout' => SwpmUtils::_('PayPal Smart Checkout'),
|
| 476 |
+
'stripe_buy_now' => SwpmUtils::_('Stripe Buy Now'),
|
| 477 |
+
'stripe_subscription' => SwpmUtils::_('Stripe Subscription'),
|
| 478 |
+
'braintree_buy_now' => SwpmUtils::_('Braintree Buy Now')
|
| 479 |
+
);
|
| 480 |
+
|
| 481 |
+
$button_type_name = $button_type;
|
| 482 |
+
|
| 483 |
+
if (array_key_exists($button_type, $btnTypesNames)) {
|
| 484 |
+
$button_type_name = $btnTypesNames[$button_type];
|
| 485 |
+
}
|
| 486 |
+
|
| 487 |
+
return $button_type_name;
|
| 488 |
+
}
|
| 489 |
+
|
| 490 |
+
public static function format_money($amount, $currency = false)
|
| 491 |
+
{
|
| 492 |
+
$formatted = number_format($amount, 2);
|
| 493 |
+
if ($currency) {
|
| 494 |
+
$formatted .= ' ' . $currency;
|
| 495 |
+
}
|
| 496 |
+
return $formatted;
|
| 497 |
+
}
|
| 498 |
+
|
| 499 |
}
|
classes/class.swpm-utils.php
CHANGED
|
@@ -92,7 +92,7 @@ abstract class SwpmUtils {
|
|
| 92 |
public static function get_formatted_expiry_date($start_date, $subscription_duration, $subscription_duration_type) {
|
| 93 |
if ($subscription_duration_type == SwpmMembershipLevel::FIXED_DATE) {
|
| 94 |
//Membership will expire after a fixed date.
|
| 95 |
-
return SwpmUtils::
|
| 96 |
}
|
| 97 |
|
| 98 |
$expires = self::calculate_subscription_period_days($subscription_duration, $subscription_duration_type);
|
|
@@ -102,8 +102,7 @@ abstract class SwpmUtils {
|
|
| 102 |
}
|
| 103 |
|
| 104 |
//Membership is set to a duration expiry settings.
|
| 105 |
-
|
| 106 |
-
return date(get_option('date_format'), strtotime($start_date . ' ' . $expires . ' days'));
|
| 107 |
}
|
| 108 |
|
| 109 |
public static function gender_dropdown($selected = 'not specified') {
|
|
@@ -330,7 +329,6 @@ abstract class SwpmUtils {
|
|
| 330 |
/*
|
| 331 |
* Formats the given date value according to the WP date format settings. This function is useful for displaying a human readable date value to the user.
|
| 332 |
*/
|
| 333 |
-
|
| 334 |
public static function get_formatted_date_according_to_wp_settings($date) {
|
| 335 |
$date_format = get_option('date_format');
|
| 336 |
if (empty($date_format)) {
|
|
@@ -343,6 +341,21 @@ abstract class SwpmUtils {
|
|
| 343 |
return $formatted_date;
|
| 344 |
}
|
| 345 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 346 |
public static function swpm_username_exists($user_name) {
|
| 347 |
global $wpdb;
|
| 348 |
$member_table = $wpdb->prefix . 'swpm_members_tbl';
|
| 92 |
public static function get_formatted_expiry_date($start_date, $subscription_duration, $subscription_duration_type) {
|
| 93 |
if ($subscription_duration_type == SwpmMembershipLevel::FIXED_DATE) {
|
| 94 |
//Membership will expire after a fixed date.
|
| 95 |
+
return SwpmUtils::get_formatted_and_translated_date_according_to_wp_settings($subscription_duration);
|
| 96 |
}
|
| 97 |
|
| 98 |
$expires = self::calculate_subscription_period_days($subscription_duration, $subscription_duration_type);
|
| 102 |
}
|
| 103 |
|
| 104 |
//Membership is set to a duration expiry settings.
|
| 105 |
+
return date_i18n(get_option('date_format'), strtotime($start_date . ' ' . $expires . ' days'));
|
|
|
|
| 106 |
}
|
| 107 |
|
| 108 |
public static function gender_dropdown($selected = 'not specified') {
|
| 329 |
/*
|
| 330 |
* Formats the given date value according to the WP date format settings. This function is useful for displaying a human readable date value to the user.
|
| 331 |
*/
|
|
|
|
| 332 |
public static function get_formatted_date_according_to_wp_settings($date) {
|
| 333 |
$date_format = get_option('date_format');
|
| 334 |
if (empty($date_format)) {
|
| 341 |
return $formatted_date;
|
| 342 |
}
|
| 343 |
|
| 344 |
+
/*
|
| 345 |
+
* Formats and Translates the given date value according to the WP date format settings. This function is useful for displaying a human readable date value to the user.
|
| 346 |
+
* The $date argument value must be in nromal date format (2025-01-15). The function will use strtotime() function to convert it to unix time then use it.
|
| 347 |
+
*/
|
| 348 |
+
public static function get_formatted_and_translated_date_according_to_wp_settings($date) {
|
| 349 |
+
$date_format = get_option('date_format');
|
| 350 |
+
if (empty($date_format)) {
|
| 351 |
+
//WordPress's date form settings is not set. Lets set a default format.
|
| 352 |
+
$date_format = 'Y-m-d';
|
| 353 |
+
}
|
| 354 |
+
|
| 355 |
+
$formatted_translated_date = date_i18n( $date_format, strtotime( $date ) );
|
| 356 |
+
return $formatted_translated_date;
|
| 357 |
+
}
|
| 358 |
+
|
| 359 |
public static function swpm_username_exists($user_name) {
|
| 360 |
global $wpdb;
|
| 361 |
$member_table = $wpdb->prefix . 'swpm_members_tbl';
|
ipn/swpm-braintree-buy-now-ipn.php
CHANGED
|
@@ -32,6 +32,7 @@ class SwpmBraintreeBuyNowIpnHandler {
|
|
| 32 |
|
| 33 |
//Validate and verify some of the main values.
|
| 34 |
$true_payment_amount = get_post_meta($button_id, 'payment_amount', true);
|
|
|
|
| 35 |
if ($payment_amount != $true_payment_amount) {
|
| 36 |
//Fatal error. Payment amount may have been tampered with.
|
| 37 |
$error_msg = 'Fatal Error! Received payment amount (' . $payment_amount . ') does not match with the original amount (' . $true_payment_amount . ')';
|
| 32 |
|
| 33 |
//Validate and verify some of the main values.
|
| 34 |
$true_payment_amount = get_post_meta($button_id, 'payment_amount', true);
|
| 35 |
+
$true_payment_amount = apply_filters('swpm_payment_amount_filter',$true_payment_amount,$button_id);
|
| 36 |
if ($payment_amount != $true_payment_amount) {
|
| 37 |
//Fatal error. Payment amount may have been tampered with.
|
| 38 |
$error_msg = 'Fatal Error! Received payment amount (' . $payment_amount . ') does not match with the original amount (' . $true_payment_amount . ')';
|
ipn/swpm-smart-checkout-ipn.php
CHANGED
|
@@ -1,361 +1,410 @@
|
|
| 1 |
<?php
|
| 2 |
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
class swpm_smart_checkout_ipn_handler {
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
-
|
| 294 |
-
|
| 295 |
-
|
| 296 |
-
|
| 297 |
-
|
| 298 |
-
|
| 299 |
-
|
| 300 |
-
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 305 |
|
| 306 |
}
|
| 307 |
|
| 308 |
function swpm_pp_smart_checkout_ajax_hanlder() {
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
| 313 |
-
|
| 314 |
-
|
| 315 |
-
|
| 316 |
-
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
| 335 |
-
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
| 343 |
-
|
| 344 |
-
|
| 345 |
-
|
| 346 |
-
|
| 347 |
-
|
| 348 |
-
|
| 349 |
-
|
| 350 |
-
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
|
| 354 |
-
|
| 355 |
-
|
| 356 |
-
|
| 357 |
-
|
| 358 |
-
|
| 359 |
-
|
| 360 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 361 |
}
|
| 1 |
<?php
|
| 2 |
|
| 3 |
+
require_once 'swpm_handle_subsc_ipn.php';
|
| 4 |
+
// Ignoring invalid class name PHPCS warning
|
| 5 |
+
class swpm_smart_checkout_ipn_handler { // phpcs:ignore
|
| 6 |
+
|
| 7 |
+
public $ipn_log = false; // bool: log IPN results to text file?
|
| 8 |
+
public $ipn_log_file; // filename of the IPN log.
|
| 9 |
+
public $ipn_response; // holds the IPN response from paypal.
|
| 10 |
+
public $ipn_data = array(); // array contains the POST values for IPN.
|
| 11 |
+
public $fields = array(); // array holds the fields to submit to paypal.
|
| 12 |
+
public $sandbox_mode = false;
|
| 13 |
+
|
| 14 |
+
public function __construct() {
|
| 15 |
+
$this->paypal_url = 'https://www.paypal.com/cgi-bin/webscr';
|
| 16 |
+
$this->ipn_log_file = 'ipn_handle_debug_swpm.log';
|
| 17 |
+
$this->ipn_response = '';
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
public function swpm_validate_and_create_membership() {
|
| 21 |
+
// Check Product Name , Price , Currency , Receivers email.
|
| 22 |
+
$error_msg = '';
|
| 23 |
+
|
| 24 |
+
// Read the IPN and validate.
|
| 25 |
+
$gross_total = $this->ipn_data['mc_gross'];
|
| 26 |
+
$transaction_type = $this->ipn_data['txn_type'];
|
| 27 |
+
$txn_id = $this->ipn_data['txn_id'];
|
| 28 |
+
$payment_status = $this->ipn_data['payment_status'];
|
| 29 |
+
|
| 30 |
+
// Check payment status.
|
| 31 |
+
if ( ! empty( $payment_status ) ) {
|
| 32 |
+
if ( 'Denied' == $payment_status ) {
|
| 33 |
+
$this->debug_log( 'Payment status for this transaction is DENIED. You denied the transaction... most likely a cancellation of an eCheque. Nothing to do here.', false );
|
| 34 |
+
return false;
|
| 35 |
+
}
|
| 36 |
+
if ( 'Canceled_Reversal' == $payment_status ) {
|
| 37 |
+
$this->debug_log( 'This is a dispute closed notification in your favour. The plugin will not do anyting.', false );
|
| 38 |
+
return true;
|
| 39 |
+
}
|
| 40 |
+
if ( 'Completed' != $payment_status && 'Processed' != $payment_status && 'Refunded' != $payment_status && 'Reversed' != $payment_status ) {
|
| 41 |
+
$error_msg .= 'Funds have not been cleared yet. Transaction will be processed when the funds clear!';
|
| 42 |
+
$this->debug_log( $error_msg, false );
|
| 43 |
+
$this->debug_log( wp_json_encode( $this->ipn_data ), false );
|
| 44 |
+
return false;
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
// Check txn type.
|
| 49 |
+
if ( 'new_case' == $transaction_type ) {
|
| 50 |
+
$this->debug_log( 'This is a dispute case. Nothing to do here.', true );
|
| 51 |
+
return true;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
$custom = urldecode( $this->ipn_data['custom'] );
|
| 55 |
+
$this->ipn_data['custom'] = $custom;
|
| 56 |
+
$customvariables = SwpmTransactions::parse_custom_var( $custom );
|
| 57 |
+
|
| 58 |
+
// Handle refunds.
|
| 59 |
+
if ( $gross_total < 0 ) {
|
| 60 |
+
// This is a refund or reversal.
|
| 61 |
+
$this->debug_log( 'This is a refund notification. Refund amount: ' . $gross_total, true );
|
| 62 |
+
swpm_handle_subsc_cancel_stand_alone( $this->ipn_data, true );
|
| 63 |
+
return true;
|
| 64 |
+
}
|
| 65 |
+
if ( isset( $this->ipn_data['reason_code'] ) && 'refund' == $this->ipn_data['reason_code'] ) {
|
| 66 |
+
$this->debug_log( 'This is a refund notification. Refund amount: ' . $gross_total, true );
|
| 67 |
+
swpm_handle_subsc_cancel_stand_alone( $this->ipn_data, true );
|
| 68 |
+
return true;
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
if ( ( 'subscr_signup' == $transaction_type ) ) {
|
| 72 |
+
$this->debug_log( 'Subscription signup IPN received... (handled by the subscription IPN handler)', true );
|
| 73 |
+
// Code to handle the signup IPN for subscription.
|
| 74 |
+
$subsc_ref = $customvariables['subsc_ref'];
|
| 75 |
+
|
| 76 |
+
if ( ! empty( $subsc_ref ) ) {
|
| 77 |
+
$this->debug_log( 'Found a membership level ID. Creating member account...', true );
|
| 78 |
+
$swpm_id = $customvariables['swpm_id'];
|
| 79 |
+
swpm_handle_subsc_signup_stand_alone( $this->ipn_data, $subsc_ref, $this->ipn_data['subscr_id'], $swpm_id );
|
| 80 |
+
// Handle customized subscription signup.
|
| 81 |
+
}
|
| 82 |
+
return true;
|
| 83 |
+
} elseif ( ( 'subscr_cancel' == $transaction_type ) || ( 'subscr_eot' == $transaction_type ) || ( 'subscr_failed' == $transaction_type ) ) {
|
| 84 |
+
// Code to handle the IPN for subscription cancellation.
|
| 85 |
+
$this->debug_log( 'Subscription cancellation IPN received... (handled by the subscription IPN handler)', true );
|
| 86 |
+
swpm_handle_subsc_cancel_stand_alone( $this->ipn_data );
|
| 87 |
+
return true;
|
| 88 |
+
} else {
|
| 89 |
+
$cart_items = array();
|
| 90 |
+
$this->debug_log( 'Transaction Type: Buy Now/Subscribe', true );
|
| 91 |
+
$item_number = $this->ipn_data['item_number'];
|
| 92 |
+
$item_name = $this->ipn_data['item_name'];
|
| 93 |
+
$quantity = $this->ipn_data['quantity'];
|
| 94 |
+
$mc_gross = $this->ipn_data['mc_gross'];
|
| 95 |
+
$mc_currency = $this->ipn_data['mc_currency'];
|
| 96 |
+
|
| 97 |
+
$current_item = array(
|
| 98 |
+
'item_number' => $item_number,
|
| 99 |
+
'item_name' => $item_name,
|
| 100 |
+
'quantity' => $quantity,
|
| 101 |
+
'mc_gross' => $mc_gross,
|
| 102 |
+
'mc_currency' => $mc_currency,
|
| 103 |
+
);
|
| 104 |
+
|
| 105 |
+
array_push( $cart_items, $current_item );
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
$counter = 0;
|
| 109 |
+
foreach ( $cart_items as $current_cart_item ) {
|
| 110 |
+
$cart_item_data_num = $current_cart_item['item_number'];
|
| 111 |
+
$cart_item_data_name = trim( $current_cart_item['item_name'] );
|
| 112 |
+
$cart_item_data_quantity = $current_cart_item['quantity'];
|
| 113 |
+
$cart_item_data_total = $current_cart_item['mc_gross'];
|
| 114 |
+
$cart_item_data_currency = $current_cart_item['mc_currency'];
|
| 115 |
+
if ( empty( $cart_item_data_quantity ) ) {
|
| 116 |
+
$cart_item_data_quantity = 1;
|
| 117 |
+
}
|
| 118 |
+
$this->debug_log( 'Item Number: ' . $cart_item_data_num, true );
|
| 119 |
+
$this->debug_log( 'Item Name: ' . $cart_item_data_name, true );
|
| 120 |
+
$this->debug_log( 'Item Quantity: ' . $cart_item_data_quantity, true );
|
| 121 |
+
$this->debug_log( 'Item Total: ' . $cart_item_data_total, true );
|
| 122 |
+
$this->debug_log( 'Item Currency: ' . $cart_item_data_currency, true );
|
| 123 |
+
|
| 124 |
+
// Get the button id.
|
| 125 |
+
$pp_hosted_button = false;
|
| 126 |
+
$button_id = $cart_item_data_num; // Button id is the item number.
|
| 127 |
+
$membership_level_id = get_post_meta( $button_id, 'membership_level_id', true );
|
| 128 |
+
if ( ! SwpmUtils::membership_level_id_exists( $membership_level_id ) ) {
|
| 129 |
+
$this->debug_log( 'This payment button was not created in the plugin. This is a paypal hosted button.', true );
|
| 130 |
+
$pp_hosted_button = true;
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
// Price check.
|
| 134 |
+
$check_price = true;
|
| 135 |
+
$msg = '';
|
| 136 |
+
$msg = apply_filters( 'swpm_before_price_check_filter', $msg, $current_cart_item );
|
| 137 |
+
if ( ! empty( $msg ) && 'price-check-override' == $msg ) {// This filter allows an extension to do a customized version of price check (if needed).
|
| 138 |
+
$check_price = false;
|
| 139 |
+
$this->debug_log( 'Price and currency check has been overridden by an addon/extension.', true );
|
| 140 |
+
}
|
| 141 |
+
if ( $check_price && ! $pp_hosted_button ) {
|
| 142 |
+
// Check according to buy now payment or subscription payment.
|
| 143 |
+
$button_type = get_post_meta( $button_id, 'button_type', true );
|
| 144 |
+
if ( 'pp_smart_checkout' == $button_type ) {// This is a PayPal Smart Checkout type button.
|
| 145 |
+
$expected_amount = ( get_post_meta( $button_id, 'payment_amount', true ) ) * $cart_item_data_quantity;
|
| 146 |
+
$expected_amount = round( $expected_amount, 2 );
|
| 147 |
+
$expected_amount = apply_filters( 'swpm_payment_amount_filter', $expected_amount, $button_id );
|
| 148 |
+
$received_amount = $cart_item_data_total;
|
| 149 |
+
} else {
|
| 150 |
+
$this->debug_log( 'Error! Unexpected button type: ' . $button_type, false );
|
| 151 |
+
return false;
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
if ( $received_amount < $expected_amount ) {
|
| 155 |
+
// Error! amount received is less than expected. This is invalid.
|
| 156 |
+
$this->debug_log( 'Expected amount: ' . $expected_amount, true );
|
| 157 |
+
$this->debug_log( 'Received amount: ' . $received_amount, true );
|
| 158 |
+
$this->debug_log( 'Price check failed. Amount received is less than the amount expected. This payment will not be processed.', false );
|
| 159 |
+
return false;
|
| 160 |
+
}
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
// *** Handle Membership Payment ***
|
| 164 |
+
// --------------------------------------------------------------------------------------
|
| 165 |
+
// ========= Need to find the (level ID) in the custom variable ============
|
| 166 |
+
$subsc_ref = $customvariables['subsc_ref']; // Membership level ID.
|
| 167 |
+
$this->debug_log( 'Membership payment paid for membership level ID: ' . $subsc_ref, true );
|
| 168 |
+
if ( ! empty( $subsc_ref ) ) {
|
| 169 |
+
$swpm_id = '';
|
| 170 |
+
if ( isset( $customvariables['swpm_id'] ) ) {
|
| 171 |
+
$swpm_id = $customvariables['swpm_id'];
|
| 172 |
+
}
|
| 173 |
+
if ( 'smart_checkout' == $transaction_type ) {
|
| 174 |
+
$this->debug_log( 'Transaction type: web_accept. Creating member account...', true );
|
| 175 |
+
swpm_handle_subsc_signup_stand_alone( $this->ipn_data, $subsc_ref, $this->ipn_data['txn_id'], $swpm_id );
|
| 176 |
+
}
|
| 177 |
+
} else {
|
| 178 |
+
$this->debug_log( 'Membership level ID is missing in the payment notification! Cannot process this notification.', false );
|
| 179 |
+
}
|
| 180 |
+
// == End of Membership payment handling ==
|
| 181 |
+
$counter++;
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
/*
|
| 185 |
+
* * Do Post payment operation and cleanup * *
|
| 186 |
+
*/
|
| 187 |
+
// Save the transaction data.
|
| 188 |
+
$this->debug_log( 'Saving transaction data to the database table.', true );
|
| 189 |
+
$this->ipn_data['gateway'] = 'pp_smart_checkout';
|
| 190 |
+
$this->ipn_data['status'] = $this->ipn_data['payment_status'];
|
| 191 |
+
SwpmTransactions::save_txn_record( $this->ipn_data, $cart_items );
|
| 192 |
+
$this->debug_log( 'Transaction data saved.', true );
|
| 193 |
+
|
| 194 |
+
// Trigger the PayPal IPN processed action hook (so other plugins can can listen for this event).
|
| 195 |
+
do_action( 'swpm_pp_smart_checkout_ipn_processed', $this->ipn_data );
|
| 196 |
+
|
| 197 |
+
do_action( 'swpm_payment_ipn_processed', $this->ipn_data );
|
| 198 |
+
|
| 199 |
+
return true;
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
public function create_ipn_from_smart_checkout( $data ) {
|
| 203 |
+
$ipn['custom'] = $data['custom_field'];
|
| 204 |
+
$ipn['item_number'] = $data['button_id'];
|
| 205 |
+
$ipn['item_name'] = $data['item_name'];
|
| 206 |
+
$ipn['pay_id'] = $data['id'];
|
| 207 |
+
$ipn['create_time'] = $data['create_time'];
|
| 208 |
+
$ipn['txn_id'] = $data['transactions'][0]['related_resources'][0]['sale']['id'];
|
| 209 |
+
$ipn['reason_code'] = ! empty( $data['transactions'][0]['related_resources'][0]['sale']['reason_code'] ) ? $data['transactions'][0]['related_resources'][0]['sale']['reason_code'] : '';
|
| 210 |
+
$ipn['txn_type'] = 'smart_checkout';
|
| 211 |
+
$ipn['payment_status'] = ucfirst( $data['transactions'][0]['related_resources'][0]['sale']['state'] );
|
| 212 |
+
$ipn['transaction_subject'] = '';
|
| 213 |
+
$ipn['mc_currency'] = $data['transactions'][0]['amount']['currency'];
|
| 214 |
+
$ipn['mc_gross'] = $data['transactions'][0]['amount']['total'];
|
| 215 |
+
$ipn['quantity'] = 1;
|
| 216 |
+
$ipn['receiver_email'] = get_option( 'cart_paypal_email' );
|
| 217 |
+
// customer info.
|
| 218 |
+
$ipn['first_name'] = $data['payer']['payer_info']['first_name'];
|
| 219 |
+
$ipn['last_name'] = $data['payer']['payer_info']['last_name'];
|
| 220 |
+
$ipn['payer_email'] = $data['payer']['payer_info']['email'];
|
| 221 |
+
$ipn['address_street'] = $data['payer']['payer_info']['shipping_address']['line1'];
|
| 222 |
+
$ipn['address_city'] = $data['payer']['payer_info']['shipping_address']['city'];
|
| 223 |
+
$ipn['address_state'] = $data['payer']['payer_info']['shipping_address']['state'];
|
| 224 |
+
$ipn['address_zip'] = $data['payer']['payer_info']['shipping_address']['postal_code'];
|
| 225 |
+
$ipn['address_country'] = $data['payer']['payer_info']['shipping_address']['country_code'];
|
| 226 |
+
|
| 227 |
+
$this->ipn_data = $ipn;
|
| 228 |
+
return true;
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
public function validate_ipn_smart_checkout() {
|
| 232 |
+
|
| 233 |
+
if ( $this->sandbox_mode ) {
|
| 234 |
+
$client_id = get_post_meta( $this->ipn_data['item_number'], 'pp_smart_checkout_test_id', true );
|
| 235 |
+
$secret = get_post_meta( $this->ipn_data['item_number'], 'pp_smart_checkout_test_sec', true );
|
| 236 |
+
$api_base = 'https://api.sandbox.paypal.com';
|
| 237 |
+
} else {
|
| 238 |
+
$client_id = get_post_meta( $this->ipn_data['item_number'], 'pp_smart_checkout_live_id', true );
|
| 239 |
+
$secret = get_post_meta( $this->ipn_data['item_number'], 'pp_smart_checkout_live_sec', true );
|
| 240 |
+
$api_base = 'https://api.paypal.com';
|
| 241 |
+
}
|
| 242 |
+
|
| 243 |
+
$wp_request_headers = array(
|
| 244 |
+
'Accept' => 'application/json',
|
| 245 |
+
// Ignoring base64_encode() PHPCS warning as it's being properly used in this case.
|
| 246 |
+
'Authorization' => 'Basic ' . base64_encode( $client_id . ':' . $secret ), // phpcs:ignore
|
| 247 |
+
);
|
| 248 |
+
|
| 249 |
+
$res = wp_remote_request(
|
| 250 |
+
$api_base . '/v1/oauth2/token',
|
| 251 |
+
array(
|
| 252 |
+
'method' => 'POST',
|
| 253 |
+
'headers' => $wp_request_headers,
|
| 254 |
+
'body' => 'grant_type=client_credentials',
|
| 255 |
+
)
|
| 256 |
+
);
|
| 257 |
+
|
| 258 |
+
$code = wp_remote_retrieve_response_code( $res );
|
| 259 |
+
|
| 260 |
+
if ( 200 !== $code ) {
|
| 261 |
+
// Some error occured.
|
| 262 |
+
$body = wp_remote_retrieve_body( $res );
|
| 263 |
+
// translators: %1$d is error code; %2$s is error message.
|
| 264 |
+
return sprintf( __( 'Error occured during payment verification. Error code: %1$d. Message: %2$s', 'simple-membership' ), $code, $body );
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
$body = wp_remote_retrieve_body( $res );
|
| 268 |
+
$body = json_decode( $body );
|
| 269 |
+
|
| 270 |
+
$token = $body->access_token;
|
| 271 |
+
|
| 272 |
+
$wp_request_headers = array(
|
| 273 |
+
'Accept' => 'application/json',
|
| 274 |
+
'Authorization' => 'Bearer ' . $token,
|
| 275 |
+
);
|
| 276 |
+
|
| 277 |
+
$res = wp_remote_request(
|
| 278 |
+
$api_base . '/v1/payments/payment/' . $this->ipn_data['pay_id'],
|
| 279 |
+
array(
|
| 280 |
+
'method' => 'GET',
|
| 281 |
+
'headers' => $wp_request_headers,
|
| 282 |
+
)
|
| 283 |
+
);
|
| 284 |
+
|
| 285 |
+
$code = wp_remote_retrieve_response_code( $res );
|
| 286 |
+
|
| 287 |
+
if ( 200 !== $code ) {
|
| 288 |
+
// Some error occured.
|
| 289 |
+
$body = wp_remote_retrieve_body( $res );
|
| 290 |
+
// translators: %1$d is error code; %2$s is error message.
|
| 291 |
+
return sprintf( __( 'Error occured during payment verification. Error code: %1$d. Message: %2$s', 'simple-membership' ), $code, $body );
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
$body = wp_remote_retrieve_body( $res );
|
| 295 |
+
$body = json_decode( $body );
|
| 296 |
+
|
| 297 |
+
// check payment details.
|
| 298 |
+
if ( $body->transactions[0]->amount->total === $this->ipn_data['mc_gross'] &&
|
| 299 |
+
$body->transactions[0]->amount->currency === $this->ipn_data['mc_currency'] ) {
|
| 300 |
+
// payment is valid.
|
| 301 |
+
return true;
|
| 302 |
+
} else {
|
| 303 |
+
// payment is invalid.
|
| 304 |
+
// translators: %1$s is expected amount, %2$s is expected currency.
|
| 305 |
+
return sprintf( __( 'Payment check failed: invalid amount received. Expected %1$s %2$s, got %3$s %4$s.', 'simple-membership' ), $this->ipn_data['mc_gross'], $this->ipn_data['mc_currency'], $body->transactions[0]->amount->total, $body->transactions[0]->amount->currency );
|
| 306 |
+
}
|
| 307 |
+
}
|
| 308 |
+
|
| 309 |
+
public function debug_log( $message, $success, $end = false ) {
|
| 310 |
+
SwpmLog::log_simple_debug( $message, $success, $end );
|
| 311 |
+
}
|
| 312 |
|
| 313 |
}
|
| 314 |
|
| 315 |
function swpm_pp_smart_checkout_ajax_hanlder() {
|
| 316 |
+
// Start of IPN handling (script execution).
|
| 317 |
+
|
| 318 |
+
// check nonce.
|
| 319 |
+
$uniqid = filter_input( INPUT_POST, 'uniqid', FILTER_SANITIZE_STRING );
|
| 320 |
+
|
| 321 |
+
if ( ! check_ajax_referer( 'swpm-pp-smart-checkout-ajax-nonce-' . $uniqid, 'nonce', false ) ) {
|
| 322 |
+
wp_send_json(
|
| 323 |
+
array(
|
| 324 |
+
'success' => false,
|
| 325 |
+
'errMsg' => __(
|
| 326 |
+
'Nonce check failed. Please reload page.',
|
| 327 |
+
'simple-membership'
|
| 328 |
+
),
|
| 329 |
+
)
|
| 330 |
+
);
|
| 331 |
+
exit;
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
$data = filter_input( INPUT_POST, 'swpm_pp_smart_checkout_payment_data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY );
|
| 335 |
+
|
| 336 |
+
if ( empty( $data ) ) {
|
| 337 |
+
wp_send_json(
|
| 338 |
+
array(
|
| 339 |
+
'success' => false,
|
| 340 |
+
'errMsg' => __(
|
| 341 |
+
'Empty payment data received.',
|
| 342 |
+
'simple-membership'
|
| 343 |
+
),
|
| 344 |
+
)
|
| 345 |
+
);
|
| 346 |
+
}
|
| 347 |
+
|
| 348 |
+
$ipn_handler_instance = new swpm_smart_checkout_ipn_handler();
|
| 349 |
+
|
| 350 |
+
$ipn_data_success = $ipn_handler_instance->create_ipn_from_smart_checkout( $data );
|
| 351 |
+
|
| 352 |
+
if ( true !== $ipn_data_success ) {
|
| 353 |
+
// error occured during IPN array creation.
|
| 354 |
+
wp_send_json(
|
| 355 |
+
array(
|
| 356 |
+
'success' => false,
|
| 357 |
+
'errMsg' => $ipn_data_success,
|
| 358 |
+
)
|
| 359 |
+
);
|
| 360 |
+
}
|
| 361 |
+
|
| 362 |
+
$settings = SwpmSettings::get_instance();
|
| 363 |
+
$debug_enabled = $settings->get_value( 'enable-debug' );
|
| 364 |
+
if ( ! empty( $debug_enabled ) ) {// debug is enabled in the system.
|
| 365 |
+
$debug_log = 'log.txt'; // Debug log file name.
|
| 366 |
+
$ipn_handler_instance->ipn_log = true;
|
| 367 |
+
$ipn_handler_instance->ipn_log_file = $debug_log;
|
| 368 |
+
}
|
| 369 |
+
|
| 370 |
+
$sandbox_enabled = $settings->get_value( 'enable-sandbox-testing' );
|
| 371 |
+
if ( ! empty( $sandbox_enabled ) ) { // Sandbox testing enabled.
|
| 372 |
+
$ipn_handler_instance->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
|
| 373 |
+
$ipn_handler_instance->sandbox_mode = true;
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
+
$ip = filter_input( INPUT_SERVER, 'REMOTE_ADDR', FILTER_SANITIZE_STRING );
|
| 377 |
+
|
| 378 |
+
$ipn_handler_instance->debug_log( 'Paypal Smart Checkout Class Initiated by ' . $ip, true );
|
| 379 |
+
|
| 380 |
+
// Validate the IPN.
|
| 381 |
+
$res = $ipn_handler_instance->validate_ipn_smart_checkout();
|
| 382 |
+
|
| 383 |
+
if ( true !== $res ) {
|
| 384 |
+
wp_send_json(
|
| 385 |
+
array(
|
| 386 |
+
'success' => false,
|
| 387 |
+
'errMsg' => $res,
|
| 388 |
+
)
|
| 389 |
+
);
|
| 390 |
+
}
|
| 391 |
+
|
| 392 |
+
$ipn_handler_instance->debug_log( 'Creating product Information to send.', true );
|
| 393 |
+
|
| 394 |
+
if ( ! $ipn_handler_instance->swpm_validate_and_create_membership() ) {
|
| 395 |
+
$ipn_handler_instance->debug_log( 'IPN product validation failed.', false );
|
| 396 |
+
wp_send_json(
|
| 397 |
+
array(
|
| 398 |
+
'success' => false,
|
| 399 |
+
'errMsg' => __(
|
| 400 |
+
'IPN product validation failed. Check debug log for more details.',
|
| 401 |
+
'simple-membership'
|
| 402 |
+
),
|
| 403 |
+
)
|
| 404 |
+
);
|
| 405 |
+
}
|
| 406 |
+
|
| 407 |
+
$ipn_handler_instance->debug_log( 'Paypal class finished.', true, true );
|
| 408 |
+
|
| 409 |
+
wp_send_json( array( 'success' => true ) );
|
| 410 |
}
|
ipn/swpm-stripe-buy-now-ipn.php
CHANGED
|
@@ -1,154 +1,162 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
class SwpmStripeBuyNowIpnHandler {
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
require SIMPLE_WP_MEMBERSHIP_PATH . 'ipn/swpm_handle_subsc_ipn.php';
|
| 4 |
+
|
| 5 |
+
class SwpmStripeBuyNowIpnHandler {
|
| 6 |
+
|
| 7 |
+
public function __construct() {
|
| 8 |
+
|
| 9 |
+
$this->handle_stripe_ipn();
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
public function handle_stripe_ipn() {
|
| 13 |
+
SwpmLog::log_simple_debug( 'Stripe Buy Now IPN received. Processing request...', true );
|
| 14 |
+
// SwpmLog::log_simple_debug(print_r($_REQUEST, true), true);//Useful for debugging purpose
|
| 15 |
+
|
| 16 |
+
// Include the Stripe library.
|
| 17 |
+
if ( ! class_exists( '\Stripe\Stripe' ) ) {
|
| 18 |
+
include SIMPLE_WP_MEMBERSHIP_PATH . 'lib/stripe-gateway/init.php';
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
// Read and sanitize the request parameters.
|
| 22 |
+
$button_id = sanitize_text_field( $_REQUEST['item_number'] );
|
| 23 |
+
$button_id = absint( $button_id );
|
| 24 |
+
$button_title = sanitize_text_field( $_REQUEST['item_name'] );
|
| 25 |
+
$payment_amount = sanitize_text_field( $_REQUEST['item_price'] );
|
| 26 |
+
$currency_code = sanitize_text_field( $_REQUEST['currency_code'] );
|
| 27 |
+
$zero_cents = unserialize( SIMPLE_WP_MEMBERSHIP_STRIPE_ZERO_CENTS );
|
| 28 |
+
if ( in_array( $currency_code, $zero_cents ) ) {
|
| 29 |
+
$price_in_cents = $payment_amount;
|
| 30 |
+
} else {
|
| 31 |
+
$price_in_cents = $payment_amount * 100;// The amount (in cents). This value is used in Stripe API.
|
| 32 |
+
}
|
| 33 |
+
$stripe_token = filter_input( INPUT_POST, 'stripeToken', FILTER_SANITIZE_STRING );
|
| 34 |
+
$stripe_token_type = filter_input( INPUT_POST, 'stripeTokenType', FILTER_SANITIZE_STRING );
|
| 35 |
+
$stripe_email = filter_input( INPUT_POST, 'stripeEmail', FILTER_SANITIZE_EMAIL );
|
| 36 |
+
|
| 37 |
+
// Retrieve the CPT for this button
|
| 38 |
+
$button_cpt = get_post( $button_id );
|
| 39 |
+
if ( ! $button_cpt ) {
|
| 40 |
+
// Fatal error. Could not find this payment button post object.
|
| 41 |
+
SwpmLog::log_simple_debug( 'Fatal Error! Failed to retrieve the payment button post object for the given button ID: ' . $button_id, false );
|
| 42 |
+
wp_die( esc_html( sprintf( 'Fatal Error! Payment button (ID: %d) does not exist. This request will fail.', $button_id ) ) );
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
$membership_level_id = get_post_meta( $button_id, 'membership_level_id', true );
|
| 46 |
+
|
| 47 |
+
// Validate and verify some of the main values.
|
| 48 |
+
$true_payment_amount = get_post_meta( $button_id, 'payment_amount', true );
|
| 49 |
+
$true_payment_amount = apply_filters( 'swpm_payment_amount_filter', $true_payment_amount, $button_id );
|
| 50 |
+
|
| 51 |
+
if ( $payment_amount != $true_payment_amount ) {
|
| 52 |
+
// Fatal error. Payment amount may have been tampered with.
|
| 53 |
+
$error_msg = 'Fatal Error! Received payment amount (' . $payment_amount . ') does not match with the original amount (' . $true_payment_amount . ')';
|
| 54 |
+
SwpmLog::log_simple_debug( $error_msg, false );
|
| 55 |
+
wp_die( esc_html( $error_msg ) );
|
| 56 |
+
}
|
| 57 |
+
$true_currency_code = get_post_meta( $button_id, 'payment_currency', true );
|
| 58 |
+
if ( $currency_code != $true_currency_code ) {
|
| 59 |
+
// Fatal error. Currency code may have been tampered with.
|
| 60 |
+
$error_msg = 'Fatal Error! Received currency code (' . $currency_code . ') does not match with the original code (' . $true_currency_code . ')';
|
| 61 |
+
SwpmLog::log_simple_debug( $error_msg, false );
|
| 62 |
+
wp_die( esc_html( $error_msg ) );
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
// Validation passed. Go ahead with the charge.
|
| 66 |
+
|
| 67 |
+
// Sandbox and other settings
|
| 68 |
+
$settings = SwpmSettings::get_instance();
|
| 69 |
+
$sandbox_enabled = $settings->get_value( 'enable-sandbox-testing' );
|
| 70 |
+
if ( $sandbox_enabled ) {
|
| 71 |
+
SwpmLog::log_simple_debug( 'Sandbox payment mode is enabled. Using test API key details.', true );
|
| 72 |
+
$secret_key = get_post_meta( $button_id, 'stripe_test_secret_key', true );
|
| 73 |
+
// Use sandbox API key
|
| 74 |
+
} else {
|
| 75 |
+
$secret_key = get_post_meta( $button_id, 'stripe_live_secret_key', true );
|
| 76 |
+
// Use live API key
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
// Set secret API key in the Stripe library
|
| 80 |
+
\Stripe\Stripe::setApiKey( $secret_key );
|
| 81 |
+
|
| 82 |
+
// Get the credit card details submitted by the form
|
| 83 |
+
$token = $stripe_token;
|
| 84 |
+
|
| 85 |
+
// Create the charge on Stripe's servers - this will charge the user's card
|
| 86 |
+
try {
|
| 87 |
+
$charge = \Stripe\Charge::create(
|
| 88 |
+
array(
|
| 89 |
+
'amount' => $price_in_cents, // Amount in cents
|
| 90 |
+
'currency' => strtolower( $currency_code ),
|
| 91 |
+
'source' => $token,
|
| 92 |
+
'description' => $button_title,
|
| 93 |
+
'receipt_email' => $stripe_email,
|
| 94 |
+
)
|
| 95 |
+
);
|
| 96 |
+
} catch ( \Stripe\Error\Card $e ) {
|
| 97 |
+
// The card has been declined
|
| 98 |
+
SwpmLog::log_simple_debug( 'Stripe Charge Error! The card has been declined. ' . $e->getMessage(), false );
|
| 99 |
+
$body = $e->getJsonBody();
|
| 100 |
+
$error = $body['error'];
|
| 101 |
+
$error_string = print_r( $error, true );
|
| 102 |
+
SwpmLog::log_simple_debug( 'Error details: ' . $error_string, false );
|
| 103 |
+
wp_die( esc_html( 'Stripe Charge Error! Card charge has been declined. ' . $e->getMessage() . $error_string ) );
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
// Everything went ahead smoothly with the charge.
|
| 107 |
+
SwpmLog::log_simple_debug( 'Stripe Buy Now charge successful.', true );
|
| 108 |
+
|
| 109 |
+
// Grab the charge ID and set it as the transaction ID.
|
| 110 |
+
$txn_id = $charge->id;// $charge->balance_transaction;
|
| 111 |
+
// The charge ID can be used to retrieve the transaction details using hte following call.
|
| 112 |
+
// \Stripe\Charge::retrieve($charge->id);
|
| 113 |
+
$custom = sanitize_text_field( $_REQUEST['custom'] );
|
| 114 |
+
$custom_var = SwpmTransactions::parse_custom_var( $custom );
|
| 115 |
+
$swpm_id = isset( $custom_var['swpm_id'] ) ? $custom_var['swpm_id'] : '';
|
| 116 |
+
|
| 117 |
+
// Create the $ipn_data array.
|
| 118 |
+
$ipn_data = array();
|
| 119 |
+
$ipn_data['mc_gross'] = $payment_amount;
|
| 120 |
+
$ipn_data['first_name'] = '';
|
| 121 |
+
$ipn_data['last_name'] = '';
|
| 122 |
+
$ipn_data['payer_email'] = $stripe_email;
|
| 123 |
+
$ipn_data['membership_level'] = $membership_level_id;
|
| 124 |
+
$ipn_data['txn_id'] = $txn_id;
|
| 125 |
+
$ipn_data['subscr_id'] = '';
|
| 126 |
+
$ipn_data['swpm_id'] = $swpm_id;
|
| 127 |
+
$ipn_data['ip'] = $custom_var['user_ip'];
|
| 128 |
+
$ipn_data['custom'] = $custom;
|
| 129 |
+
$ipn_data['gateway'] = 'stripe';
|
| 130 |
+
$ipn_data['status'] = 'completed';
|
| 131 |
+
|
| 132 |
+
$ipn_data['address_street'] = '';
|
| 133 |
+
$ipn_data['address_city'] = '';
|
| 134 |
+
$ipn_data['address_state'] = '';
|
| 135 |
+
$ipn_data['address_zipcode'] = '';
|
| 136 |
+
$ipn_data['country'] = '';
|
| 137 |
+
|
| 138 |
+
// Handle the membership signup related tasks.
|
| 139 |
+
swpm_handle_subsc_signup_stand_alone( $ipn_data, $membership_level_id, $txn_id, $swpm_id );
|
| 140 |
+
|
| 141 |
+
// Save the transaction record
|
| 142 |
+
SwpmTransactions::save_txn_record( $ipn_data );
|
| 143 |
+
SwpmLog::log_simple_debug( 'Transaction data saved.', true );
|
| 144 |
+
|
| 145 |
+
// Trigger the stripe IPN processed action hook (so other plugins can can listen for this event).
|
| 146 |
+
do_action( 'swpm_stripe_ipn_processed', $ipn_data );
|
| 147 |
+
|
| 148 |
+
do_action( 'swpm_payment_ipn_processed', $ipn_data );
|
| 149 |
+
|
| 150 |
+
// Redirect the user to the return URL (or to the homepage if a return URL is not specified for this payment button).
|
| 151 |
+
$return_url = get_post_meta( $button_id, 'return_url', true );
|
| 152 |
+
if ( empty( $return_url ) ) {
|
| 153 |
+
$return_url = SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL;
|
| 154 |
+
}
|
| 155 |
+
SwpmLog::log_simple_debug( 'Redirecting customer to: ' . $return_url, true );
|
| 156 |
+
SwpmLog::log_simple_debug( 'End of Stripe Buy Now IPN processing.', true, true );
|
| 157 |
+
SwpmMiscUtils::redirect_to_url( $return_url );
|
| 158 |
+
|
| 159 |
+
}
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
$swpm_stripe_buy_ipn = new SwpmStripeBuyNowIpnHandler();
|
ipn/swpm-stripe-subscription-ipn.php
CHANGED
|
@@ -1,179 +1,180 @@
|
|
| 1 |
<?php
|
| 2 |
|
| 3 |
-
|
| 4 |
|
| 5 |
class SwpmStripeSubscriptionIpnHandler {
|
| 6 |
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
|
|
|
| 177 |
|
| 178 |
}
|
| 179 |
|
| 1 |
<?php
|
| 2 |
|
| 3 |
+
require SIMPLE_WP_MEMBERSHIP_PATH . 'ipn/swpm_handle_subsc_ipn.php';
|
| 4 |
|
| 5 |
class SwpmStripeSubscriptionIpnHandler {
|
| 6 |
|
| 7 |
+
public function __construct() {
|
| 8 |
+
|
| 9 |
+
$this->handle_stripe_ipn();
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
public function handle_stripe_ipn() {
|
| 13 |
+
if ( isset( $_GET['hook'] ) ) {
|
| 14 |
+
// this is Webhook notify from Stripe
|
| 15 |
+
// TODO: add Webhook Signing Secret verification
|
| 16 |
+
// To do this, we need to get customer ID, retreive its details from Stripe, get button_id from metadata
|
| 17 |
+
// and see if the button has Signing Secret option set. If it is - we need to check signatures
|
| 18 |
+
// More details here: https://stripe.com/docs/webhooks#signatures
|
| 19 |
+
|
| 20 |
+
$input = @file_get_contents( 'php://input' );
|
| 21 |
+
if ( empty( $input ) ) {
|
| 22 |
+
SwpmLog::log_simple_debug( 'Stripe Subscription Webhook sent empty data or page was accessed directly. Aborting.', false );
|
| 23 |
+
echo 'Empty Webhook data received.';
|
| 24 |
+
die;
|
| 25 |
+
}
|
| 26 |
+
// SwpmLog::log_simple_debug($input, true);
|
| 27 |
+
$event_json = json_decode( $input );
|
| 28 |
+
|
| 29 |
+
$type = $event_json->type;
|
| 30 |
+
|
| 31 |
+
if ( 'customer.subscription.deleted' === $type || 'charge.refunded' === $type ) {
|
| 32 |
+
// Subscription expired or refunded event
|
| 33 |
+
SwpmLog::log_simple_debug( 'Stripe Subscription Webhook received. Processing request...', true );
|
| 34 |
+
// Let's form minimal ipn_data array for swpm_handle_subsc_cancel_stand_alone
|
| 35 |
+
$customer = $event_json->data->object->customer;
|
| 36 |
+
$subscr_id = $event_json->data->object->id;
|
| 37 |
+
$ipn_data = array();
|
| 38 |
+
$ipn_data['subscr_id'] = $subscr_id;
|
| 39 |
+
$ipn_data['parent_txn_id'] = $customer;
|
| 40 |
+
|
| 41 |
+
swpm_handle_subsc_cancel_stand_alone( $ipn_data );
|
| 42 |
+
}
|
| 43 |
+
http_response_code( 200 ); // tells Stripe we received this notify
|
| 44 |
+
return;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
SwpmLog::log_simple_debug( 'Stripe Subscription IPN received. Processing request...', true );
|
| 48 |
+
// SwpmLog::log_simple_debug(print_r($_REQUEST, true), true);//Useful for debugging purpose
|
| 49 |
+
// Include the Stripe library.
|
| 50 |
+
if ( ! class_exists( '\Stripe\Stripe' ) ) {
|
| 51 |
+
include SIMPLE_WP_MEMBERSHIP_PATH . 'lib/stripe-gateway/init.php';
|
| 52 |
+
}
|
| 53 |
+
// Read and sanitize the request parameters.
|
| 54 |
+
$button_id = sanitize_text_field( $_REQUEST['item_number'] );
|
| 55 |
+
$button_id = absint( $button_id );
|
| 56 |
+
$button_title = sanitize_text_field( $_REQUEST['item_name'] );
|
| 57 |
+
|
| 58 |
+
$stripe_token = filter_input( INPUT_POST, 'stripeToken', FILTER_SANITIZE_STRING );
|
| 59 |
+
$stripe_token_type = filter_input( INPUT_POST, 'stripeTokenType', FILTER_SANITIZE_STRING );
|
| 60 |
+
$stripe_email = filter_input( INPUT_POST, 'stripeEmail', FILTER_SANITIZE_EMAIL );
|
| 61 |
+
|
| 62 |
+
// Retrieve the CPT for this button
|
| 63 |
+
$button_cpt = get_post( $button_id );
|
| 64 |
+
if ( ! $button_cpt ) {
|
| 65 |
+
// Fatal error. Could not find this payment button post object.
|
| 66 |
+
SwpmLog::log_simple_debug( 'Fatal Error! Failed to retrieve the payment button post object for the given button ID: ' . $button_id, false );
|
| 67 |
+
wp_die( esc_html( sprintf( 'Fatal Error! Payment button (ID: %d) does not exist. This request will fail.', $button_id ) ) );
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
$plan_id = get_post_meta( $button_id, 'stripe_plan_id', true );
|
| 71 |
+
$descr = 'Subscription to "' . $plan_id . '" plan';
|
| 72 |
+
|
| 73 |
+
$membership_level_id = get_post_meta( $button_id, 'membership_level_id', true );
|
| 74 |
+
|
| 75 |
+
// Validate and verify some of the main values.
|
| 76 |
+
// Validation passed. Go ahead with the charge.
|
| 77 |
+
// Sandbox and other settings
|
| 78 |
+
$settings = SwpmSettings::get_instance();
|
| 79 |
+
$sandbox_enabled = $settings->get_value( 'enable-sandbox-testing' );
|
| 80 |
+
if ( $sandbox_enabled ) {
|
| 81 |
+
SwpmLog::log_simple_debug( 'Sandbox payment mode is enabled. Using test API key details.', true );
|
| 82 |
+
$secret_key = get_post_meta( $button_id, 'stripe_test_secret_key', true ); // Use sandbox API key
|
| 83 |
+
} else {
|
| 84 |
+
$secret_key = get_post_meta( $button_id, 'stripe_live_secret_key', true ); // Use live API key
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
// Set secret API key in the Stripe library
|
| 88 |
+
\Stripe\Stripe::setApiKey( $secret_key );
|
| 89 |
+
|
| 90 |
+
// Get the credit card details submitted by the form
|
| 91 |
+
$token = $stripe_token;
|
| 92 |
+
|
| 93 |
+
// Create the charge on Stripe's servers - this will charge the user's card
|
| 94 |
+
try {
|
| 95 |
+
$customer = \Stripe\Customer::create(
|
| 96 |
+
array(
|
| 97 |
+
'description' => $descr,
|
| 98 |
+
'email' => $stripe_email,
|
| 99 |
+
'source' => $token,
|
| 100 |
+
'plan' => $plan_id,
|
| 101 |
+
'trial_from_plan' => 'true',
|
| 102 |
+
)
|
| 103 |
+
);
|
| 104 |
+
} catch ( Exception $e ) {
|
| 105 |
+
SwpmLog::log_simple_debug( 'Error occurred during Stripe Subscribe. ' . $e->getMessage(), false );
|
| 106 |
+
$body = $e->getJsonBody();
|
| 107 |
+
$error = $body['error'];
|
| 108 |
+
$error_string = print_r( $error, true );
|
| 109 |
+
SwpmLog::log_simple_debug( 'Error details: ' . $error_string, false );
|
| 110 |
+
wp_die( esc_html( 'Stripe Subscription Error! ' . $e->getMessage() . $error_string ) );
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
// Everything went ahead smoothly with the charge.
|
| 114 |
+
SwpmLog::log_simple_debug( 'Stripe Subscription successful.', true );
|
| 115 |
+
|
| 116 |
+
// let's add button_id to metadata
|
| 117 |
+
$customer->metadata = array( 'button_id' => $button_id );
|
| 118 |
+
try {
|
| 119 |
+
$customer->save();
|
| 120 |
+
} catch ( Exception $e ) {
|
| 121 |
+
SwpmLog::log_simple_debug( 'Error occurred during Stripe customer metadata update. ' . $e->getMessage(), false );
|
| 122 |
+
$body = $e->getJsonBody();
|
| 123 |
+
SwpmLog::log_simple_debug( 'Error details: ' . $error_string, false );
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
// Grab customer ID and set it as the transaction ID.
|
| 127 |
+
$txn_id = $customer->id; // $charge->balance_transaction;
|
| 128 |
+
// Grab subscription ID
|
| 129 |
+
$subscr_id = $customer->subscriptions->data[0]->id;
|
| 130 |
+
$custom = sanitize_text_field( $_REQUEST['custom'] );
|
| 131 |
+
$custom_var = SwpmTransactions::parse_custom_var( $custom );
|
| 132 |
+
$swpm_id = isset( $custom_var['swpm_id'] ) ? $custom_var['swpm_id'] : '';
|
| 133 |
+
|
| 134 |
+
$payment_amount = $customer->subscriptions->data[0]->plan->amount / 100;
|
| 135 |
+
|
| 136 |
+
// Create the $ipn_data array.
|
| 137 |
+
$ipn_data = array();
|
| 138 |
+
$ipn_data['mc_gross'] = $payment_amount;
|
| 139 |
+
$ipn_data['first_name'] = '';
|
| 140 |
+
$ipn_data['last_name'] = '';
|
| 141 |
+
$ipn_data['payer_email'] = $stripe_email;
|
| 142 |
+
$ipn_data['membership_level'] = $membership_level_id;
|
| 143 |
+
$ipn_data['txn_id'] = $txn_id;
|
| 144 |
+
$ipn_data['subscr_id'] = $subscr_id;
|
| 145 |
+
$ipn_data['swpm_id'] = $swpm_id;
|
| 146 |
+
$ipn_data['ip'] = $custom_var['user_ip'];
|
| 147 |
+
$ipn_data['custom'] = $custom;
|
| 148 |
+
$ipn_data['gateway'] = 'stripe';
|
| 149 |
+
$ipn_data['status'] = 'completed';
|
| 150 |
+
|
| 151 |
+
$ipn_data['address_street'] = '';
|
| 152 |
+
$ipn_data['address_city'] = '';
|
| 153 |
+
$ipn_data['address_state'] = '';
|
| 154 |
+
$ipn_data['address_zipcode'] = '';
|
| 155 |
+
$ipn_data['country'] = '';
|
| 156 |
+
|
| 157 |
+
// Handle the membership signup related tasks.
|
| 158 |
+
swpm_handle_subsc_signup_stand_alone( $ipn_data, $membership_level_id, $txn_id, $swpm_id );
|
| 159 |
+
|
| 160 |
+
// Save the transaction record
|
| 161 |
+
SwpmTransactions::save_txn_record( $ipn_data );
|
| 162 |
+
SwpmLog::log_simple_debug( 'Transaction data saved.', true );
|
| 163 |
+
|
| 164 |
+
// Trigger the stripe IPN processed action hook (so other plugins can can listen for this event).
|
| 165 |
+
do_action( 'swpm_stripe_ipn_processed', $ipn_data );
|
| 166 |
+
|
| 167 |
+
do_action( 'swpm_payment_ipn_processed', $ipn_data );
|
| 168 |
+
|
| 169 |
+
// Redirect the user to the return URL (or to the homepage if a return URL is not specified for this payment button).
|
| 170 |
+
$return_url = get_post_meta( $button_id, 'return_url', true );
|
| 171 |
+
if ( empty( $return_url ) ) {
|
| 172 |
+
$return_url = SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL;
|
| 173 |
+
}
|
| 174 |
+
SwpmLog::log_simple_debug( 'Redirecting customer to: ' . $return_url, true );
|
| 175 |
+
SwpmLog::log_simple_debug( 'End of Stripe Subscription IPN processing.', true, true );
|
| 176 |
+
SwpmMiscUtils::redirect_to_url( $return_url );
|
| 177 |
+
}
|
| 178 |
|
| 179 |
}
|
| 180 |
|
ipn/swpm_handle_pp_ipn.php
CHANGED
|
@@ -1,333 +1,308 @@
|
|
| 1 |
<?php
|
| 2 |
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
class swpm_paypal_ipn_handler {
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
//$this->debug_log( 'IPN Request: ' . print_r( $params, true ) , true);
|
| 274 |
-
//$this->debug_log( 'IPN Response: ' . print_r( $response, true ), true);
|
| 275 |
-
|
| 276 |
-
// Check to see if the request was valid.
|
| 277 |
-
if ( ! is_wp_error( $response ) && strstr( $response['body'], 'VERIFIED' ) ) {
|
| 278 |
-
$this->debug_log('IPN successfully verified.', true);
|
| 279 |
-
return true;
|
| 280 |
-
}
|
| 281 |
-
|
| 282 |
-
// Invalid IPN transaction. Check the log for details.
|
| 283 |
-
$this->debug_log('IPN validation failed.', false);
|
| 284 |
-
if ( is_wp_error( $response ) ) {
|
| 285 |
-
$this->debug_log('Error response: ' . $response->get_error_message(), false);
|
| 286 |
-
}
|
| 287 |
-
return false;
|
| 288 |
-
}
|
| 289 |
-
|
| 290 |
-
function debug_log($message,$success,$end=false)
|
| 291 |
-
{
|
| 292 |
-
SwpmLog::log_simple_debug($message, $success, $end);
|
| 293 |
-
}
|
| 294 |
}
|
| 295 |
|
| 296 |
// Start of IPN handling (script execution)
|
| 297 |
|
| 298 |
$ipn_handler_instance = new swpm_paypal_ipn_handler();
|
| 299 |
|
| 300 |
-
$settings
|
| 301 |
-
$debug_enabled = $settings->get_value('enable-debug');
|
| 302 |
-
if(!empty($debug_enabled))
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
|
| 306 |
-
$ipn_handler_instance->ipn_log = true;
|
| 307 |
$ipn_handler_instance->ipn_log_file = $debug_log;
|
| 308 |
-
if(empty($_POST))
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
exit;
|
| 312 |
}
|
| 313 |
}
|
| 314 |
|
| 315 |
-
$sandbox_enabled = $settings->get_value('enable-sandbox-testing');
|
| 316 |
-
if(!empty($sandbox_enabled))
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
$ipn_handler_instance->sandbox_mode = true;
|
| 320 |
}
|
| 321 |
|
| 322 |
-
$ipn_handler_instance->debug_log('Paypal Class Initiated by '
|
| 323 |
|
| 324 |
// Validate the IPN
|
| 325 |
-
if ($ipn_handler_instance->swpm_validate_ipn())
|
| 326 |
-
|
| 327 |
-
$ipn_handler_instance->debug_log('Creating product Information to send.',true);
|
| 328 |
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
}
|
| 333 |
-
$ipn_handler_instance->debug_log('Paypal class finished.',true,true);
|
| 1 |
<?php
|
| 2 |
|
| 3 |
+
require_once 'swpm_handle_subsc_ipn.php';
|
| 4 |
+
|
| 5 |
+
class swpm_paypal_ipn_handler { // phpcs:ignore
|
| 6 |
+
|
| 7 |
+
public $ipn_log = false; // bool: log IPN results to text file?
|
| 8 |
+
public $ipn_log_file; // filename of the IPN log
|
| 9 |
+
public $ipn_response; // holds the IPN response from paypal
|
| 10 |
+
public $ipn_data = array(); // array contains the POST values for IPN
|
| 11 |
+
public $fields = array(); // array holds the fields to submit to paypal
|
| 12 |
+
public $sandbox_mode = false;
|
| 13 |
+
|
| 14 |
+
public function __construct() {
|
| 15 |
+
$this->paypal_url = 'https://www.paypal.com/cgi-bin/webscr';
|
| 16 |
+
$this->ipn_log_file = 'ipn_handle_debug_swpm.log';
|
| 17 |
+
$this->ipn_response = '';
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
public function swpm_validate_and_create_membership() {
|
| 21 |
+
// Check Product Name , Price , Currency , Receivers email ,
|
| 22 |
+
$error_msg = '';
|
| 23 |
+
|
| 24 |
+
// Read the IPN and validate
|
| 25 |
+
$gross_total = $this->ipn_data['mc_gross'];
|
| 26 |
+
$transaction_type = $this->ipn_data['txn_type'];
|
| 27 |
+
$txn_id = $this->ipn_data['txn_id'];
|
| 28 |
+
$payment_status = $this->ipn_data['payment_status'];
|
| 29 |
+
|
| 30 |
+
// Check payment status
|
| 31 |
+
if ( ! empty( $payment_status ) ) {
|
| 32 |
+
if ( 'Denied' == $payment_status ) {
|
| 33 |
+
$this->debug_log( 'Payment status for this transaction is DENIED. You denied the transaction... most likely a cancellation of an eCheque. Nothing to do here.', false );
|
| 34 |
+
return false;
|
| 35 |
+
}
|
| 36 |
+
if ( 'Canceled_Reversal' === $payment_status ) {
|
| 37 |
+
$this->debug_log( 'This is a dispute closed notification in your favour. The plugin will not do anyting.', false );
|
| 38 |
+
return true;
|
| 39 |
+
}
|
| 40 |
+
if ( 'Completed' !== $payment_status && 'Processed' !== $payment_status && 'Refunded' !== $payment_status && 'Reversed' !== $payment_status ) {
|
| 41 |
+
$error_msg .= 'Funds have not been cleared yet. Transaction will be processed when the funds clear!';
|
| 42 |
+
$this->debug_log( $error_msg, false );
|
| 43 |
+
return false;
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
// Check txn type
|
| 48 |
+
if ( 'new_case' === $transaction_type ) {
|
| 49 |
+
$this->debug_log( 'This is a dispute case. Nothing to do here.', true );
|
| 50 |
+
return true;
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
$custom = urldecode( $this->ipn_data['custom'] );
|
| 54 |
+
$this->ipn_data['custom'] = $custom;
|
| 55 |
+
$customvariables = SwpmTransactions::parse_custom_var( $custom );
|
| 56 |
+
|
| 57 |
+
// Handle refunds
|
| 58 |
+
if ( $gross_total < 0 ) {
|
| 59 |
+
// This is a refund or reversal
|
| 60 |
+
$this->debug_log( 'This is a refund notification. Refund amount: ' . $gross_total, true );
|
| 61 |
+
swpm_handle_subsc_cancel_stand_alone( $this->ipn_data, true );
|
| 62 |
+
return true;
|
| 63 |
+
}
|
| 64 |
+
if ( isset( $this->ipn_data['reason_code'] ) && 'refund' === $this->ipn_data['reason_code'] ) {
|
| 65 |
+
$this->debug_log( 'This is a refund notification. Refund amount: ' . $gross_total, true );
|
| 66 |
+
swpm_handle_subsc_cancel_stand_alone( $this->ipn_data, true );
|
| 67 |
+
return true;
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
if ( ( 'subscr_signup' === $transaction_type ) ) {
|
| 71 |
+
$this->debug_log( 'Subscription signup IPN received... (handled by the subscription IPN handler)', true );
|
| 72 |
+
// Code to handle the signup IPN for subscription
|
| 73 |
+
$subsc_ref = $customvariables['subsc_ref'];
|
| 74 |
+
|
| 75 |
+
if ( ! empty( $subsc_ref ) ) {
|
| 76 |
+
$this->debug_log( 'Found a membership level ID. Creating member account...', true );
|
| 77 |
+
$swpm_id = $customvariables['swpm_id'];
|
| 78 |
+
swpm_handle_subsc_signup_stand_alone( $this->ipn_data, $subsc_ref, $this->ipn_data['subscr_id'], $swpm_id );
|
| 79 |
+
// Handle customized subscription signup
|
| 80 |
+
}
|
| 81 |
+
return true;
|
| 82 |
+
} elseif ( ( $transaction_type == 'subscr_cancel' ) || ( $transaction_type == 'subscr_eot' ) || ( $transaction_type == 'subscr_failed' ) ) {
|
| 83 |
+
// Code to handle the IPN for subscription cancellation
|
| 84 |
+
$this->debug_log( 'Subscription cancellation IPN received... (handled by the subscription IPN handler)', true );
|
| 85 |
+
swpm_handle_subsc_cancel_stand_alone( $this->ipn_data );
|
| 86 |
+
return true;
|
| 87 |
+
} else {
|
| 88 |
+
$cart_items = array();
|
| 89 |
+
$this->debug_log( 'Transaction Type: Buy Now/Subscribe', true );
|
| 90 |
+
$item_number = $this->ipn_data['item_number'];
|
| 91 |
+
$item_name = $this->ipn_data['item_name'];
|
| 92 |
+
$quantity = $this->ipn_data['quantity'];
|
| 93 |
+
$mc_gross = $this->ipn_data['mc_gross'];
|
| 94 |
+
$mc_currency = $this->ipn_data['mc_currency'];
|
| 95 |
+
|
| 96 |
+
$current_item = array(
|
| 97 |
+
'item_number' => $item_number,
|
| 98 |
+
'item_name' => $item_name,
|
| 99 |
+
'quantity' => $quantity,
|
| 100 |
+
'mc_gross' => $mc_gross,
|
| 101 |
+
'mc_currency' => $mc_currency,
|
| 102 |
+
);
|
| 103 |
+
|
| 104 |
+
array_push( $cart_items, $current_item );
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
$counter = 0;
|
| 108 |
+
foreach ( $cart_items as $current_cart_item ) {
|
| 109 |
+
$cart_item_data_num = $current_cart_item['item_number'];
|
| 110 |
+
$cart_item_data_name = trim( $current_cart_item['item_name'] );
|
| 111 |
+
$cart_item_data_quantity = $current_cart_item['quantity'];
|
| 112 |
+
$cart_item_data_total = $current_cart_item['mc_gross'];
|
| 113 |
+
$cart_item_data_currency = $current_cart_item['mc_currency'];
|
| 114 |
+
if ( empty( $cart_item_data_quantity ) ) {
|
| 115 |
+
$cart_item_data_quantity = 1;
|
| 116 |
+
}
|
| 117 |
+
$this->debug_log( 'Item Number: ' . $cart_item_data_num, true );
|
| 118 |
+
$this->debug_log( 'Item Name: ' . $cart_item_data_name, true );
|
| 119 |
+
$this->debug_log( 'Item Quantity: ' . $cart_item_data_quantity, true );
|
| 120 |
+
$this->debug_log( 'Item Total: ' . $cart_item_data_total, true );
|
| 121 |
+
$this->debug_log( 'Item Currency: ' . $cart_item_data_currency, true );
|
| 122 |
+
|
| 123 |
+
// Get the button id
|
| 124 |
+
$pp_hosted_button = false;
|
| 125 |
+
$button_id = $cart_item_data_num;// Button id is the item number.
|
| 126 |
+
$membership_level_id = get_post_meta( $button_id, 'membership_level_id', true );
|
| 127 |
+
if ( ! SwpmUtils::membership_level_id_exists( $membership_level_id ) ) {
|
| 128 |
+
$this->debug_log( 'This payment button was not created in the plugin. This is a paypal hosted button.', true );
|
| 129 |
+
$pp_hosted_button = true;
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
// Price check
|
| 133 |
+
$check_price = true;
|
| 134 |
+
$msg = '';
|
| 135 |
+
$msg = apply_filters( 'swpm_before_price_check_filter', $msg, $current_cart_item );
|
| 136 |
+
if ( ! empty( $msg ) && $msg == 'price-check-override' ) {// This filter allows an extension to do a customized version of price check (if needed)
|
| 137 |
+
$check_price = false;
|
| 138 |
+
$this->debug_log( 'Price and currency check has been overridden by an addon/extension.', true );
|
| 139 |
+
}
|
| 140 |
+
if ( $check_price && ! $pp_hosted_button ) {
|
| 141 |
+
// Check according to buy now payment or subscription payment.
|
| 142 |
+
$button_type = get_post_meta( $button_id, 'button_type', true );
|
| 143 |
+
if ( $button_type == 'pp_buy_now' ) {// This is a PayPal buy now type button
|
| 144 |
+
$expected_amount = ( get_post_meta( $button_id, 'payment_amount', true ) ) * $cart_item_data_quantity;
|
| 145 |
+
$expected_amount = round( $expected_amount, 2 );
|
| 146 |
+
$expected_amount = apply_filters( 'swpm_payment_amount_filter', $expected_amount, $button_id );
|
| 147 |
+
$received_amount = $cart_item_data_total;
|
| 148 |
+
} elseif ( $button_type == 'pp_subscription' ) {// This is a PayPal subscription type button
|
| 149 |
+
// Trial payment or recurring payment?
|
| 150 |
+
// TODO - is_recurring_payment() check to determine if it is a recurring payment
|
| 151 |
+
$trial_billing_amount = get_post_meta( $button_id, 'trial_billing_amount', true );
|
| 152 |
+
$billing_amount = get_post_meta( $button_id, 'billing_amount', true );
|
| 153 |
+
$expected_amount = 0;
|
| 154 |
+
$received_amount = $cart_item_data_total;
|
| 155 |
+
} else {
|
| 156 |
+
$this->debug_log( 'Error! Unexpected button type: ' . $button_type, false );
|
| 157 |
+
return false;
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
if ( $received_amount < $expected_amount ) {
|
| 161 |
+
// Error! amount received is less than expected. This is invalid.
|
| 162 |
+
$this->debug_log( 'Expected amount: ' . $expected_amount, true );
|
| 163 |
+
$this->debug_log( 'Received amount: ' . $received_amount, true );
|
| 164 |
+
$this->debug_log( 'Price check failed. Amount received is less than the amount expected. This payment will not be processed.', false );
|
| 165 |
+
return false;
|
| 166 |
+
}
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
// *** Handle Membership Payment ***
|
| 170 |
+
// --------------------------------------------------------------------------------------
|
| 171 |
+
// ========= Need to find the (level ID) in the custom variable ============
|
| 172 |
+
$subsc_ref = $customvariables['subsc_ref'];// Membership level ID
|
| 173 |
+
$this->debug_log( 'Membership payment paid for membership level ID: ' . $subsc_ref, true );
|
| 174 |
+
if ( ! empty( $subsc_ref ) ) {
|
| 175 |
+
$swpm_id = '';
|
| 176 |
+
if ( isset( $customvariables['swpm_id'] ) ) {
|
| 177 |
+
$swpm_id = $customvariables['swpm_id'];
|
| 178 |
+
}
|
| 179 |
+
if ( $transaction_type == 'web_accept' ) {
|
| 180 |
+
$this->debug_log( 'Transaction type: web_accept. Creating member account...', true );
|
| 181 |
+
swpm_handle_subsc_signup_stand_alone( $this->ipn_data, $subsc_ref, $this->ipn_data['txn_id'], $swpm_id );
|
| 182 |
+
} elseif ( $transaction_type == 'subscr_payment' ) {
|
| 183 |
+
$this->debug_log( 'Transaction type: subscr_payment. Checking if the member profile needed to be updated', true );
|
| 184 |
+
swpm_update_member_subscription_start_date_if_applicable( $this->ipn_data );
|
| 185 |
+
}
|
| 186 |
+
} else {
|
| 187 |
+
$this->debug_log( 'Membership level ID is missing in the payment notification! Cannot process this notification.', false );
|
| 188 |
+
}
|
| 189 |
+
// == End of Membership payment handling ==
|
| 190 |
+
$counter++;
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
/*** Do Post payment operation and cleanup */
|
| 194 |
+
// Save the transaction data
|
| 195 |
+
$this->debug_log( 'Saving transaction data to the database table.', true );
|
| 196 |
+
$this->ipn_data['gateway'] = 'paypal';
|
| 197 |
+
$this->ipn_data['status'] = $this->ipn_data['payment_status'];
|
| 198 |
+
SwpmTransactions::save_txn_record( $this->ipn_data, $cart_items );
|
| 199 |
+
$this->debug_log( 'Transaction data saved.', true );
|
| 200 |
+
|
| 201 |
+
// Trigger the PayPal IPN processed action hook (so other plugins can can listen for this event).
|
| 202 |
+
do_action( 'swpm_paypal_ipn_processed', $this->ipn_data );
|
| 203 |
+
|
| 204 |
+
do_action( 'swpm_payment_ipn_processed', $this->ipn_data );
|
| 205 |
+
|
| 206 |
+
return true;
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
public function swpm_validate_ipn() {
|
| 210 |
+
// Generate the post string from the _POST vars aswell as load the _POST vars into an arry
|
| 211 |
+
$post_string = '';
|
| 212 |
+
foreach ( $_POST as $field => $value ) {
|
| 213 |
+
$this->ipn_data[ "$field" ] = $value;
|
| 214 |
+
$post_string .= $field . '=' . urlencode( stripslashes( $value ) ) . '&';
|
| 215 |
+
}
|
| 216 |
+
|
| 217 |
+
$this->post_string = $post_string;
|
| 218 |
+
$this->debug_log( 'Post string : ' . $this->post_string, true );
|
| 219 |
+
|
| 220 |
+
// IPN validation check
|
| 221 |
+
if ( $this->validate_ipn_using_remote_post() ) {
|
| 222 |
+
// We can also use an alternative validation using the validate_ipn_using_curl() function
|
| 223 |
+
return true;
|
| 224 |
+
} else {
|
| 225 |
+
return false;
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
public function validate_ipn_using_remote_post() {
|
| 231 |
+
$this->debug_log( 'Checking if PayPal IPN response is valid', true );
|
| 232 |
+
|
| 233 |
+
// Get received values from post data
|
| 234 |
+
$validate_ipn = array( 'cmd' => '_notify-validate' );
|
| 235 |
+
$validate_ipn += wp_unslash( $_POST );
|
| 236 |
+
|
| 237 |
+
// Send back post vars to paypal
|
| 238 |
+
$params = array(
|
| 239 |
+
'body' => $validate_ipn,
|
| 240 |
+
'timeout' => 60,
|
| 241 |
+
'httpversion' => '1.1',
|
| 242 |
+
'compress' => false,
|
| 243 |
+
'decompress' => false,
|
| 244 |
+
'user-agent' => 'Simple Membership Plugin',
|
| 245 |
+
);
|
| 246 |
+
|
| 247 |
+
// Post back to get a response.
|
| 248 |
+
$connection_url = $this->sandbox_mode ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr';
|
| 249 |
+
$this->debug_log( 'Connecting to: ' . $connection_url, true );
|
| 250 |
+
$response = wp_safe_remote_post( $connection_url, $params );
|
| 251 |
+
|
| 252 |
+
// The following two lines can be used for debugging
|
| 253 |
+
// $this->debug_log( 'IPN Request: ' . print_r( $params, true ) , true);
|
| 254 |
+
// $this->debug_log( 'IPN Response: ' . print_r( $response, true ), true);
|
| 255 |
+
|
| 256 |
+
// Check to see if the request was valid.
|
| 257 |
+
if ( ! is_wp_error( $response ) && strstr( $response['body'], 'VERIFIED' ) ) {
|
| 258 |
+
$this->debug_log( 'IPN successfully verified.', true );
|
| 259 |
+
return true;
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
// Invalid IPN transaction. Check the log for details.
|
| 263 |
+
$this->debug_log( 'IPN validation failed.', false );
|
| 264 |
+
if ( is_wp_error( $response ) ) {
|
| 265 |
+
$this->debug_log( 'Error response: ' . $response->get_error_message(), false );
|
| 266 |
+
}
|
| 267 |
+
return false;
|
| 268 |
+
}
|
| 269 |
+
|
| 270 |
+
public function debug_log( $message, $success, $end = false ) {
|
| 271 |
+
SwpmLog::log_simple_debug( $message, $success, $end );
|
| 272 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 273 |
}
|
| 274 |
|
| 275 |
// Start of IPN handling (script execution)
|
| 276 |
|
| 277 |
$ipn_handler_instance = new swpm_paypal_ipn_handler();
|
| 278 |
|
| 279 |
+
$settings = SwpmSettings::get_instance();
|
| 280 |
+
$debug_enabled = $settings->get_value( 'enable-debug' );
|
| 281 |
+
if ( ! empty( $debug_enabled ) ) {
|
| 282 |
+
$debug_log = 'log.txt'; // Debug log file name
|
| 283 |
+
echo esc_html( sprintf( 'Debug logging is enabled. Check the %s file for debug output.', $debug_log ) );
|
| 284 |
+
$ipn_handler_instance->ipn_log = true;
|
|
|
|
| 285 |
$ipn_handler_instance->ipn_log_file = $debug_log;
|
| 286 |
+
if ( empty( $_POST ) ) {
|
| 287 |
+
$ipn_handler_instance->debug_log( 'This debug line was generated because you entered the URL of the ipn handling script in the browser.', true, true );
|
| 288 |
+
exit;
|
|
|
|
| 289 |
}
|
| 290 |
}
|
| 291 |
|
| 292 |
+
$sandbox_enabled = $settings->get_value( 'enable-sandbox-testing' );
|
| 293 |
+
if ( ! empty( $sandbox_enabled ) ) {
|
| 294 |
+
$ipn_handler_instance->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
|
| 295 |
+
$ipn_handler_instance->sandbox_mode = true;
|
|
|
|
| 296 |
}
|
| 297 |
|
| 298 |
+
$ipn_handler_instance->debug_log( 'Paypal Class Initiated by ' . $_SERVER['REMOTE_ADDR'], true );
|
| 299 |
|
| 300 |
// Validate the IPN
|
| 301 |
+
if ( $ipn_handler_instance->swpm_validate_ipn() ) {
|
| 302 |
+
$ipn_handler_instance->debug_log( 'Creating product Information to send.', true );
|
|
|
|
| 303 |
|
| 304 |
+
if ( ! $ipn_handler_instance->swpm_validate_and_create_membership() ) {
|
| 305 |
+
$ipn_handler_instance->debug_log( 'IPN product validation failed.', false );
|
| 306 |
+
}
|
| 307 |
}
|
| 308 |
+
$ipn_handler_instance->debug_log( 'Paypal class finished.', true, true );
|
ipn/swpm_handle_subsc_ipn.php
CHANGED
|
@@ -1,284 +1,332 @@
|
|
| 1 |
<?php
|
| 2 |
|
| 3 |
-
function swpm_handle_subsc_signup_stand_alone($ipn_data, $subsc_ref, $unique_ref, $swpm_id = '') {
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
} else {
|
| 30 |
-
|
|
|
|
| 31 |
}
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
$data['last_name'] = $ipn_data['last_name'];
|
| 95 |
-
$data['email'] = $ipn_data['payer_email'];
|
| 96 |
-
$data['membership_level'] = $membership_level;
|
| 97 |
-
$data['subscr_id'] = $subscr_id;
|
| 98 |
-
|
| 99 |
-
$data['gender'] = 'not specified';
|
| 100 |
-
$data['address_street'] = $ipn_data['address_street'];
|
| 101 |
-
$data['address_city'] = $ipn_data['address_city'];
|
| 102 |
-
$data['address_state'] = $ipn_data['address_state'];
|
| 103 |
-
$data['address_zipcode'] = isset($ipn_data['address_zip']) ? $ipn_data['address_zip'] : '';
|
| 104 |
-
$data['country'] = isset($ipn_data['address_country']) ? $ipn_data['address_country'] : '';
|
| 105 |
-
$data['member_since'] = $data['subscription_starts'] = $data['last_accessed'] = date("Y-m-d");
|
| 106 |
-
$data['account_state'] = $default_account_status;
|
| 107 |
-
$reg_code = uniqid();
|
| 108 |
-
$md5_code = md5($reg_code);
|
| 109 |
-
$data['reg_code'] = $md5_code;
|
| 110 |
-
$data['referrer'] = $data['extra_info'] = $data['txn_id'] = '';
|
| 111 |
-
$data['last_accessed_from_ip'] = isset($user_ip) ? $user_ip : ''; //Save the users IP address
|
| 112 |
-
|
| 113 |
-
swpm_debug_log_subsc("Creating new member account. Membership level ID: " . $membership_level . ", Subscriber ID value: " . $data['subscr_id'], true);
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
return;
|
| 122 |
-
}
|
| 123 |
-
|
| 124 |
-
$separator = '?';
|
| 125 |
-
$url = $settings->get_value('registration-page-url');
|
| 126 |
-
if (strpos($url, '?') !== false) {
|
| 127 |
-
$separator = '&';
|
| 128 |
-
}
|
| 129 |
-
|
| 130 |
-
$reg_url = $url . $separator . 'member_id=' . $id . '&code=' . $md5_code;
|
| 131 |
-
swpm_debug_log_subsc("Member signup URL: " . $reg_url, true);
|
| 132 |
-
|
| 133 |
-
$subject = $settings->get_value('reg-prompt-complete-mail-subject');
|
| 134 |
-
if (empty($subject)) {
|
| 135 |
-
$subject = "Please complete your registration";
|
| 136 |
-
}
|
| 137 |
-
$body = $settings->get_value('reg-prompt-complete-mail-body');
|
| 138 |
-
if (empty($body)) {
|
| 139 |
-
$body = "Please use the following link to complete your registration. \n {reg_link}";
|
| 140 |
-
}
|
| 141 |
-
$from_address = $settings->get_value('email-from');
|
| 142 |
-
$body = html_entity_decode($body);
|
| 143 |
-
|
| 144 |
-
$additional_args = array('reg_link' => $reg_url);
|
| 145 |
-
$email_body = SwpmMiscUtils::replace_dynamic_tags($body, $id, $additional_args);
|
| 146 |
-
$headers = 'From: ' . $from_address . "\r\n";
|
| 147 |
-
}
|
| 148 |
-
|
| 149 |
-
$subject = apply_filters('swpm_email_signup_upgrade_complete_subject', $subject);
|
| 150 |
-
$email_body = apply_filters('swpm_email_signup_upgrade_complete_body', $email_body);
|
| 151 |
-
wp_mail($email, $subject, $email_body, $headers);
|
| 152 |
-
swpm_debug_log_subsc("Member signup/upgrade completion email successfully sent to: " . $email, true);
|
| 153 |
}
|
| 154 |
|
| 155 |
/*
|
| 156 |
* All in one function that can handle notification for refund, cancellation, end of term
|
| 157 |
*/
|
| 158 |
|
| 159 |
-
function swpm_handle_subsc_cancel_stand_alone($ipn_data, $refund = false) {
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
}
|
| 236 |
|
| 237 |
-
function swpm_update_member_subscription_start_date_if_applicable($ipn_data) {
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 264 |
}
|
| 265 |
|
| 266 |
-
function swpm_debug_log_subsc($message, $success, $end = false) {
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
|
| 284 |
}
|
| 1 |
<?php
|
| 2 |
|
| 3 |
+
function swpm_handle_subsc_signup_stand_alone( $ipn_data, $subsc_ref, $unique_ref, $swpm_id = '' ) {
|
| 4 |
+
global $wpdb;
|
| 5 |
+
$settings = SwpmSettings::get_instance();
|
| 6 |
+
$membership_level = $subsc_ref;
|
| 7 |
+
|
| 8 |
+
if ( isset( $ipn_data['subscr_id'] ) && !empty( $ipn_data['subscr_id'] ) ) {
|
| 9 |
+
$subscr_id = $ipn_data['subscr_id'];
|
| 10 |
+
} else {
|
| 11 |
+
$subscr_id = $unique_ref;
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
swpm_debug_log_subsc( 'swpm_handle_subsc_signup_stand_alone(). Custom value: ' . $ipn_data['custom'] . ', Unique reference: ' . $unique_ref, true );
|
| 15 |
+
parse_str( $ipn_data['custom'], $custom_vars );
|
| 16 |
+
|
| 17 |
+
if ( empty( $swpm_id ) ) {
|
| 18 |
+
// Lets try to find an existing user profile for this payment.
|
| 19 |
+
$email = $ipn_data['payer_email'];
|
| 20 |
+
$query_db = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE email = %s", $email ), OBJECT ); // db call ok; no-cache ok.
|
| 21 |
+
if ( ! $query_db ) { // try to retrieve the member details based on the unique_ref.
|
| 22 |
+
swpm_debug_log_subsc( 'Could not find any record using the given email address (' . $email . '). Attempting to query database using the unique reference: ' . $unique_ref, true );
|
| 23 |
+
if ( ! empty( $unique_ref ) ) {
|
| 24 |
+
$query_db = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE subscr_id = %s", $unique_ref ), OBJECT ); // db call ok; no-cache ok.
|
| 25 |
+
if ( $query_db ) {
|
| 26 |
+
$swpm_id = $query_db->member_id;
|
| 27 |
+
swpm_debug_log_subsc( 'Found a match in the member database using unique reference. Member ID: ' . $swpm_id, true );
|
| 28 |
+
} else {
|
| 29 |
+
swpm_debug_log_subsc( 'Did not find a match for an existing member profile for the given reference. This must be a new payment from a new member.', true );
|
| 30 |
+
}
|
| 31 |
+
} else {
|
| 32 |
+
swpm_debug_log_subsc( 'Unique reference is missing in the notification so we have to assume that this is not a payment for an existing member.', true );
|
| 33 |
+
}
|
| 34 |
+
} else {
|
| 35 |
+
$swpm_id = $query_db->member_id;
|
| 36 |
+
swpm_debug_log_subsc( 'Found a match in the member database. Member ID: ' . $swpm_id, true );
|
| 37 |
+
}
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
if ( ! empty( $swpm_id ) ) {
|
| 41 |
+
// This is payment from an existing member/user. Update the existing member account.
|
| 42 |
+
swpm_debug_log_subsc( 'Modifying the existing membership profile... Member ID: ' . $swpm_id, true );
|
| 43 |
+
|
| 44 |
+
// Upgrade the member account.
|
| 45 |
+
$account_state = 'active'; // This is renewal or upgrade of a previously active account. So the status should be set to active.
|
| 46 |
+
|
| 47 |
+
$resultset = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE member_id = %d", $swpm_id ), OBJECT );
|
| 48 |
+
if ( ! $resultset ) {
|
| 49 |
+
swpm_debug_log_subsc( 'ERROR! Could not find a member account record for the given Member ID: ' . $swpm_id, false );
|
| 50 |
+
return;
|
| 51 |
+
}
|
| 52 |
+
$old_membership_level = $resultset->membership_level;
|
| 53 |
+
|
| 54 |
+
// If the payment is for the same/existing membership level, then this is a renewal. Refresh the start date as appropriate.
|
| 55 |
+
$args = array(
|
| 56 |
+
'swpm_id' => $swpm_id,
|
| 57 |
+
'membership_level' => $membership_level,
|
| 58 |
+
'old_membership_level' => $old_membership_level,
|
| 59 |
+
);
|
| 60 |
+
$subscription_starts = SwpmMemberUtils::calculate_access_start_date_for_account_update( $args );
|
| 61 |
+
$subscription_starts = apply_filters( 'swpm_account_update_subscription_starts', $subscription_starts, $args );
|
| 62 |
+
swpm_debug_log_subsc( 'Setting access starts date value to: ' . $subscription_starts, true );
|
| 63 |
+
|
| 64 |
+
swpm_debug_log_subsc( 'Updating the current membership level (' . $old_membership_level . ') of this member to the newly paid level (' . $membership_level . ')', true );
|
| 65 |
+
// Set account status to active, update level to the newly paid level, update access start date, update subsriber ID (if applicable).
|
| 66 |
+
$wpdb->query(
|
| 67 |
+
$wpdb->prepare(
|
| 68 |
+
"UPDATE {$wpdb->prefix}swpm_members_tbl SET account_state=%s, membership_level=%d,subscription_starts=%s,subscr_id=%s WHERE member_id=%d",
|
| 69 |
+
$account_state,
|
| 70 |
+
$membership_level,
|
| 71 |
+
$subscription_starts,
|
| 72 |
+
$subscr_id,
|
| 73 |
+
$swpm_id
|
| 74 |
+
)
|
| 75 |
+
);
|
| 76 |
+
|
| 77 |
+
// Trigger level changed/updated action hook.
|
| 78 |
+
do_action(
|
| 79 |
+
'swpm_membership_level_changed',
|
| 80 |
+
array(
|
| 81 |
+
'member_id' => $swpm_id,
|
| 82 |
+
'from_level' => $old_membership_level,
|
| 83 |
+
'to_level' => $membership_level,
|
| 84 |
+
)
|
| 85 |
+
);
|
| 86 |
+
|
| 87 |
+
// Set Email details for the account upgrade notification.
|
| 88 |
+
$email = $ipn_data['payer_email'];
|
| 89 |
+
$subject = $settings->get_value( 'upgrade-complete-mail-subject' );
|
| 90 |
+
if ( empty( $subject ) ) {
|
| 91 |
+
$subject = 'Member Account Upgraded';
|
| 92 |
+
}
|
| 93 |
+
$body = $settings->get_value( 'upgrade-complete-mail-body' );
|
| 94 |
+
if ( empty( $body ) ) {
|
| 95 |
+
$body = 'Your account has been upgraded successfully';
|
| 96 |
+
}
|
| 97 |
+
$from_address = $settings->get_value( 'email-from' );
|
| 98 |
+
|
| 99 |
+
$additional_args = array();
|
| 100 |
+
$email_body = SwpmMiscUtils::replace_dynamic_tags( $body, $swpm_id, $additional_args );
|
| 101 |
+
$headers = 'From: ' . $from_address . "\r\n";
|
| 102 |
+
|
| 103 |
+
$subject = apply_filters( 'swpm_email_upgrade_complete_subject', $subject );
|
| 104 |
+
$email_body = apply_filters( 'swpm_email_upgrade_complete_body', $email_body );
|
| 105 |
+
|
| 106 |
+
if ( $settings->get_value('disable-email-after-upgrade') ) {
|
| 107 |
+
swpm_debug_log_subsc( 'The disable upgrade email settings is checked. No account upgrade/update email will be sent.', true );
|
| 108 |
+
//Nothing to do.
|
| 109 |
} else {
|
| 110 |
+
wp_mail( $email, $subject, $email_body, $headers );
|
| 111 |
+
swpm_debug_log_subsc( 'Member upgrade/update completion email successfully sent to: ' . $email, true );
|
| 112 |
}
|
| 113 |
+
// End of existing user account upgrade/update.
|
| 114 |
+
} else {
|
| 115 |
+
// create new member account.
|
| 116 |
+
$default_account_status = $settings->get_value( 'default-account-status', 'active' );
|
| 117 |
+
|
| 118 |
+
$data = array();
|
| 119 |
+
$data['user_name'] = '';
|
| 120 |
+
$data['password'] = '';
|
| 121 |
+
|
| 122 |
+
$data['first_name'] = $ipn_data['first_name'];
|
| 123 |
+
$data['last_name'] = $ipn_data['last_name'];
|
| 124 |
+
$data['email'] = $ipn_data['payer_email'];
|
| 125 |
+
$data['membership_level'] = $membership_level;
|
| 126 |
+
$data['subscr_id'] = $subscr_id;
|
| 127 |
+
|
| 128 |
+
$data['gender'] = 'not specified';
|
| 129 |
+
$data['address_street'] = $ipn_data['address_street'];
|
| 130 |
+
$data['address_city'] = $ipn_data['address_city'];
|
| 131 |
+
$data['address_state'] = $ipn_data['address_state'];
|
| 132 |
+
$data['address_zipcode'] = isset( $ipn_data['address_zip'] ) ? $ipn_data['address_zip'] : '';
|
| 133 |
+
$data['country'] = isset( $ipn_data['address_country'] ) ? $ipn_data['address_country'] : '';
|
| 134 |
+
$data['member_since'] = $data['subscription_starts'] = $data['last_accessed'] = date( 'Y-m-d' );
|
| 135 |
+
$data['account_state'] = $default_account_status;
|
| 136 |
+
$reg_code = uniqid();
|
| 137 |
+
$md5_code = md5( $reg_code );
|
| 138 |
+
$data['reg_code'] = $md5_code;
|
| 139 |
+
$data['referrer'] = $data['extra_info'] = $data['txn_id'] = '';
|
| 140 |
+
$data['last_accessed_from_ip'] = isset( $custom_vars['user_ip'] ) ? $custom_vars['user_ip'] : ''; // Save the users IP address.
|
| 141 |
+
|
| 142 |
+
swpm_debug_log_subsc( 'Creating new member account. Membership level ID: ' . $membership_level . ', Subscriber ID value: ' . $data['subscr_id'], true );
|
| 143 |
+
|
| 144 |
+
$data = array_filter( $data ); // Remove any null values.
|
| 145 |
+
$wpdb->insert( "{$wpdb->prefix}swpm_members_tbl", $data ); // Create the member record.
|
| 146 |
+
$id = $wpdb->insert_id;
|
| 147 |
+
if ( empty( $id ) ) {
|
| 148 |
+
swpm_debug_log_subsc( 'Error! Failed to insert a new member record. This request will fail.', false );
|
| 149 |
+
return;
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
$separator = '?';
|
| 153 |
+
$url = $settings->get_value( 'registration-page-url' );
|
| 154 |
+
if ( strpos( $url, '?' ) !== false ) {
|
| 155 |
+
$separator = '&';
|
| 156 |
+
}
|
| 157 |
+
|
| 158 |
+
$reg_url = $url . $separator . 'member_id=' . $id . '&code=' . $md5_code;
|
| 159 |
+
swpm_debug_log_subsc( 'Member signup URL: ' . $reg_url, true );
|
| 160 |
+
|
| 161 |
+
$subject = $settings->get_value( 'reg-prompt-complete-mail-subject' );
|
| 162 |
+
if ( empty( $subject ) ) {
|
| 163 |
+
$subject = 'Please complete your registration';
|
| 164 |
+
}
|
| 165 |
+
$body = $settings->get_value( 'reg-prompt-complete-mail-body' );
|
| 166 |
+
if ( empty( $body ) ) {
|
| 167 |
+
$body = "Please use the following link to complete your registration. \n {reg_link}";
|
| 168 |
+
}
|
| 169 |
+
$from_address = $settings->get_value( 'email-from' );
|
| 170 |
+
$body = html_entity_decode( $body );
|
| 171 |
+
|
| 172 |
+
$additional_args = array( 'reg_link' => $reg_url );
|
| 173 |
+
$email_body = SwpmMiscUtils::replace_dynamic_tags( $body, $id, $additional_args );
|
| 174 |
+
$headers = 'From: ' . $from_address . "\r\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
|
| 176 |
+
$subject = apply_filters( 'swpm_email_complete_registration_subject', $subject );
|
| 177 |
+
$email_body = apply_filters( 'swpm_email_complete_registration_body', $email_body );
|
| 178 |
+
wp_mail( $email, $subject, $email_body, $headers );
|
| 179 |
+
swpm_debug_log_subsc( 'Member signup (prompt to complete registration) email successfully sent to: ' . $email, true );
|
| 180 |
+
}
|
| 181 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 182 |
}
|
| 183 |
|
| 184 |
/*
|
| 185 |
* All in one function that can handle notification for refund, cancellation, end of term
|
| 186 |
*/
|
| 187 |
|
| 188 |
+
function swpm_handle_subsc_cancel_stand_alone( $ipn_data, $refund = false ) {
|
| 189 |
+
|
| 190 |
+
global $wpdb;
|
| 191 |
+
|
| 192 |
+
$customvariables = SwpmTransactions::parse_custom_var( $ipn_data['custom'] );
|
| 193 |
+
$swpm_id = $customvariables['swpm_id'];
|
| 194 |
+
|
| 195 |
+
swpm_debug_log_subsc( 'Refund/Cancellation check - lets see if a member account needs to be deactivated.', true );
|
| 196 |
+
// swpm_debug_log_subsc("Parent txn id: " . $ipn_data['parent_txn_id'] . ", Subscr ID: " . $ipn_data['subscr_id'] . ", SWPM ID: " . $swpm_id, true);.
|
| 197 |
+
|
| 198 |
+
if ( ! empty( $swpm_id ) ) {
|
| 199 |
+
// This IPN has the SWPM ID. Retrieve the member record using member ID.
|
| 200 |
+
swpm_debug_log_subsc( 'Member ID is present. Retrieving member account from the database. Member ID: ' . $swpm_id, true );
|
| 201 |
+
$resultset = SwpmMemberUtils::get_user_by_id( $swpm_id );
|
| 202 |
+
} elseif ( isset( $ipn_data['subscr_id'] ) && ! empty( $ipn_data['subscr_id'] ) ) {
|
| 203 |
+
// This IPN has the subscriber ID. Retrieve the member record using subscr_id.
|
| 204 |
+
$subscr_id = $ipn_data['subscr_id'];
|
| 205 |
+
swpm_debug_log_subsc( 'Subscriber ID is present. Retrieving member account from the database. Subscr_id: ' . $subscr_id, true );
|
| 206 |
+
$resultset = $wpdb->get_row(
|
| 207 |
+
$wpdb->prepare(
|
| 208 |
+
"SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id LIKE %s",
|
| 209 |
+
'%' . $wpdb->esc_like( $subscr_id ) . '%'
|
| 210 |
+
),
|
| 211 |
+
OBJECT
|
| 212 |
+
);
|
| 213 |
+
} else {
|
| 214 |
+
// Refund for a one time transaction. Use the parent transaction ID to retrieve the profile.
|
| 215 |
+
$subscr_id = $ipn_data['parent_txn_id'];
|
| 216 |
+
$resultset = $wpdb->get_row(
|
| 217 |
+
$wpdb->prepare(
|
| 218 |
+
"SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id LIKE %s",
|
| 219 |
+
'%' . $wpdb->esc_like( $subscr_id ) . '%'
|
| 220 |
+
),
|
| 221 |
+
OBJECT
|
| 222 |
+
);
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
if ( $resultset ) {
|
| 226 |
+
// We have found a member profile for this notification.
|
| 227 |
+
|
| 228 |
+
$member_id = $resultset->member_id;
|
| 229 |
+
|
| 230 |
+
// First, check if this is a refund notification.
|
| 231 |
+
if ( $refund ) {
|
| 232 |
+
// This is a refund (not just a subscription cancellation or end). So deactivate the account regardless and bail.
|
| 233 |
+
SwpmMemberUtils::update_account_state( $member_id, 'inactive' ); // Set the account status to inactive.
|
| 234 |
+
swpm_debug_log_subsc( 'Subscription refund notification received! Member account deactivated.', true );
|
| 235 |
+
return;
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
// This is a cancellation or end of subscription term (no refund).
|
| 239 |
+
// Lets retrieve the membership level and details.
|
| 240 |
+
$level_id = $resultset->membership_level;
|
| 241 |
+
swpm_debug_log_subsc( 'Membership level ID of the member is: ' . $level_id, true );
|
| 242 |
+
$level_row = SwpmUtils::get_membership_level_row_by_id( $level_id );
|
| 243 |
+
$subs_duration_type = $level_row->subscription_duration_type;
|
| 244 |
+
|
| 245 |
+
if ( SwpmMembershipLevel::NO_EXPIRY === $subs_duration_type ) {
|
| 246 |
+
// This is a level with "no expiry" or "until cancelled" duration.
|
| 247 |
+
swpm_debug_log_subsc( 'This is a level with "no expiry" or "until cancelled" duration', true );
|
| 248 |
+
|
| 249 |
+
// Deactivate this account as the membership level is "no expiry" or "until cancelled".
|
| 250 |
+
$account_state = 'inactive';
|
| 251 |
+
SwpmMemberUtils::update_account_state( $member_id, $account_state );
|
| 252 |
+
swpm_debug_log_subsc( 'Subscription cancellation or end of term received! Member account deactivated. Member ID: ' . $member_id, true );
|
| 253 |
+
} elseif ( SwpmMembershipLevel::FIXED_DATE === $subs_duration_type ) {
|
| 254 |
+
// This is a level with a "fixed expiry date" duration.
|
| 255 |
+
swpm_debug_log_subsc( 'This is a level with a "fixed expiry date" duration.', true );
|
| 256 |
+
swpm_debug_log_subsc( 'Nothing to do here. The account will expire on the fixed set date.', true );
|
| 257 |
+
} else {
|
| 258 |
+
// This is a level with "duration" type expiry (example: 30 days, 1 year etc). subscription_period has the duration/period.
|
| 259 |
+
$subs_period = $level_row->subscription_period;
|
| 260 |
+
$subs_period_unit = SwpmMembershipLevel::get_level_duration_type_string( $level_row->subscription_duration_type );
|
| 261 |
+
|
| 262 |
+
swpm_debug_log_subsc( 'This is a level with "duration" type expiry. Duration period: ' . $subs_period . ', Unit: ' . $subs_period_unit, true );
|
| 263 |
+
swpm_debug_log_subsc( 'Nothing to do here. The account will expire after the duration time is over.', true );
|
| 264 |
+
|
| 265 |
+
// TODO Later as an improvement. If you wanted to segment the members who have unsubscribed, you can set the account status to "unsubscribed" here.
|
| 266 |
+
// Make sure the cronjob to do expiry check and deactivate the member accounts treat this status as if it is "active".
|
| 267 |
+
}
|
| 268 |
+
|
| 269 |
+
$ipn_data['member_id'] = $member_id;
|
| 270 |
+
do_action( 'swpm_subscription_payment_cancelled', $ipn_data ); // Hook for recurring payment received.
|
| 271 |
+
} else {
|
| 272 |
+
swpm_debug_log_subsc( 'No associated active member record found for this notification.', false );
|
| 273 |
+
return;
|
| 274 |
+
}
|
| 275 |
}
|
| 276 |
|
| 277 |
+
function swpm_update_member_subscription_start_date_if_applicable( $ipn_data ) {
|
| 278 |
+
global $wpdb;
|
| 279 |
+
$email = $ipn_data['payer_email'];
|
| 280 |
+
$subscr_id = $ipn_data['subscr_id'];
|
| 281 |
+
$account_state = SwpmSettings::get_instance()->get_value( 'default-account-status', 'active' );
|
| 282 |
+
swpm_debug_log_subsc( 'Updating subscription start date if applicable for this subscription payment. Subscriber ID: ' . $subscr_id . ' Email: ' . $email, true );
|
| 283 |
+
|
| 284 |
+
// We can also query using the email address or SWPM ID (if present in custom var).
|
| 285 |
+
$query_db = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE subscr_id = %s", $subscr_id ), OBJECT );
|
| 286 |
+
if ( $query_db ) {
|
| 287 |
+
$swpm_id = $query_db->member_id;
|
| 288 |
+
$current_primary_level = $query_db->membership_level;
|
| 289 |
+
swpm_debug_log_subsc( 'Found a record in the member table. The Member ID of the account to check is: ' . $swpm_id . ' Membership Level: ' . $current_primary_level, true );
|
| 290 |
+
|
| 291 |
+
$ipn_data['member_id'] = $swpm_id;
|
| 292 |
+
do_action( 'swpm_recurring_payment_received', $ipn_data ); // Hook for recurring payment received.
|
| 293 |
+
|
| 294 |
+
$subscription_starts = ( date( 'Y-m-d' ) );
|
| 295 |
+
|
| 296 |
+
$wpdb->query(
|
| 297 |
+
$wpdb->prepare(
|
| 298 |
+
"UPDATE {$wpdb->prefix}swpm_members_tbl SET account_state=%s,subscription_starts=%s WHERE member_id=%d",
|
| 299 |
+
$account_state,
|
| 300 |
+
$subscription_starts,
|
| 301 |
+
$swpm_id
|
| 302 |
+
)
|
| 303 |
+
);
|
| 304 |
+
swpm_debug_log_subsc( 'Updated the member profile with current date as the subscription start date.', true );
|
| 305 |
+
// Lets check to see if the subscriber ID and the subscription start date value was updated correctly.
|
| 306 |
+
$member_record = SwpmMemberUtils::get_user_by_id( $swpm_id );
|
| 307 |
+
swpm_debug_log_subsc( 'Value after update - Subscriber ID: ' . $member_record->subscr_id . ', Start Date: ' . $member_record->subscription_starts, true );
|
| 308 |
+
} else {
|
| 309 |
+
swpm_debug_log_subsc( 'Did not find an existing record in the members table for subscriber ID: ' . $subscr_id, true );
|
| 310 |
+
swpm_debug_log_subsc( 'This is a new subscription payment for a new subscription agreement.', true );
|
| 311 |
+
}
|
| 312 |
}
|
| 313 |
|
| 314 |
+
function swpm_debug_log_subsc( $message, $success, $end = false ) {
|
| 315 |
+
$settings = SwpmSettings::get_instance();
|
| 316 |
+
$debug_enabled = $settings->get_value( 'enable-debug' );
|
| 317 |
+
if ( empty( $debug_enabled ) ) { // Debug is not enabled.
|
| 318 |
+
return;
|
| 319 |
+
}
|
| 320 |
+
|
| 321 |
+
$debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
|
| 322 |
+
|
| 323 |
+
// Timestamp.
|
| 324 |
+
$text = '[' . date( 'm/d/Y g:i A' ) . '] - ' . ( ( $success ) ? 'SUCCESS: ' : 'FAILURE: ' ) . $message . "\n";
|
| 325 |
+
if ( $end ) {
|
| 326 |
+
$text .= "\n------------------------------------------------------------------\n\n";
|
| 327 |
+
}
|
| 328 |
+
// Write to log.
|
| 329 |
+
$fp = fopen( $debug_log_file_name, 'a' );
|
| 330 |
+
fwrite( $fp, $text );
|
| 331 |
+
fclose( $fp ); // close file.
|
| 332 |
}
|
js/jquery.validationEngine-en.js
CHANGED
|
@@ -157,7 +157,7 @@
|
|
| 157 |
"ajaxUserCall": {
|
| 158 |
"url": "ajaxurl",
|
| 159 |
// you may want to pass extra data on the ajax call
|
| 160 |
-
"extraData": "&action=swpm_validate_user_name",
|
| 161 |
"alertTextOk": "* This username is available",
|
| 162 |
"alertText": "* This user is already taken",
|
| 163 |
"alertTextLoad": "* Validating, please wait"
|
|
@@ -165,7 +165,7 @@
|
|
| 165 |
"ajaxEmailCall": {
|
| 166 |
"url": "ajaxurl",
|
| 167 |
// you may want to pass extra data on the ajax call
|
| 168 |
-
"extraData": "&action=swpm_validate_email",
|
| 169 |
"alertText": "* This email is already taken",
|
| 170 |
"alertTextOk": "* This email is available",
|
| 171 |
"alertTextLoad": "* Validating, please wait"
|
| 157 |
"ajaxUserCall": {
|
| 158 |
"url": "ajaxurl",
|
| 159 |
// you may want to pass extra data on the ajax call
|
| 160 |
+
"extraData": "&action=swpm_validate_user_name&nonce="+swpmRegForm.nonce,
|
| 161 |
"alertTextOk": "* This username is available",
|
| 162 |
"alertText": "* This user is already taken",
|
| 163 |
"alertTextLoad": "* Validating, please wait"
|
| 165 |
"ajaxEmailCall": {
|
| 166 |
"url": "ajaxurl",
|
| 167 |
// you may want to pass extra data on the ajax call
|
| 168 |
+
"extraData": "&action=swpm_validate_email&nonce="+swpmRegForm.nonce,
|
| 169 |
"alertText": "* This email is already taken",
|
| 170 |
"alertTextOk": "* This email is available",
|
| 171 |
"alertTextLoad": "* Validating, please wait"
|
languages/simple-membership-de_DE.mo
CHANGED
|
Binary file
|
languages/simple-membership-de_DE.po
CHANGED
|
@@ -1,3081 +1,3109 @@
|
|
| 1 |
-
msgid ""
|
| 2 |
-
msgstr ""
|
| 3 |
-
"Project-Id-Version: Simple Membership\n"
|
| 4 |
-
"Report-Msgid-Bugs-To: \n"
|
| 5 |
-
"POT-Creation-Date: 2019-
|
| 6 |
-
"PO-Revision-Date: 2019-
|
| 7 |
-
"Last-Translator: Geo_Writer <information@geoplan-systems.de>\n"
|
| 8 |
-
"Language-Team: Deutsch\n"
|
| 9 |
-
"Language: de_DE\n"
|
| 10 |
-
"MIME-Version: 1.0\n"
|
| 11 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
| 12 |
-
"Content-Transfer-Encoding: 8bit\n"
|
| 13 |
-
"X-Generator: Poedit 2.2.3\n"
|
| 14 |
-
"X-Poedit-KeywordsList: __;_e;e\n"
|
| 15 |
-
"X-Poedit-Basepath: ..\n"
|
| 16 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 17 |
-
"X-Loco-Version: 2.2.2; wp-5.2.1\n"
|
| 18 |
-
"X-Poedit-SearchPath-0: Übersetzungen 01 2019\n"
|
| 19 |
-
"X-Poedit-SearchPath-1: simple-membership\n"
|
| 20 |
-
|
| 21 |
-
#: classes/class.simple-wp-membership.php:180
|
| 22 |
-
msgid "The admin of this site does not allow users to access the wp dashboard."
|
| 23 |
-
msgstr "Es ist Mitgliedern nicht erlaubt, auf das WP-Dashboard zuzugreifen."
|
| 24 |
-
|
| 25 |
-
#: classes/class.simple-wp-membership.php:181
|
| 26 |
-
msgid "Go back to the home page by "
|
| 27 |
-
msgstr "Gehe zurück zur Startseite "
|
| 28 |
-
|
| 29 |
-
#: classes/class.simple-wp-membership.php:181
|
| 30 |
-
msgid "clicking here"
|
| 31 |
-
msgstr "hier klicken"
|
| 32 |
-
|
| 33 |
-
#: classes/class.simple-wp-membership.php:242
|
| 34 |
-
msgid ""
|
| 35 |
-
"Error! This site has the force WP user login feature enabled in the "
|
| 36 |
-
"settings. We could not find a WP user record for the given username: "
|
| 37 |
-
msgstr ""
|
| 38 |
-
"Fehler! Diese Seite hat in den Einstellungen \"Synchronisation mit den WP "
|
| 39 |
-
"Benutzereinträgen erzwingen\" aktiviert. Wir konnten keinen WP Benutzer-"
|
| 40 |
-
"Eintrag für den eingegebenen Benutzernamen finden: "
|
| 41 |
-
|
| 42 |
-
#: classes/class.simple-wp-membership.php:243
|
| 43 |
-
msgid ""
|
| 44 |
-
"This error is triggered when a member account doesn't have a corresponding "
|
| 45 |
-
"WP user account. So the plugin fails to log the user into the WP User system."
|
| 46 |
-
msgstr ""
|
| 47 |
-
"Dieser Fehler tritt auf, wenn zu einem Mitglieds-Konto kein "
|
| 48 |
-
"korrespondierender WP User Account existiert. Dann kann das Plugin den "
|
| 49 |
-
"Benutzer nicht in das WP User System einloggen."
|
| 50 |
-
|
| 51 |
-
#: classes/class.simple-wp-membership.php:244
|
| 52 |
-
msgid ""
|
| 53 |
-
"Contact the site admin and request them to check your username in the WP "
|
| 54 |
-
"Users menu to see what happened with the WP user entry of your account."
|
| 55 |
-
msgstr ""
|
| 56 |
-
"Kontaktieren Sie den Website-Administrator und fordern sie ihn auf, Ihren "
|
| 57 |
-
"Benutzernamen zu prüfen, um zu sehen, was mit dem Benutzer-Eintrag Ihres "
|
| 58 |
-
"Accounts passiert ist."
|
| 59 |
-
|
| 60 |
-
#: classes/class.simple-wp-membership.php:245
|
| 61 |
-
msgid ""
|
| 62 |
-
"The site admin can disable the Force WP User Synchronization feature in the "
|
| 63 |
-
"settings to disable this feature and this error will go away."
|
| 64 |
-
msgstr ""
|
| 65 |
-
"Der Admin kann die erzwungene WP User Synchronisation in den Einstellungen "
|
| 66 |
-
"deaktivieren und dadurch diesen Fehler beheben."
|
| 67 |
-
|
| 68 |
-
#: classes/class.simple-wp-membership.php:246
|
| 69 |
-
msgid "You can use the back button of your browser to go back to the site."
|
| 70 |
-
msgstr ""
|
| 71 |
-
"Sie können mit Klick auf den \"zurück\" button in Ihrem Browser zu der Seite "
|
| 72 |
-
"zurückkehren."
|
| 73 |
-
|
| 74 |
-
#: classes/class.simple-wp-membership.php:407
|
| 75 |
-
msgid "You are not logged in."
|
| 76 |
-
msgstr "Sie sind nicht eingeloggt."
|
| 77 |
-
|
| 78 |
-
#: classes/class.simple-wp-membership.php:458
|
| 79 |
-
msgid ""
|
| 80 |
-
"You have the sandbox payment mode enabled in plugin settings. Make sure to "
|
| 81 |
-
"turn off the sandbox mode when you want to do live transactions."
|
| 82 |
-
msgstr ""
|
| 83 |
-
"Sie haben in den Einstellungen des Plugins die Testumgebung für die "
|
| 84 |
-
"Zahlungsvorgänge aktiviert. Bitte stellen Sie sicher, dass Sie die "
|
| 85 |
-
"Testumgebung deaktivieren, wenn Sie Zahlungen vornehmen wollen."
|
| 86 |
-
|
| 87 |
-
#: classes/class.simple-wp-membership.php:473
|
| 88 |
-
msgid "Simple WP Membership Protection"
|
| 89 |
-
msgstr "Simple WP Membership Schutz"
|
| 90 |
-
|
| 91 |
-
#: classes/class.simple-wp-membership.php:485
|
| 92 |
-
msgid "Simple Membership Protection options"
|
| 93 |
-
msgstr "Schutz-Einstellungen für Simple Membership"
|
| 94 |
-
|
| 95 |
-
#: classes/class.simple-wp-membership.php:503
|
| 96 |
-
msgid "Do you want to protect this content?"
|
| 97 |
-
msgstr "Möchten Sie diesen Inhalt schützen?"
|
| 98 |
-
|
| 99 |
-
#: classes/class.simple-wp-membership.php:504
|
| 100 |
-
msgid "No, Do not protect this content."
|
| 101 |
-
msgstr "Nein, diesen Inhalt nicht schützen."
|
| 102 |
-
|
| 103 |
-
#: classes/class.simple-wp-membership.php:505
|
| 104 |
-
msgid "Yes, Protect this content."
|
| 105 |
-
msgstr "Ja, diesen Inhalt schützen."
|
| 106 |
-
|
| 107 |
-
#: classes/class.simple-wp-membership.php:508
|
| 108 |
-
msgid "Select the membership level that can access this content:"
|
| 109 |
-
msgstr ""
|
| 110 |
-
"Wählen Sie die Mitgliedschaftsstufe aus, die auf diesen Inhalt zugreifen "
|
| 111 |
-
"kann:"
|
| 112 |
-
|
| 113 |
-
#: classes/class.simple-wp-membership.php:646
|
| 114 |
-
#: classes/class.simple-wp-membership.php:650
|
| 115 |
-
msgid "Validating, please wait"
|
| 116 |
-
msgstr "Überprüfung, bitte warten"
|
| 117 |
-
|
| 118 |
-
#: classes/class.simple-wp-membership.php:653
|
| 119 |
-
msgid "Invalid email address"
|
| 120 |
-
msgstr "Ungültige E-Mail-Adresse"
|
| 121 |
-
|
| 122 |
-
#: classes/class.simple-wp-membership.php:656
|
| 123 |
-
msgid "This field is required"
|
| 124 |
-
msgstr "Dieses Feld ist erforderlich"
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
msgid "
|
| 136 |
-
msgstr "
|
| 137 |
-
|
| 138 |
-
#: classes/class.simple-wp-membership.php:
|
| 139 |
-
msgid "
|
| 140 |
-
msgstr "
|
| 141 |
-
|
| 142 |
-
#: classes/class.simple-wp-membership.php:
|
| 143 |
-
msgid "
|
| 144 |
-
msgstr "
|
| 145 |
-
|
| 146 |
-
#: classes/class.simple-wp-membership.php:
|
| 147 |
-
msgid "
|
| 148 |
-
msgstr "
|
| 149 |
-
|
| 150 |
-
#: classes/class.simple-wp-membership.php:
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
#: classes/class.
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
#: classes/class.
|
| 164 |
-
msgid "
|
| 165 |
-
msgstr "
|
| 166 |
-
|
| 167 |
-
#: classes/class.simple-wp-membership.php:
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
#: classes/class.
|
| 172 |
-
msgid "
|
| 173 |
-
msgstr "
|
| 174 |
-
|
| 175 |
-
#: classes/class.
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
#: classes/class.swpm-access-control.php:
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
"
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
#: classes/class.swpm-access-control.php:
|
| 194 |
-
#: classes/class.swpm-access-control.php:
|
| 195 |
-
msgid "
|
| 196 |
-
msgstr "
|
| 197 |
-
|
| 198 |
-
#: classes/class.swpm-access-control.php:
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
"
|
| 212 |
-
"
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
#: classes/class.swpm-admin-registration.php:
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
#: classes/class.swpm-admin-registration.php:
|
| 227 |
-
msgid "
|
| 228 |
-
msgstr ""
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
#: classes/class.swpm-admin-registration.php:
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
#: classes/class.swpm-
|
| 245 |
-
msgid "
|
| 246 |
-
msgstr "
|
| 247 |
-
|
| 248 |
-
#: classes/class.swpm-ajax.php:
|
| 249 |
-
msgid "
|
| 250 |
-
msgstr "
|
| 251 |
-
|
| 252 |
-
#: classes/class.swpm-
|
| 253 |
-
msgid ""
|
| 254 |
-
"
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
"
|
| 258 |
-
"
|
| 259 |
-
|
| 260 |
-
#: classes/class.swpm-
|
| 261 |
-
msgid "
|
| 262 |
-
msgstr "
|
| 263 |
-
|
| 264 |
-
#: classes/class.swpm-auth.php:
|
| 265 |
-
msgid "
|
| 266 |
-
|
| 267 |
-
"
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
"
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
"
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
"
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
"
|
| 288 |
-
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
"
|
| 292 |
-
|
| 293 |
-
|
| 294 |
-
|
| 295 |
-
|
| 296 |
-
|
| 297 |
-
#: classes/class.swpm-auth.php:
|
| 298 |
-
msgid "
|
| 299 |
-
|
| 300 |
-
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
#: classes/class.swpm-auth.php:
|
| 306 |
-
msgid "
|
| 307 |
-
msgstr "
|
| 308 |
-
|
| 309 |
-
#: classes/class.swpm-auth.php:
|
| 310 |
-
msgid "
|
| 311 |
-
msgstr "
|
| 312 |
-
|
| 313 |
-
#: classes/class.swpm-auth.php:
|
| 314 |
-
msgid "
|
| 315 |
-
msgstr "
|
| 316 |
-
|
| 317 |
-
#: classes/class.swpm-auth.php:
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
"
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
#: classes/class.swpm-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
| 335 |
-
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
#: classes/class.swpm-
|
| 342 |
-
msgid "
|
| 343 |
-
msgstr "
|
| 344 |
-
|
| 345 |
-
#: classes/class.swpm-auth.php:
|
| 346 |
-
msgid "
|
| 347 |
-
msgstr "
|
| 348 |
-
|
| 349 |
-
#: classes/class.swpm-
|
| 350 |
-
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
#: classes/
|
| 354 |
-
|
| 355 |
-
|
| 356 |
-
|
| 357 |
-
#:
|
| 358 |
-
|
| 359 |
-
|
| 360 |
-
|
| 361 |
-
#:
|
| 362 |
-
#:
|
| 363 |
-
#:
|
| 364 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
#:
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
#:
|
| 372 |
-
|
| 373 |
-
|
| 374 |
-
|
| 375 |
-
#:
|
| 376 |
-
msgid "
|
| 377 |
-
msgstr "
|
| 378 |
-
|
| 379 |
-
#: classes/class.swpm-category-list.php:
|
| 380 |
-
msgid "
|
| 381 |
-
msgstr "
|
| 382 |
-
|
| 383 |
-
#: classes/class.swpm-category-list.php:
|
| 384 |
-
msgid "
|
| 385 |
-
msgstr "
|
| 386 |
-
|
| 387 |
-
#: classes/class.swpm-category-list.php:
|
| 388 |
-
msgid "Category
|
| 389 |
-
msgstr "Kategorie
|
| 390 |
-
|
| 391 |
-
#: classes/class.swpm-category-list.php:
|
| 392 |
-
msgid "
|
| 393 |
-
msgstr "
|
| 394 |
-
|
| 395 |
-
#: classes/class.swpm-
|
| 396 |
-
msgid "
|
| 397 |
-
msgstr ""
|
| 398 |
-
|
| 399 |
-
|
| 400 |
-
|
| 401 |
-
|
| 402 |
-
|
| 403 |
-
|
| 404 |
-
|
| 405 |
-
|
| 406 |
-
|
| 407 |
-
|
| 408 |
-
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
|
| 412 |
-
|
| 413 |
-
"
|
| 414 |
-
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
|
| 418 |
-
"
|
| 419 |
-
"
|
| 420 |
-
|
| 421 |
-
|
| 422 |
-
|
| 423 |
-
"
|
| 424 |
-
|
| 425 |
-
"
|
| 426 |
-
|
| 427 |
-
|
| 428 |
-
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
"
|
| 432 |
-
"
|
| 433 |
-
|
| 434 |
-
|
| 435 |
-
|
| 436 |
-
"
|
| 437 |
-
"
|
| 438 |
-
|
| 439 |
-
|
| 440 |
-
|
| 441 |
-
"
|
| 442 |
-
|
| 443 |
-
"
|
| 444 |
-
|
| 445 |
-
|
| 446 |
-
|
| 447 |
-
|
| 448 |
-
|
| 449 |
-
|
| 450 |
-
|
| 451 |
-
msgstr "
|
| 452 |
-
|
| 453 |
-
|
| 454 |
-
|
| 455 |
-
|
| 456 |
-
|
| 457 |
-
#: classes/class.swpm-form.php:
|
| 458 |
-
msgid "
|
| 459 |
-
msgstr "
|
| 460 |
-
|
| 461 |
-
#: classes/class.swpm-form.php:
|
| 462 |
-
msgid "
|
| 463 |
-
msgstr "
|
| 464 |
-
|
| 465 |
-
#: classes/class.swpm-form.php:
|
| 466 |
-
msgid "
|
| 467 |
-
msgstr "
|
| 468 |
-
|
| 469 |
-
#: classes/class.swpm-form.php:
|
| 470 |
-
msgid "
|
| 471 |
-
msgstr "
|
| 472 |
-
|
| 473 |
-
#: classes/class.swpm-form.php:
|
| 474 |
-
msgid "
|
| 475 |
-
msgstr "
|
| 476 |
-
|
| 477 |
-
#: classes/class.swpm-form.php:
|
| 478 |
-
msgid "
|
| 479 |
-
msgstr "
|
| 480 |
-
|
| 481 |
-
#: classes/class.swpm-form.php:
|
| 482 |
-
msgid "
|
| 483 |
-
msgstr "
|
| 484 |
-
|
| 485 |
-
#: classes/class.swpm-form.php:
|
| 486 |
-
msgid "
|
| 487 |
-
msgstr "
|
| 488 |
-
|
| 489 |
-
#: classes/class.swpm-form.php:
|
| 490 |
-
msgid "
|
| 491 |
-
msgstr "
|
| 492 |
-
|
| 493 |
-
#: classes/class.swpm-form.php:
|
| 494 |
-
msgid "
|
| 495 |
-
msgstr "
|
| 496 |
-
|
| 497 |
-
#: classes/class.swpm-
|
| 498 |
-
msgid ""
|
| 499 |
-
"
|
| 500 |
-
|
| 501 |
-
|
| 502 |
-
"
|
| 503 |
-
"
|
| 504 |
-
|
| 505 |
-
#: classes/class.swpm-
|
| 506 |
-
|
| 507 |
-
|
| 508 |
-
|
| 509 |
-
|
| 510 |
-
|
| 511 |
-
|
| 512 |
-
"
|
| 513 |
-
msgstr ""
|
| 514 |
-
"
|
| 515 |
-
"
|
| 516 |
-
|
| 517 |
-
#: classes/class.swpm-front-registration.php:
|
| 518 |
-
|
| 519 |
-
|
| 520 |
-
|
| 521 |
-
|
| 522 |
-
|
| 523 |
-
|
| 524 |
-
"
|
| 525 |
-
msgstr ""
|
| 526 |
-
"
|
| 527 |
-
"
|
| 528 |
-
|
| 529 |
-
|
| 530 |
-
|
| 531 |
-
|
| 532 |
-
|
| 533 |
-
|
| 534 |
-
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
| 538 |
-
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
#: classes/class.swpm-front-registration.php:
|
| 543 |
-
msgid ""
|
| 544 |
-
"
|
| 545 |
-
|
| 546 |
-
|
| 547 |
-
"
|
| 548 |
-
"
|
| 549 |
-
|
| 550 |
-
#: classes/class.swpm-front-registration.php:
|
| 551 |
-
msgid "
|
| 552 |
-
msgstr "
|
| 553 |
-
|
| 554 |
-
#: classes/class.swpm-front-registration.php:
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
-
|
| 559 |
-
|
| 560 |
-
|
| 561 |
-
|
| 562 |
-
|
| 563 |
-
|
| 564 |
-
|
| 565 |
-
|
| 566 |
-
|
| 567 |
-
|
| 568 |
-
#: classes/class.swpm-
|
| 569 |
-
msgid "
|
| 570 |
-
msgstr "
|
| 571 |
-
|
| 572 |
-
#: classes/class.swpm-front-registration.php:
|
| 573 |
-
|
| 574 |
-
|
| 575 |
-
|
| 576 |
-
|
| 577 |
-
#: classes/class.swpm-front-registration.php:
|
| 578 |
-
msgid "
|
| 579 |
-
msgstr "
|
| 580 |
-
|
| 581 |
-
#: classes/class.swpm-front-registration.php:
|
| 582 |
-
msgid ""
|
| 583 |
-
"
|
| 584 |
-
|
| 585 |
-
|
| 586 |
-
"
|
| 587 |
-
|
| 588 |
-
|
| 589 |
-
|
| 590 |
-
|
| 591 |
-
|
| 592 |
-
|
| 593 |
-
|
| 594 |
-
|
| 595 |
-
|
| 596 |
-
|
| 597 |
-
|
| 598 |
-
|
| 599 |
-
|
| 600 |
-
|
| 601 |
-
|
| 602 |
-
|
| 603 |
-
|
| 604 |
-
|
| 605 |
-
|
| 606 |
-
#: classes/class.swpm-front-registration.php:
|
| 607 |
-
msgid "
|
| 608 |
-
msgstr "
|
| 609 |
-
|
| 610 |
-
#: classes/class.swpm-front-registration.php:
|
| 611 |
-
msgid "
|
| 612 |
-
msgstr "
|
| 613 |
-
|
| 614 |
-
#: classes/class.swpm-front-registration.php:
|
| 615 |
-
msgid "
|
| 616 |
-
msgstr "
|
| 617 |
-
|
| 618 |
-
#: classes/class.swpm-front-registration.php:
|
| 619 |
-
#: classes/class.swpm-front-registration.php:
|
| 620 |
-
msgid "
|
| 621 |
-
msgstr "
|
| 622 |
-
|
| 623 |
-
#: classes/class.swpm-front-registration.php:
|
| 624 |
-
|
| 625 |
-
|
| 626 |
-
|
| 627 |
-
|
| 628 |
-
|
| 629 |
-
|
| 630 |
-
|
| 631 |
-
|
| 632 |
-
|
| 633 |
-
"
|
| 634 |
-
"
|
| 635 |
-
|
| 636 |
-
#: classes/class.swpm-front-registration.php:
|
| 637 |
-
|
| 638 |
-
|
| 639 |
-
|
| 640 |
-
|
| 641 |
-
|
| 642 |
-
|
| 643 |
-
|
| 644 |
-
|
| 645 |
-
|
| 646 |
-
"
|
| 647 |
-
"
|
| 648 |
-
|
| 649 |
-
|
| 650 |
-
"
|
| 651 |
-
|
| 652 |
-
|
| 653 |
-
|
| 654 |
-
|
| 655 |
-
|
| 656 |
-
|
| 657 |
-
|
| 658 |
-
|
| 659 |
-
|
| 660 |
-
|
| 661 |
-
|
| 662 |
-
|
| 663 |
-
|
| 664 |
-
|
| 665 |
-
|
| 666 |
-
|
| 667 |
-
|
| 668 |
-
|
| 669 |
-
|
| 670 |
-
|
| 671 |
-
|
| 672 |
-
|
| 673 |
-
#: classes/class.swpm-
|
| 674 |
-
msgid "
|
| 675 |
-
msgstr "
|
| 676 |
-
|
| 677 |
-
#: classes/class.swpm-
|
| 678 |
-
|
| 679 |
-
|
| 680 |
-
|
| 681 |
-
|
| 682 |
-
|
| 683 |
-
|
| 684 |
-
|
| 685 |
-
#:
|
| 686 |
-
#:
|
| 687 |
-
msgid "
|
| 688 |
-
msgstr "
|
| 689 |
-
|
| 690 |
-
#: classes/class.swpm-members.php:
|
| 691 |
-
#:
|
| 692 |
-
#:
|
| 693 |
-
|
| 694 |
-
|
| 695 |
-
|
| 696 |
-
|
| 697 |
-
#: classes/class.swpm-
|
| 698 |
-
#:
|
| 699 |
-
|
| 700 |
-
|
| 701 |
-
|
| 702 |
-
|
| 703 |
-
|
| 704 |
-
|
| 705 |
-
|
| 706 |
-
#:
|
| 707 |
-
msgid "
|
| 708 |
-
msgstr "
|
| 709 |
-
|
| 710 |
-
#: classes/class.swpm-members.php:27
|
| 711 |
-
|
| 712 |
-
|
| 713 |
-
|
| 714 |
-
|
| 715 |
-
#: classes/class.swpm-
|
| 716 |
-
|
| 717 |
-
|
| 718 |
-
|
| 719 |
-
|
| 720 |
-
|
| 721 |
-
|
| 722 |
-
|
| 723 |
-
|
| 724 |
-
|
| 725 |
-
|
| 726 |
-
|
| 727 |
-
|
| 728 |
-
|
| 729 |
-
#: classes/class.swpm-
|
| 730 |
-
|
| 731 |
-
|
| 732 |
-
|
| 733 |
-
|
| 734 |
-
|
| 735 |
-
|
| 736 |
-
|
| 737 |
-
|
| 738 |
-
|
| 739 |
-
|
| 740 |
-
|
| 741 |
-
|
| 742 |
-
|
| 743 |
-
|
| 744 |
-
|
| 745 |
-
|
| 746 |
-
|
| 747 |
-
|
| 748 |
-
|
| 749 |
-
|
| 750 |
-
|
| 751 |
-
|
| 752 |
-
"
|
| 753 |
-
|
| 754 |
-
|
| 755 |
-
|
| 756 |
-
|
| 757 |
-
|
| 758 |
-
|
| 759 |
-
|
| 760 |
-
|
| 761 |
-
|
| 762 |
-
|
| 763 |
-
|
| 764 |
-
|
| 765 |
-
|
| 766 |
-
|
| 767 |
-
|
| 768 |
-
|
| 769 |
-
|
| 770 |
-
|
| 771 |
-
|
| 772 |
-
|
| 773 |
-
"
|
| 774 |
-
"
|
| 775 |
-
|
| 776 |
-
|
| 777 |
-
"
|
| 778 |
-
|
| 779 |
-
|
| 780 |
-
|
| 781 |
-
"
|
| 782 |
-
"
|
| 783 |
-
|
| 784 |
-
|
| 785 |
-
|
| 786 |
-
"
|
| 787 |
-
|
| 788 |
-
|
| 789 |
-
|
| 790 |
-
|
| 791 |
-
|
| 792 |
-
#: classes/class.swpm-members.php:
|
| 793 |
-
msgid "
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
|
| 797 |
-
|
| 798 |
-
"
|
| 799 |
-
"
|
| 800 |
-
|
| 801 |
-
|
| 802 |
-
"
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
| 806 |
-
|
| 807 |
-
|
| 808 |
-
|
| 809 |
-
|
| 810 |
-
|
| 811 |
-
|
| 812 |
-
|
| 813 |
-
|
| 814 |
-
|
| 815 |
-
|
| 816 |
-
|
| 817 |
-
|
| 818 |
-
|
| 819 |
-
|
| 820 |
-
|
| 821 |
-
|
| 822 |
-
|
| 823 |
-
|
| 824 |
-
|
| 825 |
-
|
| 826 |
-
"
|
| 827 |
-
"
|
| 828 |
-
|
| 829 |
-
|
| 830 |
-
|
| 831 |
-
"
|
| 832 |
-
|
| 833 |
-
|
| 834 |
-
|
| 835 |
-
|
| 836 |
-
|
| 837 |
-
|
| 838 |
-
|
| 839 |
-
|
| 840 |
-
"
|
| 841 |
-
"
|
| 842 |
-
"
|
| 843 |
-
|
| 844 |
-
|
| 845 |
-
|
| 846 |
-
|
| 847 |
-
|
| 848 |
-
#: classes/class.swpm-members.php:
|
| 849 |
-
msgid ""
|
| 850 |
-
"
|
| 851 |
-
"
|
| 852 |
-
msgstr ""
|
| 853 |
-
"
|
| 854 |
-
"
|
| 855 |
-
|
| 856 |
-
|
| 857 |
-
|
| 858 |
-
|
| 859 |
-
|
| 860 |
-
|
| 861 |
-
|
| 862 |
-
|
| 863 |
-
|
| 864 |
-
|
| 865 |
-
|
| 866 |
-
|
| 867 |
-
|
| 868 |
-
|
| 869 |
-
#: classes/class.swpm-
|
| 870 |
-
msgid "
|
| 871 |
-
msgstr "
|
| 872 |
-
|
| 873 |
-
#: classes/class.swpm-members.php:
|
| 874 |
-
msgid "
|
| 875 |
-
msgstr "
|
| 876 |
-
|
| 877 |
-
#: classes/class.swpm-members.php:
|
| 878 |
-
msgid "
|
| 879 |
-
msgstr "
|
| 880 |
-
|
| 881 |
-
#: classes/class.swpm-
|
| 882 |
-
|
| 883 |
-
"
|
| 884 |
-
"
|
| 885 |
-
|
| 886 |
-
|
| 887 |
-
"
|
| 888 |
-
|
| 889 |
-
|
| 890 |
-
|
| 891 |
-
|
| 892 |
-
|
| 893 |
-
|
| 894 |
-
|
| 895 |
-
|
| 896 |
-
|
| 897 |
-
"
|
| 898 |
-
|
| 899 |
-
|
| 900 |
-
|
| 901 |
-
|
| 902 |
-
|
| 903 |
-
|
| 904 |
-
|
| 905 |
-
|
| 906 |
-
|
| 907 |
-
|
| 908 |
-
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
|
| 912 |
-
|
| 913 |
-
|
| 914 |
-
|
| 915 |
-
|
| 916 |
-
|
| 917 |
-
|
| 918 |
-
|
| 919 |
-
msgstr ""
|
| 920 |
-
|
| 921 |
-
|
| 922 |
-
|
| 923 |
-
|
| 924 |
-
|
| 925 |
-
#:
|
| 926 |
-
msgid "
|
| 927 |
-
msgstr "
|
| 928 |
-
|
| 929 |
-
#: classes/class.swpm-membership-levels.php:
|
| 930 |
-
msgid "
|
| 931 |
-
|
| 932 |
-
|
| 933 |
-
|
| 934 |
-
|
| 935 |
-
|
| 936 |
-
|
| 937 |
-
#:
|
| 938 |
-
|
| 939 |
-
|
| 940 |
-
|
| 941 |
-
|
| 942 |
-
|
| 943 |
-
|
| 944 |
-
|
| 945 |
-
|
| 946 |
-
|
| 947 |
-
|
| 948 |
-
|
| 949 |
-
|
| 950 |
-
#: classes/class.swpm-
|
| 951 |
-
|
| 952 |
-
|
| 953 |
-
|
| 954 |
-
|
| 955 |
-
|
| 956 |
-
|
| 957 |
-
|
| 958 |
-
|
| 959 |
-
|
| 960 |
-
|
| 961 |
-
|
| 962 |
-
|
| 963 |
-
|
| 964 |
-
|
| 965 |
-
|
| 966 |
-
|
| 967 |
-
|
| 968 |
-
|
| 969 |
-
|
| 970 |
-
|
| 971 |
-
|
| 972 |
-
|
| 973 |
-
|
| 974 |
-
#: classes/class.swpm-post-list.php:
|
| 975 |
-
msgid "
|
| 976 |
-
msgstr "
|
| 977 |
-
|
| 978 |
-
#: classes/class.swpm-post-list.php:
|
| 979 |
-
|
| 980 |
-
|
| 981 |
-
|
| 982 |
-
|
| 983 |
-
|
| 984 |
-
|
| 985 |
-
|
| 986 |
-
|
| 987 |
-
|
| 988 |
-
|
| 989 |
-
|
| 990 |
-
|
| 991 |
-
|
| 992 |
-
"
|
| 993 |
-
|
| 994 |
-
|
| 995 |
-
|
| 996 |
-
|
| 997 |
-
|
| 998 |
-
|
| 999 |
-
|
| 1000 |
-
|
| 1001 |
-
|
| 1002 |
-
|
| 1003 |
-
|
| 1004 |
-
|
| 1005 |
-
|
| 1006 |
-
|
| 1007 |
-
|
| 1008 |
-
|
| 1009 |
-
|
| 1010 |
-
|
| 1011 |
-
|
| 1012 |
-
|
| 1013 |
-
|
| 1014 |
-
|
| 1015 |
-
|
| 1016 |
-
|
| 1017 |
-
|
| 1018 |
-
|
| 1019 |
-
|
| 1020 |
-
|
| 1021 |
-
|
| 1022 |
-
|
| 1023 |
-
|
| 1024 |
-
|
| 1025 |
-
|
| 1026 |
-
|
| 1027 |
-
|
| 1028 |
-
|
| 1029 |
-
|
| 1030 |
-
|
| 1031 |
-
|
| 1032 |
-
"
|
| 1033 |
-
"
|
| 1034 |
-
|
| 1035 |
-
|
| 1036 |
-
"
|
| 1037 |
-
|
| 1038 |
-
|
| 1039 |
-
#: classes/class.swpm-settings.php:
|
| 1040 |
-
msgid "Free Membership
|
| 1041 |
-
msgstr "Kostenlose
|
| 1042 |
-
|
| 1043 |
-
#: classes/class.swpm-settings.php:
|
| 1044 |
-
msgid "
|
| 1045 |
-
|
| 1046 |
-
|
| 1047 |
-
|
| 1048 |
-
|
| 1049 |
-
|
| 1050 |
-
|
| 1051 |
-
|
| 1052 |
-
|
| 1053 |
-
|
| 1054 |
-
"
|
| 1055 |
-
|
| 1056 |
-
|
| 1057 |
-
|
| 1058 |
-
|
| 1059 |
-
|
| 1060 |
-
|
| 1061 |
-
|
| 1062 |
-
|
| 1063 |
-
|
| 1064 |
-
|
| 1065 |
-
|
| 1066 |
-
|
| 1067 |
-
"
|
| 1068 |
-
"
|
| 1069 |
-
msgstr ""
|
| 1070 |
-
"
|
| 1071 |
-
"
|
| 1072 |
-
|
| 1073 |
-
|
| 1074 |
-
|
| 1075 |
-
|
| 1076 |
-
|
| 1077 |
-
|
| 1078 |
-
|
| 1079 |
-
|
| 1080 |
-
"
|
| 1081 |
-
|
| 1082 |
-
|
| 1083 |
-
"
|
| 1084 |
-
|
| 1085 |
-
|
| 1086 |
-
|
| 1087 |
-
|
| 1088 |
-
|
| 1089 |
-
|
| 1090 |
-
|
| 1091 |
-
|
| 1092 |
-
"
|
| 1093 |
-
"
|
| 1094 |
-
msgstr ""
|
| 1095 |
-
"
|
| 1096 |
-
"
|
| 1097 |
-
|
| 1098 |
-
|
| 1099 |
-
|
| 1100 |
-
|
| 1101 |
-
|
| 1102 |
-
|
| 1103 |
-
|
| 1104 |
-
|
| 1105 |
-
|
| 1106 |
-
"
|
| 1107 |
-
|
| 1108 |
-
|
| 1109 |
-
"
|
| 1110 |
-
"
|
| 1111 |
-
"
|
| 1112 |
-
|
| 1113 |
-
#: classes/class.swpm-settings.php:
|
| 1114 |
-
msgid "
|
| 1115 |
-
msgstr ""
|
| 1116 |
-
|
| 1117 |
-
|
| 1118 |
-
|
| 1119 |
-
|
| 1120 |
-
"
|
| 1121 |
-
|
| 1122 |
-
|
| 1123 |
-
"
|
| 1124 |
-
"
|
| 1125 |
-
|
| 1126 |
-
#: classes/class.swpm-settings.php:
|
| 1127 |
-
msgid "
|
| 1128 |
-
msgstr "
|
| 1129 |
-
|
| 1130 |
-
|
| 1131 |
-
|
| 1132 |
-
|
| 1133 |
-
|
| 1134 |
-
|
| 1135 |
-
|
| 1136 |
-
|
| 1137 |
-
|
| 1138 |
-
|
| 1139 |
-
|
| 1140 |
-
|
| 1141 |
-
|
| 1142 |
-
|
| 1143 |
-
|
| 1144 |
-
|
| 1145 |
-
|
| 1146 |
-
|
| 1147 |
-
|
| 1148 |
-
|
| 1149 |
-
|
| 1150 |
-
|
| 1151 |
-
|
| 1152 |
-
|
| 1153 |
-
|
| 1154 |
-
|
| 1155 |
-
|
| 1156 |
-
|
| 1157 |
-
"
|
| 1158 |
-
|
| 1159 |
-
#: classes/class.swpm-settings.php:
|
| 1160 |
-
msgid ""
|
| 1161 |
-
"
|
| 1162 |
-
|
| 1163 |
-
|
| 1164 |
-
"
|
| 1165 |
-
"
|
| 1166 |
-
|
| 1167 |
-
|
| 1168 |
-
|
| 1169 |
-
|
| 1170 |
-
|
| 1171 |
-
|
| 1172 |
-
#: classes/class.swpm-settings.php:
|
| 1173 |
-
|
| 1174 |
-
|
| 1175 |
-
|
| 1176 |
-
|
| 1177 |
-
|
| 1178 |
-
|
| 1179 |
-
|
| 1180 |
-
|
| 1181 |
-
#: classes/class.swpm-settings.php:
|
| 1182 |
-
msgid "
|
| 1183 |
-
msgstr "
|
| 1184 |
-
|
| 1185 |
-
#: classes/class.swpm-settings.php:
|
| 1186 |
-
|
| 1187 |
-
|
| 1188 |
-
|
| 1189 |
-
|
| 1190 |
-
|
| 1191 |
-
|
| 1192 |
-
|
| 1193 |
-
|
| 1194 |
-
|
| 1195 |
-
|
| 1196 |
-
"
|
| 1197 |
-
|
| 1198 |
-
|
| 1199 |
-
|
| 1200 |
-
|
| 1201 |
-
|
| 1202 |
-
|
| 1203 |
-
|
| 1204 |
-
|
| 1205 |
-
|
| 1206 |
-
|
| 1207 |
-
|
| 1208 |
-
|
| 1209 |
-
|
| 1210 |
-
|
| 1211 |
-
|
| 1212 |
-
|
| 1213 |
-
|
| 1214 |
-
|
| 1215 |
-
|
| 1216 |
-
#: classes/class.swpm-settings.php:
|
| 1217 |
-
|
| 1218 |
-
|
| 1219 |
-
|
| 1220 |
-
|
| 1221 |
-
|
| 1222 |
-
|
| 1223 |
-
|
| 1224 |
-
|
| 1225 |
-
|
| 1226 |
-
|
| 1227 |
-
|
| 1228 |
-
|
| 1229 |
-
|
| 1230 |
-
|
| 1231 |
-
|
| 1232 |
-
"
|
| 1233 |
-
|
| 1234 |
-
|
| 1235 |
-
#: classes/class.swpm-settings.php:
|
| 1236 |
-
|
| 1237 |
-
"
|
| 1238 |
-
"
|
| 1239 |
-
|
| 1240 |
-
|
| 1241 |
-
|
| 1242 |
-
"
|
| 1243 |
-
|
| 1244 |
-
|
| 1245 |
-
|
| 1246 |
-
|
| 1247 |
-
|
| 1248 |
-
#: classes/class.swpm-settings.php:
|
| 1249 |
-
msgid ""
|
| 1250 |
-
"
|
| 1251 |
-
"
|
| 1252 |
-
|
| 1253 |
-
|
| 1254 |
-
"
|
| 1255 |
-
"
|
| 1256 |
-
|
| 1257 |
-
|
| 1258 |
-
|
| 1259 |
-
|
| 1260 |
-
|
| 1261 |
-
|
| 1262 |
-
|
| 1263 |
-
|
| 1264 |
-
|
| 1265 |
-
|
| 1266 |
-
|
| 1267 |
-
|
| 1268 |
-
"
|
| 1269 |
-
"
|
| 1270 |
-
|
| 1271 |
-
|
| 1272 |
-
"
|
| 1273 |
-
|
| 1274 |
-
|
| 1275 |
-
|
| 1276 |
-
|
| 1277 |
-
|
| 1278 |
-
|
| 1279 |
-
|
| 1280 |
-
|
| 1281 |
-
|
| 1282 |
-
|
| 1283 |
-
|
| 1284 |
-
|
| 1285 |
-
|
| 1286 |
-
|
| 1287 |
-
|
| 1288 |
-
|
| 1289 |
-
"
|
| 1290 |
-
|
| 1291 |
-
|
| 1292 |
-
|
| 1293 |
-
|
| 1294 |
-
|
| 1295 |
-
|
| 1296 |
-
|
| 1297 |
-
|
| 1298 |
-
|
| 1299 |
-
|
| 1300 |
-
|
| 1301 |
-
|
| 1302 |
-
|
| 1303 |
-
|
| 1304 |
-
|
| 1305 |
-
|
| 1306 |
-
|
| 1307 |
-
|
| 1308 |
-
|
| 1309 |
-
|
| 1310 |
-
|
| 1311 |
-
|
| 1312 |
-
|
| 1313 |
-
|
| 1314 |
-
"
|
| 1315 |
-
"
|
| 1316 |
-
|
| 1317 |
-
|
| 1318 |
-
"
|
| 1319 |
-
"
|
| 1320 |
-
|
| 1321 |
-
|
| 1322 |
-
|
| 1323 |
-
|
| 1324 |
-
|
| 1325 |
-
|
| 1326 |
-
|
| 1327 |
-
|
| 1328 |
-
"
|
| 1329 |
-
"
|
| 1330 |
-
"
|
| 1331 |
-
|
| 1332 |
-
"
|
| 1333 |
-
"
|
| 1334 |
-
|
| 1335 |
-
|
| 1336 |
-
"
|
| 1337 |
-
|
| 1338 |
-
|
| 1339 |
-
|
| 1340 |
-
|
| 1341 |
-
|
| 1342 |
-
|
| 1343 |
-
|
| 1344 |
-
|
| 1345 |
-
"
|
| 1346 |
-
"plugin.com/
|
| 1347 |
-
"
|
| 1348 |
-
"
|
| 1349 |
-
|
| 1350 |
-
|
| 1351 |
-
|
| 1352 |
-
"
|
| 1353 |
-
|
| 1354 |
-
|
| 1355 |
-
|
| 1356 |
-
|
| 1357 |
-
|
| 1358 |
-
|
| 1359 |
-
|
| 1360 |
-
|
| 1361 |
-
|
| 1362 |
-
|
| 1363 |
-
"
|
| 1364 |
-
"
|
| 1365 |
-
"
|
| 1366 |
-
"
|
| 1367 |
-
"
|
| 1368 |
-
|
| 1369 |
-
|
| 1370 |
-
"
|
| 1371 |
-
"
|
| 1372 |
-
|
| 1373 |
-
|
| 1374 |
-
|
| 1375 |
-
|
| 1376 |
-
|
| 1377 |
-
|
| 1378 |
-
"
|
| 1379 |
-
"
|
| 1380 |
-
|
| 1381 |
-
|
| 1382 |
-
|
| 1383 |
-
"
|
| 1384 |
-
"
|
| 1385 |
-
|
| 1386 |
-
"
|
| 1387 |
-
|
| 1388 |
-
|
| 1389 |
-
|
| 1390 |
-
|
| 1391 |
-
|
| 1392 |
-
|
| 1393 |
-
|
| 1394 |
-
|
| 1395 |
-
|
| 1396 |
-
"
|
| 1397 |
-
|
| 1398 |
-
|
| 1399 |
-
"
|
| 1400 |
-
|
| 1401 |
-
|
| 1402 |
-
|
| 1403 |
-
|
| 1404 |
-
|
| 1405 |
-
|
| 1406 |
-
|
| 1407 |
-
|
| 1408 |
-
|
| 1409 |
-
|
| 1410 |
-
|
| 1411 |
-
|
| 1412 |
-
|
| 1413 |
-
|
| 1414 |
-
|
| 1415 |
-
"
|
| 1416 |
-
"
|
| 1417 |
-
|
| 1418 |
-
|
| 1419 |
-
"
|
| 1420 |
-
|
| 1421 |
-
|
| 1422 |
-
|
| 1423 |
-
|
| 1424 |
-
|
| 1425 |
-
|
| 1426 |
-
|
| 1427 |
-
|
| 1428 |
-
"
|
| 1429 |
-
|
| 1430 |
-
|
| 1431 |
-
"
|
| 1432 |
-
|
| 1433 |
-
|
| 1434 |
-
|
| 1435 |
-
|
| 1436 |
-
|
| 1437 |
-
|
| 1438 |
-
|
| 1439 |
-
|
| 1440 |
-
"
|
| 1441 |
-
|
| 1442 |
-
|
| 1443 |
-
|
| 1444 |
-
|
| 1445 |
-
|
| 1446 |
-
#: classes/class.swpm-settings.php:
|
| 1447 |
-
msgid ""
|
| 1448 |
-
"
|
| 1449 |
-
|
| 1450 |
-
|
| 1451 |
-
|
| 1452 |
-
|
| 1453 |
-
"Sie
|
| 1454 |
-
|
| 1455 |
-
|
| 1456 |
-
|
| 1457 |
-
|
| 1458 |
-
|
| 1459 |
-
|
| 1460 |
-
|
| 1461 |
-
|
| 1462 |
-
"
|
| 1463 |
-
"
|
| 1464 |
-
|
| 1465 |
-
|
| 1466 |
-
"
|
| 1467 |
-
"
|
| 1468 |
-
|
| 1469 |
-
|
| 1470 |
-
|
| 1471 |
-
|
| 1472 |
-
|
| 1473 |
-
|
| 1474 |
-
|
| 1475 |
-
|
| 1476 |
-
|
| 1477 |
-
|
| 1478 |
-
|
| 1479 |
-
|
| 1480 |
-
|
| 1481 |
-
"
|
| 1482 |
-
"
|
| 1483 |
-
|
| 1484 |
-
|
| 1485 |
-
"
|
| 1486 |
-
"
|
| 1487 |
-
|
| 1488 |
-
#: classes/class.swpm-settings.php:
|
| 1489 |
-
msgid "
|
| 1490 |
-
msgstr "
|
| 1491 |
-
|
| 1492 |
-
#: classes/class.swpm-settings.php:
|
| 1493 |
-
msgid ""
|
| 1494 |
-
"
|
| 1495 |
-
"
|
| 1496 |
-
msgstr ""
|
| 1497 |
-
"
|
| 1498 |
-
"
|
| 1499 |
-
|
| 1500 |
-
|
| 1501 |
-
|
| 1502 |
-
"
|
| 1503 |
-
"
|
| 1504 |
-
|
| 1505 |
-
|
| 1506 |
-
|
| 1507 |
-
"
|
| 1508 |
-
|
| 1509 |
-
|
| 1510 |
-
|
| 1511 |
-
|
| 1512 |
-
|
| 1513 |
-
#: classes/class.swpm-settings.php:
|
| 1514 |
-
msgid ""
|
| 1515 |
-
"
|
| 1516 |
-
"membership
|
| 1517 |
-
"
|
| 1518 |
-
"
|
| 1519 |
-
|
| 1520 |
-
"
|
| 1521 |
-
|
| 1522 |
-
|
| 1523 |
-
"
|
| 1524 |
-
|
| 1525 |
-
|
| 1526 |
-
|
| 1527 |
-
|
| 1528 |
-
|
| 1529 |
-
|
| 1530 |
-
|
| 1531 |
-
|
| 1532 |
-
|
| 1533 |
-
|
| 1534 |
-
|
| 1535 |
-
|
| 1536 |
-
"
|
| 1537 |
-
|
| 1538 |
-
|
| 1539 |
-
|
| 1540 |
-
|
| 1541 |
-
|
| 1542 |
-
|
| 1543 |
-
|
| 1544 |
-
|
| 1545 |
-
|
| 1546 |
-
|
| 1547 |
-
"the
|
| 1548 |
-
msgstr "
|
| 1549 |
-
|
| 1550 |
-
|
| 1551 |
-
|
| 1552 |
-
|
| 1553 |
-
|
| 1554 |
-
|
| 1555 |
-
|
| 1556 |
-
|
| 1557 |
-
|
| 1558 |
-
"
|
| 1559 |
-
|
| 1560 |
-
|
| 1561 |
-
|
| 1562 |
-
|
| 1563 |
-
|
| 1564 |
-
|
| 1565 |
-
|
| 1566 |
-
|
| 1567 |
-
|
| 1568 |
-
|
| 1569 |
-
|
| 1570 |
-
|
| 1571 |
-
|
| 1572 |
-
|
| 1573 |
-
#: classes/class.swpm-settings.php:
|
| 1574 |
-
msgid "
|
| 1575 |
-
msgstr "
|
| 1576 |
-
|
| 1577 |
-
#: classes/class.swpm-settings.php:
|
| 1578 |
-
msgid "
|
| 1579 |
-
msgstr "
|
| 1580 |
-
|
| 1581 |
-
#: classes/class.swpm-settings.php:
|
| 1582 |
-
|
| 1583 |
-
"
|
| 1584 |
-
"
|
| 1585 |
-
|
| 1586 |
-
|
| 1587 |
-
"
|
| 1588 |
-
"
|
| 1589 |
-
|
| 1590 |
-
#: classes/class.swpm-settings.php:
|
| 1591 |
-
msgid "
|
| 1592 |
-
msgstr "
|
| 1593 |
-
|
| 1594 |
-
#: classes/class.swpm-settings.php:
|
| 1595 |
-
msgid ""
|
| 1596 |
-
"
|
| 1597 |
-
"
|
| 1598 |
-
msgstr ""
|
| 1599 |
-
"
|
| 1600 |
-
"
|
| 1601 |
-
|
| 1602 |
-
|
| 1603 |
-
|
| 1604 |
-
"
|
| 1605 |
-
"
|
| 1606 |
-
|
| 1607 |
-
|
| 1608 |
-
"
|
| 1609 |
-
|
| 1610 |
-
|
| 1611 |
-
|
| 1612 |
-
"
|
| 1613 |
-
"
|
| 1614 |
-
|
| 1615 |
-
|
| 1616 |
-
|
| 1617 |
-
"
|
| 1618 |
-
"
|
| 1619 |
-
|
| 1620 |
-
|
| 1621 |
-
|
| 1622 |
-
|
| 1623 |
-
|
| 1624 |
-
|
| 1625 |
-
|
| 1626 |
-
"
|
| 1627 |
-
"
|
| 1628 |
-
msgstr ""
|
| 1629 |
-
"
|
| 1630 |
-
"
|
| 1631 |
-
|
| 1632 |
-
|
| 1633 |
-
|
| 1634 |
-
|
| 1635 |
-
|
| 1636 |
-
|
| 1637 |
-
|
| 1638 |
-
|
| 1639 |
-
"
|
| 1640 |
-
|
| 1641 |
-
|
| 1642 |
-
"
|
| 1643 |
-
|
| 1644 |
-
|
| 1645 |
-
|
| 1646 |
-
"
|
| 1647 |
-
"
|
| 1648 |
-
|
| 1649 |
-
|
| 1650 |
-
|
| 1651 |
-
|
| 1652 |
-
|
| 1653 |
-
|
| 1654 |
-
"
|
| 1655 |
-
"
|
| 1656 |
-
|
| 1657 |
-
|
| 1658 |
-
|
| 1659 |
-
|
| 1660 |
-
|
| 1661 |
-
|
| 1662 |
-
"
|
| 1663 |
-
"
|
| 1664 |
-
|
| 1665 |
-
|
| 1666 |
-
|
| 1667 |
-
|
| 1668 |
-
|
| 1669 |
-
|
| 1670 |
-
"
|
| 1671 |
-
"
|
| 1672 |
-
|
| 1673 |
-
|
| 1674 |
-
|
| 1675 |
-
|
| 1676 |
-
|
| 1677 |
-
|
| 1678 |
-
|
| 1679 |
-
"
|
| 1680 |
-
|
| 1681 |
-
|
| 1682 |
-
|
| 1683 |
-
|
| 1684 |
-
"
|
| 1685 |
-
|
| 1686 |
-
"
|
| 1687 |
-
"
|
| 1688 |
-
|
| 1689 |
-
|
| 1690 |
-
"
|
| 1691 |
-
|
| 1692 |
-
"
|
| 1693 |
-
"
|
| 1694 |
-
|
| 1695 |
-
#: classes/class.swpm-settings.php:
|
| 1696 |
-
msgid ""
|
| 1697 |
-
"This section allows you to configure
|
| 1698 |
-
"
|
| 1699 |
-
|
| 1700 |
-
"
|
| 1701 |
-
|
| 1702 |
-
"
|
| 1703 |
-
|
| 1704 |
-
|
| 1705 |
-
|
| 1706 |
-
|
| 1707 |
-
|
| 1708 |
-
#: classes/class.swpm-
|
| 1709 |
-
|
| 1710 |
-
|
| 1711 |
-
|
| 1712 |
-
|
| 1713 |
-
|
| 1714 |
-
|
| 1715 |
-
|
| 1716 |
-
|
| 1717 |
-
|
| 1718 |
-
|
| 1719 |
-
|
| 1720 |
-
|
| 1721 |
-
|
| 1722 |
-
|
| 1723 |
-
#: classes/class.swpm-utils-
|
| 1724 |
-
|
| 1725 |
-
|
| 1726 |
-
|
| 1727 |
-
|
| 1728 |
-
#: classes/
|
| 1729 |
-
msgid "
|
| 1730 |
-
msgstr "
|
| 1731 |
-
|
| 1732 |
-
#: classes/class.swpm-utils-misc.php:
|
| 1733 |
-
msgid "
|
| 1734 |
-
msgstr "
|
| 1735 |
-
|
| 1736 |
-
#: classes/class.swpm-utils-misc.php:
|
| 1737 |
-
|
| 1738 |
-
|
| 1739 |
-
|
| 1740 |
-
|
| 1741 |
-
|
| 1742 |
-
|
| 1743 |
-
|
| 1744 |
-
|
| 1745 |
-
|
| 1746 |
-
|
| 1747 |
-
|
| 1748 |
-
|
| 1749 |
-
|
| 1750 |
-
|
| 1751 |
-
|
| 1752 |
-
|
| 1753 |
-
|
| 1754 |
-
|
| 1755 |
-
|
| 1756 |
-
|
| 1757 |
-
|
| 1758 |
-
|
| 1759 |
-
|
| 1760 |
-
|
| 1761 |
-
|
| 1762 |
-
|
| 1763 |
-
|
| 1764 |
-
|
| 1765 |
-
|
| 1766 |
-
|
| 1767 |
-
|
| 1768 |
-
|
| 1769 |
-
|
| 1770 |
-
|
| 1771 |
-
"
|
| 1772 |
-
|
| 1773 |
-
#: classes/class.swpm-utils.php:
|
| 1774 |
-
msgid "
|
| 1775 |
-
msgstr "
|
| 1776 |
-
|
| 1777 |
-
#: classes/class.swpm-utils.php:
|
| 1778 |
-
msgid "
|
| 1779 |
-
msgstr "
|
| 1780 |
-
|
| 1781 |
-
#: classes/class.swpm-utils.php:
|
| 1782 |
-
msgid "
|
| 1783 |
-
msgstr "
|
| 1784 |
-
|
| 1785 |
-
|
| 1786 |
-
|
| 1787 |
-
|
| 1788 |
-
|
| 1789 |
-
|
| 1790 |
-
|
| 1791 |
-
|
| 1792 |
-
|
| 1793 |
-
|
| 1794 |
-
|
| 1795 |
-
|
| 1796 |
-
|
| 1797 |
-
|
| 1798 |
-
|
| 1799 |
-
|
| 1800 |
-
|
| 1801 |
-
|
| 1802 |
-
|
| 1803 |
-
|
| 1804 |
-
|
| 1805 |
-
|
| 1806 |
-
|
| 1807 |
-
|
| 1808 |
-
|
| 1809 |
-
|
| 1810 |
-
|
| 1811 |
-
|
| 1812 |
-
|
| 1813 |
-
|
| 1814 |
-
|
| 1815 |
-
|
| 1816 |
-
|
| 1817 |
-
|
| 1818 |
-
|
| 1819 |
-
|
| 1820 |
-
|
| 1821 |
-
|
| 1822 |
-
#:
|
| 1823 |
-
|
| 1824 |
-
|
| 1825 |
-
|
| 1826 |
-
|
| 1827 |
-
|
| 1828 |
-
|
| 1829 |
-
|
| 1830 |
-
|
| 1831 |
-
|
| 1832 |
-
|
| 1833 |
-
|
| 1834 |
-
|
| 1835 |
-
#:
|
| 1836 |
-
|
| 1837 |
-
|
| 1838 |
-
|
| 1839 |
-
|
| 1840 |
-
#:
|
| 1841 |
-
msgid "
|
| 1842 |
-
msgstr "
|
| 1843 |
-
|
| 1844 |
-
#: classes/admin-includes/class.swpm-payments-
|
| 1845 |
-
|
| 1846 |
-
|
| 1847 |
-
|
| 1848 |
-
|
| 1849 |
-
|
| 1850 |
-
|
| 1851 |
-
|
| 1852 |
-
|
| 1853 |
-
#:
|
| 1854 |
-
|
| 1855 |
-
|
| 1856 |
-
|
| 1857 |
-
|
| 1858 |
-
#:
|
| 1859 |
-
msgid "
|
| 1860 |
-
msgstr "
|
| 1861 |
-
|
| 1862 |
-
#: classes/admin-includes/class.swpm-payments-list-table.php:
|
| 1863 |
-
msgid "
|
| 1864 |
-
msgstr "
|
| 1865 |
-
|
| 1866 |
-
#: classes/admin-includes/class.swpm-payments-list-table.php:
|
| 1867 |
-
|
| 1868 |
-
|
| 1869 |
-
|
| 1870 |
-
|
| 1871 |
-
|
| 1872 |
-
|
| 1873 |
-
|
| 1874 |
-
|
| 1875 |
-
|
| 1876 |
-
|
| 1877 |
-
|
| 1878 |
-
|
| 1879 |
-
|
| 1880 |
-
|
| 1881 |
-
|
| 1882 |
-
|
| 1883 |
-
|
| 1884 |
-
|
| 1885 |
-
|
| 1886 |
-
|
| 1887 |
-
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:
|
| 1888 |
-
msgid "
|
| 1889 |
-
msgstr "
|
| 1890 |
-
|
| 1891 |
-
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:
|
| 1892 |
-
msgid ""
|
| 1893 |
-
"
|
| 1894 |
-
|
| 1895 |
-
|
| 1896 |
-
|
| 1897 |
-
|
| 1898 |
-
"
|
| 1899 |
-
|
| 1900 |
-
|
| 1901 |
-
|
| 1902 |
-
|
| 1903 |
-
|
| 1904 |
-
|
| 1905 |
-
|
| 1906 |
-
|
| 1907 |
-
|
| 1908 |
-
|
| 1909 |
-
|
| 1910 |
-
|
| 1911 |
-
|
| 1912 |
-
|
| 1913 |
-
|
| 1914 |
-
|
| 1915 |
-
#:
|
| 1916 |
-
msgid "
|
| 1917 |
-
msgstr "
|
| 1918 |
-
|
| 1919 |
-
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:
|
| 1920 |
-
msgid "
|
| 1921 |
-
msgstr "
|
| 1922 |
-
|
| 1923 |
-
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:
|
| 1924 |
-
msgid "
|
| 1925 |
-
msgstr "
|
| 1926 |
-
|
| 1927 |
-
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:
|
| 1928 |
-
|
| 1929 |
-
|
| 1930 |
-
|
| 1931 |
-
|
| 1932 |
-
|
| 1933 |
-
msgid "
|
| 1934 |
-
msgstr ""
|
| 1935 |
-
|
| 1936 |
-
|
| 1937 |
-
|
| 1938 |
-
|
| 1939 |
-
|
| 1940 |
-
|
| 1941 |
-
"
|
| 1942 |
-
msgstr ""
|
| 1943 |
-
|
| 1944 |
-
|
| 1945 |
-
|
| 1946 |
-
|
| 1947 |
-
|
| 1948 |
-
|
| 1949 |
-
|
| 1950 |
-
|
| 1951 |
-
|
| 1952 |
-
|
| 1953 |
-
|
| 1954 |
-
"
|
| 1955 |
-
|
| 1956 |
-
|
| 1957 |
-
|
| 1958 |
-
|
| 1959 |
-
|
| 1960 |
-
|
| 1961 |
-
"
|
| 1962 |
-
|
| 1963 |
-
|
| 1964 |
-
|
| 1965 |
-
|
| 1966 |
-
|
| 1967 |
-
|
| 1968 |
-
|
| 1969 |
-
|
| 1970 |
-
|
| 1971 |
-
"account
|
| 1972 |
-
|
| 1973 |
-
|
| 1974 |
-
"
|
| 1975 |
-
|
| 1976 |
-
|
| 1977 |
-
|
| 1978 |
-
|
| 1979 |
-
|
| 1980 |
-
|
| 1981 |
-
|
| 1982 |
-
|
| 1983 |
-
|
| 1984 |
-
|
| 1985 |
-
|
| 1986 |
-
|
| 1987 |
-
|
| 1988 |
-
|
| 1989 |
-
#: views/
|
| 1990 |
-
msgid "
|
| 1991 |
-
msgstr "
|
| 1992 |
-
|
| 1993 |
-
#: views/
|
| 1994 |
-
msgid "
|
| 1995 |
-
msgstr "Passwort
|
| 1996 |
-
|
| 1997 |
-
#: views/
|
| 1998 |
-
msgid "
|
| 1999 |
-
msgstr "
|
| 2000 |
-
|
| 2001 |
-
#: views/add.php:
|
| 2002 |
-
|
| 2003 |
-
|
| 2004 |
-
|
| 2005 |
-
|
| 2006 |
-
|
| 2007 |
-
|
| 2008 |
-
|
| 2009 |
-
|
| 2010 |
-
|
| 2011 |
-
|
| 2012 |
-
|
| 2013 |
-
|
| 2014 |
-
|
| 2015 |
-
|
| 2016 |
-
"
|
| 2017 |
-
|
| 2018 |
-
#: views/
|
| 2019 |
-
|
| 2020 |
-
|
| 2021 |
-
|
| 2022 |
-
#: views/
|
| 2023 |
-
msgid "
|
| 2024 |
-
msgstr "
|
| 2025 |
-
|
| 2026 |
-
#: views/admin_add.php:
|
| 2027 |
-
msgid "
|
| 2028 |
-
msgstr "
|
| 2029 |
-
|
| 2030 |
-
|
| 2031 |
-
|
| 2032 |
-
|
| 2033 |
-
|
| 2034 |
-
#: views/
|
| 2035 |
-
|
| 2036 |
-
|
| 2037 |
-
|
| 2038 |
-
|
| 2039 |
-
|
| 2040 |
-
|
| 2041 |
-
|
| 2042 |
-
|
| 2043 |
-
|
| 2044 |
-
"
|
| 2045 |
-
"
|
| 2046 |
-
|
| 2047 |
-
|
| 2048 |
-
|
| 2049 |
-
|
| 2050 |
-
|
| 2051 |
-
|
| 2052 |
-
|
| 2053 |
-
|
| 2054 |
-
|
| 2055 |
-
|
| 2056 |
-
|
| 2057 |
-
|
| 2058 |
-
"
|
| 2059 |
-
"
|
| 2060 |
-
|
| 2061 |
-
|
| 2062 |
-
"
|
| 2063 |
-
|
| 2064 |
-
|
| 2065 |
-
|
| 2066 |
-
|
| 2067 |
-
|
| 2068 |
-
|
| 2069 |
-
|
| 2070 |
-
|
| 2071 |
-
|
| 2072 |
-
|
| 2073 |
-
|
| 2074 |
-
|
| 2075 |
-
|
| 2076 |
-
|
| 2077 |
-
|
| 2078 |
-
|
| 2079 |
-
|
| 2080 |
-
|
| 2081 |
-
|
| 2082 |
-
|
| 2083 |
-
|
| 2084 |
-
|
| 2085 |
-
|
| 2086 |
-
|
| 2087 |
-
|
| 2088 |
-
|
| 2089 |
-
|
| 2090 |
-
|
| 2091 |
-
|
| 2092 |
-
|
| 2093 |
-
#: views/admin_add_level.php:
|
| 2094 |
-
|
| 2095 |
-
|
| 2096 |
-
|
| 2097 |
-
|
| 2098 |
-
|
| 2099 |
-
|
| 2100 |
-
|
| 2101 |
-
|
| 2102 |
-
|
| 2103 |
-
|
| 2104 |
-
|
| 2105 |
-
|
| 2106 |
-
|
| 2107 |
-
#: views/
|
| 2108 |
-
|
| 2109 |
-
|
| 2110 |
-
|
| 2111 |
-
|
| 2112 |
-
|
| 2113 |
-
|
| 2114 |
-
|
| 2115 |
-
|
| 2116 |
-
|
| 2117 |
-
|
| 2118 |
-
|
| 2119 |
-
|
| 2120 |
-
|
| 2121 |
-
|
| 2122 |
-
|
| 2123 |
-
|
| 2124 |
-
|
| 2125 |
-
|
| 2126 |
-
|
| 2127 |
-
|
| 2128 |
-
|
| 2129 |
-
"
|
| 2130 |
-
"
|
| 2131 |
-
|
| 2132 |
-
|
| 2133 |
-
"
|
| 2134 |
-
"
|
| 2135 |
-
|
| 2136 |
-
|
| 2137 |
-
|
| 2138 |
-
|
| 2139 |
-
|
| 2140 |
-
|
| 2141 |
-
|
| 2142 |
-
|
| 2143 |
-
|
| 2144 |
-
|
| 2145 |
-
|
| 2146 |
-
|
| 2147 |
-
"
|
| 2148 |
-
"
|
| 2149 |
-
|
| 2150 |
-
|
| 2151 |
-
"
|
| 2152 |
-
|
| 2153 |
-
|
| 2154 |
-
|
| 2155 |
-
|
| 2156 |
-
|
| 2157 |
-
|
| 2158 |
-
|
| 2159 |
-
|
| 2160 |
-
|
| 2161 |
-
|
| 2162 |
-
|
| 2163 |
-
"
|
| 2164 |
-
"
|
| 2165 |
-
|
| 2166 |
-
|
| 2167 |
-
|
| 2168 |
-
"
|
| 2169 |
-
|
| 2170 |
-
#: views/
|
| 2171 |
-
msgid ""
|
| 2172 |
-
"
|
| 2173 |
-
|
| 2174 |
-
|
| 2175 |
-
|
| 2176 |
-
"
|
| 2177 |
-
"
|
| 2178 |
-
"
|
| 2179 |
-
|
| 2180 |
-
|
| 2181 |
-
|
| 2182 |
-
|
| 2183 |
-
|
| 2184 |
-
|
| 2185 |
-
|
| 2186 |
-
|
| 2187 |
-
|
| 2188 |
-
|
| 2189 |
-
|
| 2190 |
-
|
| 2191 |
-
|
| 2192 |
-
|
| 2193 |
-
|
| 2194 |
-
|
| 2195 |
-
|
| 2196 |
-
|
| 2197 |
-
#: views/
|
| 2198 |
-
msgid "
|
| 2199 |
-
msgstr "
|
| 2200 |
-
|
| 2201 |
-
#: views/
|
| 2202 |
-
msgid "
|
| 2203 |
-
msgstr "
|
| 2204 |
-
|
| 2205 |
-
#: views/
|
| 2206 |
-
msgid "
|
| 2207 |
-
msgstr "
|
| 2208 |
-
|
| 2209 |
-
#: views/
|
| 2210 |
-
|
| 2211 |
-
|
| 2212 |
-
|
| 2213 |
-
|
| 2214 |
-
|
| 2215 |
-
|
| 2216 |
-
|
| 2217 |
-
|
| 2218 |
-
|
| 2219 |
-
"
|
| 2220 |
-
"
|
| 2221 |
-
|
| 2222 |
-
|
| 2223 |
-
"
|
| 2224 |
-
|
| 2225 |
-
|
| 2226 |
-
|
| 2227 |
-
|
| 2228 |
-
|
| 2229 |
-
|
| 2230 |
-
|
| 2231 |
-
|
| 2232 |
-
|
| 2233 |
-
|
| 2234 |
-
|
| 2235 |
-
|
| 2236 |
-
|
| 2237 |
-
|
| 2238 |
-
|
| 2239 |
-
"
|
| 2240 |
-
"
|
| 2241 |
-
|
| 2242 |
-
|
| 2243 |
-
"
|
| 2244 |
-
|
| 2245 |
-
|
| 2246 |
-
|
| 2247 |
-
|
| 2248 |
-
|
| 2249 |
-
|
| 2250 |
-
|
| 2251 |
-
|
| 2252 |
-
|
| 2253 |
-
|
| 2254 |
-
|
| 2255 |
-
|
| 2256 |
-
|
| 2257 |
-
|
| 2258 |
-
|
| 2259 |
-
|
| 2260 |
-
|
| 2261 |
-
|
| 2262 |
-
|
| 2263 |
-
|
| 2264 |
-
|
| 2265 |
-
|
| 2266 |
-
|
| 2267 |
-
|
| 2268 |
-
|
| 2269 |
-
|
| 2270 |
-
|
| 2271 |
-
|
| 2272 |
-
|
| 2273 |
-
|
| 2274 |
-
|
| 2275 |
-
"
|
| 2276 |
-
msgstr ""
|
| 2277 |
-
|
| 2278 |
-
|
| 2279 |
-
|
| 2280 |
-
|
| 2281 |
-
|
| 2282 |
-
|
| 2283 |
-
|
| 2284 |
-
|
| 2285 |
-
|
| 2286 |
-
|
| 2287 |
-
|
| 2288 |
-
|
| 2289 |
-
msgstr "
|
| 2290 |
-
|
| 2291 |
-
|
| 2292 |
-
|
| 2293 |
-
"
|
| 2294 |
-
"
|
| 2295 |
-
|
| 2296 |
-
|
| 2297 |
-
"
|
| 2298 |
-
"
|
| 2299 |
-
|
| 2300 |
-
|
| 2301 |
-
|
| 2302 |
-
|
| 2303 |
-
|
| 2304 |
-
|
| 2305 |
-
|
| 2306 |
-
|
| 2307 |
-
|
| 2308 |
-
|
| 2309 |
-
|
| 2310 |
-
|
| 2311 |
-
|
| 2312 |
-
|
| 2313 |
-
|
| 2314 |
-
|
| 2315 |
-
|
| 2316 |
-
|
| 2317 |
-
|
| 2318 |
-
#:
|
| 2319 |
-
msgid "
|
| 2320 |
-
msgstr "
|
| 2321 |
-
|
| 2322 |
-
#: views/
|
| 2323 |
-
|
| 2324 |
-
|
| 2325 |
-
|
| 2326 |
-
|
| 2327 |
-
|
| 2328 |
-
|
| 2329 |
-
|
| 2330 |
-
|
| 2331 |
-
#:
|
| 2332 |
-
msgid "
|
| 2333 |
-
msgstr "
|
| 2334 |
-
|
| 2335 |
-
#: views/admin_member_form_common_part.php:
|
| 2336 |
-
|
| 2337 |
-
|
| 2338 |
-
|
| 2339 |
-
|
| 2340 |
-
|
| 2341 |
-
|
| 2342 |
-
|
| 2343 |
-
|
| 2344 |
-
#:
|
| 2345 |
-
msgid "
|
| 2346 |
-
msgstr "
|
| 2347 |
-
|
| 2348 |
-
#: views/admin_member_form_common_part.php:
|
| 2349 |
-
|
| 2350 |
-
|
| 2351 |
-
|
| 2352 |
-
|
| 2353 |
-
|
| 2354 |
-
|
| 2355 |
-
|
| 2356 |
-
|
| 2357 |
-
|
| 2358 |
-
|
| 2359 |
-
|
| 2360 |
-
|
| 2361 |
-
|
| 2362 |
-
|
| 2363 |
-
|
| 2364 |
-
|
| 2365 |
-
|
| 2366 |
-
|
| 2367 |
-
|
| 2368 |
-
|
| 2369 |
-
|
| 2370 |
-
|
| 2371 |
-
|
| 2372 |
-
|
| 2373 |
-
|
| 2374 |
-
"
|
| 2375 |
-
"
|
| 2376 |
-
|
| 2377 |
-
|
| 2378 |
-
|
| 2379 |
-
|
| 2380 |
-
|
| 2381 |
-
|
| 2382 |
-
|
| 2383 |
-
|
| 2384 |
-
|
| 2385 |
-
|
| 2386 |
-
msgstr "
|
| 2387 |
-
|
| 2388 |
-
|
| 2389 |
-
|
| 2390 |
-
|
| 2391 |
-
|
| 2392 |
-
|
| 2393 |
-
|
| 2394 |
-
|
| 2395 |
-
|
| 2396 |
-
|
| 2397 |
-
|
| 2398 |
-
|
| 2399 |
-
|
| 2400 |
-
|
| 2401 |
-
|
| 2402 |
-
|
| 2403 |
-
|
| 2404 |
-
|
| 2405 |
-
|
| 2406 |
-
|
| 2407 |
-
|
| 2408 |
-
|
| 2409 |
-
|
| 2410 |
-
"
|
| 2411 |
-
"
|
| 2412 |
-
|
| 2413 |
-
|
| 2414 |
-
"
|
| 2415 |
-
"
|
| 2416 |
-
|
| 2417 |
-
#: views/admin_tools_settings.php:
|
| 2418 |
-
msgid "Generate Registration Completion
|
| 2419 |
-
msgstr "\"Registrierung
|
| 2420 |
-
|
| 2421 |
-
#: views/admin_tools_settings.php:
|
| 2422 |
-
msgid "
|
| 2423 |
-
|
| 2424 |
-
|
| 2425 |
-
|
| 2426 |
-
|
| 2427 |
-
|
| 2428 |
-
|
| 2429 |
-
|
| 2430 |
-
|
| 2431 |
-
|
| 2432 |
-
|
| 2433 |
-
|
| 2434 |
-
|
| 2435 |
-
|
| 2436 |
-
|
| 2437 |
-
|
| 2438 |
-
|
| 2439 |
-
|
| 2440 |
-
|
| 2441 |
-
|
| 2442 |
-
|
| 2443 |
-
"
|
| 2444 |
-
"
|
| 2445 |
-
|
| 2446 |
-
|
| 2447 |
-
"
|
| 2448 |
-
|
| 2449 |
-
|
| 2450 |
-
|
| 2451 |
-
|
| 2452 |
-
|
| 2453 |
-
|
| 2454 |
-
#: views/admin_tools_settings.php:
|
| 2455 |
-
msgid "
|
| 2456 |
-
|
| 2457 |
-
"
|
| 2458 |
-
"
|
| 2459 |
-
|
| 2460 |
-
|
| 2461 |
-
|
| 2462 |
-
|
| 2463 |
-
|
| 2464 |
-
|
| 2465 |
-
|
| 2466 |
-
|
| 2467 |
-
|
| 2468 |
-
|
| 2469 |
-
|
| 2470 |
-
"
|
| 2471 |
-
"
|
| 2472 |
-
|
| 2473 |
-
#: views/admin_tools_settings.php:
|
| 2474 |
-
msgid "
|
| 2475 |
-
msgstr "
|
| 2476 |
-
|
| 2477 |
-
#: views/
|
| 2478 |
-
msgid "
|
| 2479 |
-
|
| 2480 |
-
|
| 2481 |
-
|
| 2482 |
-
|
| 2483 |
-
|
| 2484 |
-
|
| 2485 |
-
|
| 2486 |
-
|
| 2487 |
-
|
| 2488 |
-
|
| 2489 |
-
|
| 2490 |
-
|
| 2491 |
-
|
| 2492 |
-
|
| 2493 |
-
|
| 2494 |
-
|
| 2495 |
-
|
| 2496 |
-
|
| 2497 |
-
|
| 2498 |
-
|
| 2499 |
-
|
| 2500 |
-
|
| 2501 |
-
|
| 2502 |
-
|
| 2503 |
-
|
| 2504 |
-
|
| 2505 |
-
|
| 2506 |
-
|
| 2507 |
-
|
| 2508 |
-
|
| 2509 |
-
|
| 2510 |
-
|
| 2511 |
-
|
| 2512 |
-
|
| 2513 |
-
|
| 2514 |
-
|
| 2515 |
-
|
| 2516 |
-
|
| 2517 |
-
|
| 2518 |
-
|
| 2519 |
-
|
| 2520 |
-
"
|
| 2521 |
-
|
| 2522 |
-
#: views/
|
| 2523 |
-
msgid "
|
| 2524 |
-
msgstr "
|
| 2525 |
-
|
| 2526 |
-
#: views/
|
| 2527 |
-
msgid ""
|
| 2528 |
-
"
|
| 2529 |
-
|
| 2530 |
-
|
| 2531 |
-
"
|
| 2532 |
-
|
| 2533 |
-
|
| 2534 |
-
|
| 2535 |
-
|
| 2536 |
-
|
| 2537 |
-
|
| 2538 |
-
|
| 2539 |
-
|
| 2540 |
-
|
| 2541 |
-
|
| 2542 |
-
|
| 2543 |
-
|
| 2544 |
-
|
| 2545 |
-
|
| 2546 |
-
|
| 2547 |
-
|
| 2548 |
-
|
| 2549 |
-
|
| 2550 |
-
|
| 2551 |
-
|
| 2552 |
-
|
| 2553 |
-
|
| 2554 |
-
|
| 2555 |
-
|
| 2556 |
-
|
| 2557 |
-
|
| 2558 |
-
|
| 2559 |
-
|
| 2560 |
-
|
| 2561 |
-
|
| 2562 |
-
|
| 2563 |
-
|
| 2564 |
-
|
| 2565 |
-
|
| 2566 |
-
|
| 2567 |
-
|
| 2568 |
-
|
| 2569 |
-
|
| 2570 |
-
|
| 2571 |
-
"
|
| 2572 |
-
msgstr ""
|
| 2573 |
-
|
| 2574 |
-
|
| 2575 |
-
|
| 2576 |
-
|
| 2577 |
-
|
| 2578 |
-
|
| 2579 |
-
|
| 2580 |
-
|
| 2581 |
-
|
| 2582 |
-
|
| 2583 |
-
|
| 2584 |
-
|
| 2585 |
-
|
| 2586 |
-
"
|
| 2587 |
-
"
|
| 2588 |
-
|
| 2589 |
-
#: views/payments/admin_payment_settings.php:
|
| 2590 |
-
msgid "
|
| 2591 |
-
msgstr "
|
| 2592 |
-
|
| 2593 |
-
#: views/payments/admin_payment_settings.php:
|
| 2594 |
-
msgid "
|
| 2595 |
-
|
| 2596 |
-
|
| 2597 |
-
|
| 2598 |
-
|
| 2599 |
-
|
| 2600 |
-
|
| 2601 |
-
|
| 2602 |
-
|
| 2603 |
-
|
| 2604 |
-
|
| 2605 |
-
|
| 2606 |
-
|
| 2607 |
-
|
| 2608 |
-
|
| 2609 |
-
|
| 2610 |
-
#: views/payments/
|
| 2611 |
-
|
| 2612 |
-
|
| 2613 |
-
|
| 2614 |
-
#: views/payments/
|
| 2615 |
-
msgid "
|
| 2616 |
-
msgstr "
|
| 2617 |
-
|
| 2618 |
-
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:
|
| 2619 |
-
|
| 2620 |
-
|
| 2621 |
-
|
| 2622 |
-
#: views/payments/payment-gateway/
|
| 2623 |
-
#: views/payments/payment-gateway/
|
| 2624 |
-
#: views/payments/payment-gateway/
|
| 2625 |
-
#: views/payments/payment-gateway/
|
| 2626 |
-
#: views/payments/payment-gateway/
|
| 2627 |
-
|
| 2628 |
-
|
| 2629 |
-
|
| 2630 |
-
|
| 2631 |
-
#: views/payments/payment-gateway/
|
| 2632 |
-
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:
|
| 2633 |
-
#: views/payments/payment-gateway/
|
| 2634 |
-
#: views/payments/payment-gateway/
|
| 2635 |
-
#: views/payments/payment-gateway/
|
| 2636 |
-
|
| 2637 |
-
|
| 2638 |
-
|
| 2639 |
-
#: views/payments/payment-gateway/
|
| 2640 |
-
msgid ""
|
| 2641 |
-
"
|
| 2642 |
-
|
| 2643 |
-
|
| 2644 |
-
|
| 2645 |
-
|
| 2646 |
-
|
| 2647 |
-
#: views/payments/payment-gateway/
|
| 2648 |
-
|
| 2649 |
-
|
| 2650 |
-
|
| 2651 |
-
|
| 2652 |
-
|
| 2653 |
-
|
| 2654 |
-
|
| 2655 |
-
|
| 2656 |
-
|
| 2657 |
-
|
| 2658 |
-
|
| 2659 |
-
|
| 2660 |
-
|
| 2661 |
-
|
| 2662 |
-
|
| 2663 |
-
|
| 2664 |
-
#: views/payments/payment-gateway/
|
| 2665 |
-
|
| 2666 |
-
|
| 2667 |
-
|
| 2668 |
-
|
| 2669 |
-
|
| 2670 |
-
|
| 2671 |
-
|
| 2672 |
-
#: views/payments/payment-gateway/
|
| 2673 |
-
|
| 2674 |
-
|
| 2675 |
-
|
| 2676 |
-
#: views/payments/payment-gateway/
|
| 2677 |
-
#: views/payments/payment-gateway/
|
| 2678 |
-
|
| 2679 |
-
|
| 2680 |
-
|
| 2681 |
-
|
| 2682 |
-
#: views/payments/payment-gateway/
|
| 2683 |
-
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:
|
| 2684 |
-
#: views/payments/payment-gateway/
|
| 2685 |
-
#: views/payments/payment-gateway/
|
| 2686 |
-
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:
|
| 2687 |
-
#: views/payments/payment-gateway/
|
| 2688 |
-
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:
|
| 2689 |
-
#: views/payments/payment-gateway/
|
| 2690 |
-
|
| 2691 |
-
|
| 2692 |
-
|
| 2693 |
-
|
| 2694 |
-
#: views/payments/payment-gateway/
|
| 2695 |
-
|
| 2696 |
-
|
| 2697 |
-
|
| 2698 |
-
#: views/payments/payment-gateway/
|
| 2699 |
-
#: views/payments/payment-gateway/
|
| 2700 |
-
#: views/payments/payment-gateway/
|
| 2701 |
-
#: views/payments/payment-gateway/
|
| 2702 |
-
#: views/payments/payment-gateway/
|
| 2703 |
-
|
| 2704 |
-
|
| 2705 |
-
|
| 2706 |
-
|
| 2707 |
-
|
| 2708 |
-
|
| 2709 |
-
|
| 2710 |
-
|
| 2711 |
-
#: views/payments/payment-gateway/
|
| 2712 |
-
|
| 2713 |
-
|
| 2714 |
-
|
| 2715 |
-
#: views/payments/payment-gateway/
|
| 2716 |
-
#: views/payments/payment-gateway/
|
| 2717 |
-
#: views/payments/payment-gateway/
|
| 2718 |
-
|
| 2719 |
-
|
| 2720 |
-
|
| 2721 |
-
|
| 2722 |
-
|
| 2723 |
-
#: views/payments/payment-gateway/
|
| 2724 |
-
#: views/payments/payment-gateway/
|
| 2725 |
-
|
| 2726 |
-
|
| 2727 |
-
|
| 2728 |
-
|
| 2729 |
-
|
| 2730 |
-
#: views/payments/payment-gateway/
|
| 2731 |
-
|
| 2732 |
-
|
| 2733 |
-
|
| 2734 |
-
|
| 2735 |
-
|
| 2736 |
-
|
| 2737 |
-
|
| 2738 |
-
|
| 2739 |
-
|
| 2740 |
-
"
|
| 2741 |
-
|
| 2742 |
-
|
| 2743 |
-
|
| 2744 |
-
|
| 2745 |
-
|
| 2746 |
-
|
| 2747 |
-
|
| 2748 |
-
|
| 2749 |
-
|
| 2750 |
-
|
| 2751 |
-
|
| 2752 |
-
|
| 2753 |
-
|
| 2754 |
-
|
| 2755 |
-
|
| 2756 |
-
|
| 2757 |
-
|
| 2758 |
-
|
| 2759 |
-
|
| 2760 |
-
|
| 2761 |
-
|
| 2762 |
-
|
| 2763 |
-
|
| 2764 |
-
|
| 2765 |
-
|
| 2766 |
-
|
| 2767 |
-
|
| 2768 |
-
|
| 2769 |
-
|
| 2770 |
-
|
| 2771 |
-
|
| 2772 |
-
|
| 2773 |
-
|
| 2774 |
-
|
| 2775 |
-
|
| 2776 |
-
|
| 2777 |
-
|
| 2778 |
-
|
| 2779 |
-
|
| 2780 |
-
|
| 2781 |
-
|
| 2782 |
-
|
| 2783 |
-
|
| 2784 |
-
|
| 2785 |
-
|
| 2786 |
-
|
| 2787 |
-
|
| 2788 |
-
|
| 2789 |
-
|
| 2790 |
-
|
| 2791 |
-
|
| 2792 |
-
|
| 2793 |
-
|
| 2794 |
-
|
| 2795 |
-
|
| 2796 |
-
|
| 2797 |
-
|
| 2798 |
-
|
| 2799 |
-
|
| 2800 |
-
|
| 2801 |
-
|
| 2802 |
-
|
| 2803 |
-
|
| 2804 |
-
|
| 2805 |
-
|
| 2806 |
-
|
| 2807 |
-
|
| 2808 |
-
|
| 2809 |
-
|
| 2810 |
-
|
| 2811 |
-
|
| 2812 |
-
|
| 2813 |
-
|
| 2814 |
-
|
| 2815 |
-
|
| 2816 |
-
|
| 2817 |
-
|
| 2818 |
-
|
| 2819 |
-
|
| 2820 |
-
|
| 2821 |
-
|
| 2822 |
-
|
| 2823 |
-
|
| 2824 |
-
|
| 2825 |
-
|
| 2826 |
-
|
| 2827 |
-
|
| 2828 |
-
|
| 2829 |
-
|
| 2830 |
-
|
| 2831 |
-
|
| 2832 |
-
|
| 2833 |
-
|
| 2834 |
-
|
| 2835 |
-
|
| 2836 |
-
|
| 2837 |
-
|
| 2838 |
-
|
| 2839 |
-
|
| 2840 |
-
|
| 2841 |
-
|
| 2842 |
-
|
| 2843 |
-
|
| 2844 |
-
|
| 2845 |
-
|
| 2846 |
-
|
| 2847 |
-
|
| 2848 |
-
|
| 2849 |
-
|
| 2850 |
-
|
| 2851 |
-
|
| 2852 |
-
|
| 2853 |
-
|
| 2854 |
-
|
| 2855 |
-
|
| 2856 |
-
"
|
| 2857 |
-
|
| 2858 |
-
|
| 2859 |
-
|
| 2860 |
-
"
|
| 2861 |
-
|
| 2862 |
-
|
| 2863 |
-
|
| 2864 |
-
|
| 2865 |
-
|
| 2866 |
-
|
| 2867 |
-
#: views/payments/payment-gateway/
|
| 2868 |
-
msgid "
|
| 2869 |
-
|
| 2870 |
-
|
| 2871 |
-
|
| 2872 |
-
|
| 2873 |
-
|
| 2874 |
-
|
| 2875 |
-
|
| 2876 |
-
|
| 2877 |
-
|
| 2878 |
-
|
| 2879 |
-
|
| 2880 |
-
|
| 2881 |
-
|
| 2882 |
-
|
| 2883 |
-
|
| 2884 |
-
|
| 2885 |
-
|
| 2886 |
-
|
| 2887 |
-
|
| 2888 |
-
|
| 2889 |
-
|
| 2890 |
-
|
| 2891 |
-
|
| 2892 |
-
|
| 2893 |
-
|
| 2894 |
-
|
| 2895 |
-
|
| 2896 |
-
"
|
| 2897 |
-
"
|
| 2898 |
-
|
| 2899 |
-
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:
|
| 2900 |
-
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:
|
| 2901 |
-
msgid "
|
| 2902 |
-
msgstr "
|
| 2903 |
-
|
| 2904 |
-
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:
|
| 2905 |
-
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:
|
| 2906 |
-
msgid "
|
| 2907 |
-
|
| 2908 |
-
|
| 2909 |
-
|
| 2910 |
-
|
| 2911 |
-
|
| 2912 |
-
|
| 2913 |
-
|
| 2914 |
-
|
| 2915 |
-
|
| 2916 |
-
|
| 2917 |
-
|
| 2918 |
-
|
| 2919 |
-
|
| 2920 |
-
|
| 2921 |
-
|
| 2922 |
-
|
| 2923 |
-
|
| 2924 |
-
|
| 2925 |
-
|
| 2926 |
-
|
| 2927 |
-
|
| 2928 |
-
#: views/payments/payment-gateway/
|
| 2929 |
-
|
| 2930 |
-
|
| 2931 |
-
|
| 2932 |
-
|
| 2933 |
-
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:
|
| 2934 |
-
#: views/payments/payment-gateway/
|
| 2935 |
-
msgid "
|
| 2936 |
-
msgstr "
|
| 2937 |
-
|
| 2938 |
-
|
| 2939 |
-
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:
|
| 2940 |
-
#: views/payments/payment-gateway/
|
| 2941 |
-
|
| 2942 |
-
|
| 2943 |
-
|
| 2944 |
-
|
| 2945 |
-
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:
|
| 2946 |
-
#: views/payments/payment-gateway/
|
| 2947 |
-
|
| 2948 |
-
|
| 2949 |
-
|
| 2950 |
-
|
| 2951 |
-
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:
|
| 2952 |
-
#: views/payments/payment-gateway/
|
| 2953 |
-
|
| 2954 |
-
|
| 2955 |
-
|
| 2956 |
-
|
| 2957 |
-
|
| 2958 |
-
|
| 2959 |
-
|
| 2960 |
-
|
| 2961 |
-
|
| 2962 |
-
|
| 2963 |
-
|
| 2964 |
-
#: views/payments/payment-gateway/
|
| 2965 |
-
|
| 2966 |
-
|
| 2967 |
-
|
| 2968 |
-
|
| 2969 |
-
|
| 2970 |
-
|
| 2971 |
-
|
| 2972 |
-
|
| 2973 |
-
#: views/payments/payment-gateway/
|
| 2974 |
-
|
| 2975 |
-
|
| 2976 |
-
|
| 2977 |
-
#: views/payments/payment-gateway/
|
| 2978 |
-
msgid "
|
| 2979 |
-
msgstr "
|
| 2980 |
-
|
| 2981 |
-
#: views/payments/payment-gateway/
|
| 2982 |
-
|
| 2983 |
-
|
| 2984 |
-
|
| 2985 |
-
|
| 2986 |
-
#: views/payments/payment-gateway/
|
| 2987 |
-
|
| 2988 |
-
|
| 2989 |
-
|
| 2990 |
-
#: views/payments/payment-gateway/
|
| 2991 |
-
msgid "
|
| 2992 |
-
msgstr "
|
| 2993 |
-
|
| 2994 |
-
#:
|
| 2995 |
-
|
| 2996 |
-
|
| 2997 |
-
|
| 2998 |
-
|
| 2999 |
-
|
| 3000 |
-
|
| 3001 |
-
|
| 3002 |
-
|
| 3003 |
-
|
| 3004 |
-
msgid "
|
| 3005 |
-
msgstr "
|
| 3006 |
-
|
| 3007 |
-
|
| 3008 |
-
|
| 3009 |
-
|
| 3010 |
-
|
| 3011 |
-
|
| 3012 |
-
|
| 3013 |
-
|
| 3014 |
-
|
| 3015 |
-
|
| 3016 |
-
|
| 3017 |
-
|
| 3018 |
-
|
| 3019 |
-
|
| 3020 |
-
|
| 3021 |
-
|
| 3022 |
-
|
| 3023 |
-
|
| 3024 |
-
|
| 3025 |
-
|
| 3026 |
-
"
|
| 3027 |
-
"
|
| 3028 |
-
|
| 3029 |
-
"
|
| 3030 |
-
"
|
| 3031 |
-
|
| 3032 |
-
msgid "
|
| 3033 |
-
msgstr "
|
| 3034 |
-
|
| 3035 |
-
msgid ""
|
| 3036 |
-
|
| 3037 |
-
|
| 3038 |
-
|
| 3039 |
-
|
| 3040 |
-
|
| 3041 |
-
msgstr "
|
| 3042 |
-
|
| 3043 |
-
|
| 3044 |
-
|
| 3045 |
-
|
| 3046 |
-
|
| 3047 |
-
|
| 3048 |
-
|
| 3049 |
-
|
| 3050 |
-
|
| 3051 |
-
|
| 3052 |
-
|
| 3053 |
-
msgid "
|
| 3054 |
-
msgstr "
|
| 3055 |
-
|
| 3056 |
-
msgid "
|
| 3057 |
-
msgstr "
|
| 3058 |
-
|
| 3059 |
-
|
| 3060 |
-
|
| 3061 |
-
|
| 3062 |
-
|
| 3063 |
-
|
| 3064 |
-
|
| 3065 |
-
|
| 3066 |
-
|
| 3067 |
-
|
| 3068 |
-
|
| 3069 |
-
|
| 3070 |
-
|
| 3071 |
-
|
| 3072 |
-
msgid "
|
| 3073 |
-
msgstr "
|
| 3074 |
-
|
| 3075 |
-
|
| 3076 |
-
|
| 3077 |
-
|
| 3078 |
-
|
| 3079 |
-
|
| 3080 |
-
|
| 3081 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Simple Membership\n"
|
| 4 |
+
"Report-Msgid-Bugs-To: \n"
|
| 5 |
+
"POT-Creation-Date: 2019-08-18 09:41+0000\n"
|
| 6 |
+
"PO-Revision-Date: 2019-08-18 11:47+0200\n"
|
| 7 |
+
"Last-Translator: Geo_Writer <information@geoplan-systems.de>\n"
|
| 8 |
+
"Language-Team: Deutsch\n"
|
| 9 |
+
"Language: de_DE\n"
|
| 10 |
+
"MIME-Version: 1.0\n"
|
| 11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 13 |
+
"X-Generator: Poedit 2.2.3\n"
|
| 14 |
+
"X-Poedit-KeywordsList: __;_e;e\n"
|
| 15 |
+
"X-Poedit-Basepath: ..\n"
|
| 16 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 17 |
+
"X-Loco-Version: 2.2.2; wp-5.2.1\n"
|
| 18 |
+
"X-Poedit-SearchPath-0: Übersetzungen 01 2019\n"
|
| 19 |
+
"X-Poedit-SearchPath-1: simple-membership\n"
|
| 20 |
+
|
| 21 |
+
#: classes/class.simple-wp-membership.php:180
|
| 22 |
+
msgid "The admin of this site does not allow users to access the wp dashboard."
|
| 23 |
+
msgstr "Es ist Mitgliedern nicht erlaubt, auf das WP-Dashboard zuzugreifen."
|
| 24 |
+
|
| 25 |
+
#: classes/class.simple-wp-membership.php:181
|
| 26 |
+
msgid "Go back to the home page by "
|
| 27 |
+
msgstr "Gehe zurück zur Startseite "
|
| 28 |
+
|
| 29 |
+
#: classes/class.simple-wp-membership.php:181
|
| 30 |
+
msgid "clicking here"
|
| 31 |
+
msgstr "hier klicken"
|
| 32 |
+
|
| 33 |
+
#: classes/class.simple-wp-membership.php:242
|
| 34 |
+
msgid ""
|
| 35 |
+
"Error! This site has the force WP user login feature enabled in the "
|
| 36 |
+
"settings. We could not find a WP user record for the given username: "
|
| 37 |
+
msgstr ""
|
| 38 |
+
"Fehler! Diese Seite hat in den Einstellungen \"Synchronisation mit den WP "
|
| 39 |
+
"Benutzereinträgen erzwingen\" aktiviert. Wir konnten keinen WP Benutzer-"
|
| 40 |
+
"Eintrag für den eingegebenen Benutzernamen finden: "
|
| 41 |
+
|
| 42 |
+
#: classes/class.simple-wp-membership.php:243
|
| 43 |
+
msgid ""
|
| 44 |
+
"This error is triggered when a member account doesn't have a corresponding "
|
| 45 |
+
"WP user account. So the plugin fails to log the user into the WP User system."
|
| 46 |
+
msgstr ""
|
| 47 |
+
"Dieser Fehler tritt auf, wenn zu einem Mitglieds-Konto kein "
|
| 48 |
+
"korrespondierender WP User Account existiert. Dann kann das Plugin den "
|
| 49 |
+
"Benutzer nicht in das WP User System einloggen."
|
| 50 |
+
|
| 51 |
+
#: classes/class.simple-wp-membership.php:244
|
| 52 |
+
msgid ""
|
| 53 |
+
"Contact the site admin and request them to check your username in the WP "
|
| 54 |
+
"Users menu to see what happened with the WP user entry of your account."
|
| 55 |
+
msgstr ""
|
| 56 |
+
"Kontaktieren Sie den Website-Administrator und fordern sie ihn auf, Ihren "
|
| 57 |
+
"Benutzernamen zu prüfen, um zu sehen, was mit dem Benutzer-Eintrag Ihres "
|
| 58 |
+
"Accounts passiert ist."
|
| 59 |
+
|
| 60 |
+
#: classes/class.simple-wp-membership.php:245
|
| 61 |
+
msgid ""
|
| 62 |
+
"The site admin can disable the Force WP User Synchronization feature in the "
|
| 63 |
+
"settings to disable this feature and this error will go away."
|
| 64 |
+
msgstr ""
|
| 65 |
+
"Der Admin kann die erzwungene WP User Synchronisation in den Einstellungen "
|
| 66 |
+
"deaktivieren und dadurch diesen Fehler beheben."
|
| 67 |
+
|
| 68 |
+
#: classes/class.simple-wp-membership.php:246
|
| 69 |
+
msgid "You can use the back button of your browser to go back to the site."
|
| 70 |
+
msgstr ""
|
| 71 |
+
"Sie können mit Klick auf den \"zurück\" button in Ihrem Browser zu der Seite "
|
| 72 |
+
"zurückkehren."
|
| 73 |
+
|
| 74 |
+
#: classes/class.simple-wp-membership.php:407
|
| 75 |
+
msgid "You are not logged in."
|
| 76 |
+
msgstr "Sie sind nicht eingeloggt."
|
| 77 |
+
|
| 78 |
+
#: classes/class.simple-wp-membership.php:458
|
| 79 |
+
msgid ""
|
| 80 |
+
"You have the sandbox payment mode enabled in plugin settings. Make sure to "
|
| 81 |
+
"turn off the sandbox mode when you want to do live transactions."
|
| 82 |
+
msgstr ""
|
| 83 |
+
"Sie haben in den Einstellungen des Plugins die Testumgebung für die "
|
| 84 |
+
"Zahlungsvorgänge aktiviert. Bitte stellen Sie sicher, dass Sie die "
|
| 85 |
+
"Testumgebung deaktivieren, wenn Sie Zahlungen vornehmen wollen."
|
| 86 |
+
|
| 87 |
+
#: classes/class.simple-wp-membership.php:473
|
| 88 |
+
msgid "Simple WP Membership Protection"
|
| 89 |
+
msgstr "Simple WP Membership Schutz"
|
| 90 |
+
|
| 91 |
+
#: classes/class.simple-wp-membership.php:485
|
| 92 |
+
msgid "Simple Membership Protection options"
|
| 93 |
+
msgstr "Schutz-Einstellungen für Simple Membership"
|
| 94 |
+
|
| 95 |
+
#: classes/class.simple-wp-membership.php:503
|
| 96 |
+
msgid "Do you want to protect this content?"
|
| 97 |
+
msgstr "Möchten Sie diesen Inhalt schützen?"
|
| 98 |
+
|
| 99 |
+
#: classes/class.simple-wp-membership.php:504
|
| 100 |
+
msgid "No, Do not protect this content."
|
| 101 |
+
msgstr "Nein, diesen Inhalt nicht schützen."
|
| 102 |
+
|
| 103 |
+
#: classes/class.simple-wp-membership.php:505
|
| 104 |
+
msgid "Yes, Protect this content."
|
| 105 |
+
msgstr "Ja, diesen Inhalt schützen."
|
| 106 |
+
|
| 107 |
+
#: classes/class.simple-wp-membership.php:508
|
| 108 |
+
msgid "Select the membership level that can access this content:"
|
| 109 |
+
msgstr ""
|
| 110 |
+
"Wählen Sie die Mitgliedschaftsstufe aus, die auf diesen Inhalt zugreifen "
|
| 111 |
+
"kann:"
|
| 112 |
+
|
| 113 |
+
#: classes/class.simple-wp-membership.php:646
|
| 114 |
+
#: classes/class.simple-wp-membership.php:650
|
| 115 |
+
msgid "Validating, please wait"
|
| 116 |
+
msgstr "Überprüfung, bitte warten"
|
| 117 |
+
|
| 118 |
+
#: classes/class.simple-wp-membership.php:653
|
| 119 |
+
msgid "Invalid email address"
|
| 120 |
+
msgstr "Ungültige E-Mail-Adresse"
|
| 121 |
+
|
| 122 |
+
#: classes/class.simple-wp-membership.php:656
|
| 123 |
+
msgid "This field is required"
|
| 124 |
+
msgstr "Dieses Feld ist erforderlich"
|
| 125 |
+
|
| 126 |
+
msgid "Password must contain at least:"
|
| 127 |
+
msgstr "Das Kennwort muss mindestens Folgendes enthalten:"
|
| 128 |
+
|
| 129 |
+
msgid "- a digit"
|
| 130 |
+
msgstr "- eine Ziffer"
|
| 131 |
+
|
| 132 |
+
msgid "- an uppercase letter"
|
| 133 |
+
msgstr "- einen Großbuchstaben"
|
| 134 |
+
|
| 135 |
+
msgid "- a lowercase letter"
|
| 136 |
+
msgstr "- einen Kleinbuchstaben"
|
| 137 |
+
|
| 138 |
+
#: classes/class.simple-wp-membership.php:659 classes/class.swpm-auth.php:296
|
| 139 |
+
msgid "Invalid Username"
|
| 140 |
+
msgstr "Ungültiger Benutzername"
|
| 141 |
+
|
| 142 |
+
#: classes/class.simple-wp-membership.php:659
|
| 143 |
+
msgid "Usernames can only contain: letters, numbers and .-_*@"
|
| 144 |
+
msgstr "Benutzername kann nur enthalten: Buchstaben, Ziffern und .-_*@"
|
| 145 |
+
|
| 146 |
+
#: classes/class.simple-wp-membership.php:662
|
| 147 |
+
msgid "Minimum "
|
| 148 |
+
msgstr "Minimum "
|
| 149 |
+
|
| 150 |
+
#: classes/class.simple-wp-membership.php:663
|
| 151 |
+
msgid " characters required"
|
| 152 |
+
msgstr " Zeichen erforderlich"
|
| 153 |
+
|
| 154 |
+
#: classes/class.simple-wp-membership.php:666
|
| 155 |
+
msgid "Apostrophe character is not allowed"
|
| 156 |
+
msgstr "Apostroph ist nicht zulässig"
|
| 157 |
+
|
| 158 |
+
#: classes/class.simple-wp-membership.php:697
|
| 159 |
+
msgid "WP Membership"
|
| 160 |
+
msgstr "WP Mitgliedschaft"
|
| 161 |
+
|
| 162 |
+
#: classes/class.simple-wp-membership.php:698 classes/class.swpm-members.php:11
|
| 163 |
+
#: classes/class.swpm-members.php:581
|
| 164 |
+
msgid "Members"
|
| 165 |
+
msgstr "Mitglieder"
|
| 166 |
+
|
| 167 |
+
#: classes/class.simple-wp-membership.php:699
|
| 168 |
+
#: classes/class.swpm-category-list.php:20
|
| 169 |
+
#: classes/class.swpm-membership-levels.php:12
|
| 170 |
+
#: classes/class.swpm-membership-levels.php:265
|
| 171 |
+
#: classes/class.swpm-post-list.php:21
|
| 172 |
+
msgid "Membership Levels"
|
| 173 |
+
msgstr "Mitgliedschaftsstufen"
|
| 174 |
+
|
| 175 |
+
#: classes/class.simple-wp-membership.php:700
|
| 176 |
+
msgid "Settings"
|
| 177 |
+
msgstr "Einstellungen"
|
| 178 |
+
|
| 179 |
+
#: classes/class.simple-wp-membership.php:701
|
| 180 |
+
msgid "Payments"
|
| 181 |
+
msgstr "Zahlungen"
|
| 182 |
+
|
| 183 |
+
#: classes/class.simple-wp-membership.php:702
|
| 184 |
+
msgid "Add-ons"
|
| 185 |
+
msgstr "Add-ons"
|
| 186 |
+
|
| 187 |
+
#: classes/class.swpm-access-control.php:47
|
| 188 |
+
#: classes/class.swpm-access-control.php:120
|
| 189 |
+
msgid "You need to login to view this content. "
|
| 190 |
+
msgstr "Sie müssen sich anmelden, um diesen Inhalt ansehen zu können. "
|
| 191 |
+
|
| 192 |
+
#: classes/class.swpm-access-control.php:56
|
| 193 |
+
#: classes/class.swpm-access-control.php:128
|
| 194 |
+
#: classes/class.swpm-access-control.php:212
|
| 195 |
+
msgid "Your account has expired. "
|
| 196 |
+
msgstr "Mitgliedschaft abgelaufen. "
|
| 197 |
+
|
| 198 |
+
#: classes/class.swpm-access-control.php:66
|
| 199 |
+
#: classes/class.swpm-access-control.php:138
|
| 200 |
+
msgid "This content can only be viewed by members who joined on or before "
|
| 201 |
+
msgstr ""
|
| 202 |
+
"Dieser Inhalt kann nur von Mitgliedern angesehen werden, die sich "
|
| 203 |
+
"registriert haben an oder vor "
|
| 204 |
+
|
| 205 |
+
#: classes/class.swpm-access-control.php:79
|
| 206 |
+
#: classes/class.swpm-access-control.php:148
|
| 207 |
+
msgid "This content is not permitted for your membership level."
|
| 208 |
+
msgstr "Dieser Inhalt ist für Ihre Mitgliedschaftsstufe nicht freigeschaltet."
|
| 209 |
+
|
| 210 |
+
#: classes/class.swpm-access-control.php:204
|
| 211 |
+
msgid "You need to login to view the rest of the content. "
|
| 212 |
+
msgstr ""
|
| 213 |
+
"Sie müssen sich anmelden um den restlichen Inhalt angezeigt zu bekommen. "
|
| 214 |
+
|
| 215 |
+
#: classes/class.swpm-access-control.php:217
|
| 216 |
+
msgid " The rest of the content is not permitted for your membership level."
|
| 217 |
+
msgstr ""
|
| 218 |
+
" Der Rest des Inhalts ist für Ihre Mitgliedschaftsstufe nicht freigeschaltet."
|
| 219 |
+
|
| 220 |
+
#: classes/class.swpm-admin-registration.php:25
|
| 221 |
+
msgid "Error! Nonce verification failed for user registration from admin end."
|
| 222 |
+
msgstr ""
|
| 223 |
+
"Fehler! Nonce-Überprüfung für Benutzerregistrierung durch den Admin "
|
| 224 |
+
"fehlgeschlagen."
|
| 225 |
+
|
| 226 |
+
#: classes/class.swpm-admin-registration.php:71
|
| 227 |
+
msgid "Member record added successfully."
|
| 228 |
+
msgstr "Der Eintrag für das Mitglied wurde erfolgreich hinzugefügt."
|
| 229 |
+
|
| 230 |
+
#: classes/class.swpm-admin-registration.php:76
|
| 231 |
+
#: classes/class.swpm-admin-registration.php:124
|
| 232 |
+
#: classes/class.swpm-admin-registration.php:151
|
| 233 |
+
#: classes/class.swpm-membership-level.php:73
|
| 234 |
+
#: classes/class.swpm-membership-level.php:105
|
| 235 |
+
msgid "Please correct the following:"
|
| 236 |
+
msgstr "Bitte korrigieren Sie folgendes:"
|
| 237 |
+
|
| 238 |
+
#: classes/class.swpm-admin-registration.php:87
|
| 239 |
+
msgid "Error! Nonce verification failed for user edit from admin end."
|
| 240 |
+
msgstr ""
|
| 241 |
+
"Fehler! Nonce-Überprüfung für die Bearbeitung der Benutzerdaten durch den "
|
| 242 |
+
"Admin fehlgeschlagen."
|
| 243 |
+
|
| 244 |
+
#: classes/class.swpm-admin-registration.php:139
|
| 245 |
+
msgid "Your current password"
|
| 246 |
+
msgstr "Ihr aktuelles Passwort"
|
| 247 |
+
|
| 248 |
+
#: classes/class.swpm-ajax.php:14
|
| 249 |
+
msgid "Invalid Email Address"
|
| 250 |
+
msgstr "Ungültige E-Mail Adresse"
|
| 251 |
+
|
| 252 |
+
#: classes/class.swpm-ajax.php:21 classes/class.swpm-ajax.php:36
|
| 253 |
+
msgid "Aready taken"
|
| 254 |
+
msgstr "Wird schon verwendet"
|
| 255 |
+
|
| 256 |
+
#: classes/class.swpm-ajax.php:30
|
| 257 |
+
msgid "Name contains invalid character"
|
| 258 |
+
msgstr "Name enthält ungültiges Zeichen"
|
| 259 |
+
|
| 260 |
+
#: classes/class.swpm-ajax.php:37
|
| 261 |
+
msgid "Available"
|
| 262 |
+
msgstr "Verfügbar"
|
| 263 |
+
|
| 264 |
+
#: classes/class.swpm-auth.php:57
|
| 265 |
+
msgid ""
|
| 266 |
+
"Warning! Simple Membership plugin cannot process this login request to "
|
| 267 |
+
"prevent you from getting logged out of WP Admin accidentally."
|
| 268 |
+
msgstr ""
|
| 269 |
+
"Warnung! Simple Membership Plugin kann dieses Login nicht durchführen, um zu "
|
| 270 |
+
"verhindern, dass Sie versehentlich als WP Admin ausgeloggt werden."
|
| 271 |
+
|
| 272 |
+
#: classes/class.swpm-auth.php:58
|
| 273 |
+
msgid "Click here"
|
| 274 |
+
msgstr "Hier klicken"
|
| 275 |
+
|
| 276 |
+
#: classes/class.swpm-auth.php:58
|
| 277 |
+
msgid " to see the profile you are currently logged into in this browser."
|
| 278 |
+
msgstr ""
|
| 279 |
+
" um das Profil zu sehen, mit dem Sie in diesem Browser eingeloggt sind."
|
| 280 |
+
|
| 281 |
+
#: classes/class.swpm-auth.php:59
|
| 282 |
+
msgid ""
|
| 283 |
+
"You are logged into the site as an ADMIN user in this browser. First, logout "
|
| 284 |
+
"from WP Admin then you will be able to log in as a normal member."
|
| 285 |
+
msgstr ""
|
| 286 |
+
"Sie sind auf dieser Seite mit diesem Browser als ADMIN eingeloggt. Loggen "
|
| 287 |
+
"Sie sich zuerst als Admin aus, dann können Sie sich als Mitglied einloggen."
|
| 288 |
+
|
| 289 |
+
#: classes/class.swpm-auth.php:60
|
| 290 |
+
msgid ""
|
| 291 |
+
"Alternatively, you can use a different browser (where you are not logged-in "
|
| 292 |
+
"as ADMIN) to test the membership login."
|
| 293 |
+
msgstr ""
|
| 294 |
+
"Alternativ können Sie einen anderen Browser verwenden (in welchem Sie nicht "
|
| 295 |
+
"als Admin eingeloggt sind), um das Login-Interface zu testen."
|
| 296 |
+
|
| 297 |
+
#: classes/class.swpm-auth.php:61
|
| 298 |
+
msgid ""
|
| 299 |
+
"Your normal visitors or members will never see this message. This message is "
|
| 300 |
+
"ONLY for ADMIN user."
|
| 301 |
+
msgstr ""
|
| 302 |
+
"Ihre Besucher und Mitglieder werden diese Nachricht niemals sehen können. "
|
| 303 |
+
"Diese Meldung ist AUSSCHLIESSLICH für ADMIN."
|
| 304 |
+
|
| 305 |
+
#: classes/class.swpm-auth.php:68
|
| 306 |
+
msgid "Captcha validation failed on login form."
|
| 307 |
+
msgstr "Captcha-Validierung fehlgeschlagen."
|
| 308 |
+
|
| 309 |
+
#: classes/class.swpm-auth.php:93
|
| 310 |
+
msgid "User Not Found."
|
| 311 |
+
msgstr "Benutzer nicht gefunden."
|
| 312 |
+
|
| 313 |
+
#: classes/class.swpm-auth.php:100
|
| 314 |
+
msgid "Password Empty or Invalid."
|
| 315 |
+
msgstr "Passwort leer oder ungültig."
|
| 316 |
+
|
| 317 |
+
#: classes/class.swpm-auth.php:133
|
| 318 |
+
msgid "Account is inactive."
|
| 319 |
+
msgstr "Ihr Konto ist inaktiv."
|
| 320 |
+
|
| 321 |
+
#: classes/class.swpm-auth.php:136 classes/class.swpm-auth.php:162
|
| 322 |
+
msgid "Account has expired."
|
| 323 |
+
msgstr "Mitgliedschaft abgelaufen."
|
| 324 |
+
|
| 325 |
+
#: classes/class.swpm-auth.php:139
|
| 326 |
+
msgid "Account is pending."
|
| 327 |
+
msgstr "Ihr Konto ist inaktiv."
|
| 328 |
+
|
| 329 |
+
#: classes/class.swpm-auth.php:146
|
| 330 |
+
#, php-format
|
| 331 |
+
msgid ""
|
| 332 |
+
"You need to activate your account. If you didn't receive an email then %s to "
|
| 333 |
+
"resend the activation email."
|
| 334 |
+
msgstr ""
|
| 335 |
+
"Sie müssen Ihr Konto aktivieren. Falls Sie keine Email erhalten haben, dann "
|
| 336 |
+
"%s um die Aktivierungs-Email nochmal zu senden."
|
| 337 |
+
|
| 338 |
+
#: classes/class.swpm-auth.php:146
|
| 339 |
+
#: classes/class.swpm-front-registration.php:376
|
| 340 |
+
#: classes/class.swpm-front-registration.php:426
|
| 341 |
+
#: classes/class.swpm-utils-misc.php:169
|
| 342 |
+
msgid "click here"
|
| 343 |
+
msgstr "hier klicken"
|
| 344 |
+
|
| 345 |
+
#: classes/class.swpm-auth.php:170
|
| 346 |
+
msgid "You are logged in as:"
|
| 347 |
+
msgstr "Sie sind eingeloggt als:"
|
| 348 |
+
|
| 349 |
+
#: classes/class.swpm-auth.php:234
|
| 350 |
+
msgid "Logged Out Successfully."
|
| 351 |
+
msgstr "Abmeldung war erfolgreich."
|
| 352 |
+
|
| 353 |
+
#: classes/class.swpm-auth.php:287
|
| 354 |
+
msgid "Session Expired."
|
| 355 |
+
msgstr "Sitzung ist abgelaufen."
|
| 356 |
+
|
| 357 |
+
#: classes/class.swpm-auth.php:304
|
| 358 |
+
msgid "Please login again."
|
| 359 |
+
msgstr "Bitte loggen Sie sich erneut ein."
|
| 360 |
+
|
| 361 |
+
#: classes/class.swpm-category-list.php:19 classes/class.swpm-members.php:24
|
| 362 |
+
#: classes/class.swpm-membership-levels.php:11
|
| 363 |
+
#: classes/class.swpm-membership-levels.php:21
|
| 364 |
+
#: classes/class.swpm-post-list.php:20
|
| 365 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:85
|
| 366 |
+
#: views/add.php:40 views/admin_member_form_common_part.php:2 views/edit.php:75
|
| 367 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:50
|
| 368 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:34
|
| 369 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:229
|
| 370 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:49
|
| 371 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:35
|
| 372 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:317
|
| 373 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:47
|
| 374 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:273
|
| 375 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:99
|
| 376 |
+
msgid "Membership Level"
|
| 377 |
+
msgstr "Mitgliedschaftsstufe"
|
| 378 |
+
|
| 379 |
+
#: classes/class.swpm-category-list.php:33
|
| 380 |
+
msgid "Category ID"
|
| 381 |
+
msgstr "Kategorie ID"
|
| 382 |
+
|
| 383 |
+
#: classes/class.swpm-category-list.php:34
|
| 384 |
+
msgid "Category Name"
|
| 385 |
+
msgstr "Kategorie Name"
|
| 386 |
+
|
| 387 |
+
#: classes/class.swpm-category-list.php:35
|
| 388 |
+
msgid "Category Type (Taxonomy)"
|
| 389 |
+
msgstr "Kategorie Typ (Taxonomy)"
|
| 390 |
+
|
| 391 |
+
#: classes/class.swpm-category-list.php:36
|
| 392 |
+
msgid "Description"
|
| 393 |
+
msgstr "Beschreibung"
|
| 394 |
+
|
| 395 |
+
#: classes/class.swpm-category-list.php:37
|
| 396 |
+
msgid "Count"
|
| 397 |
+
msgstr "Anzahl"
|
| 398 |
+
|
| 399 |
+
#: classes/class.swpm-category-list.php:92
|
| 400 |
+
msgid "Category protection updated!"
|
| 401 |
+
msgstr "Kategorie Schutz aktualisiert!"
|
| 402 |
+
|
| 403 |
+
#: classes/class.swpm-category-list.php:130
|
| 404 |
+
msgid "No category found."
|
| 405 |
+
msgstr "Kategorie wurde nicht gefunden."
|
| 406 |
+
|
| 407 |
+
#: classes/class.swpm-comment-form-related.php:15
|
| 408 |
+
msgid "Please login to comment."
|
| 409 |
+
msgstr ""
|
| 410 |
+
"Bitte loggen Sie sich ein, damit Sie einen Kommentar hinterlassen können."
|
| 411 |
+
|
| 412 |
+
#: classes/class.swpm-comment-form-related.php:40
|
| 413 |
+
msgid "Please Login to Comment."
|
| 414 |
+
msgstr ""
|
| 415 |
+
"Bitte loggen Sie sich ein, damit Sie einen Kommentar hinterlassen können."
|
| 416 |
+
|
| 417 |
+
#: classes/class.swpm-comment-form-related.php:79
|
| 418 |
+
msgid "Comments not allowed by a non-member."
|
| 419 |
+
msgstr "Nicht-Mitglieder können keinen Kommentar hinterlassen."
|
| 420 |
+
|
| 421 |
+
#: classes/class.swpm-form.php:30
|
| 422 |
+
msgid ""
|
| 423 |
+
"Wordpress account exists with given username. But given email doesn't match."
|
| 424 |
+
msgstr ""
|
| 425 |
+
"Es existiert bereits ein Account mit den angegebenen Benutzernamen. Die E-"
|
| 426 |
+
"Mail Adresse passt aber nicht zum Benutzernamen."
|
| 427 |
+
|
| 428 |
+
#: classes/class.swpm-form.php:31
|
| 429 |
+
msgid ""
|
| 430 |
+
" Use a different username to complete the registration. If you want to use "
|
| 431 |
+
"that username then you must enter the correct email address associated with "
|
| 432 |
+
"the existing WP user to connect with that account."
|
| 433 |
+
msgstr ""
|
| 434 |
+
" Verwenden Sie einen anderen Benutzernamen, um die Registrierung "
|
| 435 |
+
"abzuschließen. Wenn Sie diesen Benutzernamen verwenden möchten, geben Sie "
|
| 436 |
+
"die korrekte e-Mail-Adresse, die verbunden ist mit dem bestehenden WP-"
|
| 437 |
+
"Benutzer, um sich mit diesem Konto zu verbinden."
|
| 438 |
+
|
| 439 |
+
#: classes/class.swpm-form.php:37
|
| 440 |
+
msgid ""
|
| 441 |
+
"Wordpress account exists with given email. But given username doesn't match."
|
| 442 |
+
msgstr ""
|
| 443 |
+
"Es existiert bereits ein WP Account mit der angegebenen E-Mail Adresse. Der "
|
| 444 |
+
"Benutzername passt aber nicht zur E-Mail Adresse."
|
| 445 |
+
|
| 446 |
+
#: classes/class.swpm-form.php:38
|
| 447 |
+
msgid ""
|
| 448 |
+
" Use a different email address to complete the registration. If you want to "
|
| 449 |
+
"use that email then you must enter the correct username associated with the "
|
| 450 |
+
"existing WP user to connect with that account."
|
| 451 |
+
msgstr ""
|
| 452 |
+
" Verwenden Sie eine andere E-Mail Adresse um Ihre Registrierung "
|
| 453 |
+
"abzuschließen. Wenn Sie diese E-Mail Adresse verwenden wollen, müssen Sie "
|
| 454 |
+
"den richtigen Benutzernamen des bestehenden WP Benutzereintrags eingeben, um "
|
| 455 |
+
"sich mit diesem Account zu verbinden."
|
| 456 |
+
|
| 457 |
+
#: classes/class.swpm-form.php:48
|
| 458 |
+
msgid "Username is required"
|
| 459 |
+
msgstr "Der Mitgliedername ist erforderlich"
|
| 460 |
+
|
| 461 |
+
#: classes/class.swpm-form.php:52
|
| 462 |
+
msgid "Username contains invalid character"
|
| 463 |
+
msgstr "Der Benutzername enthält ungültige Zeichen"
|
| 464 |
+
|
| 465 |
+
#: classes/class.swpm-form.php:60
|
| 466 |
+
msgid "Username already exists."
|
| 467 |
+
msgstr "Ihr Benutzername existiert bereits."
|
| 468 |
+
|
| 469 |
+
#: classes/class.swpm-form.php:83
|
| 470 |
+
msgid "Password is required"
|
| 471 |
+
msgstr "Passwort erforderlich"
|
| 472 |
+
|
| 473 |
+
#: classes/class.swpm-form.php:90
|
| 474 |
+
msgid "Password mismatch"
|
| 475 |
+
msgstr "Die Passwörter stimmen nicht überein"
|
| 476 |
+
|
| 477 |
+
#: classes/class.swpm-form.php:101
|
| 478 |
+
msgid "Email is required"
|
| 479 |
+
msgstr "E-Mail Adresse wird benötigt"
|
| 480 |
+
|
| 481 |
+
#: classes/class.swpm-form.php:105
|
| 482 |
+
msgid "Email is invalid"
|
| 483 |
+
msgstr "E-Mail Adresse ist ungültig"
|
| 484 |
+
|
| 485 |
+
#: classes/class.swpm-form.php:121
|
| 486 |
+
msgid "Email is already used."
|
| 487 |
+
msgstr "Ihre E-Mail Adresse existiert bereits."
|
| 488 |
+
|
| 489 |
+
#: classes/class.swpm-form.php:179
|
| 490 |
+
msgid "Member since field is invalid"
|
| 491 |
+
msgstr "\"Mitglied seit\" Feld ist inkorrekt"
|
| 492 |
+
|
| 493 |
+
#: classes/class.swpm-form.php:190
|
| 494 |
+
msgid "Access starts field is invalid"
|
| 495 |
+
msgstr "Ungültiger Wert für den Beginn des Zugangs"
|
| 496 |
+
|
| 497 |
+
#: classes/class.swpm-form.php:200
|
| 498 |
+
msgid "Gender field is invalid"
|
| 499 |
+
msgstr "Feld \"Geschlecht\" ist inkorrekt"
|
| 500 |
+
|
| 501 |
+
#: classes/class.swpm-form.php:211
|
| 502 |
+
msgid "Account state field is invalid"
|
| 503 |
+
msgstr "Kontostatusfeld ist ungültig"
|
| 504 |
+
|
| 505 |
+
#: classes/class.swpm-form.php:218
|
| 506 |
+
msgid "Invalid membership level"
|
| 507 |
+
msgstr "Ungültige Mitgliedschaftsstufe"
|
| 508 |
+
|
| 509 |
+
#: classes/class.swpm-front-registration.php:33
|
| 510 |
+
msgid ""
|
| 511 |
+
"Error! Invalid Request. Could not find a match for the given security code "
|
| 512 |
+
"and the user ID."
|
| 513 |
+
msgstr ""
|
| 514 |
+
"Fehler! Ungültige Anfrage. Konnte keine Übereinstimmung für den angegebenen "
|
| 515 |
+
"Sicherheitscode und die Benutzer-ID finden."
|
| 516 |
+
|
| 517 |
+
#: classes/class.swpm-front-registration.php:45
|
| 518 |
+
#: classes/class.swpm-utils-misc.php:274 views/login.php:36
|
| 519 |
+
msgid "Join Us"
|
| 520 |
+
msgstr "Registrieren Sie sich hier, wenn Sie noch kein Mitglied sind"
|
| 521 |
+
|
| 522 |
+
#: classes/class.swpm-front-registration.php:47
|
| 523 |
+
msgid ""
|
| 524 |
+
"Free membership is disabled on this site. Please make a payment from the "
|
| 525 |
+
msgstr ""
|
| 526 |
+
"Die Kostenlose Mitgliedschaft ist auf dieser Seite deaktiviert. Bitte "
|
| 527 |
+
"erstellen Sie eine Zahlung für "
|
| 528 |
+
|
| 529 |
+
#: classes/class.swpm-front-registration.php:49
|
| 530 |
+
msgid " page to pay for a premium membership."
|
| 531 |
+
msgstr " Seite, um für eine Premium-Mitgliedschaft zu bezahlen."
|
| 532 |
+
|
| 533 |
+
#: classes/class.swpm-front-registration.php:51
|
| 534 |
+
msgid ""
|
| 535 |
+
"You will receive a unique link via email after the payment. You will be able "
|
| 536 |
+
"to use that link to complete the premium membership registration."
|
| 537 |
+
msgstr ""
|
| 538 |
+
"Sie werden einen persönlichen Link per E-Mail nach Beendigung des "
|
| 539 |
+
"Zahlungsvorgangs erhalten. Mit diesem Link können Sie die Registrierung "
|
| 540 |
+
"Ihrer Premium Mitgliedschaft abschließen."
|
| 541 |
+
|
| 542 |
+
#: classes/class.swpm-front-registration.php:79
|
| 543 |
+
msgid "Security check: captcha validation failed."
|
| 544 |
+
msgstr "Sicherheitskontrolle: Captcha-Validierung fehlgeschlagen."
|
| 545 |
+
|
| 546 |
+
#: classes/class.swpm-front-registration.php:89
|
| 547 |
+
msgid "You must accept the terms and conditions."
|
| 548 |
+
msgstr "Sie müssen die allgemeinen Geschäftsbedingungen akzeptieren."
|
| 549 |
+
|
| 550 |
+
#: classes/class.swpm-front-registration.php:100
|
| 551 |
+
msgid "You must agree to the privacy policy."
|
| 552 |
+
msgstr "Sie müssen der Datenschutzerklärung zustimmen."
|
| 553 |
+
|
| 554 |
+
#: classes/class.swpm-front-registration.php:140
|
| 555 |
+
msgid ""
|
| 556 |
+
"You need to confirm your email address. Please check your email and follow "
|
| 557 |
+
"instructions to complete your registration."
|
| 558 |
+
msgstr ""
|
| 559 |
+
"<p><strong>Sie müssen Ihre Email Adresse bestätigen. Bitte sehen Sie in "
|
| 560 |
+
"Ihren Email Posteingang und folgen Sie den Anweisungen in der Ihnen "
|
| 561 |
+
"zugesandten Email, um die Anmeldung abzuschließen.</strong></p>"
|
| 562 |
+
|
| 563 |
+
#: classes/class.swpm-front-registration.php:145
|
| 564 |
+
msgid "Registration Successful. "
|
| 565 |
+
msgstr "Registrierung erfolgreich. "
|
| 566 |
+
|
| 567 |
+
#: classes/class.swpm-front-registration.php:145
|
| 568 |
+
#: classes/class.swpm-utils-misc.php:273 classes/class.swpm-utils-misc.php:285
|
| 569 |
+
msgid "Please"
|
| 570 |
+
msgstr "Bitte"
|
| 571 |
+
|
| 572 |
+
#: classes/class.swpm-front-registration.php:145
|
| 573 |
+
#: classes/class.swpm-utils-misc.php:273 views/login.php:30
|
| 574 |
+
msgid "Login"
|
| 575 |
+
msgstr "Einloggen"
|
| 576 |
+
|
| 577 |
+
#: classes/class.swpm-front-registration.php:159
|
| 578 |
+
msgid "Please correct the following"
|
| 579 |
+
msgstr "Bitte korrigieren Sie folgendes"
|
| 580 |
+
|
| 581 |
+
#: classes/class.swpm-front-registration.php:207
|
| 582 |
+
msgid "Membership Level Couldn't be found."
|
| 583 |
+
msgstr "Mitgliedschaftsstufe konnte nicht gefunden werden."
|
| 584 |
+
|
| 585 |
+
#: classes/class.swpm-front-registration.php:258
|
| 586 |
+
msgid "Error! Nonce verification failed for front end profile edit."
|
| 587 |
+
msgstr ""
|
| 588 |
+
"Fehler! Nonce-Überprüfung für Front-End Profil-Bearbeitung fehlgeschlagen."
|
| 589 |
+
|
| 590 |
+
#: classes/class.swpm-front-registration.php:266
|
| 591 |
+
msgid "Profile updated successfully."
|
| 592 |
+
msgstr "Profil erfolgreich aktualisiert."
|
| 593 |
+
|
| 594 |
+
#: classes/class.swpm-front-registration.php:275
|
| 595 |
+
msgid ""
|
| 596 |
+
"Profile updated successfully. You will need to re-login since you changed "
|
| 597 |
+
"your password."
|
| 598 |
+
msgstr ""
|
| 599 |
+
"Profil erfolgreich aktualisiert. Sie müssen sich erneut anmelden, da Sie Ihr "
|
| 600 |
+
"Passwort geändert haben."
|
| 601 |
+
|
| 602 |
+
#: classes/class.swpm-front-registration.php:289
|
| 603 |
+
msgid "Please correct the following."
|
| 604 |
+
msgstr "Bitte korrigieren Sie folgendes."
|
| 605 |
+
|
| 606 |
+
#: classes/class.swpm-front-registration.php:301
|
| 607 |
+
msgid "Captcha validation failed."
|
| 608 |
+
msgstr "Captcha-Validierung fehlgeschlagen."
|
| 609 |
+
|
| 610 |
+
#: classes/class.swpm-front-registration.php:309
|
| 611 |
+
msgid "Email address not valid."
|
| 612 |
+
msgstr "Ungültige E-Mail Adresse."
|
| 613 |
+
|
| 614 |
+
#: classes/class.swpm-front-registration.php:320
|
| 615 |
+
msgid "No user found with that email address."
|
| 616 |
+
msgstr "Kein Benutzer mit dieser E-Mail-Adresse gefunden."
|
| 617 |
+
|
| 618 |
+
#: classes/class.swpm-front-registration.php:321
|
| 619 |
+
#: classes/class.swpm-front-registration.php:350
|
| 620 |
+
msgid "Email Address: "
|
| 621 |
+
msgstr "E-Mail Adresse: "
|
| 622 |
+
|
| 623 |
+
#: classes/class.swpm-front-registration.php:349
|
| 624 |
+
msgid "New password has been sent to your email address."
|
| 625 |
+
msgstr "Es wurde ein neues Passwort an Ihre E-Mail-Adresse gesendet."
|
| 626 |
+
|
| 627 |
+
#: classes/class.swpm-front-registration.php:371
|
| 628 |
+
msgid "Can't find member account."
|
| 629 |
+
msgstr "Kann kein Mitgliedskonto finden."
|
| 630 |
+
|
| 631 |
+
#: classes/class.swpm-front-registration.php:376
|
| 632 |
+
#: classes/class.swpm-front-registration.php:426
|
| 633 |
+
msgid "Account already active. "
|
| 634 |
+
msgstr "Ihr Konto ist schon aktiv. "
|
| 635 |
+
|
| 636 |
+
#: classes/class.swpm-front-registration.php:376
|
| 637 |
+
#: classes/class.swpm-front-registration.php:426
|
| 638 |
+
msgid " to login."
|
| 639 |
+
msgstr " um einzuloggen."
|
| 640 |
+
|
| 641 |
+
#: classes/class.swpm-front-registration.php:383
|
| 642 |
+
msgid ""
|
| 643 |
+
"Activation code mismatch. Cannot activate this account. Please contact the "
|
| 644 |
+
"site admin."
|
| 645 |
+
msgstr ""
|
| 646 |
+
"Problem mit dem Aktivierungs-Code. Das Konto kann nicht aktiviert werden. "
|
| 647 |
+
"Bitte kontaktieren Sie den Admin."
|
| 648 |
+
|
| 649 |
+
#: classes/class.swpm-front-registration.php:397
|
| 650 |
+
msgid "Success! Your account has been activated successfully."
|
| 651 |
+
msgstr "Erfolg! Ihr Konto ist erfolgreich aktiviert."
|
| 652 |
+
|
| 653 |
+
#: classes/class.swpm-front-registration.php:421
|
| 654 |
+
msgid "Cannot find member account."
|
| 655 |
+
msgstr "Kann kein Mitgliedskonto finden."
|
| 656 |
+
|
| 657 |
+
#: classes/class.swpm-front-registration.php:443
|
| 658 |
+
msgid ""
|
| 659 |
+
"Activation email has been sent. Please check your email and activate your "
|
| 660 |
+
"account."
|
| 661 |
+
msgstr ""
|
| 662 |
+
"Aktivierungs-Email gesendet. Bitte checken Sie Ihre Emails und aktivieren "
|
| 663 |
+
"Sie das Konto."
|
| 664 |
+
|
| 665 |
+
#: classes/class.swpm-init-time-tasks.php:118
|
| 666 |
+
msgid "Sorry, Nonce verification failed."
|
| 667 |
+
msgstr "Entschuldigung, Nonce-Überprüfung fehlgeschlagen."
|
| 668 |
+
|
| 669 |
+
#: classes/class.swpm-init-time-tasks.php:125
|
| 670 |
+
msgid "Sorry, Password didn't match."
|
| 671 |
+
msgstr "Passwort stimmt leider nicht überein."
|
| 672 |
+
|
| 673 |
+
#: classes/class.swpm-level-form.php:50
|
| 674 |
+
msgid "Date format is not valid."
|
| 675 |
+
msgstr "Datumsformat ist nicht gültig."
|
| 676 |
+
|
| 677 |
+
#: classes/class.swpm-level-form.php:58
|
| 678 |
+
msgid "Access duration must be > 0."
|
| 679 |
+
msgstr "Zugriffsdauer muss >0 sein."
|
| 680 |
+
|
| 681 |
+
#: classes/class.swpm-members.php:10
|
| 682 |
+
msgid "Member"
|
| 683 |
+
msgstr "Mitglied"
|
| 684 |
+
|
| 685 |
+
#: classes/class.swpm-members.php:19
|
| 686 |
+
#: classes/class.swpm-membership-levels.php:20
|
| 687 |
+
msgid "ID"
|
| 688 |
+
msgstr "ID"
|
| 689 |
+
|
| 690 |
+
#: classes/class.swpm-members.php:20 views/add.php:16 views/admin_add.php:11
|
| 691 |
+
#: views/admin_edit.php:19 views/edit.php:23
|
| 692 |
+
#: includes/swpm_mda_show_profile.php:27
|
| 693 |
+
msgid "Username"
|
| 694 |
+
msgstr "Benutzername"
|
| 695 |
+
|
| 696 |
+
#: classes/class.swpm-members.php:21
|
| 697 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:78
|
| 698 |
+
#: views/add.php:32 views/admin_member_form_common_part.php:15
|
| 699 |
+
#: views/edit.php:39 includes/swpm_mda_show_profile.php:28
|
| 700 |
+
msgid "First Name"
|
| 701 |
+
msgstr "Vorname"
|
| 702 |
+
|
| 703 |
+
#: classes/class.swpm-members.php:22
|
| 704 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:79
|
| 705 |
+
#: views/add.php:36 views/admin_member_form_common_part.php:19
|
| 706 |
+
#: views/edit.php:43 includes/swpm_mda_show_profile.php:29
|
| 707 |
+
msgid "Last Name"
|
| 708 |
+
msgstr "Nachname"
|
| 709 |
+
|
| 710 |
+
#: classes/class.swpm-members.php:23 views/add.php:20 views/edit.php:27
|
| 711 |
+
#: includes/swpm_mda_show_profile.php:35
|
| 712 |
+
msgid "Email"
|
| 713 |
+
msgstr "E-Mail"
|
| 714 |
+
|
| 715 |
+
#: classes/class.swpm-members.php:25 views/admin_member_form_common_part.php:11
|
| 716 |
+
msgid "Access Starts"
|
| 717 |
+
msgstr "Beginn der Zugriffsmöglichkeit"
|
| 718 |
+
|
| 719 |
+
#: classes/class.swpm-members.php:26 includes/swpm_mda_show_profile.php:31
|
| 720 |
+
msgid "Account State"
|
| 721 |
+
msgstr "Kontostatus"
|
| 722 |
+
|
| 723 |
+
#: classes/class.swpm-members.php:27
|
| 724 |
+
msgid "Last Login Date"
|
| 725 |
+
msgstr "Datum des letzten Log-In"
|
| 726 |
+
|
| 727 |
+
#: classes/class.swpm-members.php:46
|
| 728 |
+
#: classes/class.swpm-membership-levels.php:36
|
| 729 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:94
|
| 730 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:102
|
| 731 |
+
msgid "Delete"
|
| 732 |
+
msgstr "Löschen"
|
| 733 |
+
|
| 734 |
+
#: classes/class.swpm-members.php:47
|
| 735 |
+
msgid "Set Status to Active"
|
| 736 |
+
msgstr "Setzen Sie den Status auf Aktiv"
|
| 737 |
+
|
| 738 |
+
#: classes/class.swpm-members.php:48
|
| 739 |
+
msgid "Set Status to Active and Notify"
|
| 740 |
+
msgstr "Setzen Sie den Status auf Aktiv und Benachrichtigen"
|
| 741 |
+
|
| 742 |
+
#: classes/class.swpm-members.php:49
|
| 743 |
+
msgid "Set Status to Inactive"
|
| 744 |
+
msgstr "Setzen Sie den Status auf Inaktiv"
|
| 745 |
+
|
| 746 |
+
#: classes/class.swpm-members.php:50
|
| 747 |
+
msgid "Set Status to Pending"
|
| 748 |
+
msgstr "Setzen Sie den Status auf Ausstehend"
|
| 749 |
+
|
| 750 |
+
#: classes/class.swpm-members.php:51
|
| 751 |
+
msgid "Set Status to Expired"
|
| 752 |
+
msgstr "Setzen Sie den Status auf abgelaufen"
|
| 753 |
+
|
| 754 |
+
#: classes/class.swpm-members.php:72
|
| 755 |
+
msgid "incomplete"
|
| 756 |
+
msgstr "unvollständig"
|
| 757 |
+
|
| 758 |
+
#: classes/class.swpm-members.php:191
|
| 759 |
+
msgid "No member found."
|
| 760 |
+
msgstr "Kein Mitglied gefunden."
|
| 761 |
+
|
| 762 |
+
#: classes/class.swpm-members.php:337
|
| 763 |
+
msgid "Error! Nonce verification failed for user delete from admin end."
|
| 764 |
+
msgstr ""
|
| 765 |
+
"Fehler! Nonce-Überprüfung für Löschung eines Benutzers durch den Admin "
|
| 766 |
+
"fehlgeschlagen."
|
| 767 |
+
|
| 768 |
+
#: classes/class.swpm-members.php:406 classes/class.swpm-members.php:436
|
| 769 |
+
msgid "Error! Please select a membership level first."
|
| 770 |
+
msgstr "Fehler! Bitte wählen Sie zuerst eine Mitgliedsstufe aus."
|
| 771 |
+
|
| 772 |
+
#: classes/class.swpm-members.php:423
|
| 773 |
+
msgid "Membership level change operation completed successfully."
|
| 774 |
+
msgstr "Änderung der Mitgliedschaftsstufe wurde erfolgreich abgeschlossen."
|
| 775 |
+
|
| 776 |
+
#: classes/class.swpm-members.php:453
|
| 777 |
+
msgid "Access starts date change operation successfully completed."
|
| 778 |
+
msgstr "Datumsänderung erfolgreich abgeschlossen."
|
| 779 |
+
|
| 780 |
+
#: classes/class.swpm-members.php:462
|
| 781 |
+
msgid "Bulk Update Membership Level of Members"
|
| 782 |
+
msgstr "Massen-Änderung der Mitgliedschaftsstufe der Mitglieder"
|
| 783 |
+
|
| 784 |
+
#: classes/class.swpm-members.php:465
|
| 785 |
+
msgid ""
|
| 786 |
+
"You can manually change the membership level of any member by editing the "
|
| 787 |
+
"record from the members menu. "
|
| 788 |
+
msgstr ""
|
| 789 |
+
"Sie können die Mitgliedschaftsstufe eines beliebigen Mitglieds manuell "
|
| 790 |
+
"ändern, indem Sie den Datensatz aus dem Mitgliedermenü bearbeiten. "
|
| 791 |
+
|
| 792 |
+
#: classes/class.swpm-members.php:466
|
| 793 |
+
msgid ""
|
| 794 |
+
"You can use the following option to bulk update the membership level of "
|
| 795 |
+
"users who belong to the level you select below."
|
| 796 |
+
msgstr ""
|
| 797 |
+
"Sie können die folgende Option verwenden, um die Mitgliedschaftsstufe aller "
|
| 798 |
+
"Benutzer gesammelt zu aktualisieren, die zu der Ebene gehören, die Sie unten "
|
| 799 |
+
"auswählen."
|
| 800 |
+
|
| 801 |
+
#: classes/class.swpm-members.php:472 classes/class.swpm-members.php:520
|
| 802 |
+
msgid "Membership Level: "
|
| 803 |
+
msgstr "Mitgliedschaftsstufe: "
|
| 804 |
+
|
| 805 |
+
#: classes/class.swpm-members.php:476
|
| 806 |
+
msgid "Select Current Level"
|
| 807 |
+
msgstr "Wählen Sie die aktuelle Stufe aus"
|
| 808 |
+
|
| 809 |
+
#: classes/class.swpm-members.php:479
|
| 810 |
+
msgid ""
|
| 811 |
+
"Select the current membership level (the membership level of all members who "
|
| 812 |
+
"are in this level will be updated)."
|
| 813 |
+
msgstr ""
|
| 814 |
+
"Wählen Sie die aktuelle Mitgliedschaftsstufe aus (die Mitgliedschaftsstufe "
|
| 815 |
+
"aller Mitglieder, die sich in dieser Ebene befinden, wird aktualisiert)."
|
| 816 |
+
|
| 817 |
+
#: classes/class.swpm-members.php:485
|
| 818 |
+
msgid "Level to Change to: "
|
| 819 |
+
msgstr "Mitgliedschaft ändern in: "
|
| 820 |
+
|
| 821 |
+
#: classes/class.swpm-members.php:489
|
| 822 |
+
msgid "Select Target Level"
|
| 823 |
+
msgstr "Ziel Ebene auswählen"
|
| 824 |
+
|
| 825 |
+
#: classes/class.swpm-members.php:492
|
| 826 |
+
msgid "Select the new membership level."
|
| 827 |
+
msgstr "Wählen Sie die neue Mitgliedschaftsstufe aus."
|
| 828 |
+
|
| 829 |
+
#: classes/class.swpm-members.php:498
|
| 830 |
+
msgid "Bulk Change Membership Level"
|
| 831 |
+
msgstr "Massen-Änderung der Mitgliedschaftsstufe"
|
| 832 |
+
|
| 833 |
+
#: classes/class.swpm-members.php:508
|
| 834 |
+
msgid "Bulk Update Access Starts Date of Members"
|
| 835 |
+
msgstr "Massen-Änderung des Datums, ab dem die Mitgliedschaft beginnt"
|
| 836 |
+
|
| 837 |
+
#: classes/class.swpm-members.php:512
|
| 838 |
+
msgid ""
|
| 839 |
+
"The access starts date of a member is set to the day the user registers. "
|
| 840 |
+
"This date value is used to calculate how long the member can access your "
|
| 841 |
+
"content that are protected with a duration type protection in the membership "
|
| 842 |
+
"level. "
|
| 843 |
+
msgstr ""
|
| 844 |
+
"Der Zugriff eines Mitglieds startet am Tag, an dem sich der Benutzer "
|
| 845 |
+
"registriert hat. Dieser Datumswert wird verwendet, um zu berechnen, wie "
|
| 846 |
+
"lange das Mitglied auf Ihre Inhalte zugreifen kann. "
|
| 847 |
+
|
| 848 |
+
#: classes/class.swpm-members.php:513
|
| 849 |
+
msgid ""
|
| 850 |
+
"You can manually set a specific access starts date value of all members who "
|
| 851 |
+
"belong to a particular level using the following option."
|
| 852 |
+
msgstr ""
|
| 853 |
+
"Sie können mit der folgenden Option manuell ein bestimmtes Start-Datum "
|
| 854 |
+
"festlegen, für alle Mitglieder, die zu einer bestimmten "
|
| 855 |
+
"Mitgliedschaftsstufe gehören."
|
| 856 |
+
|
| 857 |
+
#: classes/class.swpm-members.php:523
|
| 858 |
+
msgid "Select Level"
|
| 859 |
+
msgstr "Stufe auswählen"
|
| 860 |
+
|
| 861 |
+
#: classes/class.swpm-members.php:526
|
| 862 |
+
msgid ""
|
| 863 |
+
"Select the Membership level (the access start date of all members who are in "
|
| 864 |
+
"this level will be updated)."
|
| 865 |
+
msgstr ""
|
| 866 |
+
"Wählen Sie die Mitgliedschaftsstufe aus (das Zugangsstartdatum aller "
|
| 867 |
+
"Mitglieder, die sich auf dieser Ebene befinden, wird aktualisiert)."
|
| 868 |
+
|
| 869 |
+
#: classes/class.swpm-members.php:535
|
| 870 |
+
msgid "Specify the access starts date value."
|
| 871 |
+
msgstr "Geben Sie das Datum ein, ab dem der Zugriff möglich ist."
|
| 872 |
+
|
| 873 |
+
#: classes/class.swpm-members.php:541
|
| 874 |
+
msgid "Bulk Change Access Starts Date"
|
| 875 |
+
msgstr "Massen-Änderung des Datums, ab dem der Zugriff möglich ist"
|
| 876 |
+
|
| 877 |
+
#: classes/class.swpm-members.php:576
|
| 878 |
+
msgid "Simple WP Membership::Members"
|
| 879 |
+
msgstr "Simple WP Membership::Mitglieder"
|
| 880 |
+
|
| 881 |
+
#: classes/class.swpm-members.php:577
|
| 882 |
+
#: classes/class.swpm-membership-levels.php:226 views/admin_members_list.php:44
|
| 883 |
+
msgid "Add New"
|
| 884 |
+
msgstr "Neu hinzufügen"
|
| 885 |
+
|
| 886 |
+
#: classes/class.swpm-members.php:582 views/admin_add.php:6
|
| 887 |
+
msgid "Add Member"
|
| 888 |
+
msgstr "Neues Mitglied hinzufügen"
|
| 889 |
+
|
| 890 |
+
#: classes/class.swpm-members.php:583
|
| 891 |
+
msgid "Bulk Operation"
|
| 892 |
+
msgstr "Massen-Änderung"
|
| 893 |
+
|
| 894 |
+
#: classes/class.swpm-membership-level.php:52
|
| 895 |
+
msgid ""
|
| 896 |
+
"Error! Nonce verification failed for membership level creation from admin "
|
| 897 |
+
"end."
|
| 898 |
+
msgstr ""
|
| 899 |
+
"Fehler! Nonce-Überprüfung für die Erstellung von Mitgliedschaft-Stufen durch "
|
| 900 |
+
"den Admin fehlgeschlagen."
|
| 901 |
+
|
| 902 |
+
#: classes/class.swpm-membership-level.php:68
|
| 903 |
+
msgid "Membership Level Creation Successful."
|
| 904 |
+
msgstr "Mitgliedschaftstufe erfolgreich erstellt.."
|
| 905 |
+
|
| 906 |
+
#: classes/class.swpm-membership-level.php:84
|
| 907 |
+
msgid ""
|
| 908 |
+
"Error! Nonce verification failed for membership level edit from admin end."
|
| 909 |
+
msgstr ""
|
| 910 |
+
"Fehler! Nonce-Überprüfung für Bearbeiten der Mitgliedschafts-Stufe durch den "
|
| 911 |
+
"Admin fehlgeschlagen ."
|
| 912 |
+
|
| 913 |
+
#: classes/class.swpm-membership-level.php:100
|
| 914 |
+
msgid "Membership Level Updated Successfully."
|
| 915 |
+
msgstr "Mitgliedschaftstufe wurde erfolgreich aktualisiert."
|
| 916 |
+
|
| 917 |
+
#: classes/class.swpm-membership-levels.php:22
|
| 918 |
+
msgid "Role"
|
| 919 |
+
msgstr "Rolle"
|
| 920 |
+
|
| 921 |
+
#: classes/class.swpm-membership-levels.php:23
|
| 922 |
+
msgid "Access Valid For/Until"
|
| 923 |
+
msgstr "Zugang gültig für/bis"
|
| 924 |
+
|
| 925 |
+
#: classes/class.swpm-membership-levels.php:133
|
| 926 |
+
msgid "No membership levels found."
|
| 927 |
+
msgstr "Keine Mitgliedschaftsstufen gefunden."
|
| 928 |
+
|
| 929 |
+
#: classes/class.swpm-membership-levels.php:197
|
| 930 |
+
msgid ""
|
| 931 |
+
"Error! Nonce verification failed for membership level delete from admin end."
|
| 932 |
+
msgstr ""
|
| 933 |
+
"Fehler! Nonce-Überprüfung für das Löschen der Mitgliedschaftsstufe durch den "
|
| 934 |
+
"Admin fehlgeschlagen."
|
| 935 |
+
|
| 936 |
+
#: classes/class.swpm-membership-levels.php:216 views/admin_members_list.php:31
|
| 937 |
+
#: views/payments/admin_all_payment_transactions.php:16 views/template-1.php:53
|
| 938 |
+
#: views/template-2.php:54
|
| 939 |
+
msgid "Search"
|
| 940 |
+
msgstr "Suchen"
|
| 941 |
+
|
| 942 |
+
#: classes/class.swpm-membership-levels.php:261
|
| 943 |
+
msgid "Simple WP Membership::Membership Levels"
|
| 944 |
+
msgstr "Simple WP Membership::Mitgliedschaftsstufen"
|
| 945 |
+
|
| 946 |
+
#: classes/class.swpm-membership-levels.php:266
|
| 947 |
+
msgid "Add Level"
|
| 948 |
+
msgstr "Neue Mitgliedschaftsstufe hinzufügen"
|
| 949 |
+
|
| 950 |
+
#: classes/class.swpm-membership-levels.php:267
|
| 951 |
+
msgid "Manage Content Protection"
|
| 952 |
+
msgstr "Schutz der Inhalte verwalten"
|
| 953 |
+
|
| 954 |
+
#: classes/class.swpm-membership-levels.php:268
|
| 955 |
+
msgid "Category Protection"
|
| 956 |
+
msgstr "Kategorie Schutz"
|
| 957 |
+
|
| 958 |
+
#: classes/class.swpm-membership-levels.php:269
|
| 959 |
+
msgid "Post and Page Protection"
|
| 960 |
+
msgstr "Schutz von Beiträgen und Seiten"
|
| 961 |
+
|
| 962 |
+
#: classes/class.swpm-post-list.php:43 classes/class.swpm-post-list.php:52
|
| 963 |
+
#: classes/class.swpm-post-list.php:62
|
| 964 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:81
|
| 965 |
+
msgid "Date"
|
| 966 |
+
msgstr "Datum"
|
| 967 |
+
|
| 968 |
+
#: classes/class.swpm-post-list.php:44 classes/class.swpm-post-list.php:53
|
| 969 |
+
#: classes/class.swpm-post-list.php:63
|
| 970 |
+
msgid "Title"
|
| 971 |
+
msgstr "Titel"
|
| 972 |
+
|
| 973 |
+
#: classes/class.swpm-post-list.php:45 classes/class.swpm-post-list.php:54
|
| 974 |
+
#: classes/class.swpm-post-list.php:64
|
| 975 |
+
msgid "Author"
|
| 976 |
+
msgstr "Autor"
|
| 977 |
+
|
| 978 |
+
#: classes/class.swpm-post-list.php:46 classes/class.swpm-post-list.php:56
|
| 979 |
+
#: classes/class.swpm-post-list.php:66
|
| 980 |
+
msgid "Status"
|
| 981 |
+
msgstr "Status"
|
| 982 |
+
|
| 983 |
+
#: classes/class.swpm-post-list.php:55
|
| 984 |
+
msgid "Categories"
|
| 985 |
+
msgstr "Kategorien"
|
| 986 |
+
|
| 987 |
+
#: classes/class.swpm-post-list.php:65
|
| 988 |
+
msgid "Type"
|
| 989 |
+
msgstr "Typ"
|
| 990 |
+
|
| 991 |
+
#: classes/class.swpm-post-list.php:125
|
| 992 |
+
msgid "Protection settings updated!"
|
| 993 |
+
msgstr "Schutz-Einstellungen aktualisiert!"
|
| 994 |
+
|
| 995 |
+
#: classes/class.swpm-post-list.php:230
|
| 996 |
+
msgid "No items found."
|
| 997 |
+
msgstr "Keine Einträge gefunden."
|
| 998 |
+
|
| 999 |
+
#: classes/class.swpm-protection.php:22
|
| 1000 |
+
msgid ""
|
| 1001 |
+
"The category or parent category of this post is protected. You can change "
|
| 1002 |
+
"the category protection settings from the "
|
| 1003 |
+
msgstr ""
|
| 1004 |
+
"Die Kategorie oder Eltern-Kategorie diese Beitrags ist geschützt. Sie können "
|
| 1005 |
+
"den Schutz der Kategorie ändern von "
|
| 1006 |
+
|
| 1007 |
+
#: classes/class.swpm-protection.php:23
|
| 1008 |
+
msgid "category protection menu"
|
| 1009 |
+
msgstr "Menue des Kategorie Schutzes"
|
| 1010 |
+
|
| 1011 |
+
#: classes/class.swpm-settings.php:26 classes/class.swpm-settings.php:54
|
| 1012 |
+
msgid "General Settings"
|
| 1013 |
+
msgstr "Allgemeine Einstellungen"
|
| 1014 |
+
|
| 1015 |
+
#: classes/class.swpm-settings.php:27
|
| 1016 |
+
msgid "Payment Settings"
|
| 1017 |
+
msgstr "Einstellungen für Zahlungsvorgänge"
|
| 1018 |
+
|
| 1019 |
+
#: classes/class.swpm-settings.php:28
|
| 1020 |
+
msgid "Email Settings"
|
| 1021 |
+
msgstr "E-Mail Einstellungen"
|
| 1022 |
+
|
| 1023 |
+
#: classes/class.swpm-settings.php:29
|
| 1024 |
+
msgid "Tools"
|
| 1025 |
+
msgstr "Tools"
|
| 1026 |
+
|
| 1027 |
+
#: classes/class.swpm-settings.php:30 classes/class.swpm-settings.php:187
|
| 1028 |
+
msgid "Advanced Settings"
|
| 1029 |
+
msgstr "Erweiterte Einstellungen"
|
| 1030 |
+
|
| 1031 |
+
#: classes/class.swpm-settings.php:31
|
| 1032 |
+
msgid "Addons Settings"
|
| 1033 |
+
msgstr "Einstellungen für die Erweiterungen"
|
| 1034 |
+
|
| 1035 |
+
#: classes/class.swpm-settings.php:53
|
| 1036 |
+
msgid "Plugin Documentation"
|
| 1037 |
+
msgstr "Plugin-Dokumentation"
|
| 1038 |
+
|
| 1039 |
+
#: classes/class.swpm-settings.php:55
|
| 1040 |
+
msgid "Enable Free Membership"
|
| 1041 |
+
msgstr "Kostenlose Mitgliedschaft erlauben"
|
| 1042 |
+
|
| 1043 |
+
#: classes/class.swpm-settings.php:56
|
| 1044 |
+
msgid ""
|
| 1045 |
+
"Enable/disable registration for free membership level. When you enable this "
|
| 1046 |
+
"option, make sure to specify a free membership level ID in the field below."
|
| 1047 |
+
msgstr ""
|
| 1048 |
+
"Aktivierung/Deaktivierung der Registrierung für eine kostenlose "
|
| 1049 |
+
"Mitgliedschaft. Wenn Sie diese Option aktivieren, stellen Sie bitte sicher, "
|
| 1050 |
+
"dass Sie eine ID für eine kostenlose Mitgliedschaft angeben."
|
| 1051 |
+
|
| 1052 |
+
#: classes/class.swpm-settings.php:57
|
| 1053 |
+
msgid "Free Membership Level ID"
|
| 1054 |
+
msgstr "Kostenlose Mitgliedschaftsstufen-ID"
|
| 1055 |
+
|
| 1056 |
+
#: classes/class.swpm-settings.php:58
|
| 1057 |
+
msgid "Assign free membership level ID"
|
| 1058 |
+
msgstr "ID der kostenlosen Mitgliedschaftsstufe zuweisen"
|
| 1059 |
+
|
| 1060 |
+
#: classes/class.swpm-settings.php:59
|
| 1061 |
+
msgid "Enable More Tag Protection"
|
| 1062 |
+
msgstr "Aktiviere den \"Mehr\"-Tag Schutz"
|
| 1063 |
+
|
| 1064 |
+
#: classes/class.swpm-settings.php:60
|
| 1065 |
+
msgid ""
|
| 1066 |
+
"Enables or disables \"more\" tag protection in the posts and pages. Anything "
|
| 1067 |
+
"after the More tag is protected. Anything before the more tag is teaser "
|
| 1068 |
+
"content."
|
| 1069 |
+
msgstr ""
|
| 1070 |
+
"Aktiviert oder deaktiviert den \"mehr\" Tag Schutz in Beiträgen und Seiten. "
|
| 1071 |
+
"Der Inhalt nach dem \"mehr\" Tag ist geschützt. Inhalt vor diesem Tag ist "
|
| 1072 |
+
"\"Teaser\" Inhalt."
|
| 1073 |
+
|
| 1074 |
+
#: classes/class.swpm-settings.php:61
|
| 1075 |
+
msgid "Hide Adminbar"
|
| 1076 |
+
msgstr "Admin-Bar ausblenden"
|
| 1077 |
+
|
| 1078 |
+
#: classes/class.swpm-settings.php:62
|
| 1079 |
+
msgid ""
|
| 1080 |
+
"WordPress shows an admin toolbar to the logged in users of the site. Check "
|
| 1081 |
+
"this if you want to hide that admin toolbar in the frontend of your site."
|
| 1082 |
+
msgstr ""
|
| 1083 |
+
"Für eingeloggte User ist in WordPress die Admin Toolbar standardmäßig "
|
| 1084 |
+
"sichtbar. Setzen Sie ein Häkchen um die Admin Toolbar auszublenden."
|
| 1085 |
+
|
| 1086 |
+
#: classes/class.swpm-settings.php:63
|
| 1087 |
+
msgid "Show Adminbar to Admin"
|
| 1088 |
+
msgstr "Adminbar dem Admin anzeigen"
|
| 1089 |
+
|
| 1090 |
+
#: classes/class.swpm-settings.php:64
|
| 1091 |
+
msgid ""
|
| 1092 |
+
"Use this option if you want to show the admin toolbar to admin users only. "
|
| 1093 |
+
"The admin toolbar will be hidden for all other users."
|
| 1094 |
+
msgstr ""
|
| 1095 |
+
"Aktivieren Sie diese Option, wenn die Admin Toolbar nur für Admins sichtbar "
|
| 1096 |
+
"sein soll. Die Admin Toolbar ist für alle anderen Anwender nicht sichtbar."
|
| 1097 |
+
|
| 1098 |
+
#: classes/class.swpm-settings.php:65
|
| 1099 |
+
msgid "Disable Access to WP Dashboard"
|
| 1100 |
+
msgstr "Deaktivieren Sie den Zugriff auf das WP Dashboard"
|
| 1101 |
+
|
| 1102 |
+
#: classes/class.swpm-settings.php:66
|
| 1103 |
+
msgid ""
|
| 1104 |
+
"WordPress allows a standard wp user to be able to go to the wp-admin URL and "
|
| 1105 |
+
"access his profile from the wp dashbaord. Using this option will prevent any "
|
| 1106 |
+
"non admin users from going to the wp dashboard."
|
| 1107 |
+
msgstr ""
|
| 1108 |
+
"WordPress ermöglicht es einem Standard-WP-Benutzer, in die WP-Admin URL zu "
|
| 1109 |
+
"gelangen und auf sein Profil aus dem WP-Dashboard zuzugreifen. Mit dieser "
|
| 1110 |
+
"Option wird verhindert, dass Benutzer, die nicht Admins sind, auf das WP-"
|
| 1111 |
+
"Dashboard zugreifen können."
|
| 1112 |
+
|
| 1113 |
+
#: classes/class.swpm-settings.php:68 classes/class.swpm-settings.php:242
|
| 1114 |
+
msgid "Default Account Status"
|
| 1115 |
+
msgstr "Standardkonto Status"
|
| 1116 |
+
|
| 1117 |
+
#: classes/class.swpm-settings.php:71
|
| 1118 |
+
msgid ""
|
| 1119 |
+
"Select the default account status for newly registered users. If you want to "
|
| 1120 |
+
"manually approve the members then you can set the status to \"Pending\"."
|
| 1121 |
+
msgstr ""
|
| 1122 |
+
"Wählen Sie eine Voreinstellung für den Mitglieder-Status neu registrierter "
|
| 1123 |
+
"Mitglieder. Wenn Sie die Registrierung neuer Mitglieder manuell bestätigen "
|
| 1124 |
+
"möchten, setzen Sie den Status auf \"ausstehend\"."
|
| 1125 |
+
|
| 1126 |
+
#: classes/class.swpm-settings.php:73
|
| 1127 |
+
msgid "Members Must be Logged in to Comment"
|
| 1128 |
+
msgstr ""
|
| 1129 |
+
"Mitglieder müssen eingeloggt sein, um Kommentare hinterlassen zu können"
|
| 1130 |
+
|
| 1131 |
+
#: classes/class.swpm-settings.php:74
|
| 1132 |
+
msgid ""
|
| 1133 |
+
"Enable this option if you only want the members of the site to be able to "
|
| 1134 |
+
"post a comment."
|
| 1135 |
+
msgstr ""
|
| 1136 |
+
"Aktivieren Sie diese Option, wenn Sie nur Mitgliedern die Möglichkeit geben "
|
| 1137 |
+
"wollen, Kommentare zu hinterlassen."
|
| 1138 |
+
|
| 1139 |
+
#: classes/class.swpm-settings.php:83
|
| 1140 |
+
msgid "Pages Settings"
|
| 1141 |
+
msgstr "Seiteneinstellungen"
|
| 1142 |
+
|
| 1143 |
+
#: classes/class.swpm-settings.php:84
|
| 1144 |
+
msgid "Login Page URL"
|
| 1145 |
+
msgstr "URL der Login Seite"
|
| 1146 |
+
|
| 1147 |
+
#: classes/class.swpm-settings.php:86
|
| 1148 |
+
msgid "Registration Page URL"
|
| 1149 |
+
msgstr "Registrierungsseiten-URL"
|
| 1150 |
+
|
| 1151 |
+
#: classes/class.swpm-settings.php:88
|
| 1152 |
+
msgid "Join Us Page URL"
|
| 1153 |
+
msgstr "Jetzt Anmelden-URL"
|
| 1154 |
+
|
| 1155 |
+
#: classes/class.swpm-settings.php:90
|
| 1156 |
+
msgid "Edit Profile Page URL"
|
| 1157 |
+
msgstr "Profilseite URL bearbeiten"
|
| 1158 |
+
|
| 1159 |
+
#: classes/class.swpm-settings.php:92
|
| 1160 |
+
msgid "Password Reset Page URL"
|
| 1161 |
+
msgstr "Passwort zurücksetzten-URL"
|
| 1162 |
+
|
| 1163 |
+
#: classes/class.swpm-settings.php:95
|
| 1164 |
+
msgid "Test & Debug Settings"
|
| 1165 |
+
msgstr "Test & Debug-Einstellungen"
|
| 1166 |
+
|
| 1167 |
+
#: classes/class.swpm-settings.php:97
|
| 1168 |
+
msgid "Check this option to enable debug logging."
|
| 1169 |
+
msgstr ""
|
| 1170 |
+
"Aktivieren Sie diese Option, um die Debug-Protokollierung zu aktivieren."
|
| 1171 |
+
|
| 1172 |
+
#: classes/class.swpm-settings.php:98
|
| 1173 |
+
msgid ""
|
| 1174 |
+
" This can be useful when troubleshooting an issue. Turn it off and reset the "
|
| 1175 |
+
"log files after the troubleshooting is complete."
|
| 1176 |
+
msgstr ""
|
| 1177 |
+
" Dies kann hilfreich sein um einen Fehler zu lokalisieren. Schalten Sie es "
|
| 1178 |
+
"aus und setzen Sie die Log Dateien zurück, wenn Sie die Fehlersuche "
|
| 1179 |
+
"abgeschlossen haben."
|
| 1180 |
+
|
| 1181 |
+
#: classes/class.swpm-settings.php:100
|
| 1182 |
+
msgid "View general debug log file by clicking "
|
| 1183 |
+
msgstr "Allgemeine Debug Log Datei ansehen "
|
| 1184 |
+
|
| 1185 |
+
#: classes/class.swpm-settings.php:100 classes/class.swpm-settings.php:101
|
| 1186 |
+
#: classes/class.swpm-settings.php:102
|
| 1187 |
+
msgid "here"
|
| 1188 |
+
msgstr "hier"
|
| 1189 |
+
|
| 1190 |
+
#: classes/class.swpm-settings.php:101
|
| 1191 |
+
msgid "View login related debug log file by clicking "
|
| 1192 |
+
msgstr "Login Debug Log Datei ansehen "
|
| 1193 |
+
|
| 1194 |
+
#: classes/class.swpm-settings.php:102
|
| 1195 |
+
msgid "Reset debug log files by clicking "
|
| 1196 |
+
msgstr "Zurücksetzen der Debug Log Dateien "
|
| 1197 |
+
|
| 1198 |
+
#: classes/class.swpm-settings.php:103
|
| 1199 |
+
msgid "Enable Debug"
|
| 1200 |
+
msgstr "Debug aktivieren"
|
| 1201 |
+
|
| 1202 |
+
#: classes/class.swpm-settings.php:105
|
| 1203 |
+
msgid "Enable Sandbox Testing"
|
| 1204 |
+
msgstr "Sandbox-Test aktivieren"
|
| 1205 |
+
|
| 1206 |
+
#: classes/class.swpm-settings.php:106
|
| 1207 |
+
msgid "Enable this option if you want to do sandbox payment testing."
|
| 1208 |
+
msgstr ""
|
| 1209 |
+
"Aktivieren Sie die Testumgebung, um diese Option um die Bezahlmethode zu "
|
| 1210 |
+
"testen."
|
| 1211 |
+
|
| 1212 |
+
#: classes/class.swpm-settings.php:119
|
| 1213 |
+
msgid "Email Settings Overview"
|
| 1214 |
+
msgstr "E-Mail Einstellungen"
|
| 1215 |
+
|
| 1216 |
+
#: classes/class.swpm-settings.php:120
|
| 1217 |
+
msgid "Email Misc. Settings"
|
| 1218 |
+
msgstr "E-Mail Einstellungen"
|
| 1219 |
+
|
| 1220 |
+
#: classes/class.swpm-settings.php:122
|
| 1221 |
+
msgid "From Email Address"
|
| 1222 |
+
msgstr "Von E-Mail-Adresse"
|
| 1223 |
+
|
| 1224 |
+
#: classes/class.swpm-settings.php:126
|
| 1225 |
+
msgid "Email Settings (Prompt to Complete Registration )"
|
| 1226 |
+
msgstr "E-Mail-Einstellungen (Eingabeaufforderung zur Anmeldung)"
|
| 1227 |
+
|
| 1228 |
+
#: classes/class.swpm-settings.php:127 classes/class.swpm-settings.php:140
|
| 1229 |
+
#: classes/class.swpm-settings.php:158 classes/class.swpm-settings.php:163
|
| 1230 |
+
#: classes/class.swpm-settings.php:168 classes/class.swpm-settings.php:173
|
| 1231 |
+
msgid "Email Subject"
|
| 1232 |
+
msgstr "E-Mail Betreff"
|
| 1233 |
+
|
| 1234 |
+
#: classes/class.swpm-settings.php:129 classes/class.swpm-settings.php:142
|
| 1235 |
+
#: classes/class.swpm-settings.php:159 classes/class.swpm-settings.php:164
|
| 1236 |
+
#: classes/class.swpm-settings.php:169 classes/class.swpm-settings.php:174
|
| 1237 |
+
msgid "Email Body"
|
| 1238 |
+
msgstr "E-Mail Text"
|
| 1239 |
+
|
| 1240 |
+
#: classes/class.swpm-settings.php:133
|
| 1241 |
+
msgid ""
|
| 1242 |
+
"Enter the email address where you want the admin notification email to be "
|
| 1243 |
+
"sent to."
|
| 1244 |
+
msgstr ""
|
| 1245 |
+
"Geben Sie hier die Email Adresse ein, zu der die Benachrichtigung an den "
|
| 1246 |
+
"Admin gesendet werden soll."
|
| 1247 |
+
|
| 1248 |
+
#: classes/class.swpm-settings.php:134
|
| 1249 |
+
msgid ""
|
| 1250 |
+
" You can put multiple email addresses separated by comma (,) in the above "
|
| 1251 |
+
"field to send the notification to multiple email addresses."
|
| 1252 |
+
msgstr ""
|
| 1253 |
+
" Sie können mehrere Email Adressen eingeben, an die die Benachrichtigungen "
|
| 1254 |
+
"gesendet werden sollen. Die Email Adressen müssen durch Komma (,) getrennt "
|
| 1255 |
+
"werden."
|
| 1256 |
+
|
| 1257 |
+
#: classes/class.swpm-settings.php:136
|
| 1258 |
+
msgid "Enter the subject for the admin notification email."
|
| 1259 |
+
msgstr "Geben Sie den Betreff für die Admin-Benachrichtigungs-E-Mail ein."
|
| 1260 |
+
|
| 1261 |
+
#: classes/class.swpm-settings.php:137
|
| 1262 |
+
msgid ""
|
| 1263 |
+
"This email will be sent to the admin when a new user completes the "
|
| 1264 |
+
"membership registration. Only works if you have enabled the \"Send "
|
| 1265 |
+
"Notification to Admin\" option above."
|
| 1266 |
+
msgstr ""
|
| 1267 |
+
"Diese Email wird an den Admin gesendet, wenn ein neues Mitglied die "
|
| 1268 |
+
"Registrierung abgeschlossen hat. Der Email Versand erfolgt nur, wenn Sie die "
|
| 1269 |
+
"Option \"Den Admin benachrichtigen\" aktiviert haben."
|
| 1270 |
+
|
| 1271 |
+
#: classes/class.swpm-settings.php:139
|
| 1272 |
+
msgid "Email Settings (Registration Complete)"
|
| 1273 |
+
msgstr "E-Mail-Einstellungen (Anmeldung abgeschlossen)"
|
| 1274 |
+
|
| 1275 |
+
#: classes/class.swpm-settings.php:144
|
| 1276 |
+
msgid "Send Notification to Admin"
|
| 1277 |
+
msgstr "Benachrichtigung an Admin senden"
|
| 1278 |
+
|
| 1279 |
+
#: classes/class.swpm-settings.php:145
|
| 1280 |
+
msgid ""
|
| 1281 |
+
"Enable this option if you want the admin to receive a notification when a "
|
| 1282 |
+
"member registers."
|
| 1283 |
+
msgstr ""
|
| 1284 |
+
"Aktivieren Sie diese Option, wenn der Admin benachrichtigt werden soll, wenn "
|
| 1285 |
+
"sich ein neues Mitglied registriert hat."
|
| 1286 |
+
|
| 1287 |
+
#: classes/class.swpm-settings.php:146
|
| 1288 |
+
msgid "Admin Email Address"
|
| 1289 |
+
msgstr "Email Adresse des Admin"
|
| 1290 |
+
|
| 1291 |
+
#: classes/class.swpm-settings.php:148
|
| 1292 |
+
msgid "Admin Notification Email Subject"
|
| 1293 |
+
msgstr "Betreff-Zeile der Admin Benachrichtigung"
|
| 1294 |
+
|
| 1295 |
+
#: classes/class.swpm-settings.php:150
|
| 1296 |
+
msgid "Admin Notification Email Body"
|
| 1297 |
+
msgstr "E-Mail Text der Admin Benachrichtigung"
|
| 1298 |
+
|
| 1299 |
+
#: classes/class.swpm-settings.php:153
|
| 1300 |
+
msgid "Send Email to Member When Added via Admin Dashboard"
|
| 1301 |
+
msgstr ""
|
| 1302 |
+
"Mitglied mit E-Mail benachrichtigen wenn er vom Administrator hinzugefügt "
|
| 1303 |
+
"wird"
|
| 1304 |
+
|
| 1305 |
+
#: classes/class.swpm-settings.php:157
|
| 1306 |
+
msgid "Email Settings (Password Reset)"
|
| 1307 |
+
msgstr "E-Mail-Einstellungen (Passwort zurücksetzen)"
|
| 1308 |
+
|
| 1309 |
+
#: classes/class.swpm-settings.php:162
|
| 1310 |
+
msgid " Email Settings (Account Upgrade Notification)"
|
| 1311 |
+
msgstr " E-Mail-Einstellungen (Kontoaktualisierungsbenachrichtigung)"
|
| 1312 |
+
|
| 1313 |
+
#: classes/class.swpm-settings.php:167
|
| 1314 |
+
msgid " Email Settings (Bulk Account Activate Notification)"
|
| 1315 |
+
msgstr " E-Mail-Einstellungen (Account Benachrichtigung aktivieren)"
|
| 1316 |
+
|
| 1317 |
+
#: classes/class.swpm-settings.php:172
|
| 1318 |
+
msgid " Email Settings (Email Activation)"
|
| 1319 |
+
msgstr " E-Mail-Einstellungen (Email Aktivierung)"
|
| 1320 |
+
|
| 1321 |
+
#: classes/class.swpm-settings.php:189
|
| 1322 |
+
msgid "Enable Expired Account Login"
|
| 1323 |
+
msgstr "Aktivieren Sie das \"abgelaufene Konto\" Login"
|
| 1324 |
+
|
| 1325 |
+
#: classes/class.swpm-settings.php:190
|
| 1326 |
+
msgid ""
|
| 1327 |
+
"When enabled, expired members will be able to log into the system but won't "
|
| 1328 |
+
"be able to view any protected content. This allows them to easily renew "
|
| 1329 |
+
"their account by making another payment."
|
| 1330 |
+
msgstr ""
|
| 1331 |
+
"Wenn aktiviert, können Mitglieder mit abgelaufener Mitgliedschaft sich "
|
| 1332 |
+
"einloggen, können aber nicht auf geschützten Inhalte zugreifen. Dies es "
|
| 1333 |
+
"ermöglicht es ihnen, Ihre Mitgliedschaft durch Bezahlung zu reaktivieren."
|
| 1334 |
+
|
| 1335 |
+
#: classes/class.swpm-settings.php:192
|
| 1336 |
+
msgid "Membership Renewal URL"
|
| 1337 |
+
msgstr "URL zur Erneuerung der Mitgliedschaft"
|
| 1338 |
+
|
| 1339 |
+
#: classes/class.swpm-settings.php:193
|
| 1340 |
+
msgid ""
|
| 1341 |
+
"You can create a renewal page for your site. Read <a href=\"https://simple-"
|
| 1342 |
+
"membership-plugin.com/creating-membership-renewal-button/\" target=\"_blank"
|
| 1343 |
+
"\">this documentation</a> to learn how to create a renewal page."
|
| 1344 |
+
msgstr ""
|
| 1345 |
+
"Sie können eine Seite für die Erneuerung der Mitgliedschaft für Ihre Website "
|
| 1346 |
+
"einrichten. Lesen Sie dazu <a href=\"https://simple-membership-plugin.com/"
|
| 1347 |
+
"creating-membership-renewal-button/\" target=\"_blank\">diese Dokumentation</"
|
| 1348 |
+
"a> für Informationen, wie Sie eine Seite für die Erneuerung der "
|
| 1349 |
+
"Mitgliedschaft einrichten."
|
| 1350 |
+
|
| 1351 |
+
#: classes/class.swpm-settings.php:195
|
| 1352 |
+
msgid "After Registration Redirect URL"
|
| 1353 |
+
msgstr "URL, zu der nach der Registrierung weitergeleitet wird"
|
| 1354 |
+
|
| 1355 |
+
#: classes/class.swpm-settings.php:196
|
| 1356 |
+
msgid ""
|
| 1357 |
+
"You can enter an URL here to redirect the members to this page after they "
|
| 1358 |
+
"submit the registration form. Read <a href=\"https://simple-membership-"
|
| 1359 |
+
"plugin.com/configure-after-registration-redirect-for-members/\" target="
|
| 1360 |
+
"\"_blank\">this documentation</a> to learn how to setup after registration "
|
| 1361 |
+
"redirect."
|
| 1362 |
+
msgstr ""
|
| 1363 |
+
"Sie können hier eine URL eingeben, um die Mitglieder auf diese Seite "
|
| 1364 |
+
"weiterzuleiten, nachdem sie das Registrierungsformular abgeschickt haben. "
|
| 1365 |
+
"Lesen Sie dazu <a href=\"https://simple-membership-plugin.com/creating-"
|
| 1366 |
+
"membership-renewal-button/\" target=\"_blank\">diese Dokumentation</a> für "
|
| 1367 |
+
"Informationen, wie Sie die Weiterleitung nach der Registrierung einrichten."
|
| 1368 |
+
|
| 1369 |
+
#: classes/class.swpm-settings.php:198
|
| 1370 |
+
msgid "Enable Auto Login After Registration"
|
| 1371 |
+
msgstr "Autom. Login nach Registrierung erlauben"
|
| 1372 |
+
|
| 1373 |
+
#: classes/class.swpm-settings.php:199
|
| 1374 |
+
msgid ""
|
| 1375 |
+
"Use this option if you want the members to be automatically logged into your "
|
| 1376 |
+
"site right after they complete the registration. This option will override "
|
| 1377 |
+
"any after registration redirection and instead it will trigger the after "
|
| 1378 |
+
"login redirection. Read <a href=\"https://simple-membership-plugin.com/"
|
| 1379 |
+
"configure-auto-login-after-registration-members/\" target=\"_blank\">this "
|
| 1380 |
+
"documentation</a> to learn more."
|
| 1381 |
+
msgstr ""
|
| 1382 |
+
"Wenden Sie diese Möglichkeit an, wenn Sie möchten, dass die Mitglieder "
|
| 1383 |
+
"automatisch eingeloggt sind, wenn sie die Registrierung abgeschlossen haben. "
|
| 1384 |
+
"Lesen Sie dazu <a href=\"https://simple-membership-plugin.com/creating-"
|
| 1385 |
+
"membership-renewal-button/\" target=\"_blank\">diese Dokumentation</a> für "
|
| 1386 |
+
"weitere Informationen."
|
| 1387 |
+
|
| 1388 |
+
#: classes/class.swpm-settings.php:201
|
| 1389 |
+
msgid "After Logout Redirect URL"
|
| 1390 |
+
msgstr ""
|
| 1391 |
+
"URL, zu der nach dem Logout\n"
|
| 1392 |
+
" weitergeleitet wird"
|
| 1393 |
+
|
| 1394 |
+
#: classes/class.swpm-settings.php:202
|
| 1395 |
+
msgid ""
|
| 1396 |
+
"You can enter an URL here to redirect the members to this page after they "
|
| 1397 |
+
"click the logout link to logout from your site."
|
| 1398 |
+
msgstr ""
|
| 1399 |
+
"Sie können hier eine URL angeben, auf die Mitglieder geleitet werden, "
|
| 1400 |
+
"nachdem Sie den Logout Link zum Ausloggen angeklickt haben."
|
| 1401 |
+
|
| 1402 |
+
#: classes/class.swpm-settings.php:204
|
| 1403 |
+
msgid "Logout Member on Browser Close"
|
| 1404 |
+
msgstr "Mitglied ausloggen, wenn der Browser geschlossen wird"
|
| 1405 |
+
|
| 1406 |
+
#: classes/class.swpm-settings.php:205
|
| 1407 |
+
msgid ""
|
| 1408 |
+
"Enable this option if you want the member to be logged out of the account "
|
| 1409 |
+
"when he closes the browser."
|
| 1410 |
+
msgstr ""
|
| 1411 |
+
"Aktivieren Sie diese Option, wenn Sie möchten, dass das Mitglied aus dem "
|
| 1412 |
+
"Konto ausgeloggt wird, wenn es den Browser schließt."
|
| 1413 |
+
|
| 1414 |
+
#: classes/class.swpm-settings.php:207
|
| 1415 |
+
msgid "Allow Account Deletion"
|
| 1416 |
+
msgstr "Kontolöschung zulassen"
|
| 1417 |
+
|
| 1418 |
+
#: classes/class.swpm-settings.php:208
|
| 1419 |
+
msgid "Allow users to delete their accounts."
|
| 1420 |
+
msgstr "Benutzern erlauben, ihre Konten zu löschen."
|
| 1421 |
+
|
| 1422 |
+
#: classes/class.swpm-settings.php:210
|
| 1423 |
+
msgid "Force Strong Password for Members"
|
| 1424 |
+
msgstr "Ein starkes Passwort erzwingen"
|
| 1425 |
+
|
| 1426 |
+
#: classes/class.swpm-settings.php:211
|
| 1427 |
+
msgid ""
|
| 1428 |
+
"Enable this if you want the users to be forced to use a strong password for "
|
| 1429 |
+
"their accounts."
|
| 1430 |
+
msgstr ""
|
| 1431 |
+
"Aktivieren Sie diese Option, wenn Mitglieder nur starke Passworte nutzen "
|
| 1432 |
+
"dürfen."
|
| 1433 |
+
|
| 1434 |
+
#: classes/class.swpm-settings.php:213
|
| 1435 |
+
msgid "Use WordPress Timezone"
|
| 1436 |
+
msgstr "Die Wordpress Zeitzone benutzen"
|
| 1437 |
+
|
| 1438 |
+
#: classes/class.swpm-settings.php:214
|
| 1439 |
+
msgid ""
|
| 1440 |
+
"Use this option if you want to use the timezone value specified in your "
|
| 1441 |
+
"WordPress General Settings interface."
|
| 1442 |
+
msgstr ""
|
| 1443 |
+
"Verwenden Sie diese Option, wenn Sie den in Ihrer WordPress Einstellungen "
|
| 1444 |
+
"angegebenen Zeitzonenwert verwenden möchten."
|
| 1445 |
+
|
| 1446 |
+
#: classes/class.swpm-settings.php:216
|
| 1447 |
+
msgid "Auto Delete Pending Account"
|
| 1448 |
+
msgstr "Automatisches Löschen einer ausstehenden Mitgliedschaft"
|
| 1449 |
+
|
| 1450 |
+
#: classes/class.swpm-settings.php:219
|
| 1451 |
+
msgid "Select how long you want to keep \"pending\" account."
|
| 1452 |
+
msgstr ""
|
| 1453 |
+
"Wählen Sie aus, wie lange Sie ausstehende Benutzerkonten behalten möchten."
|
| 1454 |
+
|
| 1455 |
+
#: classes/class.swpm-settings.php:221
|
| 1456 |
+
msgid "Admin Dashboard Access Permission"
|
| 1457 |
+
msgstr "Admin-Dashboard Zugriffsberechtigung"
|
| 1458 |
+
|
| 1459 |
+
#: classes/class.swpm-settings.php:224
|
| 1460 |
+
msgid ""
|
| 1461 |
+
"SWPM admin dashboard is accessible to admin users only (just like any other "
|
| 1462 |
+
"plugin). You can allow users with other WP user role to access the SWPM "
|
| 1463 |
+
"admin dashboard by selecting a value here."
|
| 1464 |
+
msgstr ""
|
| 1465 |
+
"Auf das SWPM Dashboard können nur Admins zugreifen (wie bei jedem Plugin). "
|
| 1466 |
+
"Sie können anderen Benutzern mit anderen WP Rollen den Zugriff auf das SWPM "
|
| 1467 |
+
"Dashboard ermöglichen, wenn Sie hier den entsprechenden Wert wählen."
|
| 1468 |
+
|
| 1469 |
+
#: classes/class.swpm-settings.php:226
|
| 1470 |
+
msgid "Force WP User Synchronization"
|
| 1471 |
+
msgstr "Synchronisation mit den WP Benutzereinträgen erzwingen"
|
| 1472 |
+
|
| 1473 |
+
#: classes/class.swpm-settings.php:227
|
| 1474 |
+
msgid ""
|
| 1475 |
+
"Enable this option if you want to force the member login to be synchronized "
|
| 1476 |
+
"with WP user account. This can be useful if you are using another plugin "
|
| 1477 |
+
"that uses WP user records. For example: bbPress plugin."
|
| 1478 |
+
msgstr ""
|
| 1479 |
+
"Aktivieren Sie diese Option, wenn eingeloggte Mitglieder mit den WP User "
|
| 1480 |
+
"Einträgen synchronisiert werden sollen. Dies kann hilfreich sein, wenn Sie "
|
| 1481 |
+
"ein anderes Plugin installiert haben, das WP User Einträge verwendet. Bspw. "
|
| 1482 |
+
"das bbPress Plugin."
|
| 1483 |
+
|
| 1484 |
+
#: classes/class.swpm-settings.php:230
|
| 1485 |
+
msgid "Create Member Accounts for New WP Users"
|
| 1486 |
+
msgstr "Mitgliedschaften für neue Anwender einrichten"
|
| 1487 |
+
|
| 1488 |
+
#: classes/class.swpm-settings.php:232
|
| 1489 |
+
msgid "Enable Auto Create Member Accounts"
|
| 1490 |
+
msgstr "Automatische Erstellung einer Mitgliedschaft erlauben"
|
| 1491 |
+
|
| 1492 |
+
#: classes/class.swpm-settings.php:233
|
| 1493 |
+
msgid ""
|
| 1494 |
+
"Enable this option to automatically create member accounts for any new WP "
|
| 1495 |
+
"user that is created by another plugin."
|
| 1496 |
+
msgstr ""
|
| 1497 |
+
"Aktivieren Sie diese Option um Mitgliedschaften automatisch einrichten zu "
|
| 1498 |
+
"lassen, wenn ein WP User Datensatz durch ein anderes WP Plugin erstellt "
|
| 1499 |
+
"worden ist."
|
| 1500 |
+
|
| 1501 |
+
#: classes/class.swpm-settings.php:236
|
| 1502 |
+
msgid "Default Membership Level"
|
| 1503 |
+
msgstr "Voreingestellte Mitgliedschaftsstufe"
|
| 1504 |
+
|
| 1505 |
+
#: classes/class.swpm-settings.php:239
|
| 1506 |
+
msgid ""
|
| 1507 |
+
"When automatically creating a member account using this feature, the "
|
| 1508 |
+
"membership level of the user will be set to the one you specify here."
|
| 1509 |
+
msgstr ""
|
| 1510 |
+
"Wenn mit dieser Funktion eine Mitgliedschaft automatisch eingerichtet wird, "
|
| 1511 |
+
"wird die hier angegebene Mitgliedschaftsstufe gesetzt."
|
| 1512 |
+
|
| 1513 |
+
#: classes/class.swpm-settings.php:245
|
| 1514 |
+
msgid ""
|
| 1515 |
+
"When automatically creating a member account using this feature, the "
|
| 1516 |
+
"membership account status of the user will be set to the one you specify "
|
| 1517 |
+
"here."
|
| 1518 |
+
msgstr ""
|
| 1519 |
+
"Wenn mit dieser Funktion eine Mitgliedschaft automatisch eingerichtet wird, "
|
| 1520 |
+
"wird der hier angegebene Mitglieder-Status gesetzt."
|
| 1521 |
+
|
| 1522 |
+
#: classes/class.swpm-settings.php:247
|
| 1523 |
+
msgid "Payment Notification Forward URL"
|
| 1524 |
+
msgstr "URL an die die Zahlungsbenachrichtigung weitergeleitet werden soll"
|
| 1525 |
+
|
| 1526 |
+
#: classes/class.swpm-settings.php:248
|
| 1527 |
+
msgid ""
|
| 1528 |
+
"You can enter an URL here to forward the payment notification after the "
|
| 1529 |
+
"membership payment has been processed by this plugin. Useful if you want to "
|
| 1530 |
+
"forward the payment notification to an external script for further "
|
| 1531 |
+
"processing."
|
| 1532 |
+
msgstr ""
|
| 1533 |
+
"Sie können hier eine URL angeben, an die die Zahlungsbenachrichtigung "
|
| 1534 |
+
"weitergeleitet wird, nachdem die Zahlung durch dieses Plugin verarbeitet "
|
| 1535 |
+
"worden ist. Nützlich, wenn die die Zahlungsbenachrichtigung an ein externes "
|
| 1536 |
+
"Skript für eine Weiterverarbeitung weitergegebene werden soll."
|
| 1537 |
+
|
| 1538 |
+
#: classes/class.swpm-settings.php:251 views/add.php:65
|
| 1539 |
+
msgid "Terms and Conditions"
|
| 1540 |
+
msgstr "Allgemeine Geschäftbedingungen"
|
| 1541 |
+
|
| 1542 |
+
#: classes/class.swpm-settings.php:253
|
| 1543 |
+
msgid "Enable Terms and Conditions"
|
| 1544 |
+
msgstr "Allgemeine Geschäftsbedingungen aktivieren"
|
| 1545 |
+
|
| 1546 |
+
#: classes/class.swpm-settings.php:254
|
| 1547 |
+
msgid "Users must accept the terms before they can complete the registration."
|
| 1548 |
+
msgstr ""
|
| 1549 |
+
"Mitglieder müssen die allgemeinen Geschäftsbedingungen akzeptieren, um die "
|
| 1550 |
+
"Registrierung abzuschließen."
|
| 1551 |
+
|
| 1552 |
+
#: classes/class.swpm-settings.php:255
|
| 1553 |
+
msgid "Terms and Conditions Page URL"
|
| 1554 |
+
msgstr "URL der allgemeinen Geschäftsbedingungen"
|
| 1555 |
+
|
| 1556 |
+
#: classes/class.swpm-settings.php:256
|
| 1557 |
+
msgid ""
|
| 1558 |
+
"Enter the URL of your terms and conditions page. You can create a WordPress "
|
| 1559 |
+
"page and specify your terms in there then specify the URL of that page in "
|
| 1560 |
+
"the above field."
|
| 1561 |
+
msgstr "Geben Sie die URL Ihrer allgemeinen Geschäftsbedingungen ein."
|
| 1562 |
+
|
| 1563 |
+
#: classes/class.swpm-settings.php:257
|
| 1564 |
+
msgid "Enable Privacy Policy"
|
| 1565 |
+
msgstr "Datenschutzerklärung aktivieren"
|
| 1566 |
+
|
| 1567 |
+
#: classes/class.swpm-settings.php:258
|
| 1568 |
+
msgid "Users must accept it before they can complete the registration."
|
| 1569 |
+
msgstr ""
|
| 1570 |
+
"Mitglieder müssen die Datenschutzerklärung bestätigen, um die Registrierung "
|
| 1571 |
+
"abzuschließen."
|
| 1572 |
+
|
| 1573 |
+
#: classes/class.swpm-settings.php:259
|
| 1574 |
+
msgid "Privacy Policy Page URL"
|
| 1575 |
+
msgstr "URL der Datenschutzerklärung"
|
| 1576 |
+
|
| 1577 |
+
#: classes/class.swpm-settings.php:260
|
| 1578 |
+
msgid "Enter the URL of your privacy policy page."
|
| 1579 |
+
msgstr "Geben Sie die URL der Datenschutzerklärung an."
|
| 1580 |
+
|
| 1581 |
+
#: classes/class.swpm-settings.php:350 classes/class.swpm-settings.php:396
|
| 1582 |
+
#: classes/class.swpm-settings.php:425
|
| 1583 |
+
msgid "Settings updated!"
|
| 1584 |
+
msgstr "Einstellungen aktualisiert!"
|
| 1585 |
+
|
| 1586 |
+
#: classes/class.swpm-settings.php:355
|
| 1587 |
+
msgid "General Plugin Settings."
|
| 1588 |
+
msgstr "Allgemeine Plugin-Einstellungen."
|
| 1589 |
+
|
| 1590 |
+
#: classes/class.swpm-settings.php:359
|
| 1591 |
+
msgid "Page Setup and URL Related settings."
|
| 1592 |
+
msgstr "Seiten- und URL-spezifische Einstellungen."
|
| 1593 |
+
|
| 1594 |
+
#: classes/class.swpm-settings.php:362
|
| 1595 |
+
msgid ""
|
| 1596 |
+
"The following pages are required for the plugin to function correctly. These "
|
| 1597 |
+
"pages were automatically created by the plugin at install time."
|
| 1598 |
+
msgstr ""
|
| 1599 |
+
"Die folgenden Seiten sind für ein korrektes Funktionieren des Plugin "
|
| 1600 |
+
"erforderlich. Diese Seiten werden bei der Installation des Plugin "
|
| 1601 |
+
"automatisch angelegt."
|
| 1602 |
+
|
| 1603 |
+
#: classes/class.swpm-settings.php:367
|
| 1604 |
+
msgid "Testing and Debug Related Settings."
|
| 1605 |
+
msgstr "Einstellungen zum Testen und Debuggen."
|
| 1606 |
+
|
| 1607 |
+
#: classes/class.swpm-settings.php:371
|
| 1608 |
+
msgid ""
|
| 1609 |
+
"This email will be sent to your users when they complete the registration "
|
| 1610 |
+
"and become a member."
|
| 1611 |
+
msgstr ""
|
| 1612 |
+
"Diese Email wird den Benutzern gesendet, wenn Sie Ihre Registrierung "
|
| 1613 |
+
"abgeschlossen haben und Mitglied geworden sind."
|
| 1614 |
+
|
| 1615 |
+
#: classes/class.swpm-settings.php:375
|
| 1616 |
+
msgid ""
|
| 1617 |
+
"This email will be sent to your users when they use the password reset "
|
| 1618 |
+
"functionality."
|
| 1619 |
+
msgstr ""
|
| 1620 |
+
"Diese Email wird den Mitgliedern gesendet, wenn sie das Passwort zurück "
|
| 1621 |
+
"setzen."
|
| 1622 |
+
|
| 1623 |
+
#: classes/class.swpm-settings.php:381
|
| 1624 |
+
msgid ""
|
| 1625 |
+
"This interface lets you custsomize the various emails that gets sent to your "
|
| 1626 |
+
"members for various actions. The default settings should be good to get your "
|
| 1627 |
+
"started."
|
| 1628 |
+
msgstr ""
|
| 1629 |
+
"Über diese Schnittstelle können Sie die verschiedenen E-Mails anpassen, die "
|
| 1630 |
+
"für verschiedene Aktionen an Ihre Mitglieder gesendet werden. Die "
|
| 1631 |
+
"Standardeinstellungen sollten ausreichen, um loszulegen."
|
| 1632 |
+
|
| 1633 |
+
#: classes/class.swpm-settings.php:385 views/admin_tools_settings.php:82
|
| 1634 |
+
msgid "This documentation"
|
| 1635 |
+
msgstr "Plugin-Dokumentation"
|
| 1636 |
+
|
| 1637 |
+
#: classes/class.swpm-settings.php:386
|
| 1638 |
+
msgid ""
|
| 1639 |
+
" explains what email merge tags you can use in the email body field to "
|
| 1640 |
+
"customize it (if you want to)."
|
| 1641 |
+
msgstr ""
|
| 1642 |
+
" erklärt, welche E-Mail-Merge-Tags Sie im E-Mail-Text verwenden können, um "
|
| 1643 |
+
"sie anzupassen (wenn Sie möchten)."
|
| 1644 |
+
|
| 1645 |
+
#: classes/class.swpm-settings.php:399
|
| 1646 |
+
msgid "Settings in this section apply to all emails."
|
| 1647 |
+
msgstr "Die Einstellungen in diesem Abschnitt gelten für alle E-Mails."
|
| 1648 |
+
|
| 1649 |
+
#: classes/class.swpm-settings.php:403
|
| 1650 |
+
msgid ""
|
| 1651 |
+
"This email will be sent to your users after account upgrade (when an "
|
| 1652 |
+
"existing member pays for a new membership level)."
|
| 1653 |
+
msgstr ""
|
| 1654 |
+
"Diese Email wird den Mitgliedern gesendet, wenn sie den Zahlungsvorgang für "
|
| 1655 |
+
"einen höheren Level der Mitgliedschaft abgeschlossen haben."
|
| 1656 |
+
|
| 1657 |
+
#: classes/class.swpm-settings.php:407
|
| 1658 |
+
msgid ""
|
| 1659 |
+
"This email will be sent to your members when you use the bulk account "
|
| 1660 |
+
"activate and notify action."
|
| 1661 |
+
msgstr ""
|
| 1662 |
+
"Diese Email wird an die Mitglieder gesendet, wenn Sie die Aktivierung und "
|
| 1663 |
+
"Benachrichtigung gesammelt vornehmen."
|
| 1664 |
+
|
| 1665 |
+
#: classes/class.swpm-settings.php:408
|
| 1666 |
+
msgid ""
|
| 1667 |
+
" You cannot use email merge tags in this email. You can only use generic "
|
| 1668 |
+
"text."
|
| 1669 |
+
msgstr ""
|
| 1670 |
+
" Sie können nicht E-Mail-Merge-Tags in dieser e-Mail verwenden. Sie können "
|
| 1671 |
+
"nur generische Text verwenden."
|
| 1672 |
+
|
| 1673 |
+
#: classes/class.swpm-settings.php:413
|
| 1674 |
+
msgid ""
|
| 1675 |
+
"This email will be sent if Email Activation is enabled for a Membership "
|
| 1676 |
+
"Level."
|
| 1677 |
+
msgstr ""
|
| 1678 |
+
"Diese E-Mail wird gesendet, wenn die E-Mail-Aktivierung für eine "
|
| 1679 |
+
"Mitgliedschaftsstufe aktiviert ist."
|
| 1680 |
+
|
| 1681 |
+
#: classes/class.swpm-settings.php:417
|
| 1682 |
+
msgid ""
|
| 1683 |
+
"This email will be sent to prompt users to complete registration after the "
|
| 1684 |
+
"payment."
|
| 1685 |
+
msgstr ""
|
| 1686 |
+
"Diese E-Mail wird gesendet, um Benutzer zu veranlassen, die Registrierung "
|
| 1687 |
+
"nach der Zahlung zu vervollständigen."
|
| 1688 |
+
|
| 1689 |
+
#: classes/class.swpm-settings.php:428
|
| 1690 |
+
msgid "This page allows you to configure some advanced features of the plugin."
|
| 1691 |
+
msgstr ""
|
| 1692 |
+
"Auf dieser Seite können Sie einige erweiterte Einstellungen dieses Plugins "
|
| 1693 |
+
"konfigurieren."
|
| 1694 |
+
|
| 1695 |
+
#: classes/class.swpm-settings.php:432
|
| 1696 |
+
msgid ""
|
| 1697 |
+
"This section allows you to configure automatic creation of member accounts "
|
| 1698 |
+
"when new WP User records are created by another plugin. It can be useful if "
|
| 1699 |
+
"you are using another plugin that creates WP user records and you want them "
|
| 1700 |
+
"to be recognized in the membership plugin."
|
| 1701 |
+
msgstr ""
|
| 1702 |
+
"Dies ermöglicht Ihnen, Mitgliedschaften automatisch einrichten zu lassen, "
|
| 1703 |
+
"wenn ein WP User Datensatz durch ein anderes WP Plugin erstellt worden ist. "
|
| 1704 |
+
"Dies kann hilfreich sein, wenn Sie ein anderes Plugin installiert haben, das "
|
| 1705 |
+
"WP User Einträge erstellt und Sie möchten, dass diese Einträge von "
|
| 1706 |
+
"Membership Plugin übernommen werden."
|
| 1707 |
+
|
| 1708 |
+
#: classes/class.swpm-settings.php:436
|
| 1709 |
+
msgid ""
|
| 1710 |
+
"This section allows you to configure terms and conditions and privacy policy "
|
| 1711 |
+
"that users must accept at registration time."
|
| 1712 |
+
msgstr ""
|
| 1713 |
+
"In diesem Bereich können Sie die Zugriffe auf die allgemeinen "
|
| 1714 |
+
"Geschäftsbedingungen und die Datenschutzerklärung eingeben, die die Anwender "
|
| 1715 |
+
"bei der Registrierung akzeptieren müssen."
|
| 1716 |
+
|
| 1717 |
+
#: classes/class.swpm-settings.php:565
|
| 1718 |
+
msgid "Simple WP Membership::Settings"
|
| 1719 |
+
msgstr "Simple WP Membership::Einstellungen"
|
| 1720 |
+
|
| 1721 |
+
#: classes/class.swpm-utils-member.php:36
|
| 1722 |
+
#: classes/class.swpm-utils-member.php:44
|
| 1723 |
+
#: classes/class.swpm-utils-member.php:52
|
| 1724 |
+
#: classes/class.swpm-utils-member.php:62
|
| 1725 |
+
msgid "User is not logged in."
|
| 1726 |
+
msgstr "Benutzer ist nicht angemeldet."
|
| 1727 |
+
|
| 1728 |
+
#: classes/class.swpm-utils-member.php:80
|
| 1729 |
+
msgid "No Expiry"
|
| 1730 |
+
msgstr "Kein Ablaufdatum"
|
| 1731 |
+
|
| 1732 |
+
#: classes/class.swpm-utils-misc.php:50
|
| 1733 |
+
msgid "Registration"
|
| 1734 |
+
msgstr "Registrierung"
|
| 1735 |
+
|
| 1736 |
+
#: classes/class.swpm-utils-misc.php:73
|
| 1737 |
+
msgid "Member Login"
|
| 1738 |
+
msgstr "Login für Mitglieder"
|
| 1739 |
+
|
| 1740 |
+
#: classes/class.swpm-utils-misc.php:96
|
| 1741 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:117
|
| 1742 |
+
msgid "Profile"
|
| 1743 |
+
msgstr "Profil"
|
| 1744 |
+
|
| 1745 |
+
#: classes/class.swpm-utils-misc.php:119
|
| 1746 |
+
msgid "Password Reset"
|
| 1747 |
+
msgstr "Passwort zurücksetzen"
|
| 1748 |
+
|
| 1749 |
+
#: classes/class.swpm-utils-misc.php:168
|
| 1750 |
+
#, php-format
|
| 1751 |
+
msgid ""
|
| 1752 |
+
"You will be automatically redirected in a few seconds. If not, please %s."
|
| 1753 |
+
msgstr ""
|
| 1754 |
+
"Sie werden automatisch in ein paar Sekunden weitergeleitet. Falls nicht, "
|
| 1755 |
+
"bitte %s."
|
| 1756 |
+
|
| 1757 |
+
#: classes/class.swpm-utils-misc.php:172
|
| 1758 |
+
msgid "Action Status"
|
| 1759 |
+
msgstr "Aktionsstatus"
|
| 1760 |
+
|
| 1761 |
+
#: classes/class.swpm-utils-misc.php:274
|
| 1762 |
+
msgid "Not a Member?"
|
| 1763 |
+
msgstr "Noch kein Mitglied?"
|
| 1764 |
+
|
| 1765 |
+
#: classes/class.swpm-utils-misc.php:285
|
| 1766 |
+
msgid "renew"
|
| 1767 |
+
msgstr "erneuern"
|
| 1768 |
+
|
| 1769 |
+
#: classes/class.swpm-utils-misc.php:285
|
| 1770 |
+
msgid " your account to gain access to this content."
|
| 1771 |
+
msgstr " Ihr Konto, um Zugang zu diesem Inhalt zu erhalten."
|
| 1772 |
+
|
| 1773 |
+
#: classes/class.swpm-utils-misc.php:343 classes/class.swpm-utils-misc.php:349
|
| 1774 |
+
msgid "Error! This action ("
|
| 1775 |
+
msgstr "Fehler! Diese Aktion ("
|
| 1776 |
+
|
| 1777 |
+
#: classes/class.swpm-utils-misc.php:421
|
| 1778 |
+
msgid "(Please Select)"
|
| 1779 |
+
msgstr "(Bitte auswählen)"
|
| 1780 |
+
|
| 1781 |
+
#: classes/class.swpm-utils-template.php:38
|
| 1782 |
+
msgid "Error! Failed to find a template path for the specified template: "
|
| 1783 |
+
msgstr ""
|
| 1784 |
+
"Fehler! Ein Zugriffspfad auf dieses Template konnte nicht gefunden werden: "
|
| 1785 |
+
|
| 1786 |
+
#: classes/class.swpm-utils.php:101
|
| 1787 |
+
msgid "Never"
|
| 1788 |
+
msgstr "Niemals"
|
| 1789 |
+
|
| 1790 |
+
#: classes/class.swpm-utils.php:116 views/admin_members_list.php:19
|
| 1791 |
+
msgid "Active"
|
| 1792 |
+
msgstr "Aktiv"
|
| 1793 |
+
|
| 1794 |
+
#: classes/class.swpm-utils.php:117 views/admin_members_list.php:20
|
| 1795 |
+
msgid "Inactive"
|
| 1796 |
+
msgstr "Inaktiv"
|
| 1797 |
+
|
| 1798 |
+
#: classes/class.swpm-utils.php:118 views/admin_members_list.php:21
|
| 1799 |
+
msgid "Activation Required"
|
| 1800 |
+
msgstr "Aktivierung benötigt"
|
| 1801 |
+
|
| 1802 |
+
#: classes/class.swpm-utils.php:119 views/admin_members_list.php:22
|
| 1803 |
+
msgid "Pending"
|
| 1804 |
+
msgstr "Ausstehend"
|
| 1805 |
+
|
| 1806 |
+
#: classes/class.swpm-utils.php:120 views/admin_members_list.php:24
|
| 1807 |
+
msgid "Expired"
|
| 1808 |
+
msgstr "Abgelaufen"
|
| 1809 |
+
|
| 1810 |
+
#: classes/class.swpm-utils.php:414 views/account_delete_warning.php:3
|
| 1811 |
+
msgid "Delete Account"
|
| 1812 |
+
msgstr "Konto löschen"
|
| 1813 |
+
|
| 1814 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:75
|
| 1815 |
+
msgid "Payment Button ID"
|
| 1816 |
+
msgstr "Zahlungs-Button-ID"
|
| 1817 |
+
|
| 1818 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:76
|
| 1819 |
+
msgid "Payment Button Title"
|
| 1820 |
+
msgstr "Zahlungs Button Titel"
|
| 1821 |
+
|
| 1822 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:77
|
| 1823 |
+
msgid "Membership Level ID"
|
| 1824 |
+
msgstr "Mitgliedsschaftsstufen ID"
|
| 1825 |
+
|
| 1826 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:78
|
| 1827 |
+
msgid "Button Type"
|
| 1828 |
+
msgstr "Button Typ"
|
| 1829 |
+
|
| 1830 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:79
|
| 1831 |
+
msgid "Button Shortcode"
|
| 1832 |
+
msgstr "Button Shortcode"
|
| 1833 |
+
|
| 1834 |
+
#: classes/admin-includes/class.swpm-payment-buttons-list-table.php:127
|
| 1835 |
+
#: views/admin_members_list.php:9
|
| 1836 |
+
#: views/payments/admin_all_payment_transactions.php:32
|
| 1837 |
+
msgid "The selected entry was deleted!"
|
| 1838 |
+
msgstr "Der ausgewählte Eintrag wurde gelöscht!"
|
| 1839 |
+
|
| 1840 |
+
#: classes/admin-includes/class.swpm-payments-admin-menu.php:21
|
| 1841 |
+
msgid "Simple Membership::Payments"
|
| 1842 |
+
msgstr "Simple WP Membership::Zahlungsvorgänge"
|
| 1843 |
+
|
| 1844 |
+
#: classes/admin-includes/class.swpm-payments-admin-menu.php:25
|
| 1845 |
+
msgid "Transactions"
|
| 1846 |
+
msgstr "Transaktionen"
|
| 1847 |
+
|
| 1848 |
+
#: classes/admin-includes/class.swpm-payments-admin-menu.php:26
|
| 1849 |
+
msgid "Manage Payment Buttons"
|
| 1850 |
+
msgstr "Zahlungsarten verwalten"
|
| 1851 |
+
|
| 1852 |
+
#: classes/admin-includes/class.swpm-payments-admin-menu.php:27
|
| 1853 |
+
#: views/payments/admin_payment_buttons.php:27
|
| 1854 |
+
msgid "Create New Button"
|
| 1855 |
+
msgstr "Neue Schaltfläche erstellen"
|
| 1856 |
+
|
| 1857 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:57
|
| 1858 |
+
#: views/template-1.php:95 views/template-2.php:97
|
| 1859 |
+
msgid "View Profile"
|
| 1860 |
+
msgstr "Profil anzeigen"
|
| 1861 |
+
|
| 1862 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:76
|
| 1863 |
+
msgid "Row ID"
|
| 1864 |
+
msgstr "Zeilen-ID"
|
| 1865 |
+
|
| 1866 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:77
|
| 1867 |
+
#: views/forgot_password.php:5
|
| 1868 |
+
msgid "Email Address"
|
| 1869 |
+
msgstr "E-Mail Adresse"
|
| 1870 |
+
|
| 1871 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:80
|
| 1872 |
+
msgid "Member Profile"
|
| 1873 |
+
msgstr "Mitgliedsprofil"
|
| 1874 |
+
|
| 1875 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:82
|
| 1876 |
+
msgid "Transaction ID"
|
| 1877 |
+
msgstr "Transaktions-ID"
|
| 1878 |
+
|
| 1879 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:83
|
| 1880 |
+
msgid "Subscriber ID"
|
| 1881 |
+
msgstr "Abonnenten-ID"
|
| 1882 |
+
|
| 1883 |
+
#: classes/admin-includes/class.swpm-payments-list-table.php:84
|
| 1884 |
+
msgid "Amount"
|
| 1885 |
+
msgstr "Summe"
|
| 1886 |
+
|
| 1887 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:60
|
| 1888 |
+
msgid "Your membership profile will be updated to reflect the payment."
|
| 1889 |
+
msgstr "Ihr Mitglieds Profil wird gemäß Zahlungsbetrag aktualisiert."
|
| 1890 |
+
|
| 1891 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:61
|
| 1892 |
+
msgid "Your profile username: "
|
| 1893 |
+
msgstr "Ihr Benutzername: "
|
| 1894 |
+
|
| 1895 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:73
|
| 1896 |
+
msgid "Click on the following link to complete the registration."
|
| 1897 |
+
msgstr ""
|
| 1898 |
+
"Klicken Sie auf den folgenden Link, um die Registrierung abzuschließen."
|
| 1899 |
+
|
| 1900 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:74
|
| 1901 |
+
msgid "Click here to complete your paid registration"
|
| 1902 |
+
msgstr "Klicken Sie hier, um Ihre bezahlte Registrierung abzuschließen"
|
| 1903 |
+
|
| 1904 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:79
|
| 1905 |
+
msgid ""
|
| 1906 |
+
"If you have just made a membership payment then your payment is yet to be "
|
| 1907 |
+
"processed. Please check back in a few minutes. An email will be sent to you "
|
| 1908 |
+
"with the details shortly."
|
| 1909 |
+
msgstr ""
|
| 1910 |
+
"Wenn Sie die Zahlung für die Mitgliedschaft gerade veranlasst haben, dann "
|
| 1911 |
+
"ist der Zahlungsvorgang möglicherweise noch nicht abgeschlossen. Bitte "
|
| 1912 |
+
"warten Sie noch eine kurze Zeit. Sie erhalten in Kürze eine Email zur "
|
| 1913 |
+
"Bestätigung."
|
| 1914 |
+
|
| 1915 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:93
|
| 1916 |
+
msgid "Expiry: "
|
| 1917 |
+
msgstr "Ablauf: "
|
| 1918 |
+
|
| 1919 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:95
|
| 1920 |
+
msgid "You are not logged-in as a member"
|
| 1921 |
+
msgstr "Sie sind nicht als Mitglied angemeldet"
|
| 1922 |
+
|
| 1923 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:115
|
| 1924 |
+
msgid "Logged in as: "
|
| 1925 |
+
msgstr "Eingeloggt als: "
|
| 1926 |
+
|
| 1927 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:118
|
| 1928 |
+
#: views/loggedin.php:31
|
| 1929 |
+
msgid "Logout"
|
| 1930 |
+
msgstr "Ausloggen"
|
| 1931 |
+
|
| 1932 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:121
|
| 1933 |
+
msgid "Login Here"
|
| 1934 |
+
msgstr "Hier einloggen"
|
| 1935 |
+
|
| 1936 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:122
|
| 1937 |
+
msgid "Not a member? "
|
| 1938 |
+
msgstr "Noch kein Mitglied? "
|
| 1939 |
+
|
| 1940 |
+
#: classes/shortcode-related/class.swpm-shortcodes-handler.php:123
|
| 1941 |
+
msgid "Join Now"
|
| 1942 |
+
msgstr "Registrieren Sie sich hier"
|
| 1943 |
+
|
| 1944 |
+
#: ipn/swpm-smart-checkout-ipn.php:260 ipn/swpm-smart-checkout-ipn.php:285
|
| 1945 |
+
#, php-format
|
| 1946 |
+
msgid "Error occured during payment verification. Error code: %d. Message: %s"
|
| 1947 |
+
msgstr ""
|
| 1948 |
+
"Fehler bei der Verifizierung der Zahlung aufgetreten. Fehler Code: %d. "
|
| 1949 |
+
"Nachricht: %s"
|
| 1950 |
+
|
| 1951 |
+
#: ipn/swpm-smart-checkout-ipn.php:298
|
| 1952 |
+
#, php-format
|
| 1953 |
+
msgid ""
|
| 1954 |
+
"Payment check failed: invalid amount received. Expected %s %s, got %s %s."
|
| 1955 |
+
msgstr ""
|
| 1956 |
+
"Zahlungsprüfung fehlgeschlagen: ungültiger Betrag. Erwartet %s %s, erhalten "
|
| 1957 |
+
"%s %s."
|
| 1958 |
+
|
| 1959 |
+
#: ipn/swpm-smart-checkout-ipn.php:315
|
| 1960 |
+
msgid "Empty payment data received."
|
| 1961 |
+
msgstr "Leere Zahlungsdaten erhalten."
|
| 1962 |
+
|
| 1963 |
+
#: ipn/swpm-smart-checkout-ipn.php:355
|
| 1964 |
+
msgid "IPN product validation failed. Check debug log for more details."
|
| 1965 |
+
msgstr ""
|
| 1966 |
+
"IPN Produkt Verifizierung fehlgeschlagen. Siehe Debug Log für weitere "
|
| 1967 |
+
"Details."
|
| 1968 |
+
|
| 1969 |
+
#: views/account_delete_warning.php:7
|
| 1970 |
+
msgid ""
|
| 1971 |
+
"You are about to delete an account. This will delete user data associated "
|
| 1972 |
+
"with this account. "
|
| 1973 |
+
msgstr ""
|
| 1974 |
+
"Sie sind dabei, ein Mitglieds-Konto zu löschen. Es werden alle "
|
| 1975 |
+
"entsprechenden Einträge gelöscht. "
|
| 1976 |
+
|
| 1977 |
+
#: views/account_delete_warning.php:8
|
| 1978 |
+
msgid "It will also delete associated WordPress user account."
|
| 1979 |
+
msgstr "Das entsprechende WordPress Benutzer Konto wird auch gelöscht."
|
| 1980 |
+
|
| 1981 |
+
#: views/account_delete_warning.php:9
|
| 1982 |
+
msgid ""
|
| 1983 |
+
"(NOTE: for safety, we do not allow deletion of any associated WordPress "
|
| 1984 |
+
"account with administrator role)."
|
| 1985 |
+
msgstr ""
|
| 1986 |
+
"(Hinweis: zur Sicherheit können keine WordPress Benutzerkonten mit "
|
| 1987 |
+
"Administrator-Rechten gelöscht werden)"
|
| 1988 |
+
|
| 1989 |
+
#: views/account_delete_warning.php:10
|
| 1990 |
+
msgid "Continue?"
|
| 1991 |
+
msgstr "Fortfahren?"
|
| 1992 |
+
|
| 1993 |
+
#: views/account_delete_warning.php:13
|
| 1994 |
+
msgid "Password: "
|
| 1995 |
+
msgstr "Passwort: "
|
| 1996 |
+
|
| 1997 |
+
#: views/account_delete_warning.php:14
|
| 1998 |
+
msgid "Confirm Account Deletion"
|
| 1999 |
+
msgstr "Kontolöschung bestätigen"
|
| 2000 |
+
|
| 2001 |
+
#: views/add.php:24 views/admin_add.php:19 views/admin_edit.php:44
|
| 2002 |
+
#: views/edit.php:31 views/login.php:17
|
| 2003 |
+
msgid "Password"
|
| 2004 |
+
msgstr "Passwort"
|
| 2005 |
+
|
| 2006 |
+
#: views/add.php:28 views/edit.php:35
|
| 2007 |
+
msgid "Repeat Password"
|
| 2008 |
+
msgstr "Passwort wiederholen"
|
| 2009 |
+
|
| 2010 |
+
#: views/add.php:65
|
| 2011 |
+
msgid "I accept the "
|
| 2012 |
+
msgstr "Ich akzeptiere die "
|
| 2013 |
+
|
| 2014 |
+
#: views/add.php:77
|
| 2015 |
+
msgid "I agree to the "
|
| 2016 |
+
msgstr "Ich akzeptiere die "
|
| 2017 |
+
|
| 2018 |
+
#: views/add.php:77
|
| 2019 |
+
msgid "Privacy Policy"
|
| 2020 |
+
msgstr "Datenschutzerklärung"
|
| 2021 |
+
|
| 2022 |
+
#: views/add.php:88
|
| 2023 |
+
msgid "Register"
|
| 2024 |
+
msgstr "Registrieren"
|
| 2025 |
+
|
| 2026 |
+
#: views/admin_add.php:7
|
| 2027 |
+
msgid "Create a brand new user and add it to this site."
|
| 2028 |
+
msgstr ""
|
| 2029 |
+
"Erstellen Sie einen neuen Benutzer und fügen Sie ihn zu dieser Website hinzu."
|
| 2030 |
+
|
| 2031 |
+
#: views/admin_add.php:11 views/admin_add.php:15 views/admin_add_level.php:12
|
| 2032 |
+
#: views/admin_add_level.php:16 views/admin_add_level.php:20
|
| 2033 |
+
#: views/admin_edit.php:19 views/admin_edit.php:40
|
| 2034 |
+
#: views/admin_edit_level.php:16 views/admin_edit_level.php:20
|
| 2035 |
+
#: views/admin_edit_level.php:24
|
| 2036 |
+
msgid "(required)"
|
| 2037 |
+
msgstr "(Pflichtfeld)"
|
| 2038 |
+
|
| 2039 |
+
#: views/admin_add.php:15 views/admin_edit.php:40
|
| 2040 |
+
msgid "E-mail"
|
| 2041 |
+
msgstr "E-Mail Adresse"
|
| 2042 |
+
|
| 2043 |
+
#: views/admin_add.php:19
|
| 2044 |
+
msgid "(twice, required)"
|
| 2045 |
+
msgstr "(zweimal, erforderlich)"
|
| 2046 |
+
|
| 2047 |
+
#: views/admin_add.php:24 views/admin_edit.php:48
|
| 2048 |
+
msgid "Strength indicator"
|
| 2049 |
+
msgstr "Passwortsicherheit"
|
| 2050 |
+
|
| 2051 |
+
#: views/admin_add.php:25 views/admin_edit.php:49
|
| 2052 |
+
msgid ""
|
| 2053 |
+
"Hint: The password should be at least seven characters long. To make it "
|
| 2054 |
+
"stronger, use upper and lower case letters, numbers and symbols like ! \" ? "
|
| 2055 |
+
"$ % ^ & )."
|
| 2056 |
+
msgstr ""
|
| 2057 |
+
"Hinweis: Das Passwort sollte mindestens sieben Zeichen lang sein. Um es "
|
| 2058 |
+
"stärker zu machen, verwenden Sie Groß- und Kleinbuchstaben, Zahlen und "
|
| 2059 |
+
"Symbole wie! \" ? $ % ^ &)."
|
| 2060 |
+
|
| 2061 |
+
#: views/admin_add.php:29 views/admin_edit.php:53 views/loggedin.php:10
|
| 2062 |
+
msgid "Account Status"
|
| 2063 |
+
msgstr "Kontostatus"
|
| 2064 |
+
|
| 2065 |
+
#: views/admin_add.php:39
|
| 2066 |
+
msgid "Add New Member "
|
| 2067 |
+
msgstr "Neues Mitglied hinzufügen "
|
| 2068 |
+
|
| 2069 |
+
#: views/admin_addon_settings.php:3
|
| 2070 |
+
msgid ""
|
| 2071 |
+
"Some of the simple membership plugin's addon settings and options will be "
|
| 2072 |
+
"displayed here (if you have them)"
|
| 2073 |
+
msgstr ""
|
| 2074 |
+
"Einstellungen einiger der Erweiterungen und Optionen des Simple Membership "
|
| 2075 |
+
"Plugins werden hier angezeigt (sofern sie installiert sind)"
|
| 2076 |
+
|
| 2077 |
+
#: views/admin_addon_settings.php:8
|
| 2078 |
+
msgid "Save Changes"
|
| 2079 |
+
msgstr "Änderungen speichern"
|
| 2080 |
+
|
| 2081 |
+
#: views/admin_add_level.php:6
|
| 2082 |
+
msgid "Add Membership Level"
|
| 2083 |
+
msgstr "Mitgliedschaftsstufe hinzufügen"
|
| 2084 |
+
|
| 2085 |
+
#: views/admin_add_level.php:7
|
| 2086 |
+
msgid "Create new membership level."
|
| 2087 |
+
msgstr "Neue Mitgliedschaftsstufe erstellen."
|
| 2088 |
+
|
| 2089 |
+
#: views/admin_add_level.php:12 views/admin_edit_level.php:16
|
| 2090 |
+
msgid "Membership Level Name"
|
| 2091 |
+
msgstr "Name der Mitgliedschaftsstufe"
|
| 2092 |
+
|
| 2093 |
+
#: views/admin_add_level.php:16 views/admin_edit_level.php:20
|
| 2094 |
+
msgid "Default WordPress Role"
|
| 2095 |
+
msgstr "Standard-WordPress-Rolle"
|
| 2096 |
+
|
| 2097 |
+
#: views/admin_add_level.php:20 views/admin_edit_level.php:24
|
| 2098 |
+
msgid "Access Duration"
|
| 2099 |
+
msgstr "Zugriffsdauer"
|
| 2100 |
+
|
| 2101 |
+
#: views/admin_add_level.php:23
|
| 2102 |
+
msgid "No Expiry (Access for this level will not expire until cancelled"
|
| 2103 |
+
msgstr "Kein Ablauf (Zugriff läuft nicht ab, bis er storniert wird"
|
| 2104 |
+
|
| 2105 |
+
#: views/admin_add_level.php:24 views/admin_add_level.php:26
|
| 2106 |
+
#: views/admin_add_level.php:28 views/admin_add_level.php:30
|
| 2107 |
+
#: views/admin_edit_level.php:28 views/admin_edit_level.php:31
|
| 2108 |
+
#: views/admin_edit_level.php:34 views/admin_edit_level.php:37
|
| 2109 |
+
msgid "Expire After"
|
| 2110 |
+
msgstr "Läuft aus nach"
|
| 2111 |
+
|
| 2112 |
+
#: views/admin_add_level.php:25 views/admin_edit_level.php:29
|
| 2113 |
+
msgid "Days (Access expires after given number of days)"
|
| 2114 |
+
msgstr "Tage (Zugang läuft nach vorgegebener Anzahl der Tage ab.)"
|
| 2115 |
+
|
| 2116 |
+
#: views/admin_add_level.php:27
|
| 2117 |
+
msgid "Weeks (Access expires after given number of weeks"
|
| 2118 |
+
msgstr "Wochen (Zugang läuft nach vorgegebener Anzahl der Wochen ab)"
|
| 2119 |
+
|
| 2120 |
+
#: views/admin_add_level.php:29 views/admin_edit_level.php:35
|
| 2121 |
+
msgid "Months (Access expires after given number of months)"
|
| 2122 |
+
msgstr "Monate (Zugang läuft nach vorgegebener Anzahl der Monate ab.)"
|
| 2123 |
+
|
| 2124 |
+
#: views/admin_add_level.php:31 views/admin_edit_level.php:38
|
| 2125 |
+
msgid "Years (Access expires after given number of years)"
|
| 2126 |
+
msgstr "Jahre (Zugang läuft nach vorgegebener Anzahl der Jahre ab.)"
|
| 2127 |
+
|
| 2128 |
+
#: views/admin_add_level.php:32 views/admin_edit_level.php:40
|
| 2129 |
+
msgid "Fixed Date Expiry"
|
| 2130 |
+
msgstr "Festes Ablaufdatum"
|
| 2131 |
+
|
| 2132 |
+
#: views/admin_add_level.php:33 views/admin_edit_level.php:41
|
| 2133 |
+
msgid "(Access expires on a fixed date)"
|
| 2134 |
+
msgstr "(Der Zugang läuft zu einem festen Termin ab)"
|
| 2135 |
+
|
| 2136 |
+
#: views/admin_add_level.php:38 views/admin_edit_level.php:46
|
| 2137 |
+
msgid "Email Activation"
|
| 2138 |
+
msgstr "E-Mail-Aktivierung"
|
| 2139 |
+
|
| 2140 |
+
#: views/admin_add_level.php:43
|
| 2141 |
+
msgid ""
|
| 2142 |
+
"Enable new user activation via email. When enabled, members will need to "
|
| 2143 |
+
"click on an activation link that is sent to their email address to activate "
|
| 2144 |
+
"the account. Useful for free membership. "
|
| 2145 |
+
msgstr ""
|
| 2146 |
+
"Aktivierung neuer Benutzer über Email freigeben. Wenn es freigegeben ist, "
|
| 2147 |
+
"müssen neue Mitglieder einen Aktivierungslink anklicken, der an ihre Email-"
|
| 2148 |
+
"Adresse gesendet wird. Vorteilhaft für kostenlose Mitgliedschaften. "
|
| 2149 |
+
|
| 2150 |
+
#: views/admin_add_level.php:44 views/admin_edit_level.php:52
|
| 2151 |
+
msgid "View Documentation"
|
| 2152 |
+
msgstr "Dokumentation ansehen"
|
| 2153 |
+
|
| 2154 |
+
#: views/admin_add_level.php:45 views/admin_edit_level.php:53
|
| 2155 |
+
msgid "Note:"
|
| 2156 |
+
msgstr "Hinweis:"
|
| 2157 |
+
|
| 2158 |
+
#: views/admin_add_level.php:45 views/admin_edit_level.php:53
|
| 2159 |
+
msgid ""
|
| 2160 |
+
"If enabled, decryptable member password is temporarily stored in the "
|
| 2161 |
+
"database until the account is activated."
|
| 2162 |
+
msgstr ""
|
| 2163 |
+
"Wenn aktiviert wird das unverschlüsselte Passwort zeitweilig in der "
|
| 2164 |
+
"Datenbank gespeichert, bis die Mitgliedschaft aktiviert ist."
|
| 2165 |
+
|
| 2166 |
+
#: views/admin_add_level.php:52
|
| 2167 |
+
msgid "Add New Membership Level "
|
| 2168 |
+
msgstr "Neue Mitgliedschaftsstufe hinzufügen "
|
| 2169 |
+
|
| 2170 |
+
#: views/admin_add_ons_page.php:7
|
| 2171 |
+
msgid "Simple WP Membership::Add-ons"
|
| 2172 |
+
msgstr "Simple WP Membership::Add-ons"
|
| 2173 |
+
|
| 2174 |
+
#: views/admin_category_list.php:5
|
| 2175 |
+
msgid ""
|
| 2176 |
+
"First of all, globally protect the category on your site by selecting "
|
| 2177 |
+
"\"General Protection\" from the drop-down box below and then select the "
|
| 2178 |
+
"categories that should be protected from non-logged in users."
|
| 2179 |
+
msgstr ""
|
| 2180 |
+
"Zuerst wählen Sie im Drop-Down Menue \"Genereller Schutz\" und wählen dann "
|
| 2181 |
+
"die Kategorien aus, die Sie vor nicht eingeloggten Benutzern schützen wollen."
|
| 2182 |
+
|
| 2183 |
+
#: views/admin_category_list.php:8
|
| 2184 |
+
msgid ""
|
| 2185 |
+
"Next, select an existing membership level from the drop-down box below and "
|
| 2186 |
+
"then select the categories you want to grant access to (for that particular "
|
| 2187 |
+
"membership level)."
|
| 2188 |
+
msgstr ""
|
| 2189 |
+
"Dann wählen Sie einen Mitglieder-Level aus dem Drop-Down Menue und wählen "
|
| 2190 |
+
"die Kategorien, zu denen Sie Mitgliedern dieses Levels Zugriff gewähren "
|
| 2191 |
+
"wollen."
|
| 2192 |
+
|
| 2193 |
+
#: views/admin_category_list.php:11 views/admin_post_list.php:11
|
| 2194 |
+
msgid "Read the "
|
| 2195 |
+
msgstr "Lesen Sie "
|
| 2196 |
+
|
| 2197 |
+
#: views/admin_category_list.php:11
|
| 2198 |
+
msgid "category protection documentation"
|
| 2199 |
+
msgstr "die Dokumentation zu Kategorie-Schutz"
|
| 2200 |
+
|
| 2201 |
+
#: views/admin_category_list.php:17 views/admin_post_list.php:27
|
| 2202 |
+
msgid "Membership Level:"
|
| 2203 |
+
msgstr "Mitgliedschaftsstufe:"
|
| 2204 |
+
|
| 2205 |
+
#: views/admin_category_list.php:19 views/admin_post_list.php:29
|
| 2206 |
+
msgid "General Protection"
|
| 2207 |
+
msgstr "Genereller Schutz"
|
| 2208 |
+
|
| 2209 |
+
#: views/admin_category_list.php:23 views/admin_post_list.php:33
|
| 2210 |
+
#: views/edit.php:83
|
| 2211 |
+
msgid "Update"
|
| 2212 |
+
msgstr "Aktualisieren"
|
| 2213 |
+
|
| 2214 |
+
#: views/admin_edit.php:11
|
| 2215 |
+
msgid "Edit Member"
|
| 2216 |
+
msgstr "Mitglied bearbeiten"
|
| 2217 |
+
|
| 2218 |
+
#: views/admin_edit.php:13
|
| 2219 |
+
msgid "Edit existing member details."
|
| 2220 |
+
msgstr "Bearbeiten Sie die vorhandenen Mitglieds-Details."
|
| 2221 |
+
|
| 2222 |
+
#: views/admin_edit.php:14
|
| 2223 |
+
msgid " You are currenty editing member with member ID: "
|
| 2224 |
+
msgstr " Sie bearbeiten gerade das Mitglied mit der Mitglieds-ID: "
|
| 2225 |
+
|
| 2226 |
+
#: views/admin_edit.php:44
|
| 2227 |
+
msgid "(twice, leave empty to retain old password)"
|
| 2228 |
+
msgstr "(doppelt, leer lassen, um das bestehende Passwort zu behalten)"
|
| 2229 |
+
|
| 2230 |
+
#: views/admin_edit.php:59
|
| 2231 |
+
msgid ""
|
| 2232 |
+
"This is the member's account status. If you want to manually activate an "
|
| 2233 |
+
"expired member's account then read"
|
| 2234 |
+
msgstr ""
|
| 2235 |
+
"Dies ist der Status der Mitgliedschaft. Wenn Sie eine abgelaufene "
|
| 2236 |
+
"Mitgliedschaft manuell aktivieren möchten, dann lesen Sie"
|
| 2237 |
+
|
| 2238 |
+
#: views/admin_edit.php:60
|
| 2239 |
+
msgid "this documentation"
|
| 2240 |
+
msgstr "diese Dokumentation"
|
| 2241 |
+
|
| 2242 |
+
#: views/admin_edit.php:61
|
| 2243 |
+
msgid " to learn how to do it."
|
| 2244 |
+
msgstr " lernen, wie es zu machen ist."
|
| 2245 |
+
|
| 2246 |
+
#: views/admin_edit.php:66
|
| 2247 |
+
msgid "Notify User"
|
| 2248 |
+
msgstr "Benutzer benachrichtigen"
|
| 2249 |
+
|
| 2250 |
+
#: views/admin_edit.php:69
|
| 2251 |
+
msgid ""
|
| 2252 |
+
"You can use this option to send a quick notification email to this member "
|
| 2253 |
+
"(the email will be sent when you hit the save button below)."
|
| 2254 |
+
msgstr ""
|
| 2255 |
+
"Sie können mit dieser Option eine Nachricht an dieses Mitglied senden. (die "
|
| 2256 |
+
"E-Mail wird gesendet, wenn Sie den Button zum speichern anklicken)"
|
| 2257 |
+
|
| 2258 |
+
#: views/admin_edit.php:75
|
| 2259 |
+
msgid "Subscriber ID/Reference"
|
| 2260 |
+
msgstr "Abonennten ID / Referenz"
|
| 2261 |
+
|
| 2262 |
+
#: views/admin_edit.php:79
|
| 2263 |
+
msgid "Last Accessed Date"
|
| 2264 |
+
msgstr "Datum des letzten Zugriffs"
|
| 2265 |
+
|
| 2266 |
+
#: views/admin_edit.php:82 views/admin_edit.php:89
|
| 2267 |
+
msgid "This value gets updated when this member logs into your site."
|
| 2268 |
+
msgstr "Dieser Wert wird aktualisiert, wenn dieses Mitglied sich einloggt."
|
| 2269 |
+
|
| 2270 |
+
#: views/admin_edit.php:86
|
| 2271 |
+
msgid "Last Accessed From IP"
|
| 2272 |
+
msgstr "Letzter Zugriff von IP"
|
| 2273 |
+
|
| 2274 |
+
#: views/admin_edit.php:97
|
| 2275 |
+
msgid "Save Data"
|
| 2276 |
+
msgstr "Daten speichern"
|
| 2277 |
+
|
| 2278 |
+
#: views/admin_edit.php:102
|
| 2279 |
+
msgid "Delete User Profile"
|
| 2280 |
+
msgstr "Benutzerprofil löschen"
|
| 2281 |
+
|
| 2282 |
+
#: views/admin_edit_level.php:6
|
| 2283 |
+
msgid "Edit membership level"
|
| 2284 |
+
msgstr "Mitgliedschaft bearbeiten"
|
| 2285 |
+
|
| 2286 |
+
#: views/admin_edit_level.php:9
|
| 2287 |
+
msgid ""
|
| 2288 |
+
"You can edit details of a selected membership level from this interface. "
|
| 2289 |
+
msgstr ""
|
| 2290 |
+
"Sie können die Details des ausgewählten Mitgliederlevels hier bearbeiten. "
|
| 2291 |
+
|
| 2292 |
+
#: views/admin_edit_level.php:10
|
| 2293 |
+
msgid "You are currently editing: "
|
| 2294 |
+
msgstr "Sie bearbeiten gerade: "
|
| 2295 |
+
|
| 2296 |
+
#: views/admin_edit_level.php:27
|
| 2297 |
+
msgid "No Expiry (Access for this level will not expire until cancelled)"
|
| 2298 |
+
msgstr "Kein Ablauf (Zugriff läuft nicht ab, bis er storniert wird)"
|
| 2299 |
+
|
| 2300 |
+
#: views/admin_edit_level.php:32
|
| 2301 |
+
msgid "Weeks (Access expires after given number of weeks)"
|
| 2302 |
+
msgstr "Wochen (Zugang läuft nach vorgegebener Anzahl von Wochen)"
|
| 2303 |
+
|
| 2304 |
+
#: views/admin_edit_level.php:51
|
| 2305 |
+
msgid ""
|
| 2306 |
+
"Enable new user activation via email. When enabled, members will need to "
|
| 2307 |
+
"click on an activation link that is sent to their email address to activate "
|
| 2308 |
+
"the account. Useful for free membership."
|
| 2309 |
+
msgstr ""
|
| 2310 |
+
"Aktivierung neuer Benutzer über Email freigeben. Wenn es freigegeben ist, "
|
| 2311 |
+
"müssen neue Mitglieder einen Aktivierungslink anklicken, der an ihre Email-"
|
| 2312 |
+
"Adresse gesendet wird. Vorteilhaft für kostenlose Mitgliedschaften."
|
| 2313 |
+
|
| 2314 |
+
#: views/admin_edit_level.php:60
|
| 2315 |
+
msgid "Save Membership Level "
|
| 2316 |
+
msgstr "Mitgliedschaftsstufe speichern "
|
| 2317 |
+
|
| 2318 |
+
#: views/admin_membership_manage.php:18
|
| 2319 |
+
msgid "Example Content Protection Settings"
|
| 2320 |
+
msgstr "Beispiel Inhaltsschutz Einstellungen"
|
| 2321 |
+
|
| 2322 |
+
#: views/admin_members_list.php:18
|
| 2323 |
+
msgid "All"
|
| 2324 |
+
msgstr "Alle"
|
| 2325 |
+
|
| 2326 |
+
#: views/admin_members_list.php:23
|
| 2327 |
+
msgid "Incomplete"
|
| 2328 |
+
msgstr "Unvollständig"
|
| 2329 |
+
|
| 2330 |
+
#: views/admin_member_form_common_part.php:23
|
| 2331 |
+
#: includes/swpm_mda_show_profile.php:37
|
| 2332 |
+
msgid "Gender"
|
| 2333 |
+
msgstr "Geschlecht"
|
| 2334 |
+
|
| 2335 |
+
#: views/admin_member_form_common_part.php:30 views/edit.php:47
|
| 2336 |
+
#: includes/swpm_mda_show_profile.php:34
|
| 2337 |
+
msgid "Phone"
|
| 2338 |
+
msgstr "Telefonnummer"
|
| 2339 |
+
|
| 2340 |
+
#: views/admin_member_form_common_part.php:34 views/edit.php:51
|
| 2341 |
+
msgid "Street"
|
| 2342 |
+
msgstr "Straße"
|
| 2343 |
+
|
| 2344 |
+
#: views/admin_member_form_common_part.php:38 views/edit.php:55
|
| 2345 |
+
msgid "City"
|
| 2346 |
+
msgstr "Stadt"
|
| 2347 |
+
|
| 2348 |
+
#: views/admin_member_form_common_part.php:42 views/edit.php:59
|
| 2349 |
+
msgid "State"
|
| 2350 |
+
msgstr "Bundesland"
|
| 2351 |
+
|
| 2352 |
+
#: views/admin_member_form_common_part.php:46 views/edit.php:63
|
| 2353 |
+
msgid "Zipcode"
|
| 2354 |
+
msgstr "PLZ"
|
| 2355 |
+
|
| 2356 |
+
#: views/admin_member_form_common_part.php:50 views/edit.php:67
|
| 2357 |
+
#: includes/swpm_mda_show_profile.php:33
|
| 2358 |
+
msgid "Country"
|
| 2359 |
+
msgstr "Land"
|
| 2360 |
+
|
| 2361 |
+
#: views/admin_member_form_common_part.php:54
|
| 2362 |
+
#: includes/swpm_mda_show_profile.php:38
|
| 2363 |
+
msgid "Company"
|
| 2364 |
+
msgstr "Firma"
|
| 2365 |
+
|
| 2366 |
+
#: views/admin_member_form_common_part.php:58
|
| 2367 |
+
#: includes/swpm_mda_show_profile.php:36
|
| 2368 |
+
msgid "Member Since"
|
| 2369 |
+
msgstr "Mitglied seit"
|
| 2370 |
+
|
| 2371 |
+
#: views/admin_post_list.php:5
|
| 2372 |
+
msgid ""
|
| 2373 |
+
"First of all, globally protect posts and pages on your site by selecting "
|
| 2374 |
+
"\"General Protection\" from the drop-down box below and then select posts "
|
| 2375 |
+
"and pages that should be protected from non-logged in users."
|
| 2376 |
+
msgstr ""
|
| 2377 |
+
"Zuerst wählen Sie im Drop-Down Menue \"Genereller Schutz\" und wählen dann "
|
| 2378 |
+
"die Beiträge und Seiten aus, die Sie vor nicht eingeloggten Benutzern "
|
| 2379 |
+
"schützen wollen."
|
| 2380 |
+
|
| 2381 |
+
#: views/admin_post_list.php:8
|
| 2382 |
+
msgid ""
|
| 2383 |
+
"Next, select an existing membership level from the drop-down box below and "
|
| 2384 |
+
"then select posts and pages you want to grant access to (for that particular "
|
| 2385 |
+
"membership level)."
|
| 2386 |
+
msgstr ""
|
| 2387 |
+
"Dann wählen Sie einen Mitglieder-Level aus dem Drop-Down Menue und wählen "
|
| 2388 |
+
"die Beiträge und Seiten, zu denen Sie Mitgliedern dieses Levels Zugriff "
|
| 2389 |
+
"gewähren wollen."
|
| 2390 |
+
|
| 2391 |
+
#: views/admin_post_list.php:11
|
| 2392 |
+
msgid "bulk protect posts and pages documentation"
|
| 2393 |
+
msgstr ""
|
| 2394 |
+
"die Dokumentation, wie Beiträge und Seiten in einer Massenanwendung "
|
| 2395 |
+
"geschützt werden"
|
| 2396 |
+
|
| 2397 |
+
#: views/admin_post_list.php:11
|
| 2398 |
+
msgid " to learn how to use it."
|
| 2399 |
+
msgstr " um zu lernen, wie es benutzt wird."
|
| 2400 |
+
|
| 2401 |
+
#: views/admin_post_list.php:21
|
| 2402 |
+
msgid "Posts"
|
| 2403 |
+
msgstr "Beiträge"
|
| 2404 |
+
|
| 2405 |
+
#: views/admin_post_list.php:22
|
| 2406 |
+
msgid "Pages"
|
| 2407 |
+
msgstr "Seiten"
|
| 2408 |
+
|
| 2409 |
+
#: views/admin_post_list.php:23
|
| 2410 |
+
msgid "Custom Posts"
|
| 2411 |
+
msgstr "Benutzerdefinierte Beiträge"
|
| 2412 |
+
|
| 2413 |
+
#: views/admin_tools_settings.php:14
|
| 2414 |
+
msgid "The required pages have been re-created."
|
| 2415 |
+
msgstr "Die notwendigen Seiten wurden wiederhergestellt."
|
| 2416 |
+
|
| 2417 |
+
#: views/admin_tools_settings.php:21
|
| 2418 |
+
msgid "Generate a Registration Completion link"
|
| 2419 |
+
msgstr "Einen \"Registrierung abgeschlossen\" Link generieren"
|
| 2420 |
+
|
| 2421 |
+
#: views/admin_tools_settings.php:24
|
| 2422 |
+
msgid ""
|
| 2423 |
+
"You can manually generate a registration completion link here and give it to "
|
| 2424 |
+
"your customer if they have missed the email that was automatically sent out "
|
| 2425 |
+
"to them after the payment."
|
| 2426 |
+
msgstr ""
|
| 2427 |
+
"Sie können hier manuell einen \"Registrierung abgeschlossen\" Link "
|
| 2428 |
+
"generieren falls Ihr Kunde die automatische E-Mail verlegt hat."
|
| 2429 |
+
|
| 2430 |
+
#: views/admin_tools_settings.php:29
|
| 2431 |
+
msgid "Generate Registration Completion Link"
|
| 2432 |
+
msgstr "\"Registrierung Abgeschlossen\" Link generieren"
|
| 2433 |
+
|
| 2434 |
+
#: views/admin_tools_settings.php:30
|
| 2435 |
+
msgid "For a Particular Member ID"
|
| 2436 |
+
msgstr "Für eine bestimmte Mitglieds-ID"
|
| 2437 |
+
|
| 2438 |
+
#: views/admin_tools_settings.php:32
|
| 2439 |
+
msgid "OR"
|
| 2440 |
+
msgstr "ODER"
|
| 2441 |
+
|
| 2442 |
+
#: views/admin_tools_settings.php:33
|
| 2443 |
+
msgid "For All Incomplete Registrations"
|
| 2444 |
+
msgstr "Für alle unvollständigen Anmeldungen"
|
| 2445 |
+
|
| 2446 |
+
#: views/admin_tools_settings.php:38
|
| 2447 |
+
msgid "Send Registration Reminder Email Too"
|
| 2448 |
+
msgstr "Registrierungserinnerung auch per E-Mail verschicken"
|
| 2449 |
+
|
| 2450 |
+
#: views/admin_tools_settings.php:44
|
| 2451 |
+
msgid "Submit"
|
| 2452 |
+
msgstr "Absenden"
|
| 2453 |
+
|
| 2454 |
+
#: views/admin_tools_settings.php:53
|
| 2455 |
+
msgid ""
|
| 2456 |
+
"Link(s) generated successfully. The following link(s) can be used to "
|
| 2457 |
+
"complete the registration."
|
| 2458 |
+
msgstr ""
|
| 2459 |
+
"Link(s) sind erfolgreich angelegt. Folgende(r) Link(s) kann/können genutzt "
|
| 2460 |
+
"werden, um die Registrierung zu Vervollständigen."
|
| 2461 |
+
|
| 2462 |
+
#: views/admin_tools_settings.php:55
|
| 2463 |
+
msgid "Registration completion links will appear below"
|
| 2464 |
+
msgstr ""
|
| 2465 |
+
"Der Link für die Vervollständigung der Registrierung wird unten angezeigt"
|
| 2466 |
+
|
| 2467 |
+
#: views/admin_tools_settings.php:65
|
| 2468 |
+
msgid "A prompt to complete registration email was also sent."
|
| 2469 |
+
msgstr ""
|
| 2470 |
+
"Eine Aufforderung, die Registrierung zu vervollständigen, wurde ebenfalls "
|
| 2471 |
+
"gesendet."
|
| 2472 |
+
|
| 2473 |
+
#: views/admin_tools_settings.php:78 views/admin_tools_settings.php:88
|
| 2474 |
+
msgid "Re-create the Required Pages"
|
| 2475 |
+
msgstr "Die notwendigen Seiten wiederherstellen"
|
| 2476 |
+
|
| 2477 |
+
#: views/admin_tools_settings.php:81
|
| 2478 |
+
msgid ""
|
| 2479 |
+
"If you have accidentally deleted the required pages that this plugin creates "
|
| 2480 |
+
"at install time, you can use this option to re-create them."
|
| 2481 |
+
msgstr ""
|
| 2482 |
+
"Falls Sie aus Versehen die von diesem Plugin automatisch erstellten und "
|
| 2483 |
+
"benötigten Seiten gelöscht haben, können Sie sie mit dieser Option wieder "
|
| 2484 |
+
"herstellen."
|
| 2485 |
+
|
| 2486 |
+
#: views/admin_tools_settings.php:82
|
| 2487 |
+
msgid " has full explanation."
|
| 2488 |
+
msgstr " vollständige Erklärung hat."
|
| 2489 |
+
|
| 2490 |
+
#: views/edit.php:32 views/edit.php:36
|
| 2491 |
+
msgid "Leave empty to keep the current password"
|
| 2492 |
+
msgstr "Lassen Sie das Feld leer, um das aktuelle Passwort beizubehalten"
|
| 2493 |
+
|
| 2494 |
+
#: views/edit.php:71
|
| 2495 |
+
msgid "Company Name"
|
| 2496 |
+
msgstr "Firmennname"
|
| 2497 |
+
|
| 2498 |
+
#: views/forgot_password.php:12
|
| 2499 |
+
msgid "Reset Password"
|
| 2500 |
+
msgstr "Passwort zurücksetzen"
|
| 2501 |
+
|
| 2502 |
+
#: views/loggedin.php:6
|
| 2503 |
+
msgid "Logged in as"
|
| 2504 |
+
msgstr "Eingeloggt als"
|
| 2505 |
+
|
| 2506 |
+
#: views/loggedin.php:14
|
| 2507 |
+
msgid "Membership"
|
| 2508 |
+
msgstr "Mitgliedschaft"
|
| 2509 |
+
|
| 2510 |
+
#: views/loggedin.php:18
|
| 2511 |
+
msgid "Account Expiry"
|
| 2512 |
+
msgstr "Kontoablauf"
|
| 2513 |
+
|
| 2514 |
+
#: views/loggedin.php:26
|
| 2515 |
+
msgid "Edit Profile"
|
| 2516 |
+
msgstr "Profil bearbeiten"
|
| 2517 |
+
|
| 2518 |
+
#: views/login.php:11
|
| 2519 |
+
msgid "Username or Email"
|
| 2520 |
+
msgstr "Mitgliedsname oder Email"
|
| 2521 |
+
|
| 2522 |
+
#: views/login.php:24
|
| 2523 |
+
msgid "Remember Me"
|
| 2524 |
+
msgstr "Erinneren Sie sich an mich"
|
| 2525 |
+
|
| 2526 |
+
#: views/login.php:33
|
| 2527 |
+
msgid "Forgot Password?"
|
| 2528 |
+
msgstr "Passwort vergessen?"
|
| 2529 |
+
|
| 2530 |
+
#: views/payments/admin_all_payment_transactions.php:6
|
| 2531 |
+
msgid "All the payments/transactions of your members are recorded here."
|
| 2532 |
+
msgstr ""
|
| 2533 |
+
"Alle Zahlungen / Transaktionen Ihrer Mitglieder werden hier aufgezeichnet."
|
| 2534 |
+
|
| 2535 |
+
#: views/payments/admin_all_payment_transactions.php:12
|
| 2536 |
+
msgid "Search for a transaction by using email or name"
|
| 2537 |
+
msgstr "Suche nach einer Transaktion mit Email oder Name"
|
| 2538 |
+
|
| 2539 |
+
#: views/payments/admin_create_payment_buttons.php:15
|
| 2540 |
+
msgid ""
|
| 2541 |
+
"You can create new payment button for your memberships using this interface."
|
| 2542 |
+
msgstr ""
|
| 2543 |
+
"Sie können eine neue Schaltfläche für Zahlungen für Mitgliedschaften mit "
|
| 2544 |
+
"diesem Interface erzeugen."
|
| 2545 |
+
|
| 2546 |
+
#: views/payments/admin_create_payment_buttons.php:23
|
| 2547 |
+
msgid "Select Payment Button Type"
|
| 2548 |
+
msgstr "Wählen Sie den Schaltflächen Typ für Zahlungen"
|
| 2549 |
+
|
| 2550 |
+
#: views/payments/admin_create_payment_buttons.php:26
|
| 2551 |
+
msgid "PayPal Buy Now"
|
| 2552 |
+
msgstr "PayPal Jetzt kaufen"
|
| 2553 |
+
|
| 2554 |
+
#: views/payments/admin_create_payment_buttons.php:28
|
| 2555 |
+
msgid "PayPal Subscription"
|
| 2556 |
+
msgstr "PayPal Abonnement"
|
| 2557 |
+
|
| 2558 |
+
#: views/payments/admin_create_payment_buttons.php:30
|
| 2559 |
+
msgid "PayPal Smart Checkout"
|
| 2560 |
+
msgstr "PayPal Smart Checkout"
|
| 2561 |
+
|
| 2562 |
+
#: views/payments/admin_create_payment_buttons.php:32
|
| 2563 |
+
msgid "Stripe Buy Now"
|
| 2564 |
+
msgstr "Stripe Jetzt kaufen"
|
| 2565 |
+
|
| 2566 |
+
#: views/payments/admin_create_payment_buttons.php:34
|
| 2567 |
+
msgid "Stripe Subscription"
|
| 2568 |
+
msgstr "Stripe Mitgliedschaft"
|
| 2569 |
+
|
| 2570 |
+
#: views/payments/admin_create_payment_buttons.php:36
|
| 2571 |
+
msgid "Braintree Buy Now"
|
| 2572 |
+
msgstr "Braintree Jetzt kaufen"
|
| 2573 |
+
|
| 2574 |
+
#: views/payments/admin_create_payment_buttons.php:43
|
| 2575 |
+
msgid "Next"
|
| 2576 |
+
msgstr "Weiter"
|
| 2577 |
+
|
| 2578 |
+
#: views/payments/admin_edit_payment_buttons.php:15
|
| 2579 |
+
msgid "You can edit a payment button using this interface."
|
| 2580 |
+
msgstr "Sie können eine Schaltfläche für Zahlungen hier bearbeiten."
|
| 2581 |
+
|
| 2582 |
+
#: views/payments/admin_payment_buttons.php:6
|
| 2583 |
+
msgid ""
|
| 2584 |
+
"All the membership buttons that you created in the plugin are displayed here."
|
| 2585 |
+
msgstr ""
|
| 2586 |
+
"Alle Schaltflächen für Mitgliedschaften, die Sie angelegt haben, finden Sie "
|
| 2587 |
+
"hier."
|
| 2588 |
+
|
| 2589 |
+
#: views/payments/admin_payment_settings.php:21
|
| 2590 |
+
msgid "Error! The membership level ID ("
|
| 2591 |
+
msgstr "Fehler! Die Mitgliederstufen-ID ("
|
| 2592 |
+
|
| 2593 |
+
#: views/payments/admin_payment_settings.php:28
|
| 2594 |
+
msgid ""
|
| 2595 |
+
"You can create membership payment buttons from the payments menu of this "
|
| 2596 |
+
"plugin (useful if you want to offer paid membership on the site)."
|
| 2597 |
+
msgstr ""
|
| 2598 |
+
"Sie können Schaltflächen für die Zahlungen für Mitgliedschaften über das "
|
| 2599 |
+
"Zahlungsmenü dieses Plugins erstellen (nützlich, wenn Sie eine "
|
| 2600 |
+
"kostenpflichtige Mitgliedschaft auf der Website anbieten möchten)."
|
| 2601 |
+
|
| 2602 |
+
#: views/payments/admin_payment_settings.php:33
|
| 2603 |
+
msgid "PayPal Integration Settings"
|
| 2604 |
+
msgstr "PayPal Integration Einstellungen"
|
| 2605 |
+
|
| 2606 |
+
#: views/payments/admin_payment_settings.php:36
|
| 2607 |
+
msgid "Generate the \"Advanced Variables\" Code for your PayPal button"
|
| 2608 |
+
msgstr "Generieren Sie den \"Advanced Variables\" Code für Ihren PayPal-Button"
|
| 2609 |
+
|
| 2610 |
+
#: views/payments/admin_payment_settings.php:39
|
| 2611 |
+
msgid "Enter the Membership Level ID"
|
| 2612 |
+
msgstr "Geben Sie die Mitgliederstufen-ID ein"
|
| 2613 |
+
|
| 2614 |
+
#: views/payments/admin_payment_settings.php:41
|
| 2615 |
+
msgid "Generate Code"
|
| 2616 |
+
msgstr "Code generieren"
|
| 2617 |
+
|
| 2618 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:22
|
| 2619 |
+
msgid "Braintree Buy Now Button Configuration"
|
| 2620 |
+
msgstr "Braintree \"Jetzt kaufen\" Button Konfiguration"
|
| 2621 |
+
|
| 2622 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:34
|
| 2623 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:213
|
| 2624 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:33
|
| 2625 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:301
|
| 2626 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:259
|
| 2627 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:83
|
| 2628 |
+
msgid "Button ID"
|
| 2629 |
+
msgstr "Button ID"
|
| 2630 |
+
|
| 2631 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:42
|
| 2632 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:26
|
| 2633 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:221
|
| 2634 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:41
|
| 2635 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:27
|
| 2636 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:309
|
| 2637 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:39
|
| 2638 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:266
|
| 2639 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:91
|
| 2640 |
+
msgid "Button Title"
|
| 2641 |
+
msgstr "Button Titel"
|
| 2642 |
+
|
| 2643 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:60
|
| 2644 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:44
|
| 2645 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:239
|
| 2646 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:59
|
| 2647 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:57
|
| 2648 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:282
|
| 2649 |
+
msgid "Payment Amount"
|
| 2650 |
+
msgstr "Zahlungsbetrag"
|
| 2651 |
+
|
| 2652 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:68
|
| 2653 |
+
msgid ""
|
| 2654 |
+
"Braintree API key and account details. You can get this from your Braintree "
|
| 2655 |
+
"account."
|
| 2656 |
+
msgstr ""
|
| 2657 |
+
"Braintree API Schlüssel und Konto Details. Sie können diese aus Ihrem "
|
| 2658 |
+
"Braintree Konto erhalten."
|
| 2659 |
+
|
| 2660 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:72
|
| 2661 |
+
msgid "Merchant ID"
|
| 2662 |
+
msgstr "Händler ID"
|
| 2663 |
+
|
| 2664 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:80
|
| 2665 |
+
msgid "Public Key"
|
| 2666 |
+
msgstr "Öffentlicher Schlüssel"
|
| 2667 |
+
|
| 2668 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:87
|
| 2669 |
+
msgid "Private Key"
|
| 2670 |
+
msgstr "Privater Schlüssel"
|
| 2671 |
+
|
| 2672 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:95
|
| 2673 |
+
msgid "Merchant Account ID"
|
| 2674 |
+
msgstr "Händler-Konto-ID"
|
| 2675 |
+
|
| 2676 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:113
|
| 2677 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:137
|
| 2678 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:361
|
| 2679 |
+
msgid "The following details are optional."
|
| 2680 |
+
msgstr "Die folgenden Angaben sind optional."
|
| 2681 |
+
|
| 2682 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:117
|
| 2683 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:92
|
| 2684 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:287
|
| 2685 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:204
|
| 2686 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:172
|
| 2687 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:456
|
| 2688 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:149
|
| 2689 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:373
|
| 2690 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:191
|
| 2691 |
+
msgid "Return URL"
|
| 2692 |
+
msgstr "Zu URL zurückkehren"
|
| 2693 |
+
|
| 2694 |
+
#: views/payments/payment-gateway/admin_braintree_buy_now_button.php:127
|
| 2695 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:126
|
| 2696 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:321
|
| 2697 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:214
|
| 2698 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:200
|
| 2699 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:484
|
| 2700 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:159
|
| 2701 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:383
|
| 2702 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:212
|
| 2703 |
+
msgid "Save Payment Data"
|
| 2704 |
+
msgstr "Zahlungsdaten speichern"
|
| 2705 |
+
|
| 2706 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:16
|
| 2707 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:204
|
| 2708 |
+
msgid "PayPal Buy Now Button Configuration"
|
| 2709 |
+
msgstr "PayPal \"Jetzt kaufen\" Button Configuration"
|
| 2710 |
+
|
| 2711 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:52
|
| 2712 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:247
|
| 2713 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:67
|
| 2714 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:45
|
| 2715 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:327
|
| 2716 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:65
|
| 2717 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:289
|
| 2718 |
+
msgid "Payment Currency"
|
| 2719 |
+
msgstr "Währung der Zahlung"
|
| 2720 |
+
|
| 2721 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:100
|
| 2722 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:295
|
| 2723 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:85
|
| 2724 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:367
|
| 2725 |
+
msgid "PayPal Email"
|
| 2726 |
+
msgstr "PayPal E-Mail Adresse"
|
| 2727 |
+
|
| 2728 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:108
|
| 2729 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:303
|
| 2730 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:180
|
| 2731 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:464
|
| 2732 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:199
|
| 2733 |
+
msgid "Button Image URL"
|
| 2734 |
+
msgstr "Button Bild-URL"
|
| 2735 |
+
|
| 2736 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:116
|
| 2737 |
+
#: views/payments/payment-gateway/admin_paypal_buy_now_button.php:311
|
| 2738 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:188
|
| 2739 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:472
|
| 2740 |
+
msgid "Custom Checkout Page Logo Image"
|
| 2741 |
+
msgstr "Benutzerdefinierte Checkout Seiten Logo"
|
| 2742 |
+
|
| 2743 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:21
|
| 2744 |
+
msgid "PayPal Smart Checkout Button Configuration"
|
| 2745 |
+
msgstr "PayPal Smart Checkout Button Konfiguration"
|
| 2746 |
+
|
| 2747 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:107
|
| 2748 |
+
msgid ""
|
| 2749 |
+
"PayPal Smart Checkout API Credentials (you can get this from your PayPal "
|
| 2750 |
+
"account)"
|
| 2751 |
+
msgstr ""
|
| 2752 |
+
"PayPal Smart Checkout API Berechtigungen (Sie können diese von Ihrem PayPal-"
|
| 2753 |
+
"Konto erhalten)"
|
| 2754 |
+
|
| 2755 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:111
|
| 2756 |
+
msgid "Live Client ID"
|
| 2757 |
+
msgstr "Kunden ID"
|
| 2758 |
+
|
| 2759 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:119
|
| 2760 |
+
msgid "Live Secret"
|
| 2761 |
+
msgstr "Live Secret"
|
| 2762 |
+
|
| 2763 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:127
|
| 2764 |
+
msgid "Sandbox Client ID"
|
| 2765 |
+
msgstr "Sandbox Kunden ID"
|
| 2766 |
+
|
| 2767 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:135
|
| 2768 |
+
msgid "Sandbox Secret"
|
| 2769 |
+
msgstr "Sandbox Geheimschlüssel"
|
| 2770 |
+
|
| 2771 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:143
|
| 2772 |
+
msgid "Button Appearance Settings"
|
| 2773 |
+
msgstr "Button Erscheinungsbild Einstellungen"
|
| 2774 |
+
|
| 2775 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:147
|
| 2776 |
+
msgid "Size"
|
| 2777 |
+
msgstr "Größe"
|
| 2778 |
+
|
| 2779 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:150
|
| 2780 |
+
msgid "Medium"
|
| 2781 |
+
msgstr "Medium"
|
| 2782 |
+
|
| 2783 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:151
|
| 2784 |
+
msgid "Large"
|
| 2785 |
+
msgstr "Groß"
|
| 2786 |
+
|
| 2787 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:152
|
| 2788 |
+
msgid "Repsonsive"
|
| 2789 |
+
msgstr "Repsonsive"
|
| 2790 |
+
|
| 2791 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:154
|
| 2792 |
+
msgid "Select button size."
|
| 2793 |
+
msgstr "Schaltflächengröße auswählen."
|
| 2794 |
+
|
| 2795 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:158
|
| 2796 |
+
msgid "Color"
|
| 2797 |
+
msgstr "Farbe"
|
| 2798 |
+
|
| 2799 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:161
|
| 2800 |
+
msgid "Gold"
|
| 2801 |
+
msgstr "Gold"
|
| 2802 |
+
|
| 2803 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:162
|
| 2804 |
+
msgid "Blue"
|
| 2805 |
+
msgstr "Blau"
|
| 2806 |
+
|
| 2807 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:163
|
| 2808 |
+
msgid "Silver"
|
| 2809 |
+
msgstr "Silber"
|
| 2810 |
+
|
| 2811 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:164
|
| 2812 |
+
msgid "Black"
|
| 2813 |
+
msgstr "Schwarz"
|
| 2814 |
+
|
| 2815 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:166
|
| 2816 |
+
msgid "Select button color."
|
| 2817 |
+
msgstr "Schaltflächenfarbe wählen."
|
| 2818 |
+
|
| 2819 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:170
|
| 2820 |
+
msgid "Shape"
|
| 2821 |
+
msgstr "Form"
|
| 2822 |
+
|
| 2823 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:172
|
| 2824 |
+
msgid "Rectangular"
|
| 2825 |
+
msgstr "Rechteckig"
|
| 2826 |
+
|
| 2827 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:173
|
| 2828 |
+
msgid "Pill"
|
| 2829 |
+
msgstr "Pill"
|
| 2830 |
+
|
| 2831 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:174
|
| 2832 |
+
msgid "Select button shape."
|
| 2833 |
+
msgstr "Schaltflächenform wählen."
|
| 2834 |
+
|
| 2835 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:178
|
| 2836 |
+
msgid "Layout"
|
| 2837 |
+
msgstr "Layout"
|
| 2838 |
+
|
| 2839 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:180
|
| 2840 |
+
msgid "Vertical"
|
| 2841 |
+
msgstr "Vertikal"
|
| 2842 |
+
|
| 2843 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:181
|
| 2844 |
+
msgid "Horizontal"
|
| 2845 |
+
msgstr "Horizontal"
|
| 2846 |
+
|
| 2847 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:182
|
| 2848 |
+
msgid "Select button layout."
|
| 2849 |
+
msgstr "Schaltflächenform wählen."
|
| 2850 |
+
|
| 2851 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:187
|
| 2852 |
+
msgid "Additional Settings"
|
| 2853 |
+
msgstr "Weitere Einstellungen"
|
| 2854 |
+
|
| 2855 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:191
|
| 2856 |
+
msgid "Payment Methods"
|
| 2857 |
+
msgstr "Zahlungsmethoden"
|
| 2858 |
+
|
| 2859 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:193
|
| 2860 |
+
msgid "PayPal Credit"
|
| 2861 |
+
msgstr "PayPal Kredit"
|
| 2862 |
+
|
| 2863 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:194
|
| 2864 |
+
msgid "ELV"
|
| 2865 |
+
msgstr "ELV"
|
| 2866 |
+
|
| 2867 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:195
|
| 2868 |
+
msgid ""
|
| 2869 |
+
"Select payment methods that could be used by customers. Note that payment "
|
| 2870 |
+
"with cards is always enabled."
|
| 2871 |
+
msgstr ""
|
| 2872 |
+
"Wählen Sie Zahlungsmethoden, die von Kunden genutzt werden können. Hinweis: "
|
| 2873 |
+
"Zahlung über Karten ist immer freigegeben."
|
| 2874 |
+
|
| 2875 |
+
#: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:200
|
| 2876 |
+
msgid "The following details are optional"
|
| 2877 |
+
msgstr "Die folgenden Angaben sind optional"
|
| 2878 |
+
|
| 2879 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:18
|
| 2880 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:295
|
| 2881 |
+
msgid "PayPal Subscription Button Configuration"
|
| 2882 |
+
msgstr "PayPal \"Abonnieren\" Button Konfiguration"
|
| 2883 |
+
|
| 2884 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:93
|
| 2885 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:375
|
| 2886 |
+
msgid "Billing Amount Each Cycle"
|
| 2887 |
+
msgstr "Abrechnungsbetrag des Zyklusses"
|
| 2888 |
+
|
| 2889 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:101
|
| 2890 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:383
|
| 2891 |
+
msgid "Billing Cycle"
|
| 2892 |
+
msgstr "Abrechnungszyklus"
|
| 2893 |
+
|
| 2894 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:114
|
| 2895 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:396
|
| 2896 |
+
msgid "Billing Cycle Count"
|
| 2897 |
+
msgstr "Abrechnungszyklen"
|
| 2898 |
+
|
| 2899 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:122
|
| 2900 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:404
|
| 2901 |
+
msgid "Re-attempt on Failure"
|
| 2902 |
+
msgstr "Wiederholungsversuch bei aufgetretenem Fehler"
|
| 2903 |
+
|
| 2904 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:135
|
| 2905 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:419
|
| 2906 |
+
msgid ""
|
| 2907 |
+
"Trial Billing Details (Leave empty if you are not offering a trial period)"
|
| 2908 |
+
msgstr ""
|
| 2909 |
+
"Abrechnungsdetails für Probezeitraum (Leer lassen, wenn Sie keine Probezeit "
|
| 2910 |
+
"anbieten)"
|
| 2911 |
+
|
| 2912 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:141
|
| 2913 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:425
|
| 2914 |
+
msgid "Trial Billing Amount"
|
| 2915 |
+
msgstr "Rechnungsbetrag für Probezeitraum"
|
| 2916 |
+
|
| 2917 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:149
|
| 2918 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:433
|
| 2919 |
+
msgid "Trial Billing Period"
|
| 2920 |
+
msgstr "Abrechnungszeitraum für Probezeitraum"
|
| 2921 |
+
|
| 2922 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:166
|
| 2923 |
+
#: views/payments/payment-gateway/admin_paypal_subscription_button.php:450
|
| 2924 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:177
|
| 2925 |
+
msgid "Optional Details"
|
| 2926 |
+
msgstr "Optionale Details"
|
| 2927 |
+
|
| 2928 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:29
|
| 2929 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:250
|
| 2930 |
+
msgid "Stripe Buy Now Button Configuration"
|
| 2931 |
+
msgstr "Stripe \"Jetzt kaufen\" Button Konfiguration"
|
| 2932 |
+
|
| 2933 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:104
|
| 2934 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:328
|
| 2935 |
+
msgid "Stripe API keys. You can get this from your Stripe account."
|
| 2936 |
+
msgstr ""
|
| 2937 |
+
"Stripe API-Schlüssel. Sie können diese von Ihrem Stripe-Konto erhalten."
|
| 2938 |
+
|
| 2939 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:108
|
| 2940 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:332
|
| 2941 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:131
|
| 2942 |
+
msgid "Test Publishable Key"
|
| 2943 |
+
msgstr "Testen Sie den Veröffentlichungs-Schlüssel"
|
| 2944 |
+
|
| 2945 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:115
|
| 2946 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:339
|
| 2947 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:139
|
| 2948 |
+
msgid "Test Secret Key"
|
| 2949 |
+
msgstr "Testen Sie den geheimen Schlüssel"
|
| 2950 |
+
|
| 2951 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:122
|
| 2952 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:346
|
| 2953 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:147
|
| 2954 |
+
msgid "Live Publishable Key"
|
| 2955 |
+
msgstr "Veröffentlichungs Schlüssel"
|
| 2956 |
+
|
| 2957 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:129
|
| 2958 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:353
|
| 2959 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:155
|
| 2960 |
+
msgid "Live Secret Key"
|
| 2961 |
+
msgstr "Geheimer Schlüssel"
|
| 2962 |
+
|
| 2963 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:141
|
| 2964 |
+
#: views/payments/payment-gateway/admin_stripe_buy_now_button.php:365
|
| 2965 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:183
|
| 2966 |
+
msgid "Collect Customer Address"
|
| 2967 |
+
msgstr "Adress-Daten des Kunden anfordern"
|
| 2968 |
+
|
| 2969 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:75
|
| 2970 |
+
msgid "Stripe Subscription Button Configuration"
|
| 2971 |
+
msgstr "Konfiguration des Stripe Anmeldungs-Button"
|
| 2972 |
+
|
| 2973 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:109
|
| 2974 |
+
msgid "Stripe Plan ID"
|
| 2975 |
+
msgstr "Stripe Plan ID"
|
| 2976 |
+
|
| 2977 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:125
|
| 2978 |
+
msgid "Stripe API Settings"
|
| 2979 |
+
msgstr "Stripe API Einstellungen"
|
| 2980 |
+
|
| 2981 |
+
#: views/payments/payment-gateway/admin_stripe_subscription_button.php:163
|
| 2982 |
+
msgid "Webook Endpoint URL"
|
| 2983 |
+
msgstr "Webook Endpoint URL"
|
| 2984 |
+
|
| 2985 |
+
#: views/payments/payment-gateway/braintree_button_shortcode_view.php:20
|
| 2986 |
+
#: views/payments/payment-gateway/paypal_button_shortcode_view.php:91
|
| 2987 |
+
#: views/payments/payment-gateway/paypal_button_shortcode_view.php:93
|
| 2988 |
+
#: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:15
|
| 2989 |
+
#: views/payments/payment-gateway/stripe_button_shortcode_view.php:20
|
| 2990 |
+
#: views/payments/payment-gateway/stripe_button_shortcode_view.php:150
|
| 2991 |
+
msgid "Buy Now"
|
| 2992 |
+
msgstr "Jetzt kaufen"
|
| 2993 |
+
|
| 2994 |
+
#: views/payments/payment-gateway/paypal_button_shortcode_view.php:226
|
| 2995 |
+
#: views/payments/payment-gateway/paypal_button_shortcode_view.php:228
|
| 2996 |
+
msgid "Subscribe Now"
|
| 2997 |
+
msgstr "Jetzt abonnieren"
|
| 2998 |
+
|
| 2999 |
+
#: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:137
|
| 3000 |
+
msgid "Error occured during PayPal Smart Checkout process."
|
| 3001 |
+
msgstr "Fehler aufgetreten während des PayPal Smart Checkout Prozesses."
|
| 3002 |
+
|
| 3003 |
+
#: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:165
|
| 3004 |
+
msgid "HTTP error occured during payment process:"
|
| 3005 |
+
msgstr "HTTP Fehler aufgetreten während des Zahlungsvorgangs:"
|
| 3006 |
+
|
| 3007 |
+
#: Translation strings from addons === Form builder addon
|
| 3008 |
+
msgid "Type password here"
|
| 3009 |
+
msgstr "Passowrt hier eingeben"
|
| 3010 |
+
|
| 3011 |
+
msgid "Retype password here"
|
| 3012 |
+
msgstr "Passwort hier nochmal eingeben"
|
| 3013 |
+
|
| 3014 |
+
msgid "Registration is complete. You can now log into the site."
|
| 3015 |
+
msgstr "Registrierung ist vollständig. Sie können sich jetzt einloggen."
|
| 3016 |
+
|
| 3017 |
+
msgid " Field has invalid character"
|
| 3018 |
+
msgstr " Eingabe nicht erlaubter Zeichen"
|
| 3019 |
+
|
| 3020 |
+
msgid " Password does not match"
|
| 3021 |
+
msgstr " Passworte stimmen nicht überein"
|
| 3022 |
+
|
| 3023 |
+
msgid "Already taken."
|
| 3024 |
+
msgstr "Schon verwendet."
|
| 3025 |
+
|
| 3026 |
+
msgid "Street Address"
|
| 3027 |
+
msgstr "Strassen Adresse"
|
| 3028 |
+
|
| 3029 |
+
msgid "Apt, Suite, Bldg. (optional)"
|
| 3030 |
+
msgstr "Gebäude (optional)"
|
| 3031 |
+
|
| 3032 |
+
msgid "State / Province / Region"
|
| 3033 |
+
msgstr "Staat / Land / Region"
|
| 3034 |
+
|
| 3035 |
+
msgid "Postal / Zip Code"
|
| 3036 |
+
msgstr "PLZ"
|
| 3037 |
+
|
| 3038 |
+
msgid ""
|
| 3039 |
+
"Check this box to delete the image. The image will be deleted when you save "
|
| 3040 |
+
"the profile."
|
| 3041 |
+
msgstr ""
|
| 3042 |
+
"Setzen Sie im Kontrolkästchen einen Haken, um das Bidl zu löschen. Das Bild "
|
| 3043 |
+
"wird gelöscht, wenn Sie das Profil abspeichern."
|
| 3044 |
+
|
| 3045 |
+
msgid "You will need to re-login since you changed your password."
|
| 3046 |
+
msgstr "Sie müssen sich neu anmelden, da Sie Ihr Passwort geändert haben."
|
| 3047 |
+
|
| 3048 |
+
msgid ""
|
| 3049 |
+
"Please enter any two digits with <strong>no</strong> spaces (Example: 12)"
|
| 3050 |
+
msgstr ""
|
| 3051 |
+
"Bitte geben Sie zwei Ziffern <strong>ohne</strong>Leerzeichen ein (bspw.: 12)"
|
| 3052 |
+
|
| 3053 |
+
msgid "Verification"
|
| 3054 |
+
msgstr "Verifizierung"
|
| 3055 |
+
|
| 3056 |
+
msgid "Please enter any two digits with no spaces (Example: 12)*"
|
| 3057 |
+
msgstr "Bitte geben Sie zwei Ziffern ohne Leerzeichen ein (bspw.: 12)"
|
| 3058 |
+
|
| 3059 |
+
msgid "Username can only contain: letters, numbers and .-*@"
|
| 3060 |
+
msgstr "Mitgliedsname kann nur enthalten: Buchstaben, Zahlen und .-*@"
|
| 3061 |
+
|
| 3062 |
+
msgid "Allowed characters are: letters, numbers and .-_*@"
|
| 3063 |
+
msgstr "Zulässige Zeichen sind: Buchstaben, Zahlen und .-_*@"
|
| 3064 |
+
|
| 3065 |
+
#: === Partial protection addon strings
|
| 3066 |
+
msgid "You do not have permission to view this content."
|
| 3067 |
+
msgstr "Ihre Mitgliedschaft erlaubt es nicht, diesen Inhalt anzuzeigen."
|
| 3068 |
+
|
| 3069 |
+
msgid "Your membership level does not have permission to view this content."
|
| 3070 |
+
msgstr "Ihre Mitgliedschaft erlaubt es nicht, diesen Inhalt anzuzeigen."
|
| 3071 |
+
|
| 3072 |
+
msgid "This content is for members only."
|
| 3073 |
+
msgstr "Auf diesen Inhalt dürfen nur Mitglieder zugreifen."
|
| 3074 |
+
|
| 3075 |
+
msgid "Please check at least one."
|
| 3076 |
+
msgstr "Bitte überprüfen Sie mindestens eine."
|
| 3077 |
+
|
| 3078 |
+
#: === Member Directory Listing addon strings swpm-member-directory-admin.php:9
|
| 3079 |
+
msgid "Member Directory"
|
| 3080 |
+
msgstr "Mitglieder Verzeichnis"
|
| 3081 |
+
|
| 3082 |
+
#: includes/swpm_mda_show_profile.php:26
|
| 3083 |
+
msgid "Member ID"
|
| 3084 |
+
msgstr "Mitglieds ID"
|
| 3085 |
+
|
| 3086 |
+
#: includes/swpm_mda_show_profile.php:30
|
| 3087 |
+
msgid "Level"
|
| 3088 |
+
msgstr "Level"
|
| 3089 |
+
|
| 3090 |
+
#: includes/swpm_mda_show_profile.php:32
|
| 3091 |
+
msgid "Address"
|
| 3092 |
+
msgstr "Adresse"
|
| 3093 |
+
|
| 3094 |
+
#: views/template-1.php:52 views/template-2.php:53
|
| 3095 |
+
msgid "Search..."
|
| 3096 |
+
msgstr "Suche..."
|
| 3097 |
+
|
| 3098 |
+
#: views/template-1.php:60 views/template-2.php:62
|
| 3099 |
+
msgid "Clear Search"
|
| 3100 |
+
msgstr "Suche löschen"
|
| 3101 |
+
|
| 3102 |
+
msgid "You must be logged in to upgrade a membership."
|
| 3103 |
+
msgstr "Sie müssen angemeldet sein, um eine Mitgliedschaft zu ändern."
|
| 3104 |
+
|
| 3105 |
+
msgid "Membership level has been updated."
|
| 3106 |
+
msgstr "Die Mitgliedschaftsstufe wurde aktualisiert."
|
| 3107 |
+
|
| 3108 |
+
msgid "Already a member of this level."
|
| 3109 |
+
msgstr "Bereits ein Mitglied dieser Mitgliedschaftsstufe."
|
languages/simple-membership.pot
CHANGED
|
@@ -490,9 +490,7 @@ msgid "You must agree to the privacy policy."
|
|
| 490 |
msgstr ""
|
| 491 |
|
| 492 |
#: classes/class.swpm-front-registration.php:140
|
| 493 |
-
msgid ""
|
| 494 |
-
"You need to confirm your email address. Please check your email and follow "
|
| 495 |
-
"instructions to complete your registration."
|
| 496 |
msgstr ""
|
| 497 |
|
| 498 |
#: classes/class.swpm-front-registration.php:145
|
|
@@ -2709,9 +2707,6 @@ msgstr ""
|
|
| 2709 |
msgid "HTTP error occured during payment process:"
|
| 2710 |
msgstr ""
|
| 2711 |
|
| 2712 |
-
msgid "You need to confirm your email address. Please check your email and follow instructions to complete your registration."
|
| 2713 |
-
msgstr ""
|
| 2714 |
-
|
| 2715 |
#: Translation strings from addons === Form builder addon
|
| 2716 |
msgid "Type password here"
|
| 2717 |
msgstr ""
|
|
@@ -2777,6 +2772,9 @@ msgstr ""
|
|
| 2777 |
msgid "This content is for members only."
|
| 2778 |
msgstr ""
|
| 2779 |
|
|
|
|
|
|
|
|
|
|
| 2780 |
#: === Member Directory Listing addon strings swpm-member-directory-admin.php:9
|
| 2781 |
msgid "Member Directory"
|
| 2782 |
msgstr ""
|
|
@@ -2800,3 +2798,13 @@ msgstr ""
|
|
| 2800 |
#: views/template-1.php:60 views/template-2.php:62
|
| 2801 |
msgid "Clear Search"
|
| 2802 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 490 |
msgstr ""
|
| 491 |
|
| 492 |
#: classes/class.swpm-front-registration.php:140
|
| 493 |
+
msgid "You need to confirm your email address. Please check your email and follow instructions to complete your registration."
|
|
|
|
|
|
|
| 494 |
msgstr ""
|
| 495 |
|
| 496 |
#: classes/class.swpm-front-registration.php:145
|
| 2707 |
msgid "HTTP error occured during payment process:"
|
| 2708 |
msgstr ""
|
| 2709 |
|
|
|
|
|
|
|
|
|
|
| 2710 |
#: Translation strings from addons === Form builder addon
|
| 2711 |
msgid "Type password here"
|
| 2712 |
msgstr ""
|
| 2772 |
msgid "This content is for members only."
|
| 2773 |
msgstr ""
|
| 2774 |
|
| 2775 |
+
msgid "Please check at least one."
|
| 2776 |
+
msgstr ""
|
| 2777 |
+
|
| 2778 |
#: === Member Directory Listing addon strings swpm-member-directory-admin.php:9
|
| 2779 |
msgid "Member Directory"
|
| 2780 |
msgstr ""
|
| 2798 |
#: views/template-1.php:60 views/template-2.php:62
|
| 2799 |
msgid "Clear Search"
|
| 2800 |
msgstr ""
|
| 2801 |
+
|
| 2802 |
+
# === Misc Shortcodes Addon ===
|
| 2803 |
+
msgid "You must be logged in to upgrade a membership."
|
| 2804 |
+
msgstr ""
|
| 2805 |
+
|
| 2806 |
+
msgid "Membership level has been updated."
|
| 2807 |
+
msgstr ""
|
| 2808 |
+
|
| 2809 |
+
msgid "Already a member of this level."
|
| 2810 |
+
msgstr ""
|
lib/stripe-util-functions.php
CHANGED
|
@@ -5,7 +5,9 @@
|
|
| 5 |
class StripeUtilFunctions {
|
| 6 |
|
| 7 |
public static function get_stripe_plan_info($api_key, $plan_id) {
|
| 8 |
-
|
|
|
|
|
|
|
| 9 |
|
| 10 |
$stripe_err = '';
|
| 11 |
|
| 5 |
class StripeUtilFunctions {
|
| 6 |
|
| 7 |
public static function get_stripe_plan_info($api_key, $plan_id) {
|
| 8 |
+
if ( ! class_exists( '\Stripe\Stripe' ) ) {
|
| 9 |
+
require_once(SIMPLE_WP_MEMBERSHIP_PATH . 'lib/stripe-gateway/init.php');
|
| 10 |
+
}
|
| 11 |
|
| 12 |
$stripe_err = '';
|
| 13 |
|
readme.txt
CHANGED
|
@@ -4,7 +4,7 @@ Donate link: https://simple-membership-plugin.com/
|
|
| 4 |
Tags: member, members, members only, membership, memberships, register, WordPress membership plugin, content, content protection, paypal, restrict, restrict access, Restrict content, admin, access control, subscription, teaser, protection, profile, login, login page, bbpress, stripe, braintree
|
| 5 |
Requires at least: 4.0
|
| 6 |
Tested up to: 5.2
|
| 7 |
-
Stable tag: 3.8.
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
|
@@ -158,6 +158,30 @@ https://simple-membership-plugin.com/
|
|
| 158 |
|
| 159 |
== Changelog ==
|
| 160 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
= 3.8.4 =
|
| 162 |
- More strings from the settings admin interface of the plugin are translatable.
|
| 163 |
- The strong password validation error message is now translatable (if you are using this feature).
|
| 4 |
Tags: member, members, members only, membership, memberships, register, WordPress membership plugin, content, content protection, paypal, restrict, restrict access, Restrict content, admin, access control, subscription, teaser, protection, profile, login, login page, bbpress, stripe, braintree
|
| 5 |
Requires at least: 4.0
|
| 6 |
Tested up to: 5.2
|
| 7 |
+
Stable tag: 3.8.9
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
| 158 |
|
| 159 |
== Changelog ==
|
| 160 |
|
| 161 |
+
= 3.8.9 =
|
| 162 |
+
- Added a new feature in the email settings menu to allow disabling of the "Account Upgraded" email notification.
|
| 163 |
+
|
| 164 |
+
= 3.8.8 =
|
| 165 |
+
- The expiry date in the login widget now shows the translated date value for Non-English installs.
|
| 166 |
+
- Updated the German language translation files.
|
| 167 |
+
- Integration with the Super Socializer plugin for social login.
|
| 168 |
+
https://simple-membership-plugin.com/social-login-plugin-simple-membership/
|
| 169 |
+
|
| 170 |
+
= 3.8.7 =
|
| 171 |
+
- Removed a PHP warning in the wp_password_reset_hook(). Thanks to John Wick for pointing this out.
|
| 172 |
+
- Small improvement to the PayPal subscription IPN handling script.
|
| 173 |
+
|
| 174 |
+
= 3.8.6 =
|
| 175 |
+
- Added nonce check to the "Addons settings" tab.
|
| 176 |
+
|
| 177 |
+
= 3.8.5 =
|
| 178 |
+
- Fixed CSRF issue in the Bulk Operation menu tab.
|
| 179 |
+
- Fixed Braintree payment issue that could occur if customer pays via PayPal.
|
| 180 |
+
- Fixed Stripe library conflict if other Stripe plugin is installed.
|
| 181 |
+
- Added support for the coupons addon.
|
| 182 |
+
- Added current_user_can() check to the admin menu handling function.
|
| 183 |
+
- Added nonce check to wp_ajax.
|
| 184 |
+
|
| 185 |
= 3.8.4 =
|
| 186 |
- More strings from the settings admin interface of the plugin are translatable.
|
| 187 |
- The strong password validation error message is now translatable (if you are using this feature).
|
simple-wp-membership.php
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?php
|
| 2 |
/*
|
| 3 |
Plugin Name: Simple WordPress Membership
|
| 4 |
-
Version: 3.8.
|
| 5 |
Plugin URI: https://simple-membership-plugin.com/
|
| 6 |
Author: smp7, wp.insider
|
| 7 |
Author URI: https://simple-membership-plugin.com/
|
|
@@ -19,7 +19,7 @@ include_once('classes/class.simple-wp-membership.php');
|
|
| 19 |
include_once('classes/class.swpm-cronjob.php');
|
| 20 |
include_once('swpm-compat.php');
|
| 21 |
|
| 22 |
-
define('SIMPLE_WP_MEMBERSHIP_VER', '3.8.
|
| 23 |
define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.3');
|
| 24 |
define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
|
| 25 |
define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
|
| 1 |
<?php
|
| 2 |
/*
|
| 3 |
Plugin Name: Simple WordPress Membership
|
| 4 |
+
Version: 3.8.9
|
| 5 |
Plugin URI: https://simple-membership-plugin.com/
|
| 6 |
Author: smp7, wp.insider
|
| 7 |
Author URI: https://simple-membership-plugin.com/
|
| 19 |
include_once('classes/class.swpm-cronjob.php');
|
| 20 |
include_once('swpm-compat.php');
|
| 21 |
|
| 22 |
+
define('SIMPLE_WP_MEMBERSHIP_VER', '3.8.9');
|
| 23 |
define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.3');
|
| 24 |
define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
|
| 25 |
define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
|
views/admin_add_ons_page.php
CHANGED
|
@@ -1,4 +1,8 @@
|
|
| 1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
$output = '';
|
| 3 |
echo '<link type="text/css" rel="stylesheet" href="' . SIMPLE_WP_MEMBERSHIP_URL . '/css/swpm.addons.listing.css" />' . "\n";
|
| 4 |
?>
|
| 1 |
<?php
|
| 2 |
+
|
| 3 |
+
//Check current_user_can() or die.
|
| 4 |
+
SwpmMiscUtils::check_user_permission_and_is_admin('Main Addons Listing Menu');
|
| 5 |
+
|
| 6 |
$output = '';
|
| 7 |
echo '<link type="text/css" rel="stylesheet" href="' . SIMPLE_WP_MEMBERSHIP_URL . '/css/swpm.addons.listing.css" />' . "\n";
|
| 8 |
?>
|
views/admin_addon_settings.php
CHANGED
|
@@ -4,6 +4,7 @@
|
|
| 4 |
</p>
|
| 5 |
<form action="" method="POST">
|
| 6 |
<input type="hidden" name="tab" value="<?php echo $current_tab; ?>" />
|
| 7 |
-
<?php do_action('swpm_addon_settings_section');
|
| 8 |
-
|
|
|
|
| 9 |
</form>
|
| 4 |
</p>
|
| 5 |
<form action="" method="POST">
|
| 6 |
<input type="hidden" name="tab" value="<?php echo $current_tab; ?>" />
|
| 7 |
+
<?php do_action('swpm_addon_settings_section');
|
| 8 |
+
wp_nonce_field('swpm_addon_settings_section','swpm_addon_settings_section_save_settings');
|
| 9 |
+
submit_button(SwpmUtils::_('Save Changes'), 'primary', 'swpm-addon-settings'); ?>
|
| 10 |
</form>
|
views/admin_category_list.php
CHANGED
|
@@ -12,7 +12,9 @@
|
|
| 12 |
</p>
|
| 13 |
</div>
|
| 14 |
|
| 15 |
-
<form id="category_list_form" method="post">
|
|
|
|
|
|
|
| 16 |
<p class="swpm-select-box-left">
|
| 17 |
<label for="membership_level_id"><?php SwpmUtils::e('Membership Level:'); ?></label>
|
| 18 |
<select id="membership_level_id" name="membership_level_id">
|
|
@@ -20,7 +22,9 @@
|
|
| 20 |
<?php echo SwpmUtils::membership_level_dropdown($category_list->selected_level_id); ?>
|
| 21 |
</select>
|
| 22 |
</p>
|
| 23 |
-
<p class="swpm-select-box-left"
|
|
|
|
|
|
|
| 24 |
<?php $category_list->prepare_items(); ?>
|
| 25 |
<?php $category_list->display(); ?>
|
| 26 |
</form>
|
| 12 |
</p>
|
| 13 |
</div>
|
| 14 |
|
| 15 |
+
<form id="category_list_form" method="post">
|
| 16 |
+
<input type="hidden" name="swpm_category_prot_update_nonce" value="<?php echo wp_create_nonce('swpm_category_prot_update_nonce_action'); ?>" />
|
| 17 |
+
|
| 18 |
<p class="swpm-select-box-left">
|
| 19 |
<label for="membership_level_id"><?php SwpmUtils::e('Membership Level:'); ?></label>
|
| 20 |
<select id="membership_level_id" name="membership_level_id">
|
| 22 |
<?php echo SwpmUtils::membership_level_dropdown($category_list->selected_level_id); ?>
|
| 23 |
</select>
|
| 24 |
</p>
|
| 25 |
+
<p class="swpm-select-box-left">
|
| 26 |
+
<input type="submit" class="button-primary" name="update_category_list" value="<?php SwpmUtils::e('Update'); ?>">
|
| 27 |
+
</p>
|
| 28 |
<?php $category_list->prepare_items(); ?>
|
| 29 |
<?php $category_list->display(); ?>
|
| 30 |
</form>
|
views/admin_post_list.php
CHANGED
|
@@ -22,7 +22,12 @@
|
|
| 22 |
<a class="nav-tab<?php echo $post_list->type == 'page' ? ' nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=post_list&list_type=page"><?php SwpmUtils::e('Pages'); ?></a>
|
| 23 |
<a class="nav-tab<?php echo $post_list->type == 'custom_post' ? ' nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=post_list&list_type=custom_post"><?php SwpmUtils::e('Custom Posts'); ?></a>
|
| 24 |
</div>
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
<p class="swpm-select-box-left">
|
| 27 |
<label for="membership_level_id"><?php SwpmUtils::e('Membership Level:'); ?></label>
|
| 28 |
<select id="membership_level_id" name="membership_level_id">
|
|
@@ -30,11 +35,14 @@
|
|
| 30 |
<?php echo SwpmUtils::membership_level_dropdown($post_list->selected_level_id); ?>
|
| 31 |
</select>
|
| 32 |
</p>
|
| 33 |
-
<p class="swpm-select-box-left"
|
|
|
|
|
|
|
| 34 |
<?php $post_list->prepare_items(); ?>
|
| 35 |
<?php $post_list->display(); ?>
|
| 36 |
<input type="hidden" name="list_type" value="<?php echo $post_list->type; ?>">
|
| 37 |
-
</form
|
|
|
|
| 38 |
|
| 39 |
<script type="text/javascript">
|
| 40 |
jQuery(document).ready(function ($) {
|
| 22 |
<a class="nav-tab<?php echo $post_list->type == 'page' ? ' nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=post_list&list_type=page"><?php SwpmUtils::e('Pages'); ?></a>
|
| 23 |
<a class="nav-tab<?php echo $post_list->type == 'custom_post' ? ' nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=post_list&list_type=custom_post"><?php SwpmUtils::e('Custom Posts'); ?></a>
|
| 24 |
</div>
|
| 25 |
+
|
| 26 |
+
<br />
|
| 27 |
+
<div class="swpm_post_protection_list_form">
|
| 28 |
+
<form id="post_list_form" method="post">
|
| 29 |
+
<input type="hidden" name="swpm_post_prot_update_nonce" value="<?php echo wp_create_nonce('swpm_post_prot_update_nonce_action'); ?>" />
|
| 30 |
+
|
| 31 |
<p class="swpm-select-box-left">
|
| 32 |
<label for="membership_level_id"><?php SwpmUtils::e('Membership Level:'); ?></label>
|
| 33 |
<select id="membership_level_id" name="membership_level_id">
|
| 35 |
<?php echo SwpmUtils::membership_level_dropdown($post_list->selected_level_id); ?>
|
| 36 |
</select>
|
| 37 |
</p>
|
| 38 |
+
<p class="swpm-select-box-left">
|
| 39 |
+
<input type="submit" class="button-primary" name="update_post_list" value="<?php SwpmUtils::e('Update'); ?>">
|
| 40 |
+
</p>
|
| 41 |
<?php $post_list->prepare_items(); ?>
|
| 42 |
<?php $post_list->display(); ?>
|
| 43 |
<input type="hidden" name="list_type" value="<?php echo $post_list->type; ?>">
|
| 44 |
+
</form>
|
| 45 |
+
</div>
|
| 46 |
|
| 47 |
<script type="text/javascript">
|
| 48 |
jQuery(document).ready(function ($) {
|
views/payments/admin_create_payment_buttons.php
CHANGED
|
@@ -37,6 +37,7 @@ if (!isset($_REQUEST['swpm_button_type_selected'])) {
|
|
| 37 |
<br />
|
| 38 |
<?php
|
| 39 |
apply_filters('swpm_new_button_select_button_type', '');
|
|
|
|
| 40 |
?>
|
| 41 |
|
| 42 |
<br />
|
|
@@ -48,6 +49,8 @@ if (!isset($_REQUEST['swpm_button_type_selected'])) {
|
|
| 48 |
<?php
|
| 49 |
} else {
|
| 50 |
//Button type has been selected. Show the payment button configuration option.
|
|
|
|
|
|
|
| 51 |
//Fire the action hook. The addons can render the payment button configuration option as appropriate.
|
| 52 |
$button_type = sanitize_text_field($_REQUEST['button_type']);
|
| 53 |
do_action('swpm_create_new_button_for_' . $button_type);
|
| 37 |
<br />
|
| 38 |
<?php
|
| 39 |
apply_filters('swpm_new_button_select_button_type', '');
|
| 40 |
+
wp_nonce_field( 'swpm_admin_create_btns', 'swpm_admin_create_btns' );
|
| 41 |
?>
|
| 42 |
|
| 43 |
<br />
|
| 49 |
<?php
|
| 50 |
} else {
|
| 51 |
//Button type has been selected. Show the payment button configuration option.
|
| 52 |
+
//check the nonce first
|
| 53 |
+
check_admin_referer('swpm_admin_create_btns','swpm_admin_create_btns');
|
| 54 |
//Fire the action hook. The addons can render the payment button configuration option as appropriate.
|
| 55 |
$button_type = sanitize_text_field($_REQUEST['button_type']);
|
| 56 |
do_action('swpm_create_new_button_for_' . $button_type);
|
views/payments/payment-gateway/admin_braintree_buy_now_button.php
CHANGED
|
@@ -124,6 +124,7 @@ function render_save_edit_braintree_button_interface($bt_opts, $is_edit_mode = f
|
|
| 124 |
</table>
|
| 125 |
|
| 126 |
<p class="submit">
|
|
|
|
| 127 |
<input type="submit" name="swpm_braintree_buy_now_<?php echo ($is_edit_mode ? 'edit' : 'save'); ?>_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 128 |
</p>
|
| 129 |
|
|
@@ -230,6 +231,7 @@ add_action('swpm_edit_payment_button_process_submission', 'swpm_save_edit_braint
|
|
| 230 |
function swpm_save_edit_braintree_buy_now_button_data() {
|
| 231 |
if (isset($_REQUEST['swpm_braintree_buy_now_save_submit'])) {
|
| 232 |
//This is a Braintree buy now button save event.
|
|
|
|
| 233 |
|
| 234 |
$button_id = wp_insert_post(
|
| 235 |
array(
|
|
@@ -272,6 +274,7 @@ function swpm_save_edit_braintree_buy_now_button_data() {
|
|
| 272 |
|
| 273 |
if (isset($_REQUEST['swpm_braintree_buy_now_edit_submit'])) {
|
| 274 |
//This is a Braintree buy now button edit event.
|
|
|
|
| 275 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 276 |
$button_id = absint($button_id);
|
| 277 |
$button_type = sanitize_text_field($_REQUEST['button_type']);
|
| 124 |
</table>
|
| 125 |
|
| 126 |
<p class="submit">
|
| 127 |
+
<?php wp_nonce_field('swpm_admin_add_edit_braintree_buy_now_btn','swpm_admin_add_edit_braintree_buy_now_btn') ?>
|
| 128 |
<input type="submit" name="swpm_braintree_buy_now_<?php echo ($is_edit_mode ? 'edit' : 'save'); ?>_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 129 |
</p>
|
| 130 |
|
| 231 |
function swpm_save_edit_braintree_buy_now_button_data() {
|
| 232 |
if (isset($_REQUEST['swpm_braintree_buy_now_save_submit'])) {
|
| 233 |
//This is a Braintree buy now button save event.
|
| 234 |
+
check_admin_referer( 'swpm_admin_add_edit_braintree_buy_now_btn', 'swpm_admin_add_edit_braintree_buy_now_btn' );
|
| 235 |
|
| 236 |
$button_id = wp_insert_post(
|
| 237 |
array(
|
| 274 |
|
| 275 |
if (isset($_REQUEST['swpm_braintree_buy_now_edit_submit'])) {
|
| 276 |
//This is a Braintree buy now button edit event.
|
| 277 |
+
check_admin_referer( 'swpm_admin_add_edit_braintree_buy_now_btn', 'swpm_admin_add_edit_braintree_buy_now_btn' );
|
| 278 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 279 |
$button_id = absint($button_id);
|
| 280 |
$button_type = sanitize_text_field($_REQUEST['button_type']);
|
views/payments/payment-gateway/admin_paypal_buy_now_button.php
CHANGED
|
@@ -123,6 +123,7 @@ function swpm_create_new_pp_buy_now_button() {
|
|
| 123 |
</table>
|
| 124 |
|
| 125 |
<p class="submit">
|
|
|
|
| 126 |
<input type="submit" name="swpm_pp_buy_now_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 127 |
</p>
|
| 128 |
|
|
@@ -141,6 +142,8 @@ add_action('swpm_create_new_button_process_submission', 'swpm_save_new_pp_buy_no
|
|
| 141 |
function swpm_save_new_pp_buy_now_button_data() {
|
| 142 |
if (isset($_REQUEST['swpm_pp_buy_now_save_submit'])) {
|
| 143 |
//This is a PayPal buy now button save event. Process the submission.
|
|
|
|
|
|
|
| 144 |
//TODO - Do some extra validation check?
|
| 145 |
|
| 146 |
//Save the button data
|
|
@@ -318,7 +321,8 @@ function swpm_edit_pp_buy_now_button() {
|
|
| 318 |
</table>
|
| 319 |
|
| 320 |
<p class="submit">
|
| 321 |
-
|
|
|
|
| 322 |
</p>
|
| 323 |
|
| 324 |
</form>
|
|
@@ -336,6 +340,8 @@ add_action('swpm_edit_payment_button_process_submission', 'swpm_edit_pp_buy_now_
|
|
| 336 |
function swpm_edit_pp_buy_now_button_data() {
|
| 337 |
if (isset($_REQUEST['swpm_pp_buy_now_edit_submit'])) {
|
| 338 |
//This is a PayPal buy now button edit event. Process the submission.
|
|
|
|
|
|
|
| 339 |
|
| 340 |
//Update and Save the edited payment button data
|
| 341 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 123 |
</table>
|
| 124 |
|
| 125 |
<p class="submit">
|
| 126 |
+
<?php wp_nonce_field('swpm_admin_add_edit_pp_buy_now_btn','swpm_admin_create_pp_buy_now_btn') ?>
|
| 127 |
<input type="submit" name="swpm_pp_buy_now_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 128 |
</p>
|
| 129 |
|
| 142 |
function swpm_save_new_pp_buy_now_button_data() {
|
| 143 |
if (isset($_REQUEST['swpm_pp_buy_now_save_submit'])) {
|
| 144 |
//This is a PayPal buy now button save event. Process the submission.
|
| 145 |
+
//Check nonce first
|
| 146 |
+
check_admin_referer( 'swpm_admin_add_edit_pp_buy_now_btn', 'swpm_admin_create_pp_buy_now_btn' );
|
| 147 |
//TODO - Do some extra validation check?
|
| 148 |
|
| 149 |
//Save the button data
|
| 321 |
</table>
|
| 322 |
|
| 323 |
<p class="submit">
|
| 324 |
+
<?php wp_nonce_field('swpm_admin_add_edit_pp_buy_now_btn','swpm_admin_edit_pp_buy_now_btn') ?>
|
| 325 |
+
<input type="submit" name="swpm_pp_buy_now_edit_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 326 |
</p>
|
| 327 |
|
| 328 |
</form>
|
| 340 |
function swpm_edit_pp_buy_now_button_data() {
|
| 341 |
if (isset($_REQUEST['swpm_pp_buy_now_edit_submit'])) {
|
| 342 |
//This is a PayPal buy now button edit event. Process the submission.
|
| 343 |
+
//Check nonce first
|
| 344 |
+
check_admin_referer( 'swpm_admin_add_edit_pp_buy_now_btn', 'swpm_admin_edit_pp_buy_now_btn' );
|
| 345 |
|
| 346 |
//Update and Save the edited payment button data
|
| 347 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
views/payments/payment-gateway/admin_paypal_smart_checkout_button.php
CHANGED
|
@@ -211,6 +211,7 @@ function render_save_edit_pp_smart_checkout_button_interface($bt_opts, $is_edit_
|
|
| 211 |
</table>
|
| 212 |
|
| 213 |
<p class="submit">
|
|
|
|
| 214 |
<input type="submit" name="swpm_pp_smart_checkout_<?php echo ($is_edit_mode ? 'edit' : 'save'); ?>_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 215 |
</p>
|
| 216 |
|
|
@@ -294,6 +295,8 @@ function swpm_save_edit_pp_smart_checkout_button_data() {
|
|
| 294 |
if (isset($_REQUEST['swpm_pp_smart_checkout_save_submit'])) {
|
| 295 |
//This is a PayPal Smart Checkout button save event.
|
| 296 |
|
|
|
|
|
|
|
| 297 |
$button_id = wp_insert_post(
|
| 298 |
array(
|
| 299 |
'post_title' => sanitize_text_field($_REQUEST['button_name']),
|
|
@@ -331,6 +334,9 @@ function swpm_save_edit_pp_smart_checkout_button_data() {
|
|
| 331 |
|
| 332 |
if (isset($_REQUEST['swpm_pp_smart_checkout_edit_submit'])) {
|
| 333 |
//This is a PayPal Smart Checkout button edit event.
|
|
|
|
|
|
|
|
|
|
| 334 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 335 |
$button_id = absint($button_id);
|
| 336 |
$button_type = sanitize_text_field($_REQUEST['button_type']);
|
| 211 |
</table>
|
| 212 |
|
| 213 |
<p class="submit">
|
| 214 |
+
<?php wp_nonce_field('swpm_admin_add_edit_pp_smart_checkout_btn','swpm_admin_add_edit_pp_smart_checkout_btn') ?>
|
| 215 |
<input type="submit" name="swpm_pp_smart_checkout_<?php echo ($is_edit_mode ? 'edit' : 'save'); ?>_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 216 |
</p>
|
| 217 |
|
| 295 |
if (isset($_REQUEST['swpm_pp_smart_checkout_save_submit'])) {
|
| 296 |
//This is a PayPal Smart Checkout button save event.
|
| 297 |
|
| 298 |
+
check_admin_referer( 'swpm_admin_add_edit_pp_smart_checkout_btn', 'swpm_admin_add_edit_pp_smart_checkout_btn' );
|
| 299 |
+
|
| 300 |
$button_id = wp_insert_post(
|
| 301 |
array(
|
| 302 |
'post_title' => sanitize_text_field($_REQUEST['button_name']),
|
| 334 |
|
| 335 |
if (isset($_REQUEST['swpm_pp_smart_checkout_edit_submit'])) {
|
| 336 |
//This is a PayPal Smart Checkout button edit event.
|
| 337 |
+
|
| 338 |
+
check_admin_referer( 'swpm_admin_add_edit_pp_smart_checkout_btn', 'swpm_admin_add_edit_pp_smart_checkout_btn' );
|
| 339 |
+
|
| 340 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 341 |
$button_id = absint($button_id);
|
| 342 |
$button_type = sanitize_text_field($_REQUEST['button_type']);
|
views/payments/payment-gateway/admin_paypal_subscription_button.php
CHANGED
|
@@ -197,7 +197,8 @@ function swpm_create_new_pp_subscription_button() {
|
|
| 197 |
</div><!-- end of optional details box -->
|
| 198 |
|
| 199 |
<p class="submit">
|
| 200 |
-
|
|
|
|
| 201 |
</p>
|
| 202 |
|
| 203 |
</form>
|
|
@@ -214,6 +215,8 @@ function swpm_save_new_pp_subscription_button_data() {
|
|
| 214 |
if (isset($_REQUEST['swpm_pp_subscription_save_submit'])) {
|
| 215 |
//This is a PayPal subscription button save event. Process the submission.
|
| 216 |
|
|
|
|
|
|
|
| 217 |
$button_id = wp_insert_post(
|
| 218 |
array(
|
| 219 |
'post_title' => sanitize_text_field($_REQUEST['button_name']),
|
|
@@ -481,6 +484,7 @@ function swpm_edit_pp_subscription_button() {
|
|
| 481 |
</div><!-- end of optional details box -->
|
| 482 |
|
| 483 |
<p class="submit">
|
|
|
|
| 484 |
<input type="submit" name="swpm_pp_subscription_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 485 |
</p>
|
| 486 |
|
|
@@ -497,6 +501,9 @@ add_action('swpm_edit_payment_button_process_submission', 'swpm_edit_pp_subscrip
|
|
| 497 |
function swpm_edit_pp_subscription_button_data() {
|
| 498 |
if (isset($_REQUEST['swpm_pp_subscription_save_submit'])) {
|
| 499 |
//This is a PayPal subscription button edit event. Process the submission.
|
|
|
|
|
|
|
|
|
|
| 500 |
//Update and Save the edited payment button data
|
| 501 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 502 |
$button_id = absint($button_id);
|
| 197 |
</div><!-- end of optional details box -->
|
| 198 |
|
| 199 |
<p class="submit">
|
| 200 |
+
<?php wp_nonce_field('swpm_admin_add_edit_pp_subs_btn','swpm_admin_create_pp_subs_btn') ?>
|
| 201 |
+
<input type="submit" name="swpm_pp_subscription_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 202 |
</p>
|
| 203 |
|
| 204 |
</form>
|
| 215 |
if (isset($_REQUEST['swpm_pp_subscription_save_submit'])) {
|
| 216 |
//This is a PayPal subscription button save event. Process the submission.
|
| 217 |
|
| 218 |
+
check_admin_referer( 'swpm_admin_add_edit_pp_subs_btn', 'swpm_admin_create_pp_subs_btn' );
|
| 219 |
+
|
| 220 |
$button_id = wp_insert_post(
|
| 221 |
array(
|
| 222 |
'post_title' => sanitize_text_field($_REQUEST['button_name']),
|
| 484 |
</div><!-- end of optional details box -->
|
| 485 |
|
| 486 |
<p class="submit">
|
| 487 |
+
<?php wp_nonce_field('swpm_admin_add_edit_pp_subs_btn','swpm_admin_edit_pp_subs_btn') ?>
|
| 488 |
<input type="submit" name="swpm_pp_subscription_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 489 |
</p>
|
| 490 |
|
| 501 |
function swpm_edit_pp_subscription_button_data() {
|
| 502 |
if (isset($_REQUEST['swpm_pp_subscription_save_submit'])) {
|
| 503 |
//This is a PayPal subscription button edit event. Process the submission.
|
| 504 |
+
|
| 505 |
+
check_admin_referer( 'swpm_admin_add_edit_pp_subs_btn', 'swpm_admin_edit_pp_subs_btn' );
|
| 506 |
+
|
| 507 |
//Update and Save the edited payment button data
|
| 508 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 509 |
$button_id = absint($button_id);
|
views/payments/payment-gateway/admin_stripe_buy_now_button.php
CHANGED
|
@@ -156,6 +156,7 @@ function swpm_create_new_stripe_buy_now_button() {
|
|
| 156 |
</table>
|
| 157 |
|
| 158 |
<p class="submit">
|
|
|
|
| 159 |
<input type="submit" name="swpm_stripe_buy_now_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 160 |
</p>
|
| 161 |
|
|
@@ -174,6 +175,8 @@ add_action('swpm_create_new_button_process_submission', 'swpm_save_new_stripe_bu
|
|
| 174 |
function swpm_save_new_stripe_buy_now_button_data() {
|
| 175 |
if (isset($_REQUEST['swpm_stripe_buy_now_save_submit'])) {
|
| 176 |
//This is a Stripe buy now button save event. Process the submission.
|
|
|
|
|
|
|
| 177 |
//Save the button data
|
| 178 |
$button_id = wp_insert_post(
|
| 179 |
array(
|
|
@@ -380,7 +383,8 @@ function swpm_edit_stripe_buy_now_button() {
|
|
| 380 |
</table>
|
| 381 |
|
| 382 |
<p class="submit">
|
| 383 |
-
|
|
|
|
| 384 |
</p>
|
| 385 |
|
| 386 |
</form>
|
|
@@ -398,6 +402,7 @@ add_action('swpm_edit_payment_button_process_submission', 'swpm_edit_stripe_buy_
|
|
| 398 |
function swpm_edit_stripe_buy_now_button_data() {
|
| 399 |
if (isset($_REQUEST['swpm_stripe_buy_now_edit_submit'])) {
|
| 400 |
//This is a Stripe buy now button edit event. Process the submission.
|
|
|
|
| 401 |
//Update and Save the edited payment button data
|
| 402 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 403 |
$button_id = absint($button_id);
|
| 156 |
</table>
|
| 157 |
|
| 158 |
<p class="submit">
|
| 159 |
+
<?php wp_nonce_field('swpm_admin_add_edit_stripe_buy_now_btn','swpm_admin_create_stripe_buy_now_btn') ?>
|
| 160 |
<input type="submit" name="swpm_stripe_buy_now_save_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 161 |
</p>
|
| 162 |
|
| 175 |
function swpm_save_new_stripe_buy_now_button_data() {
|
| 176 |
if (isset($_REQUEST['swpm_stripe_buy_now_save_submit'])) {
|
| 177 |
//This is a Stripe buy now button save event. Process the submission.
|
| 178 |
+
check_admin_referer( 'swpm_admin_add_edit_stripe_buy_now_btn', 'swpm_admin_create_stripe_buy_now_btn' );
|
| 179 |
+
|
| 180 |
//Save the button data
|
| 181 |
$button_id = wp_insert_post(
|
| 182 |
array(
|
| 383 |
</table>
|
| 384 |
|
| 385 |
<p class="submit">
|
| 386 |
+
<?php wp_nonce_field('swpm_admin_add_edit_stripe_buy_now_btn','swpm_admin_edit_stripe_buy_now_btn') ?>
|
| 387 |
+
<input type="submit" name="swpm_stripe_buy_now_edit_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 388 |
</p>
|
| 389 |
|
| 390 |
</form>
|
| 402 |
function swpm_edit_stripe_buy_now_button_data() {
|
| 403 |
if (isset($_REQUEST['swpm_stripe_buy_now_edit_submit'])) {
|
| 404 |
//This is a Stripe buy now button edit event. Process the submission.
|
| 405 |
+
check_admin_referer( 'swpm_admin_add_edit_stripe_buy_now_btn', 'swpm_admin_edit_stripe_buy_now_btn' );
|
| 406 |
//Update and Save the edited payment button data
|
| 407 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 408 |
$button_id = absint($button_id);
|
views/payments/payment-gateway/admin_stripe_subscription_button.php
CHANGED
|
@@ -208,8 +208,8 @@ function swpm_render_new_edit_stripe_subscription_button_interface($opts, $edit
|
|
| 208 |
</div><!-- end of optional details box -->
|
| 209 |
|
| 210 |
<p class="submit">
|
| 211 |
-
|
| 212 |
-
|
| 213 |
</p>
|
| 214 |
|
| 215 |
</form>
|
|
@@ -255,6 +255,7 @@ function swpm_save_edit_stripe_subscription_button_data() {
|
|
| 255 |
}
|
| 256 |
if (isset($edit)) {
|
| 257 |
//This is a Stripe subscription button save or edit event. Process the submission.
|
|
|
|
| 258 |
if ($edit) {
|
| 259 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 260 |
$button_id = absint($button_id);
|
| 208 |
</div><!-- end of optional details box -->
|
| 209 |
|
| 210 |
<p class="submit">
|
| 211 |
+
<?php wp_nonce_field('swpm_admin_add_edit_stripe_subs_btn','swpm_admin_add_edit_stripe_subs_btn') ?>
|
| 212 |
+
<input type="submit" name="swpm_stripe_subscription_<?php echo ($edit ? 'edit' : 'save') ?>_submit" class="button-primary" value="<?php echo SwpmUtils::_('Save Payment Data'); ?>" >
|
| 213 |
</p>
|
| 214 |
|
| 215 |
</form>
|
| 255 |
}
|
| 256 |
if (isset($edit)) {
|
| 257 |
//This is a Stripe subscription button save or edit event. Process the submission.
|
| 258 |
+
check_admin_referer( 'swpm_admin_add_edit_stripe_subs_btn', 'swpm_admin_add_edit_stripe_subs_btn' );
|
| 259 |
if ($edit) {
|
| 260 |
$button_id = sanitize_text_field($_REQUEST['button_id']);
|
| 261 |
$button_id = absint($button_id);
|
views/payments/payment-gateway/braintree_button_shortcode_view.php
CHANGED
|
@@ -5,7 +5,8 @@
|
|
| 5 |
* *********************************************** */
|
| 6 |
add_filter('swpm_payment_button_shortcode_for_braintree_buy_now', 'swpm_render_braintree_buy_now_button_sc_output', 10, 2);
|
| 7 |
|
| 8 |
-
function swpm_render_braintree_buy_now_button_sc_output($button_code, $args)
|
|
|
|
| 9 |
|
| 10 |
$button_id = isset($args['id']) ? $args['id'] : '';
|
| 11 |
if (empty($button_id)) {
|
|
@@ -13,13 +14,12 @@ function swpm_render_braintree_buy_now_button_sc_output($button_code, $args) {
|
|
| 13 |
}
|
| 14 |
|
| 15 |
//Get class option for button styling, set Stripe's default if none specified
|
| 16 |
-
$class = isset($args['class']) ? $args['class'] : '
|
| 17 |
|
| 18 |
//Check new_window parameter
|
| 19 |
$window_target = isset($args['new_window']) ? 'target="_blank"' : '';
|
| 20 |
$button_text = (isset($args['button_text'])) ? $args['button_text'] : SwpmUtils::_('Buy Now');
|
| 21 |
-
$billing_address = isset($args['billing_address']) ? '1' : ''
|
| 22 |
-
; //By default don't show the billing address in the checkout form.
|
| 23 |
$item_logo = ''; //Can be used to show an item logo or thumbnail in the checkout form.
|
| 24 |
|
| 25 |
$settings = SwpmSettings::get_instance();
|
|
@@ -38,9 +38,10 @@ function swpm_render_braintree_buy_now_button_sc_output($button_code, $args) {
|
|
| 38 |
return '<p class="swpm-red-box">Error! The payment amount value of the button must be a numeric number. Example: 49.50 </p>';
|
| 39 |
}
|
| 40 |
$payment_amount = round($payment_amount, 2); //round the amount to 2 decimal place.
|
| 41 |
-
$payment_amount_formatted = number_format($payment_amount, 2, '.', '');
|
| 42 |
$payment_currency = get_post_meta($button_id, 'currency_code', true);
|
| 43 |
|
|
|
|
|
|
|
| 44 |
//Return, cancel, notifiy URLs
|
| 45 |
$return_url = get_post_meta($button_id, 'return_url', true);
|
| 46 |
if (empty($return_url)) {
|
|
@@ -100,7 +101,13 @@ function swpm_render_braintree_buy_now_button_sc_output($button_code, $args) {
|
|
| 100 |
$output .= '<p><input type="text" name="first_name" placeholder="First Name" value="' . (isset($member_first_name) ? $member_first_name : '') . '" required></p>';
|
| 101 |
$output .= '<p><input type="text" name="last_name" placeholder="Last Name" value="' . (isset($member_last_name) ? $member_last_name : '') . '" required></p>';
|
| 102 |
$output .= '<p><input type="text" name="member_email" placeholder="Email" value="' . (isset($member_email) ? $member_email : '') . '" required></p>';
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
$output .= '</div>';
|
| 105 |
$output .= '<button id="swpm-show-form-btn-' . $uniqid . '" class="swpm-braintree-pay-now-button swpm-braintree-show-form-button-' . $button_id . ' ' . $class . '" type="button" onclick="swpm_braintree_show_form_' . $uniqid . '();"><span>' . $button_text . '</span></button>';
|
| 106 |
$output .= '<button id="swpm-submit-form-btn-' . $uniqid . '" class="swpm-braintree-pay-now-button swpm-braintree-submit-form-button-' . $button_id . ' ' . $class . '" type="submit" style="display: none;"><span>' . $button_text . '</span></button>';
|
|
@@ -113,19 +120,27 @@ function swpm_render_braintree_buy_now_button_sc_output($button_code, $args) {
|
|
| 113 |
document.getElementById('swpm-submit-form-btn-_uniqid_').style.display = "block";
|
| 114 |
document.getElementById('swpm-form-cont-_uniqid_').style.display = "block";
|
| 115 |
var clientToken = '_token_';
|
| 116 |
-
braintree.setup(clientToken, 'dropin', {
|
| 117 |
-
|
|
|
|
| 118 |
document.getElementById('swpm-braintree-additional-fields-container-_uniqid_').style.display = "block";
|
| 119 |
},
|
| 120 |
-
onPaymentMethodReceived: function
|
| 121 |
document.getElementById('swpm-submit-form-btn-_uniqid_').disabled = true;
|
| 122 |
var client = new braintree.api.Client({
|
| 123 |
clientToken: clientToken
|
| 124 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
client.verify3DS({
|
| 126 |
-
amount:
|
| 127 |
creditCard: obj.nonce
|
| 128 |
-
}, function
|
| 129 |
if (!err) {
|
| 130 |
document.getElementById('swpm-braintree-nonce-field-_uniqid_').value = response.nonce;
|
| 131 |
document.getElementById('swpm-braintree-payment-form-_uniqid_').submit();
|
| 5 |
* *********************************************** */
|
| 6 |
add_filter('swpm_payment_button_shortcode_for_braintree_buy_now', 'swpm_render_braintree_buy_now_button_sc_output', 10, 2);
|
| 7 |
|
| 8 |
+
function swpm_render_braintree_buy_now_button_sc_output($button_code, $args)
|
| 9 |
+
{
|
| 10 |
|
| 11 |
$button_id = isset($args['id']) ? $args['id'] : '';
|
| 12 |
if (empty($button_id)) {
|
| 14 |
}
|
| 15 |
|
| 16 |
//Get class option for button styling, set Stripe's default if none specified
|
| 17 |
+
$class = isset($args['class']) ? $args['class'] : '';
|
| 18 |
|
| 19 |
//Check new_window parameter
|
| 20 |
$window_target = isset($args['new_window']) ? 'target="_blank"' : '';
|
| 21 |
$button_text = (isset($args['button_text'])) ? $args['button_text'] : SwpmUtils::_('Buy Now');
|
| 22 |
+
$billing_address = isset($args['billing_address']) ? '1' : '';; //By default don't show the billing address in the checkout form.
|
|
|
|
| 23 |
$item_logo = ''; //Can be used to show an item logo or thumbnail in the checkout form.
|
| 24 |
|
| 25 |
$settings = SwpmSettings::get_instance();
|
| 38 |
return '<p class="swpm-red-box">Error! The payment amount value of the button must be a numeric number. Example: 49.50 </p>';
|
| 39 |
}
|
| 40 |
$payment_amount = round($payment_amount, 2); //round the amount to 2 decimal place.
|
|
|
|
| 41 |
$payment_currency = get_post_meta($button_id, 'currency_code', true);
|
| 42 |
|
| 43 |
+
$payment_amount_formatted = SwpmMiscUtils::format_money($payment_amount,$payment_currency);
|
| 44 |
+
|
| 45 |
//Return, cancel, notifiy URLs
|
| 46 |
$return_url = get_post_meta($button_id, 'return_url', true);
|
| 47 |
if (empty($return_url)) {
|
| 101 |
$output .= '<p><input type="text" name="first_name" placeholder="First Name" value="' . (isset($member_first_name) ? $member_first_name : '') . '" required></p>';
|
| 102 |
$output .= '<p><input type="text" name="last_name" placeholder="Last Name" value="' . (isset($member_last_name) ? $member_last_name : '') . '" required></p>';
|
| 103 |
$output .= '<p><input type="text" name="member_email" placeholder="Email" value="' . (isset($member_email) ? $member_email : '') . '" required></p>';
|
| 104 |
+
//apply filter to output additional form fields
|
| 105 |
+
$coupon_input = '';
|
| 106 |
+
$coupon_input = apply_filters('swpm_payment_form_additional_fields', $coupon_input, $button_id, $uniqid);
|
| 107 |
+
if (!empty($coupon_input)) {
|
| 108 |
+
$output .= $coupon_input;
|
| 109 |
+
}
|
| 110 |
+
$output .= '<div id="swpm-braintree-amount-container-' . $uniqid . '" class="swpm-braintree-amount-container"><p>' . $payment_amount_formatted.'</p></div>';
|
| 111 |
$output .= '</div>';
|
| 112 |
$output .= '<button id="swpm-show-form-btn-' . $uniqid . '" class="swpm-braintree-pay-now-button swpm-braintree-show-form-button-' . $button_id . ' ' . $class . '" type="button" onclick="swpm_braintree_show_form_' . $uniqid . '();"><span>' . $button_text . '</span></button>';
|
| 113 |
$output .= '<button id="swpm-submit-form-btn-' . $uniqid . '" class="swpm-braintree-pay-now-button swpm-braintree-submit-form-button-' . $button_id . ' ' . $class . '" type="submit" style="display: none;"><span>' . $button_text . '</span></button>';
|
| 120 |
document.getElementById('swpm-submit-form-btn-_uniqid_').style.display = "block";
|
| 121 |
document.getElementById('swpm-form-cont-_uniqid_').style.display = "block";
|
| 122 |
var clientToken = '_token_';
|
| 123 |
+
braintree.setup(clientToken, 'dropin', {
|
| 124 |
+
container: 'swpm-form-cont-_uniqid_',
|
| 125 |
+
onReady: function(obj) {
|
| 126 |
document.getElementById('swpm-braintree-additional-fields-container-_uniqid_').style.display = "block";
|
| 127 |
},
|
| 128 |
+
onPaymentMethodReceived: function(obj) {
|
| 129 |
document.getElementById('swpm-submit-form-btn-_uniqid_').disabled = true;
|
| 130 |
var client = new braintree.api.Client({
|
| 131 |
clientToken: clientToken
|
| 132 |
});
|
| 133 |
+
if (obj.type !== 'CreditCard') {
|
| 134 |
+
document.getElementById('swpm-braintree-nonce-field-_uniqid_').value = obj.nonce;
|
| 135 |
+
document.getElementById('swpm-braintree-payment-form-_uniqid_').submit();
|
| 136 |
+
return true;
|
| 137 |
+
}
|
| 138 |
+
var form = document.getElementById('swpm-braintree-payment-form-_uniqid_');
|
| 139 |
+
var amount = form.querySelector('[name="item_price"]').value;
|
| 140 |
client.verify3DS({
|
| 141 |
+
amount: amount,
|
| 142 |
creditCard: obj.nonce
|
| 143 |
+
}, function(err, response) {
|
| 144 |
if (!err) {
|
| 145 |
document.getElementById('swpm-braintree-nonce-field-_uniqid_').value = response.nonce;
|
| 146 |
document.getElementById('swpm-braintree-payment-form-_uniqid_').submit();
|
views/payments/payment-gateway/paypal_button_shortcode_view.php
CHANGED
|
@@ -54,12 +54,21 @@ function swpm_render_pp_buy_now_button_sc_output($button_code, $args) {
|
|
| 54 |
/* === PayPal Buy Now Button Form === */
|
| 55 |
$output = '';
|
| 56 |
$output .= '<div class="swpm-button-wrapper swpm-pp-buy-now-wrapper">';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
if ($sandbox_enabled) {
|
| 58 |
-
$
|
| 59 |
} else {
|
| 60 |
-
$
|
| 61 |
}
|
| 62 |
|
|
|
|
|
|
|
| 63 |
$output .= '<input type="hidden" name="cmd" value="_xclick" />';
|
| 64 |
$output .= '<input type="hidden" name="charset" value="utf-8" />';
|
| 65 |
$output .= '<input type="hidden" name="bn" value="TipsandTricks_SP" />';
|
| 54 |
/* === PayPal Buy Now Button Form === */
|
| 55 |
$output = '';
|
| 56 |
$output .= '<div class="swpm-button-wrapper swpm-pp-buy-now-wrapper">';
|
| 57 |
+
$uniqid=uniqid();
|
| 58 |
+
//apply filter to output additional form fields
|
| 59 |
+
$coupon_input='';
|
| 60 |
+
$coupon_input = apply_filters('swpm_payment_form_additional_fields',$coupon_input,$button_id,$uniqid);
|
| 61 |
+
if (!empty($coupon_input)) {
|
| 62 |
+
$output.=$coupon_input;
|
| 63 |
+
}
|
| 64 |
if ($sandbox_enabled) {
|
| 65 |
+
$action_url='https://www.sandbox.paypal.com/cgi-bin/webscr';
|
| 66 |
} else {
|
| 67 |
+
$action_url='https://www.paypal.com/cgi-bin/webscr';
|
| 68 |
}
|
| 69 |
|
| 70 |
+
$output.=sprintf('<form id="swpm-paypal-payment-form-%s" action="%s" method="post" %s>',$uniqid,$action_url,$window_target);
|
| 71 |
+
|
| 72 |
$output .= '<input type="hidden" name="cmd" value="_xclick" />';
|
| 73 |
$output .= '<input type="hidden" name="charset" value="utf-8" />';
|
| 74 |
$output .= '<input type="hidden" name="bn" value="TipsandTricks_SP" />';
|
views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php
CHANGED
|
@@ -96,7 +96,18 @@ function swpm_render_pp_smart_checkout_button_sc_output($button_code, $args) {
|
|
| 96 |
}
|
| 97 |
?>
|
| 98 |
<div class="swpm-button-wrapper">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
<div class="swpm-pp-smart-checkout-btn-<?php echo $uniqid; ?>"></div>
|
|
|
|
|
|
|
| 100 |
<script>
|
| 101 |
paypal.Button.render({
|
| 102 |
|
|
@@ -122,10 +133,11 @@ function swpm_render_pp_smart_checkout_button_sc_output($button_code, $args) {
|
|
| 122 |
onClick: function () {
|
| 123 |
},
|
| 124 |
payment: function (data, actions) {
|
|
|
|
| 125 |
return actions.payment.create({
|
| 126 |
payment: {
|
| 127 |
transactions: [{
|
| 128 |
-
amount: {total:
|
| 129 |
}]
|
| 130 |
},
|
| 131 |
meta: {partner_attribution_id: 'TipsandTricks_SP'}
|
|
@@ -142,11 +154,12 @@ function swpm_render_pp_smart_checkout_button_sc_output($button_code, $args) {
|
|
| 142 |
paymentBtnCont.hide();
|
| 143 |
paymentBtnSpinner.css('display', 'inline-block');
|
| 144 |
return actions.payment.execute().then(function (data) {
|
| 145 |
-
|
|
|
|
| 146 |
data.button_id = '<?php echo esc_js($button_id); ?>';
|
| 147 |
data.item_name = '<?php echo esc_js($item_name); ?>';
|
| 148 |
jQuery.post('<?php echo esc_js(admin_url('admin-ajax.php')); ?>',
|
| 149 |
-
{action: 'swpm_process_pp_smart_checkout', swpm_pp_smart_checkout_payment_data: data})
|
| 150 |
.done(function (result) {
|
| 151 |
if (result.success) {
|
| 152 |
window.location.href = '<?php echo esc_js($return_url); ?>';
|
| 96 |
}
|
| 97 |
?>
|
| 98 |
<div class="swpm-button-wrapper">
|
| 99 |
+
<?php
|
| 100 |
+
//apply filter to output additional form fields
|
| 101 |
+
$coupon_input = '';
|
| 102 |
+
$coupon_input = apply_filters('swpm_payment_form_additional_fields', $coupon_input, $button_id, $uniqid);
|
| 103 |
+
if (!empty($coupon_input)) {
|
| 104 |
+
echo $coupon_input;
|
| 105 |
+
}
|
| 106 |
+
$nonce=wp_create_nonce( 'swpm-pp-smart-checkout-ajax-nonce-'.$uniqid );
|
| 107 |
+
?>
|
| 108 |
<div class="swpm-pp-smart-checkout-btn-<?php echo $uniqid; ?>"></div>
|
| 109 |
+
<input type="hidden" id="swpm-pp-smart-checkout-amount-<?php echo $uniqid; ?>" name="item_price" value="<?php echo $payment_amount;?>">
|
| 110 |
+
<input type="hidden" id="swpm-pp-smart-checkout-custom-<?php echo $uniqid; ?>" name="custom" value="<?php echo $custom_field_value; ?>">
|
| 111 |
<script>
|
| 112 |
paypal.Button.render({
|
| 113 |
|
| 133 |
onClick: function () {
|
| 134 |
},
|
| 135 |
payment: function (data, actions) {
|
| 136 |
+
var amount = document.getElementById('swpm-pp-smart-checkout-amount-<?php echo $uniqid; ?>').value;
|
| 137 |
return actions.payment.create({
|
| 138 |
payment: {
|
| 139 |
transactions: [{
|
| 140 |
+
amount: {total: amount, currency: '<?php echo $payment_currency; ?>'}
|
| 141 |
}]
|
| 142 |
},
|
| 143 |
meta: {partner_attribution_id: 'TipsandTricks_SP'}
|
| 154 |
paymentBtnCont.hide();
|
| 155 |
paymentBtnSpinner.css('display', 'inline-block');
|
| 156 |
return actions.payment.execute().then(function (data) {
|
| 157 |
+
var custom = document.getElementById('swpm-pp-smart-checkout-custom-<?php echo $uniqid; ?>').value;
|
| 158 |
+
data.custom_field = custom;
|
| 159 |
data.button_id = '<?php echo esc_js($button_id); ?>';
|
| 160 |
data.item_name = '<?php echo esc_js($item_name); ?>';
|
| 161 |
jQuery.post('<?php echo esc_js(admin_url('admin-ajax.php')); ?>',
|
| 162 |
+
{action: 'swpm_process_pp_smart_checkout', swpm_pp_smart_checkout_payment_data: data, nonce: '<?php echo $nonce?>', uniqid: '<?php echo $uniqid?>', custom: custom})
|
| 163 |
.done(function (result) {
|
| 164 |
if (result.success) {
|
| 165 |
window.location.href = '<?php echo esc_js($return_url); ?>';
|
views/payments/payment-gateway/stripe_button_shortcode_view.php
CHANGED
|
@@ -45,6 +45,7 @@ function swpm_render_stripe_buy_now_button_sc_output($button_code, $args) {
|
|
| 45 |
} else {
|
| 46 |
$price_in_cents = $payment_amount * 100; //The amount (in cents). This value is passed to Stripe API.
|
| 47 |
}
|
|
|
|
| 48 |
//Return, cancel, notifiy URLs
|
| 49 |
$notify_url = SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL . '/?swpm_process_stripe_buy_now=1'; //We are going to use it to do post payment processing.
|
| 50 |
//$button_image_url = get_post_meta($button_id, 'button_image_url', true);//Stripe doesn't currenty support button image for their standard checkout.
|
|
@@ -86,17 +87,19 @@ function swpm_render_stripe_buy_now_button_sc_output($button_code, $args) {
|
|
| 86 |
}
|
| 87 |
}
|
| 88 |
|
|
|
|
|
|
|
| 89 |
/* === Stripe Buy Now Button Form === */
|
| 90 |
$output = '';
|
| 91 |
$output .= '<div class="swpm-button-wrapper swpm-stripe-buy-now-wrapper">';
|
| 92 |
-
$output .= "<form action='" . $notify_url . "' METHOD='POST'> ";
|
| 93 |
$output .= "<div style='display: none !important'>";
|
| 94 |
$output .= "<script src='https://checkout.stripe.com/checkout.js' class='stripe-button'
|
| 95 |
data-key='" . $publishable_key . "'
|
| 96 |
data-panel-label='Pay'
|
| 97 |
data-amount='{$price_in_cents}'
|
| 98 |
data-name='{$item_name}'";
|
| 99 |
-
$output .= "data-description='{$
|
| 100 |
$output .= "data-locale='auto'";
|
| 101 |
$output .= "data-label='{$button_text}'"; //Stripe doesn't currenty support button image for their standard checkout.
|
| 102 |
$output .= "data-currency='{$payment_currency}'";
|
|
@@ -110,6 +113,13 @@ function swpm_render_stripe_buy_now_button_sc_output($button_code, $args) {
|
|
| 110 |
$output .= "></script>";
|
| 111 |
$output .= '</div>';
|
| 112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
$button_image_url = get_post_meta($button_id, 'button_image_url', true);
|
| 114 |
if (!empty($button_image_url)) {
|
| 115 |
$output .= '<input type="image" src="' . $button_image_url . '" class="' . $class . '" alt="' . $button_text . '" title="' . $button_text . '" />';
|
| 45 |
} else {
|
| 46 |
$price_in_cents = $payment_amount * 100; //The amount (in cents). This value is passed to Stripe API.
|
| 47 |
}
|
| 48 |
+
$payment_amount_formatted=SwpmMiscUtils::format_money($payment_amount,$payment_currency);
|
| 49 |
//Return, cancel, notifiy URLs
|
| 50 |
$notify_url = SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL . '/?swpm_process_stripe_buy_now=1'; //We are going to use it to do post payment processing.
|
| 51 |
//$button_image_url = get_post_meta($button_id, 'button_image_url', true);//Stripe doesn't currenty support button image for their standard checkout.
|
| 87 |
}
|
| 88 |
}
|
| 89 |
|
| 90 |
+
$uniqid=uniqid();
|
| 91 |
+
|
| 92 |
/* === Stripe Buy Now Button Form === */
|
| 93 |
$output = '';
|
| 94 |
$output .= '<div class="swpm-button-wrapper swpm-stripe-buy-now-wrapper">';
|
| 95 |
+
$output .= "<form id='swpm-stripe-payment-form-".$uniqid."' action='" . $notify_url . "' METHOD='POST'> ";
|
| 96 |
$output .= "<div style='display: none !important'>";
|
| 97 |
$output .= "<script src='https://checkout.stripe.com/checkout.js' class='stripe-button'
|
| 98 |
data-key='" . $publishable_key . "'
|
| 99 |
data-panel-label='Pay'
|
| 100 |
data-amount='{$price_in_cents}'
|
| 101 |
data-name='{$item_name}'";
|
| 102 |
+
$output .= "data-description='{$payment_amount_formatted}'";
|
| 103 |
$output .= "data-locale='auto'";
|
| 104 |
$output .= "data-label='{$button_text}'"; //Stripe doesn't currenty support button image for their standard checkout.
|
| 105 |
$output .= "data-currency='{$payment_currency}'";
|
| 113 |
$output .= "></script>";
|
| 114 |
$output .= '</div>';
|
| 115 |
|
| 116 |
+
//apply filter to output additional form fields
|
| 117 |
+
$coupon_input='';
|
| 118 |
+
$coupon_input = apply_filters('swpm_payment_form_additional_fields',$coupon_input,$button_id,$uniqid);
|
| 119 |
+
if (!empty($coupon_input)) {
|
| 120 |
+
$output.=$coupon_input;
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
$button_image_url = get_post_meta($button_id, 'button_image_url', true);
|
| 124 |
if (!empty($button_image_url)) {
|
| 125 |
$output .= '<input type="image" src="' . $button_image_url . '" class="' . $class . '" alt="' . $button_text . '" title="' . $button_text . '" />';
|
