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 | Simple Membership |
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 . '" />';
|