Simple Membership - Version 4.1.0

Version Description

  • Added the text 'Username or Email' to the language translation POT file.
  • Added a new action hook (swpm_front_end_registration_form_submitted) for when the front-end registration form is submitted
  • Added nonce check for the "Delete Transaction" action in the payments menu.
Download this release

Release Info

Developer mra13
Plugin Icon 128x128 Simple Membership
Version 4.1.0
Comparing to
See all releases

Code changes from version 4.0.7 to 4.1.0

classes/admin-includes/class.swpm-payment-buttons-list-table.php CHANGED
@@ -55,7 +55,7 @@ class SwpmPaymentButtonsListTable extends WP_List_Table {
55
  //Build row actions
56
  $actions = array(
57
  'edit' => sprintf('<a href="admin.php?page=simple_wp_membership_payments&tab=edit_button&button_id=%s&button_type=%s">Edit</a>', $item['ID'], $button_type),
58
- 'delete' => sprintf('<a href="admin.php?page=simple_wp_membership_payments&tab=payment_buttons&action=delete_payment_btn&button_id=%s" onclick="return confirm(\'Are you sure you want to delete this record?\')">Delete</a>', $item['ID']),
59
  );
60
 
61
  //Return the refid column contents
@@ -106,6 +106,9 @@ class SwpmPaymentButtonsListTable extends WP_List_Table {
106
  return;
107
  }
108
 
 
 
 
109
  foreach ($records_to_delete as $record_id) {
110
  if(!is_numeric($record_id)){
111
  wp_die('Error! ID must be a numeric number.');
@@ -123,6 +126,7 @@ class SwpmPaymentButtonsListTable extends WP_List_Table {
123
  if(!is_numeric($record_id)){
124
  wp_die('Error! ID must be a numeric number.');
125
  }
 
126
  wp_delete_post( $record_id );
127
  $success_msg = '<div id="message" class="updated"><p>';
128
  $success_msg .= SwpmUtils::_('The selected entry was deleted!');
55
  //Build row actions
56
  $actions = array(
57
  'edit' => sprintf('<a href="admin.php?page=simple_wp_membership_payments&tab=edit_button&button_id=%s&button_type=%s">Edit</a>', $item['ID'], $button_type),
58
+ 'delete' => sprintf( '<a href="admin.php?page=simple_wp_membership_payments&tab=payment_buttons&action=delete_payment_btn&button_id=%s&_wpnonce=%s" onclick="return confirm(\'Are you sure you want to delete this record?\')">Delete</a>', $item['ID'], wp_create_nonce( 'swpm_delete_payment_btn_' . $item['ID'] ) ),
59
  );
60
 
61
  //Return the refid column contents
106
  return;
107
  }
108
 
109
+ $action = 'bulk-' . $this->_args['plural'];
110
+ check_admin_referer( $action );
111
+
112
  foreach ($records_to_delete as $record_id) {
113
  if(!is_numeric($record_id)){
114
  wp_die('Error! ID must be a numeric number.');
126
  if(!is_numeric($record_id)){
127
  wp_die('Error! ID must be a numeric number.');
128
  }
129
+ check_admin_referer( 'swpm_delete_payment_btn_' . $record_id );
130
  wp_delete_post( $record_id );
131
  $success_msg = '<div id="message" class="updated"><p>';
132
  $success_msg .= SwpmUtils::_('The selected entry was deleted!');
classes/admin-includes/class.swpm-payments-list-table.php CHANGED
@@ -1,224 +1,228 @@
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
- 'status' => SwpmUtils::_( 'Status/Note' ),
94
- );
95
- return $columns;
96
- }
97
-
98
- function get_sortable_columns() {
99
- $sortable_columns = array(
100
- 'id' => array( 'id', false ), // true means its already sorted
101
- 'membership_level' => array( 'membership_level', false ),
102
- 'last_name' => array( 'last_name', false ),
103
- 'txn_date' => array( 'txn_date', false ),
104
- );
105
- return $sortable_columns;
106
- }
107
-
108
- function get_bulk_actions() {
109
- $actions = array(
110
- 'delete' => SwpmUtils::_( 'Delete' ),
111
- );
112
- return $actions;
113
- }
114
-
115
- function process_bulk_action() {
116
- // Detect when a bulk action is being triggered...
117
- if ( 'delete' === $this->current_action() ) {
118
- $records_to_delete = array_map( 'sanitize_text_field', $_GET['transaction'] );
119
- if ( empty( $records_to_delete ) ) {
120
- echo '<div id="message" class="updated fade"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
121
- return;
122
- }
123
- foreach ( $records_to_delete as $record_id ) {
124
- if ( ! is_numeric( $record_id ) ) {
125
- wp_die( 'Error! ID must be numeric.' );
126
- }
127
- global $wpdb;
128
- $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'swpm_payments_tbl WHERE id = %d', $record_id ) );
129
- }
130
- echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
131
- }
132
- }
133
-
134
- function delete_record( $record_id ) {
135
- global $wpdb;
136
- $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'swpm_payments_tbl WHERE id = %d', $record_id ) );
137
- // also delete record from swpm_transactions CPT
138
- $trans = get_posts(
139
- array(
140
- 'meta_key' => 'db_row_id',
141
- 'meta_value' => $record_id,
142
- 'posts_per_page' => 1,
143
- 'offset' => 0,
144
- 'post_type' => 'swpm_transactions',
145
- )
146
- );
147
- wp_reset_postdata();
148
- if ( empty( $trans ) ) {
149
- return;
150
- }
151
- $trans = $trans[0];
152
- wp_delete_post( $trans->ID, true );
153
-
154
- }
155
-
156
- function prepare_items() {
157
- global $wpdb;
158
-
159
- // Lets decide how many records per page to show
160
- $per_page = apply_filters( 'swpm_transactions_menu_items_per_page', 50 );
161
-
162
- $columns = $this->get_columns();
163
- $hidden = array();
164
- $sortable = $this->get_sortable_columns();
165
-
166
- $this->_column_headers = array( $columns, $hidden, $sortable );
167
-
168
- $this->process_bulk_action();
169
-
170
- // This checks for sorting input. Read and sanitize the inputs
171
- $orderby_column = isset( $_GET['orderby'] ) ? sanitize_text_field( $_GET['orderby'] ) : '';
172
- $sort_order = isset( $_GET['order'] ) ? sanitize_text_field( $_GET['order'] ) : '';
173
- if ( empty( $orderby_column ) ) {
174
- $orderby_column = 'id';
175
- $sort_order = 'DESC';
176
- }
177
- $orderby_column = SwpmUtils::sanitize_value_by_array( $orderby_column, $sortable );
178
- $sort_order = SwpmUtils::sanitize_value_by_array(
179
- $sort_order,
180
- array(
181
- 'DESC' => '1',
182
- 'ASC' => '1',
183
- )
184
- );
185
-
186
- // pagination requirement
187
- $current_page = $this->get_pagenum();
188
-
189
- $search_term = filter_input( INPUT_POST, 'swpm_txn_search', FILTER_SANITIZE_STRING );
190
- $search_term = trim( $search_term );
191
-
192
- if ( $search_term ) {// Only load the searched records.
193
- $like = $wpdb->esc_like( $search_term );
194
- $like = '%' . $like . '%';
195
- $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 );
196
- $data = $wpdb->get_results( $prepare_query, ARRAY_A );
197
- $total_items = count( $data );
198
- } else { // Load all data in an optimized way (so it is only loading data for the current page)
199
- $query = "SELECT COUNT(*) FROM {$wpdb->prefix}swpm_payments_tbl";
200
- $total_items = $wpdb->get_var( $query );
201
-
202
- // pagination requirement
203
- $query = "SELECT * FROM {$wpdb->prefix}swpm_payments_tbl ORDER BY $orderby_column $sort_order";
204
-
205
- $offset = ( $current_page - 1 ) * $per_page;
206
- $query .= ' LIMIT ' . (int) $offset . ',' . (int) $per_page;
207
-
208
- $data = $wpdb->get_results( $query, ARRAY_A );
209
- }
210
-
211
- // Now we add our *sorted* data to the items property, where it can be used by the rest of the class.
212
- $this->items = $data;
213
-
214
- // pagination requirement
215
- $this->set_pagination_args(
216
- array(
217
- 'total_items' => $total_items, // WE have to calculate the total number of items
218
- 'per_page' => $per_page, // WE have to determine how many items to show on a page
219
- 'total_pages' => ceil( $total_items / $per_page ), // WE have to calculate the total number of pages
220
- )
221
- );
222
- }
223
-
224
- }
 
 
 
 
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&_wpnonce=%s" onclick="return confirm(\'Are you sure you want to delete this record?\')">Delete</a>', $item['id'], wp_create_nonce( 'swpm_delete_txn_' . $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
+ 'status' => SwpmUtils::_( 'Status/Note' ),
94
+ );
95
+ return $columns;
96
+ }
97
+
98
+ function get_sortable_columns() {
99
+ $sortable_columns = array(
100
+ 'id' => array( 'id', false ), // true means its already sorted
101
+ 'membership_level' => array( 'membership_level', false ),
102
+ 'last_name' => array( 'last_name', false ),
103
+ 'txn_date' => array( 'txn_date', false ),
104
+ );
105
+ return $sortable_columns;
106
+ }
107
+
108
+ function get_bulk_actions() {
109
+ $actions = array(
110
+ 'delete' => SwpmUtils::_( 'Delete' ),
111
+ );
112
+ return $actions;
113
+ }
114
+
115
+ function process_bulk_action() {
116
+ // Detect when a bulk action is being triggered...
117
+ if ( 'delete' === $this->current_action() ) {
118
+ $records_to_delete = array_map( 'sanitize_text_field', $_GET['transaction'] );
119
+ if ( empty( $records_to_delete ) ) {
120
+ echo '<div id="message" class="updated fade"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
121
+ return;
122
+ }
123
+
124
+ $action = 'bulk-' . $this->_args['plural'];
125
+ check_admin_referer( $action );
126
+
127
+ foreach ( $records_to_delete as $record_id ) {
128
+ if ( ! is_numeric( $record_id ) ) {
129
+ wp_die( 'Error! ID must be numeric.' );
130
+ }
131
+ global $wpdb;
132
+ $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'swpm_payments_tbl WHERE id = %d', $record_id ) );
133
+ }
134
+ echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
135
+ }
136
+ }
137
+
138
+ function delete_record( $record_id ) {
139
+ global $wpdb;
140
+ $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'swpm_payments_tbl WHERE id = %d', $record_id ) );
141
+ // also delete record from swpm_transactions CPT
142
+ $trans = get_posts(
143
+ array(
144
+ 'meta_key' => 'db_row_id',
145
+ 'meta_value' => $record_id,
146
+ 'posts_per_page' => 1,
147
+ 'offset' => 0,
148
+ 'post_type' => 'swpm_transactions',
149
+ )
150
+ );
151
+ wp_reset_postdata();
152
+ if ( empty( $trans ) ) {
153
+ return;
154
+ }
155
+ $trans = $trans[0];
156
+ wp_delete_post( $trans->ID, true );
157
+
158
+ }
159
+
160
+ function prepare_items() {
161
+ global $wpdb;
162
+
163
+ // Lets decide how many records per page to show
164
+ $per_page = apply_filters( 'swpm_transactions_menu_items_per_page', 50 );
165
+
166
+ $columns = $this->get_columns();
167
+ $hidden = array();
168
+ $sortable = $this->get_sortable_columns();
169
+
170
+ $this->_column_headers = array( $columns, $hidden, $sortable );
171
+
172
+ $this->process_bulk_action();
173
+
174
+ // This checks for sorting input. Read and sanitize the inputs
175
+ $orderby_column = isset( $_GET['orderby'] ) ? sanitize_text_field( $_GET['orderby'] ) : '';
176
+ $sort_order = isset( $_GET['order'] ) ? sanitize_text_field( $_GET['order'] ) : '';
177
+ if ( empty( $orderby_column ) ) {
178
+ $orderby_column = 'id';
179
+ $sort_order = 'DESC';
180
+ }
181
+ $orderby_column = SwpmUtils::sanitize_value_by_array( $orderby_column, $sortable );
182
+ $sort_order = SwpmUtils::sanitize_value_by_array(
183
+ $sort_order,
184
+ array(
185
+ 'DESC' => '1',
186
+ 'ASC' => '1',
187
+ )
188
+ );
189
+
190
+ // pagination requirement
191
+ $current_page = $this->get_pagenum();
192
+
193
+ $search_term = filter_input( INPUT_POST, 'swpm_txn_search', FILTER_SANITIZE_STRING );
194
+ $search_term = trim( $search_term );
195
+
196
+ if ( $search_term ) {// Only load the searched records.
197
+ $like = $wpdb->esc_like( $search_term );
198
+ $like = '%' . $like . '%';
199
+ $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 );
200
+ $data = $wpdb->get_results( $prepare_query, ARRAY_A );
201
+ $total_items = count( $data );
202
+ } else { // Load all data in an optimized way (so it is only loading data for the current page)
203
+ $query = "SELECT COUNT(*) FROM {$wpdb->prefix}swpm_payments_tbl";
204
+ $total_items = $wpdb->get_var( $query );
205
+
206
+ // pagination requirement
207
+ $query = "SELECT * FROM {$wpdb->prefix}swpm_payments_tbl ORDER BY $orderby_column $sort_order";
208
+
209
+ $offset = ( $current_page - 1 ) * $per_page;
210
+ $query .= ' LIMIT ' . (int) $offset . ',' . (int) $per_page;
211
+
212
+ $data = $wpdb->get_results( $query, ARRAY_A );
213
+ }
214
+
215
+ // Now we add our *sorted* data to the items property, where it can be used by the rest of the class.
216
+ $this->items = $data;
217
+
218
+ // pagination requirement
219
+ $this->set_pagination_args(
220
+ array(
221
+ 'total_items' => $total_items, // WE have to calculate the total number of items
222
+ 'per_page' => $per_page, // WE have to determine how many items to show on a page
223
+ 'total_pages' => ceil( $total_items / $per_page ), // WE have to calculate the total number of pages
224
+ )
225
+ );
226
+ }
227
+
228
+ }
classes/class.simple-wp-membership.php CHANGED
@@ -449,7 +449,7 @@ class SimpleWpMembership {
449
  $extra = isset($message['extra']) ? $message['extra'] : array();
450
  if (is_string($extra)) {
451
  echo $extra;
452
- } else if (is_array($extra)) {
453
  echo '<ul>';
454
  foreach ($extra as $key => $value) {
455
  echo '<li>' . $value . '</li>';
449
  $extra = isset($message['extra']) ? $message['extra'] : array();
450
  if (is_string($extra)) {
451
  echo $extra;
452
+ } else if (is_array($extra) && !empty($extra)) {
453
  echo '<ul>';
454
  foreach ($extra as $key => $value) {
455
  echo '<li>' . $value . '</li>';
classes/class.swpm-front-registration.php CHANGED
@@ -23,7 +23,8 @@ class SwpmFrontRegistration extends SwpmRegistration {
23
  if ( SwpmMemberUtils::is_member_logged_in() ) {
24
 
25
  $rego_hidden_to_logged_users_msg = '<div class="registration_hidden_to_logged_users_msg">';
26
- $rego_hidden_to_logged_users_msg .= SwpmUtils::_( "You are already logged in. You don't need to create another account. So the registration form is hidden." );
 
27
  $rego_hidden_to_logged_users_msg .= '</div>';
28
  return $rego_hidden_to_logged_users_msg;
29
  }
@@ -86,6 +87,8 @@ class SwpmFrontRegistration extends SwpmRegistration {
86
  }
87
 
88
  public function register_front_end() {
 
 
89
 
90
  //If captcha is present and validation failed, it returns an error string. If validation succeeds, it returns an empty string.
91
  $captcha_validation_output = apply_filters( 'swpm_validate_registration_form_submission', '' );
23
  if ( SwpmMemberUtils::is_member_logged_in() ) {
24
 
25
  $rego_hidden_to_logged_users_msg = '<div class="registration_hidden_to_logged_users_msg">';
26
+ $rego_hidden_to_logged_users_msg .= '<div class="hide-rego-form-msg">' . SwpmUtils::_( "You are already logged in. You don't need to create another account. So the registration form is hidden." ) . '</div>';
27
+ $rego_hidden_to_logged_users_msg .= apply_filters('swpm_below_registration_form_hidden_message','');
28
  $rego_hidden_to_logged_users_msg .= '</div>';
29
  return $rego_hidden_to_logged_users_msg;
30
  }
87
  }
88
 
89
  public function register_front_end() {
90
+ //Trigger action hook
91
+ do_action( 'swpm_front_end_registration_form_submitted' );
92
 
93
  //If captcha is present and validation failed, it returns an error string. If validation succeeds, it returns an empty string.
94
  $captcha_validation_output = apply_filters( 'swpm_validate_registration_form_submission', '' );
classes/class.swpm-log.php CHANGED
@@ -1,154 +1,190 @@
1
  <?php
2
 
3
  class SwpmLog {
4
- private $error;
5
- private $warn;
6
- private $notice;
7
- private static $intance;
8
- private function __construct() {
9
- $this->error = array();
10
- $this->warn = array();
11
- $this->notice = array();
12
- }
13
- public static function get_logger($context = ''){
14
- $context = empty($context)? 'default': $context;
15
- if (!isset(self::$intance[$context])){
16
- self::$intance[$context] = new SwpmLog();
17
- }
18
- return self::$intance[$context];
19
- }
20
- public function error($msg){
21
- $this->error[] = $msg;
22
- }
23
- public function warn($msg){
24
- $this->warn[] = $msg;
25
- }
26
- public function debug($msg){
27
- $this->notice[] = $msg;
28
- }
29
- public function get($to_screen = false){
30
- $msg = '';
31
- foreach ($this->error as $error ){
32
- $msg .= 'ERROR: ' . $error . ($to_screen?"<br/>":"\n");
33
- }
34
- foreach($this->warn as $warn){
35
- $msg .= 'WARN: ' . $warn . ($to_screen?"<br/>":"\n");
36
- }
37
- foreach ($this->notice as $notice){
38
- $msg = 'NOTICE: ' . $notice . ($to_screen?"<br/>":"\n");
39
- }
40
- return $msg;
41
- }
42
- public static function writeall($path = ''){
43
- if (empty($path)) {$path = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';}
44
- $fp = fopen($path, 'a');
45
- $date = current_time('mysql');
46
- fwrite($fp, strtoupper($date) . ":\n");
47
- fwrite($fp, str_repeat('-=', (strlen($date)+1.0)/2.0) . "\n");
48
- foreach (self::$intance as $context=>$intance){
49
- fwrite($fp, strtoupper($context) . ":\n");
50
- fwrite($fp, str_repeat('=', strlen($context)+1) . "\n");
51
- fwrite($fp, $intance->get());
52
- }
53
- fclose($fp);
54
- }
55
-
56
- public static function log_simple_debug($message, $success, $end = false) {
57
- $settings = SwpmSettings::get_instance();
58
- $debug_enabled = $settings->get_value('enable-debug');
59
- if (empty($debug_enabled)) {//Debug is not enabled
60
- return;
61
- }
62
-
63
- //Lets write to the log file
64
- $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
65
-
66
- // Timestamp
67
- $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
68
- $text = '[' . $log_timestamp . '] - ' . (($success) ? 'SUCCESS: ' : 'FAILURE: ') . $message . "\n";
69
- if ($end) {
70
- $text .= "\n------------------------------------------------------------------\n\n";
71
- }
72
- // Write to log
73
- $fp = fopen($debug_log_file_name, 'a');
74
- fwrite($fp, $text);
75
- fclose($fp); // close file
76
- }
77
-
78
- public static function log_array_data_to_debug($array_to_write, $success, $end = false) {
79
- $settings = SwpmSettings::get_instance();
80
- $debug_enabled = $settings->get_value('enable-debug');
81
- if (empty($debug_enabled)) {//Debug is not enabled
82
- return;
83
- }
84
-
85
- //Lets write to the log file
86
- $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
87
-
88
- // Timestamp
89
- $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
90
- $text = '[' . $log_timestamp . '] - ' . (($success) ? 'SUCCESS: ' : 'FAILURE: ') . "\n";
91
- ob_start();
92
- print_r($array_to_write);
93
- $var = ob_get_contents();
94
- ob_end_clean();
95
- $text .= $var;
96
-
97
- if ($end) {
98
- $text .= "\n------------------------------------------------------------------\n\n";
99
- }
100
- // Write to log
101
- $fp = fopen($debug_log_file_name, 'a');
102
- fwrite($fp, $text);
103
- fclose($fp); // close file
104
- }
105
-
106
- public static function log_auth_debug($message, $success, $end = false) {
107
- $settings = SwpmSettings::get_instance();
108
- $debug_enabled = $settings->get_value('enable-debug');
109
- if (empty($debug_enabled)) {//Debug is not enabled
110
- return;
111
- }
112
-
113
- //Lets write to the log file
114
- $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log-auth.txt';
115
-
116
- // Timestamp
117
- $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
118
- $text = '[' . $log_timestamp . '] - ' . (($success) ? 'SUCCESS: ' : 'FAILURE: ') . $message . "\n";
119
- if ($end) {
120
- $text .= "\n------------------------------------------------------------------\n\n";
121
- }
122
- // Write to log
123
- $fp = fopen($debug_log_file_name, 'a');
124
- fwrite($fp, $text);
125
- fclose($fp); // close file
126
- }
127
-
128
- public static function reset_swmp_log_files() {
129
- $log_reset = true;
130
- $logfile_list = array(
131
- SIMPLE_WP_MEMBERSHIP_PATH . '/log.txt',
132
- SIMPLE_WP_MEMBERSHIP_PATH . '/log-auth.txt',
133
- );
134
-
135
- foreach ($logfile_list as $logfile) {
136
- if (empty($logfile)) {
137
- continue;
138
- }
139
-
140
- $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
141
- $text = '[' . $log_timestamp . '] - SUCCESS: Log file reset';
142
- $text .= "\n------------------------------------------------------------------\n\n";
143
- $fp = fopen($logfile, 'w');
144
- if ($fp != FALSE) {
145
- @fwrite($fp, $text);
146
- @fclose($fp);
147
- } else {
148
- $log_reset = false;
149
- }
150
- }
151
- return $log_reset;
152
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
 
154
  }
1
  <?php
2
 
3
  class SwpmLog {
4
+ private $error;
5
+ private $warn;
6
+ private $notice;
7
+ private static $intance;
8
+ private static $log_file;
9
+ private static $log_auth_file;
10
+ private function __construct() {
11
+ $this->error = array();
12
+ $this->warn = array();
13
+ $this->notice = array();
14
+ }
15
+ private static function gen_log_file_names() {
16
+ if ( ! empty( self::$log_file ) && ! empty( self::$log_auth_file ) ) {
17
+ return;
18
+ }
19
+ $settings = SwpmSettings::get_instance();
20
+ $suffix = $settings->get_value( 'log-file-suffix' );
21
+ if ( empty( $suffix ) ) {
22
+ $suffix = uniqid();
23
+ $settings->set_value( 'log-file-suffix', $suffix );
24
+ $settings->save();
25
+ }
26
+ self::$log_file = "log-{$suffix}.txt";
27
+ self::$log_auth_file = "log-auth-{$suffix}.txt";
28
+ }
29
+
30
+ public static function output_log( $type = 'd' ) {
31
+ if ( 'd' !== $type && 'a' !== $type ) {
32
+ return;
33
+ }
34
+ self::gen_log_file_names();
35
+ $log_file = 'd' === $type ? self::$log_file : self::$log_auth_file;
36
+
37
+ $fp = fopen( SIMPLE_WP_MEMBERSHIP_PATH . $log_file, 'r' );
38
+ header( 'Content-Type: text/plain' );
39
+ fpassthru( $fp );
40
+ die;
41
+ }
42
+
43
+ public static function get_logger( $context = '' ) {
44
+ $context = empty( $context ) ? 'default' : $context;
45
+ if ( ! isset( self::$intance[ $context ] ) ) {
46
+ self::$intance[ $context ] = new SwpmLog();
47
+ }
48
+ return self::$intance[ $context ];
49
+ }
50
+ public function error( $msg ) {
51
+ $this->error[] = $msg;
52
+ }
53
+ public function warn( $msg ) {
54
+ $this->warn[] = $msg;
55
+ }
56
+ public function debug( $msg ) {
57
+ $this->notice[] = $msg;
58
+ }
59
+ public function get( $to_screen = false ) {
60
+ $msg = '';
61
+ foreach ( $this->error as $error ) {
62
+ $msg .= 'ERROR: ' . $error . ( $to_screen ? '<br/>' : "\n" );
63
+ }
64
+ foreach ( $this->warn as $warn ) {
65
+ $msg .= 'WARN: ' . $warn . ( $to_screen ? '<br/>' : "\n" );
66
+ }
67
+ foreach ( $this->notice as $notice ) {
68
+ $msg = 'NOTICE: ' . $notice . ( $to_screen ? '<br/>' : "\n" );
69
+ }
70
+ return $msg;
71
+ }
72
+ public static function writeall( $path = '' ) {
73
+ if ( empty( $path ) ) {
74
+ self::gen_log_file_names();
75
+ $path = SIMPLE_WP_MEMBERSHIP_PATH . self::$log_file;}
76
+ $fp = fopen( $path, 'a' );
77
+ $date = current_time( 'mysql' );
78
+ fwrite( $fp, strtoupper( $date ) . ":\n" );
79
+ fwrite( $fp, str_repeat( '-=', ( strlen( $date ) + 1.0 ) / 2.0 ) . "\n" );
80
+ foreach ( self::$intance as $context => $intance ) {
81
+ fwrite( $fp, strtoupper( $context ) . ":\n" );
82
+ fwrite( $fp, str_repeat( '=', strlen( $context ) + 1 ) . "\n" );
83
+ fwrite( $fp, $intance->get() );
84
+ }
85
+ fclose( $fp );
86
+ }
87
+
88
+ public static function log_simple_debug( $message, $success, $end = false ) {
89
+ $settings = SwpmSettings::get_instance();
90
+ $debug_enabled = $settings->get_value( 'enable-debug' );
91
+ if ( empty( $debug_enabled ) ) {//Debug is not enabled
92
+ return;
93
+ }
94
+
95
+ //Lets write to the log file
96
+ self::gen_log_file_names();
97
+ $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . self::$log_file;
98
+
99
+ // Timestamp
100
+ $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
101
+ $text = '[' . $log_timestamp . '] - ' . ( ( $success ) ? 'SUCCESS: ' : 'FAILURE: ' ) . $message . "\n";
102
+ if ( $end ) {
103
+ $text .= "\n------------------------------------------------------------------\n\n";
104
+ }
105
+ // Write to log
106
+ $fp = fopen( $debug_log_file_name, 'a' );
107
+ fwrite( $fp, $text );
108
+ fclose( $fp ); // close file
109
+ }
110
+
111
+ public static function log_array_data_to_debug( $array_to_write, $success, $end = false ) {
112
+ $settings = SwpmSettings::get_instance();
113
+ $debug_enabled = $settings->get_value( 'enable-debug' );
114
+ if ( empty( $debug_enabled ) ) {//Debug is not enabled
115
+ return;
116
+ }
117
+
118
+ //Lets write to the log file
119
+ self::gen_log_file_names();
120
+ $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . self::$log_file;
121
+
122
+ // Timestamp
123
+ $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
124
+ $text = '[' . $log_timestamp . '] - ' . ( ( $success ) ? 'SUCCESS: ' : 'FAILURE: ' ) . "\n";
125
+ ob_start();
126
+ print_r( $array_to_write );
127
+ $var = ob_get_contents();
128
+ ob_end_clean();
129
+ $text .= $var;
130
+
131
+ if ( $end ) {
132
+ $text .= "\n------------------------------------------------------------------\n\n";
133
+ }
134
+ // Write to log
135
+ $fp = fopen( $debug_log_file_name, 'a' );
136
+ fwrite( $fp, $text );
137
+ fclose( $fp ); // close file
138
+ }
139
+
140
+ public static function log_auth_debug( $message, $success, $end = false ) {
141
+ $settings = SwpmSettings::get_instance();
142
+ $debug_enabled = $settings->get_value( 'enable-debug' );
143
+ if ( empty( $debug_enabled ) ) {//Debug is not enabled
144
+ return;
145
+ }
146
+
147
+ //Lets write to the log file
148
+ self::gen_log_file_names();
149
+ $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . self::$log_auth_file;
150
+
151
+ // Timestamp
152
+ $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
153
+ $text = '[' . $log_timestamp . '] - ' . ( ( $success ) ? 'SUCCESS: ' : 'FAILURE: ' ) . $message . "\n";
154
+ if ( $end ) {
155
+ $text .= "\n------------------------------------------------------------------\n\n";
156
+ }
157
+ // Write to log
158
+ $fp = fopen( $debug_log_file_name, 'a' );
159
+ fwrite( $fp, $text );
160
+ fclose( $fp ); // close file
161
+ }
162
+
163
+ public static function reset_swmp_log_files() {
164
+ $log_reset = true;
165
+ self::gen_log_file_names();
166
+ $logfile_list = array(
167
+ SIMPLE_WP_MEMBERSHIP_PATH . self::$log_file,
168
+ SIMPLE_WP_MEMBERSHIP_PATH . self::$log_auth_file,
169
+ );
170
+
171
+ foreach ( $logfile_list as $logfile ) {
172
+ if ( empty( $logfile ) ) {
173
+ continue;
174
+ }
175
+
176
+ $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
177
+ $text = '[' . $log_timestamp . '] - SUCCESS: Log file reset';
178
+ $text .= "\n------------------------------------------------------------------\n\n";
179
+ $fp = fopen( $logfile, 'w' );
180
+ if ( $fp != false ) {
181
+ @fwrite( $fp, $text );
182
+ @fclose( $fp );
183
+ } else {
184
+ $log_reset = false;
185
+ }
186
+ }
187
+ return $log_reset;
188
+ }
189
 
190
  }
classes/class.swpm-members.php CHANGED
@@ -1,780 +1,791 @@
1
- <?php
2
- if ( ! class_exists( 'WP_List_Table' ) ) {
3
- require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
4
- }
5
-
6
- class SwpmMembers extends WP_List_Table {
7
-
8
- function __construct() {
9
- parent::__construct(
10
- array(
11
- 'singular' => SwpmUtils::_( 'Member' ),
12
- 'plural' => SwpmUtils::_( 'Members' ),
13
- 'ajax' => false,
14
- )
15
- );
16
- }
17
-
18
- function get_columns() {
19
- return array(
20
- 'cb' => '<input type="checkbox" />',
21
- 'member_id' => SwpmUtils::_( 'ID' ),
22
- 'user_name' => SwpmUtils::_( 'Username' ),
23
- 'first_name' => SwpmUtils::_( 'First Name' ),
24
- 'last_name' => SwpmUtils::_( 'Last Name' ),
25
- 'email' => SwpmUtils::_( 'Email' ),
26
- 'alias' => SwpmUtils::_( 'Membership Level' ),
27
- 'subscription_starts' => SwpmUtils::_( 'Access Starts' ),
28
- 'account_state' => SwpmUtils::_( 'Account State' ),
29
- 'last_accessed' => SwpmUtils::_( 'Last Login Date' ),
30
- );
31
- }
32
-
33
- function get_sortable_columns() {
34
- return array(
35
- 'member_id' => array( 'member_id', true ), //True means already sorted
36
- 'user_name' => array( 'user_name', false ),
37
- 'first_name' => array( 'first_name', false ),
38
- 'last_name' => array( 'last_name', false ),
39
- 'email' => array( 'email', false ),
40
- 'alias' => array( 'alias', false ),
41
- 'subscription_starts' => array( 'subscription_starts', false ),
42
- 'account_state' => array( 'account_state', false ),
43
- 'last_accessed' => array( 'last_accessed', false ),
44
- );
45
- }
46
-
47
- function get_bulk_actions() {
48
- $actions = array(
49
- 'bulk_delete' => SwpmUtils::_( 'Delete' ),
50
- 'bulk_active' => SwpmUtils::_( 'Set Status to Active' ),
51
- 'bulk_active_notify' => SwpmUtils::_( 'Set Status to Active and Notify' ),
52
- 'bulk_inactive' => SwpmUtils::_( 'Set Status to Inactive' ),
53
- 'bulk_pending' => SwpmUtils::_( 'Set Status to Pending' ),
54
- 'bulk_expired' => SwpmUtils::_( 'Set Status to Expired' ),
55
- );
56
- return $actions;
57
- }
58
-
59
- function column_default( $item, $column_name ) {
60
- return $item[ $column_name ];
61
- }
62
-
63
- function column_account_state( $item ) {
64
- $acc_state_str = ucfirst( $item['account_state'] );
65
- return SwpmUtils::_( $acc_state_str );
66
- }
67
-
68
- function column_member_id( $item ) {
69
- $delete_swpmuser_nonce = wp_create_nonce( 'delete_swpmuser_admin_end' );
70
- $actions = array(
71
- 'edit' => sprintf( '<a href="admin.php?page=simple_wp_membership&member_action=edit&member_id=%s">Edit/View</a>', $item['member_id'] ),
72
- 'delete' => sprintf( '<a href="admin.php?page=simple_wp_membership&member_action=delete&member_id=%s&delete_swpmuser_nonce=%s" onclick="return confirm(\'Are you sure you want to delete this entry?\')">Delete</a>', $item['member_id'], $delete_swpmuser_nonce ),
73
- );
74
- return $item['member_id'] . $this->row_actions( $actions );
75
- }
76
-
77
- function column_user_name( $item ) {
78
- $user_name = $item['user_name'];
79
- if ( empty( $user_name ) ) {
80
- $user_name = '[' . SwpmUtils::_( 'incomplete' ) . ']';
81
- }
82
- return $user_name;
83
- }
84
-
85
- function column_cb( $item ) {
86
- return sprintf(
87
- '<input type="checkbox" name="members[]" value="%s" />',
88
- $item['member_id']
89
- );
90
- }
91
-
92
- function prepare_items() {
93
- global $wpdb;
94
-
95
- $this->process_bulk_action();
96
-
97
- $records_query_head = 'SELECT member_id,user_name,first_name,last_name,email,alias,subscription_starts,account_state,last_accessed';
98
- $count_query_head = 'SELECT COUNT(member_id)';
99
-
100
- $query = ' ';
101
- $query .= ' FROM ' . $wpdb->prefix . 'swpm_members_tbl';
102
- $query .= ' LEFT JOIN ' . $wpdb->prefix . 'swpm_membership_tbl';
103
- $query .= ' ON ( membership_level = id ) ';
104
-
105
- //Get the search string (if any)
106
- $s = filter_input( INPUT_GET, 's' );
107
- if ( empty( $s ) ) {
108
- $s = filter_input( INPUT_POST, 's' );
109
- }
110
-
111
- $status = filter_input( INPUT_GET, 'status' );
112
- $status = esc_attr( $status );//Escape value
113
-
114
- $filters = array();
115
-
116
- //Add the search parameter to the query
117
- if ( ! empty( $s ) ) {
118
- $s = sanitize_text_field( $s );
119
- $s = trim( $s ); //Trim the input
120
- $s = esc_attr( $s );
121
- $filters[] = "( user_name LIKE '%" . strip_tags( $s ) . "%' "
122
- . " OR first_name LIKE '%" . strip_tags( $s ) . "%' "
123
- . " OR last_name LIKE '%" . strip_tags( $s ) . "%' "
124
- . " OR email LIKE '%" . strip_tags( $s ) . "%' "
125
- . " OR address_city LIKE '%" . strip_tags( $s ) . "%' "
126
- . " OR address_state LIKE '%" . strip_tags( $s ) . "%' "
127
- . " OR country LIKE '%" . strip_tags( $s ) . "%' "
128
- . " OR company_name LIKE '%" . strip_tags( $s ) . "%' )";
129
- }
130
-
131
- //Add account status filtering to the query
132
- if ( ! empty( $status ) ) {
133
- if ( $status == 'incomplete' ) {
134
- $filters[] = "user_name = ''";
135
- } else {
136
- $filters[] = "account_state = '" . $status . "'";
137
- }
138
- }
139
-
140
- //Add membership level filtering
141
- $membership_level = filter_input( INPUT_GET, 'membership_level', FILTER_SANITIZE_NUMBER_INT );
142
-
143
- if ( ! empty( $membership_level ) ) {
144
- $filters[] = sprintf( "membership_level = '%d'", $membership_level );
145
- }
146
-
147
- //Build the WHERE clause of the query string
148
- if ( ! empty( $filters ) ) {
149
- $filter_str = '';
150
- foreach ( $filters as $ind => $filter ) {
151
- $filter_str .= $ind === 0 ? $filter : ' AND ' . $filter;
152
- }
153
- $query .= 'WHERE ' . $filter_str;
154
- }
155
-
156
- //Build the orderby and order query parameters
157
- $orderby = filter_input( INPUT_GET, 'orderby' );
158
- $orderby = empty( $orderby ) ? 'member_id' : $orderby;
159
- $order = filter_input( INPUT_GET, 'order' );
160
- $order = empty( $order ) ? 'DESC' : $order;
161
- $sortable_columns = $this->get_sortable_columns();
162
- $orderby = SwpmUtils::sanitize_value_by_array( $orderby, $sortable_columns );
163
- $order = SwpmUtils::sanitize_value_by_array(
164
- $order,
165
- array(
166
- 'DESC' => '1',
167
- 'ASC' => '1',
168
- )
169
- );
170
- $query .= ' ORDER BY ' . $orderby . ' ' . $order;
171
-
172
- //Execute the query
173
- $totalitems = $wpdb->get_var( $count_query_head . $query );
174
- //Pagination setup
175
- $perpage = apply_filters( 'swpm_members_menu_items_per_page', 50 );
176
- $paged = filter_input( INPUT_GET, 'paged' );
177
- if ( empty( $paged ) || ! is_numeric( $paged ) || $paged <= 0 ) {
178
- $paged = 1;
179
- }
180
- $totalpages = ceil( $totalitems / $perpage );
181
- if ( ! empty( $paged ) && ! empty( $perpage ) ) {
182
- $offset = ( $paged - 1 ) * $perpage;
183
- $query .= ' LIMIT ' . (int) $offset . ',' . (int) $perpage;
184
- }
185
- $this->set_pagination_args(
186
- array(
187
- 'total_items' => $totalitems,
188
- 'total_pages' => $totalpages,
189
- 'per_page' => $perpage,
190
- )
191
- );
192
-
193
- $columns = $this->get_columns();
194
- $hidden = array();
195
- $sortable = $this->get_sortable_columns();
196
-
197
- $this->_column_headers = array( $columns, $hidden, $sortable );
198
- $this->items = $wpdb->get_results( $records_query_head . $query, ARRAY_A );
199
- }
200
-
201
- function get_user_count_by_account_state() {
202
- global $wpdb;
203
- $query = 'SELECT count(member_id) AS count, account_state FROM ' . $wpdb->prefix . 'swpm_members_tbl GROUP BY account_state';
204
- $result = $wpdb->get_results( $query, ARRAY_A );
205
- $count = array();
206
-
207
- $all = 0;
208
- foreach ( $result as $row ) {
209
- $count[ $row['account_state'] ] = $row['count'];
210
- $all += intval( $row['count'] );
211
- }
212
- $count ['all'] = $all;
213
-
214
- $count_incomplete_query = 'SELECT COUNT(*) FROM ' . $wpdb->prefix . "swpm_members_tbl WHERE user_name = ''";
215
- $count['incomplete'] = $wpdb->get_var( $count_incomplete_query );
216
-
217
- return $count;
218
- }
219
-
220
- function no_items() {
221
- _e( 'No member found.', 'simple-membership' );
222
- }
223
-
224
- function process_form_request() {
225
- if ( isset( $_REQUEST['member_id'] ) ) {
226
- //This is a member profile edit action
227
- $record_id = sanitize_text_field( $_REQUEST['member_id'] );
228
- if ( ! is_numeric( $record_id ) ) {
229
- wp_die( 'Error! ID must be numeric.' );
230
- }
231
- return $this->edit( absint( $record_id ) );
232
- }
233
-
234
- //This is an profile add action.
235
- return $this->add();
236
- }
237
-
238
- function add() {
239
- $form = apply_filters( 'swpm_admin_registration_form_override', '' );
240
- if ( ! empty( $form ) ) {
241
- echo $form;
242
- return;
243
- }
244
- global $wpdb;
245
- $member = SwpmTransfer::$default_fields;
246
- $member['member_since'] = SwpmUtils::get_current_date_in_wp_zone();//date( 'Y-m-d' );
247
- $member['subscription_starts'] = SwpmUtils::get_current_date_in_wp_zone();//date( 'Y-m-d' );
248
- if ( isset( $_POST['createswpmuser'] ) ) {
249
- $member = array_map( 'sanitize_text_field', $_POST );
250
- }
251
- extract( $member, EXTR_SKIP );
252
- $query = 'SELECT * FROM ' . $wpdb->prefix . 'swpm_membership_tbl WHERE id !=1 ';
253
- $levels = $wpdb->get_results( $query, ARRAY_A );
254
-
255
- $add_user_template_path = apply_filters('swpm_admin_registration_add_user_template_path', SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_add.php');
256
- include_once $add_user_template_path;
257
-
258
- return false;
259
- }
260
-
261
- function edit( $id ) {
262
- global $wpdb;
263
- $id = absint( $id );
264
- $query = "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE member_id = $id";
265
- $member = $wpdb->get_row( $query, ARRAY_A );
266
- if ( isset( $_POST['editswpmuser'] ) ) {
267
- $_POST['user_name'] = sanitize_text_field( $member['user_name'] );
268
- $_POST['email'] = sanitize_email( $member['email'] );
269
- foreach ( $_POST as $key => $value ) {
270
- $key = sanitize_text_field( $key );
271
- if ( $key == 'email' ) {
272
- $member[ $key ] = sanitize_email( $value );
273
- } else {
274
- $member[ $key ] = sanitize_text_field( $value );
275
- }
276
- }
277
- }
278
- extract( $member, EXTR_SKIP );
279
- $query = 'SELECT * FROM ' . $wpdb->prefix . 'swpm_membership_tbl WHERE id !=1 ';
280
- $levels = $wpdb->get_results( $query, ARRAY_A );
281
-
282
- $edit_user_template_path = apply_filters('swpm_admin_registration_edit_user_template_path', SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_edit.php');
283
- include_once $edit_user_template_path;
284
-
285
- return false;
286
- }
287
-
288
- function process_bulk_action() {
289
- //Detect when a bulk action is being triggered... then perform the action.
290
- $members = isset( $_REQUEST['members'] ) ? $_REQUEST['members'] : array();
291
- $members = array_map( 'sanitize_text_field', $members );
292
-
293
- $current_action = $this->current_action();
294
- if ( ! empty( $current_action ) ) {
295
- //Bulk operation action. Lets make sure multiple records were selected before going ahead.
296
- if ( empty( $members ) ) {
297
- echo '<div id="message" class="error"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
298
- return;
299
- }
300
- } else {
301
- //No bulk operation.
302
- return;
303
- }
304
-
305
- //perform the bulk operation according to the selection
306
- if ( 'bulk_delete' === $current_action ) {
307
- foreach ( $members as $record_id ) {
308
- if ( ! is_numeric( $record_id ) ) {
309
- wp_die( 'Error! ID must be numeric.' );
310
- }
311
- self::delete_user_by_id( $record_id );
312
- }
313
- echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
314
- return;
315
- } elseif ( 'bulk_active' === $current_action ) {
316
- $this->bulk_set_status( $members, 'active' );
317
- } elseif ( 'bulk_active_notify' == $current_action ) {
318
- $this->bulk_set_status( $members, 'active', true );
319
- } elseif ( 'bulk_inactive' == $current_action ) {
320
- $this->bulk_set_status( $members, 'inactive' );
321
- } elseif ( 'bulk_pending' == $current_action ) {
322
- $this->bulk_set_status( $members, 'pending' );
323
- } elseif ( 'bulk_expired' == $current_action ) {
324
- $this->bulk_set_status( $members, 'expired' );
325
- }
326
-
327
- echo '<div id="message" class="updated fade"><p>Bulk operation completed successfully!</p></div>';
328
- }
329
-
330
- function bulk_set_status( $members, $status, $notify = false ) {
331
- $ids = implode( ',', array_map( 'absint', $members ) );
332
- if ( empty( $ids ) ) {
333
- return;
334
- }
335
- global $wpdb;
336
- $query = 'UPDATE ' . $wpdb->prefix . 'swpm_members_tbl ' .
337
- " SET account_state = '" . $status . "' WHERE member_id in (" . $ids . ')';
338
- $wpdb->query( $query );
339
-
340
- if ( $notify ) {
341
- $settings = SwpmSettings::get_instance();
342
-
343
- $emails = $wpdb->get_col( 'SELECT email FROM ' . $wpdb->prefix . 'swpm_members_tbl ' . " WHERE member_id IN ( $ids ) " );
344
-
345
- $subject = $settings->get_value( 'bulk-activate-notify-mail-subject' );
346
- if ( empty( $subject ) ) {
347
- $subject = 'Account Activated!';
348
- }
349
- $body = $settings->get_value( 'bulk-activate-notify-mail-body' );
350
- if ( empty( $body ) ) {
351
- $body = 'Hi, Your account has been activated successfully!';
352
- }
353
-
354
- $from_address = $settings->get_value( 'email-from' );
355
- $headers = 'From: ' . $from_address . "\r\n";
356
-
357
- foreach ($emails as $to_email) {
358
- //Send the activation email one by one to all the selected members.
359
- $subject = apply_filters( 'swpm_email_bulk_set_status_subject', $subject );
360
- $body = apply_filters( 'swpm_email_bulk_set_status_body', $body );
361
- $to_email = trim($to_email);
362
- SwpmMiscUtils::mail( $to_email, $subject, $body, $headers );
363
- SwpmLog::log_simple_debug( 'Bulk activation email notification sent. Activation email sent to the following email: ' . $to_email, true );
364
- }
365
- }
366
- }
367
-
368
- function delete() {
369
- if ( isset( $_REQUEST['member_id'] ) ) {
370
- //Check we are on the admin end and user has management permission
371
- SwpmMiscUtils::check_user_permission_and_is_admin( 'member deletion by admin' );
372
-
373
- //Check nonce
374
- if ( ! isset( $_REQUEST['delete_swpmuser_nonce'] ) || ! wp_verify_nonce( $_REQUEST['delete_swpmuser_nonce'], 'delete_swpmuser_admin_end' ) ) {
375
- //Nonce check failed.
376
- wp_die( SwpmUtils::_( 'Error! Nonce verification failed for user delete from admin end.' ) );
377
- }
378
-
379
- $id = sanitize_text_field( $_REQUEST['member_id'] );
380
- $id = absint( $id );
381
- self::delete_user_by_id( $id );
382
- }
383
- }
384
-
385
- public static function delete_user_by_id( $id ) {
386
- if ( ! is_numeric( $id ) ) {
387
- wp_die( 'Error! Member ID must be numeric.' );
388
- }
389
- $swpm_user = SwpmMemberUtils::get_user_by_id( $id );
390
- $user_name = $swpm_user->user_name;
391
- self::delete_wp_user( $user_name ); //Deletes the WP User record
392
- self::delete_swpm_user_by_id( $id ); //Deletes the SWPM record
393
- }
394
-
395
- public static function delete_swpm_user_by_id( $id ) {
396
- self::delete_user_subs( $id );
397
- global $wpdb;
398
- $query = 'DELETE FROM ' . $wpdb->prefix . "swpm_members_tbl WHERE member_id = $id";
399
- $wpdb->query( $query );
400
- }
401
-
402
- public static function delete_wp_user( $user_name ) {
403
- $wp_user_id = username_exists( $user_name );
404
- if ( empty( $wp_user_id ) || ! is_numeric( $wp_user_id ) ) {
405
- return;
406
- }
407
-
408
- if ( ! self::is_wp_super_user( $wp_user_id ) ) {
409
- //Not an admin user so it is safe to delete this user.
410
- include_once ABSPATH . 'wp-admin/includes/user.php';
411
- wp_delete_user( $wp_user_id, 1 ); //assigns all related to this user to admin.
412
- } else {
413
- //This is an admin user. So not going to delete the WP User record.
414
- SwpmTransfer::get_instance()->set( 'status', 'For safety, we do not allow deletion of any associated WordPress account with administrator role.' );
415
- return;
416
- }
417
- }
418
-
419
- private static function delete_user_subs( $id ) {
420
- $member = SwpmMemberUtils::get_user_by_id( $id );
421
- if ( ! $member ) {
422
- return false;
423
- }
424
- // let's check if Stripe subscription needs to be cancelled
425
- global $wpdb;
426
- $q = $wpdb->prepare(
427
- 'SELECT *
428
- FROM `' . $wpdb->prefix . 'swpm_payments_tbl`
429
- WHERE email = %s
430
- AND (gateway = "stripe" OR gateway = "stripe-sca-subs")
431
- AND subscr_id != ""',
432
- array( $member->email )
433
- );
434
-
435
- $res = $wpdb->get_results( $q, ARRAY_A );
436
-
437
- if ( ! $res ) {
438
- return false;
439
- }
440
-
441
- foreach ( $res as $sub ) {
442
-
443
- if ( substr( $sub['subscr_id'], 0, 4 ) !== 'sub_' ) {
444
- //not Stripe subscription
445
- continue;
446
- }
447
-
448
- //let's find the payment button
449
- $q = $wpdb->prepare( "SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key='subscr_id' AND meta_value=%s", $sub['subscr_id'] );
450
- $res_post = $wpdb->get_row( $q );
451
-
452
- if ( ! $res_post ) {
453
- //no button found
454
- continue;
455
- }
456
-
457
- $button_id = get_post_meta( $res_post->post_id, 'payment_button_id', true );
458
-
459
- $button = get_post( $button_id );
460
-
461
- if ( ! $button ) {
462
- //no button found
463
- continue;
464
- }
465
-
466
- SwpmLog::log_simple_debug( 'Attempting to cancel Stripe Subscription ' . $sub['subscr_id'], true );
467
-
468
- $is_live = get_post_meta( $button_id, 'is_live', true );
469
-
470
- //API Keys
471
- $api_keys = SwpmMiscUtils::get_stripe_api_keys_from_payment_button( $button_id, $is_live );
472
-
473
- //Include the Stripe library.
474
- SwpmMiscUtils::load_stripe_lib();
475
-
476
- \Stripe\Stripe::setApiKey( $api_keys['secret'] );
477
-
478
- $error = null;
479
- // Let's try to cancel subscription
480
- try {
481
- $sub = \Stripe\Subscription::retrieve( $sub['subscr_id'] );
482
- $sub->cancel();
483
- } catch ( Exception $e ) {
484
- SwpmLog::log_simple_debug( 'Error occurred during Stripe Subscription cancellation. ' . $e->getMessage(), false );
485
- $body = $e->getJsonBody();
486
- $error = $body['error'];
487
- $error_string = wp_json_encode( $error );
488
- SwpmLog::log_simple_debug( 'Error details: ' . $error_string, false );
489
- }
490
- if ( ! isset( $error ) ) {
491
- SwpmLog::log_simple_debug( 'Stripe Subscription has been cancelled.', true );
492
- }
493
- }
494
- }
495
-
496
- public static function is_wp_super_user( $wp_user_id ) {
497
- $user_data = get_userdata( $wp_user_id );
498
- if ( empty( $user_data ) ) {
499
- //Not an admin user if we can't find his data for the given ID.
500
- return false;
501
- }
502
- if ( isset( $user_data->wp_capabilities['administrator'] ) ) {//Check capability
503
- //admin user
504
- return true;
505
- }
506
- if ( $user_data->wp_user_level == 10 ) {//Check for old style wp user level
507
- //admin user
508
- return true;
509
- }
510
- //This is not an admin user
511
- return false;
512
- }
513
-
514
- function bulk_operation_menu() {
515
- echo '<div id="poststuff"><div id="post-body">';
516
-
517
- if ( isset( $_REQUEST['swpm_bulk_change_level_process'] ) ) {
518
- //Check nonce
519
- $swpm_bulk_change_level_nonce = filter_input( INPUT_POST, 'swpm_bulk_change_level_nonce' );
520
- if ( ! wp_verify_nonce( $swpm_bulk_change_level_nonce, 'swpm_bulk_change_level_nonce_action' ) ) {
521
- //Nonce check failed.
522
- wp_die( SwpmUtils::_( 'Error! Nonce security verification failed for Bulk Change Membership Level action. Clear cache and try again.' ) );
523
- }
524
-
525
- $errorMsg = '';
526
- $from_level_id = sanitize_text_field( $_REQUEST['swpm_bulk_change_level_from'] );
527
- $to_level_id = sanitize_text_field( $_REQUEST['swpm_bulk_change_level_to'] );
528
-
529
- if ( $from_level_id == 'please_select' || $to_level_id == 'please_select' ) {
530
- $errorMsg = SwpmUtils::_( 'Error! Please select a membership level first.' );
531
- }
532
-
533
- if ( empty( $errorMsg ) ) {//No validation errors so go ahead
534
- $member_records = SwpmMemberUtils::get_all_members_of_a_level( $from_level_id );
535
- if ( $member_records ) {
536
- foreach ( $member_records as $row ) {
537
- $member_id = $row->member_id;
538
- SwpmMemberUtils::update_membership_level( $member_id, $to_level_id );
539
- }
540
- }
541
- }
542
-
543
- $message = '';
544
- if ( ! empty( $errorMsg ) ) {
545
- $message = $errorMsg;
546
- } else {
547
- $message = SwpmUtils::_( 'Membership level change operation completed successfully.' );
548
- }
549
- echo '<div id="message" class="updated fade"><p><strong>';
550
- echo $message;
551
- echo '</strong></p></div>';
552
- }
553
-
554
- if ( isset( $_REQUEST['swpm_bulk_user_start_date_change_process'] ) ) {
555
- //Check nonce
556
- $swpm_bulk_start_date_nonce = filter_input( INPUT_POST, 'swpm_bulk_start_date_nonce' );
557
- if ( ! wp_verify_nonce( $swpm_bulk_start_date_nonce, 'swpm_bulk_start_date_nonce_action' ) ) {
558
- //Nonce check failed.
559
- wp_die( SwpmUtils::_( 'Error! Nonce security verification failed for Bulk Change Access Starts Date action. Clear cache and try again.' ) );
560
- }
561
-
562
- $errorMsg = '';
563
- $level_id = sanitize_text_field( $_REQUEST['swpm_bulk_user_start_date_change_level'] );
564
- $new_date = sanitize_text_field( $_REQUEST['swpm_bulk_user_start_date_change_date'] );
565
-
566
- if ( $level_id == 'please_select' ) {
567
- $errorMsg = SwpmUtils::_( 'Error! Please select a membership level first.' );
568
- }
569
-
570
- if ( empty( $errorMsg ) ) {//No validation errors so go ahead
571
- $member_records = SwpmMemberUtils::get_all_members_of_a_level( $level_id );
572
- if ( $member_records ) {
573
- foreach ( $member_records as $row ) {
574
- $member_id = $row->member_id;
575
- SwpmMemberUtils::update_access_starts_date( $member_id, $new_date );
576
- }
577
- }
578
- }
579
-
580
- $message = '';
581
- if ( ! empty( $errorMsg ) ) {
582
- $message = $errorMsg;
583
- } else {
584
- $message = SwpmUtils::_( 'Access starts date change operation successfully completed.' );
585
- }
586
- echo '<div id="message" class="updated fade"><p><strong>';
587
- echo $message;
588
- echo '</strong></p></div>';
589
- }
590
- ?>
591
-
592
- <div class="postbox">
593
- <h3 class="hndle"><label for="title"><?php SwpmUtils::e( 'Bulk Update Membership Level of Members' ); ?></label></h3>
594
- <div class="inside">
595
- <p>
596
- <?php SwpmUtils::e( 'You can manually change the membership level of any member by editing the record from the members menu. ' ); ?>
597
- <?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.' ); ?>
598
- </p>
599
- <form method="post" action="">
600
- <input type="hidden" name="swpm_bulk_change_level_nonce" value="<?php echo wp_create_nonce( 'swpm_bulk_change_level_nonce_action' ); ?>" />
601
-
602
- <table width="100%" border="0" cellspacing="0" cellpadding="6">
603
- <tr valign="top">
604
- <td width="25%" align="left">
605
- <strong><?php SwpmUtils::e( 'Membership Level: ' ); ?></strong>
606
- </td>
607
- <td align="left">
608
- <select name="swpm_bulk_change_level_from">
609
- <option value="please_select"><?php SwpmUtils::e( 'Select Current Level' ); ?></option>
610
- <?php echo SwpmUtils::membership_level_dropdown(); ?>
611
- </select>
612
- <p class="description"><?php SwpmUtils::e( 'Select the current membership level (the membership level of all members who are in this level will be updated).' ); ?></p>
613
- </td>
614
- </tr>
615
-
616
- <tr valign="top">
617
- <td width="25%" align="left">
618
- <strong><?php SwpmUtils::e( 'Level to Change to: ' ); ?></strong>
619
- </td>
620
- <td align="left">
621
- <select name="swpm_bulk_change_level_to">
622
- <option value="please_select"><?php SwpmUtils::e( 'Select Target Level' ); ?></option>
623
- <?php echo SwpmUtils::membership_level_dropdown(); ?>
624
- </select>
625
- <p class="description"><?php SwpmUtils::e( 'Select the new membership level.' ); ?></p>
626
- </td>
627
- </tr>
628
-
629
- <tr valign="top">
630
- <td width="25%" align="left">
631
- <input type="submit" class="button" name="swpm_bulk_change_level_process" value="<?php SwpmUtils::e( 'Bulk Change Membership Level' ); ?>" />
632
- </td>
633
- <td align="left"></td>
634
- </tr>
635
-
636
- </table>
637
- </form>
638
- </div></div>
639
-
640
- <div class="postbox">
641
- <h3 class="hndle"><label for="title"><?php SwpmUtils::e( 'Bulk Update Access Starts Date of Members' ); ?></label></h3>
642
- <div class="inside">
643
-
644
- <p>
645
- <?php SwpmUtils::e( 'The access starts date of a member is set to the day the user registers. This date value is used to calculate how long the member can access your content that are protected with a duration type protection in the membership level. ' ); ?>
646
- <?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.' ); ?>
647
- </p>
648
- <form method="post" action="">
649
- <input type="hidden" name="swpm_bulk_start_date_nonce" value="<?php echo wp_create_nonce( 'swpm_bulk_start_date_nonce_action' ); ?>" />
650
-
651
- <table width="100%" border="0" cellspacing="0" cellpadding="6">
652
- <tr valign="top">
653
- <td width="25%" align="left">
654
- <strong><?php SwpmUtils::e( 'Membership Level: ' ); ?></strong>
655
- </td><td align="left">
656
- <select name="swpm_bulk_user_start_date_change_level">
657
- <option value="please_select"><?php SwpmUtils::e( 'Select Level' ); ?></option>
658
- <?php echo SwpmUtils::membership_level_dropdown(); ?>
659
- </select>
660
- <p class="description"><?php SwpmUtils::e( 'Select the Membership level (the access start date of all members who are in this level will be updated).' ); ?></p>
661
- </td>
662
- </tr>
663
-
664
- <tr valign="top">
665
- <td width="25%" align="left">
666
- <strong>Access Starts Date: </strong>
667
- </td><td align="left">
668
- <input name="swpm_bulk_user_start_date_change_date" id="swpm_bulk_user_start_date_change_date" class="swpm-select-date" type="text" size="20" value="<?php echo ( date( 'Y-m-d' ) ); ?>" />
669
- <p class="description"><?php SwpmUtils::e( 'Specify the Access Starts date value.' ); ?></p>
670
- </td>
671
- </tr>
672
-
673
- <tr valign="top">
674
- <td width="25%" align="left">
675
- <input type="submit" class="button" name="swpm_bulk_user_start_date_change_process" value="<?php SwpmUtils::e( 'Bulk Change Access Starts Date' ); ?>" />
676
- </td>
677
- <td align="left"></td>
678
- </tr>
679
-
680
- </table>
681
- </form>
682
- </div></div>
683
-
684
- <script>
685
- jQuery(document).ready(function ($) {
686
- $('#swpm_bulk_user_start_date_change_date').datepicker({dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, yearRange: "-100:+100"});
687
- });
688
- </script>
689
- <?php
690
- echo '</div></div>'; //<!-- end of #poststuff #post-body -->
691
- }
692
-
693
- function show_all_members() {
694
- ob_start();
695
- $status = filter_input( INPUT_GET, 'status' );
696
- include_once SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_members_list.php';
697
- $output = ob_get_clean();
698
- return $output;
699
- }
700
-
701
- function handle_main_members_admin_menu() {
702
- do_action( 'swpm_members_menu_start' );
703
-
704
- //Check current_user_can() or die.
705
- SwpmMiscUtils::check_user_permission_and_is_admin( 'Main Members Admin Menu' );
706
-
707
- $action = filter_input( INPUT_GET, 'member_action' );
708
- $action = empty( $action ) ? filter_input( INPUT_POST, 'action' ) : $action;
709
- $selected = $action;
710
- ?>
711
- <div class="wrap swpm-admin-menu-wrap"><!-- start wrap -->
712
-
713
- <h1><?php echo SwpmUtils::_( 'Simple WP Membership::Members' ); ?><!-- page title -->
714
- <a href="admin.php?page=simple_wp_membership&member_action=add" class="add-new-h2"><?php echo SwpmUtils::_( 'Add New' ); ?></a>
715
- </h1>
716
-
717
- <h2 class="nav-tab-wrapper swpm-members-nav-tab-wrapper"><!-- start nav menu tabs -->
718
- <a class="nav-tab <?php echo ( $selected == '' ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership"><?php echo SwpmUtils::_( 'Members' ); ?></a>
719
- <a class="nav-tab <?php echo ( $selected == 'add' ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership&member_action=add"><?php echo SwpmUtils::_( 'Add Member' ); ?></a>
720
- <a class="nav-tab <?php echo ( $selected == 'bulk' ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership&member_action=bulk"><?php echo SwpmUtils::_( 'Bulk Operation' ); ?></a>
721
- <?php
722
- if ( $selected == 'edit' ) {//Only show the "edit member" tab when a member profile is being edited from the admin side.
723
- echo '<a class="nav-tab nav-tab-active" href="#">Edit Member</a>';
724
- }
725
-
726
- //Trigger hooks that allows an extension to add extra nav tabs in the members menu.
727
- do_action( 'swpm_members_menu_nav_tabs', $selected );
728
-
729
- $menu_tabs = apply_filters( 'swpm_members_additional_menu_tabs_array', array() );
730
- foreach ( $menu_tabs as $member_action => $title ) {
731
- ?>
732
- <a class="nav-tab <?php echo ( $selected == $member_action ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership&member_action=<?php echo $member_action; ?>" ><?php SwpmUtils::e( $title ); ?></a>
733
- <?php
734
- }
735
- ?>
736
- </h2><!-- end nav menu tabs -->
737
- <?php
738
- do_action( 'swpm_members_menu_after_nav_tabs' );
739
-
740
- //Trigger hook so anyone listening for this particular action can handle the output.
741
- do_action( 'swpm_members_menu_body_' . $action );
742
-
743
- //Allows an addon to completely override the body section of the members admin menu for a given action.
744
- $output = apply_filters( 'swpm_members_menu_body_override', '', $action );
745
- if ( ! empty( $output ) ) {
746
- //An addon has overriden the body of this page for the given action. So no need to do anything in core.
747
- echo $output;
748
- echo '</div>'; //<!-- end of wrap -->
749
- return;
750
- }
751
-
752
- //Switch case for the various different actions handled by the core plugin.
753
- switch ( $action ) {
754
- case 'members_list':
755
- //Show the members listing
756
- echo $this->show_all_members();
757
- break;
758
- case 'add':
759
- //Process member profile add
760
- $this->process_form_request();
761
- break;
762
- case 'edit':
763
- //Process member profile edit
764
- $this->process_form_request();
765
- break;
766
- case 'bulk':
767
- //Handle the bulk operation menu
768
- $this->bulk_operation_menu();
769
- break;
770
- default:
771
- //Show the members listing page by default.
772
- echo $this->show_all_members();
773
- break;
774
- }
775
-
776
- echo '</div>'; //<!-- end of wrap -->
777
- }
778
-
779
- }
780
-
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! class_exists( 'WP_List_Table' ) ) {
3
+ require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
4
+ }
5
+
6
+ class SwpmMembers extends WP_List_Table {
7
+
8
+ function __construct() {
9
+ parent::__construct(
10
+ array(
11
+ 'singular' => SwpmUtils::_( 'Member' ),
12
+ 'plural' => SwpmUtils::_( 'Members' ),
13
+ 'ajax' => false,
14
+ )
15
+ );
16
+ }
17
+
18
+ function get_columns() {
19
+ $columns = array(
20
+ 'cb' => '<input type="checkbox" />',
21
+ 'member_id' => SwpmUtils::_( 'ID' ),
22
+ 'user_name' => SwpmUtils::_( 'Username' ),
23
+ 'first_name' => SwpmUtils::_( 'First Name' ),
24
+ 'last_name' => SwpmUtils::_( 'Last Name' ),
25
+ 'email' => SwpmUtils::_( 'Email' ),
26
+ 'alias' => SwpmUtils::_( 'Membership Level' ),
27
+ 'subscription_starts' => SwpmUtils::_( 'Access Starts' ),
28
+ 'account_state' => SwpmUtils::_( 'Account State' ),
29
+ 'last_accessed' => SwpmUtils::_( 'Last Login Date' ),
30
+ );
31
+ return apply_filters( 'swpm_admin_members_table_columns', $columns );
32
+ }
33
+
34
+ function get_sortable_columns() {
35
+ $sortable_columns = array(
36
+ 'member_id' => array( 'member_id', true ), //True means already sorted
37
+ 'user_name' => array( 'user_name', false ),
38
+ 'first_name' => array( 'first_name', false ),
39
+ 'last_name' => array( 'last_name', false ),
40
+ 'email' => array( 'email', false ),
41
+ 'alias' => array( 'alias', false ),
42
+ 'subscription_starts' => array( 'subscription_starts', false ),
43
+ 'account_state' => array( 'account_state', false ),
44
+ 'last_accessed' => array( 'last_accessed', false ),
45
+ );
46
+ return apply_filters( 'swpm_admin_members_table_sortable_columns', $sortable_columns );
47
+ }
48
+
49
+ function get_bulk_actions() {
50
+ $actions = array(
51
+ 'bulk_delete' => SwpmUtils::_( 'Delete' ),
52
+ 'bulk_active' => SwpmUtils::_( 'Set Status to Active' ),
53
+ 'bulk_active_notify' => SwpmUtils::_( 'Set Status to Active and Notify' ),
54
+ 'bulk_inactive' => SwpmUtils::_( 'Set Status to Inactive' ),
55
+ 'bulk_pending' => SwpmUtils::_( 'Set Status to Pending' ),
56
+ 'bulk_expired' => SwpmUtils::_( 'Set Status to Expired' ),
57
+ );
58
+ return $actions;
59
+ }
60
+
61
+ function column_default( $item, $column_name ) {
62
+ $column_data = apply_filters( 'swpm_admin_members_table_column_' . $column_name, $item[ $column_name ], $item );
63
+ return $column_data;
64
+ }
65
+
66
+ function column_account_state( $item ) {
67
+ $acc_state_str = ucfirst( $item['account_state'] );
68
+ return SwpmUtils::_( $acc_state_str );
69
+ }
70
+
71
+ function column_member_id( $item ) {
72
+ $delete_swpmuser_nonce = wp_create_nonce( 'delete_swpmuser_admin_end' );
73
+ $actions = array(
74
+ 'edit' => sprintf( '<a href="admin.php?page=simple_wp_membership&member_action=edit&member_id=%s">Edit/View</a>', $item['member_id'] ),
75
+ 'delete' => sprintf( '<a href="admin.php?page=simple_wp_membership&member_action=delete&member_id=%s&delete_swpmuser_nonce=%s" onclick="return confirm(\'Are you sure you want to delete this entry?\')">Delete</a>', $item['member_id'], $delete_swpmuser_nonce ),
76
+ );
77
+ return $item['member_id'] . $this->row_actions( $actions );
78
+ }
79
+
80
+ function column_user_name( $item ) {
81
+ $user_name = $item['user_name'];
82
+ if ( empty( $user_name ) ) {
83
+ $user_name = '[' . SwpmUtils::_( 'incomplete' ) . ']';
84
+ }
85
+ return $user_name;
86
+ }
87
+
88
+ function column_cb( $item ) {
89
+ return sprintf(
90
+ '<input type="checkbox" name="members[]" value="%s" />',
91
+ $item['member_id']
92
+ );
93
+ }
94
+
95
+ function prepare_items() {
96
+ global $wpdb;
97
+
98
+ $this->process_bulk_action();
99
+
100
+ $records_query_head = 'SELECT member_id,user_name,first_name,last_name,email,alias,subscription_starts,account_state,last_accessed';
101
+ $count_query_head = 'SELECT COUNT(member_id)';
102
+
103
+ $query = ' ';
104
+ $query .= ' FROM ' . $wpdb->prefix . 'swpm_members_tbl';
105
+ $query .= ' LEFT JOIN ' . $wpdb->prefix . 'swpm_membership_tbl';
106
+ $query .= ' ON ( membership_level = id ) ';
107
+
108
+ //Get the search string (if any)
109
+ $s = filter_input( INPUT_GET, 's' );
110
+ if ( empty( $s ) ) {
111
+ $s = filter_input( INPUT_POST, 's' );
112
+ }
113
+
114
+ $status = filter_input( INPUT_GET, 'status' );
115
+ $status = esc_attr( $status );//Escape value
116
+
117
+ $filters = array();
118
+
119
+ //Add the search parameter to the query
120
+ if ( ! empty( $s ) ) {
121
+ $s = sanitize_text_field( $s );
122
+ $s = trim( $s ); //Trim the input
123
+ $s = esc_attr( $s );
124
+ $filters[] = "( user_name LIKE '%" . strip_tags( $s ) . "%' "
125
+ . " OR first_name LIKE '%" . strip_tags( $s ) . "%' "
126
+ . " OR last_name LIKE '%" . strip_tags( $s ) . "%' "
127
+ . " OR email LIKE '%" . strip_tags( $s ) . "%' "
128
+ . " OR address_city LIKE '%" . strip_tags( $s ) . "%' "
129
+ . " OR address_state LIKE '%" . strip_tags( $s ) . "%' "
130
+ . " OR country LIKE '%" . strip_tags( $s ) . "%' "
131
+ . " OR company_name LIKE '%" . strip_tags( $s ) . "%' )";
132
+ }
133
+
134
+ //Add account status filtering to the query
135
+ if ( ! empty( $status ) ) {
136
+ if ( $status == 'incomplete' ) {
137
+ $filters[] = "user_name = ''";
138
+ } else {
139
+ $filters[] = "account_state = '" . $status . "'";
140
+ }
141
+ }
142
+
143
+ //Add membership level filtering
144
+ $membership_level = filter_input( INPUT_GET, 'membership_level', FILTER_SANITIZE_NUMBER_INT );
145
+
146
+ if ( ! empty( $membership_level ) ) {
147
+ $filters[] = sprintf( "membership_level = '%d'", $membership_level );
148
+ }
149
+
150
+ //Build the WHERE clause of the query string
151
+ if ( ! empty( $filters ) ) {
152
+ $filter_str = '';
153
+ foreach ( $filters as $ind => $filter ) {
154
+ $filter_str .= $ind === 0 ? $filter : ' AND ' . $filter;
155
+ }
156
+ $query .= 'WHERE ' . $filter_str;
157
+ }
158
+
159
+ //Build the orderby and order query parameters
160
+ $orderby = filter_input( INPUT_GET, 'orderby' );
161
+ $orderby = apply_filters( 'swpm_admin_members_table_orderby', $orderby );
162
+ $orderby = empty( $orderby ) ? 'member_id' : $orderby;
163
+ $order = filter_input( INPUT_GET, 'order' );
164
+ $order = empty( $order ) ? 'DESC' : $order;
165
+ $sortable_columns = $this->get_sortable_columns();
166
+ $orderby = SwpmUtils::sanitize_value_by_array( $orderby, $sortable_columns );
167
+ $order = SwpmUtils::sanitize_value_by_array(
168
+ $order,
169
+ array(
170
+ 'DESC' => '1',
171
+ 'ASC' => '1',
172
+ )
173
+ );
174
+ $query .= ' ORDER BY ' . $orderby . ' ' . $order;
175
+
176
+ //Execute the query
177
+ $totalitems = $wpdb->get_var( $count_query_head . $query );
178
+ //Pagination setup
179
+ $perpage = apply_filters( 'swpm_members_menu_items_per_page', 50 );
180
+ $paged = filter_input( INPUT_GET, 'paged' );
181
+ if ( empty( $paged ) || ! is_numeric( $paged ) || $paged <= 0 ) {
182
+ $paged = 1;
183
+ }
184
+ $totalpages = ceil( $totalitems / $perpage );
185
+ if ( ! empty( $paged ) && ! empty( $perpage ) ) {
186
+ $offset = ( $paged - 1 ) * $perpage;
187
+ $query .= ' LIMIT ' . (int) $offset . ',' . (int) $perpage;
188
+ }
189
+ $this->set_pagination_args(
190
+ array(
191
+ 'total_items' => $totalitems,
192
+ 'total_pages' => $totalpages,
193
+ 'per_page' => $perpage,
194
+ )
195
+ );
196
+
197
+ $columns = $this->get_columns();
198
+ $hidden = array();
199
+ $sortable = $this->get_sortable_columns();
200
+
201
+ $this->_column_headers = array( $columns, $hidden, $sortable );
202
+ $this->items = $wpdb->get_results( $records_query_head . $query, ARRAY_A );
203
+ $this->items = apply_filters( 'swpm_admin_members_table_items', $this->items );
204
+ }
205
+
206
+ function get_user_count_by_account_state() {
207
+ global $wpdb;
208
+ $query = 'SELECT count(member_id) AS count, account_state FROM ' . $wpdb->prefix . 'swpm_members_tbl GROUP BY account_state';
209
+ $result = $wpdb->get_results( $query, ARRAY_A );
210
+ $count = array();
211
+
212
+ $all = 0;
213
+ foreach ( $result as $row ) {
214
+ $count[ $row['account_state'] ] = $row['count'];
215
+ $all += intval( $row['count'] );
216
+ }
217
+ $count ['all'] = $all;
218
+
219
+ $count_incomplete_query = 'SELECT COUNT(*) FROM ' . $wpdb->prefix . "swpm_members_tbl WHERE user_name = ''";
220
+ $count['incomplete'] = $wpdb->get_var( $count_incomplete_query );
221
+
222
+ return $count;
223
+ }
224
+
225
+ function no_items() {
226
+ _e( 'No member found.', 'simple-membership' );
227
+ }
228
+
229
+ function process_form_request() {
230
+ if ( isset( $_REQUEST['member_id'] ) ) {
231
+ //This is a member profile edit action
232
+ $record_id = sanitize_text_field( $_REQUEST['member_id'] );
233
+ if ( ! is_numeric( $record_id ) ) {
234
+ wp_die( 'Error! ID must be numeric.' );
235
+ }
236
+ return $this->edit( absint( $record_id ) );
237
+ }
238
+
239
+ //This is an profile add action.
240
+ return $this->add();
241
+ }
242
+
243
+ function add() {
244
+ $form = apply_filters( 'swpm_admin_registration_form_override', '' );
245
+ if ( ! empty( $form ) ) {
246
+ echo $form;
247
+ return;
248
+ }
249
+ global $wpdb;
250
+ $member = SwpmTransfer::$default_fields;
251
+ $member['member_since'] = SwpmUtils::get_current_date_in_wp_zone();//date( 'Y-m-d' );
252
+ $member['subscription_starts'] = SwpmUtils::get_current_date_in_wp_zone();//date( 'Y-m-d' );
253
+ if ( isset( $_POST['createswpmuser'] ) ) {
254
+ $member = array_map( 'sanitize_text_field', $_POST );
255
+ }
256
+ extract( $member, EXTR_SKIP );
257
+ $query = 'SELECT * FROM ' . $wpdb->prefix . 'swpm_membership_tbl WHERE id !=1 ';
258
+ $levels = $wpdb->get_results( $query, ARRAY_A );
259
+
260
+ $add_user_template_path = apply_filters('swpm_admin_registration_add_user_template_path', SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_add.php');
261
+ include_once $add_user_template_path;
262
+
263
+ return false;
264
+ }
265
+
266
+ function edit( $id ) {
267
+ global $wpdb;
268
+ $id = absint( $id );
269
+ $query = "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE member_id = $id";
270
+ $member = $wpdb->get_row( $query, ARRAY_A );
271
+ if ( isset( $_POST['editswpmuser'] ) ) {
272
+ $_POST['user_name'] = sanitize_text_field( $member['user_name'] );
273
+ $_POST['email'] = sanitize_email( $member['email'] );
274
+ foreach ( $_POST as $key => $value ) {
275
+ $key = sanitize_text_field( $key );
276
+ if ( $key == 'email' ) {
277
+ $member[ $key ] = sanitize_email( $value );
278
+ } else {
279
+ $member[ $key ] = sanitize_text_field( $value );
280
+ }
281
+ }
282
+ }
283
+ extract( $member, EXTR_SKIP );
284
+ $query = 'SELECT * FROM ' . $wpdb->prefix . 'swpm_membership_tbl WHERE id !=1 ';
285
+ $levels = $wpdb->get_results( $query, ARRAY_A );
286
+
287
+ $edit_user_template_path = apply_filters('swpm_admin_registration_edit_user_template_path', SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_edit.php');
288
+ include_once $edit_user_template_path;
289
+
290
+ return false;
291
+ }
292
+
293
+ function process_bulk_action() {
294
+ //Detect when a bulk action is being triggered... then perform the action.
295
+ $members = isset( $_REQUEST['members'] ) ? $_REQUEST['members'] : array();
296
+ $members = array_map( 'sanitize_text_field', $members );
297
+
298
+ $current_action = $this->current_action();
299
+ if ( ! empty( $current_action ) ) {
300
+ //Bulk operation action. Lets make sure multiple records were selected before going ahead.
301
+ if ( empty( $members ) ) {
302
+ echo '<div id="message" class="error"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
303
+ return;
304
+ }
305
+ } else {
306
+ //No bulk operation.
307
+ return;
308
+ }
309
+
310
+ check_admin_referer( 'swpm_bulk_action', 'swpm_bulk_action_nonce' );
311
+
312
+ //perform the bulk operation according to the selection
313
+ if ( 'bulk_delete' === $current_action ) {
314
+ foreach ( $members as $record_id ) {
315
+ if ( ! is_numeric( $record_id ) ) {
316
+ wp_die( 'Error! ID must be numeric.' );
317
+ }
318
+ self::delete_user_by_id( $record_id );
319
+ }
320
+ echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
321
+ return;
322
+ } elseif ( 'bulk_active' === $current_action ) {
323
+ $this->bulk_set_status( $members, 'active' );
324
+ } elseif ( 'bulk_active_notify' == $current_action ) {
325
+ $this->bulk_set_status( $members, 'active', true );
326
+ } elseif ( 'bulk_inactive' == $current_action ) {
327
+ $this->bulk_set_status( $members, 'inactive' );
328
+ } elseif ( 'bulk_pending' == $current_action ) {
329
+ $this->bulk_set_status( $members, 'pending' );
330
+ } elseif ( 'bulk_expired' == $current_action ) {
331
+ $this->bulk_set_status( $members, 'expired' );
332
+ }
333
+
334
+ echo '<div id="message" class="updated fade"><p>Bulk operation completed successfully!</p></div>';
335
+ }
336
+
337
+ function bulk_set_status( $members, $status, $notify = false ) {
338
+ $ids = implode( ',', array_map( 'absint', $members ) );
339
+ if ( empty( $ids ) ) {
340
+ return;
341
+ }
342
+ global $wpdb;
343
+ $query = 'UPDATE ' . $wpdb->prefix . 'swpm_members_tbl ' .
344
+ " SET account_state = '" . $status . "' WHERE member_id in (" . $ids . ')';
345
+ $wpdb->query( $query );
346
+
347
+ if ( $notify ) {
348
+ $settings = SwpmSettings::get_instance();
349
+
350
+ $emails = $wpdb->get_col( 'SELECT email FROM ' . $wpdb->prefix . 'swpm_members_tbl ' . " WHERE member_id IN ( $ids ) " );
351
+
352
+ $subject = $settings->get_value( 'bulk-activate-notify-mail-subject' );
353
+ if ( empty( $subject ) ) {
354
+ $subject = 'Account Activated!';
355
+ }
356
+ $body = $settings->get_value( 'bulk-activate-notify-mail-body' );
357
+ if ( empty( $body ) ) {
358
+ $body = 'Hi, Your account has been activated successfully!';
359
+ }
360
+
361
+ $from_address = $settings->get_value( 'email-from' );
362
+ $headers = 'From: ' . $from_address . "\r\n";
363
+
364
+ foreach ($emails as $to_email) {
365
+ //Send the activation email one by one to all the selected members.
366
+ $subject = apply_filters( 'swpm_email_bulk_set_status_subject', $subject );
367
+ $body = apply_filters( 'swpm_email_bulk_set_status_body', $body );
368
+ $to_email = trim($to_email);
369
+ SwpmMiscUtils::mail( $to_email, $subject, $body, $headers );
370
+ SwpmLog::log_simple_debug( 'Bulk activation email notification sent. Activation email sent to the following email: ' . $to_email, true );
371
+ }
372
+ }
373
+ }
374
+
375
+ function delete() {
376
+ if ( isset( $_REQUEST['member_id'] ) ) {
377
+ //Check we are on the admin end and user has management permission
378
+ SwpmMiscUtils::check_user_permission_and_is_admin( 'member deletion by admin' );
379
+
380
+ //Check nonce
381
+ if ( ! isset( $_REQUEST['delete_swpmuser_nonce'] ) || ! wp_verify_nonce( $_REQUEST['delete_swpmuser_nonce'], 'delete_swpmuser_admin_end' ) ) {
382
+ //Nonce check failed.
383
+ wp_die( SwpmUtils::_( 'Error! Nonce verification failed for user delete from admin end.' ) );
384
+ }
385
+
386
+ $id = sanitize_text_field( $_REQUEST['member_id'] );
387
+ $id = absint( $id );
388
+ self::delete_user_by_id( $id );
389
+ }
390
+ }
391
+
392
+ public static function delete_user_by_id( $id ) {
393
+ if ( ! is_numeric( $id ) ) {
394
+ wp_die( 'Error! Member ID must be numeric.' );
395
+ }
396
+
397
+ //Trigger action hook
398
+ do_action( 'swpm_admin_end_user_delete_action', $id );
399
+
400
+ $swpm_user = SwpmMemberUtils::get_user_by_id( $id );
401
+ $user_name = $swpm_user->user_name;
402
+ self::delete_wp_user( $user_name ); //Deletes the WP User record
403
+ self::delete_swpm_user_by_id( $id ); //Deletes the SWPM record
404
+ }
405
+
406
+ public static function delete_swpm_user_by_id( $id ) {
407
+ self::delete_user_subs( $id );
408
+ global $wpdb;
409
+ $query = 'DELETE FROM ' . $wpdb->prefix . "swpm_members_tbl WHERE member_id = $id";
410
+ $wpdb->query( $query );
411
+ }
412
+
413
+ public static function delete_wp_user( $user_name ) {
414
+ $wp_user_id = username_exists( $user_name );
415
+ if ( empty( $wp_user_id ) || ! is_numeric( $wp_user_id ) ) {
416
+ return;
417
+ }
418
+
419
+ if ( ! self::is_wp_super_user( $wp_user_id ) ) {
420
+ //Not an admin user so it is safe to delete this user.
421
+ include_once ABSPATH . 'wp-admin/includes/user.php';
422
+ wp_delete_user( $wp_user_id, 1 ); //assigns all related to this user to admin.
423
+ } else {
424
+ //This is an admin user. So not going to delete the WP User record.
425
+ SwpmTransfer::get_instance()->set( 'status', 'For safety, we do not allow deletion of any associated WordPress account with administrator role.' );
426
+ return;
427
+ }
428
+ }
429
+
430
+ private static function delete_user_subs( $id ) {
431
+ $member = SwpmMemberUtils::get_user_by_id( $id );
432
+ if ( ! $member ) {
433
+ return false;
434
+ }
435
+ // let's check if Stripe subscription needs to be cancelled
436
+ global $wpdb;
437
+ $q = $wpdb->prepare(
438
+ 'SELECT *
439
+ FROM `' . $wpdb->prefix . 'swpm_payments_tbl`
440
+ WHERE email = %s
441
+ AND (gateway = "stripe" OR gateway = "stripe-sca-subs")
442
+ AND subscr_id != ""',
443
+ array( $member->email )
444
+ );
445
+
446
+ $res = $wpdb->get_results( $q, ARRAY_A );
447
+
448
+ if ( ! $res ) {
449
+ return false;
450
+ }
451
+
452
+ foreach ( $res as $sub ) {
453
+
454
+ if ( substr( $sub['subscr_id'], 0, 4 ) !== 'sub_' ) {
455
+ //not Stripe subscription
456
+ continue;
457
+ }
458
+
459
+ //let's find the payment button
460
+ $q = $wpdb->prepare( "SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key='subscr_id' AND meta_value=%s", $sub['subscr_id'] );
461
+ $res_post = $wpdb->get_row( $q );
462
+
463
+ if ( ! $res_post ) {
464
+ //no button found
465
+ continue;
466
+ }
467
+
468
+ $button_id = get_post_meta( $res_post->post_id, 'payment_button_id', true );
469
+
470
+ $button = get_post( $button_id );
471
+
472
+ if ( ! $button ) {
473
+ //no button found
474
+ continue;
475
+ }
476
+
477
+ SwpmLog::log_simple_debug( 'Attempting to cancel Stripe Subscription ' . $sub['subscr_id'], true );
478
+
479
+ $is_live = get_post_meta( $button_id, 'is_live', true );
480
+
481
+ //API Keys
482
+ $api_keys = SwpmMiscUtils::get_stripe_api_keys_from_payment_button( $button_id, $is_live );
483
+
484
+ //Include the Stripe library.
485
+ SwpmMiscUtils::load_stripe_lib();
486
+
487
+ \Stripe\Stripe::setApiKey( $api_keys['secret'] );
488
+
489
+ $error = null;
490
+ // Let's try to cancel subscription
491
+ try {
492
+ $sub = \Stripe\Subscription::retrieve( $sub['subscr_id'] );
493
+ $sub->cancel();
494
+ } catch ( Exception $e ) {
495
+ SwpmLog::log_simple_debug( 'Error occurred during Stripe Subscription cancellation. ' . $e->getMessage(), false );
496
+ $body = $e->getJsonBody();
497
+ $error = $body['error'];
498
+ $error_string = wp_json_encode( $error );
499
+ SwpmLog::log_simple_debug( 'Error details: ' . $error_string, false );
500
+ }
501
+ if ( ! isset( $error ) ) {
502
+ SwpmLog::log_simple_debug( 'Stripe Subscription has been cancelled.', true );
503
+ }
504
+ }
505
+ }
506
+
507
+ public static function is_wp_super_user( $wp_user_id ) {
508
+ $user_data = get_userdata( $wp_user_id );
509
+ if ( empty( $user_data ) ) {
510
+ //Not an admin user if we can't find his data for the given ID.
511
+ return false;
512
+ }
513
+ if ( isset( $user_data->wp_capabilities['administrator'] ) ) {//Check capability
514
+ //admin user
515
+ return true;
516
+ }
517
+ if ( $user_data->wp_user_level == 10 ) {//Check for old style wp user level
518
+ //admin user
519
+ return true;
520
+ }
521
+ //This is not an admin user
522
+ return false;
523
+ }
524
+
525
+ function bulk_operation_menu() {
526
+ echo '<div id="poststuff"><div id="post-body">';
527
+
528
+ if ( isset( $_REQUEST['swpm_bulk_change_level_process'] ) ) {
529
+ //Check nonce
530
+ $swpm_bulk_change_level_nonce = filter_input( INPUT_POST, 'swpm_bulk_change_level_nonce' );
531
+ if ( ! wp_verify_nonce( $swpm_bulk_change_level_nonce, 'swpm_bulk_change_level_nonce_action' ) ) {
532
+ //Nonce check failed.
533
+ wp_die( SwpmUtils::_( 'Error! Nonce security verification failed for Bulk Change Membership Level action. Clear cache and try again.' ) );
534
+ }
535
+
536
+ $errorMsg = '';
537
+ $from_level_id = sanitize_text_field( $_REQUEST['swpm_bulk_change_level_from'] );
538
+ $to_level_id = sanitize_text_field( $_REQUEST['swpm_bulk_change_level_to'] );
539
+
540
+ if ( $from_level_id == 'please_select' || $to_level_id == 'please_select' ) {
541
+ $errorMsg = SwpmUtils::_( 'Error! Please select a membership level first.' );
542
+ }
543
+
544
+ if ( empty( $errorMsg ) ) {//No validation errors so go ahead
545
+ $member_records = SwpmMemberUtils::get_all_members_of_a_level( $from_level_id );
546
+ if ( $member_records ) {
547
+ foreach ( $member_records as $row ) {
548
+ $member_id = $row->member_id;
549
+ SwpmMemberUtils::update_membership_level( $member_id, $to_level_id );
550
+ }
551
+ }
552
+ }
553
+
554
+ $message = '';
555
+ if ( ! empty( $errorMsg ) ) {
556
+ $message = $errorMsg;
557
+ } else {
558
+ $message = SwpmUtils::_( 'Membership level change operation completed successfully.' );
559
+ }
560
+ echo '<div id="message" class="updated fade"><p><strong>';
561
+ echo $message;
562
+ echo '</strong></p></div>';
563
+ }
564
+
565
+ if ( isset( $_REQUEST['swpm_bulk_user_start_date_change_process'] ) ) {
566
+ //Check nonce
567
+ $swpm_bulk_start_date_nonce = filter_input( INPUT_POST, 'swpm_bulk_start_date_nonce' );
568
+ if ( ! wp_verify_nonce( $swpm_bulk_start_date_nonce, 'swpm_bulk_start_date_nonce_action' ) ) {
569
+ //Nonce check failed.
570
+ wp_die( SwpmUtils::_( 'Error! Nonce security verification failed for Bulk Change Access Starts Date action. Clear cache and try again.' ) );
571
+ }
572
+
573
+ $errorMsg = '';
574
+ $level_id = sanitize_text_field( $_REQUEST['swpm_bulk_user_start_date_change_level'] );
575
+ $new_date = sanitize_text_field( $_REQUEST['swpm_bulk_user_start_date_change_date'] );
576
+
577
+ if ( $level_id == 'please_select' ) {
578
+ $errorMsg = SwpmUtils::_( 'Error! Please select a membership level first.' );
579
+ }
580
+
581
+ if ( empty( $errorMsg ) ) {//No validation errors so go ahead
582
+ $member_records = SwpmMemberUtils::get_all_members_of_a_level( $level_id );
583
+ if ( $member_records ) {
584
+ foreach ( $member_records as $row ) {
585
+ $member_id = $row->member_id;
586
+ SwpmMemberUtils::update_access_starts_date( $member_id, $new_date );
587
+ }
588
+ }
589
+ }
590
+
591
+ $message = '';
592
+ if ( ! empty( $errorMsg ) ) {
593
+ $message = $errorMsg;
594
+ } else {
595
+ $message = SwpmUtils::_( 'Access starts date change operation successfully completed.' );
596
+ }
597
+ echo '<div id="message" class="updated fade"><p><strong>';
598
+ echo $message;
599
+ echo '</strong></p></div>';
600
+ }
601
+ ?>
602
+
603
+ <div class="postbox">
604
+ <h3 class="hndle"><label for="title"><?php SwpmUtils::e( 'Bulk Update Membership Level of Members' ); ?></label></h3>
605
+ <div class="inside">
606
+ <p>
607
+ <?php SwpmUtils::e( 'You can manually change the membership level of any member by editing the record from the members menu. ' ); ?>
608
+ <?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.' ); ?>
609
+ </p>
610
+ <form method="post" action="">
611
+ <input type="hidden" name="swpm_bulk_change_level_nonce" value="<?php echo wp_create_nonce( 'swpm_bulk_change_level_nonce_action' ); ?>" />
612
+
613
+ <table width="100%" border="0" cellspacing="0" cellpadding="6">
614
+ <tr valign="top">
615
+ <td width="25%" align="left">
616
+ <strong><?php SwpmUtils::e( 'Membership Level: ' ); ?></strong>
617
+ </td>
618
+ <td align="left">
619
+ <select name="swpm_bulk_change_level_from">
620
+ <option value="please_select"><?php SwpmUtils::e( 'Select Current Level' ); ?></option>
621
+ <?php echo SwpmUtils::membership_level_dropdown(); ?>
622
+ </select>
623
+ <p class="description"><?php SwpmUtils::e( 'Select the current membership level (the membership level of all members who are in this level will be updated).' ); ?></p>
624
+ </td>
625
+ </tr>
626
+
627
+ <tr valign="top">
628
+ <td width="25%" align="left">
629
+ <strong><?php SwpmUtils::e( 'Level to Change to: ' ); ?></strong>
630
+ </td>
631
+ <td align="left">
632
+ <select name="swpm_bulk_change_level_to">
633
+ <option value="please_select"><?php SwpmUtils::e( 'Select Target Level' ); ?></option>
634
+ <?php echo SwpmUtils::membership_level_dropdown(); ?>
635
+ </select>
636
+ <p class="description"><?php SwpmUtils::e( 'Select the new membership level.' ); ?></p>
637
+ </td>
638
+ </tr>
639
+
640
+ <tr valign="top">
641
+ <td width="25%" align="left">
642
+ <input type="submit" class="button" name="swpm_bulk_change_level_process" value="<?php SwpmUtils::e( 'Bulk Change Membership Level' ); ?>" />
643
+ </td>
644
+ <td align="left"></td>
645
+ </tr>
646
+
647
+ </table>
648
+ </form>
649
+ </div></div>
650
+
651
+ <div class="postbox">
652
+ <h3 class="hndle"><label for="title"><?php SwpmUtils::e( 'Bulk Update Access Starts Date of Members' ); ?></label></h3>
653
+ <div class="inside">
654
+
655
+ <p>
656
+ <?php SwpmUtils::e( 'The access starts date of a member is set to the day the user registers. This date value is used to calculate how long the member can access your content that are protected with a duration type protection in the membership level. ' ); ?>
657
+ <?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.' ); ?>
658
+ </p>
659
+ <form method="post" action="">
660
+ <input type="hidden" name="swpm_bulk_start_date_nonce" value="<?php echo wp_create_nonce( 'swpm_bulk_start_date_nonce_action' ); ?>" />
661
+
662
+ <table width="100%" border="0" cellspacing="0" cellpadding="6">
663
+ <tr valign="top">
664
+ <td width="25%" align="left">
665
+ <strong><?php SwpmUtils::e( 'Membership Level: ' ); ?></strong>
666
+ </td><td align="left">
667
+ <select name="swpm_bulk_user_start_date_change_level">
668
+ <option value="please_select"><?php SwpmUtils::e( 'Select Level' ); ?></option>
669
+ <?php echo SwpmUtils::membership_level_dropdown(); ?>
670
+ </select>
671
+ <p class="description"><?php SwpmUtils::e( 'Select the Membership level (the access start date of all members who are in this level will be updated).' ); ?></p>
672
+ </td>
673
+ </tr>
674
+
675
+ <tr valign="top">
676
+ <td width="25%" align="left">
677
+ <strong>Access Starts Date: </strong>
678
+ </td><td align="left">
679
+ <input name="swpm_bulk_user_start_date_change_date" id="swpm_bulk_user_start_date_change_date" class="swpm-select-date" type="text" size="20" value="<?php echo ( date( 'Y-m-d' ) ); ?>" />
680
+ <p class="description"><?php SwpmUtils::e( 'Specify the Access Starts date value.' ); ?></p>
681
+ </td>
682
+ </tr>
683
+
684
+ <tr valign="top">
685
+ <td width="25%" align="left">
686
+ <input type="submit" class="button" name="swpm_bulk_user_start_date_change_process" value="<?php SwpmUtils::e( 'Bulk Change Access Starts Date' ); ?>" />
687
+ </td>
688
+ <td align="left"></td>
689
+ </tr>
690
+
691
+ </table>
692
+ </form>
693
+ </div></div>
694
+
695
+ <script>
696
+ jQuery(document).ready(function ($) {
697
+ $('#swpm_bulk_user_start_date_change_date').datepicker({dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, yearRange: "-100:+100"});
698
+ });
699
+ </script>
700
+ <?php
701
+ echo '</div></div>'; //<!-- end of #poststuff #post-body -->
702
+ }
703
+
704
+ function show_all_members() {
705
+ ob_start();
706
+ $status = filter_input( INPUT_GET, 'status' );
707
+ include_once SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_members_list.php';
708
+ $output = ob_get_clean();
709
+ return $output;
710
+ }
711
+
712
+ function handle_main_members_admin_menu() {
713
+ do_action( 'swpm_members_menu_start' );
714
+
715
+ //Check current_user_can() or die.
716
+ SwpmMiscUtils::check_user_permission_and_is_admin( 'Main Members Admin Menu' );
717
+
718
+ $action = filter_input( INPUT_GET, 'member_action' );
719
+ $action = empty( $action ) ? filter_input( INPUT_POST, 'action' ) : $action;
720
+ $selected = $action;
721
+ ?>
722
+ <div class="wrap swpm-admin-menu-wrap"><!-- start wrap -->
723
+
724
+ <h1><?php echo SwpmUtils::_( 'Simple WP Membership::Members' ); ?><!-- page title -->
725
+ <a href="admin.php?page=simple_wp_membership&member_action=add" class="add-new-h2"><?php echo SwpmUtils::_( 'Add New' ); ?></a>
726
+ </h1>
727
+
728
+ <h2 class="nav-tab-wrapper swpm-members-nav-tab-wrapper"><!-- start nav menu tabs -->
729
+ <a class="nav-tab <?php echo ( $selected == '' ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership"><?php echo SwpmUtils::_( 'Members' ); ?></a>
730
+ <a class="nav-tab <?php echo ( $selected == 'add' ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership&member_action=add"><?php echo SwpmUtils::_( 'Add Member' ); ?></a>
731
+ <a class="nav-tab <?php echo ( $selected == 'bulk' ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership&member_action=bulk"><?php echo SwpmUtils::_( 'Bulk Operation' ); ?></a>
732
+ <?php
733
+ if ( $selected == 'edit' ) {//Only show the "edit member" tab when a member profile is being edited from the admin side.
734
+ echo '<a class="nav-tab nav-tab-active" href="#">Edit Member</a>';
735
+ }
736
+
737
+ //Trigger hooks that allows an extension to add extra nav tabs in the members menu.
738
+ do_action( 'swpm_members_menu_nav_tabs', $selected );
739
+
740
+ $menu_tabs = apply_filters( 'swpm_members_additional_menu_tabs_array', array() );
741
+ foreach ( $menu_tabs as $member_action => $title ) {
742
+ ?>
743
+ <a class="nav-tab <?php echo ( $selected == $member_action ) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership&member_action=<?php echo $member_action; ?>" ><?php SwpmUtils::e( $title ); ?></a>
744
+ <?php
745
+ }
746
+ ?>
747
+ </h2><!-- end nav menu tabs -->
748
+ <?php
749
+ do_action( 'swpm_members_menu_after_nav_tabs' );
750
+
751
+ //Trigger hook so anyone listening for this particular action can handle the output.
752
+ do_action( 'swpm_members_menu_body_' . $action );
753
+
754
+ //Allows an addon to completely override the body section of the members admin menu for a given action.
755
+ $output = apply_filters( 'swpm_members_menu_body_override', '', $action );
756
+ if ( ! empty( $output ) ) {
757
+ //An addon has overriden the body of this page for the given action. So no need to do anything in core.
758
+ echo $output;
759
+ echo '</div>'; //<!-- end of wrap -->
760
+ return;
761
+ }
762
+
763
+ //Switch case for the various different actions handled by the core plugin.
764
+ switch ( $action ) {
765
+ case 'members_list':
766
+ //Show the members listing
767
+ echo $this->show_all_members();
768
+ break;
769
+ case 'add':
770
+ //Process member profile add
771
+ $this->process_form_request();
772
+ break;
773
+ case 'edit':
774
+ //Process member profile edit
775
+ $this->process_form_request();
776
+ break;
777
+ case 'bulk':
778
+ //Handle the bulk operation menu
779
+ $this->bulk_operation_menu();
780
+ break;
781
+ default:
782
+ //Show the members listing page by default.
783
+ echo $this->show_all_members();
784
+ break;
785
+ }
786
+
787
+ echo '</div>'; //<!-- end of wrap -->
788
+ }
789
+
790
+ }
791
+
classes/class.swpm-membership-levels.php CHANGED
@@ -1,331 +1,335 @@
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 SwpmMembershipLevels extends WP_List_Table {
8
-
9
- function __construct() {
10
- parent::__construct(array(
11
- 'singular' => SwpmUtils::_('Membership Level'),
12
- 'plural' => SwpmUtils::_('Membership Levels'),
13
- 'ajax' => false
14
- ));
15
- }
16
-
17
- function get_columns() {
18
- return array(
19
- 'cb' => '<input type="checkbox" />'
20
- , 'id' => SwpmUtils::_('ID')
21
- , 'alias' => SwpmUtils::_('Membership Level')
22
- , 'role' => SwpmUtils::_('Role')
23
- , 'valid_for' => SwpmUtils::_('Access Valid For/Until')
24
- );
25
- }
26
-
27
- function get_sortable_columns() {
28
- return array(
29
- 'id' => array('id', true),
30
- 'alias' => array('alias', true)
31
- );
32
- }
33
-
34
- function get_bulk_actions() {
35
- $actions = array(
36
- 'bulk_delete' => SwpmUtils::_('Delete')
37
- );
38
- return $actions;
39
- }
40
-
41
- function column_default($item, $column_name) {
42
- if ($column_name == 'valid_for') {
43
- if ($item['subscription_duration_type'] == SwpmMembershipLevel::NO_EXPIRY) {
44
- return 'No Expiry';
45
- }
46
- if ($item['subscription_duration_type'] == SwpmMembershipLevel::FIXED_DATE) {
47
- $formatted_date = SwpmUtils::get_formatted_date_according_to_wp_settings($item['subscription_period']);
48
- return $formatted_date;
49
- }
50
- if ($item['subscription_duration_type'] == SwpmMembershipLevel::DAYS) {
51
- return $item['subscription_period'] . " Day(s)";
52
- }
53
- if ($item['subscription_duration_type'] == SwpmMembershipLevel::WEEKS) {
54
- return $item['subscription_period'] . " Week(s)";
55
- }
56
- if ($item['subscription_duration_type'] == SwpmMembershipLevel::MONTHS) {
57
- return $item['subscription_period'] . " Month(s)";
58
- }
59
- if ($item['subscription_duration_type'] == SwpmMembershipLevel::YEARS) {
60
- return $item['subscription_period'] . " Year(s)";
61
- }
62
- }
63
- if ($column_name == 'role') {
64
- return ucfirst($item['role']);
65
- }
66
- return stripslashes($item[$column_name]);
67
- }
68
-
69
- function column_id($item) {
70
- $delete_swpmlevel_nonce = wp_create_nonce( 'nonce_delete_swpmlevel_admin_end' );
71
-
72
- $actions = array(
73
- 'edit' => sprintf('<a href="admin.php?page=simple_wp_membership_levels&level_action=edit&id=%s">Edit</a>', $item['id']),
74
- 'delete' => sprintf('<a href="admin.php?page=simple_wp_membership_levels&level_action=delete&id=%s&delete_swpmlevel_nonce=%s" onclick="return confirm(\'Are you sure you want to delete this entry?\')">Delete</a>', $item['id'],$delete_swpmlevel_nonce),
75
- );
76
- return $item['id'] . $this->row_actions($actions);
77
- }
78
-
79
- function column_cb($item) {
80
- return sprintf(
81
- '<input type="checkbox" name="ids[]" value="%s" />', $item['id']
82
- );
83
- }
84
-
85
- function prepare_items() {
86
- global $wpdb;
87
-
88
- $this->process_bulk_action();
89
-
90
- $query = "SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id !=1 ";
91
- if (isset($_POST['s'])){
92
- $search_keyword = sanitize_text_field($_POST['s']);
93
- $search_keyword = esc_attr ($search_keyword);
94
- $query .= " AND alias LIKE '%" . $search_keyword . "%' ";
95
- }
96
-
97
- //Read and sanitize the sort inputs.
98
- $orderby = !empty($_GET["orderby"]) ? esc_sql($_GET["orderby"]) : 'id';
99
- $order = !empty($_GET["order"]) ? esc_sql($_GET["order"]) : 'DESC';
100
-
101
- $sortable_columns = $this->get_sortable_columns();
102
- $orderby = SwpmUtils::sanitize_value_by_array($orderby, $sortable_columns);
103
- $order = SwpmUtils::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1'));
104
-
105
- if (!empty($orderby) && !empty($order)) {
106
- $query.=' ORDER BY ' . $orderby . ' ' . $order;
107
- }
108
-
109
- $totalitems = $wpdb->query($query); //Return the total number of affected rows
110
- $perpage = 50;
111
- $paged = !empty($_GET["paged"]) ? sanitize_text_field($_GET["paged"]) : '';
112
- if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
113
- $paged = 1;
114
- }
115
- $totalpages = ceil($totalitems / $perpage);
116
- if (!empty($paged) && !empty($perpage)) {
117
- $offset = ($paged - 1) * $perpage;
118
- $query.=' LIMIT ' . (int) $offset . ',' . (int) $perpage;
119
- }
120
- $this->set_pagination_args(array(
121
- "total_items" => $totalitems,
122
- "total_pages" => $totalpages,
123
- "per_page" => $perpage,
124
- ));
125
-
126
- $columns = $this->get_columns();
127
- $hidden = array();
128
- $sortable = $this->get_sortable_columns();
129
-
130
- $this->_column_headers = array($columns, $hidden, $sortable);
131
- $this->items = $wpdb->get_results($query, ARRAY_A);
132
- }
133
-
134
- function no_items() {
135
- SwpmUtils::e('No membership levels found.');
136
- }
137
-
138
- function process_form_request() {
139
- if (isset($_REQUEST['id'])) {
140
- //This is a level edit action
141
- $record_id = sanitize_text_field($_REQUEST['id']);
142
- if(!is_numeric($record_id)){
143
- wp_die('Error! ID must be numeric.');
144
- }
145
- return $this->edit($record_id);
146
- }
147
-
148
- //Level add action
149
- return $this->add();
150
- }
151
-
152
- function add() {
153
- //Level add interface
154
- include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_add_level.php');
155
- return false;
156
- }
157
-
158
- function edit($id) {
159
- global $wpdb;
160
- $query = $wpdb->prepare("SELECT * FROM {$wpdb->prefix}swpm_membership_tbl WHERE id = %d", absint($id));
161
- $membership = $wpdb->get_row($query, ARRAY_A);
162
- extract($membership, EXTR_SKIP);
163
- $email_activation = get_option('swpm_email_activation_lvl_'.$id);
164
- include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_edit_level.php');
165
- return false;
166
- }
167
-
168
- function process_bulk_action() {
169
- //Detect when a bulk action is being triggered...
170
- global $wpdb;
171
-
172
- if ('bulk_delete' === $this->current_action()) {
173
- $records_to_delete = array_map( 'sanitize_text_field', $_REQUEST['ids'] );
174
- if (empty($records_to_delete)) {
175
- echo '<div id="message" class="updated fade"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
176
- return;
177
- }
178
- foreach ($records_to_delete as $record_id) {
179
- if( !is_numeric( $record_id )){
180
- wp_die('Error! ID must be numeric.');
181
- }
182
- $query = $wpdb->prepare("DELETE FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $record_id);
183
- $wpdb->query($query);
184
- }
185
- echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
186
- }
187
- }
188
-
189
- function delete_level() {
190
- global $wpdb;
191
- if (isset($_REQUEST['id'])) {
192
-
193
- //Check we are on the admin end and user has management permission
194
- SwpmMiscUtils::check_user_permission_and_is_admin('membership level delete');
195
-
196
- //Check nonce
197
- if ( !isset($_REQUEST['delete_swpmlevel_nonce']) || !wp_verify_nonce($_REQUEST['delete_swpmlevel_nonce'], 'nonce_delete_swpmlevel_admin_end' )){
198
- //Nonce check failed.
199
- wp_die(SwpmUtils::_("Error! Nonce verification failed for membership level delete from admin end."));
200
- }
201
-
202
- $id = sanitize_text_field($_REQUEST['id']);
203
- $id = absint($id);
204
- $query = $wpdb->prepare("DELETE FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $id);
205
- $wpdb->query($query);
206
- echo '<div id="message" class="updated fade"><p>Selected record deleted successfully!</p></div>';
207
- }
208
- }
209
-
210
- function show_levels() {
211
- ?>
212
- <div class="swpm-margin-top-10"></div>
213
- <form method="post">
214
- <p class="search-box">
215
- <label class="screen-reader-text" for="search_id-search-input">
216
- search:</label>
217
- <input id="search_id-search-input" type="text" name="s" value="" />
218
- <input id="search-submit" class="button" type="submit" name="" value="<?php echo SwpmUtils::_('Search')?>" />
219
- </p>
220
- </form>
221
-
222
- <?php $this->prepare_items(); ?>
223
- <form method="post">
224
- <?php $this->display(); ?>
225
- </form>
226
-
227
- <p>
228
- <a href="admin.php?page=simple_wp_membership_levels&level_action=add" class="button-primary"><?php SwpmUtils::e('Add New') ?></a>
229
- </p>
230
- <?php
231
- }
232
-
233
- function manage() {
234
- include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_membership_manage.php');
235
- }
236
-
237
- function manage_categroy() {
238
- $selected = "category_list";
239
- include_once('class.swpm-category-list.php');
240
- $category_list = new SwpmCategoryList();
241
- include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_category_list.php');
242
- }
243
-
244
- function manage_post() {
245
- $selected = "post_list";
246
- include_once('class.swpm-post-list.php');
247
- $post_list = new SwpmPostList();
248
- include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_post_list.php');
249
- }
250
-
251
- function handle_main_membership_level_admin_menu(){
252
- do_action( 'swpm_membership_level_menu_start' );
253
-
254
- //Check current_user_can() or die.
255
- SwpmMiscUtils::check_user_permission_and_is_admin('Main Membership Level Admin Menu');
256
-
257
- $level_action = filter_input(INPUT_GET, 'level_action');
258
- $action = $level_action;
259
- $selected= $action;
260
-
261
- ?>
262
- <div class="wrap swpm-admin-menu-wrap"><!-- start wrap -->
263
-
264
- <!-- page title -->
265
- <h1><?php echo SwpmUtils::_('Simple WP Membership::Membership Levels') ?></h1>
266
-
267
- <!-- start nav menu tabs -->
268
- <h2 class="nav-tab-wrapper">
269
- <a class="nav-tab <?php echo ($selected == "") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels"><?php echo SwpmUtils::_('Membership Levels') ?></a>
270
- <a class="nav-tab <?php echo ($selected == "add") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=add"><?php echo SwpmUtils::_('Add Level') ?></a>
271
- <a class="nav-tab <?php echo ($selected == "manage") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=manage"><?php echo SwpmUtils::_('Manage Content Protection') ?></a>
272
- <a class="nav-tab <?php echo ($selected == "category_list") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=category_list"><?php echo SwpmUtils::_('Category Protection') ?></a>
273
- <a class="nav-tab <?php echo ($selected == "post_list") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=post_list"><?php echo SwpmUtils::_('Post and Page Protection') ?></a>
274
- <?php
275
-
276
- //Trigger hooks that allows an extension to add extra nav tabs in the membership levels menu.
277
- do_action ('swpm_membership_levels_menu_nav_tabs', $selected);
278
-
279
- $menu_tabs = apply_filters('swpm_membership_levels_additional_menu_tabs_array', array());
280
- foreach ($menu_tabs as $level_action => $title){
281
- ?>
282
- <a class="nav-tab <?php echo ($selected == $member_action) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=<?php echo $level_action; ?>" ><?php SwpmUtils::e($title); ?></a>
283
- <?php
284
- }
285
-
286
- ?>
287
- </h2>
288
- <!-- end nav menu tabs -->
289
-
290
- <?php
291
-
292
- do_action( 'swpm_membership_level_menu_after_nav_tabs' );
293
-
294
- //Trigger hook so anyone listening for this particular action can handle the output.
295
- do_action( 'swpm_membership_level_menu_body_' . $action );
296
-
297
- //Allows an addon to completely override the body section of the membership level admin menu for a given action.
298
- $output = apply_filters('swpm_membership_level_menu_body_override', '', $action);
299
- if (!empty($output)) {
300
- //An addon has overriden the body of this page for the given action. So no need to do anything in core.
301
- echo $output;
302
- echo '</div>';//<!-- end of wrap -->
303
- return;
304
- }
305
-
306
- //Switch case for the various different actions handled by the core plugin.
307
- switch ($action) {
308
- case 'add':
309
- case 'edit':
310
- $this->process_form_request();
311
- break;
312
- case 'manage':
313
- $this->manage();
314
- break;
315
- case 'category_list':
316
- $this->manage_categroy();
317
- break;
318
- case 'post_list':
319
- $this->manage_post();
320
- break;
321
- case 'delete':
322
- $this->delete_level();
323
- default:
324
- $this->show_levels();
325
- break;
326
- }
327
-
328
- echo '</div>';//<!-- end of wrap -->
329
- }
330
-
331
- }
 
 
 
 
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 SwpmMembershipLevels extends WP_List_Table {
8
+
9
+ function __construct() {
10
+ parent::__construct(array(
11
+ 'singular' => SwpmUtils::_('Membership Level'),
12
+ 'plural' => SwpmUtils::_('Membership Levels'),
13
+ 'ajax' => false
14
+ ));
15
+ }
16
+
17
+ function get_columns() {
18
+ return array(
19
+ 'cb' => '<input type="checkbox" />'
20
+ , 'id' => SwpmUtils::_('ID')
21
+ , 'alias' => SwpmUtils::_('Membership Level')
22
+ , 'role' => SwpmUtils::_('Role')
23
+ , 'valid_for' => SwpmUtils::_('Access Valid For/Until')
24
+ );
25
+ }
26
+
27
+ function get_sortable_columns() {
28
+ return array(
29
+ 'id' => array('id', true),
30
+ 'alias' => array('alias', true)
31
+ );
32
+ }
33
+
34
+ function get_bulk_actions() {
35
+ $actions = array(
36
+ 'bulk_delete' => SwpmUtils::_('Delete')
37
+ );
38
+ return $actions;
39
+ }
40
+
41
+ function column_default($item, $column_name) {
42
+ if ($column_name == 'valid_for') {
43
+ if ($item['subscription_duration_type'] == SwpmMembershipLevel::NO_EXPIRY) {
44
+ return 'No Expiry';
45
+ }
46
+ if ($item['subscription_duration_type'] == SwpmMembershipLevel::FIXED_DATE) {
47
+ $formatted_date = SwpmUtils::get_formatted_date_according_to_wp_settings($item['subscription_period']);
48
+ return $formatted_date;
49
+ }
50
+ if ($item['subscription_duration_type'] == SwpmMembershipLevel::DAYS) {
51
+ return $item['subscription_period'] . " Day(s)";
52
+ }
53
+ if ($item['subscription_duration_type'] == SwpmMembershipLevel::WEEKS) {
54
+ return $item['subscription_period'] . " Week(s)";
55
+ }
56
+ if ($item['subscription_duration_type'] == SwpmMembershipLevel::MONTHS) {
57
+ return $item['subscription_period'] . " Month(s)";
58
+ }
59
+ if ($item['subscription_duration_type'] == SwpmMembershipLevel::YEARS) {
60
+ return $item['subscription_period'] . " Year(s)";
61
+ }
62
+ }
63
+ if ($column_name == 'role') {
64
+ return ucfirst($item['role']);
65
+ }
66
+ return stripslashes($item[$column_name]);
67
+ }
68
+
69
+ function column_id($item) {
70
+ $delete_swpmlevel_nonce = wp_create_nonce( 'nonce_delete_swpmlevel_admin_end' );
71
+
72
+ $actions = array(
73
+ 'edit' => sprintf('<a href="admin.php?page=simple_wp_membership_levels&level_action=edit&id=%s">Edit</a>', $item['id']),
74
+ 'delete' => sprintf('<a href="admin.php?page=simple_wp_membership_levels&level_action=delete&id=%s&delete_swpmlevel_nonce=%s" onclick="return confirm(\'Are you sure you want to delete this entry?\')">Delete</a>', $item['id'],$delete_swpmlevel_nonce),
75
+ );
76
+ return $item['id'] . $this->row_actions($actions);
77
+ }
78
+
79
+ function column_cb($item) {
80
+ return sprintf(
81
+ '<input type="checkbox" name="ids[]" value="%s" />', $item['id']
82
+ );
83
+ }
84
+
85
+ function prepare_items() {
86
+ global $wpdb;
87
+
88
+ $this->process_bulk_action();
89
+
90
+ $query = "SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id !=1 ";
91
+ if (isset($_POST['s'])){
92
+ $search_keyword = sanitize_text_field($_POST['s']);
93
+ $search_keyword = esc_attr ($search_keyword);
94
+ $query .= " AND alias LIKE '%" . $search_keyword . "%' ";
95
+ }
96
+
97
+ //Read and sanitize the sort inputs.
98
+ $orderby = !empty($_GET["orderby"]) ? esc_sql($_GET["orderby"]) : 'id';
99
+ $order = !empty($_GET["order"]) ? esc_sql($_GET["order"]) : 'DESC';
100
+
101
+ $sortable_columns = $this->get_sortable_columns();
102
+ $orderby = SwpmUtils::sanitize_value_by_array($orderby, $sortable_columns);
103
+ $order = SwpmUtils::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1'));
104
+
105
+ if (!empty($orderby) && !empty($order)) {
106
+ $query.=' ORDER BY ' . $orderby . ' ' . $order;
107
+ }
108
+
109
+ $totalitems = $wpdb->query($query); //Return the total number of affected rows
110
+ $perpage = 50;
111
+ $paged = !empty($_GET["paged"]) ? sanitize_text_field($_GET["paged"]) : '';
112
+ if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
113
+ $paged = 1;
114
+ }
115
+ $totalpages = ceil($totalitems / $perpage);
116
+ if (!empty($paged) && !empty($perpage)) {
117
+ $offset = ($paged - 1) * $perpage;
118
+ $query.=' LIMIT ' . (int) $offset . ',' . (int) $perpage;
119
+ }
120
+ $this->set_pagination_args(array(
121
+ "total_items" => $totalitems,
122
+ "total_pages" => $totalpages,
123
+ "per_page" => $perpage,
124
+ ));
125
+
126
+ $columns = $this->get_columns();
127
+ $hidden = array();
128
+ $sortable = $this->get_sortable_columns();
129
+
130
+ $this->_column_headers = array($columns, $hidden, $sortable);
131
+ $this->items = $wpdb->get_results($query, ARRAY_A);
132
+ }
133
+
134
+ function no_items() {
135
+ SwpmUtils::e('No membership levels found.');
136
+ }
137
+
138
+ function process_form_request() {
139
+ if (isset($_REQUEST['id'])) {
140
+ //This is a level edit action
141
+ $record_id = sanitize_text_field($_REQUEST['id']);
142
+ if(!is_numeric($record_id)){
143
+ wp_die('Error! ID must be numeric.');
144
+ }
145
+ return $this->edit($record_id);
146
+ }
147
+
148
+ //Level add action
149
+ return $this->add();
150
+ }
151
+
152
+ function add() {
153
+ //Level add interface
154
+ include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_add_level.php');
155
+ return false;
156
+ }
157
+
158
+ function edit($id) {
159
+ global $wpdb;
160
+ $query = $wpdb->prepare("SELECT * FROM {$wpdb->prefix}swpm_membership_tbl WHERE id = %d", absint($id));
161
+ $membership = $wpdb->get_row($query, ARRAY_A);
162
+ extract($membership, EXTR_SKIP);
163
+ $email_activation = get_option('swpm_email_activation_lvl_'.$id);
164
+ include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_edit_level.php');
165
+ return false;
166
+ }
167
+
168
+ function process_bulk_action() {
169
+ //Detect when a bulk action is being triggered...
170
+ global $wpdb;
171
+
172
+ if ('bulk_delete' === $this->current_action()) {
173
+ $records_to_delete = array_map( 'sanitize_text_field', $_REQUEST['ids'] );
174
+ if (empty($records_to_delete)) {
175
+ echo '<div id="message" class="updated fade"><p>Error! You need to select multiple records to perform a bulk action!</p></div>';
176
+ return;
177
+ }
178
+
179
+ $action = 'bulk-' . $this->_args['plural'];
180
+ check_admin_referer( $action );
181
+
182
+ foreach ($records_to_delete as $record_id) {
183
+ if( !is_numeric( $record_id )){
184
+ wp_die('Error! ID must be numeric.');
185
+ }
186
+ $query = $wpdb->prepare("DELETE FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $record_id);
187
+ $wpdb->query($query);
188
+ }
189
+ echo '<div id="message" class="updated fade"><p>Selected records deleted successfully!</p></div>';
190
+ }
191
+ }
192
+
193
+ function delete_level() {
194
+ global $wpdb;
195
+ if (isset($_REQUEST['id'])) {
196
+
197
+ //Check we are on the admin end and user has management permission
198
+ SwpmMiscUtils::check_user_permission_and_is_admin('membership level delete');
199
+
200
+ //Check nonce
201
+ if ( !isset($_REQUEST['delete_swpmlevel_nonce']) || !wp_verify_nonce($_REQUEST['delete_swpmlevel_nonce'], 'nonce_delete_swpmlevel_admin_end' )){
202
+ //Nonce check failed.
203
+ wp_die(SwpmUtils::_("Error! Nonce verification failed for membership level delete from admin end."));
204
+ }
205
+
206
+ $id = sanitize_text_field($_REQUEST['id']);
207
+ $id = absint($id);
208
+ $query = $wpdb->prepare("DELETE FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $id);
209
+ $wpdb->query($query);
210
+ echo '<div id="message" class="updated fade"><p>Selected record deleted successfully!</p></div>';
211
+ }
212
+ }
213
+
214
+ function show_levels() {
215
+ ?>
216
+ <div class="swpm-margin-top-10"></div>
217
+ <form method="post">
218
+ <p class="search-box">
219
+ <label class="screen-reader-text" for="search_id-search-input">
220
+ search:</label>
221
+ <input id="search_id-search-input" type="text" name="s" value="" />
222
+ <input id="search-submit" class="button" type="submit" name="" value="<?php echo SwpmUtils::_('Search')?>" />
223
+ </p>
224
+ </form>
225
+
226
+ <?php $this->prepare_items(); ?>
227
+ <form method="post">
228
+ <?php $this->display(); ?>
229
+ </form>
230
+
231
+ <p>
232
+ <a href="admin.php?page=simple_wp_membership_levels&level_action=add" class="button-primary"><?php SwpmUtils::e('Add New') ?></a>
233
+ </p>
234
+ <?php
235
+ }
236
+
237
+ function manage() {
238
+ include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_membership_manage.php');
239
+ }
240
+
241
+ function manage_categroy() {
242
+ $selected = "category_list";
243
+ include_once('class.swpm-category-list.php');
244
+ $category_list = new SwpmCategoryList();
245
+ include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_category_list.php');
246
+ }
247
+
248
+ function manage_post() {
249
+ $selected = "post_list";
250
+ include_once('class.swpm-post-list.php');
251
+ $post_list = new SwpmPostList();
252
+ include_once(SIMPLE_WP_MEMBERSHIP_PATH . 'views/admin_post_list.php');
253
+ }
254
+
255
+ function handle_main_membership_level_admin_menu(){
256
+ do_action( 'swpm_membership_level_menu_start' );
257
+
258
+ //Check current_user_can() or die.
259
+ SwpmMiscUtils::check_user_permission_and_is_admin('Main Membership Level Admin Menu');
260
+
261
+ $level_action = filter_input(INPUT_GET, 'level_action');
262
+ $action = $level_action;
263
+ $selected= $action;
264
+
265
+ ?>
266
+ <div class="wrap swpm-admin-menu-wrap"><!-- start wrap -->
267
+
268
+ <!-- page title -->
269
+ <h1><?php echo SwpmUtils::_('Simple WP Membership::Membership Levels') ?></h1>
270
+
271
+ <!-- start nav menu tabs -->
272
+ <h2 class="nav-tab-wrapper">
273
+ <a class="nav-tab <?php echo ($selected == "") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels"><?php echo SwpmUtils::_('Membership Levels') ?></a>
274
+ <a class="nav-tab <?php echo ($selected == "add") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=add"><?php echo SwpmUtils::_('Add Level') ?></a>
275
+ <a class="nav-tab <?php echo ($selected == "manage") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=manage"><?php echo SwpmUtils::_('Manage Content Protection') ?></a>
276
+ <a class="nav-tab <?php echo ($selected == "category_list") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=category_list"><?php echo SwpmUtils::_('Category Protection') ?></a>
277
+ <a class="nav-tab <?php echo ($selected == "post_list") ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=post_list"><?php echo SwpmUtils::_('Post and Page Protection') ?></a>
278
+ <?php
279
+
280
+ //Trigger hooks that allows an extension to add extra nav tabs in the membership levels menu.
281
+ do_action ('swpm_membership_levels_menu_nav_tabs', $selected);
282
+
283
+ $menu_tabs = apply_filters('swpm_membership_levels_additional_menu_tabs_array', array());
284
+ foreach ($menu_tabs as $level_action => $title){
285
+ ?>
286
+ <a class="nav-tab <?php echo ($selected == $member_action) ? 'nav-tab-active' : ''; ?>" href="admin.php?page=simple_wp_membership_levels&level_action=<?php echo $level_action; ?>" ><?php SwpmUtils::e($title); ?></a>
287
+ <?php
288
+ }
289
+
290
+ ?>
291
+ </h2>
292
+ <!-- end nav menu tabs -->
293
+
294
+ <?php
295
+
296
+ do_action( 'swpm_membership_level_menu_after_nav_tabs' );
297
+
298
+ //Trigger hook so anyone listening for this particular action can handle the output.
299
+ do_action( 'swpm_membership_level_menu_body_' . $action );
300
+
301
+ //Allows an addon to completely override the body section of the membership level admin menu for a given action.
302
+ $output = apply_filters('swpm_membership_level_menu_body_override', '', $action);
303
+ if (!empty($output)) {
304
+ //An addon has overriden the body of this page for the given action. So no need to do anything in core.
305
+ echo $output;
306
+ echo '</div>';//<!-- end of wrap -->
307
+ return;
308
+ }
309
+
310
+ //Switch case for the various different actions handled by the core plugin.
311
+ switch ($action) {
312
+ case 'add':
313
+ case 'edit':
314
+ $this->process_form_request();
315
+ break;
316
+ case 'manage':
317
+ $this->manage();
318
+ break;
319
+ case 'category_list':
320
+ $this->manage_categroy();
321
+ break;
322
+ case 'post_list':
323
+ $this->manage_post();
324
+ break;
325
+ case 'delete':
326
+ $this->delete_level();
327
+ default:
328
+ $this->show_levels();
329
+ break;
330
+ }
331
+
332
+ echo '</div>';//<!-- end of wrap -->
333
+ }
334
+
335
+ }
classes/class.swpm-settings.php CHANGED
@@ -16,6 +16,23 @@ class SwpmSettings {
16
  //It sets up the various tabs and the fields for the settings admin page.
17
 
18
  if ( is_admin() ) { // for frontend just load settings but dont try to render settings page.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  //Read the value of tab query arg.
20
  $tab = isset( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 1;
21
  $this->current_tab = empty( $tab ) ? 1 : $tab;
@@ -210,12 +227,39 @@ class SwpmSettings {
210
 
211
  add_settings_section( 'debug-settings', SwpmUtils::_( 'Test & Debug Settings' ), array( &$this, 'testndebug_settings_callback' ), 'simple_wp_membership_settings' );
212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  $debug_field_help_text = SwpmUtils::_( 'Check this option to enable debug logging.' );
214
  $debug_field_help_text .= SwpmUtils::_( ' This can be useful when troubleshooting an issue. Turn it off and reset the log files after the troubleshooting is complete.' );
215
  $debug_field_help_text .= '<br />';
216
- $debug_field_help_text .= '<br />- ' . SwpmUtils::_( 'View general debug log file by clicking ' ) . '<a href="' . SIMPLE_WP_MEMBERSHIP_URL . '/log.txt" target="_blank">' . SwpmUtils::_( 'here' ) . '</a>.';
217
- $debug_field_help_text .= '<br />- ' . SwpmUtils::_( 'View login related debug log file by clicking ' ) . '<a href="' . SIMPLE_WP_MEMBERSHIP_URL . '/log-auth.txt" target="_blank">' . SwpmUtils::_( 'here' ) . '</a>.';
218
- $debug_field_help_text .= '<br />- ' . SwpmUtils::_( 'Reset debug log files by clicking ' ) . '<a href="admin.php?page=simple_wp_membership_settings&swmp_reset_log=1" target="_blank">' . SwpmUtils::_( 'here' ) . '</a>.';
219
  add_settings_field(
220
  'enable-debug',
221
  SwpmUtils::_( 'Enable Debug' ),
@@ -932,7 +976,8 @@ class SwpmSettings {
932
 
933
  public function swpm_general_post_submit_check_callback() {
934
  //Log file reset handler
935
- if ( isset( $_REQUEST['swmp_reset_log'] ) ) {
 
936
  if ( SwpmLog::reset_swmp_log_files() ) {
937
  echo '<div id="message" class="updated fade"><p>Debug log files have been reset!</p></div>';
938
  } else {
16
  //It sets up the various tabs and the fields for the settings admin page.
17
 
18
  if ( is_admin() ) { // for frontend just load settings but dont try to render settings page.
19
+ //Handle view log request
20
+ $view_log_type = filter_input( INPUT_GET, 'swpm_view_log', FILTER_SANITIZE_STRING );
21
+ if ( ! empty( $view_log_type ) ) {
22
+ switch ( $view_log_type ) {
23
+ case 'd':
24
+ check_admin_referer( 'swpm_view_debug_log' );
25
+ break;
26
+ case 'a':
27
+ check_admin_referer( 'swpm_view_auth_log' );
28
+ break;
29
+ default:
30
+ break;
31
+ }
32
+
33
+ SwpmLog::output_log( $view_log_type );
34
+ }
35
+
36
  //Read the value of tab query arg.
37
  $tab = isset( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 1;
38
  $this->current_tab = empty( $tab ) ? 1 : $tab;
227
 
228
  add_settings_section( 'debug-settings', SwpmUtils::_( 'Test & Debug Settings' ), array( &$this, 'testndebug_settings_callback' ), 'simple_wp_membership_settings' );
229
 
230
+ $debug_log_url = add_query_arg(
231
+ array(
232
+ 'page' => 'simple_wp_membership_settings',
233
+ 'swpm_view_log' => 'd',
234
+ '_wpnonce' => wp_create_nonce( 'swpm_view_debug_log' ),
235
+ ),
236
+ admin_url( 'admin.php' )
237
+ );
238
+
239
+ $auth_log_url = add_query_arg(
240
+ array(
241
+ 'page' => 'simple_wp_membership_settings',
242
+ 'swpm_view_log' => 'a',
243
+ '_wpnonce' => wp_create_nonce( 'swpm_view_auth_log' ),
244
+ ),
245
+ admin_url( 'admin.php' )
246
+ );
247
+
248
+ $reset_log_url = add_query_arg(
249
+ array(
250
+ 'page' => 'simple_wp_membership_settings',
251
+ 'swpm_reset_log' => '1',
252
+ '_wpnonce' => wp_create_nonce( 'swpm_reset_log' ),
253
+ ),
254
+ admin_url( 'admin.php' )
255
+ );
256
+
257
  $debug_field_help_text = SwpmUtils::_( 'Check this option to enable debug logging.' );
258
  $debug_field_help_text .= SwpmUtils::_( ' This can be useful when troubleshooting an issue. Turn it off and reset the log files after the troubleshooting is complete.' );
259
  $debug_field_help_text .= '<br />';
260
+ $debug_field_help_text .= '<br />- ' . SwpmUtils::_( 'View general debug log file by clicking ' ) . '<a href="' . $debug_log_url . '" target="_blank">' . SwpmUtils::_( 'here' ) . '</a>.';
261
+ $debug_field_help_text .= '<br />- ' . SwpmUtils::_( 'View login related debug log file by clicking ' ) . '<a href="' . $auth_log_url . '" target="_blank">' . SwpmUtils::_( 'here' ) . '</a>.';
262
+ $debug_field_help_text .= '<br />- ' . SwpmUtils::_( 'Reset debug log files by clicking ' ) . '<a href="' . $reset_log_url . '" target="_blank">' . SwpmUtils::_( 'here' ) . '</a>.';
263
  add_settings_field(
264
  'enable-debug',
265
  SwpmUtils::_( 'Enable Debug' ),
976
 
977
  public function swpm_general_post_submit_check_callback() {
978
  //Log file reset handler
979
+ if ( isset( $_REQUEST['swpm_reset_log'] ) ) {
980
+ check_admin_referer( 'swpm_reset_log' );
981
  if ( SwpmLog::reset_swmp_log_files() ) {
982
  echo '<div id="message" class="updated fade"><p>Debug log files have been reset!</p></div>';
983
  } else {
classes/class.swpm-utils-member.php CHANGED
@@ -257,12 +257,47 @@ class SwpmMemberUtils {
257
  }
258
  }
259
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
  public static function wp_user_has_admin_role( $wp_user_id ) {
261
  $caps = get_user_meta( $wp_user_id, 'wp_capabilities', true );
262
  if ( is_array( $caps ) && in_array( 'administrator', array_keys( (array) $caps ) ) ) {
263
- //This wp user has "administrator" role.
264
- return true;
265
  }
 
 
 
 
 
 
 
 
 
 
 
266
  return false;
267
  }
268
 
257
  }
258
  }
259
 
260
+ /**
261
+ * Get wp user roles by user ID.
262
+ *
263
+ * @param int $id
264
+ * @return array
265
+ */
266
+ public static function get_wp_user_roles_by_id( $wp_user_id )
267
+ {
268
+ $user = new WP_User( $wp_user_id );
269
+ if ( empty ( $user->roles ) or ! is_array( $user->roles ) ){
270
+ return array ();
271
+ }
272
+ $wp_roles = new WP_Roles;
273
+ $names = $wp_roles->get_names();
274
+ $out = array ();
275
+ foreach ( $user->roles as $role ) {
276
+ if ( isset ( $names[ $role ] ) ){
277
+ $out[ $role ] = $names[ $role ];
278
+ }
279
+ }
280
+
281
+ return $out;
282
+ }
283
+
284
  public static function wp_user_has_admin_role( $wp_user_id ) {
285
  $caps = get_user_meta( $wp_user_id, 'wp_capabilities', true );
286
  if ( is_array( $caps ) && in_array( 'administrator', array_keys( (array) $caps ) ) ) {
287
+ //This wp user has "administrator" role.
288
+ return true;
289
  }
290
+ //Check if $caps was empty (It can happen on sites with customized roles and capbilities). If yes, then perform an additional role check.
291
+ if ( empty ( $caps ) ){
292
+ //Try to retrieve roles from the user object.
293
+ SwpmLog::log_simple_debug( 'Empty caps. Calling get_wp_user_roles_by_id() to retrieve role.', true );
294
+ $roles = self::get_wp_user_roles_by_id($wp_user_id);
295
+ if ( is_array( $roles ) && in_array( 'administrator', array_keys( (array) $roles ) ) ) {
296
+ //This wp user has "administrator" role.
297
+ return true;
298
+ }
299
+ }
300
+
301
  return false;
302
  }
303
 
classes/class.swpm-utils-misc.php CHANGED
@@ -449,6 +449,9 @@ class SwpmMiscUtils {
449
  $formatted_content = prepend_attachment( $formatted_content );
450
  $formatted_content = capital_P_dangit( $formatted_content );
451
  $formatted_content = do_shortcode( $formatted_content );
 
 
 
452
 
453
  return $formatted_content;
454
  }
449
  $formatted_content = prepend_attachment( $formatted_content );
450
  $formatted_content = capital_P_dangit( $formatted_content );
451
  $formatted_content = do_shortcode( $formatted_content );
452
+ $formatted_content = do_blocks( $formatted_content );
453
+
454
+ $formatted_content = apply_filters('swpm_format_raw_content_for_front_end_display', $formatted_content);
455
 
456
  return $formatted_content;
457
  }
ipn/swpm_handle_subsc_ipn.php CHANGED
@@ -1,371 +1,371 @@
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
- SwpmMiscUtils::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'] = SwpmUtils::get_current_date_in_wp_zone();
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
- if ( empty( $email_body ) ) {
179
- swpm_debug_log_subsc( 'Notice: Member signup (prompt to complete registration) email body has been set empty via the filter hook. No email will be sent.', true );
180
- } else {
181
- SwpmMiscUtils::mail( $email, $subject, $email_body, $headers );
182
- swpm_debug_log_subsc( 'Member signup (prompt to complete registration) email successfully sent to: ' . $email, true );
183
- }
184
- }
185
-
186
- }
187
-
188
- /*
189
- * All in one function that can handle notification for refund, cancellation, end of term
190
- */
191
-
192
- function swpm_handle_subsc_cancel_stand_alone( $ipn_data, $refund = false ) {
193
-
194
- global $wpdb;
195
-
196
- $swpm_id = '';
197
- if ( isset( $ipn_data['custom'] ) ){
198
- $customvariables = SwpmTransactions::parse_custom_var( $ipn_data['custom'] );
199
- $swpm_id = $customvariables['swpm_id'];
200
- }
201
-
202
- swpm_debug_log_subsc( 'Refund/Cancellation check - lets see if a member account needs to be deactivated.', true );
203
- // swpm_debug_log_subsc("Parent txn id: " . $ipn_data['parent_txn_id'] . ", Subscr ID: " . $ipn_data['subscr_id'] . ", SWPM ID: " . $swpm_id, true);.
204
-
205
- if ( ! empty( $swpm_id ) ) {
206
- // This IPN has the SWPM ID. Retrieve the member record using member ID.
207
- swpm_debug_log_subsc( 'Member ID is present. Retrieving member account from the database. Member ID: ' . $swpm_id, true );
208
- $resultset = SwpmMemberUtils::get_user_by_id( $swpm_id );
209
- } elseif ( isset( $ipn_data['subscr_id'] ) && ! empty( $ipn_data['subscr_id'] ) ) {
210
- // This IPN has the subscriber ID. Retrieve the member record using subscr_id.
211
- $subscr_id = $ipn_data['subscr_id'];
212
- swpm_debug_log_subsc( 'Subscriber ID is present. Retrieving member account from the database. Subscr_id: ' . $subscr_id, true );
213
- $resultset = $wpdb->get_row(
214
- $wpdb->prepare(
215
- "SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id LIKE %s",
216
- '%' . $wpdb->esc_like( $subscr_id ) . '%'
217
- ),
218
- OBJECT
219
- );
220
- } else {
221
- // Refund for a one time transaction. Use the parent transaction ID to retrieve the profile.
222
- $subscr_id = $ipn_data['parent_txn_id'];
223
- $resultset = $wpdb->get_row(
224
- $wpdb->prepare(
225
- "SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id LIKE %s",
226
- '%' . $wpdb->esc_like( $subscr_id ) . '%'
227
- ),
228
- OBJECT
229
- );
230
- }
231
-
232
- if ( $resultset ) {
233
- // We have found a member profile for this notification.
234
-
235
- $member_id = $resultset->member_id;
236
-
237
- // First, check if this is a refund notification.
238
- if ( $refund ) {
239
- // This is a refund (not just a subscription cancellation or end). So deactivate the account regardless and bail.
240
- SwpmMemberUtils::update_account_state( $member_id, 'inactive' ); // Set the account status to inactive.
241
- swpm_debug_log_subsc( 'Subscription refund notification received! Member account deactivated.', true );
242
- return;
243
- }
244
-
245
- // This is a cancellation or end of subscription term (no refund).
246
- // Lets retrieve the membership level and details.
247
- $level_id = $resultset->membership_level;
248
- swpm_debug_log_subsc( 'Membership level ID of the member is: ' . $level_id, true );
249
- $level_row = SwpmUtils::get_membership_level_row_by_id( $level_id );
250
- $subs_duration_type = $level_row->subscription_duration_type;
251
-
252
- swpm_debug_log_subsc( 'Subscription duration type: ' . $subs_duration_type, true );
253
-
254
- if ( SwpmMembershipLevel::NO_EXPIRY == $subs_duration_type ) {
255
- // This is a level with "no expiry" or "until cancelled" duration.
256
- swpm_debug_log_subsc( 'This is a level with "no expiry" or "until cancelled" duration', true );
257
-
258
- // Deactivate this account as the membership level is "no expiry" or "until cancelled".
259
- $account_state = 'inactive';
260
- SwpmMemberUtils::update_account_state( $member_id, $account_state );
261
- swpm_debug_log_subsc( 'Subscription cancellation or end of term received! Member account deactivated. Member ID: ' . $member_id, true );
262
- } elseif ( SwpmMembershipLevel::FIXED_DATE == $subs_duration_type ) {
263
- // This is a level with a "fixed expiry date" duration.
264
- swpm_debug_log_subsc( 'This is a level with a "fixed expiry date" duration.', true );
265
- swpm_debug_log_subsc( 'Nothing to do here. The account will expire on the fixed set date.', true );
266
- } else {
267
- // This is a level with "duration" type expiry (example: 30 days, 1 year etc). subscription_period has the duration/period.
268
- $subs_period = $level_row->subscription_period;
269
- $subs_period_unit = SwpmMembershipLevel::get_level_duration_type_string( $level_row->subscription_duration_type );
270
-
271
- swpm_debug_log_subsc( 'This is a level with "duration" type expiry. Duration period: ' . $subs_period . ', Unit: ' . $subs_period_unit, true );
272
- swpm_debug_log_subsc( 'Nothing to do here. The account will expire after the duration time is over.', true );
273
-
274
- // TODO Later as an improvement. If you wanted to segment the members who have unsubscribed, you can set the account status to "unsubscribed" here.
275
- // Make sure the cronjob to do expiry check and deactivate the member accounts treat this status as if it is "active".
276
- }
277
-
278
- $ipn_data['member_id'] = $member_id;
279
- do_action( 'swpm_subscription_payment_cancelled', $ipn_data ); // Hook for recurring payment received.
280
- } else {
281
- swpm_debug_log_subsc( 'No associated active member record found for this notification.', false );
282
- return;
283
- }
284
- }
285
-
286
- function swpm_update_member_subscription_start_date_if_applicable( $ipn_data ) {
287
- global $wpdb;
288
- $email = isset( $ipn_data['payer_email'] ) ? $ipn_data['payer_email'] : '';
289
- $subscr_id = $ipn_data['subscr_id'];
290
- $account_state = SwpmSettings::get_instance()->get_value( 'default-account-status', 'active' );
291
- $account_state = apply_filters( 'swpm_account_status_for_subscription_start_date_update', $account_state );
292
-
293
- swpm_debug_log_subsc( 'Updating subscription start date if applicable for this subscription payment. Subscriber ID: ' . $subscr_id . ', Email: ' . $email . ', Account status: ' . $account_state, true );
294
-
295
- // We can also query using the email address or SWPM ID (if present in custom var).
296
-
297
- //Try to find the profile with the given subscr_id. It will exact match subscr_id or match subscr_id|123
298
- $query_db = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE subscr_id = %s OR subscr_id LIKE %s", $subscr_id, $subscr_id.'|%' ), OBJECT );
299
- if ( $query_db ) {
300
- $swpm_id = $query_db->member_id;
301
- $current_primary_level = $query_db->membership_level;
302
- 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 );
303
-
304
- $ipn_data['member_id'] = $swpm_id;
305
- do_action( 'swpm_recurring_payment_received', $ipn_data ); // Hook for recurring payment received.
306
-
307
- $subscription_starts = SwpmUtils::get_current_date_in_wp_zone();
308
-
309
- $wpdb->query(
310
- $wpdb->prepare(
311
- "UPDATE {$wpdb->prefix}swpm_members_tbl SET account_state=%s,subscription_starts=%s WHERE member_id=%d",
312
- $account_state,
313
- $subscription_starts,
314
- $swpm_id
315
- )
316
- );
317
- swpm_debug_log_subsc( 'Updated the member profile with current date as the subscription start date.', true );
318
- // Lets check to see if the subscriber ID and the subscription start date value was updated correctly.
319
- $member_record = SwpmMemberUtils::get_user_by_id( $swpm_id );
320
- swpm_debug_log_subsc( 'Value after update - Subscriber ID: ' . $member_record->subscr_id . ', Start Date: ' . $member_record->subscription_starts, true );
321
- } else {
322
- swpm_debug_log_subsc( 'Did not find an existing record in the members table for subscriber ID: ' . $subscr_id, true );
323
- swpm_debug_log_subsc( 'This could be a new subscription payment for a new subscription agreement.', true );
324
- }
325
- }
326
-
327
- function swpm_is_paypal_recurring_payment($payment_data){
328
- $recurring_payment = false;
329
- $transaction_type = $payment_data['txn_type'];
330
-
331
- if ($transaction_type == "recurring_payment") {
332
- $recurring_payment = true;
333
-
334
- } else if ($transaction_type == "subscr_payment") {
335
- $item_number = $payment_data['item_number'];
336
- $subscr_id = $payment_data['subscr_id'];
337
- swpm_debug_log_subsc('Is recurring payment check debug data: ' . $item_number . "|" . $subscr_id, true);
338
-
339
- $result = SwpmTransactions::get_transaction_row_by_subscr_id($subscr_id);
340
- if (isset($result)) {
341
- swpm_debug_log_subsc('This subscr_id exists in the transactions db. Recurring payment check flag value is true.', true);
342
- $recurring_payment = true;
343
- return $recurring_payment;
344
- }
345
- }
346
- if ($recurring_payment) {
347
- swpm_debug_log_subsc('Recurring payment check flag value is true.', true);
348
- }
349
- return $recurring_payment;
350
- }
351
-
352
- function swpm_debug_log_subsc( $message, $success, $end = false ) {
353
- $settings = SwpmSettings::get_instance();
354
- $debug_enabled = $settings->get_value( 'enable-debug' );
355
- if ( empty( $debug_enabled ) ) { // Debug is not enabled.
356
- return;
357
- }
358
-
359
- $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
360
-
361
- // Timestamp.
362
- $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
363
- $text = '[' . $log_timestamp . '] - ' . ( ( $success ) ? 'SUCCESS: ' : 'FAILURE: ' ) . $message . "\n";
364
- if ( $end ) {
365
- $text .= "\n------------------------------------------------------------------\n\n";
366
- }
367
- // Write to log.
368
- $fp = fopen( $debug_log_file_name, 'a' );
369
- fwrite( $fp, $text );
370
- fclose( $fp ); // close file.
371
- }
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
+ SwpmMiscUtils::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'] = SwpmUtils::get_current_date_in_wp_zone();
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
+ if ( empty( $email_body ) ) {
179
+ swpm_debug_log_subsc( 'Notice: Member signup (prompt to complete registration) email body has been set empty via the filter hook. No email will be sent.', true );
180
+ } else {
181
+ SwpmMiscUtils::mail( $email, $subject, $email_body, $headers );
182
+ swpm_debug_log_subsc( 'Member signup (prompt to complete registration) email successfully sent to: ' . $email, true );
183
+ }
184
+ }
185
+
186
+ }
187
+
188
+ /*
189
+ * All in one function that can handle notification for refund, cancellation, end of term
190
+ */
191
+
192
+ function swpm_handle_subsc_cancel_stand_alone( $ipn_data, $refund = false ) {
193
+
194
+ global $wpdb;
195
+
196
+ $swpm_id = '';
197
+ if ( isset( $ipn_data['custom'] ) ){
198
+ $customvariables = SwpmTransactions::parse_custom_var( $ipn_data['custom'] );
199
+ $swpm_id = $customvariables['swpm_id'];
200
+ }
201
+
202
+ swpm_debug_log_subsc( 'Refund/Cancellation check - lets see if a member account needs to be deactivated.', true );
203
+ // swpm_debug_log_subsc("Parent txn id: " . $ipn_data['parent_txn_id'] . ", Subscr ID: " . $ipn_data['subscr_id'] . ", SWPM ID: " . $swpm_id, true);.
204
+
205
+ if ( ! empty( $swpm_id ) ) {
206
+ // This IPN has the SWPM ID. Retrieve the member record using member ID.
207
+ swpm_debug_log_subsc( 'Member ID is present. Retrieving member account from the database. Member ID: ' . $swpm_id, true );
208
+ $resultset = SwpmMemberUtils::get_user_by_id( $swpm_id );
209
+ } elseif ( isset( $ipn_data['subscr_id'] ) && ! empty( $ipn_data['subscr_id'] ) ) {
210
+ // This IPN has the subscriber ID. Retrieve the member record using subscr_id.
211
+ $subscr_id = $ipn_data['subscr_id'];
212
+ swpm_debug_log_subsc( 'Subscriber ID is present. Retrieving member account from the database. Subscr_id: ' . $subscr_id, true );
213
+ $resultset = $wpdb->get_row(
214
+ $wpdb->prepare(
215
+ "SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id LIKE %s",
216
+ '%' . $wpdb->esc_like( $subscr_id ) . '%'
217
+ ),
218
+ OBJECT
219
+ );
220
+ } else {
221
+ // Refund for a one time transaction. Use the parent transaction ID to retrieve the profile.
222
+ $subscr_id = $ipn_data['parent_txn_id'];
223
+ $resultset = $wpdb->get_row(
224
+ $wpdb->prepare(
225
+ "SELECT * FROM {$wpdb->prefix}swpm_members_tbl where subscr_id LIKE %s",
226
+ '%' . $wpdb->esc_like( $subscr_id ) . '%'
227
+ ),
228
+ OBJECT
229
+ );
230
+ }
231
+
232
+ if ( $resultset ) {
233
+ // We have found a member profile for this notification.
234
+
235
+ $member_id = $resultset->member_id;
236
+
237
+ // First, check if this is a refund notification.
238
+ if ( $refund ) {
239
+ // This is a refund (not just a subscription cancellation or end). So deactivate the account regardless and bail.
240
+ SwpmMemberUtils::update_account_state( $member_id, 'inactive' ); // Set the account status to inactive.
241
+ swpm_debug_log_subsc( 'Subscription refund notification received! Member account deactivated.', true );
242
+ return;
243
+ }
244
+
245
+ // This is a cancellation or end of subscription term (no refund).
246
+ // Lets retrieve the membership level and details.
247
+ $level_id = $resultset->membership_level;
248
+ swpm_debug_log_subsc( 'Membership level ID of the member is: ' . $level_id, true );
249
+ $level_row = SwpmUtils::get_membership_level_row_by_id( $level_id );
250
+ $subs_duration_type = $level_row->subscription_duration_type;
251
+
252
+ swpm_debug_log_subsc( 'Subscription duration type: ' . $subs_duration_type, true );
253
+
254
+ if ( SwpmMembershipLevel::NO_EXPIRY == $subs_duration_type ) {
255
+ // This is a level with "no expiry" or "until cancelled" duration.
256
+ swpm_debug_log_subsc( 'This is a level with "no expiry" or "until cancelled" duration', true );
257
+
258
+ // Deactivate this account as the membership level is "no expiry" or "until cancelled".
259
+ $account_state = 'inactive';
260
+ SwpmMemberUtils::update_account_state( $member_id, $account_state );
261
+ swpm_debug_log_subsc( 'Subscription cancellation or end of term received! Member account deactivated. Member ID: ' . $member_id, true );
262
+ } elseif ( SwpmMembershipLevel::FIXED_DATE == $subs_duration_type ) {
263
+ // This is a level with a "fixed expiry date" duration.
264
+ swpm_debug_log_subsc( 'This is a level with a "fixed expiry date" duration.', true );
265
+ swpm_debug_log_subsc( 'Nothing to do here. The account will expire on the fixed set date.', true );
266
+ } else {
267
+ // This is a level with "duration" type expiry (example: 30 days, 1 year etc). subscription_period has the duration/period.
268
+ $subs_period = $level_row->subscription_period;
269
+ $subs_period_unit = SwpmMembershipLevel::get_level_duration_type_string( $level_row->subscription_duration_type );
270
+
271
+ swpm_debug_log_subsc( 'This is a level with "duration" type expiry. Duration period: ' . $subs_period . ', Unit: ' . $subs_period_unit, true );
272
+ swpm_debug_log_subsc( 'Nothing to do here. The account will expire after the duration time is over.', true );
273
+
274
+ // TODO Later as an improvement. If you wanted to segment the members who have unsubscribed, you can set the account status to "unsubscribed" here.
275
+ // Make sure the cronjob to do expiry check and deactivate the member accounts treat this status as if it is "active".
276
+ }
277
+
278
+ $ipn_data['member_id'] = $member_id;
279
+ do_action( 'swpm_subscription_payment_cancelled', $ipn_data ); // Hook for recurring payment received.
280
+ } else {
281
+ swpm_debug_log_subsc( 'No associated active member record found for this notification.', false );
282
+ return;
283
+ }
284
+ }
285
+
286
+ function swpm_update_member_subscription_start_date_if_applicable( $ipn_data ) {
287
+ global $wpdb;
288
+ $email = isset( $ipn_data['payer_email'] ) ? $ipn_data['payer_email'] : '';
289
+ $subscr_id = $ipn_data['subscr_id'];
290
+ $account_state = SwpmSettings::get_instance()->get_value( 'default-account-status', 'active' );
291
+ $account_state = apply_filters( 'swpm_account_status_for_subscription_start_date_update', $account_state );
292
+
293
+ swpm_debug_log_subsc( 'Updating subscription start date if applicable for this subscription payment. Subscriber ID: ' . $subscr_id . ', Email: ' . $email . ', Account status: ' . $account_state, true );
294
+
295
+ // We can also query using the email address or SWPM ID (if present in custom var).
296
+
297
+ //Try to find the profile with the given subscr_id. It will exact match subscr_id or match subscr_id|123
298
+ $query_db = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}swpm_members_tbl WHERE subscr_id = %s OR subscr_id LIKE %s", $subscr_id, $subscr_id.'|%' ), OBJECT );
299
+ if ( $query_db ) {
300
+ $swpm_id = $query_db->member_id;
301
+ $current_primary_level = $query_db->membership_level;
302
+ 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 );
303
+
304
+ $ipn_data['member_id'] = $swpm_id;
305
+ do_action( 'swpm_recurring_payment_received', $ipn_data ); // Hook for recurring payment received.
306
+
307
+ $subscription_starts = SwpmUtils::get_current_date_in_wp_zone();
308
+
309
+ $wpdb->query(
310
+ $wpdb->prepare(
311
+ "UPDATE {$wpdb->prefix}swpm_members_tbl SET account_state=%s,subscription_starts=%s WHERE member_id=%d",
312
+ $account_state,
313
+ $subscription_starts,
314
+ $swpm_id
315
+ )
316
+ );
317
+ swpm_debug_log_subsc( 'Updated the member profile with current date as the subscription start date.', true );
318
+ // Lets check to see if the subscriber ID and the subscription start date value was updated correctly.
319
+ $member_record = SwpmMemberUtils::get_user_by_id( $swpm_id );
320
+ swpm_debug_log_subsc( 'Value after update - Subscriber ID: ' . $member_record->subscr_id . ', Start Date: ' . $member_record->subscription_starts, true );
321
+ } else {
322
+ swpm_debug_log_subsc( 'Did not find an existing record in the members table for subscriber ID: ' . $subscr_id, true );
323
+ swpm_debug_log_subsc( 'This could be a new subscription payment for a new subscription agreement.', true );
324
+ }
325
+ }
326
+
327
+ function swpm_is_paypal_recurring_payment($payment_data){
328
+ $recurring_payment = false;
329
+ $transaction_type = $payment_data['txn_type'];
330
+
331
+ if ($transaction_type == "recurring_payment") {
332
+ $recurring_payment = true;
333
+
334
+ } else if ($transaction_type == "subscr_payment") {
335
+ $item_number = $payment_data['item_number'];
336
+ $subscr_id = $payment_data['subscr_id'];
337
+ swpm_debug_log_subsc('Is recurring payment check debug data: ' . $item_number . "|" . $subscr_id, true);
338
+
339
+ $result = SwpmTransactions::get_transaction_row_by_subscr_id($subscr_id);
340
+ if (isset($result)) {
341
+ swpm_debug_log_subsc('This subscr_id exists in the transactions db. Recurring payment check flag value is true.', true);
342
+ $recurring_payment = true;
343
+ return $recurring_payment;
344
+ }
345
+ }
346
+ if ($recurring_payment) {
347
+ swpm_debug_log_subsc('Recurring payment check flag value is true.', true);
348
+ }
349
+ return $recurring_payment;
350
+ }
351
+
352
+ function swpm_debug_log_subsc( $message, $success, $end = false ) {
353
+ $settings = SwpmSettings::get_instance();
354
+ $debug_enabled = $settings->get_value( 'enable-debug' );
355
+ if ( empty( $debug_enabled ) ) { // Debug is not enabled.
356
+ return;
357
+ }
358
+
359
+ $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
360
+
361
+ // Timestamp.
362
+ $log_timestamp = SwpmUtils::get_current_timestamp_for_debug_log();
363
+ $text = '[' . $log_timestamp . '] - ' . ( ( $success ) ? 'SUCCESS: ' : 'FAILURE: ' ) . $message . "\n";
364
+ if ( $end ) {
365
+ $text .= "\n------------------------------------------------------------------\n\n";
366
+ }
367
+ // Write to log.
368
+ $fp = fopen( $debug_log_file_name, 'a' );
369
+ fwrite( $fp, $text );
370
+ fclose( $fp ); // close file.
371
+ }
languages/simple-membership-fr_CA.mo ADDED
Binary file
languages/simple-membership-fr_CA.po ADDED
@@ -0,0 +1,2918 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
4
+ "Project-Id-Version: Simple WordPress Membership\n"
5
+ "POT-Creation-Date: 2021-07-07 13:25+1000\n"
6
+ "PO-Revision-Date: 2021-09-13 17:46-0400\n"
7
+ "Language-Team: \n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 3.0\n"
12
+ "X-Poedit-Basepath: ..\n"
13
+ "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
14
+ "X-Poedit-WPHeader: simple-wp-membership.php\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
18
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
19
+ "Last-Translator: \n"
20
+ "Language: fr_CA\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.min.js\n"
23
+
24
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:76
25
+ msgid "Payment Button ID"
26
+ msgstr ""
27
+
28
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:77
29
+ msgid "Payment Button Title"
30
+ msgstr ""
31
+
32
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:78
33
+ msgid "Membership Level ID"
34
+ msgstr "Niveau"
35
+
36
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:79
37
+ msgid "Button Type"
38
+ msgstr ""
39
+
40
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:80
41
+ msgid "Button Shortcode"
42
+ msgstr ""
43
+
44
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:95
45
+ #: classes/admin-includes/class.swpm-payments-list-table.php:110
46
+ #: classes/class.swpm-members.php:49
47
+ #: classes/class.swpm-membership-levels.php:36
48
+ msgid "Delete"
49
+ msgstr "Supprimer"
50
+
51
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:128
52
+ #: views/admin_members_list.php:8
53
+ #: views/payments/admin_all_payment_transactions.php:32
54
+ msgid "The selected entry was deleted!"
55
+ msgstr "L’entrée sélectionnée a été supprimée!"
56
+
57
+ #: classes/admin-includes/class.swpm-payments-admin-menu.php:23
58
+ msgid "Simple Membership::Payments"
59
+ msgstr ""
60
+
61
+ #: classes/admin-includes/class.swpm-payments-list-table.php:65
62
+ #: views/template-1.php:95 views/template-2.php:97
63
+ msgid "View Profile"
64
+ msgstr "Voir ton profil"
65
+
66
+ #: classes/admin-includes/class.swpm-payments-list-table.php:83
67
+ msgid "Row ID"
68
+ msgstr ""
69
+
70
+ #: classes/admin-includes/class.swpm-payments-list-table.php:84
71
+ #: views/forgot_password.php:5
72
+ #: views/payments/admin_add_edit_transaction_manually.php:75
73
+ msgid "Email Address"
74
+ msgstr "Adresse email"
75
+
76
+ #: classes/admin-includes/class.swpm-payments-list-table.php:85
77
+ #: classes/class.swpm-members.php:23 views/add.php:34
78
+ #: views/admin_member_form_common_part.php:15 views/edit.php:39
79
+ #: views/payments/admin_add_edit_transaction_manually.php:83
80
+ #: includes/swpm_mda_show_profile.php:28
81
+ msgid "First Name"
82
+ msgstr "Prénom"
83
+
84
+ #: classes/admin-includes/class.swpm-payments-list-table.php:86
85
+ #: classes/class.swpm-members.php:24 views/add.php:38
86
+ #: views/admin_member_form_common_part.php:19 views/edit.php:43
87
+ #: views/payments/admin_add_edit_transaction_manually.php:91
88
+ #: includes/swpm_mda_show_profile.php:29
89
+ msgid "Last Name"
90
+ msgstr "Nom"
91
+
92
+ #: classes/admin-includes/class.swpm-payments-list-table.php:87
93
+ msgid "Member Profile"
94
+ msgstr "Profil de membre"
95
+
96
+ #: classes/admin-includes/class.swpm-payments-list-table.php:88
97
+ #: classes/class.swpm-post-list.php:43 classes/class.swpm-post-list.php:52
98
+ #: classes/class.swpm-post-list.php:62
99
+ #: views/payments/admin_add_edit_transaction_manually.php:125
100
+ msgid "Date"
101
+ msgstr ""
102
+
103
+ #: classes/admin-includes/class.swpm-payments-list-table.php:89
104
+ #: views/payments/admin_add_edit_transaction_manually.php:133
105
+ msgid "Transaction ID"
106
+ msgstr ""
107
+
108
+ #: classes/admin-includes/class.swpm-payments-list-table.php:90
109
+ #: views/payments/admin_add_edit_transaction_manually.php:141
110
+ msgid "Subscriber ID"
111
+ msgstr ""
112
+
113
+ #: classes/admin-includes/class.swpm-payments-list-table.php:91
114
+ #: views/payments/admin_add_edit_transaction_manually.php:117
115
+ msgid "Amount"
116
+ msgstr "Montant"
117
+
118
+ #: classes/admin-includes/class.swpm-payments-list-table.php:92
119
+ #: classes/class.swpm-category-list.php:19 classes/class.swpm-members.php:26
120
+ #: classes/class.swpm-membership-levels.php:11
121
+ #: classes/class.swpm-membership-levels.php:21
122
+ #: classes/class.swpm-post-list.php:20 views/add.php:42
123
+ #: views/admin_member_form_common_part.php:2 views/admin_members_list.php:50
124
+ #: views/edit.php:75 views/payments/admin_add_edit_transaction_manually.php:107
125
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:50
126
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:34
127
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:232
128
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:49
129
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:35
130
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:320
131
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:44
132
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:330
133
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:44
134
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:312
135
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:108
136
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:108
137
+ msgid "Membership Level"
138
+ msgstr "Niveau"
139
+
140
+ #: classes/admin-includes/class.swpm-payments-list-table.php:93
141
+ #: views/payments/admin_add_edit_transaction_manually.php:149
142
+ msgid "Status/Note"
143
+ msgstr ""
144
+
145
+ #: classes/class-swpm-member-subscriptions.php:121
146
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:164
147
+ msgid "No active subscriptions"
148
+ msgstr "Aucun abonnement actif"
149
+
150
+ #: classes/class-swpm-member-subscriptions.php:132
151
+ msgid "Cancel Subscription"
152
+ msgstr "Annuler l'Abonnement"
153
+
154
+ #: classes/class-swpm-member-subscriptions.php:134
155
+ msgid "Are you sure that you want to cancel the subscription?"
156
+ msgstr "Es-tu sûre de vouloir annuler ton abonnement?"
157
+
158
+ #: classes/class.simple-wp-membership.php:189
159
+ msgid "The admin of this site does not allow users to access the wp dashboard."
160
+ msgstr ""
161
+ "L’administrateur de ce site ne permet pas aux utilisateurs d’accéder au "
162
+ "tableau de bord wp."
163
+
164
+ #: classes/class.simple-wp-membership.php:190
165
+ msgid "Go back to the home page by "
166
+ msgstr "Retourne sur la page d’accueil en "
167
+
168
+ #: classes/class.simple-wp-membership.php:190
169
+ msgid "clicking here"
170
+ msgstr "cliquant ici"
171
+
172
+ #: classes/class.simple-wp-membership.php:255
173
+ msgid ""
174
+ "Error! This site has the force WP user login feature enabled in the "
175
+ "settings. We could not find a WP user record for the given username: "
176
+ msgstr ""
177
+ "Erreur! Ce site a la fonction de connexion d’utilisateur de force WP activée "
178
+ "dans les paramètres. Nous n’avons pas pu trouver d’enregistrement "
179
+ "d’utilisateur WP pour le nom d’utilisateur donné "
180
+
181
+ #: classes/class.simple-wp-membership.php:256
182
+ msgid ""
183
+ "This error is triggered when a member account doesn't have a corresponding "
184
+ "WP user account. So the plugin fails to log the user into the WP User system."
185
+ msgstr ""
186
+
187
+ #: classes/class.simple-wp-membership.php:257
188
+ msgid ""
189
+ "Contact the site admin and request them to check your username in the WP "
190
+ "Users menu to see what happened with the WP user entry of your account."
191
+ msgstr ""
192
+ "Contactez l’administrateur du site et demandez-leur de vérifier votre nom "
193
+ "d’utilisateur dans le menu des utilisateurs WP pour voir ce qui s’est passé "
194
+ "avec l’entrée utilisateur WP de votre compte."
195
+
196
+ #: classes/class.simple-wp-membership.php:258
197
+ msgid ""
198
+ "The site admin can disable the Force WP User Synchronization feature in the "
199
+ "settings to disable this feature and this error will go away."
200
+ msgstr ""
201
+
202
+ #: classes/class.simple-wp-membership.php:259
203
+ msgid "You can use the back button of your browser to go back to the site."
204
+ msgstr ""
205
+ "Tu peux utiliser le bouton retour de ton navigateur pour revenir sur le site."
206
+
207
+ #: classes/class.simple-wp-membership.php:431
208
+ #: classes/class.swpm-wp-loaded-tasks.php:141
209
+ msgid "You are not logged in."
210
+ msgstr "Tu n’es pas connectée."
211
+
212
+ #: classes/class.simple-wp-membership.php:482
213
+ msgid ""
214
+ "You have the sandbox payment mode enabled in plugin settings. Make sure to "
215
+ "turn off the sandbox mode when you want to do live transactions."
216
+ msgstr ""
217
+
218
+ #: classes/class.simple-wp-membership.php:497
219
+ msgid "Simple WP Membership Protection"
220
+ msgstr ""
221
+
222
+ #: classes/class.simple-wp-membership.php:509
223
+ msgid "Simple Membership Protection options"
224
+ msgstr ""
225
+
226
+ #: classes/class.simple-wp-membership.php:527
227
+ msgid "Do you want to protect this content?"
228
+ msgstr ""
229
+
230
+ #: classes/class.simple-wp-membership.php:528
231
+ msgid "No, Do not protect this content."
232
+ msgstr ""
233
+
234
+ #: classes/class.simple-wp-membership.php:529
235
+ msgid "Yes, Protect this content."
236
+ msgstr ""
237
+
238
+ #: classes/class.simple-wp-membership.php:532
239
+ msgid "Select the membership level that can access this content:"
240
+ msgstr ""
241
+
242
+ #: classes/class.simple-wp-membership.php:673
243
+ #: classes/class.simple-wp-membership.php:677
244
+ msgid "Validating, please wait"
245
+ msgstr "Ça sera pas long :)"
246
+
247
+ #: classes/class.simple-wp-membership.php:680
248
+ msgid "Invalid email address"
249
+ msgstr "Adresse email invalide"
250
+
251
+ #: classes/class.simple-wp-membership.php:683
252
+ msgid "This field is required"
253
+ msgstr "Ce champ est requis"
254
+
255
+ #: classes/class.simple-wp-membership.php:686
256
+ msgid "Password must contain at least:"
257
+ msgstr "Le mot de passe doit contenir au moins:"
258
+
259
+ #: classes/class.simple-wp-membership.php:686
260
+ msgid "- a digit"
261
+ msgstr "Un chiffre"
262
+
263
+ #: classes/class.simple-wp-membership.php:686
264
+ msgid "- an uppercase letter"
265
+ msgstr "Une lettre majuscule"
266
+
267
+ #: classes/class.simple-wp-membership.php:686
268
+ msgid "- a lowercase letter"
269
+ msgstr "Une lettre minuscule"
270
+
271
+ #: classes/class.simple-wp-membership.php:689 classes/class.swpm-auth.php:310
272
+ msgid "Invalid Username"
273
+ msgstr "Nom d’utilisateur invalide"
274
+
275
+ #: classes/class.simple-wp-membership.php:689
276
+ msgid "Usernames can only contain: letters, numbers and .-_*@"
277
+ msgstr "Le nom d’utilisateur peut seulement contenir: lettres, nombres et .-*@"
278
+
279
+ #: classes/class.simple-wp-membership.php:692
280
+ msgid "Minimum "
281
+ msgstr ""
282
+
283
+ #: classes/class.simple-wp-membership.php:693
284
+ msgid " characters required"
285
+ msgstr " caractères requis"
286
+
287
+ #: classes/class.simple-wp-membership.php:696
288
+ msgid "Apostrophe character is not allowed"
289
+ msgstr "L’apostrophe n’est pas autorisée"
290
+
291
+ #: classes/class.simple-wp-membership.php:736
292
+ msgid "WP Membership"
293
+ msgstr ""
294
+
295
+ #: classes/class.simple-wp-membership.php:737 classes/class.swpm-members.php:12
296
+ #: classes/class.swpm-members.php:718
297
+ msgid "Members"
298
+ msgstr "Membres"
299
+
300
+ #: classes/class.simple-wp-membership.php:738
301
+ #: classes/class.swpm-category-list.php:20
302
+ #: classes/class.swpm-membership-levels.php:12
303
+ #: classes/class.swpm-membership-levels.php:269
304
+ #: classes/class.swpm-post-list.php:21
305
+ msgid "Membership Levels"
306
+ msgstr "Niveau"
307
+
308
+ #: classes/class.simple-wp-membership.php:739
309
+ msgid "Settings"
310
+ msgstr "Paramètres"
311
+
312
+ #: classes/class.simple-wp-membership.php:740
313
+ msgid "Payments"
314
+ msgstr "Paiements"
315
+
316
+ #: classes/class.simple-wp-membership.php:741
317
+ msgid "Add-ons"
318
+ msgstr "Modules complémentaires"
319
+
320
+ #: classes/class.swpm-access-control.php:47
321
+ #: classes/class.swpm-access-control.php:120
322
+ msgid "You need to login to view this content. "
323
+ msgstr "Tu dois te connecter pour voir ce contenu "
324
+
325
+ #: classes/class.swpm-access-control.php:56
326
+ #: classes/class.swpm-access-control.php:128
327
+ #: classes/class.swpm-access-control.php:212
328
+ msgid "Your account has expired. "
329
+ msgstr "Ton compte est expiré "
330
+
331
+ #: classes/class.swpm-access-control.php:66
332
+ #: classes/class.swpm-access-control.php:138
333
+ msgid "This content can only be viewed by members who joined on or before "
334
+ msgstr ""
335
+
336
+ #: classes/class.swpm-access-control.php:79
337
+ #: classes/class.swpm-access-control.php:148
338
+ msgid "This content is not permitted for your membership level."
339
+ msgstr "Ce contenu n’est pas autorisé pour ton niveau d’adhésion."
340
+
341
+ #: classes/class.swpm-access-control.php:204
342
+ msgid "You need to login to view the rest of the content. "
343
+ msgstr "Tu dois te vous connecter pour voir le reste du contenu "
344
+
345
+ #: classes/class.swpm-access-control.php:217
346
+ msgid " The rest of the content is not permitted for your membership level."
347
+ msgstr " Le reste du contenu n’est pas autorisé pour ton niveau d’adhésion."
348
+
349
+ #: classes/class.swpm-admin-registration.php:25
350
+ msgid "Error! Nonce verification failed for user registration from admin end."
351
+ msgstr ""
352
+
353
+ #: classes/class.swpm-admin-registration.php:79
354
+ msgid "Member record added successfully."
355
+ msgstr ""
356
+
357
+ #: classes/class.swpm-admin-registration.php:87
358
+ #: classes/class.swpm-admin-registration.php:149
359
+ #: classes/class.swpm-admin-registration.php:187
360
+ #: classes/class.swpm-membership-level.php:73
361
+ #: classes/class.swpm-membership-level.php:105
362
+ msgid "Please correct the following:"
363
+ msgstr "SVP corriger les éléments suivants:"
364
+
365
+ #: classes/class.swpm-admin-registration.php:100
366
+ msgid "Error! Nonce verification failed for user edit from admin end."
367
+ msgstr ""
368
+
369
+ #: classes/class.swpm-admin-registration.php:166
370
+ msgid "Your current password"
371
+ msgstr "Ton mot de passe actuel"
372
+
373
+ #: classes/class.swpm-ajax.php:14 classes/class.swpm-ajax.php:34
374
+ #: ipn/swpm-smart-checkout-ipn.php:326
375
+ msgid "Nonce check failed. Please reload the page."
376
+ msgstr ""
377
+
378
+ #: classes/class.swpm-ajax.php:18
379
+ msgid "Invalid Email Address"
380
+ msgstr "Adresse email invalide"
381
+
382
+ #: classes/class.swpm-ajax.php:25 classes/class.swpm-ajax.php:44
383
+ msgid "Already taken"
384
+ msgstr "Déjà pris"
385
+
386
+ #: classes/class.swpm-ajax.php:25 classes/class.swpm-ajax.php:45
387
+ msgid "Available"
388
+ msgstr "Disponible"
389
+
390
+ #: classes/class.swpm-ajax.php:38
391
+ msgid "Name contains invalid character"
392
+ msgstr "Le nom contient des caractères invalides"
393
+
394
+ #: classes/class.swpm-auth.php:60
395
+ msgid ""
396
+ "Warning! Simple Membership plugin cannot process this login request to "
397
+ "prevent you from getting logged out of WP Admin accidentally."
398
+ msgstr ""
399
+
400
+ #: classes/class.swpm-auth.php:61
401
+ msgid "Click here"
402
+ msgstr "Clique ici"
403
+
404
+ #: classes/class.swpm-auth.php:61
405
+ msgid " to see the profile you are currently logged into in this browser."
406
+ msgstr ""
407
+
408
+ #: classes/class.swpm-auth.php:62
409
+ msgid ""
410
+ "You are logged into the site as an ADMIN user in this browser. First, logout "
411
+ "from WP Admin then you will be able to log in as a normal member."
412
+ msgstr ""
413
+
414
+ #: classes/class.swpm-auth.php:63
415
+ msgid ""
416
+ "Alternatively, you can use a different browser (where you are not logged-in "
417
+ "as ADMIN) to test the membership login."
418
+ msgstr ""
419
+
420
+ #: classes/class.swpm-auth.php:64
421
+ msgid ""
422
+ "Your normal visitors or members will never see this message. This message is "
423
+ "ONLY for ADMIN user."
424
+ msgstr ""
425
+
426
+ #: classes/class.swpm-auth.php:71
427
+ msgid "Captcha validation failed on login form."
428
+ msgstr ""
429
+
430
+ #: classes/class.swpm-auth.php:96
431
+ msgid "User Not Found."
432
+ msgstr "Utilisateur non trouvé."
433
+
434
+ #: classes/class.swpm-auth.php:103
435
+ msgid "Password Empty or Invalid."
436
+ msgstr "Mot de passe vide ou invalide."
437
+
438
+ #: classes/class.swpm-auth.php:144
439
+ msgid "Account is inactive."
440
+ msgstr "Compte est inactif."
441
+
442
+ #: classes/class.swpm-auth.php:147 classes/class.swpm-auth.php:176
443
+ msgid "Account has expired."
444
+ msgstr "Compte est expiré."
445
+
446
+ #: classes/class.swpm-auth.php:150
447
+ msgid "Account is pending."
448
+ msgstr "Compte est en attente."
449
+
450
+ #: classes/class.swpm-auth.php:160
451
+ #, php-format
452
+ msgid ""
453
+ "You need to activate your account. If you didn't receive an email then %s to "
454
+ "resend the activation email."
455
+ msgstr ""
456
+ "Tu dois activer ton compte. Si tu n’as pas reçu un email, %s pour envoyer un "
457
+ "nouveau email d’activation."
458
+
459
+ #: classes/class.swpm-auth.php:160
460
+ #: classes/class.swpm-front-registration.php:451
461
+ #: classes/class.swpm-front-registration.php:504
462
+ #: classes/class.swpm-utils-misc.php:196
463
+ msgid "click here"
464
+ msgstr "clique ici"
465
+
466
+ #: classes/class.swpm-auth.php:184
467
+ msgid "You are logged in as:"
468
+ msgstr ""
469
+
470
+ #: classes/class.swpm-auth.php:248
471
+ msgid "Logged Out Successfully."
472
+ msgstr ""
473
+
474
+ #: classes/class.swpm-auth.php:301
475
+ msgid "Session Expired."
476
+ msgstr ""
477
+
478
+ #: classes/class.swpm-auth.php:318
479
+ msgid "Please login again."
480
+ msgstr ""
481
+
482
+ #: classes/class.swpm-category-list.php:33
483
+ msgid "Category ID"
484
+ msgstr ""
485
+
486
+ #: classes/class.swpm-category-list.php:34
487
+ msgid "Category Name"
488
+ msgstr ""
489
+
490
+ #: classes/class.swpm-category-list.php:35
491
+ msgid "Category Type (Taxonomy)"
492
+ msgstr ""
493
+
494
+ #: classes/class.swpm-category-list.php:36
495
+ msgid "Description"
496
+ msgstr ""
497
+
498
+ #: classes/class.swpm-category-list.php:37
499
+ msgid "Count"
500
+ msgstr ""
501
+
502
+ #: classes/class.swpm-category-list.php:78
503
+ msgid ""
504
+ "Error! Nonce security verification failed for Category Protection Update "
505
+ "action. Clear cache and try again."
506
+ msgstr ""
507
+
508
+ #: classes/class.swpm-category-list.php:99
509
+ msgid "Category protection updated!"
510
+ msgstr ""
511
+
512
+ #: classes/class.swpm-comment-form-related.php:15
513
+ msgid "Please login to comment."
514
+ msgstr ""
515
+
516
+ #: classes/class.swpm-comment-form-related.php:40
517
+ msgid "Please Login to Comment."
518
+ msgstr ""
519
+
520
+ #: classes/class.swpm-comment-form-related.php:79
521
+ msgid "Comments not allowed by a non-member."
522
+ msgstr ""
523
+
524
+ #: classes/class.swpm-form.php:30
525
+ msgid ""
526
+ "Wordpress account exists with given username. But the given email doesn't "
527
+ "match."
528
+ msgstr ""
529
+ "Un compte WordPress existe avec ce nom d’utilisateur. Mais le email indiqué "
530
+ "ne correspond pas."
531
+
532
+ #: classes/class.swpm-form.php:31
533
+ msgid ""
534
+ " Use a different username to complete the registration. If you want to use "
535
+ "that username then you must enter the correct email address associated with "
536
+ "the existing WP user to connect with that account."
537
+ msgstr ""
538
+ " Utilise un autre nom d’utilisateur pour terminer l’enregistrement. Si tu "
539
+ "souhaites utiliser ce nom d’utilisateur, tu dois entrer l’adresse e-mail "
540
+ "correcte associée à l’utilisateur WP existant pour te connecter à ce compte."
541
+
542
+ #: classes/class.swpm-form.php:37
543
+ msgid ""
544
+ "Wordpress account exists with given email. But the given username doesn't "
545
+ "match."
546
+ msgstr ""
547
+ "Le compte Wordpress existe avec ce email. Mais le nom d’utilisateur donné ne "
548
+ "correspond pas."
549
+
550
+ #: classes/class.swpm-form.php:38
551
+ msgid ""
552
+ " Use a different email address to complete the registration. If you want to "
553
+ "use that email then you must enter the correct username associated with the "
554
+ "existing WP user to connect with that account."
555
+ msgstr ""
556
+ " Utilise une autre adresse email pour terminer l’inscription. Si tu "
557
+ "souhaites utiliser ce email, tu dois entrer le nom d’utilisateur correct "
558
+ "associé à l’utilisateur WP existant pour te connecter à ce compte."
559
+
560
+ #: classes/class.swpm-form.php:48
561
+ msgid "Username is required"
562
+ msgstr "Nom d’utilisateur requis"
563
+
564
+ #: classes/class.swpm-form.php:52
565
+ msgid "Username contains invalid character"
566
+ msgstr "Le nom d’utilisateur contient un caractère invalide"
567
+
568
+ #: classes/class.swpm-form.php:60
569
+ msgid "Username already exists."
570
+ msgstr "Le nom d’utilisateur existe déjà."
571
+
572
+ #: classes/class.swpm-form.php:81
573
+ msgid "Password is required"
574
+ msgstr ""
575
+
576
+ #: classes/class.swpm-form.php:88
577
+ msgid "Password mismatch"
578
+ msgstr ""
579
+
580
+ #: classes/class.swpm-form.php:99
581
+ msgid "Email is required"
582
+ msgstr ""
583
+
584
+ #: classes/class.swpm-form.php:103
585
+ msgid "Email is invalid"
586
+ msgstr ""
587
+
588
+ #: classes/class.swpm-form.php:119
589
+ msgid "Email is already used."
590
+ msgstr ""
591
+
592
+ #: classes/class.swpm-form.php:171
593
+ msgid "Member since field is invalid"
594
+ msgstr ""
595
+
596
+ #: classes/class.swpm-form.php:182
597
+ msgid "Access starts field is invalid"
598
+ msgstr ""
599
+
600
+ #: classes/class.swpm-form.php:192
601
+ msgid "Gender field is invalid"
602
+ msgstr ""
603
+
604
+ #: classes/class.swpm-form.php:203
605
+ msgid "Account state field is invalid"
606
+ msgstr ""
607
+
608
+ #: classes/class.swpm-form.php:210
609
+ msgid "Invalid membership level"
610
+ msgstr ""
611
+
612
+ #: classes/class.swpm-front-registration.php:26
613
+ msgid ""
614
+ "You are already logged in. You don't need to create another account. So the "
615
+ "registration form is hidden."
616
+ msgstr ""
617
+
618
+ #: classes/class.swpm-front-registration.php:59
619
+ #: classes/class.swpm-utils-misc.php:364 views/login.php:38
620
+ msgid "Join Us"
621
+ msgstr "Joins-toi à nous"
622
+
623
+ #: classes/class.swpm-front-registration.php:61
624
+ msgid ""
625
+ "Free membership is disabled on this site. Please make a payment from the "
626
+ msgstr ""
627
+
628
+ #: classes/class.swpm-front-registration.php:63
629
+ msgid " page to pay for a premium membership."
630
+ msgstr ""
631
+
632
+ #: classes/class.swpm-front-registration.php:65
633
+ msgid ""
634
+ "You will receive a unique link via email after the payment. You will be able "
635
+ "to use that link to complete the premium membership registration."
636
+ msgstr ""
637
+ "Vous recevrez un lien unique par e-mail après le paiement. Vous pourrez "
638
+ "utiliser ce lien pour compléter l’inscription à l’adhésion premium."
639
+
640
+ #: classes/class.swpm-front-registration.php:95
641
+ msgid "Security check: captcha validation failed."
642
+ msgstr ""
643
+
644
+ #: classes/class.swpm-front-registration.php:108
645
+ msgid "You must accept the terms and conditions."
646
+ msgstr ""
647
+
648
+ #: classes/class.swpm-front-registration.php:122
649
+ msgid "You must agree to the privacy policy."
650
+ msgstr ""
651
+
652
+ #: classes/class.swpm-front-registration.php:163
653
+ msgid ""
654
+ "You need to confirm your email address. Please check your email and follow "
655
+ "instructions to complete your registration."
656
+ msgstr ""
657
+ "Tu dois confirmer ton adresse e-mail. Vérifie tes emails et suis les "
658
+ "instructions pour terminer ton inscription."
659
+
660
+ #: classes/class.swpm-front-registration.php:176
661
+ msgid "Registration Successful. "
662
+ msgstr ""
663
+
664
+ #: classes/class.swpm-front-registration.php:176
665
+ #: classes/class.swpm-utils-misc.php:363 classes/class.swpm-utils-misc.php:375
666
+ msgid "Please"
667
+ msgstr ""
668
+
669
+ #: classes/class.swpm-front-registration.php:176
670
+ #: classes/class.swpm-utils-misc.php:363 views/login.php:32
671
+ msgid "Login"
672
+ msgstr "Se connecter"
673
+
674
+ #: classes/class.swpm-front-registration.php:195
675
+ msgid "Please correct the following"
676
+ msgstr ""
677
+
678
+ #: classes/class.swpm-front-registration.php:243
679
+ msgid "Membership Level Couldn't be found."
680
+ msgstr ""
681
+
682
+ #: classes/class.swpm-front-registration.php:295
683
+ msgid "Error! Nonce verification failed for front end profile edit."
684
+ msgstr ""
685
+
686
+ #: classes/class.swpm-front-registration.php:303
687
+ msgid "Profile updated successfully."
688
+ msgstr "Le profil a été mis à jour."
689
+
690
+ #: classes/class.swpm-front-registration.php:316
691
+ msgid ""
692
+ "Profile updated successfully. You will need to re-login since you changed "
693
+ "your password."
694
+ msgstr ""
695
+
696
+ #: classes/class.swpm-front-registration.php:344
697
+ msgid "Please correct the following."
698
+ msgstr ""
699
+
700
+ #: classes/class.swpm-front-registration.php:360
701
+ msgid "Captcha validation failed."
702
+ msgstr ""
703
+
704
+ #: classes/class.swpm-front-registration.php:371
705
+ msgid "Email address not valid."
706
+ msgstr ""
707
+
708
+ #: classes/class.swpm-front-registration.php:385
709
+ msgid "No user found with that email address."
710
+ msgstr ""
711
+
712
+ #: classes/class.swpm-front-registration.php:386
713
+ #: classes/class.swpm-front-registration.php:418
714
+ msgid "Email Address: "
715
+ msgstr ""
716
+
717
+ #: classes/class.swpm-front-registration.php:417
718
+ msgid "New password has been sent to your email address."
719
+ msgstr ""
720
+
721
+ #: classes/class.swpm-front-registration.php:446
722
+ msgid "Can't find member account."
723
+ msgstr ""
724
+
725
+ #: classes/class.swpm-front-registration.php:451
726
+ #: classes/class.swpm-front-registration.php:504
727
+ msgid "Account already active. "
728
+ msgstr ""
729
+
730
+ #: classes/class.swpm-front-registration.php:451
731
+ #: classes/class.swpm-front-registration.php:504
732
+ msgid " to login."
733
+ msgstr ""
734
+
735
+ #: classes/class.swpm-front-registration.php:458
736
+ msgid ""
737
+ "Activation code mismatch. Cannot activate this account. Please contact the "
738
+ "site admin."
739
+ msgstr ""
740
+
741
+ #: classes/class.swpm-front-registration.php:472
742
+ msgid "Success! Your account has been activated successfully."
743
+ msgstr ""
744
+
745
+ #: classes/class.swpm-front-registration.php:499
746
+ msgid "Cannot find member account."
747
+ msgstr ""
748
+
749
+ #: classes/class.swpm-front-registration.php:521
750
+ msgid ""
751
+ "Activation email has been sent. Please check your email and activate your "
752
+ "account."
753
+ msgstr ""
754
+
755
+ #: classes/class.swpm-init-time-tasks.php:137
756
+ msgid "Sorry, Nonce verification failed."
757
+ msgstr ""
758
+
759
+ #: classes/class.swpm-init-time-tasks.php:144
760
+ msgid "Sorry, Password didn't match."
761
+ msgstr ""
762
+
763
+ #: classes/class.swpm-level-form.php:50
764
+ msgid "Date format is not valid."
765
+ msgstr ""
766
+
767
+ #: classes/class.swpm-level-form.php:58
768
+ msgid "Access duration must be > 0."
769
+ msgstr ""
770
+
771
+ #: classes/class.swpm-members.php:11
772
+ msgid "Member"
773
+ msgstr ""
774
+
775
+ #: classes/class.swpm-members.php:21
776
+ #: classes/class.swpm-membership-levels.php:20
777
+ msgid "ID"
778
+ msgstr ""
779
+
780
+ #: classes/class.swpm-members.php:22 views/add.php:18 views/admin_add.php:12
781
+ #: views/admin_edit.php:19 views/edit.php:23
782
+ #: includes/swpm_mda_show_profile.php:27
783
+ msgid "Username"
784
+ msgstr "Nom d’utilisateur"
785
+
786
+ #: classes/class.swpm-members.php:25 views/add.php:22 views/edit.php:27
787
+ #: includes/swpm_mda_show_profile.php:35
788
+ msgid "Email"
789
+ msgstr ""
790
+
791
+ #: classes/class.swpm-members.php:27 views/admin_member_form_common_part.php:11
792
+ msgid "Access Starts"
793
+ msgstr ""
794
+
795
+ #: classes/class.swpm-members.php:28 views/admin_members_list.php:45
796
+ #: includes/swpm_mda_show_profile.php:31
797
+ msgid "Account State"
798
+ msgstr ""
799
+
800
+ #: classes/class.swpm-members.php:29
801
+ msgid "Last Login Date"
802
+ msgstr ""
803
+
804
+ #: classes/class.swpm-members.php:50
805
+ msgid "Set Status to Active"
806
+ msgstr ""
807
+
808
+ #: classes/class.swpm-members.php:51
809
+ msgid "Set Status to Active and Notify"
810
+ msgstr ""
811
+
812
+ #: classes/class.swpm-members.php:52
813
+ msgid "Set Status to Inactive"
814
+ msgstr ""
815
+
816
+ #: classes/class.swpm-members.php:53
817
+ msgid "Set Status to Pending"
818
+ msgstr ""
819
+
820
+ #: classes/class.swpm-members.php:54
821
+ msgid "Set Status to Expired"
822
+ msgstr ""
823
+
824
+ #: classes/class.swpm-members.php:80
825
+ msgid "incomplete"
826
+ msgstr ""
827
+
828
+ #: classes/class.swpm-members.php:221
829
+ msgid "No member found."
830
+ msgstr ""
831
+
832
+ #: classes/class.swpm-members.php:376
833
+ msgid "Error! Nonce verification failed for user delete from admin end."
834
+ msgstr ""
835
+
836
+ #: classes/class.swpm-members.php:522
837
+ msgid ""
838
+ "Error! Nonce security verification failed for Bulk Change Membership Level "
839
+ "action. Clear cache and try again."
840
+ msgstr ""
841
+
842
+ #: classes/class.swpm-members.php:530 classes/class.swpm-members.php:567
843
+ msgid "Error! Please select a membership level first."
844
+ msgstr ""
845
+
846
+ #: classes/class.swpm-members.php:547
847
+ msgid "Membership level change operation completed successfully."
848
+ msgstr ""
849
+
850
+ #: classes/class.swpm-members.php:559
851
+ msgid ""
852
+ "Error! Nonce security verification failed for Bulk Change Access Starts Date "
853
+ "action. Clear cache and try again."
854
+ msgstr ""
855
+
856
+ #: classes/class.swpm-members.php:584
857
+ msgid "Access starts date change operation successfully completed."
858
+ msgstr ""
859
+
860
+ #: classes/class.swpm-members.php:713
861
+ msgid "Simple WP Membership::Members"
862
+ msgstr ""
863
+
864
+ #: classes/class.swpm-members.php:714 views/admin_members_list.php:69
865
+ msgid "Add New"
866
+ msgstr ""
867
+
868
+ #: classes/class.swpm-members.php:719 views/admin_add.php:7
869
+ msgid "Add Member"
870
+ msgstr ""
871
+
872
+ #: classes/class.swpm-members.php:720
873
+ msgid "Bulk Operation"
874
+ msgstr ""
875
+
876
+ #: classes/class.swpm-membership-level.php:52
877
+ msgid ""
878
+ "Error! Nonce verification failed for membership level creation from admin "
879
+ "end."
880
+ msgstr ""
881
+
882
+ #: classes/class.swpm-membership-level.php:68
883
+ msgid "Membership Level Creation Successful."
884
+ msgstr ""
885
+
886
+ #: classes/class.swpm-membership-level.php:84
887
+ msgid ""
888
+ "Error! Nonce verification failed for membership level edit from admin end."
889
+ msgstr ""
890
+
891
+ #: classes/class.swpm-membership-level.php:100
892
+ msgid "Membership Level Updated Successfully."
893
+ msgstr ""
894
+
895
+ #: classes/class.swpm-membership-levels.php:22
896
+ msgid "Role"
897
+ msgstr ""
898
+
899
+ #: classes/class.swpm-membership-levels.php:23
900
+ msgid "Access Valid For/Until"
901
+ msgstr ""
902
+
903
+ #: classes/class.swpm-membership-levels.php:199
904
+ msgid ""
905
+ "Error! Nonce verification failed for membership level delete from admin end."
906
+ msgstr ""
907
+
908
+ #: classes/class.swpm-membership-levels.php:218 views/admin_members_list.php:56
909
+ #: views/payments/admin_all_payment_transactions.php:16 views/template-1.php:53
910
+ #: views/template-2.php:54
911
+ msgid "Search"
912
+ msgstr ""
913
+
914
+ #: classes/class.swpm-membership-levels.php:265
915
+ msgid "Simple WP Membership::Membership Levels"
916
+ msgstr ""
917
+
918
+ #: classes/class.swpm-membership-levels.php:270
919
+ msgid "Add Level"
920
+ msgstr ""
921
+
922
+ #: classes/class.swpm-membership-levels.php:271
923
+ msgid "Manage Content Protection"
924
+ msgstr ""
925
+
926
+ #: classes/class.swpm-membership-levels.php:272
927
+ msgid "Category Protection"
928
+ msgstr ""
929
+
930
+ #: classes/class.swpm-membership-levels.php:273
931
+ msgid "Post and Page Protection"
932
+ msgstr ""
933
+
934
+ #: classes/class.swpm-post-list.php:44 classes/class.swpm-post-list.php:53
935
+ #: classes/class.swpm-post-list.php:63
936
+ msgid "Title"
937
+ msgstr ""
938
+
939
+ #: classes/class.swpm-post-list.php:45 classes/class.swpm-post-list.php:54
940
+ #: classes/class.swpm-post-list.php:64
941
+ msgid "Author"
942
+ msgstr ""
943
+
944
+ #: classes/class.swpm-post-list.php:46 classes/class.swpm-post-list.php:56
945
+ #: classes/class.swpm-post-list.php:66
946
+ msgid "Status"
947
+ msgstr ""
948
+
949
+ #: classes/class.swpm-post-list.php:55
950
+ msgid "Categories"
951
+ msgstr ""
952
+
953
+ #: classes/class.swpm-post-list.php:65
954
+ msgid "Type"
955
+ msgstr ""
956
+
957
+ #: classes/class.swpm-post-list.php:109
958
+ msgid ""
959
+ "Error! Nonce security verification failed for Post Protection Update action. "
960
+ "Clear cache and try again."
961
+ msgstr ""
962
+
963
+ #: classes/class.swpm-post-list.php:132
964
+ msgid "Protection settings updated!"
965
+ msgstr ""
966
+
967
+ #: classes/class.swpm-protection.php:22
968
+ msgid ""
969
+ "The category or parent category of this post is protected. You can change "
970
+ "the category protection settings from the "
971
+ msgstr ""
972
+
973
+ #: classes/class.swpm-protection.php:23
974
+ msgid "category protection menu"
975
+ msgstr ""
976
+
977
+ #: classes/class.swpm-settings.php:25 classes/class.swpm-settings.php:53
978
+ msgid "General Settings"
979
+ msgstr ""
980
+
981
+ #: classes/class.swpm-settings.php:26
982
+ msgid "Payment Settings"
983
+ msgstr ""
984
+
985
+ #: classes/class.swpm-settings.php:27
986
+ msgid "Email Settings"
987
+ msgstr ""
988
+
989
+ #: classes/class.swpm-settings.php:28
990
+ msgid "Tools"
991
+ msgstr ""
992
+
993
+ #: classes/class.swpm-settings.php:29 classes/class.swpm-settings.php:569
994
+ msgid "Advanced Settings"
995
+ msgstr ""
996
+
997
+ #: classes/class.swpm-settings.php:30
998
+ msgid "Addons Settings"
999
+ msgstr ""
1000
+
1001
+ #: classes/class.swpm-settings.php:52
1002
+ msgid "Plugin Documentation"
1003
+ msgstr ""
1004
+
1005
+ #: classes/class.swpm-settings.php:56
1006
+ msgid "Enable Free Membership"
1007
+ msgstr ""
1008
+
1009
+ #: classes/class.swpm-settings.php:62
1010
+ msgid ""
1011
+ "Enable/disable registration for free membership level. When you enable this "
1012
+ "option, make sure to specify a free membership level ID in the field below."
1013
+ msgstr ""
1014
+
1015
+ #: classes/class.swpm-settings.php:67
1016
+ msgid "Free Membership Level ID"
1017
+ msgstr ""
1018
+
1019
+ #: classes/class.swpm-settings.php:73
1020
+ msgid "Assign free membership level ID"
1021
+ msgstr ""
1022
+
1023
+ #: classes/class.swpm-settings.php:78
1024
+ msgid "Enable More Tag Protection"
1025
+ msgstr ""
1026
+
1027
+ #: classes/class.swpm-settings.php:84
1028
+ msgid ""
1029
+ "Enables or disables \"more\" tag protection in the posts and pages. Anything "
1030
+ "after the More tag is protected. Anything before the more tag is teaser "
1031
+ "content."
1032
+ msgstr ""
1033
+
1034
+ #: classes/class.swpm-settings.php:89
1035
+ msgid "Hide Adminbar"
1036
+ msgstr ""
1037
+
1038
+ #: classes/class.swpm-settings.php:95
1039
+ msgid ""
1040
+ "WordPress shows an admin toolbar to the logged in users of the site. Check "
1041
+ "this if you want to hide that admin toolbar in the frontend of your site."
1042
+ msgstr ""
1043
+
1044
+ #: classes/class.swpm-settings.php:100
1045
+ msgid "Show Adminbar to Admin"
1046
+ msgstr ""
1047
+
1048
+ #: classes/class.swpm-settings.php:106
1049
+ msgid ""
1050
+ "Use this option if you want to show the admin toolbar to admin users only. "
1051
+ "The admin toolbar will be hidden for all other users."
1052
+ msgstr ""
1053
+
1054
+ #: classes/class.swpm-settings.php:111
1055
+ msgid "Disable Access to WP Dashboard"
1056
+ msgstr ""
1057
+
1058
+ #: classes/class.swpm-settings.php:117
1059
+ msgid ""
1060
+ "WordPress allows a standard wp user to be able to go to the wp-admin URL and "
1061
+ "access his profile from the wp dashboard. Using this option will prevent any "
1062
+ "non-admin users from going to the wp dashboard."
1063
+ msgstr ""
1064
+
1065
+ #: classes/class.swpm-settings.php:123 classes/class.swpm-settings.php:761
1066
+ msgid "Default Account Status"
1067
+ msgstr ""
1068
+
1069
+ #: classes/class.swpm-settings.php:131
1070
+ msgid ""
1071
+ "Select the default account status for newly registered users. If you want to "
1072
+ "manually approve the members then you can set the status to \"Pending\"."
1073
+ msgstr ""
1074
+
1075
+ #: classes/class.swpm-settings.php:137
1076
+ msgid "Members Must be Logged in to Comment"
1077
+ msgstr ""
1078
+
1079
+ #: classes/class.swpm-settings.php:143
1080
+ msgid ""
1081
+ "Enable this option if you only want the members of the site to be able to "
1082
+ "post a comment."
1083
+ msgstr ""
1084
+
1085
+ #: classes/class.swpm-settings.php:154
1086
+ msgid "Pages Settings"
1087
+ msgstr ""
1088
+
1089
+ #: classes/class.swpm-settings.php:157
1090
+ msgid "Login Page URL"
1091
+ msgstr ""
1092
+
1093
+ #: classes/class.swpm-settings.php:168
1094
+ msgid "Registration Page URL"
1095
+ msgstr ""
1096
+
1097
+ #: classes/class.swpm-settings.php:179
1098
+ msgid "Join Us Page URL"
1099
+ msgstr ""
1100
+
1101
+ #: classes/class.swpm-settings.php:190
1102
+ msgid "Edit Profile Page URL"
1103
+ msgstr ""
1104
+
1105
+ #: classes/class.swpm-settings.php:201
1106
+ msgid "Password Reset Page URL"
1107
+ msgstr ""
1108
+
1109
+ #: classes/class.swpm-settings.php:211
1110
+ msgid "Test & Debug Settings"
1111
+ msgstr ""
1112
+
1113
+ #: classes/class.swpm-settings.php:213
1114
+ msgid "Check this option to enable debug logging."
1115
+ msgstr ""
1116
+
1117
+ #: classes/class.swpm-settings.php:214
1118
+ msgid ""
1119
+ " This can be useful when troubleshooting an issue. Turn it off and reset the "
1120
+ "log files after the troubleshooting is complete."
1121
+ msgstr ""
1122
+
1123
+ #: classes/class.swpm-settings.php:216
1124
+ msgid "View general debug log file by clicking "
1125
+ msgstr ""
1126
+
1127
+ #: classes/class.swpm-settings.php:216 classes/class.swpm-settings.php:217
1128
+ #: classes/class.swpm-settings.php:218
1129
+ msgid "here"
1130
+ msgstr ""
1131
+
1132
+ #: classes/class.swpm-settings.php:217
1133
+ msgid "View login related debug log file by clicking "
1134
+ msgstr ""
1135
+
1136
+ #: classes/class.swpm-settings.php:218
1137
+ msgid "Reset debug log files by clicking "
1138
+ msgstr ""
1139
+
1140
+ #: classes/class.swpm-settings.php:221
1141
+ msgid "Enable Debug"
1142
+ msgstr ""
1143
+
1144
+ #: classes/class.swpm-settings.php:232
1145
+ msgid "Enable Sandbox Testing"
1146
+ msgstr ""
1147
+
1148
+ #: classes/class.swpm-settings.php:238
1149
+ msgid "Enable this option if you want to do sandbox payment testing."
1150
+ msgstr ""
1151
+
1152
+ #: classes/class.swpm-settings.php:246
1153
+ msgid "Stripe Global Settings"
1154
+ msgstr ""
1155
+
1156
+ #: classes/class.swpm-settings.php:249
1157
+ msgid "Pre-fill Member Email Address"
1158
+ msgstr ""
1159
+
1160
+ #: classes/class.swpm-settings.php:255
1161
+ msgid ""
1162
+ "Pre-fills the email address of the logged-in member on the Stripe checkout "
1163
+ "form when possible"
1164
+ msgstr ""
1165
+
1166
+ #: classes/class.swpm-settings.php:260
1167
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:115
1168
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:399
1169
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:115
1170
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:381
1171
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:156
1172
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:148
1173
+ msgid "Test Publishable Key"
1174
+ msgstr ""
1175
+
1176
+ #: classes/class.swpm-settings.php:266
1177
+ msgid "Stripe API Test publishable key"
1178
+ msgstr ""
1179
+
1180
+ #: classes/class.swpm-settings.php:271
1181
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:122
1182
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:406
1183
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:122
1184
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:388
1185
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:164
1186
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:156
1187
+ msgid "Test Secret Key"
1188
+ msgstr ""
1189
+
1190
+ #: classes/class.swpm-settings.php:277
1191
+ msgid "Stripe API Test secret key"
1192
+ msgstr ""
1193
+
1194
+ #: classes/class.swpm-settings.php:282
1195
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:129
1196
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:413
1197
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:129
1198
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:395
1199
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:172
1200
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:164
1201
+ msgid "Live Publishable Key"
1202
+ msgstr ""
1203
+
1204
+ #: classes/class.swpm-settings.php:288
1205
+ msgid "Stripe API Live publishable key"
1206
+ msgstr ""
1207
+
1208
+ #: classes/class.swpm-settings.php:293
1209
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:136
1210
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:420
1211
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:136
1212
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:402
1213
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:180
1214
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:172
1215
+ msgid "Live Secret Key"
1216
+ msgstr ""
1217
+
1218
+ #: classes/class.swpm-settings.php:299
1219
+ msgid "Stripe API Live secret key"
1220
+ msgstr ""
1221
+
1222
+ #: classes/class.swpm-settings.php:309
1223
+ msgid "Email Settings Overview"
1224
+ msgstr ""
1225
+
1226
+ #: classes/class.swpm-settings.php:310
1227
+ msgid "Email Misc. Settings"
1228
+ msgstr ""
1229
+
1230
+ #: classes/class.swpm-settings.php:314
1231
+ msgid "From Email Address"
1232
+ msgstr ""
1233
+
1234
+ #: classes/class.swpm-settings.php:326
1235
+ msgid "Allow HTML in Emails"
1236
+ msgstr ""
1237
+
1238
+ #: classes/class.swpm-settings.php:337
1239
+ msgid "Email Settings (Prompt to Complete Registration )"
1240
+ msgstr ""
1241
+
1242
+ #: classes/class.swpm-settings.php:340 classes/class.swpm-settings.php:371
1243
+ #: classes/class.swpm-settings.php:452 classes/class.swpm-settings.php:477
1244
+ #: classes/class.swpm-settings.php:513 classes/class.swpm-settings.php:538
1245
+ msgid "Email Subject"
1246
+ msgstr ""
1247
+
1248
+ #: classes/class.swpm-settings.php:351 classes/class.swpm-settings.php:382
1249
+ #: classes/class.swpm-settings.php:463 classes/class.swpm-settings.php:488
1250
+ #: classes/class.swpm-settings.php:524 classes/class.swpm-settings.php:549
1251
+ msgid "Email Body"
1252
+ msgstr ""
1253
+
1254
+ #: classes/class.swpm-settings.php:362
1255
+ msgid ""
1256
+ "Enter the email address where you want the admin notification email to be "
1257
+ "sent to."
1258
+ msgstr ""
1259
+
1260
+ #: classes/class.swpm-settings.php:363
1261
+ msgid ""
1262
+ " You can put multiple email addresses separated by comma (,) in the above "
1263
+ "field to send the notification to multiple email addresses."
1264
+ msgstr ""
1265
+
1266
+ #: classes/class.swpm-settings.php:365
1267
+ msgid "Enter the subject for the admin notification email."
1268
+ msgstr ""
1269
+
1270
+ #: classes/class.swpm-settings.php:366
1271
+ msgid ""
1272
+ "This email will be sent to the admin when a new user completes the "
1273
+ "membership registration. Only works if you have enabled the \"Send "
1274
+ "Notification to Admin\" option above."
1275
+ msgstr ""
1276
+
1277
+ #: classes/class.swpm-settings.php:368
1278
+ msgid "Email Settings (Registration Complete)"
1279
+ msgstr ""
1280
+
1281
+ #: classes/class.swpm-settings.php:393
1282
+ msgid "Send Notification to Admin"
1283
+ msgstr ""
1284
+
1285
+ #: classes/class.swpm-settings.php:399
1286
+ msgid ""
1287
+ "Enable this option if you want the admin to receive a notification when a "
1288
+ "member registers."
1289
+ msgstr ""
1290
+
1291
+ #: classes/class.swpm-settings.php:404
1292
+ msgid "Admin Email Address"
1293
+ msgstr ""
1294
+
1295
+ #: classes/class.swpm-settings.php:415
1296
+ msgid "Admin Notification Email Subject"
1297
+ msgstr ""
1298
+
1299
+ #: classes/class.swpm-settings.php:426
1300
+ msgid "Admin Notification Email Body"
1301
+ msgstr ""
1302
+
1303
+ #: classes/class.swpm-settings.php:438
1304
+ msgid "Send Email to Member When Added via Admin Dashboard"
1305
+ msgstr ""
1306
+
1307
+ #: classes/class.swpm-settings.php:449
1308
+ msgid "Email Settings (Password Reset)"
1309
+ msgstr ""
1310
+
1311
+ #: classes/class.swpm-settings.php:474
1312
+ msgid " Email Settings (Account Upgrade Notification)"
1313
+ msgstr ""
1314
+
1315
+ #: classes/class.swpm-settings.php:499
1316
+ msgid "Disable Email Notification After Upgrade"
1317
+ msgstr ""
1318
+
1319
+ #: classes/class.swpm-settings.php:505
1320
+ msgid ""
1321
+ "You can use this option to disable the email notification that gets sent to "
1322
+ "the members when they make a payment for upgrade or renewal."
1323
+ msgstr ""
1324
+
1325
+ #: classes/class.swpm-settings.php:510
1326
+ msgid " Email Settings (Bulk Account Activate Notification)"
1327
+ msgstr ""
1328
+
1329
+ #: classes/class.swpm-settings.php:535
1330
+ msgid " Email Settings (Email Activation)"
1331
+ msgstr ""
1332
+
1333
+ #: classes/class.swpm-settings.php:573
1334
+ msgid "Enable Expired Account Login"
1335
+ msgstr ""
1336
+
1337
+ #: classes/class.swpm-settings.php:579
1338
+ msgid ""
1339
+ "When enabled, expired members will be able to log into the system but won't "
1340
+ "be able to view any protected content. This allows them to easily renew "
1341
+ "their account by making another payment."
1342
+ msgstr ""
1343
+
1344
+ #: classes/class.swpm-settings.php:585
1345
+ msgid "Membership Renewal URL"
1346
+ msgstr ""
1347
+
1348
+ #: classes/class.swpm-settings.php:591
1349
+ msgid ""
1350
+ "You can create a renewal page for your site. Read <a href=\"https://simple-"
1351
+ "membership-plugin.com/creating-membership-renewal-button/\" target=\"_blank"
1352
+ "\">this documentation</a> to learn how to create a renewal page."
1353
+ msgstr ""
1354
+
1355
+ #: classes/class.swpm-settings.php:597
1356
+ msgid "After Registration Redirect URL"
1357
+ msgstr ""
1358
+
1359
+ #: classes/class.swpm-settings.php:603
1360
+ msgid ""
1361
+ "You can enter an URL here to redirect the members to this page after they "
1362
+ "submit the registration form. Read <a href=\"https://simple-membership-"
1363
+ "plugin.com/configure-after-registration-redirect-for-members/\" target="
1364
+ "\"_blank\">this documentation</a> to learn how to setup after registration "
1365
+ "redirect."
1366
+ msgstr ""
1367
+
1368
+ #: classes/class.swpm-settings.php:609
1369
+ msgid "Enable Auto Login After Registration"
1370
+ msgstr ""
1371
+
1372
+ #: classes/class.swpm-settings.php:615
1373
+ msgid ""
1374
+ "Use this option if you want the members to be automatically logged into your "
1375
+ "site right after they complete the registration. This option will override "
1376
+ "any after registration redirection and instead it will trigger the after "
1377
+ "login redirection. Read <a href=\"https://simple-membership-plugin.com/"
1378
+ "configure-auto-login-after-registration-members/\" target=\"_blank\">this "
1379
+ "documentation</a> to learn more."
1380
+ msgstr ""
1381
+
1382
+ #: classes/class.swpm-settings.php:621
1383
+ msgid "Hide Registration Form to Logged Users"
1384
+ msgstr ""
1385
+
1386
+ #: classes/class.swpm-settings.php:627
1387
+ msgid ""
1388
+ "Use this option if you want to hide the registration form to the logged-in "
1389
+ "members. If logged-in members visit the registration page, they will see a "
1390
+ "message instead of the registration form."
1391
+ msgstr ""
1392
+
1393
+ #: classes/class.swpm-settings.php:633
1394
+ msgid "After Logout Redirect URL"
1395
+ msgstr ""
1396
+
1397
+ #: classes/class.swpm-settings.php:639
1398
+ msgid ""
1399
+ "You can enter an URL here to redirect the members to this page after they "
1400
+ "click the logout link to logout from your site."
1401
+ msgstr ""
1402
+
1403
+ #: classes/class.swpm-settings.php:645
1404
+ msgid "Logout Member on Browser Close"
1405
+ msgstr ""
1406
+
1407
+ #: classes/class.swpm-settings.php:651
1408
+ msgid ""
1409
+ "Enable this option if you want the member to be logged out of the account "
1410
+ "when he closes the browser."
1411
+ msgstr ""
1412
+
1413
+ #: classes/class.swpm-settings.php:657
1414
+ msgid "Allow Account Deletion"
1415
+ msgstr ""
1416
+
1417
+ #: classes/class.swpm-settings.php:663
1418
+ msgid "Allow users to delete their accounts."
1419
+ msgstr ""
1420
+
1421
+ #: classes/class.swpm-settings.php:669
1422
+ msgid "Force Strong Password for Members"
1423
+ msgstr ""
1424
+
1425
+ #: classes/class.swpm-settings.php:675
1426
+ msgid ""
1427
+ "Enable this if you want the users to be forced to use a strong password for "
1428
+ "their accounts."
1429
+ msgstr ""
1430
+
1431
+ #: classes/class.swpm-settings.php:681
1432
+ msgid "Auto Delete Pending Account"
1433
+ msgstr ""
1434
+
1435
+ #: classes/class.swpm-settings.php:693
1436
+ msgid "Select how long you want to keep \"pending\" account."
1437
+ msgstr ""
1438
+
1439
+ #: classes/class.swpm-settings.php:699
1440
+ msgid "Admin Dashboard Access Permission"
1441
+ msgstr ""
1442
+
1443
+ #: classes/class.swpm-settings.php:712
1444
+ msgid ""
1445
+ "SWPM admin dashboard is accessible to admin users only (just like any other "
1446
+ "plugin). You can allow users with other WP user roles to access the SWPM "
1447
+ "admin dashboard by selecting a value here. Note that this option cannot work "
1448
+ "if you enabled the \"Disable Access to WP Dashboard\" option in General "
1449
+ "Settings."
1450
+ msgstr ""
1451
+
1452
+ #: classes/class.swpm-settings.php:718
1453
+ msgid "Force WP User Synchronization"
1454
+ msgstr ""
1455
+
1456
+ #: classes/class.swpm-settings.php:724
1457
+ msgid ""
1458
+ "Enable this option if you want to force the member login to be synchronized "
1459
+ "with WP user account. This can be useful if you are using another plugin "
1460
+ "that uses WP user records. For example: bbPress plugin."
1461
+ msgstr ""
1462
+
1463
+ #: classes/class.swpm-settings.php:729
1464
+ msgid "Create Member Accounts for New WP Users"
1465
+ msgstr ""
1466
+
1467
+ #: classes/class.swpm-settings.php:733
1468
+ msgid "Enable Auto Create Member Accounts"
1469
+ msgstr ""
1470
+
1471
+ #: classes/class.swpm-settings.php:739
1472
+ msgid ""
1473
+ "Enable this option to automatically create member accounts for any new WP "
1474
+ "user that is created by another plugin."
1475
+ msgstr ""
1476
+
1477
+ #: classes/class.swpm-settings.php:746
1478
+ msgid "Default Membership Level"
1479
+ msgstr ""
1480
+
1481
+ #: classes/class.swpm-settings.php:754
1482
+ msgid ""
1483
+ "When automatically creating a member account using this feature, the "
1484
+ "membership level of the user will be set to the one you specify here."
1485
+ msgstr ""
1486
+
1487
+ #: classes/class.swpm-settings.php:769
1488
+ msgid ""
1489
+ "When automatically creating a member account using this feature, the "
1490
+ "membership account status of the user will be set to the one you specify "
1491
+ "here."
1492
+ msgstr ""
1493
+
1494
+ #: classes/class.swpm-settings.php:775
1495
+ msgid "Payment Notification Forward URL"
1496
+ msgstr ""
1497
+
1498
+ #: classes/class.swpm-settings.php:781
1499
+ msgid ""
1500
+ "You can enter an URL here to forward the payment notification after the "
1501
+ "membership payment has been processed by this plugin. Useful if you want to "
1502
+ "forward the payment notification to an external script for further "
1503
+ "processing."
1504
+ msgstr ""
1505
+
1506
+ #: classes/class.swpm-settings.php:786 views/add.php:68
1507
+ msgid "Terms and Conditions"
1508
+ msgstr ""
1509
+
1510
+ #: classes/class.swpm-settings.php:790
1511
+ msgid "Enable Terms and Conditions"
1512
+ msgstr ""
1513
+
1514
+ #: classes/class.swpm-settings.php:796
1515
+ msgid "Users must accept the terms before they can complete the registration."
1516
+ msgstr ""
1517
+
1518
+ #: classes/class.swpm-settings.php:801
1519
+ msgid "Terms and Conditions Page URL"
1520
+ msgstr ""
1521
+
1522
+ #: classes/class.swpm-settings.php:807
1523
+ msgid ""
1524
+ "Enter the URL of your terms and conditions page. You can create a WordPress "
1525
+ "page and specify your terms in there then specify the URL of that page in "
1526
+ "the above field."
1527
+ msgstr ""
1528
+
1529
+ #: classes/class.swpm-settings.php:812
1530
+ msgid "Enable Privacy Policy"
1531
+ msgstr "Activer la politique de confidentialité"
1532
+
1533
+ #: classes/class.swpm-settings.php:818
1534
+ msgid "Users must accept it before they can complete the registration."
1535
+ msgstr ""
1536
+
1537
+ #: classes/class.swpm-settings.php:823
1538
+ msgid "Privacy Policy Page URL"
1539
+ msgstr ""
1540
+
1541
+ #: classes/class.swpm-settings.php:829
1542
+ msgid "Enter the URL of your privacy policy page."
1543
+ msgstr ""
1544
+
1545
+ #: classes/class.swpm-settings.php:927
1546
+ #, php-format
1547
+ msgid "Visit the %s to read setup and configuration documentation."
1548
+ msgstr ""
1549
+
1550
+ #: classes/class.swpm-settings.php:927
1551
+ msgid "Simple Membership Plugin Site"
1552
+ msgstr ""
1553
+
1554
+ #: classes/class.swpm-settings.php:928
1555
+ #, php-format
1556
+ msgid "Please %s if you like the plugin."
1557
+ msgstr ""
1558
+
1559
+ #: classes/class.swpm-settings.php:928
1560
+ msgid "give us a rating"
1561
+ msgstr ""
1562
+
1563
+ #: classes/class.swpm-settings.php:945 classes/class.swpm-settings.php:991
1564
+ #: classes/class.swpm-settings.php:1019
1565
+ msgid "Settings updated!"
1566
+ msgstr ""
1567
+
1568
+ #: classes/class.swpm-settings.php:980 views/admin_tools_settings.php:82
1569
+ msgid "This documentation"
1570
+ msgstr ""
1571
+
1572
+ #: classes/class.swpm-settings.php:1034
1573
+ msgid ""
1574
+ "Note: You cannot enable both the \"Disable Access to WP Dashboard\" and "
1575
+ "\"Admin Dashboard Access Permission\" options at the same time. Only use one "
1576
+ "of those options."
1577
+ msgstr ""
1578
+
1579
+ #: classes/class.swpm-settings.php:1200
1580
+ msgid "Simple WP Membership::Settings"
1581
+ msgstr ""
1582
+
1583
+ #: classes/class.swpm-utils-member.php:36
1584
+ #: classes/class.swpm-utils-member.php:44
1585
+ #: classes/class.swpm-utils-member.php:52
1586
+ #: classes/class.swpm-utils-member.php:62
1587
+ #: classes/class.swpm-utils-member.php:68
1588
+ msgid "User is not logged in."
1589
+ msgstr ""
1590
+
1591
+ #: classes/class.swpm-utils-member.php:88
1592
+ msgid "No Expiry"
1593
+ msgstr ""
1594
+
1595
+ #: classes/class.swpm-utils-misc.php:57
1596
+ msgid "Registration"
1597
+ msgstr ""
1598
+
1599
+ #: classes/class.swpm-utils-misc.php:85
1600
+ msgid "Member Login"
1601
+ msgstr ""
1602
+
1603
+ #: classes/class.swpm-utils-misc.php:113
1604
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:135
1605
+ msgid "Profile"
1606
+ msgstr ""
1607
+
1608
+ #: classes/class.swpm-utils-misc.php:141
1609
+ msgid "Password Reset"
1610
+ msgstr "Réinitialisation du mot de passe"
1611
+
1612
+ #: classes/class.swpm-utils-misc.php:195
1613
+ #, php-format
1614
+ msgid ""
1615
+ "You will be automatically redirected in a few seconds. If not, please %s."
1616
+ msgstr ""
1617
+ "Tu vas être automatiquement redirigé dans quelques secondes. Sinon, %s svp."
1618
+
1619
+ #: classes/class.swpm-utils-misc.php:199
1620
+ msgid "Action Status"
1621
+ msgstr ""
1622
+
1623
+ #: classes/class.swpm-utils-misc.php:364
1624
+ msgid "Not a Member?"
1625
+ msgstr "Pas encore membre?"
1626
+
1627
+ #: classes/class.swpm-utils-misc.php:375
1628
+ msgid "renew"
1629
+ msgstr ""
1630
+
1631
+ #: classes/class.swpm-utils-misc.php:375
1632
+ msgid " your account to gain access to this content."
1633
+ msgstr ""
1634
+
1635
+ #: classes/class.swpm-utils-misc.php:433 classes/class.swpm-utils-misc.php:439
1636
+ msgid "Error! This action ("
1637
+ msgstr ""
1638
+
1639
+ #: classes/class.swpm-utils-misc.php:680
1640
+ msgid "(Please Select)"
1641
+ msgstr "(SVP sélectionner)"
1642
+
1643
+ #: classes/class.swpm-utils-misc.php:696
1644
+ msgid "PayPal Buy Now"
1645
+ msgstr ""
1646
+
1647
+ #: classes/class.swpm-utils-misc.php:697
1648
+ msgid "PayPal Subscription"
1649
+ msgstr ""
1650
+
1651
+ #: classes/class.swpm-utils-misc.php:698
1652
+ msgid "PayPal Smart Checkout"
1653
+ msgstr ""
1654
+
1655
+ #: classes/class.swpm-utils-misc.php:699
1656
+ msgid "Stripe Buy Now"
1657
+ msgstr ""
1658
+
1659
+ #: classes/class.swpm-utils-misc.php:700
1660
+ msgid "Stripe Subscription"
1661
+ msgstr ""
1662
+
1663
+ #: classes/class.swpm-utils-misc.php:701
1664
+ msgid "Stripe SCA Buy Now"
1665
+ msgstr ""
1666
+
1667
+ #: classes/class.swpm-utils-misc.php:702
1668
+ msgid "Stripe SCA Subscription"
1669
+ msgstr ""
1670
+
1671
+ #: classes/class.swpm-utils-misc.php:703
1672
+ msgid "Braintree Buy Now"
1673
+ msgstr ""
1674
+
1675
+ #: classes/class.swpm-utils-template.php:38
1676
+ msgid "Error! Failed to find a template path for the specified template: "
1677
+ msgstr ""
1678
+
1679
+ #: classes/class.swpm-utils.php:111
1680
+ msgid "Never"
1681
+ msgstr "Jamais"
1682
+
1683
+ #: classes/class.swpm-utils.php:119
1684
+ msgid "Male"
1685
+ msgstr ""
1686
+
1687
+ #: classes/class.swpm-utils.php:120
1688
+ msgid "Female"
1689
+ msgstr ""
1690
+
1691
+ #: classes/class.swpm-utils.php:121
1692
+ msgid "Not Specified"
1693
+ msgstr ""
1694
+
1695
+ #: classes/class.swpm-utils.php:126 views/admin_members_list.php:33
1696
+ msgid "Active"
1697
+ msgstr "Actif"
1698
+
1699
+ #: classes/class.swpm-utils.php:127 views/admin_members_list.php:34
1700
+ msgid "Inactive"
1701
+ msgstr "Inactif"
1702
+
1703
+ #: classes/class.swpm-utils.php:128 views/admin_members_list.php:35
1704
+ msgid "Activation Required"
1705
+ msgstr "Activation requise"
1706
+
1707
+ #: classes/class.swpm-utils.php:129 views/admin_members_list.php:36
1708
+ msgid "Pending"
1709
+ msgstr "En suspens"
1710
+
1711
+ #: classes/class.swpm-utils.php:130 views/admin_members_list.php:38
1712
+ msgid "Expired"
1713
+ msgstr "Expiré"
1714
+
1715
+ #: classes/class.swpm-utils.php:481 views/account_delete_warning.php:3
1716
+ msgid "Delete Account"
1717
+ msgstr ""
1718
+
1719
+ #: classes/class.swpm-wp-loaded-tasks.php:118
1720
+ msgid ""
1721
+ "You will be redirected to the previous page in a few seconds. If not, please "
1722
+ "<a href=\"\">click here</a>."
1723
+ msgstr ""
1724
+ "Tu vas être redirigé vers la page précédente dans quelques secondes. Sinon, "
1725
+ "<a href=“”>clique ici</a> svp."
1726
+
1727
+ #: classes/class.swpm-wp-loaded-tasks.php:121
1728
+ msgid "Success!"
1729
+ msgstr "C’est fait!"
1730
+
1731
+ #: classes/class.swpm-wp-loaded-tasks.php:129
1732
+ msgid "No token provided."
1733
+ msgstr ""
1734
+
1735
+ #: classes/class.swpm-wp-loaded-tasks.php:136
1736
+ msgid "Nonce check failed."
1737
+ msgstr ""
1738
+
1739
+ #: classes/class.swpm-wp-loaded-tasks.php:161
1740
+ msgid "Subscription has been cancelled."
1741
+ msgstr ""
1742
+
1743
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:70
1744
+ msgid "Your membership profile will be updated to reflect the payment."
1745
+ msgstr ""
1746
+
1747
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:71
1748
+ msgid "Your profile username: "
1749
+ msgstr "Ton nom d’utilisateur "
1750
+
1751
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:89
1752
+ msgid "Click on the following link to complete the registration."
1753
+ msgstr ""
1754
+
1755
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:90
1756
+ msgid "Click here to complete your paid registration"
1757
+ msgstr "Clique ici pour compléter ton inscription"
1758
+
1759
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:95
1760
+ msgid ""
1761
+ "If you have just made a membership payment then your payment is yet to be "
1762
+ "processed. Please check back in a few minutes. An email will be sent to you "
1763
+ "with the details shortly."
1764
+ msgstr ""
1765
+
1766
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:109
1767
+ msgid "Expiry: "
1768
+ msgstr ""
1769
+
1770
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:111
1771
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:156
1772
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:238
1773
+ msgid "You are not logged-in as a member"
1774
+ msgstr ""
1775
+
1776
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:133
1777
+ msgid "Logged in as: "
1778
+ msgstr "Connecté en tant que "
1779
+
1780
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:136
1781
+ #: views/loggedin.php:31
1782
+ msgid "Logout"
1783
+ msgstr "Se déconnecter"
1784
+
1785
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:139
1786
+ msgid "Login Here"
1787
+ msgstr "Se connecter"
1788
+
1789
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:140
1790
+ msgid "Not a member? "
1791
+ msgstr "Pas encore membre "
1792
+
1793
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:141
1794
+ msgid "Join Now"
1795
+ msgstr "Inscris-toi maintenant"
1796
+
1797
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:218
1798
+ msgid "Unsubscribe from PayPal"
1799
+ msgstr ""
1800
+
1801
+ #. translators: %1$d is error code; %2$s is error message.
1802
+ #: ipn/swpm-smart-checkout-ipn.php:264 ipn/swpm-smart-checkout-ipn.php:291
1803
+ #, php-format
1804
+ msgid ""
1805
+ "Error occured during payment verification. Error code: %1$d. Message: %2$s"
1806
+ msgstr ""
1807
+
1808
+ #. translators: %1$s is expected amount, %2$s is expected currency.
1809
+ #: ipn/swpm-smart-checkout-ipn.php:305
1810
+ #, php-format
1811
+ msgid ""
1812
+ "Payment check failed: invalid amount received. Expected %1$s %2$s, got %3$s "
1813
+ "%4$s."
1814
+ msgstr ""
1815
+
1816
+ #: ipn/swpm-smart-checkout-ipn.php:341
1817
+ msgid "Empty payment data received."
1818
+ msgstr ""
1819
+
1820
+ #: ipn/swpm-smart-checkout-ipn.php:400
1821
+ msgid "IPN product validation failed. Check the debug log for more details."
1822
+ msgstr ""
1823
+
1824
+ #: views/account_delete_warning.php:7
1825
+ msgid ""
1826
+ "You are about to delete an account. This will delete user data associated "
1827
+ "with this account. "
1828
+ msgstr ""
1829
+
1830
+ #: views/account_delete_warning.php:8
1831
+ msgid "It will also delete the associated WordPress user account."
1832
+ msgstr ""
1833
+
1834
+ #: views/account_delete_warning.php:9
1835
+ msgid ""
1836
+ "(NOTE: for safety, we do not allow deletion of any associated WordPress "
1837
+ "account with administrator role)."
1838
+ msgstr ""
1839
+
1840
+ #: views/account_delete_warning.php:10
1841
+ msgid "Continue?"
1842
+ msgstr ""
1843
+
1844
+ #: views/account_delete_warning.php:13
1845
+ msgid "Password: "
1846
+ msgstr "Mot de passe "
1847
+
1848
+ #: views/account_delete_warning.php:14
1849
+ msgid "Confirm Account Deletion"
1850
+ msgstr ""
1851
+
1852
+ #: views/add.php:26 views/admin_add.php:20 views/admin_edit.php:44
1853
+ #: views/edit.php:31 views/login.php:19
1854
+ msgid "Password"
1855
+ msgstr "Mot de passe"
1856
+
1857
+ #: views/add.php:30 views/edit.php:35
1858
+ msgid "Repeat Password"
1859
+ msgstr "Répéter le mot de passe"
1860
+
1861
+ #: views/add.php:68
1862
+ msgid "I accept the "
1863
+ msgstr ""
1864
+
1865
+ #: views/add.php:80
1866
+ msgid "I agree to the "
1867
+ msgstr ""
1868
+
1869
+ #: views/add.php:80
1870
+ msgid "Privacy Policy"
1871
+ msgstr ""
1872
+
1873
+ #: views/add.php:91
1874
+ msgid "Register"
1875
+ msgstr "S’inscrire"
1876
+
1877
+ #: views/admin_add.php:8
1878
+ msgid "Create a brand new user and add it to this site."
1879
+ msgstr ""
1880
+
1881
+ #: views/admin_add.php:12 views/admin_add.php:16 views/admin_add_level.php:12
1882
+ #: views/admin_add_level.php:16 views/admin_add_level.php:20
1883
+ #: views/admin_edit.php:19 views/admin_edit.php:40
1884
+ #: views/admin_edit_level.php:16 views/admin_edit_level.php:20
1885
+ #: views/admin_edit_level.php:24
1886
+ msgid "(required)"
1887
+ msgstr ""
1888
+
1889
+ #: views/admin_add.php:16 views/admin_edit.php:40
1890
+ msgid "E-mail"
1891
+ msgstr ""
1892
+
1893
+ #: views/admin_add.php:20
1894
+ msgid "(twice, required)"
1895
+ msgstr ""
1896
+
1897
+ #: views/admin_add.php:25 views/admin_edit.php:48
1898
+ msgid "Strength indicator"
1899
+ msgstr ""
1900
+
1901
+ #: views/admin_add.php:26 views/admin_edit.php:49
1902
+ msgid ""
1903
+ "Hint: The password should be at least seven characters long. To make it "
1904
+ "stronger, use upper and lower case letters, numbers and symbols like ! \" ? "
1905
+ "$ % ^ &amp; )."
1906
+ msgstr ""
1907
+
1908
+ #: views/admin_add.php:30 views/admin_edit.php:53 views/loggedin.php:10
1909
+ msgid "Account Status"
1910
+ msgstr "Status du compte"
1911
+
1912
+ #: views/admin_add.php:40
1913
+ msgid "Add New Member "
1914
+ msgstr ""
1915
+
1916
+ #: views/admin_add_level.php:6
1917
+ msgid "Add Membership Level"
1918
+ msgstr ""
1919
+
1920
+ #: views/admin_add_level.php:7
1921
+ msgid "Create new membership level."
1922
+ msgstr ""
1923
+
1924
+ #: views/admin_add_level.php:12 views/admin_edit_level.php:16
1925
+ msgid "Membership Level Name"
1926
+ msgstr ""
1927
+
1928
+ #: views/admin_add_level.php:16 views/admin_edit_level.php:20
1929
+ msgid "Default WordPress Role"
1930
+ msgstr ""
1931
+
1932
+ #: views/admin_add_level.php:20 views/admin_edit_level.php:24
1933
+ msgid "Access Duration"
1934
+ msgstr ""
1935
+
1936
+ #: views/admin_add_level.php:23
1937
+ msgid "No Expiry (Access for this level will not expire until cancelled"
1938
+ msgstr ""
1939
+
1940
+ #: views/admin_add_level.php:24 views/admin_add_level.php:26
1941
+ #: views/admin_add_level.php:28 views/admin_add_level.php:30
1942
+ #: views/admin_edit_level.php:28 views/admin_edit_level.php:31
1943
+ #: views/admin_edit_level.php:34 views/admin_edit_level.php:37
1944
+ msgid "Expire After"
1945
+ msgstr ""
1946
+
1947
+ #: views/admin_add_level.php:25 views/admin_edit_level.php:29
1948
+ msgid "Days (Access expires after given number of days)"
1949
+ msgstr ""
1950
+
1951
+ #: views/admin_add_level.php:27
1952
+ msgid "Weeks (Access expires after given number of weeks"
1953
+ msgstr ""
1954
+
1955
+ #: views/admin_add_level.php:29 views/admin_edit_level.php:35
1956
+ msgid "Months (Access expires after given number of months)"
1957
+ msgstr ""
1958
+
1959
+ #: views/admin_add_level.php:31 views/admin_edit_level.php:38
1960
+ msgid "Years (Access expires after given number of years)"
1961
+ msgstr ""
1962
+
1963
+ #: views/admin_add_level.php:32 views/admin_edit_level.php:40
1964
+ msgid "Fixed Date Expiry"
1965
+ msgstr ""
1966
+
1967
+ #: views/admin_add_level.php:33 views/admin_edit_level.php:41
1968
+ msgid "(Access expires on a fixed date)"
1969
+ msgstr ""
1970
+
1971
+ #: views/admin_add_level.php:38 views/admin_edit_level.php:46
1972
+ msgid "Email Activation"
1973
+ msgstr "Activation par email"
1974
+
1975
+ #: views/admin_add_level.php:43
1976
+ msgid ""
1977
+ "Enable new user activation via email. When enabled, members will need to "
1978
+ "click on an activation link that is sent to their email address to activate "
1979
+ "the account. Useful for free membership. "
1980
+ msgstr ""
1981
+
1982
+ #: views/admin_add_level.php:44 views/admin_edit_level.php:52
1983
+ msgid "View Documentation"
1984
+ msgstr ""
1985
+
1986
+ #: views/admin_add_level.php:45 views/admin_edit_level.php:53
1987
+ msgid "Note:"
1988
+ msgstr ""
1989
+
1990
+ #: views/admin_add_level.php:45
1991
+ msgid ""
1992
+ "If enabled, the member's decryptable password is temporarily stored in the "
1993
+ "database until the account is activated."
1994
+ msgstr ""
1995
+
1996
+ #: views/admin_add_level.php:52
1997
+ msgid "Add New Membership Level "
1998
+ msgstr ""
1999
+
2000
+ #: views/admin_add_ons_page.php:11
2001
+ msgid "Simple WP Membership::Add-ons"
2002
+ msgstr ""
2003
+
2004
+ #: views/admin_addon_settings.php:3
2005
+ msgid ""
2006
+ "Some of the simple membership plugin's addon settings and options will be "
2007
+ "displayed here (if you have them)"
2008
+ msgstr ""
2009
+
2010
+ #: views/admin_addon_settings.php:9
2011
+ msgid "Save Changes"
2012
+ msgstr ""
2013
+
2014
+ #: views/admin_category_list.php:5
2015
+ msgid ""
2016
+ "First of all, globally protect the category on your site by selecting "
2017
+ "\"General Protection\" from the drop-down box below and then select the "
2018
+ "categories that should be protected from non-logged in users."
2019
+ msgstr ""
2020
+
2021
+ #: views/admin_category_list.php:8
2022
+ msgid ""
2023
+ "Next, select an existing membership level from the drop-down box below and "
2024
+ "then select the categories you want to grant access to (for that particular "
2025
+ "membership level)."
2026
+ msgstr ""
2027
+
2028
+ #: views/admin_category_list.php:11 views/admin_post_list.php:11
2029
+ msgid "Read the "
2030
+ msgstr ""
2031
+
2032
+ #: views/admin_category_list.php:11
2033
+ msgid "category protection documentation"
2034
+ msgstr ""
2035
+
2036
+ #: views/admin_category_list.php:11
2037
+ msgid "to learn more."
2038
+ msgstr ""
2039
+
2040
+ #: views/admin_category_list.php:21 views/admin_post_list.php:34
2041
+ msgid "General Protection"
2042
+ msgstr ""
2043
+
2044
+ #: views/admin_edit.php:11
2045
+ msgid "Edit Member"
2046
+ msgstr ""
2047
+
2048
+ #: views/admin_edit.php:13
2049
+ msgid "Edit existing member details."
2050
+ msgstr ""
2051
+
2052
+ #: views/admin_edit.php:14
2053
+ msgid " You are currently editing member with member ID: "
2054
+ msgstr ""
2055
+
2056
+ #: views/admin_edit.php:44
2057
+ msgid "(twice, leave empty to retain old password)"
2058
+ msgstr ""
2059
+
2060
+ #: views/admin_edit.php:59
2061
+ msgid ""
2062
+ "This is the member's account status. If you want to manually activate an "
2063
+ "expired member's account then read"
2064
+ msgstr ""
2065
+
2066
+ #: views/admin_edit.php:60
2067
+ msgid "this documentation"
2068
+ msgstr ""
2069
+
2070
+ #: views/admin_edit.php:61
2071
+ msgid " to learn how to do it."
2072
+ msgstr ""
2073
+
2074
+ #: views/admin_edit.php:66
2075
+ msgid "Notify User"
2076
+ msgstr ""
2077
+
2078
+ #: views/admin_edit.php:69
2079
+ msgid ""
2080
+ "You can use this option to send a quick notification email to this member "
2081
+ "(the email will be sent when you hit the save button below)."
2082
+ msgstr ""
2083
+
2084
+ #: views/admin_edit.php:75
2085
+ msgid "Subscriber ID/Reference"
2086
+ msgstr ""
2087
+
2088
+ #: views/admin_edit.php:79
2089
+ msgid "Expiry Date"
2090
+ msgstr "Date d’expiration"
2091
+
2092
+ #: views/admin_edit.php:86
2093
+ msgid ""
2094
+ "This is calculated based on the current membership level assigned to this "
2095
+ "member and the expiry condition that you have set for that membership level."
2096
+ msgstr ""
2097
+
2098
+ #: views/admin_edit.php:91
2099
+ msgid "Last Accessed Date"
2100
+ msgstr ""
2101
+
2102
+ #: views/admin_edit.php:94 views/admin_edit.php:101
2103
+ msgid "This value gets updated when this member logs into your site."
2104
+ msgstr ""
2105
+
2106
+ #: views/admin_edit.php:98
2107
+ msgid "Last Accessed From IP"
2108
+ msgstr ""
2109
+
2110
+ #: views/admin_edit.php:109
2111
+ msgid "Save Data"
2112
+ msgstr ""
2113
+
2114
+ #: views/admin_edit.php:114
2115
+ msgid "Delete User Profile"
2116
+ msgstr ""
2117
+
2118
+ #: views/admin_edit_level.php:6
2119
+ msgid "Edit membership level"
2120
+ msgstr ""
2121
+
2122
+ #: views/admin_edit_level.php:9
2123
+ msgid ""
2124
+ "You can edit details of a selected membership level from this interface. "
2125
+ msgstr ""
2126
+
2127
+ #: views/admin_edit_level.php:10
2128
+ msgid "You are currently editing: "
2129
+ msgstr ""
2130
+
2131
+ #: views/admin_edit_level.php:27
2132
+ msgid "No Expiry (Access for this level will not expire until cancelled)"
2133
+ msgstr ""
2134
+
2135
+ #: views/admin_edit_level.php:32
2136
+ msgid "Weeks (Access expires after given number of weeks)"
2137
+ msgstr ""
2138
+
2139
+ #: views/admin_edit_level.php:51
2140
+ msgid ""
2141
+ "Enable new user activation via email. When enabled, members will need to "
2142
+ "click on an activation link that is sent to their email address to activate "
2143
+ "the account. Useful for free membership."
2144
+ msgstr ""
2145
+
2146
+ #: views/admin_edit_level.php:53
2147
+ msgid ""
2148
+ "If enabled, decryptable member password is temporarily stored in the "
2149
+ "database until the account is activated."
2150
+ msgstr ""
2151
+
2152
+ #: views/admin_edit_level.php:60
2153
+ msgid "Save Membership Level "
2154
+ msgstr ""
2155
+
2156
+ #: views/admin_member_form_common_part.php:23
2157
+ #: includes/swpm_mda_show_profile.php:37
2158
+ msgid "Gender"
2159
+ msgstr "Genre"
2160
+
2161
+ #: views/admin_member_form_common_part.php:30 views/edit.php:47
2162
+ #: includes/swpm_mda_show_profile.php:34
2163
+ msgid "Phone"
2164
+ msgstr "Téléphone"
2165
+
2166
+ #: views/admin_member_form_common_part.php:34 views/edit.php:51
2167
+ msgid "Street"
2168
+ msgstr "Rue"
2169
+
2170
+ #: views/admin_member_form_common_part.php:38 views/edit.php:55
2171
+ msgid "City"
2172
+ msgstr "Ville"
2173
+
2174
+ #: views/admin_member_form_common_part.php:42 views/edit.php:59
2175
+ msgid "State"
2176
+ msgstr "Province"
2177
+
2178
+ #: views/admin_member_form_common_part.php:46 views/edit.php:63
2179
+ msgid "Zipcode"
2180
+ msgstr "Code postal"
2181
+
2182
+ #: views/admin_member_form_common_part.php:50 views/edit.php:67
2183
+ #: includes/swpm_mda_show_profile.php:33
2184
+ msgid "Country"
2185
+ msgstr "Pays"
2186
+
2187
+ #: views/admin_member_form_common_part.php:54
2188
+ #: includes/swpm_mda_show_profile.php:38
2189
+ msgid "Company"
2190
+ msgstr "Companie"
2191
+
2192
+ #: views/admin_member_form_common_part.php:58
2193
+ #: includes/swpm_mda_show_profile.php:36
2194
+ msgid "Member Since"
2195
+ msgstr "Membre depuis"
2196
+
2197
+ #: views/admin_members_list.php:32
2198
+ msgid "All"
2199
+ msgstr "Tout"
2200
+
2201
+ #: views/admin_members_list.php:37 views/admin_members_list.php:47
2202
+ msgid "Incomplete"
2203
+ msgstr "Incomplet"
2204
+
2205
+ #: views/admin_membership_manage.php:19
2206
+ msgid "Example Content Protection Settings"
2207
+ msgstr ""
2208
+
2209
+ #: views/admin_post_list.php:5
2210
+ msgid ""
2211
+ "First of all, globally protect posts and pages on your site by selecting "
2212
+ "\"General Protection\" from the drop-down box below and then select posts "
2213
+ "and pages that should be protected from non-logged in users."
2214
+ msgstr ""
2215
+
2216
+ #: views/admin_post_list.php:8
2217
+ msgid ""
2218
+ "Next, select an existing membership level from the drop-down box below and "
2219
+ "then select posts and pages you want to grant access to (for that particular "
2220
+ "membership level)."
2221
+ msgstr ""
2222
+
2223
+ #: views/admin_post_list.php:11
2224
+ msgid "bulk protect posts and pages documentation"
2225
+ msgstr ""
2226
+
2227
+ #: views/admin_post_list.php:11
2228
+ msgid " to learn how to use it."
2229
+ msgstr ""
2230
+
2231
+ #: views/admin_tools_settings.php:14
2232
+ msgid "The required pages have been re-created."
2233
+ msgstr ""
2234
+
2235
+ #: views/admin_tools_settings.php:21
2236
+ msgid "Generate a Registration Completion link"
2237
+ msgstr ""
2238
+
2239
+ #: views/admin_tools_settings.php:24
2240
+ msgid ""
2241
+ "You can manually generate a registration completion link here and give it to "
2242
+ "your customer if they have missed the email that was automatically sent out "
2243
+ "to them after the payment."
2244
+ msgstr ""
2245
+
2246
+ #: views/admin_tools_settings.php:29
2247
+ msgid "Generate Registration Completion Link"
2248
+ msgstr ""
2249
+
2250
+ #: views/admin_tools_settings.php:32
2251
+ msgid "OR"
2252
+ msgstr ""
2253
+
2254
+ #: views/admin_tools_settings.php:33
2255
+ msgid "For All Incomplete Registrations"
2256
+ msgstr ""
2257
+
2258
+ #: views/admin_tools_settings.php:38
2259
+ msgid "Send Registration Reminder Email Too"
2260
+ msgstr ""
2261
+
2262
+ #: views/admin_tools_settings.php:44
2263
+ msgid "Submit"
2264
+ msgstr "Envoyer"
2265
+
2266
+ #: views/admin_tools_settings.php:53
2267
+ msgid ""
2268
+ "Link(s) generated successfully. The following link(s) can be used to "
2269
+ "complete the registration."
2270
+ msgstr ""
2271
+
2272
+ #: views/admin_tools_settings.php:55
2273
+ msgid "Registration completion links will appear below"
2274
+ msgstr ""
2275
+
2276
+ #: views/admin_tools_settings.php:65
2277
+ msgid "A prompt to complete registration email was also sent."
2278
+ msgstr ""
2279
+
2280
+ #: views/admin_tools_settings.php:78 views/admin_tools_settings.php:88
2281
+ msgid "Re-create the Required Pages"
2282
+ msgstr ""
2283
+
2284
+ #: views/admin_tools_settings.php:81
2285
+ msgid ""
2286
+ "If you have accidentally deleted the required pages that this plugin creates "
2287
+ "at install time, you can use this option to re-create them."
2288
+ msgstr ""
2289
+
2290
+ #: views/admin_tools_settings.php:82
2291
+ msgid " has full explanation."
2292
+ msgstr ""
2293
+
2294
+ #: views/edit.php:32 views/edit.php:36
2295
+ msgid "Leave empty to keep the current password"
2296
+ msgstr "Laisser vide pour garder le mot de passe actuel"
2297
+
2298
+ #: views/edit.php:71
2299
+ msgid "Company Name"
2300
+ msgstr "Companie"
2301
+
2302
+ #: views/edit.php:84
2303
+ msgid "Update"
2304
+ msgstr "Mettre à jour"
2305
+
2306
+ #: views/forgot_password.php:12
2307
+ msgid "Reset Password"
2308
+ msgstr "Réinitialisation du mot de passe"
2309
+
2310
+ #: views/loggedin.php:6
2311
+ msgid "Logged in as"
2312
+ msgstr "Connecté en tant que"
2313
+
2314
+ #: views/loggedin.php:14
2315
+ msgid "Membership"
2316
+ msgstr "Niveau"
2317
+
2318
+ #: views/loggedin.php:18
2319
+ msgid "Account Expiry"
2320
+ msgstr "Expiration du compte"
2321
+
2322
+ #: views/loggedin.php:26
2323
+ msgid "Edit Profile"
2324
+ msgstr "Modifier ton profil"
2325
+
2326
+ #: views/login.php:26
2327
+ msgid "Remember Me"
2328
+ msgstr "Se souvenir de moi"
2329
+
2330
+ #: views/login.php:35
2331
+ msgid "Forgot Password?"
2332
+ msgstr "Tu as oublié ton mot de passe?"
2333
+
2334
+ #: views/payments/admin_add_edit_transaction_manually.php:68
2335
+ msgid "Add New Transaction"
2336
+ msgstr ""
2337
+
2338
+ #: views/payments/admin_add_edit_transaction_manually.php:99
2339
+ #: includes/swpm_mda_show_profile.php:26
2340
+ msgid "Member ID"
2341
+ msgstr "ID membre"
2342
+
2343
+ #: views/payments/admin_add_edit_transaction_manually.php:160
2344
+ msgid "Save Transaction Data"
2345
+ msgstr ""
2346
+
2347
+ #: views/payments/admin_all_payment_transactions.php:6
2348
+ msgid "All the payments/transactions of your members are recorded here."
2349
+ msgstr ""
2350
+
2351
+ #: views/payments/admin_all_payment_transactions.php:12
2352
+ msgid "Search for a transaction by using email or name"
2353
+ msgstr ""
2354
+
2355
+ #: views/payments/admin_all_payment_transactions.php:49
2356
+ msgid "Add a Transaction Manually"
2357
+ msgstr ""
2358
+
2359
+ #: views/payments/admin_create_payment_buttons.php:17
2360
+ msgid ""
2361
+ "You can create a new payment button for your memberships using this "
2362
+ "interface."
2363
+ msgstr ""
2364
+
2365
+ #: views/payments/admin_create_payment_buttons.php:25
2366
+ msgid "Select Payment Button Type"
2367
+ msgstr ""
2368
+
2369
+ #: views/payments/admin_create_payment_buttons.php:58
2370
+ msgid "Next"
2371
+ msgstr ""
2372
+
2373
+ #: views/payments/admin_edit_payment_buttons.php:17
2374
+ msgid "You can edit a payment button using this interface."
2375
+ msgstr ""
2376
+
2377
+ #: views/payments/admin_payment_buttons.php:6
2378
+ msgid ""
2379
+ "All the membership buttons that you created in the plugin are displayed here."
2380
+ msgstr ""
2381
+
2382
+ #: views/payments/admin_payment_settings.php:33
2383
+ msgid "PayPal Integration Settings"
2384
+ msgstr ""
2385
+
2386
+ #: views/payments/admin_payment_settings.php:36
2387
+ msgid "Generate the \"Advanced Variables\" Code for your PayPal button"
2388
+ msgstr ""
2389
+
2390
+ #: views/payments/admin_payment_settings.php:39
2391
+ msgid "Enter the Membership Level ID"
2392
+ msgstr ""
2393
+
2394
+ #: views/payments/admin_payment_settings.php:41
2395
+ msgid "Generate Code"
2396
+ msgstr ""
2397
+
2398
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:22
2399
+ msgid "Braintree Buy Now Button Configuration"
2400
+ msgstr ""
2401
+
2402
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:34
2403
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:216
2404
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:33
2405
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:304
2406
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:316
2407
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:298
2408
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:92
2409
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:92
2410
+ msgid "Button ID"
2411
+ msgstr ""
2412
+
2413
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:42
2414
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:26
2415
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:224
2416
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:41
2417
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:27
2418
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:312
2419
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:36
2420
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:323
2421
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:36
2422
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:305
2423
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:100
2424
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:100
2425
+ msgid "Button Title"
2426
+ msgstr ""
2427
+
2428
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:60
2429
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:44
2430
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:242
2431
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:59
2432
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:54
2433
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:339
2434
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:54
2435
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:321
2436
+ msgid "Payment Amount"
2437
+ msgstr ""
2438
+
2439
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:68
2440
+ msgid ""
2441
+ "Braintree API key and account details. You can get this from your Braintree "
2442
+ "account."
2443
+ msgstr ""
2444
+
2445
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:72
2446
+ msgid "Merchant ID"
2447
+ msgstr ""
2448
+
2449
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:80
2450
+ msgid "Public Key"
2451
+ msgstr ""
2452
+
2453
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:87
2454
+ msgid "Private Key"
2455
+ msgstr ""
2456
+
2457
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:95
2458
+ msgid "Merchant Account ID"
2459
+ msgstr ""
2460
+
2461
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:113
2462
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:145
2463
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:429
2464
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:145
2465
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:411
2466
+ msgid "The following details are optional."
2467
+ msgstr ""
2468
+
2469
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:117
2470
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:92
2471
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:290
2472
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:204
2473
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:172
2474
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:459
2475
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:158
2476
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:442
2477
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:158
2478
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:424
2479
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:227
2480
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:219
2481
+ msgid "Return URL"
2482
+ msgstr ""
2483
+
2484
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:128
2485
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:127
2486
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:325
2487
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:215
2488
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:201
2489
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:488
2490
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:188
2491
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:472
2492
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:188
2493
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:454
2494
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:248
2495
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:240
2496
+ msgid "Save Payment Data"
2497
+ msgstr ""
2498
+
2499
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:16
2500
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:207
2501
+ msgid "PayPal Buy Now Button Configuration"
2502
+ msgstr ""
2503
+
2504
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:52
2505
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:250
2506
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:67
2507
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:45
2508
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:330
2509
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:62
2510
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:346
2511
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:62
2512
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:328
2513
+ msgid "Payment Currency"
2514
+ msgstr ""
2515
+
2516
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:100
2517
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:298
2518
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:85
2519
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:370
2520
+ msgid "PayPal Email"
2521
+ msgstr ""
2522
+
2523
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:108
2524
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:306
2525
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:180
2526
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:467
2527
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:166
2528
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:450
2529
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:166
2530
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:432
2531
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:235
2532
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:227
2533
+ msgid "Button Image URL"
2534
+ msgstr ""
2535
+
2536
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:116
2537
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:314
2538
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:188
2539
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:475
2540
+ msgid "Custom Checkout Page Logo Image"
2541
+ msgstr ""
2542
+
2543
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:21
2544
+ msgid "PayPal Smart Checkout Button Configuration"
2545
+ msgstr ""
2546
+
2547
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:107
2548
+ msgid ""
2549
+ "PayPal Smart Checkout API Credentials (you can get this from your PayPal "
2550
+ "account)"
2551
+ msgstr ""
2552
+
2553
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:111
2554
+ msgid "Live Client ID"
2555
+ msgstr ""
2556
+
2557
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:119
2558
+ msgid "Live Secret"
2559
+ msgstr ""
2560
+
2561
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:127
2562
+ msgid "Sandbox Client ID"
2563
+ msgstr ""
2564
+
2565
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:135
2566
+ msgid "Sandbox Secret"
2567
+ msgstr ""
2568
+
2569
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:143
2570
+ msgid "Button Appearance Settings"
2571
+ msgstr ""
2572
+
2573
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:147
2574
+ msgid "Size"
2575
+ msgstr ""
2576
+
2577
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:150
2578
+ msgid "Medium"
2579
+ msgstr ""
2580
+
2581
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:151
2582
+ msgid "Large"
2583
+ msgstr ""
2584
+
2585
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:152
2586
+ msgid "Repsonsive"
2587
+ msgstr ""
2588
+
2589
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:154
2590
+ msgid "Select button size."
2591
+ msgstr ""
2592
+
2593
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:158
2594
+ msgid "Color"
2595
+ msgstr ""
2596
+
2597
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:161
2598
+ msgid "Gold"
2599
+ msgstr ""
2600
+
2601
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:162
2602
+ msgid "Blue"
2603
+ msgstr ""
2604
+
2605
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:163
2606
+ msgid "Silver"
2607
+ msgstr ""
2608
+
2609
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:164
2610
+ msgid "Black"
2611
+ msgstr ""
2612
+
2613
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:166
2614
+ msgid "Select button color."
2615
+ msgstr ""
2616
+
2617
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:170
2618
+ msgid "Shape"
2619
+ msgstr ""
2620
+
2621
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:172
2622
+ msgid "Rectangular"
2623
+ msgstr ""
2624
+
2625
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:173
2626
+ msgid "Pill"
2627
+ msgstr ""
2628
+
2629
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:174
2630
+ msgid "Select button shape."
2631
+ msgstr ""
2632
+
2633
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:178
2634
+ msgid "Layout"
2635
+ msgstr ""
2636
+
2637
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:180
2638
+ msgid "Vertical"
2639
+ msgstr ""
2640
+
2641
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:181
2642
+ msgid "Horizontal"
2643
+ msgstr ""
2644
+
2645
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:182
2646
+ msgid "Select button layout."
2647
+ msgstr ""
2648
+
2649
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:187
2650
+ msgid "Additional Settings"
2651
+ msgstr ""
2652
+
2653
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:191
2654
+ msgid "Payment Methods"
2655
+ msgstr ""
2656
+
2657
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:193
2658
+ msgid "PayPal Credit"
2659
+ msgstr ""
2660
+
2661
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:194
2662
+ msgid "ELV"
2663
+ msgstr ""
2664
+
2665
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:195
2666
+ msgid ""
2667
+ "Select payment methods that could be used by customers. Note that payment "
2668
+ "with cards is always enabled."
2669
+ msgstr ""
2670
+
2671
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:200
2672
+ msgid "The following details are optional"
2673
+ msgstr ""
2674
+
2675
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:18
2676
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:298
2677
+ msgid "PayPal Subscription Button Configuration"
2678
+ msgstr ""
2679
+
2680
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:93
2681
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:378
2682
+ msgid "Billing Amount Each Cycle"
2683
+ msgstr ""
2684
+
2685
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:101
2686
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:386
2687
+ msgid "Billing Cycle"
2688
+ msgstr ""
2689
+
2690
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:114
2691
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:399
2692
+ msgid "Billing Cycle Count"
2693
+ msgstr ""
2694
+
2695
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:122
2696
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:407
2697
+ msgid "Re-attempt on Failure"
2698
+ msgstr ""
2699
+
2700
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:135
2701
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:422
2702
+ msgid ""
2703
+ "Trial Billing Details (Leave empty if you are not offering a trial period)"
2704
+ msgstr ""
2705
+
2706
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:141
2707
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:428
2708
+ msgid "Trial Billing Amount"
2709
+ msgstr ""
2710
+
2711
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:149
2712
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:436
2713
+ msgid "Trial Billing Period"
2714
+ msgstr ""
2715
+
2716
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:166
2717
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:453
2718
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:213
2719
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:205
2720
+ msgid "Optional Details"
2721
+ msgstr ""
2722
+
2723
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:26
2724
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:307
2725
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:289
2726
+ msgid "Stripe Buy Now Button Configuration"
2727
+ msgstr ""
2728
+
2729
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:102
2730
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:386
2731
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:102
2732
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:368
2733
+ msgid "Stripe API keys. You can get this from your Stripe account."
2734
+ msgstr ""
2735
+
2736
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:107
2737
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:391
2738
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:107
2739
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:373
2740
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:148
2741
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:140
2742
+ msgid "Use Global API Keys Settings"
2743
+ msgstr ""
2744
+
2745
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:110
2746
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:394
2747
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:110
2748
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:376
2749
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:151
2750
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:143
2751
+ msgid ""
2752
+ "Use API keys from <a href=\"admin.php?"
2753
+ "page=simple_wp_membership_settings&tab=2\" target=\"_blank\">Payment "
2754
+ "Settings</a> tab."
2755
+ msgstr ""
2756
+
2757
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:150
2758
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:434
2759
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:150
2760
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:416
2761
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:219
2762
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:211
2763
+ msgid "Collect Customer Address"
2764
+ msgstr ""
2765
+
2766
+ #: views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php:26
2767
+ msgid "Stripe SCA Buy Now Button Configuration"
2768
+ msgstr ""
2769
+
2770
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:84
2771
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:84
2772
+ msgid "Stripe Subscription Button Configuration"
2773
+ msgstr ""
2774
+
2775
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:118
2776
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:118
2777
+ msgid "Stripe API ID"
2778
+ msgstr ""
2779
+
2780
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:129
2781
+ msgid "Trial Period"
2782
+ msgstr ""
2783
+
2784
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:142
2785
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:134
2786
+ msgid "Stripe API Settings"
2787
+ msgstr ""
2788
+
2789
+ #: views/payments/payment-gateway/admin_stripe_sca_subscription_button.php:188
2790
+ msgid "Webhook Endpoint URL"
2791
+ msgstr ""
2792
+
2793
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:180
2794
+ msgid "Webook Endpoint URL"
2795
+ msgstr ""
2796
+
2797
+ #: views/payments/payment-gateway/braintree_button_shortcode_view.php:21
2798
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:100
2799
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:102
2800
+ #: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:15
2801
+ #: views/payments/payment-gateway/stripe_button_shortcode_view.php:20
2802
+ #: views/payments/payment-gateway/stripe_button_shortcode_view.php:161
2803
+ #: views/payments/payment-gateway/stripe_sca_button_shortcode_view.php:20
2804
+ #: views/payments/payment-gateway/stripe_sca_button_shortcode_view.php:144
2805
+ msgid "Buy Now"
2806
+ msgstr "Payer maintenant"
2807
+
2808
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:235
2809
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:237
2810
+ msgid "Subscribe Now"
2811
+ msgstr "Inscris-toi maintenant"
2812
+
2813
+ #: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:149
2814
+ msgid "Error occurred during PayPal Smart Checkout process."
2815
+ msgstr ""
2816
+
2817
+ #: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:178
2818
+ msgid "HTTP error occurred during payment process:"
2819
+ msgstr ""
2820
+
2821
+ #: Translation strings from addons === Form builder addon
2822
+ msgid "Type password here"
2823
+ msgstr "Écrire le mot de passe ici"
2824
+
2825
+ msgid "Retype password here"
2826
+ msgstr "Ré-écrire le mot de passe ici"
2827
+
2828
+ msgid "Registration is complete. You can now log into the site."
2829
+ msgstr "Ton inscription est complète. Tu peux maintenant te connecter au site."
2830
+
2831
+ msgid " Field has invalid character"
2832
+ msgstr " Caractères invalides"
2833
+
2834
+ msgid " Password does not match"
2835
+ msgstr " Les mots de passe sont différents"
2836
+
2837
+ msgid "Already taken."
2838
+ msgstr "Déjà pris."
2839
+
2840
+ msgid "Street Address"
2841
+ msgstr "Rue"
2842
+
2843
+ msgid "Apt, Suite, Bldg. (optional)"
2844
+ msgstr ""
2845
+
2846
+ msgid "State / Province / Region"
2847
+ msgstr ""
2848
+
2849
+ msgid "Postal / Zip Code"
2850
+ msgstr ""
2851
+
2852
+ msgid ""
2853
+ "Check this box to delete the image. The image will be deleted when you save "
2854
+ "the profile."
2855
+ msgstr ""
2856
+
2857
+ msgid "You will need to re-login since you changed your password."
2858
+ msgstr "Tu vas devoir te re-connecter puisque tu as changé ton mot de passe."
2859
+
2860
+ msgid ""
2861
+ "Please enter any two digits with <strong>no</strong> spaces (Example: 12)"
2862
+ msgstr ""
2863
+
2864
+ msgid "Verification"
2865
+ msgstr "Vérification"
2866
+
2867
+ msgid "Please enter any two digits with no spaces (Example: 12)*"
2868
+ msgstr ""
2869
+
2870
+ msgid "Username can only contain: letters, numbers and .-*@"
2871
+ msgstr "Le nom d’utilisateur peut seulement contenir: lettres, nombres et .-*@"
2872
+
2873
+ msgid "Allowed characters are: letters, numbers and .-_*@"
2874
+ msgstr "Les caractères permis sont: lettres, nombres et .-*@"
2875
+
2876
+ msgid "Please check at least one."
2877
+ msgstr "SVP en cocher au moins un."
2878
+
2879
+ #: === Partial protection addon strings
2880
+ msgid "You do not have permission to view this content."
2881
+ msgstr "Tu n’as pas la permission de voir ce contenu."
2882
+
2883
+ msgid "Your membership level does not have permission to view this content."
2884
+ msgstr ""
2885
+ "Ton niveau d’inscription ne te donne pas la permission de voir ce contenu."
2886
+
2887
+ msgid "This content is for members only."
2888
+ msgstr "Ce contenu est pour les membres seulement."
2889
+
2890
+ #: === Member Directory Listing addon strings swpm-member-directory-admin.php:9
2891
+ msgid "Member Directory"
2892
+ msgstr ""
2893
+
2894
+ #: includes/swpm_mda_show_profile.php:30
2895
+ msgid "Level"
2896
+ msgstr "Niveau"
2897
+
2898
+ #: includes/swpm_mda_show_profile.php:32
2899
+ msgid "Address"
2900
+ msgstr "Adresse"
2901
+
2902
+ #: views/template-1.php:52 views/template-2.php:53
2903
+ msgid "Search..."
2904
+ msgstr "Rechercher…"
2905
+
2906
+ #: views/template-1.php:60 views/template-2.php:62
2907
+ msgid "Clear Search"
2908
+ msgstr "Recherche d’effacement"
2909
+
2910
+ # === Misc Shortcodes Addon ===
2911
+ msgid "You must be logged in to upgrade a membership."
2912
+ msgstr "Vous devez être connecté pour mettre à niveau un abonnement."
2913
+
2914
+ msgid "Membership level has been updated."
2915
+ msgstr "Le niveau d’adhésion a été mis à jour."
2916
+
2917
+ msgid "Already a member of this level."
2918
+ msgstr "Déjà membre de ce niveau."
languages/simple-membership-nb_NO.mo CHANGED
Binary file
languages/simple-membership-nb_NO.po CHANGED
@@ -1,935 +1,2586 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: Simple Membership\n"
4
- "POT-Creation-Date: 2015-01-27 14:50+1000\n"
5
- "PO-Revision-Date: 2017-01-02 12:41+0100\n"
6
- "Last-Translator: Tom Nordstrønen <tom.nordstronen@me.com>\n"
7
- "Language-Team: \n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.8.6\n"
12
- "X-Poedit-KeywordsList: __;_e\n"
13
- "X-Poedit-Basepath: .\n"
 
 
 
 
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "Language: da_DK\n"
16
- "X-Poedit-SearchPath-0: .\n"
17
 
18
- #: simple-membership/classes/class.bAccessControl.php:21
19
- #: simple-membership/classes/class.bAccessControl.php:28
20
- #: simple-membership/classes/class.bAccessControl.php:48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  msgid "You need to login to view this content. "
22
  msgstr "Du må logge inn for å se dette innholdet. "
23
 
24
- #: simple-membership/classes/class.bAccessControl.php:35
25
- #: simple-membership/classes/class.bAccessControl.php:39
26
- #: simple-membership/classes/class.bAccessControl.php:54
27
- msgid "You are not allowed to view this content"
28
- msgstr "Du har ikke tilgang til å se dette innholdet"
 
 
 
 
 
29
 
30
- #: simple-membership/classes/class.bAccessControl.php:72
31
- msgid "You do no have permission to view rest of the content"
32
- msgstr "Du har ikke tilgang til å se resten av innholdet."
 
33
 
34
- #: simple-membership/classes/class.bAccessControl.php:76
35
- #: simple-membership/classes/class.bAccessControl.php:94
36
  msgid "You need to login to view the rest of the content. "
37
  msgstr "Du må logge inn for å se resten av innholdet. "
38
 
39
- #: simple-membership/classes/class.bAdminRegistration.php:49
40
- msgid "Registration Successful."
41
- msgstr "Du er registrert."
42
 
43
- #: simple-membership/classes/class.bAdminRegistration.php:54
44
- #: simple-membership/classes/class.bAdminRegistration.php:89
45
- #: simple-membership/classes/class.bMembershipLevel.php:42
46
- #: simple-membership/classes/class.bMembershipLevel.php:60
 
 
 
 
 
 
 
 
 
47
  msgid "Please correct the following:"
48
- msgstr "Vennligst endre følgende:"
 
 
 
 
 
 
 
 
49
 
50
- #: simple-membership/classes/class.bAjax.php:17
51
- #: simple-membership/classes/class.bAjax.php:28
52
- msgid "Aready taken"
53
- msgstr "Er alt i bruk"
54
 
55
- #: simple-membership/classes/class.bAjax.php:29
 
 
 
 
 
 
 
 
56
  msgid "Available"
57
  msgstr "Tilgjengelig"
58
 
59
- #: simple-membership/classes/class.bAuth.php:46
60
- #: simple-membership/classes/class.bFrontRegistration.php:173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  msgid "User Not Found."
62
- msgstr "Bruker ble ikke funnet."
63
 
64
- #: simple-membership/classes/class.bAuth.php:53
65
  msgid "Password Empty or Invalid."
66
  msgstr "Passordet er tomt eller ugyldig."
67
 
68
- #: simple-membership/classes/class.bAuth.php:76
69
  msgid "Account is inactive."
70
  msgstr "Kontoen er inaktiv."
71
 
72
- #: simple-membership/classes/class.bAuth.php:93
73
  msgid "Account has expired."
74
  msgstr "Kontoen er utløpt."
75
 
76
- #: simple-membership/classes/class.bAuth.php:100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  msgid "You are logged in as:"
78
- msgstr "Du er logget inn som:"
79
 
80
- #: simple-membership/classes/class.bAuth.php:139
81
  msgid "Logged Out Successfully."
82
- msgstr "Du er nå logget ut."
83
 
84
- #: simple-membership/classes/class.bAuth.php:186
85
  msgid "Session Expired."
86
- msgstr "Sesjonen er utløpt."
87
-
88
- #: simple-membership/classes/class.bAuth.php:194
89
- msgid "Invalid User Name"
90
- msgstr "Ugyldig brukernavn"
91
-
92
- #: simple-membership/classes/class.bAuth.php:202
93
- msgid "Sorry! Something went wrong"
94
- msgstr "Beklager. Noe gikk galt"
95
-
96
- #: simple-membership/classes/class.bCategoryList.php:15
97
- #: simple-membership/classes/class.bMembers.php:21
98
- #: simple-membership/classes/class.bMembershipLevels.php:8
99
- #: simple-membership/classes/class.bMembershipLevels.php:17
100
- #: simple-membership/views/add.php:30
101
- #: simple-membership/views/admin_member_form_common_part.php:2
102
- #: simple-membership/views/edit.php:52
 
 
 
 
103
  msgid "Membership Level"
104
- msgstr "Medlemsnivå"
105
 
106
- #: simple-membership/classes/class.bCategoryList.php:16
107
- #: simple-membership/classes/class.bMembershipLevels.php:9
108
- #: simple-membership/classes/class.simple-wp-membership.php:464
109
- msgid "Membership Levels"
110
- msgstr "Medlemsnivåer"
111
 
112
- #: simple-membership/classes/class.bCategoryList.php:29
113
- #: simple-membership/classes/class.bMembers.php:16
114
- #: simple-membership/classes/class.bMembershipLevels.php:16
115
- msgid "ID"
116
- msgstr "ID"
117
 
118
- #: simple-membership/classes/class.bCategoryList.php:30
119
- msgid "Name"
120
- msgstr "Navn"
121
 
122
- #: simple-membership/classes/class.bCategoryList.php:31
123
  msgid "Description"
124
  msgstr "Beskrivelse"
125
 
126
- #: simple-membership/classes/class.bCategoryList.php:32
127
  msgid "Count"
128
- msgstr "Antall"
129
 
130
- #: simple-membership/classes/class.bCategoryList.php:63
131
- msgid "Updated! "
132
- msgstr "Oppdatert! "
133
 
134
- #: simple-membership/classes/class.bForm.php:26
135
- msgid ""
136
- "Wordpress account exists with given user name. But given email doesn't match."
137
- msgstr ""
138
- "Wordpress kontoen finnes med dette brukernavnet, men epost adressen stemmer "
139
- "ikke."
140
 
141
- #: simple-membership/classes/class.bForm.php:31
142
- msgid ""
143
- "Wordpress account exists with given email. But given user name doesn't match."
144
- msgstr ""
145
- "Wordpress kontoen finnes med dette brukernavnet, men epost adressen stemmer "
146
- "ikke."
 
 
 
 
 
 
 
 
 
147
 
148
- #: simple-membership/classes/class.bForm.php:40
149
- msgid "User name is required"
150
- msgstr "Brukernavn er nødvendig"
151
 
152
- #: simple-membership/classes/class.bForm.php:44
153
- msgid "User name contains invalid character"
154
- msgstr "Brukernavnet inneholder ugyldige karakterer."
155
 
156
- #: simple-membership/classes/class.bForm.php:52
157
- msgid "User name already exists."
158
- msgstr "Brukernavnet finnes allerede."
159
 
160
- #: simple-membership/classes/class.bForm.php:75
 
 
 
 
 
 
 
 
 
 
 
 
161
  msgid "Password is required"
162
- msgstr "Passord er nødvendig."
163
 
164
- #: simple-membership/classes/class.bForm.php:82
165
  msgid "Password mismatch"
166
- msgstr "Passordene er ulike."
167
 
168
- #: simple-membership/classes/class.bForm.php:98
169
  msgid "Email is required"
170
- msgstr "Epost er nødvendig"
171
 
172
- #: simple-membership/classes/class.bForm.php:102
173
  msgid "Email is invalid"
174
- msgstr "Ugyldig epost"
175
 
176
- #: simple-membership/classes/class.bForm.php:118
177
  msgid "Email is already used."
178
- msgstr "Epost er alt i bruk."
179
 
180
- #: simple-membership/classes/class.bForm.php:184
181
  msgid "Member since field is invalid"
182
  msgstr "Medlem siden feltet er ugyldig"
183
 
184
- #: simple-membership/classes/class.bForm.php:195
185
  msgid "Access starts field is invalid"
186
- msgstr "Tilgang starter feltet er ugyldig"
187
 
188
- #: simple-membership/classes/class.bForm.php:205
189
  msgid "Gender field is invalid"
190
- msgstr "Kjønnsfeltet er ugyldig."
191
 
192
- #: simple-membership/classes/class.bForm.php:216
193
  msgid "Account state field is invalid"
194
- msgstr "Kontostatus feltet er ugyldig"
195
 
196
- #: simple-membership/classes/class.bForm.php:223
197
  msgid "Invalid membership level"
198
- msgstr "Ugyldig medlemsnivå."
 
 
 
 
 
 
 
 
 
 
 
 
 
199
 
200
- #: simple-membership/classes/class.bFrontRegistration.php:61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  msgid "Registration Successful. "
202
  msgstr "Registrering fullført. "
203
 
204
- #: simple-membership/classes/class.bFrontRegistration.php:61
205
- #: simple-membership/classes/class.bSettings.php:367
206
  msgid "Please"
207
  msgstr "Vennligst"
208
 
209
- #: simple-membership/classes/class.bFrontRegistration.php:61
210
- #: simple-membership/classes/class.bSettings.php:367
211
- #: simple-membership/views/login.php:21
212
  msgid "Login"
213
- msgstr "Logg inn"
214
 
215
- #: simple-membership/classes/class.bFrontRegistration.php:72
216
- #: simple-membership/classes/class.bFrontRegistration.php:152
217
  msgid "Please correct the following"
218
  msgstr "Vennligst korriger følgende"
219
 
220
- #: simple-membership/classes/class.bFrontRegistration.php:106
221
  msgid "Membership Level Couldn't be found."
222
- msgstr "Medlemsnivået finnes ikke."
 
 
 
 
 
 
 
 
223
 
224
- #: simple-membership/classes/class.bFrontRegistration.php:162
225
- msgid "Email Address Not Valid."
226
- msgstr "Epost adressen er ugyldig."
227
 
228
- #: simple-membership/classes/class.bFrontRegistration.php:193
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  msgid "New password has been sent to your email address."
230
- msgstr "Et nytt passord har blitt sendt til din epost adresse."
 
 
 
 
 
 
 
 
 
231
 
232
- #: simple-membership/classes/class.bLevelForm.php:47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  msgid "Date format is not valid."
234
- msgstr "Datoformatet er ugyldig."
235
 
236
- #: simple-membership/classes/class.bLevelForm.php:54
237
  msgid "Access duration must be > 0."
238
- msgstr "Tilgangsvarighet må være større enn 0."
239
 
240
- #: simple-membership/classes/class.bMembers.php:7
241
  msgid "Member"
242
  msgstr "Medlem"
243
 
244
- #: simple-membership/classes/class.bMembers.php:8
245
- #: simple-membership/classes/class.simple-wp-membership.php:462
246
- msgid "Members"
247
- msgstr "Medlemmer"
248
 
249
- #: simple-membership/classes/class.bMembers.php:17
250
- #: simple-membership/views/add.php:6 simple-membership/views/edit.php:4
251
- msgid "User Name"
 
252
  msgstr "Brukernavn"
253
 
254
- #: simple-membership/classes/class.bMembers.php:18
255
- #: simple-membership/views/add.php:22
256
- #: simple-membership/views/admin_member_form_common_part.php:15
257
- #: simple-membership/views/edit.php:20
258
  msgid "First Name"
259
  msgstr "Fornavn"
260
 
261
- #: simple-membership/classes/class.bMembers.php:19
262
- #: simple-membership/views/add.php:26
263
- #: simple-membership/views/admin_member_form_common_part.php:19
264
- #: simple-membership/views/edit.php:24
265
  msgid "Last Name"
266
  msgstr "Etternavn"
267
 
268
- #: simple-membership/classes/class.bMembers.php:20
269
- #: simple-membership/views/add.php:10 simple-membership/views/edit.php:8
270
  msgid "Email"
271
- msgstr "Epost"
272
 
273
- #: simple-membership/classes/class.bMembers.php:22
274
- #: simple-membership/views/admin_member_form_common_part.php:11
275
  msgid "Access Starts"
276
  msgstr "Tilgang starter"
277
 
278
- #: simple-membership/classes/class.bMembers.php:23
279
  msgid "Account State"
280
- msgstr "Konto status"
281
 
282
- #: simple-membership/classes/class.bMembers.php:35
283
- #: simple-membership/classes/class.bMembershipLevels.php:29
 
 
 
 
 
 
284
  msgid "Delete"
285
  msgstr "Slett"
286
 
287
- #: simple-membership/classes/class.bMembers.php:101
288
- msgid "No Member found."
289
- msgstr "Medlem ikke funnet."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
 
291
- #: simple-membership/classes/class.bMembershipLevel.php:37
 
 
 
 
292
  msgid "Membership Level Creation Successful."
293
- msgstr "Medlemsskapsnivå er opprettet."
 
 
 
 
294
 
295
- #: simple-membership/classes/class.bMembershipLevel.php:56
296
- msgid "Updated Successfully."
297
- msgstr "Oppdatering er fullført."
298
 
299
- #: simple-membership/classes/class.bMembershipLevels.php:18
300
  msgid "Role"
301
  msgstr "Rolle"
302
 
303
- #: simple-membership/classes/class.bMembershipLevels.php:19
304
  msgid "Access Valid For/Until"
305
- msgstr "Adgang gyldig i / inntil"
306
 
307
- #: simple-membership/classes/class.bSettings.php:30
308
- msgid "Plugin Documentation"
309
- msgstr "Plugin dokumentasjon"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
 
311
- #: simple-membership/classes/class.bSettings.php:32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  msgid "General Settings"
313
- msgstr "Generelt oppsett"
 
 
 
 
314
 
315
- #: simple-membership/classes/class.bSettings.php:34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  msgid "Enable Free Membership"
317
- msgstr "Tillat gratis medlemskap."
318
 
319
- #: simple-membership/classes/class.bSettings.php:37
320
- msgid "Enable/disable registration for free membership level"
321
- msgstr "Tillat / stopp registrering av gratis medlemskap."
322
 
323
- #: simple-membership/classes/class.bSettings.php:38
324
  msgid "Free Membership Level ID"
325
- msgstr "Gratis medlemskapsnivå ID"
326
 
327
- #: simple-membership/classes/class.bSettings.php:41
328
  msgid "Assign free membership level ID"
329
- msgstr "Tildel gratis medlemskapsnivå ID"
330
 
331
- #: simple-membership/classes/class.bSettings.php:42
332
  msgid "Enable More Tag Protection"
333
- msgstr "Tillat bruk av «More» tag beskyttelse"
334
 
335
- #: simple-membership/classes/class.bSettings.php:45
336
- msgid ""
337
- "Enables or disables \"more\" tag protection in the posts and pages. Anything "
338
- "after the More tag is protected. Anything before the more tag is teaser "
339
- "content."
340
- msgstr ""
341
- "Tillat eller stopp \"more\" tag beskyttelse i innlegg og sider. Alt etter "
342
- "'mer' tag vil være beskyttet. Alt før 'mer' tag vises."
343
 
344
- #: simple-membership/classes/class.bSettings.php:46
345
  msgid "Hide Adminbar"
346
- msgstr "Skjul adminlinje"
347
 
348
- #: simple-membership/classes/class.bSettings.php:49
349
- msgid ""
350
- "WordPress shows an admin toolbar to the logged in users of the site. Check "
351
- "this box if you want to hide that admin toolbar in the fronend of your site."
352
- msgstr ""
353
- "WordPress viser en adminlinje til brukere som er logget inn. Kryss av dersom "
354
- "du vil skjule administrasjonlinjen."
 
 
 
 
355
 
356
- #: simple-membership/classes/class.bSettings.php:51
 
 
 
 
 
 
 
 
357
  msgid "Default Account Status"
358
- msgstr "Standard konto status"
359
 
360
- #: simple-membership/classes/class.bSettings.php:56
361
- msgid ""
362
- "Select the default account status for newly registered users. If you want to "
363
- "manually approve the members then you can set the status to \"Pending\"."
364
- msgstr ""
365
- "Velg standard konto status for nyregistrerte brukere. Hvis du ønsker å "
366
- "godkjenne medlemmene manuelt, kan du sette status til \"Aventer\"."
367
 
368
- #: simple-membership/classes/class.bSettings.php:62
 
 
 
 
369
  msgid "Pages Settings"
370
- msgstr "Sideopsett"
371
 
372
- #: simple-membership/classes/class.bSettings.php:64
373
  msgid "Login Page URL"
374
- msgstr "Logg inn side URL"
375
 
376
- #: simple-membership/classes/class.bSettings.php:68
377
  msgid "Registration Page URL"
378
- msgstr "Registreringsside URL"
379
 
380
- #: simple-membership/classes/class.bSettings.php:72
381
  msgid "Join Us Page URL"
382
- msgstr "Bli medlem side URL"
383
 
384
- #: simple-membership/classes/class.bSettings.php:76
385
  msgid "Edit Profile Page URL"
386
- msgstr "Endre profilside URL"
387
 
388
- #: simple-membership/classes/class.bSettings.php:80
389
  msgid "Password Reset Page URL"
390
- msgstr "Passord nullstillingsside URL"
391
 
392
- #: simple-membership/classes/class.bSettings.php:85
393
  msgid "Test & Debug Settings"
394
- msgstr "Test & feilrettinger innstillinger"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395
 
396
- #: simple-membership/classes/class.bSettings.php:91
 
 
 
 
 
 
 
 
397
  msgid "Enable Sandbox Testing"
398
- msgstr "Tillat sandbox test"
399
 
400
- #: simple-membership/classes/class.bSettings.php:94
401
  msgid "Enable this option if you want to do sandbox payment testing."
402
- msgstr "Tillat denne dersom du vil teste i sandbox betalingstesting."
403
 
404
- #: simple-membership/classes/class.bSettings.php:104
 
 
 
 
405
  msgid "Email Misc. Settings"
406
- msgstr "Diverse epost innstillinger"
407
 
408
- #: simple-membership/classes/class.bSettings.php:106
409
  msgid "From Email Address"
410
- msgstr "Avsender epost adresse"
411
 
412
- #: simple-membership/classes/class.bSettings.php:111
413
  msgid "Email Settings (Prompt to Complete Registration )"
414
- msgstr "Epost innstillinger (spør for å fullføre registrering)"
415
 
416
- #: simple-membership/classes/class.bSettings.php:113
417
- #: simple-membership/classes/class.bSettings.php:124
418
- #: simple-membership/classes/class.bSettings.php:143
419
  msgid "Email Subject"
420
- msgstr "Epost emne"
421
 
422
- #: simple-membership/classes/class.bSettings.php:117
423
- #: simple-membership/classes/class.bSettings.php:128
424
- #: simple-membership/classes/class.bSettings.php:147
425
  msgid "Email Body"
426
- msgstr "Epost tekst"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
 
428
- #: simple-membership/classes/class.bSettings.php:122
429
  msgid "Email Settings (Registration Complete)"
430
- msgstr "Epost innstillinger (fullført registrering)"
431
 
432
- #: simple-membership/classes/class.bSettings.php:132
433
- msgid "Send Notification To Admin"
434
- msgstr "Send melding til administrator"
435
 
436
- #: simple-membership/classes/class.bSettings.php:136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  msgid "Send Email to Member When Added via Admin Dashboard"
438
- msgstr "Send epost til medlem som tilføyes via admin panelet"
439
 
440
- #: simple-membership/classes/class.bSettings.php:141
 
 
 
 
441
  msgid " Email Settings (Account Upgrade Notification)"
442
- msgstr "Epost innstillinger (beskjed om kontooppgradering)"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
 
444
- #: simple-membership/classes/class.bSettings.php:367
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
445
  msgid "Not a Member?"
446
- msgstr "Ikke medlem?"
447
 
448
- #: simple-membership/classes/class.bSettings.php:367
449
- #: simple-membership/views/login.php:27
450
- msgid "Join Us"
451
- msgstr "Registrer deg"
 
 
 
 
 
 
 
452
 
453
- #: simple-membership/classes/class.bUtils.php:63
 
 
 
 
 
 
 
 
 
 
 
 
454
  msgid "Active"
455
  msgstr "Aktiv"
456
 
457
- #: simple-membership/classes/class.bUtils.php:64
458
  msgid "Inactive"
459
- msgstr "Inaktiv"
460
 
461
- #: simple-membership/classes/class.bUtils.php:65
 
 
 
 
462
  msgid "Pending"
463
  msgstr "Avventer"
464
 
465
- #: simple-membership/classes/class.bUtils.php:66
466
  msgid "Expired"
467
  msgstr "Utløpt"
468
 
469
- #: simple-membership/classes/class.bUtils.php:251
470
- msgid "Never"
471
- msgstr "Aldri"
472
 
473
- #: simple-membership/classes/class.miscUtils.php:51
474
- msgid "Registration"
475
- msgstr "Registrering"
476
 
477
- #: simple-membership/classes/class.miscUtils.php:74
478
- msgid "Member Login"
479
- msgstr "Medlemsinnlogging"
480
 
481
- #: simple-membership/classes/class.miscUtils.php:97
482
- msgid "Profile"
483
- msgstr "Profil"
484
 
485
- #: simple-membership/classes/class.miscUtils.php:120
486
- msgid "Password Reset"
487
- msgstr "Nullstill passord"
488
 
489
- #: simple-membership/classes/class.simple-wp-membership.php:184
490
- msgid "You are not logged in."
491
- msgstr "Du er ikke innlogget."
492
 
493
- #: simple-membership/classes/class.simple-wp-membership.php:215
494
- msgid "Simple WP Membership Protection"
495
- msgstr "Simple WP Membership beskyttelse"
 
 
496
 
497
- #: simple-membership/classes/class.simple-wp-membership.php:228
498
- msgid "Simple Membership Protection options"
499
- msgstr "Simple Membership Protection valgmuligheter"
500
 
501
- #: simple-membership/classes/class.simple-wp-membership.php:244
502
- msgid "Do you want to protect this content?"
503
- msgstr "Vil du beskytte dette innholdet?"
504
 
505
- #: simple-membership/classes/class.simple-wp-membership.php:249
506
- msgid "Select the membership level that can access this content:"
507
- msgstr "Velg medlemsnivå som har tilgang til dette innholdet:"
508
 
509
- #: simple-membership/classes/class.simple-wp-membership.php:459
510
- msgid "WP Membership"
511
- msgstr "WP medlemskap"
 
512
 
513
- #: simple-membership/classes/class.simple-wp-membership.php:466
514
- msgid "Settings"
515
- msgstr "Innstillinger"
 
516
 
517
- #: simple-membership/classes/class.simple-wp-membership.php:468
518
- msgid "Add-ons"
519
- msgstr "Tillegg"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
520
 
521
- #: simple-membership/views/add.php:14 simple-membership/views/admin_add.php:19
522
- #: simple-membership/views/admin_edit.php:17
523
- #: simple-membership/views/edit.php:12 simple-membership/views/login.php:11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
524
  msgid "Password"
525
  msgstr "Passord"
526
 
527
- #: simple-membership/views/add.php:18 simple-membership/views/edit.php:16
528
  msgid "Repeat Password"
529
  msgstr "Gjenta passord"
530
 
531
- #: simple-membership/views/add.php:37
532
- msgid "Register"
533
- msgstr "Registrer"
534
 
535
- #: simple-membership/views/admin_add.php:6
536
- msgid "Add Member"
537
- msgstr "Legg til medlem"
538
 
539
- #: simple-membership/views/admin_add.php:7
540
- msgid "Create a brand new user and add it to this site."
541
- msgstr "Opprett en helt ny bruker av denne siden."
542
 
543
- #: simple-membership/views/admin_add.php:11
544
- msgid "User name"
545
- msgstr "Brukernavn"
546
 
547
- #: simple-membership/views/admin_add.php:11
548
- #: simple-membership/views/admin_add.php:15
549
- #: simple-membership/views/admin_add_level.php:11
550
- #: simple-membership/views/admin_add_level.php:15
551
- #: simple-membership/views/admin_add_level.php:19
552
- #: simple-membership/views/admin_edit.php:9
553
- #: simple-membership/views/admin_edit.php:13
554
- #: simple-membership/views/admin_edit_level.php:10
555
- #: simple-membership/views/admin_edit_level.php:14
556
- #: simple-membership/views/admin_edit_level.php:18
557
  msgid "(required)"
558
- msgstr "(obligatorisk)"
559
 
560
- #: simple-membership/views/admin_add.php:15
561
- #: simple-membership/views/admin_edit.php:13
562
  msgid "E-mail"
563
- msgstr "Epost"
564
 
565
- #: simple-membership/views/admin_add.php:19
566
  msgid "(twice, required)"
567
- msgstr "(to ganger, obligatorisk)"
568
 
569
- #: simple-membership/views/admin_add.php:24
570
- #: simple-membership/views/admin_edit.php:21
571
  msgid "Strength indicator"
572
  msgstr "Styrkeindikator"
573
 
574
- #: simple-membership/views/admin_add.php:25
575
- #: simple-membership/views/admin_edit.php:22
576
- msgid ""
577
- "Hint: The password should be at least seven characters long. To make it "
578
- "stronger, use upper and lower case letters, numbers and symbols like ! \" ? "
579
- "$ % ^ &amp; )."
580
- msgstr ""
581
- "Råd: Passordet bør være minst syv tegn langt. For at gjøre det sterkere, "
582
- "bruk store og små bokstaver, tall og symboler som ! \" ? $ % ^ &amp; )."
583
 
584
- #: simple-membership/views/admin_add.php:29
585
- #: simple-membership/views/admin_edit.php:26
586
- #: simple-membership/views/loggedin.php:7
587
  msgid "Account Status"
588
- msgstr "Kontostatus"
589
 
590
- #: simple-membership/views/admin_add.php:36
591
  msgid "Add New Member "
592
  msgstr "Legg til nytt medlem "
593
 
594
- #: simple-membership/views/admin_addon_settings.php:2
595
- #: simple-membership/views/admin_payment_settings.php:2
596
- #: simple-membership/views/admin_settings.php:2
597
- #: simple-membership/views/admin_tools_settings.php:2
598
- msgid "Simple WP Membership::Settings"
599
- msgstr "Simple WP Membership::innstillinger"
600
 
601
- #: simple-membership/views/admin_addon_settings.php:7
602
- msgid ""
603
- "Some of the simple membership plugin's addon settings and options will be "
604
- "displayed here (if you have them)"
605
- msgstr ""
606
- "Noen av Simple Membership plugin innstillingene vil bli vist her (dersom du "
607
- "har dem)."
608
 
609
- #: simple-membership/views/admin_add_level.php:6
 
 
 
 
610
  msgid "Create new membership level."
611
  msgstr "Opprett nytt medlemsnivå."
612
 
613
- #: simple-membership/views/admin_add_level.php:11
614
- #: simple-membership/views/admin_edit_level.php:10
615
  msgid "Membership Level Name"
616
- msgstr "Medlemsnivå navn"
617
 
618
- #: simple-membership/views/admin_add_level.php:15
619
- #: simple-membership/views/admin_edit_level.php:14
620
  msgid "Default WordPress Role"
621
- msgstr "Standard WordPress rolle"
622
 
623
- #: simple-membership/views/admin_add_level.php:19
624
- #: simple-membership/views/admin_edit_level.php:18
625
  msgid "Access Duration"
626
- msgstr "Adgangsvarighet"
627
 
628
- #: simple-membership/views/admin_add_level.php:22
629
  msgid "No Expiry (Access for this level will not expire until cancelled"
630
- msgstr ""
631
- "Utløper aldri (adgang til denne medlemskategori vil ikke utløpe med mindre "
632
- "den slettes)"
633
-
634
- #: simple-membership/views/admin_add_level.php:23
635
- #: simple-membership/views/admin_add_level.php:25
636
- #: simple-membership/views/admin_add_level.php:27
637
- #: simple-membership/views/admin_add_level.php:29
638
- #: simple-membership/views/admin_edit_level.php:22
639
- #: simple-membership/views/admin_edit_level.php:25
640
- #: simple-membership/views/admin_edit_level.php:28
641
- #: simple-membership/views/admin_edit_level.php:31
642
  msgid "Expire After"
643
  msgstr "Utløper etter"
644
 
645
- #: simple-membership/views/admin_add_level.php:24
646
- #: simple-membership/views/admin_edit_level.php:23
647
  msgid "Days (Access expires after given number of days)"
648
- msgstr "Dager (adgang utløper etter et gitt antall dager)"
649
 
650
- #: simple-membership/views/admin_add_level.php:26
651
  msgid "Weeks (Access expires after given number of weeks"
652
- msgstr "Uker (adgang utløper etter et gitt antall uker)"
653
 
654
- #: simple-membership/views/admin_add_level.php:28
655
- #: simple-membership/views/admin_edit_level.php:29
656
  msgid "Months (Access expires after given number of months)"
657
- msgstr "Måneder (adgang utløper etter et gitt antall måneder)"
658
 
659
- #: simple-membership/views/admin_add_level.php:30
660
- #: simple-membership/views/admin_edit_level.php:32
661
  msgid "Years (Access expires after given number of years)"
662
- msgstr "År (adgang utløper etter et gitt antall år)"
663
 
664
- #: simple-membership/views/admin_add_level.php:31
665
- #: simple-membership/views/admin_edit_level.php:34
666
  msgid "Fixed Date Expiry"
667
- msgstr "Fast utløpsdato"
668
 
669
- #: simple-membership/views/admin_add_level.php:32
670
- #: simple-membership/views/admin_edit_level.php:35
671
  msgid "(Access expires on a fixed date)"
672
- msgstr "(Adgang utløper på en bestemt dato)"
 
 
 
 
673
 
674
- #: simple-membership/views/admin_add_level.php:36
675
- msgid "Access to older posts."
676
- msgstr "Adgang til eldre innlegg."
677
 
678
- #: simple-membership/views/admin_add_level.php:39
679
- msgid "Only allow access to posts published after the user's join date."
680
- msgstr "Tillat kun adgang til innlegg publisert etter at brukeren ble medlem."
681
 
682
- #: simple-membership/views/admin_add_level.php:45
 
 
 
 
 
 
 
 
683
  msgid "Add New Membership Level "
684
- msgstr "Opprett nytt medlemsnivå "
685
 
686
- #: simple-membership/views/admin_add_ons_page.php:6
687
  msgid "Simple WP Membership::Add-ons"
688
- msgstr "Simple WP Membership :: Plugin"
689
 
690
- #: simple-membership/views/admin_category_list.php:2
691
- msgid "Simple WP Membership::Categories"
692
- msgstr "Simple WP Membership :: Kategorier"
693
 
694
- #: simple-membership/views/admin_category_list.php:7
695
- msgid ""
696
- "First of all, globally protect the category on your site by selecting "
697
- "\"General Protection\" from the drop-down box below and then select the "
698
- "categories that should be protected from non-logged in users."
699
- msgstr ""
700
- "Først velger du global beskyttelse av kategorien på din internetside ved å "
701
- "velge \"Generell beskyttelse\" fra dropdown boksen nedenfor, velg deretter "
702
- "kategorien(e) som skal beskyttes mot brukere som ikke er logget inn."
703
 
704
- #: simple-membership/views/admin_category_list.php:10
705
- msgid ""
706
- "Next, select an existing membership level from the drop-down box below and "
707
- "then select the categories you want to grant access to (for that particular "
708
- "membership level)."
709
- msgstr ""
710
- "Deretter velger du et eksistererende medlemsnivå fra dropdown boksen under, "
711
- "velg så de kategoriene du ønsker å gi tilgang til (for det aktuelle "
712
- "medlemsnivået)."
713
 
714
- #: simple-membership/views/admin_edit.php:5
 
 
 
 
 
 
 
 
 
 
 
 
 
715
  msgid "Edit Member"
716
- msgstr "Endre medlem"
717
 
718
- #: simple-membership/views/admin_edit.php:6
719
  msgid "Edit existing member details."
720
- msgstr "Endre eksisterende medlemsinnstillinger."
721
 
722
- #: simple-membership/views/admin_edit.php:9 simple-membership/views/login.php:5
723
- msgid "Username"
724
- msgstr "Brukernavn"
725
 
726
- #: simple-membership/views/admin_edit.php:17
727
  msgid "(twice, leave empty to retain old password)"
728
- msgstr "(to ganger, la det være tomt for å beholde nåværende passord)"
729
 
730
- #: simple-membership/views/admin_edit.php:33
731
- msgid "Notify User"
732
- msgstr "Send beskjed til bruker"
733
 
734
- #: simple-membership/views/admin_edit.php:40
735
- msgid "Edit User "
736
- msgstr "Endre bruker"
737
 
738
- #: simple-membership/views/admin_edit_level.php:5
739
- msgid "Edit membership level"
740
- msgstr "Endre medlemskategori"
741
 
742
- #: simple-membership/views/admin_edit_level.php:6
743
- msgid "Edit membership level."
744
- msgstr "Endre medlemskategori."
745
 
746
- #: simple-membership/views/admin_edit_level.php:21
747
- msgid "No Expiry (Access for this level will not expire until cancelled)"
748
- msgstr ""
749
- "Utløper aldri (adgang til dette nivået utløper ikke med mindre det slettes)."
750
 
751
- #: simple-membership/views/admin_edit_level.php:26
752
- msgid "Weeks (Access expires after given number of weeks)"
753
- msgstr "Uker (adgang utløper etter et gitt antall uker)"
754
 
755
- #: simple-membership/views/admin_edit_level.php:40
756
- msgid "Protect Older Posts (optional)"
757
- msgstr "Beskytt eldre innlegg (valgfritt)"
758
 
759
- #: simple-membership/views/admin_edit_level.php:43
760
- msgid ""
761
- "Only allow access to protected posts published after the members's join date."
762
- msgstr ""
763
- "Kun tillat tilgang til beskyttede innlegg som ble publisert etter at "
764
- "medlemmet ble registert."
765
 
766
- #: simple-membership/views/admin_edit_level.php:51
767
- msgid "Edit Membership Level "
768
- msgstr "Endre medlemsnivå "
769
 
770
- #: simple-membership/views/admin_members.php:2
771
- msgid "Simple WP Membership::Members"
772
- msgstr "Simple WP Membership :: Medlemmer"
773
 
774
- #: simple-membership/views/admin_members.php:3
775
- #: simple-membership/views/admin_members.php:19
776
- #: simple-membership/views/admin_membership_levels.php:20
777
- msgid "Add New"
778
- msgstr "Opprett ny"
779
 
780
- #: simple-membership/views/admin_members.php:9
781
- #: simple-membership/views/admin_membership_levels.php:10
782
- msgid "search"
783
- msgstr "søk"
784
 
785
- #: simple-membership/views/admin_membership_levels.php:2
786
- msgid "Simple WP Membership::Membership Levels"
787
- msgstr "Simple WP Membership :: Medlemsnivå"
788
 
789
- #: simple-membership/views/admin_membership_level_menu.php:2
790
- msgid "Membership level"
791
- msgstr "Medlemsnivå"
792
 
793
- #: simple-membership/views/admin_membership_level_menu.php:3
794
- msgid "Manage Content Production"
795
- msgstr "Håndter innholdsproduksjon"
796
 
797
- #: simple-membership/views/admin_membership_level_menu.php:4
798
- msgid "Category Protection"
799
- msgstr "Kategoribeskyttelse"
800
 
801
- #: simple-membership/views/admin_membership_manage.php:17
 
 
 
 
 
 
 
 
802
  msgid "Example Content Protection Settings"
803
- msgstr "Eksempel innstillinger for innholdsbeskyttelse"
 
 
 
 
804
 
805
- #: simple-membership/views/admin_member_form_common_part.php:23
 
 
 
 
 
806
  msgid "Gender"
807
  msgstr "Kjønn"
808
 
809
- #: simple-membership/views/admin_member_form_common_part.php:30
810
- #: simple-membership/views/edit.php:28
811
  msgid "Phone"
812
  msgstr "Telefon"
813
 
814
- #: simple-membership/views/admin_member_form_common_part.php:34
815
- #: simple-membership/views/edit.php:32
816
  msgid "Street"
817
- msgstr "Gate/veg"
818
 
819
- #: simple-membership/views/admin_member_form_common_part.php:38
820
- #: simple-membership/views/edit.php:36
821
  msgid "City"
822
- msgstr "By/sted"
823
 
824
- #: simple-membership/views/admin_member_form_common_part.php:42
825
- #: simple-membership/views/edit.php:40
826
  msgid "State"
827
- msgstr "Fylke"
828
 
829
- #: simple-membership/views/admin_member_form_common_part.php:46
830
- #: simple-membership/views/edit.php:44
831
  msgid "Zipcode"
832
- msgstr "Postnummer"
833
 
834
- #: simple-membership/views/admin_member_form_common_part.php:50
835
- #: simple-membership/views/edit.php:48
836
  msgid "Country"
837
  msgstr "Land"
838
 
839
- #: simple-membership/views/admin_member_form_common_part.php:54
 
840
  msgid "Company"
841
- msgstr "Foretak"
842
 
843
- #: simple-membership/views/admin_member_form_common_part.php:58
 
844
  msgid "Member Since"
845
  msgstr "Medlem siden"
846
 
847
- #: simple-membership/views/admin_payment_settings.php:33
848
- msgid "PayPal Integration Settings"
849
- msgstr "PayPal integrasjonsinnstillinger"
850
 
851
- #: simple-membership/views/admin_payment_settings.php:36
852
- msgid "Generate the \"Advanced Variables\" Code for your PayPal button"
853
- msgstr "Generer \"avanserte variabler» kode til din PayPal knapp"
854
 
855
- #: simple-membership/views/admin_payment_settings.php:39
856
- msgid "Enter the Membership Level ID"
857
- msgstr "Oppgi medlemsnivå ID"
858
 
859
- #: simple-membership/views/admin_payment_settings.php:41
860
- msgid "Generate Code"
861
- msgstr "Generer kode"
862
 
863
- #: simple-membership/views/admin_tools_settings.php:9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
864
  msgid "Generate a Registration Completion link"
865
  msgstr "Generer en link for fullføring av registrering"
866
 
867
- #: simple-membership/views/admin_tools_settings.php:12
868
- msgid ""
869
- "You can manually generate a registration completion link here and give it to "
870
- "your customer if they have missed the email that was automatically sent out "
871
- "to them after the payment."
872
- msgstr ""
873
- "Du kan generere en registrerings fullføringslink manuelt her og gi det til "
874
- "ditt medlem, hvis medlemmet ikke har fått epost, som ble sendt automatisk "
875
- "umiddelbart etter betaling."
876
 
877
- #: simple-membership/views/admin_tools_settings.php:17
878
  msgid "Generate Registration Completion Link"
879
- msgstr "Generer registrerings fullførings link"
 
 
 
 
880
 
881
- #: simple-membership/views/admin_tools_settings.php:20
882
  msgid "OR"
883
  msgstr "ELLER"
884
 
885
- #: simple-membership/views/admin_tools_settings.php:21
886
- msgid "For All Pending Registrations"
887
- msgstr "For alle avventende registreringer"
888
 
889
- #: simple-membership/views/admin_tools_settings.php:24
890
- msgid "Registration Completion Links Will Appear Below:"
891
- msgstr "Registrering fullførings linker vil vises under:"
892
 
893
- #: simple-membership/views/admin_tools_settings.php:31
894
- msgid "Send Registration Reminder Email too"
895
- msgstr "Send også epost med påminnelse om registrering"
896
-
897
- #: simple-membership/views/admin_tools_settings.php:34
898
  msgid "Submit"
899
- msgstr "Send"
900
 
901
- #: simple-membership/views/edit.php:58
902
- msgid "Update"
903
- msgstr "Oppdater"
904
 
905
- #: simple-membership/views/forgot_password.php:5
906
- msgid "Email Address"
907
- msgstr "Epost adresse"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
908
 
909
- #: simple-membership/views/forgot_password.php:12
 
 
 
 
 
 
 
 
910
  msgid "Reset Password"
911
- msgstr "Nullstill passord"
912
 
913
- #: simple-membership/views/loggedin.php:3
914
  msgid "Logged in as"
915
- msgstr "Innlogget som"
916
 
917
- #: simple-membership/views/loggedin.php:11
918
  msgid "Membership"
919
  msgstr "Medlemskap"
920
 
921
- #: simple-membership/views/loggedin.php:15
922
  msgid "Account Expiry"
923
- msgstr "Kontoutløp"
924
 
925
- #: simple-membership/views/loggedin.php:19
926
- msgid "Logout"
927
- msgstr "Logg ut"
928
 
929
- #: simple-membership/views/login.php:18
 
 
 
 
930
  msgid "Remember Me"
931
  msgstr "Husk meg"
932
 
933
- #: simple-membership/views/login.php:24
934
- msgid "Forgot Password"
935
- msgstr "Glemt passord"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
 
 
 
 
 
3
  "MIME-Version: 1.0\n"
4
  "Content-Type: text/plain; charset=UTF-8\n"
5
  "Content-Transfer-Encoding: 8bit\n"
6
+ "X-Generator: Poedit 2.3.1\n"
7
+ "Project-Id-Version: Bing\n"
8
+ "Language: nb_NO\n"
9
+ "POT-Creation-Date: \n"
10
+ "PO-Revision-Date: \n"
11
+ "Last-Translator: \n"
12
+ "Language-Team: \n"
13
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 
14
 
15
+ #: classes/class.simple-wp-membership.php:180
16
+ msgid "The admin of this site does not allow users to access the wp dashboard."
17
+ msgstr "Administratoren for dette området tillater ikke brukere å få tilgang til wp-instrumentbordet."
18
+
19
+ #: classes/class.simple-wp-membership.php:181
20
+ msgid "Go back to the home page by "
21
+ msgstr "Gå tilbake til hjemmesiden ved å "
22
+
23
+ #: classes/class.simple-wp-membership.php:181
24
+ msgid "clicking here"
25
+ msgstr "klikke her"
26
+
27
+ #: classes/class.simple-wp-membership.php:242
28
+ msgid "Error! This site has the force WP user login feature enabled in the settings. We could not find a WP user record for the given username: "
29
+ msgstr "Feil! Dette nettstedet har force WP bruker påloggingsfunksjonen aktivert i innstillingene. Vi kunne ikke finne en WP-brukeroppføring for det gitte brukernavnet: "
30
+
31
+ #: classes/class.simple-wp-membership.php:243
32
+ msgid "This error is triggered when a member account doesn't have a corresponding WP user account. So the plugin fails to log the user into the WP User system."
33
+ msgstr "Denne feilen utløses når en medlemskonto ikke har en tilsvarende WP-brukerkonto. Så plugin unnlater å logge brukeren inn i WP Brukersystemet."
34
+
35
+ #: classes/class.simple-wp-membership.php:244
36
+ msgid "Contact the site admin and request them to check your username in the WP Users menu to see what happened with the WP user entry of your account."
37
+ msgstr "Kontakt nettstedadministratoren og be dem om å sjekke brukernavnet ditt i WP-brukere-menyen for å se hva som skjedde med WP-brukeroppføringen til kontoen din."
38
+
39
+ #: classes/class.simple-wp-membership.php:245
40
+ msgid "The site admin can disable the Force WP User Synchronization feature in the settings to disable this feature and this error will go away."
41
+ msgstr "Nettstedsadministratoren kan deaktivere Force WP Brukersynkroniseringsfunksjonen i innstillingene for å deaktivere denne funksjonen, og denne feilen vil forsvinne."
42
+
43
+ #: classes/class.simple-wp-membership.php:246
44
+ msgid "You can use the back button of your browser to go back to the site."
45
+ msgstr "Du kan bruke tilbake-knappen i nettleseren din for å gå tilbake til nettstedet."
46
+
47
+ #: classes/class.simple-wp-membership.php:407
48
+ msgid "You are not logged in."
49
+ msgstr "Du er ikke innlogget."
50
+
51
+ #: classes/class.simple-wp-membership.php:458
52
+ msgid "You have the sandbox payment mode enabled in plugin settings. Make sure to turn off the sandbox mode when you want to do live transactions."
53
+ msgstr "Du har aktivert betalingsmodus for sandkasse i plugin-innstillingene. Sørg for å slå av sandkassemodus når du vil utføre live-transaksjoner."
54
+
55
+ #: classes/class.simple-wp-membership.php:473
56
+ msgid "Simple WP Membership Protection"
57
+ msgstr "Enkel beskyttelse av WP-medlemskap"
58
+
59
+ #: classes/class.simple-wp-membership.php:485
60
+ msgid "Simple Membership Protection options"
61
+ msgstr "Enkle alternativer for medlemskapsbeskyttelse"
62
+
63
+ #: classes/class.simple-wp-membership.php:503
64
+ msgid "Do you want to protect this content?"
65
+ msgstr "Vil du beskytte dette innholdet?"
66
+
67
+ #: classes/class.simple-wp-membership.php:504
68
+ msgid "No, Do not protect this content."
69
+ msgstr "Nei, ikke beskytt dette innholdet."
70
+
71
+ #: classes/class.simple-wp-membership.php:505
72
+ msgid "Yes, Protect this content."
73
+ msgstr "Ja, beskytt dette innholdet."
74
+
75
+ #: classes/class.simple-wp-membership.php:508
76
+ msgid "Select the membership level that can access this content:"
77
+ msgstr "Velg medlemsnivå som får tilgang til dette innholdet:"
78
+
79
+ #: classes/class.simple-wp-membership.php:646
80
+ #: classes/class.simple-wp-membership.php:650
81
+ msgid "Validating, please wait"
82
+ msgstr "Validerer, vennligst vent"
83
+
84
+ #: classes/class.simple-wp-membership.php:653
85
+ msgid "Invalid email address"
86
+ msgstr "Ugyldig epostadresse"
87
+
88
+ #: classes/class.simple-wp-membership.php:656
89
+ msgid "This field is required"
90
+ msgstr "Dette feltet er obligatorisk"
91
+
92
+ msgid "Password must contain at least:"
93
+ msgstr "Passordet må inneholde minst:"
94
+
95
+ msgid "- a digit"
96
+ msgstr "- et siffer"
97
+
98
+ msgid "- an uppercase letter"
99
+ msgstr "- en stor bokstav"
100
+
101
+ msgid "- a lowercase letter"
102
+ msgstr "- en liten bokstav"
103
+
104
+ #: classes/class.simple-wp-membership.php:659 classes/class.swpm-auth.php:296
105
+ msgid "Invalid Username"
106
+ msgstr "Ugyldig brukernavn"
107
+
108
+ #: classes/class.simple-wp-membership.php:659
109
+ msgid "Usernames can only contain: letters, numbers and .-_*@"
110
+ msgstr "Brukernavn kan bare inneholde: bokstaver, tall og.-_ * @"
111
+
112
+ #: classes/class.simple-wp-membership.php:662
113
+ msgid "Minimum "
114
+ msgstr "Minimum "
115
+
116
+ #: classes/class.simple-wp-membership.php:663
117
+ msgid " characters required"
118
+ msgstr " tegn som kreves"
119
+
120
+ #: classes/class.simple-wp-membership.php:666
121
+ msgid "Apostrophe character is not allowed"
122
+ msgstr "Apostrofekarakter er ikke tillatt"
123
+
124
+ #: classes/class.simple-wp-membership.php:697
125
+ msgid "WP Membership"
126
+ msgstr "WP-medlemskap"
127
+
128
+ #: classes/class.simple-wp-membership.php:698 classes/class.swpm-members.php:11
129
+ #: classes/class.swpm-members.php:581
130
+ msgid "Members"
131
+ msgstr "Medlemmer"
132
+
133
+ #: classes/class.simple-wp-membership.php:699
134
+ #: classes/class.swpm-category-list.php:20
135
+ #: classes/class.swpm-membership-levels.php:12
136
+ #: classes/class.swpm-membership-levels.php:265
137
+ #: classes/class.swpm-post-list.php:21
138
+ msgid "Membership Levels"
139
+ msgstr "Medlemsnivåer"
140
+
141
+ #: classes/class.simple-wp-membership.php:700
142
+ msgid "Settings"
143
+ msgstr "Innstillinger"
144
+
145
+ #: classes/class.simple-wp-membership.php:701
146
+ msgid "Payments"
147
+ msgstr "Betalinger"
148
+
149
+ #: classes/class.simple-wp-membership.php:702
150
+ msgid "Add-ons"
151
+ msgstr "Add-ons"
152
+
153
+ #: classes/class.swpm-access-control.php:47
154
+ #: classes/class.swpm-access-control.php:120
155
  msgid "You need to login to view this content. "
156
  msgstr "Du må logge inn for å se dette innholdet. "
157
 
158
+ #: classes/class.swpm-access-control.php:56
159
+ #: classes/class.swpm-access-control.php:128
160
+ #: classes/class.swpm-access-control.php:212
161
+ msgid "Your account has expired. "
162
+ msgstr "Kontoen din er utløpt. "
163
+
164
+ #: classes/class.swpm-access-control.php:66
165
+ #: classes/class.swpm-access-control.php:138
166
+ msgid "This content can only be viewed by members who joined on or before "
167
+ msgstr "Dette innholdet kan bare sees av medlemmer som meldte seg på eller før "
168
 
169
+ #: classes/class.swpm-access-control.php:79
170
+ #: classes/class.swpm-access-control.php:148
171
+ msgid "This content is not permitted for your membership level."
172
+ msgstr "Dette innholdet er ikke tillatt for ditt medlemsnivå."
173
 
174
+ #: classes/class.swpm-access-control.php:204
 
175
  msgid "You need to login to view the rest of the content. "
176
  msgstr "Du må logge inn for å se resten av innholdet. "
177
 
178
+ #: classes/class.swpm-access-control.php:217
179
+ msgid " The rest of the content is not permitted for your membership level."
180
+ msgstr " Resten av innholdet er ikke tillatt for ditt medlemsnivå."
181
 
182
+ #: classes/class.swpm-admin-registration.php:25
183
+ msgid "Error! Nonce verification failed for user registration from admin end."
184
+ msgstr "Feil! Ikke-bekreftelse mislyktes for brukerregistrering fra admin slutten."
185
+
186
+ #: classes/class.swpm-admin-registration.php:71
187
+ msgid "Member record added successfully."
188
+ msgstr "Medlemsrekorden ble lagt til."
189
+
190
+ #: classes/class.swpm-admin-registration.php:76
191
+ #: classes/class.swpm-admin-registration.php:124
192
+ #: classes/class.swpm-admin-registration.php:151
193
+ #: classes/class.swpm-membership-level.php:73
194
+ #: classes/class.swpm-membership-level.php:105
195
  msgid "Please correct the following:"
196
+ msgstr "Korriger følgende:"
197
+
198
+ #: classes/class.swpm-admin-registration.php:87
199
+ msgid "Error! Nonce verification failed for user edit from admin end."
200
+ msgstr "Feil! Bekreftelse av manglende kraft mislyktes for brukerredigering fra admin-slutt."
201
+
202
+ #: classes/class.swpm-admin-registration.php:139
203
+ msgid "Your current password"
204
+ msgstr "Ditt nåværende passord"
205
 
206
+ #: classes/class.swpm-ajax.php:14
207
+ msgid "Invalid Email Address"
208
+ msgstr "Ugyldig epostadresse"
 
209
 
210
+ #: classes/class.swpm-ajax.php:21 classes/class.swpm-ajax.php:36
211
+ msgid "Already taken"
212
+ msgstr "Allerede tatt"
213
+
214
+ #: classes/class.swpm-ajax.php:30
215
+ msgid "Name contains invalid character"
216
+ msgstr "Navnet inneholder ugyldig karakter"
217
+
218
+ #: classes/class.swpm-ajax.php:37
219
  msgid "Available"
220
  msgstr "Tilgjengelig"
221
 
222
+ #: classes/class.swpm-auth.php:57
223
+ msgid "Warning! Simple Membership plugin cannot process this login request to prevent you from getting logged out of WP Admin accidentally."
224
+ msgstr "Advarsel! Simple Membership-plugin kan ikke behandle denne påloggingsforespørselen for å forhindre at du blir logget av WP Admin ved et uhell."
225
+
226
+ #: classes/class.swpm-auth.php:58
227
+ msgid "Click here"
228
+ msgstr "Klikk her"
229
+
230
+ #: classes/class.swpm-auth.php:58
231
+ msgid " to see the profile you are currently logged into in this browser."
232
+ msgstr " for å se profilen du for øyeblikket er logget på i denne nettleseren."
233
+
234
+ #: classes/class.swpm-auth.php:59
235
+ msgid "You are logged into the site as an ADMIN user in this browser. First, logout from WP Admin then you will be able to log in as a normal member."
236
+ msgstr "Du er logget inn på siden som ADMIN-bruker i denne nettleseren. Først logger du ut fra WP Admin, så vil du kunne logge deg på som et normalt medlem."
237
+
238
+ #: classes/class.swpm-auth.php:60
239
+ msgid "Alternatively, you can use a different browser (where you are not logged-in as ADMIN) to test the membership login."
240
+ msgstr "Alternativt kan du bruke en annen nettleser (der du ikke er logget inn som ADMIN) for å teste medlemspåloggingen."
241
+
242
+ #: classes/class.swpm-auth.php:61
243
+ msgid "Your normal visitors or members will never see this message. This message is ONLY for ADMIN user."
244
+ msgstr "De vanlige besøkende eller medlemmer vil aldri se denne meldingen. Denne meldingen er KUN for ADMIN-brukere."
245
+
246
+ #: classes/class.swpm-auth.php:68
247
+ msgid "Captcha validation failed on login form."
248
+ msgstr "Valg av Captcha mislyktes på påloggingsskjemaet."
249
+
250
+ #: classes/class.swpm-auth.php:93
251
  msgid "User Not Found."
252
+ msgstr "Bruker ikke funnet."
253
 
254
+ #: classes/class.swpm-auth.php:100
255
  msgid "Password Empty or Invalid."
256
  msgstr "Passordet er tomt eller ugyldig."
257
 
258
+ #: classes/class.swpm-auth.php:133
259
  msgid "Account is inactive."
260
  msgstr "Kontoen er inaktiv."
261
 
262
+ #: classes/class.swpm-auth.php:136 classes/class.swpm-auth.php:162
263
  msgid "Account has expired."
264
  msgstr "Kontoen er utløpt."
265
 
266
+ #: classes/class.swpm-auth.php:139
267
+ msgid "Account is pending."
268
+ msgstr "Kontoen venter."
269
+
270
+ #: classes/class.swpm-auth.php:146
271
+ msgid "You need to activate your account. If you didn't receive an email then %s to resend the activation email."
272
+ msgstr "Du må aktivere kontoen din. Hvis du ikke mottok en e-post, send% s for å sende aktiveringsmeldingen på nytt."
273
+
274
+ #: classes/class.swpm-auth.php:146
275
+ #: classes/class.swpm-front-registration.php:376
276
+ #: classes/class.swpm-front-registration.php:426
277
+ #: classes/class.swpm-utils-misc.php:169
278
+ msgid "click here"
279
+ msgstr "klikk her"
280
+
281
+ #: classes/class.swpm-auth.php:170
282
  msgid "You are logged in as:"
283
+ msgstr "Du er innlogget som:"
284
 
285
+ #: classes/class.swpm-auth.php:234
286
  msgid "Logged Out Successfully."
287
+ msgstr "Logget ut Vellykket."
288
 
289
+ #: classes/class.swpm-auth.php:287
290
  msgid "Session Expired."
291
+ msgstr "Sesjon utløpt."
292
+
293
+ #: classes/class.swpm-auth.php:304
294
+ msgid "Please login again."
295
+ msgstr "Vennligst logg inn igjen."
296
+
297
+ #: classes/class.swpm-category-list.php:19 classes/class.swpm-members.php:24
298
+ #: classes/class.swpm-membership-levels.php:11
299
+ #: classes/class.swpm-membership-levels.php:21
300
+ #: classes/class.swpm-post-list.php:20
301
+ #: classes/admin-includes/class.swpm-payments-list-table.php:85
302
+ #: views/add.php:40 views/admin_member_form_common_part.php:2 views/edit.php:75
303
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:50
304
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:34
305
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:229
306
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:49
307
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:35
308
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:317
309
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:47
310
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:273
311
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:99
312
  msgid "Membership Level"
313
+ msgstr "Medlemskapsnivå"
314
 
315
+ #: classes/class.swpm-category-list.php:33
316
+ msgid "Category ID"
317
+ msgstr "Kategori-ID"
 
 
318
 
319
+ #: classes/class.swpm-category-list.php:34
320
+ msgid "Category Name"
321
+ msgstr "Kategori navn"
 
 
322
 
323
+ #: classes/class.swpm-category-list.php:35
324
+ msgid "Category Type (Taxonomy)"
325
+ msgstr "Kategoritype (taksonomi)"
326
 
327
+ #: classes/class.swpm-category-list.php:36
328
  msgid "Description"
329
  msgstr "Beskrivelse"
330
 
331
+ #: classes/class.swpm-category-list.php:37
332
  msgid "Count"
333
+ msgstr "Telle"
334
 
335
+ #: classes/class.swpm-category-list.php:92
336
+ msgid "Category protection updated!"
337
+ msgstr "Kategoribeskyttelse oppdatert!"
338
 
339
+ #: classes/class.swpm-category-list.php:130
340
+ msgid "No category found."
341
+ msgstr "Ingen kategori funnet."
 
 
 
342
 
343
+ #: classes/class.swpm-comment-form-related.php:15
344
+ msgid "Please login to comment."
345
+ msgstr "Vennligst logg inn for å kommentere."
346
+
347
+ #: classes/class.swpm-comment-form-related.php:40
348
+ msgid "Please Login to Comment."
349
+ msgstr "Vennligst logg inn for å kommentere."
350
+
351
+ #: classes/class.swpm-comment-form-related.php:79
352
+ msgid "Comments not allowed by a non-member."
353
+ msgstr "Kommentarer er ikke tillatt av et ikke-medlem."
354
+
355
+ #: classes/class.swpm-form.php:30
356
+ msgid "Wordpress account exists with given username. But given email doesn't match."
357
+ msgstr "Wordpress-konto eksisterer med gitt brukernavn. Men gitt e-post stemmer ikke."
358
 
359
+ #: classes/class.swpm-form.php:31
360
+ msgid " Use a different username to complete the registration. If you want to use that username then you must enter the correct email address associated with the existing WP user to connect with that account."
361
+ msgstr " Bruk et annet brukernavn for å fullføre registreringen. Hvis du vil bruke dette brukernavnet, må du oppgi riktig e-postadresse tilknyttet den eksisterende WP-brukeren for å koble til den kontoen."
362
 
363
+ #: classes/class.swpm-form.php:37
364
+ msgid "Wordpress account exists with given email. But given username doesn't match."
365
+ msgstr "Wordpress-konto eksisterer med gitt e-post. Men gitt brukernavn stemmer ikke."
366
 
367
+ #: classes/class.swpm-form.php:38
368
+ msgid " Use a different email address to complete the registration. If you want to use that email then you must enter the correct username associated with the existing WP user to connect with that account."
369
+ msgstr " Bruk en annen e-postadresse for å fullføre registreringen. Hvis du vil bruke den e-postmeldingen, må du oppgi riktig brukernavn tilknyttet den eksisterende WP-brukeren for å koble til den kontoen."
370
 
371
+ #: classes/class.swpm-form.php:48
372
+ msgid "Username is required"
373
+ msgstr "Brukernavn kreves"
374
+
375
+ #: classes/class.swpm-form.php:52
376
+ msgid "Username contains invalid character"
377
+ msgstr "Brukernavn inneholder ugyldig karakter"
378
+
379
+ #: classes/class.swpm-form.php:60
380
+ msgid "Username already exists."
381
+ msgstr "Brukernavn finnes allerede."
382
+
383
+ #: classes/class.swpm-form.php:83
384
  msgid "Password is required"
385
+ msgstr "Passord er påkrevd"
386
 
387
+ #: classes/class.swpm-form.php:90
388
  msgid "Password mismatch"
389
+ msgstr "Feil i passord"
390
 
391
+ #: classes/class.swpm-form.php:101
392
  msgid "Email is required"
393
+ msgstr "E-post er påkrevd"
394
 
395
+ #: classes/class.swpm-form.php:105
396
  msgid "Email is invalid"
397
+ msgstr "E-postadressen er ugyldig"
398
 
399
+ #: classes/class.swpm-form.php:121
400
  msgid "Email is already used."
401
+ msgstr "E-post er allerede brukt."
402
 
403
+ #: classes/class.swpm-form.php:179
404
  msgid "Member since field is invalid"
405
  msgstr "Medlem siden feltet er ugyldig"
406
 
407
+ #: classes/class.swpm-form.php:190
408
  msgid "Access starts field is invalid"
409
+ msgstr "Tilgangsstartfeltet er ugyldig"
410
 
411
+ #: classes/class.swpm-form.php:200
412
  msgid "Gender field is invalid"
413
+ msgstr "Kjønnsfeltet er ugyldig"
414
 
415
+ #: classes/class.swpm-form.php:211
416
  msgid "Account state field is invalid"
417
+ msgstr "Kontostatusfeltet er ugyldig"
418
 
419
+ #: classes/class.swpm-form.php:218
420
  msgid "Invalid membership level"
421
+ msgstr "Ugyldig medlemsnivå"
422
+
423
+ #: classes/class.swpm-front-registration.php:33
424
+ msgid "Error! Invalid Request. Could not find a match for the given security code and the user ID."
425
+ msgstr "Feil! Ugyldig forespørsel. Kunne ikke finne et samsvar for den gitte sikkerhetskoden og bruker-IDen."
426
+
427
+ #: classes/class.swpm-front-registration.php:45
428
+ #: classes/class.swpm-utils-misc.php:274 views/login.php:36
429
+ msgid "Join Us"
430
+ msgstr "Bli med oss"
431
+
432
+ #: classes/class.swpm-front-registration.php:47
433
+ msgid "Free membership is disabled on this site. Please make a payment from the "
434
+ msgstr "Gratis medlemskap er deaktivert på dette nettstedet. Foreta en betaling fra "
435
 
436
+ #: classes/class.swpm-front-registration.php:49
437
+ msgid " page to pay for a premium membership."
438
+ msgstr " side for å betale for et premiummedlemskap."
439
+
440
+ #: classes/class.swpm-front-registration.php:51
441
+ msgid "You will receive a unique link via email after the payment. You will be able to use that link to complete the premium membership registration."
442
+ msgstr "Du vil motta en unik lenke via e-post etter betalingen. Du vil kunne bruke den lenken til å fullføre premium medlemsregistreringen."
443
+
444
+ #: classes/class.swpm-front-registration.php:79
445
+ msgid "Security check: captcha validation failed."
446
+ msgstr "Sikkerhetsjekk: captcha-validering mislyktes."
447
+
448
+ #: classes/class.swpm-front-registration.php:89
449
+ msgid "You must accept the terms and conditions."
450
+ msgstr "Du må akseptere vilkårene og betingelsene."
451
+
452
+ #: classes/class.swpm-front-registration.php:100
453
+ msgid "You must agree to the privacy policy."
454
+ msgstr "Du må godta personvernreglene."
455
+
456
+ #: classes/class.swpm-front-registration.php:140
457
+ msgid "You need to confirm your email address. Please check your email and follow instructions to complete your registration."
458
+ msgstr "Du må bekrefte e-postadressen din. Vennligst sjekk e-posten din og følg instruksjonene for å fullføre registreringen."
459
+
460
+ #: classes/class.swpm-front-registration.php:145
461
  msgid "Registration Successful. "
462
  msgstr "Registrering fullført. "
463
 
464
+ #: classes/class.swpm-front-registration.php:145
465
+ #: classes/class.swpm-utils-misc.php:273 classes/class.swpm-utils-misc.php:285
466
  msgid "Please"
467
  msgstr "Vennligst"
468
 
469
+ #: classes/class.swpm-front-registration.php:145
470
+ #: classes/class.swpm-utils-misc.php:273 views/login.php:30
 
471
  msgid "Login"
472
+ msgstr "Logg Inn"
473
 
474
+ #: classes/class.swpm-front-registration.php:159
 
475
  msgid "Please correct the following"
476
  msgstr "Vennligst korriger følgende"
477
 
478
+ #: classes/class.swpm-front-registration.php:207
479
  msgid "Membership Level Couldn't be found."
480
+ msgstr "Medlemskapsnivå Funnet ikke."
481
+
482
+ #: classes/class.swpm-front-registration.php:258
483
+ msgid "Error! Nonce verification failed for front end profile edit."
484
+ msgstr "Feil! Ikke-bekreftelse mislyktes for redigering av frontend-profilen."
485
+
486
+ #: classes/class.swpm-front-registration.php:266
487
+ msgid "Profile updated successfully."
488
+ msgstr "Profilen ble oppdatert."
489
 
490
+ #: classes/class.swpm-front-registration.php:275
491
+ msgid "Profile updated successfully. You will need to re-login since you changed your password."
492
+ msgstr "Profilen ble oppdatert. Du må logge inn på nytt siden du endret passord."
493
 
494
+ #: classes/class.swpm-front-registration.php:289
495
+ msgid "Please correct the following."
496
+ msgstr "Vennligst korriger følgende."
497
+
498
+ #: classes/class.swpm-front-registration.php:301
499
+ msgid "Captcha validation failed."
500
+ msgstr "Valg av Captcha mislyktes."
501
+
502
+ #: classes/class.swpm-front-registration.php:309
503
+ msgid "Email address not valid."
504
+ msgstr "E-postadressen er ikke gyldig."
505
+
506
+ #: classes/class.swpm-front-registration.php:320
507
+ msgid "No user found with that email address."
508
+ msgstr "Ingen brukere funnet med den e-postadressen."
509
+
510
+ #: classes/class.swpm-front-registration.php:321
511
+ #: classes/class.swpm-front-registration.php:350
512
+ msgid "Email Address: "
513
+ msgstr "Epostadresse: "
514
+
515
+ #: classes/class.swpm-front-registration.php:349
516
  msgid "New password has been sent to your email address."
517
+ msgstr "Nytt passord har blitt sendt til din e-postadresse."
518
+
519
+ #: classes/class.swpm-front-registration.php:371
520
+ msgid "Can't find member account."
521
+ msgstr "Finner ikke medlemskonto."
522
+
523
+ #: classes/class.swpm-front-registration.php:376
524
+ #: classes/class.swpm-front-registration.php:426
525
+ msgid "Account already active. "
526
+ msgstr "Kontoen er allerede aktiv. "
527
 
528
+ #: classes/class.swpm-front-registration.php:376
529
+ #: classes/class.swpm-front-registration.php:426
530
+ msgid " to login."
531
+ msgstr " å logge inn."
532
+
533
+ #: classes/class.swpm-front-registration.php:383
534
+ msgid "Activation code mismatch. Cannot activate this account. Please contact the site admin."
535
+ msgstr "Feil i aktiveringskode. Kan ikke aktivere denne kontoen. Kontakt nettstedets administrator."
536
+
537
+ #: classes/class.swpm-front-registration.php:397
538
+ msgid "Success! Your account has been activated successfully."
539
+ msgstr "Suksess! Kontoen din er blitt aktivert."
540
+
541
+ #: classes/class.swpm-front-registration.php:421
542
+ msgid "Cannot find member account."
543
+ msgstr "Kan ikke finne medlemskonto."
544
+
545
+ #: classes/class.swpm-front-registration.php:443
546
+ msgid "Activation email has been sent. Please check your email and activate your account."
547
+ msgstr "Aktiverings-e-post er sendt. Vennligst sjekk e-posten din og aktiver kontoen din."
548
+
549
+ #: classes/class.swpm-init-time-tasks.php:118
550
+ msgid "Sorry, Nonce verification failed."
551
+ msgstr "Beklager, bekreftelse av ikke-mislyktes mislyktes."
552
+
553
+ #: classes/class.swpm-init-time-tasks.php:125
554
+ msgid "Sorry, Password didn't match."
555
+ msgstr "Beklager, passordet stemte ikke."
556
+
557
+ #: classes/class.swpm-level-form.php:50
558
  msgid "Date format is not valid."
559
+ msgstr "Datoformatet er ikke gyldig."
560
 
561
+ #: classes/class.swpm-level-form.php:58
562
  msgid "Access duration must be > 0."
563
+ msgstr "Tilgangsvarighet må være> 0."
564
 
565
+ #: classes/class.swpm-members.php:10
566
  msgid "Member"
567
  msgstr "Medlem"
568
 
569
+ #: classes/class.swpm-members.php:19
570
+ #: classes/class.swpm-membership-levels.php:20
571
+ msgid "ID"
572
+ msgstr "ID"
573
 
574
+ #: classes/class.swpm-members.php:20 views/add.php:16 views/admin_add.php:11
575
+ #: views/admin_edit.php:19 views/edit.php:23
576
+ #: includes/swpm_mda_show_profile.php:27
577
+ msgid "Username"
578
  msgstr "Brukernavn"
579
 
580
+ #: classes/class.swpm-members.php:21
581
+ #: classes/admin-includes/class.swpm-payments-list-table.php:78
582
+ #: views/add.php:32 views/admin_member_form_common_part.php:15
583
+ #: views/edit.php:39 includes/swpm_mda_show_profile.php:28
584
  msgid "First Name"
585
  msgstr "Fornavn"
586
 
587
+ #: classes/class.swpm-members.php:22
588
+ #: classes/admin-includes/class.swpm-payments-list-table.php:79
589
+ #: views/add.php:36 views/admin_member_form_common_part.php:19
590
+ #: views/edit.php:43 includes/swpm_mda_show_profile.php:29
591
  msgid "Last Name"
592
  msgstr "Etternavn"
593
 
594
+ #: classes/class.swpm-members.php:23 views/add.php:20 views/edit.php:27
595
+ #: includes/swpm_mda_show_profile.php:35
596
  msgid "Email"
597
+ msgstr "E-post"
598
 
599
+ #: classes/class.swpm-members.php:25 views/admin_member_form_common_part.php:11
 
600
  msgid "Access Starts"
601
  msgstr "Tilgang starter"
602
 
603
+ #: classes/class.swpm-members.php:26 includes/swpm_mda_show_profile.php:31
604
  msgid "Account State"
605
+ msgstr "Kontostatus"
606
 
607
+ #: classes/class.swpm-members.php:27
608
+ msgid "Last Login Date"
609
+ msgstr "Siste påloggingsdato"
610
+
611
+ #: classes/class.swpm-members.php:46
612
+ #: classes/class.swpm-membership-levels.php:36
613
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:94
614
+ #: classes/admin-includes/class.swpm-payments-list-table.php:102
615
  msgid "Delete"
616
  msgstr "Slett"
617
 
618
+ #: classes/class.swpm-members.php:47
619
+ msgid "Set Status to Active"
620
+ msgstr "Sett status til Aktiv"
621
+
622
+ #: classes/class.swpm-members.php:48
623
+ msgid "Set Status to Active and Notify"
624
+ msgstr "Sett status til Aktiv og varsle"
625
+
626
+ #: classes/class.swpm-members.php:49
627
+ msgid "Set Status to Inactive"
628
+ msgstr "Sett status til inaktiv"
629
+
630
+ #: classes/class.swpm-members.php:50
631
+ msgid "Set Status to Pending"
632
+ msgstr "Sett status til ventende"
633
+
634
+ #: classes/class.swpm-members.php:51
635
+ msgid "Set Status to Expired"
636
+ msgstr "Sett status til utløpt"
637
+
638
+ #: classes/class.swpm-members.php:72
639
+ msgid "incomplete"
640
+ msgstr "ufullstendig"
641
+
642
+ #: classes/class.swpm-members.php:191
643
+ msgid "No member found."
644
+ msgstr "Ingen medlemmer funnet."
645
+
646
+ #: classes/class.swpm-members.php:337
647
+ msgid "Error! Nonce verification failed for user delete from admin end."
648
+ msgstr "Feil! Bekreftelse av manglende kraft mislyktes for sletting av brukere fra admin-enden."
649
+
650
+ #: classes/class.swpm-members.php:406 classes/class.swpm-members.php:436
651
+ msgid "Error! Please select a membership level first."
652
+ msgstr "Feil! Velg først et medlemsnivå."
653
+
654
+ #: classes/class.swpm-members.php:423
655
+ msgid "Membership level change operation completed successfully."
656
+ msgstr "Operasjon for endring av medlemsnivå fullført."
657
+
658
+ #: classes/class.swpm-members.php:453
659
+ msgid "Access starts date change operation successfully completed."
660
+ msgstr "Endring av tilgangsdato ble fullført."
661
+
662
+ #: classes/class.swpm-members.php:462
663
+ msgid "Bulk Update Membership Level of Members"
664
+ msgstr "Bulk Update Membership Level of Members"
665
+
666
+ #: classes/class.swpm-members.php:465
667
+ msgid "You can manually change the membership level of any member by editing the record from the members menu. "
668
+ msgstr "Du kan endre medlemsnivået manuelt for et hvilket som helst medlem ved å redigere posten fra medlemsmenyen. "
669
+
670
+ #: classes/class.swpm-members.php:466
671
+ msgid "You can use the following option to bulk update the membership level of users who belong to the level you select below."
672
+ msgstr "Du kan bruke følgende alternativ for å bulkoppdatere medlemsnivået til brukere som tilhører nivået du velger nedenfor."
673
+
674
+ #: classes/class.swpm-members.php:472 classes/class.swpm-members.php:520
675
+ msgid "Membership Level: "
676
+ msgstr "Medlemskapsnivå: "
677
+
678
+ #: classes/class.swpm-members.php:476
679
+ msgid "Select Current Level"
680
+ msgstr "Velg Gjeldende nivå"
681
+
682
+ #: classes/class.swpm-members.php:479
683
+ msgid "Select the current membership level (the membership level of all members who are in this level will be updated)."
684
+ msgstr "Velg gjeldende medlemsnivå (medlemsnivået for alle medlemmene som er i dette nivået vil bli oppdatert)."
685
+
686
+ #: classes/class.swpm-members.php:485
687
+ msgid "Level to Change to: "
688
+ msgstr "Nivå å endre til: "
689
+
690
+ #: classes/class.swpm-members.php:489
691
+ msgid "Select Target Level"
692
+ msgstr "Velg Målnivå"
693
+
694
+ #: classes/class.swpm-members.php:492
695
+ msgid "Select the new membership level."
696
+ msgstr "Velg det nye medlemsnivået."
697
+
698
+ #: classes/class.swpm-members.php:498
699
+ msgid "Bulk Change Membership Level"
700
+ msgstr "Bulk Change Membership Level"
701
+
702
+ #: classes/class.swpm-members.php:508
703
+ msgid "Bulk Update Access Starts Date of Members"
704
+ msgstr "Tilgang til masseoppdatering starter dato for medlemmer"
705
+
706
+ #: classes/class.swpm-members.php:512
707
+ msgid "The access starts date of a member is set to the day the user registers. This date value is used to calculate how long the member can access your content that are protected with a duration type protection in the membership level. "
708
+ msgstr "Tilgangsstartdato for et medlem er satt til den dagen brukeren registrerer seg. Denne datoverdien brukes til å beregne hvor lenge medlemmet kan få tilgang til innholdet ditt som er beskyttet med en varighetstype beskyttelse i medlemsnivået. "
709
+
710
+ #: classes/class.swpm-members.php:513
711
+ msgid "You can manually set a specific access starts date value of all members who belong to a particular level using the following option."
712
+ msgstr "Du kan stille inn en bestemt datoverdi for tilgang for alle medlemmer som tilhører et bestemt nivå manuelt ved å bruke følgende alternativ."
713
+
714
+ #: classes/class.swpm-members.php:523
715
+ msgid "Select Level"
716
+ msgstr "Velg nivå"
717
+
718
+ #: classes/class.swpm-members.php:526
719
+ msgid "Select the Membership level (the access start date of all members who are in this level will be updated)."
720
+ msgstr "Velg medlemskapsnivå (tilgangsdato for alle medlemmer som er på dette nivået vil bli oppdatert)."
721
+
722
+ #: classes/class.swpm-members.php:535
723
+ msgid "Specify the access starts date value."
724
+ msgstr "Angi datoen for tilgangsstartdato."
725
+
726
+ #: classes/class.swpm-members.php:541
727
+ msgid "Bulk Change Access Starts Date"
728
+ msgstr "Tilgang til bulkendring starter dato"
729
+
730
+ #: classes/class.swpm-members.php:576
731
+ msgid "Simple WP Membership::Members"
732
+ msgstr "Enkelt WP-medlemskap :: Medlemmer"
733
+
734
+ #: classes/class.swpm-members.php:577
735
+ #: classes/class.swpm-membership-levels.php:226 views/admin_members_list.php:44
736
+ msgid "Add New"
737
+ msgstr "Legg til ny"
738
+
739
+ #: classes/class.swpm-members.php:582 views/admin_add.php:6
740
+ msgid "Add Member"
741
+ msgstr "Legg til medlem"
742
+
743
+ #: classes/class.swpm-members.php:583
744
+ msgid "Bulk Operation"
745
+ msgstr "Bulkdrift"
746
 
747
+ #: classes/class.swpm-membership-level.php:52
748
+ msgid "Error! Nonce verification failed for membership level creation from admin end."
749
+ msgstr "Feil! Ikke-bekreftelse mislyktes for opprettelse av medlemskapsnivå fra administratorslutt."
750
+
751
+ #: classes/class.swpm-membership-level.php:68
752
  msgid "Membership Level Creation Successful."
753
+ msgstr "Oppretting av medlemskapsnivå vellykket."
754
+
755
+ #: classes/class.swpm-membership-level.php:84
756
+ msgid "Error! Nonce verification failed for membership level edit from admin end."
757
+ msgstr "Feil! Bekreftelse av manglende godkjenning mislyktes for redigering av medlemsnivå fra administratorslutt."
758
 
759
+ #: classes/class.swpm-membership-level.php:100
760
+ msgid "Membership Level Updated Successfully."
761
+ msgstr "Medlemskapsnivå ble oppdatert."
762
 
763
+ #: classes/class.swpm-membership-levels.php:22
764
  msgid "Role"
765
  msgstr "Rolle"
766
 
767
+ #: classes/class.swpm-membership-levels.php:23
768
  msgid "Access Valid For/Until"
769
+ msgstr "Tilgang gyldig for / til"
770
 
771
+ #: classes/class.swpm-membership-levels.php:133
772
+ msgid "No membership levels found."
773
+ msgstr "Ingen medlemsnivåer funnet."
774
+
775
+ #: classes/class.swpm-membership-levels.php:197
776
+ msgid "Error! Nonce verification failed for membership level delete from admin end."
777
+ msgstr "Feil! Bekreftelse av manglende godkjenning mislyktes for sletting av medlemsnivå fra admin-enden."
778
+
779
+ #: classes/class.swpm-membership-levels.php:216 views/admin_members_list.php:31
780
+ #: views/payments/admin_all_payment_transactions.php:16 views/template-1.php:53
781
+ #: views/template-2.php:54
782
+ msgid "Search"
783
+ msgstr "Søk"
784
+
785
+ #: classes/class.swpm-membership-levels.php:261
786
+ msgid "Simple WP Membership::Membership Levels"
787
+ msgstr "Enkelt WP-medlemskap: medlemsnivåer"
788
+
789
+ #: classes/class.swpm-membership-levels.php:266
790
+ msgid "Add Level"
791
+ msgstr "Legg til nivå"
792
+
793
+ #: classes/class.swpm-membership-levels.php:267
794
+ msgid "Manage Content Protection"
795
+ msgstr "Administrer innholdsbeskyttelse"
796
 
797
+ #: classes/class.swpm-membership-levels.php:268
798
+ msgid "Category Protection"
799
+ msgstr "Kategoribeskyttelse"
800
+
801
+ #: classes/class.swpm-membership-levels.php:269
802
+ msgid "Post and Page Protection"
803
+ msgstr "Innlegg og sidesikring"
804
+
805
+ #: classes/class.swpm-post-list.php:43 classes/class.swpm-post-list.php:52
806
+ #: classes/class.swpm-post-list.php:62
807
+ #: classes/admin-includes/class.swpm-payments-list-table.php:81
808
+ msgid "Date"
809
+ msgstr "Dato"
810
+
811
+ #: classes/class.swpm-post-list.php:44 classes/class.swpm-post-list.php:53
812
+ #: classes/class.swpm-post-list.php:63
813
+ msgid "Title"
814
+ msgstr "Tittel"
815
+
816
+ #: classes/class.swpm-post-list.php:45 classes/class.swpm-post-list.php:54
817
+ #: classes/class.swpm-post-list.php:64
818
+ msgid "Author"
819
+ msgstr "Forfatter"
820
+
821
+ #: classes/class.swpm-post-list.php:46 classes/class.swpm-post-list.php:56
822
+ #: classes/class.swpm-post-list.php:66
823
+ msgid "Status"
824
+ msgstr "Status"
825
+
826
+ #: classes/class.swpm-post-list.php:55
827
+ msgid "Categories"
828
+ msgstr "Kategorier"
829
+
830
+ #: classes/class.swpm-post-list.php:65
831
+ msgid "Type"
832
+ msgstr "Type"
833
+
834
+ #: classes/class.swpm-post-list.php:125
835
+ msgid "Protection settings updated!"
836
+ msgstr "Beskyttelsesinnstillinger oppdatert!"
837
+
838
+ #: classes/class.swpm-post-list.php:230
839
+ msgid "No items found."
840
+ msgstr "Ingen objekter funnet."
841
+
842
+ #: classes/class.swpm-protection.php:22
843
+ msgid "The category or parent category of this post is protected. You can change the category protection settings from the "
844
+ msgstr "Kategorien eller foreldrekategorien til dette innlegget er beskyttet. Du kan endre innstillingene for kategoribeskyttelse fra "
845
+
846
+ #: classes/class.swpm-protection.php:23
847
+ msgid "category protection menu"
848
+ msgstr "kategoribeskyttelsesmeny"
849
+
850
+ #: classes/class.swpm-settings.php:26 classes/class.swpm-settings.php:54
851
  msgid "General Settings"
852
+ msgstr "Generelle innstillinger"
853
+
854
+ #: classes/class.swpm-settings.php:27
855
+ msgid "Payment Settings"
856
+ msgstr "Betalingsinnstillinger"
857
 
858
+ #: classes/class.swpm-settings.php:28
859
+ msgid "Email Settings"
860
+ msgstr "E-postinnstillinger"
861
+
862
+ #: classes/class.swpm-settings.php:29
863
+ msgid "Tools"
864
+ msgstr "Verktøy"
865
+
866
+ #: classes/class.swpm-settings.php:30 classes/class.swpm-settings.php:187
867
+ msgid "Advanced Settings"
868
+ msgstr "Avanserte innstillinger"
869
+
870
+ #: classes/class.swpm-settings.php:31
871
+ msgid "Addons Settings"
872
+ msgstr "Addons Innstillinger"
873
+
874
+ #: classes/class.swpm-settings.php:53
875
+ msgid "Plugin Documentation"
876
+ msgstr "Plugin-dokumentasjon"
877
+
878
+ #: classes/class.swpm-settings.php:55
879
  msgid "Enable Free Membership"
880
+ msgstr "Aktiver gratis medlemskap"
881
 
882
+ #: classes/class.swpm-settings.php:56
883
+ msgid "Enable/disable registration for free membership level. When you enable this option, make sure to specify a free membership level ID in the field below."
884
+ msgstr "Aktiver / deaktiver registrering for gratis medlemsnivå. Når du aktiverer dette alternativet, må du sørge for å angi en gratis ID for medlemskapsnivå i feltet nedenfor."
885
 
886
+ #: classes/class.swpm-settings.php:57
887
  msgid "Free Membership Level ID"
888
+ msgstr "Gratis medlemskaps-ID"
889
 
890
+ #: classes/class.swpm-settings.php:58
891
  msgid "Assign free membership level ID"
892
+ msgstr "Tildel gratis ID for medlemskap"
893
 
894
+ #: classes/class.swpm-settings.php:59
895
  msgid "Enable More Tag Protection"
896
+ msgstr "Aktiver mer tagbeskyttelse"
897
 
898
+ #: classes/class.swpm-settings.php:60
899
+ msgid "Enables or disables \"more\" tag protection in the posts and pages. Anything after the More tag is protected. Anything before the more tag is teaser content."
900
+ msgstr "Aktiverer eller deaktiverer \"mer\" tagbeskyttelse i innleggene og sidene. Alt etter Mer-taggen er beskyttet. Alt før mer tag er teaser-innhold."
 
 
 
 
 
901
 
902
+ #: classes/class.swpm-settings.php:61
903
  msgid "Hide Adminbar"
904
+ msgstr "Skjul administrasjonsfeltet"
905
 
906
+ #: classes/class.swpm-settings.php:62
907
+ msgid "WordPress shows an admin toolbar to the logged in users of the site. Check this if you want to hide that admin toolbar in the frontend of your site."
908
+ msgstr "WordPress viser en administratorverktøylinje for påloggede brukere av nettstedet. Merk av for dette hvis du vil skjule den admin verktøylinjen i fronten av nettstedet."
909
+
910
+ #: classes/class.swpm-settings.php:63
911
+ msgid "Show Adminbar to Admin"
912
+ msgstr "Vis administrasjonslinje til administrator"
913
+
914
+ #: classes/class.swpm-settings.php:64
915
+ msgid "Use this option if you want to show the admin toolbar to admin users only. The admin toolbar will be hidden for all other users."
916
+ msgstr "Bruk dette alternativet hvis du bare vil vise admin-verktøylinjen for administratorbrukere. Administratorverktøylinjen vil være skjult for alle andre brukere."
917
 
918
+ #: classes/class.swpm-settings.php:65
919
+ msgid "Disable Access to WP Dashboard"
920
+ msgstr "Deaktiver tilgang til WP-dashbordet"
921
+
922
+ #: classes/class.swpm-settings.php:66
923
+ msgid "WordPress allows a standard wp user to be able to go to the wp-admin URL and access his profile from the wp dashbaord. Using this option will prevent any non admin users from going to the wp dashboard."
924
+ msgstr "WordPress lar en standard wp-bruker kunne gå til wp-admin URL og få tilgang til profilen sin fra wp dashbaord. Bruk av dette alternativet vil forhindre at brukere som ikke er administratorer, går til wp-dashbordet."
925
+
926
+ #: classes/class.swpm-settings.php:68 classes/class.swpm-settings.php:242
927
  msgid "Default Account Status"
928
+ msgstr "Standard kontostatus"
929
 
930
+ #: classes/class.swpm-settings.php:71
931
+ msgid "Select the default account status for newly registered users. If you want to manually approve the members then you can set the status to \"Pending\"."
932
+ msgstr "Velg standard kontostatus for nylig registrerte brukere. Hvis du vil godkjenne medlemmene manuelt, kan du stille status til \"Venter\"."
933
+
934
+ #: classes/class.swpm-settings.php:73
935
+ msgid "Members Must be Logged in to Comment"
936
+ msgstr "Medlemmene være logget inn for å kommentere"
937
 
938
+ #: classes/class.swpm-settings.php:74
939
+ msgid "Enable this option if you only want the members of the site to be able to post a comment."
940
+ msgstr "Aktiver dette alternativet hvis du bare vil at medlemmene på nettstedet skal kunne legge inn en kommentar."
941
+
942
+ #: classes/class.swpm-settings.php:83
943
  msgid "Pages Settings"
944
+ msgstr "Innstillinger for sider"
945
 
946
+ #: classes/class.swpm-settings.php:84
947
  msgid "Login Page URL"
948
+ msgstr "Påloggingssiden URL"
949
 
950
+ #: classes/class.swpm-settings.php:86
951
  msgid "Registration Page URL"
952
+ msgstr "Registreringssiden URL"
953
 
954
+ #: classes/class.swpm-settings.php:88
955
  msgid "Join Us Page URL"
956
+ msgstr "Bli med oss-URL"
957
 
958
+ #: classes/class.swpm-settings.php:90
959
  msgid "Edit Profile Page URL"
960
+ msgstr "Rediger URL-adresse for profilsiden"
961
 
962
+ #: classes/class.swpm-settings.php:92
963
  msgid "Password Reset Page URL"
964
+ msgstr "Tilbakestill passord for URL"
965
 
966
+ #: classes/class.swpm-settings.php:95
967
  msgid "Test & Debug Settings"
968
+ msgstr "Test- og feilsøkingsinnstillinger"
969
+
970
+ #: classes/class.swpm-settings.php:97
971
+ msgid "Check this option to enable debug logging."
972
+ msgstr "Merk av for dette alternativet for å aktivere feilsøking."
973
+
974
+ #: classes/class.swpm-settings.php:98
975
+ msgid " This can be useful when troubleshooting an issue. Turn it off and reset the log files after the troubleshooting is complete."
976
+ msgstr " Dette kan være nyttig når du feilsøker et problem. Slå den av og tilbakestill loggfilene etter at feilsøkingen er fullført."
977
+
978
+ #: classes/class.swpm-settings.php:100
979
+ msgid "View general debug log file by clicking "
980
+ msgstr "Vis generell feilsøkingsloggfil ved å klikke "
981
+
982
+ #: classes/class.swpm-settings.php:100 classes/class.swpm-settings.php:101
983
+ #: classes/class.swpm-settings.php:102
984
+ msgid "here"
985
+ msgstr "her"
986
+
987
+ #: classes/class.swpm-settings.php:101
988
+ msgid "View login related debug log file by clicking "
989
+ msgstr "Se påloggingsrelatert feilsøkingsloggfil ved å klikke "
990
 
991
+ #: classes/class.swpm-settings.php:102
992
+ msgid "Reset debug log files by clicking "
993
+ msgstr "Tilbakestill feilsøkingsloggfiler ved å klikke "
994
+
995
+ #: classes/class.swpm-settings.php:103
996
+ msgid "Enable Debug"
997
+ msgstr "Aktiver feilsøking"
998
+
999
+ #: classes/class.swpm-settings.php:105
1000
  msgid "Enable Sandbox Testing"
1001
+ msgstr "Aktiver testing av sandkasse"
1002
 
1003
+ #: classes/class.swpm-settings.php:106
1004
  msgid "Enable this option if you want to do sandbox payment testing."
1005
+ msgstr "Aktiver dette alternativet hvis du vil utføre betalingstesting av sandkasse."
1006
 
1007
+ #: classes/class.swpm-settings.php:119
1008
+ msgid "Email Settings Overview"
1009
+ msgstr "E-postinnstillinger Oversikt"
1010
+
1011
+ #: classes/class.swpm-settings.php:120
1012
  msgid "Email Misc. Settings"
1013
+ msgstr "E-post Diverse innstillinger"
1014
 
1015
+ #: classes/class.swpm-settings.php:122
1016
  msgid "From Email Address"
1017
+ msgstr "Fra e-postadresse"
1018
 
1019
+ #: classes/class.swpm-settings.php:126
1020
  msgid "Email Settings (Prompt to Complete Registration )"
1021
+ msgstr "E-postinnstillinger (Spør om fullstendig registrering)"
1022
 
1023
+ #: classes/class.swpm-settings.php:127 classes/class.swpm-settings.php:140
1024
+ #: classes/class.swpm-settings.php:158 classes/class.swpm-settings.php:163
1025
+ #: classes/class.swpm-settings.php:168 classes/class.swpm-settings.php:173
1026
  msgid "Email Subject"
1027
+ msgstr "E-post Emne"
1028
 
1029
+ #: classes/class.swpm-settings.php:129 classes/class.swpm-settings.php:142
1030
+ #: classes/class.swpm-settings.php:159 classes/class.swpm-settings.php:164
1031
+ #: classes/class.swpm-settings.php:169 classes/class.swpm-settings.php:174
1032
  msgid "Email Body"
1033
+ msgstr "E-postorgan"
1034
+
1035
+ #: classes/class.swpm-settings.php:133
1036
+ msgid "Enter the email address where you want the admin notification email to be sent to."
1037
+ msgstr "Skriv inn e-postadressen der du vil at e-postadministratorvarslingen skal sendes til."
1038
+
1039
+ #: classes/class.swpm-settings.php:134
1040
+ msgid " You can put multiple email addresses separated by comma (,) in the above field to send the notification to multiple email addresses."
1041
+ msgstr " Du kan sette flere e-postadresser atskilt med komma (,) i feltet ovenfor for å sende varselet til flere e-postadresser."
1042
+
1043
+ #: classes/class.swpm-settings.php:136
1044
+ msgid "Enter the subject for the admin notification email."
1045
+ msgstr "Angi emnet for e-posten for administratorvarsling."
1046
+
1047
+ #: classes/class.swpm-settings.php:137
1048
+ msgid "This email will be sent to the admin when a new user completes the membership registration. Only works if you have enabled the \"Send Notification to Admin\" option above."
1049
+ msgstr "Denne e-posten vil bli sendt til administratoren når en ny bruker fullfører medlemsregistreringen. Fungerer bare hvis du har aktivert alternativet \"Send varsling til administrator\" ovenfor."
1050
 
1051
+ #: classes/class.swpm-settings.php:139
1052
  msgid "Email Settings (Registration Complete)"
1053
+ msgstr "E-postinnstillinger (registrering fullført)"
1054
 
1055
+ #: classes/class.swpm-settings.php:144
1056
+ msgid "Send Notification to Admin"
1057
+ msgstr "Send varsel til administrator"
1058
 
1059
+ #: classes/class.swpm-settings.php:145
1060
+ msgid "Enable this option if you want the admin to receive a notification when a member registers."
1061
+ msgstr "Aktiver dette alternativet hvis du vil at administratoren skal motta et varsel når et medlem registrerer seg."
1062
+
1063
+ #: classes/class.swpm-settings.php:146
1064
+ msgid "Admin Email Address"
1065
+ msgstr "Admin e-postadresse"
1066
+
1067
+ #: classes/class.swpm-settings.php:148
1068
+ msgid "Admin Notification Email Subject"
1069
+ msgstr "Administrasjonsvarsel E-postemne"
1070
+
1071
+ #: classes/class.swpm-settings.php:150
1072
+ msgid "Admin Notification Email Body"
1073
+ msgstr "Administrasjonsvarsel E-postorgan"
1074
+
1075
+ #: classes/class.swpm-settings.php:153
1076
  msgid "Send Email to Member When Added via Admin Dashboard"
1077
+ msgstr "Send e-post til medlem når det legges til via administrasjonspanelet"
1078
 
1079
+ #: classes/class.swpm-settings.php:157
1080
+ msgid "Email Settings (Password Reset)"
1081
+ msgstr "E-postinnstillinger (tilbakestilling av passord)"
1082
+
1083
+ #: classes/class.swpm-settings.php:162
1084
  msgid " Email Settings (Account Upgrade Notification)"
1085
+ msgstr " E-postinnstillinger (varsel om kontooppgradering)"
1086
+
1087
+ #: classes/class.swpm-settings.php:167
1088
+ msgid " Email Settings (Bulk Account Activate Notification)"
1089
+ msgstr " E-postinnstillinger (Bulkkonto aktiverer varsling)"
1090
+
1091
+ #: classes/class.swpm-settings.php:172
1092
+ msgid " Email Settings (Email Activation)"
1093
+ msgstr " E-postinnstillinger (e-postaktivering)"
1094
+
1095
+ #: classes/class.swpm-settings.php:189
1096
+ msgid "Enable Expired Account Login"
1097
+ msgstr "Aktiver pålogging for utløpt konto"
1098
+
1099
+ #: classes/class.swpm-settings.php:190
1100
+ msgid "When enabled, expired members will be able to log into the system but won't be able to view any protected content. This allows them to easily renew their account by making another payment."
1101
+ msgstr "Når dette er aktivert, kan utløpte medlemmer logge seg på systemet, men vil ikke kunne se noe beskyttet innhold. Dette lar dem enkelt fornye kontoen sin ved å foreta en ny betaling."
1102
+
1103
+ #: classes/class.swpm-settings.php:192
1104
+ msgid "Membership Renewal URL"
1105
+ msgstr "URL for medlemskap for fornyelse"
1106
+
1107
+ #: classes/class.swpm-settings.php:193
1108
+ msgid "You can create a renewal page for your site. Read <a href=\"https://simple-membership-plugin.com/creating-membership-renewal-button/\" target=\"_blank\">this documentation</a> to learn how to create a renewal page."
1109
+ msgstr "Du kan opprette en fornyelsesside for nettstedet ditt. Les <a href=\"https://simple-membership-plugin.com/creating-membership-renewal-button/\" target=\"_blank\"> denne dokumentasjonen </a> for å lære hvordan du oppretter en fornyelsesside."
1110
+
1111
+ #: classes/class.swpm-settings.php:195
1112
+ msgid "After Registration Redirect URL"
1113
+ msgstr "Etter registrering omadressering av URL"
1114
+
1115
+ #: classes/class.swpm-settings.php:196
1116
+ msgid "You can enter an URL here to redirect the members to this page after they submit the registration form. Read <a href=\"https://simple-membership-plugin.com/configure-after-registration-redirect-for-members/\" target=\"_blank\">this documentation</a> to learn how to setup after registration redirect."
1117
+ msgstr "Du kan legge inn en URL her for å omdirigere medlemmene til denne siden etter at de har sendt inn registreringsskjemaet. Les <a href=\"https://simple-membership-plugin.com/configure-after-registration-redirect-for-members/\" target=\"_blank\"> denne dokumentasjonen </a> for å lære hvordan du konfigurerer etter registrering omdirigere."
1118
+
1119
+ #: classes/class.swpm-settings.php:198
1120
+ msgid "Enable Auto Login After Registration"
1121
+ msgstr "Aktiver automatisk pålogging etter registrering"
1122
+
1123
+ #: classes/class.swpm-settings.php:199
1124
+ msgid "Use this option if you want the members to be automatically logged into your site right after they complete the registration. This option will override any after registration redirection and instead it will trigger the after login redirection. Read <a href=\"https://simple-membership-plugin.com/configure-auto-login-after-registration-members/\" target=\"_blank\">this documentation</a> to learn more."
1125
+ msgstr "Bruk dette alternativet hvis du vil at medlemmene skal logges automatisk på nettstedet ditt rett etter at de har fullført registreringen. Dette alternativet vil overstyre eventuelle etter omdirigering av registrering, og i stedet utløse omdirigeringen etter innlogging. Les <a href=\"https://simple-membership-plugin.com/configure-auto-login-after-registration-members/\" target=\"_blank\"> denne dokumentasjonen </a> for å lære mer."
1126
+
1127
+ #: classes/class.swpm-settings.php:201
1128
+ msgid "After Logout Redirect URL"
1129
+ msgstr "Etter utlogging omadressering av URL"
1130
+
1131
+ #: classes/class.swpm-settings.php:202
1132
+ msgid "You can enter an URL here to redirect the members to this page after they click the logout link to logout from your site."
1133
+ msgstr "Du kan legge inn en URL her for å omdirigere medlemmene til denne siden etter at de har klikket på utloggingskoblingen for å logge ut fra nettstedet ditt."
1134
+
1135
+ #: classes/class.swpm-settings.php:204
1136
+ msgid "Logout Member on Browser Close"
1137
+ msgstr "Avloggingsmedlem i nettleserlukk"
1138
+
1139
+ #: classes/class.swpm-settings.php:205
1140
+ msgid "Enable this option if you want the member to be logged out of the account when he closes the browser."
1141
+ msgstr "Aktiver dette alternativet hvis du vil at medlemmet skal logges ut av kontoen når han lukker nettleseren."
1142
+
1143
+ #: classes/class.swpm-settings.php:207
1144
+ msgid "Allow Account Deletion"
1145
+ msgstr "Tillat sletting av kontoen"
1146
+
1147
+ #: classes/class.swpm-settings.php:208
1148
+ msgid "Allow users to delete their accounts."
1149
+ msgstr "Tillat brukere å slette kontoene sine."
1150
+
1151
+ #: classes/class.swpm-settings.php:210
1152
+ msgid "Force Strong Password for Members"
1153
+ msgstr "Tving kraftig passord for medlemmene"
1154
+
1155
+ #: classes/class.swpm-settings.php:211
1156
+ msgid "Enable this if you want the users to be forced to use a strong password for their accounts."
1157
+ msgstr "Aktiver dette hvis du vil at brukerne skal bli tvunget til å bruke et sterkt passord for kontoene sine."
1158
+
1159
+ #: classes/class.swpm-settings.php:213
1160
+ msgid "Use WordPress Timezone"
1161
+ msgstr "Bruk WordPress Tidssone"
1162
+
1163
+ #: classes/class.swpm-settings.php:214
1164
+ msgid "Use this option if you want to use the timezone value specified in your WordPress General Settings interface."
1165
+ msgstr "Bruk dette alternativet hvis du vil bruke tidssoneverdien som er spesifisert i WordPress General Settings-grensesnittet."
1166
+
1167
+ #: classes/class.swpm-settings.php:216
1168
+ msgid "Auto Delete Pending Account"
1169
+ msgstr "Slett ventende konto automatisk"
1170
+
1171
+ #: classes/class.swpm-settings.php:219
1172
+ msgid "Select how long you want to keep \"pending\" account."
1173
+ msgstr "Velg hvor lenge du vil beholde \"ventende\" konto."
1174
+
1175
+ #: classes/class.swpm-settings.php:221
1176
+ msgid "Admin Dashboard Access Permission"
1177
+ msgstr "Admin tillatelsestilgangstillatelse"
1178
+
1179
+ #: classes/class.swpm-settings.php:224
1180
+ msgid "SWPM admin dashboard is accessible to admin users only (just like any other plugin). You can allow users with other WP user role to access the SWPM admin dashboard by selecting a value here."
1181
+ msgstr "SWPM admin-dashbord er bare tilgjengelig for administratorbrukere (akkurat som alle andre pluginprogrammer). Du kan la brukere med en annen WP-brukerrolle få tilgang til SWPM-admin dashbordet ved å velge en verdi her."
1182
 
1183
+ #: classes/class.swpm-settings.php:226
1184
+ msgid "Force WP User Synchronization"
1185
+ msgstr "Tving WP-brukersynkronisering"
1186
+
1187
+ #: classes/class.swpm-settings.php:227
1188
+ msgid "Enable this option if you want to force the member login to be synchronized with WP user account. This can be useful if you are using another plugin that uses WP user records. For example: bbPress plugin."
1189
+ msgstr "Aktiver dette alternativet hvis du vil tvinge medlemspåloggingen til å synkroniseres med WP-brukerkontoen. Dette kan være nyttig hvis du bruker en annen plugin som bruker WP-brukerposter. For eksempel: bbPress-plugin."
1190
+
1191
+ #: classes/class.swpm-settings.php:230
1192
+ msgid "Create Member Accounts for New WP Users"
1193
+ msgstr "Lag medlemskontoer for nye WP-brukere"
1194
+
1195
+ #: classes/class.swpm-settings.php:232
1196
+ msgid "Enable Auto Create Member Accounts"
1197
+ msgstr "Aktiver automatisk oppretting av medlemskontoer"
1198
+
1199
+ #: classes/class.swpm-settings.php:233
1200
+ msgid "Enable this option to automatically create member accounts for any new WP user that is created by another plugin."
1201
+ msgstr "Aktiver dette alternativet for å automatisk opprette medlemskontoer for alle nye WP-brukere som er opprettet av en annen plugin."
1202
+
1203
+ #: classes/class.swpm-settings.php:236
1204
+ msgid "Default Membership Level"
1205
+ msgstr "Standard medlemsnivå"
1206
+
1207
+ #: classes/class.swpm-settings.php:239
1208
+ msgid "When automatically creating a member account using this feature, the membership level of the user will be set to the one you specify here."
1209
+ msgstr "Når du automatisk oppretter en medlemskonto ved hjelp av denne funksjonen, blir brukernivået til brukeren satt til det du angir her."
1210
+
1211
+ #: classes/class.swpm-settings.php:245
1212
+ msgid "When automatically creating a member account using this feature, the membership account status of the user will be set to the one you specify here."
1213
+ msgstr "Når du automatisk oppretter en medlemskonto ved hjelp av denne funksjonen, blir medlemskontoens status for brukeren satt til den du angir her."
1214
+
1215
+ #: classes/class.swpm-settings.php:247
1216
+ msgid "Payment Notification Forward URL"
1217
+ msgstr "Videresend betalingsvarsel URL"
1218
+
1219
+ #: classes/class.swpm-settings.php:248
1220
+ msgid "You can enter an URL here to forward the payment notification after the membership payment has been processed by this plugin. Useful if you want to forward the payment notification to an external script for further processing."
1221
+ msgstr "Du kan legge inn en URL her for å videresende betalingsvarslingen etter at medlemsbetalingen er behandlet av denne pluginen. Nyttig hvis du vil videresende betalingsvarslingen til et eksternt skript for videre behandling."
1222
+
1223
+ #: classes/class.swpm-settings.php:251 views/add.php:65
1224
+ msgid "Terms and Conditions"
1225
+ msgstr "Vilkår og betingelser"
1226
+
1227
+ #: classes/class.swpm-settings.php:253
1228
+ msgid "Enable Terms and Conditions"
1229
+ msgstr "Aktiver vilkår og betingelser"
1230
+
1231
+ #: classes/class.swpm-settings.php:254
1232
+ msgid "Users must accept the terms before they can complete the registration."
1233
+ msgstr "Brukere må godta vilkårene før de kan fullføre registreringen."
1234
+
1235
+ #: classes/class.swpm-settings.php:255
1236
+ msgid "Terms and Conditions Page URL"
1237
+ msgstr "Vilkår og betingelser Side URL"
1238
+
1239
+ #: classes/class.swpm-settings.php:256
1240
+ msgid "Enter the URL of your terms and conditions page. You can create a WordPress page and specify your terms in there then specify the URL of that page in the above field."
1241
+ msgstr "Skriv inn nettadressen til siden med vilkår og betingelser. Du kan opprette en WordPress-side og spesifisere vilkårene dine der, og angi URL-adressen til den siden i feltet ovenfor."
1242
+
1243
+ #: classes/class.swpm-settings.php:257
1244
+ msgid "Enable Privacy Policy"
1245
+ msgstr "Aktiver personvernregler"
1246
+
1247
+ #: classes/class.swpm-settings.php:258
1248
+ msgid "Users must accept it before they can complete the registration."
1249
+ msgstr "Brukere må godta det før de kan fullføre registreringen."
1250
+
1251
+ #: classes/class.swpm-settings.php:259
1252
+ msgid "Privacy Policy Page URL"
1253
+ msgstr "Side om personvernpolicy"
1254
+
1255
+ #: classes/class.swpm-settings.php:260
1256
+ msgid "Enter the URL of your privacy policy page."
1257
+ msgstr "Skriv inn nettadressen til siden for personvernregler."
1258
+
1259
+ #: classes/class.swpm-settings.php:350 classes/class.swpm-settings.php:396
1260
+ #: classes/class.swpm-settings.php:425
1261
+ msgid "Settings updated!"
1262
+ msgstr "Innstillingene er oppdatert!"
1263
+
1264
+ #: classes/class.swpm-settings.php:355
1265
+ msgid "General Plugin Settings."
1266
+ msgstr "Generelle plugin-innstillinger."
1267
+
1268
+ #: classes/class.swpm-settings.php:359
1269
+ msgid "Page Setup and URL Related settings."
1270
+ msgstr "Sideoppsett og URL-relaterte innstillinger."
1271
+
1272
+ #: classes/class.swpm-settings.php:362
1273
+ msgid "The following pages are required for the plugin to function correctly. These pages were automatically created by the plugin at install time."
1274
+ msgstr "Følgende sider kreves for at plugin-funksjonen skal fungere korrekt. Disse sidene ble automatisk opprettet av pluginen ved installasjonstidspunktet."
1275
+
1276
+ #: classes/class.swpm-settings.php:367
1277
+ msgid "Testing and Debug Related Settings."
1278
+ msgstr "Testing og feilsøkingsrelaterte innstillinger."
1279
+
1280
+ #: classes/class.swpm-settings.php:371
1281
+ msgid "This email will be sent to your users when they complete the registration and become a member."
1282
+ msgstr "Denne e-posten vil bli sendt til brukerne dine når de fullfører registreringen og blir medlem."
1283
+
1284
+ #: classes/class.swpm-settings.php:375
1285
+ msgid "This email will be sent to your users when they use the password reset functionality."
1286
+ msgstr "Denne e-posten vil bli sendt til brukerne dine når de bruker tilbakestillingen av passord."
1287
+
1288
+ #: classes/class.swpm-settings.php:381
1289
+ msgid "This interface lets you custsomize the various emails that gets sent to your members for various actions. The default settings should be good to get your started."
1290
+ msgstr "Dette grensesnittet lar deg bruke ulike e-postmeldinger som blir sendt til medlemmene dine for forskjellige handlinger. Standardinnstillingene skal være gode for å komme i gang."
1291
+
1292
+ #: classes/class.swpm-settings.php:385 views/admin_tools_settings.php:82
1293
+ msgid "This documentation"
1294
+ msgstr "Denne dokumentasjonen"
1295
+
1296
+ #: classes/class.swpm-settings.php:386
1297
+ msgid " explains what email merge tags you can use in the email body field to customize it (if you want to)."
1298
+ msgstr " forklarer hvilke e-flettingskoder du kan bruke i e-postfeltfeltet for å tilpasse dem (hvis du vil)."
1299
+
1300
+ #: classes/class.swpm-settings.php:399
1301
+ msgid "Settings in this section apply to all emails."
1302
+ msgstr "Innstillinger i denne delen gjelder alle e-postmeldinger."
1303
+
1304
+ #: classes/class.swpm-settings.php:403
1305
+ msgid "This email will be sent to your users after account upgrade (when an existing member pays for a new membership level)."
1306
+ msgstr "Denne e-posten blir sendt til brukerne dine etter kontooppgradering (når et eksisterende medlem betaler for et nytt medlemsnivå)."
1307
+
1308
+ #: classes/class.swpm-settings.php:407
1309
+ msgid "This email will be sent to your members when you use the bulk account activate and notify action."
1310
+ msgstr "Denne e-posten vil bli sendt til medlemmene dine når du bruker bulkkontoen for å aktivere og varsle handling."
1311
+
1312
+ #: classes/class.swpm-settings.php:408
1313
+ msgid " You cannot use email merge tags in this email. You can only use generic text."
1314
+ msgstr " Du kan ikke bruke e-flettingskoder i denne e-postmeldingen. Du kan bare bruke generisk tekst."
1315
+
1316
+ #: classes/class.swpm-settings.php:413
1317
+ msgid "This email will be sent if Email Activation is enabled for a Membership Level."
1318
+ msgstr "Denne e-posten vil bli sendt hvis e-postaktivering er aktivert for et medlemsnivå."
1319
+
1320
+ #: classes/class.swpm-settings.php:417
1321
+ msgid "This email will be sent to prompt users to complete registration after the payment."
1322
+ msgstr "Denne e-posten blir sendt til brukerne om å fullføre registreringen etter betalingen."
1323
+
1324
+ #: classes/class.swpm-settings.php:428
1325
+ msgid "This page allows you to configure some advanced features of the plugin."
1326
+ msgstr "Denne siden lar deg konfigurere noen avanserte funksjoner i plugin-modulen."
1327
+
1328
+ #: classes/class.swpm-settings.php:432
1329
+ msgid "This section allows you to configure automatic creation of member accounts when new WP User records are created by another plugin. It can be useful if you are using another plugin that creates WP user records and you want them to be recognized in the membership plugin."
1330
+ msgstr "Denne delen lar deg konfigurere automatisk oppretting av medlemskontoer når nye WP-brukerposter opprettes av en annen plugin. Det kan være nyttig hvis du bruker en annen plugin som oppretter WP-brukerposter, og du vil at de skal bli gjenkjent i medlemskapsprogrammet."
1331
+
1332
+ #: classes/class.swpm-settings.php:436
1333
+ msgid "This section allows you to configure terms and conditions and privacy policy that users must accept at registration time."
1334
+ msgstr "Denne delen lar deg konfigurere vilkår og betingelser og personvernregler som brukere må godta på registreringstidspunktet."
1335
+
1336
+ #: classes/class.swpm-settings.php:565
1337
+ msgid "Simple WP Membership::Settings"
1338
+ msgstr "Enkelt WP-medlemskap :: Innstillinger"
1339
+
1340
+ #: classes/class.swpm-utils-member.php:36
1341
+ #: classes/class.swpm-utils-member.php:44
1342
+ #: classes/class.swpm-utils-member.php:52
1343
+ #: classes/class.swpm-utils-member.php:62
1344
+ msgid "User is not logged in."
1345
+ msgstr "Brukeren er ikke logget inn."
1346
+
1347
+ #: classes/class.swpm-utils-member.php:80
1348
+ msgid "No Expiry"
1349
+ msgstr "Ingen utløp"
1350
+
1351
+ #: classes/class.swpm-utils-misc.php:50
1352
+ msgid "Registration"
1353
+ msgstr "Registrering"
1354
+
1355
+ #: classes/class.swpm-utils-misc.php:73
1356
+ msgid "Member Login"
1357
+ msgstr "Medlems innlogging"
1358
+
1359
+ #: classes/class.swpm-utils-misc.php:96
1360
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:117
1361
+ msgid "Profile"
1362
+ msgstr "Profil"
1363
+
1364
+ #: classes/class.swpm-utils-misc.php:119
1365
+ msgid "Password Reset"
1366
+ msgstr "Reset passord"
1367
+
1368
+ #: classes/class.swpm-utils-misc.php:168
1369
+ msgid "You will be automatically redirected in a few seconds. If not, please %s."
1370
+ msgstr "Du blir automatisk omdirigert om noen få sekunder. Hvis ikke, vennligst% s."
1371
+
1372
+ #: classes/class.swpm-utils-misc.php:172
1373
+ msgid "Action Status"
1374
+ msgstr "Handlingsstatus"
1375
+
1376
+ #: classes/class.swpm-utils-misc.php:274
1377
  msgid "Not a Member?"
1378
+ msgstr "Ikke et medlem?"
1379
 
1380
+ #: classes/class.swpm-utils-misc.php:285
1381
+ msgid "renew"
1382
+ msgstr "fornye"
1383
+
1384
+ #: classes/class.swpm-utils-misc.php:285
1385
+ msgid " your account to gain access to this content."
1386
+ msgstr " kontoen din for å få tilgang til dette innholdet."
1387
+
1388
+ #: classes/class.swpm-utils-misc.php:343 classes/class.swpm-utils-misc.php:349
1389
+ msgid "Error! This action ("
1390
+ msgstr "Feil! Denne handlingen ("
1391
 
1392
+ #: classes/class.swpm-utils-misc.php:421
1393
+ msgid "(Please Select)"
1394
+ msgstr "(Vennligst velg)"
1395
+
1396
+ #: classes/class.swpm-utils-template.php:38
1397
+ msgid "Error! Failed to find a template path for the specified template: "
1398
+ msgstr "Feil! Kunne ikke finne en malbane for den spesifiserte malen: "
1399
+
1400
+ #: classes/class.swpm-utils.php:101
1401
+ msgid "Never"
1402
+ msgstr "Aldri"
1403
+
1404
+ #: classes/class.swpm-utils.php:116 views/admin_members_list.php:19
1405
  msgid "Active"
1406
  msgstr "Aktiv"
1407
 
1408
+ #: classes/class.swpm-utils.php:117 views/admin_members_list.php:20
1409
  msgid "Inactive"
1410
+ msgstr "Uvirksom"
1411
 
1412
+ #: classes/class.swpm-utils.php:118 views/admin_members_list.php:21
1413
+ msgid "Activation Required"
1414
+ msgstr "Aktivering kreves"
1415
+
1416
+ #: classes/class.swpm-utils.php:119 views/admin_members_list.php:22
1417
  msgid "Pending"
1418
  msgstr "Avventer"
1419
 
1420
+ #: classes/class.swpm-utils.php:120 views/admin_members_list.php:24
1421
  msgid "Expired"
1422
  msgstr "Utløpt"
1423
 
1424
+ #: classes/class.swpm-utils.php:414 views/account_delete_warning.php:3
1425
+ msgid "Delete Account"
1426
+ msgstr "Slett konto"
1427
 
1428
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:75
1429
+ msgid "Payment Button ID"
1430
+ msgstr "Betalingsknapp-ID"
1431
 
1432
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:76
1433
+ msgid "Payment Button Title"
1434
+ msgstr "Betalingsknapptittel"
1435
 
1436
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:77
1437
+ msgid "Membership Level ID"
1438
+ msgstr "Medlemskaps-ID"
1439
 
1440
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:78
1441
+ msgid "Button Type"
1442
+ msgstr "Knappetype"
1443
 
1444
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:79
1445
+ msgid "Button Shortcode"
1446
+ msgstr "Knappekode"
1447
 
1448
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:127
1449
+ #: views/admin_members_list.php:9
1450
+ #: views/payments/admin_all_payment_transactions.php:32
1451
+ msgid "The selected entry was deleted!"
1452
+ msgstr "Den valgte oppføringen ble slettet!"
1453
 
1454
+ #: classes/admin-includes/class.swpm-payments-admin-menu.php:21
1455
+ msgid "Simple Membership::Payments"
1456
+ msgstr "Enkelt medlemskap :: Betalinger"
1457
 
1458
+ #: classes/admin-includes/class.swpm-payments-admin-menu.php:25
1459
+ msgid "Transactions"
1460
+ msgstr "Transaksjoner"
1461
 
1462
+ #: classes/admin-includes/class.swpm-payments-admin-menu.php:26
1463
+ msgid "Manage Payment Buttons"
1464
+ msgstr "Administrer betalingsknapper"
1465
 
1466
+ #: classes/admin-includes/class.swpm-payments-admin-menu.php:27
1467
+ #: views/payments/admin_payment_buttons.php:27
1468
+ msgid "Create New Button"
1469
+ msgstr "Lag ny knapp"
1470
 
1471
+ #: classes/admin-includes/class.swpm-payments-list-table.php:57
1472
+ #: views/template-1.php:95 views/template-2.php:97
1473
+ msgid "View Profile"
1474
+ msgstr "Vis profil"
1475
 
1476
+ #: classes/admin-includes/class.swpm-payments-list-table.php:76
1477
+ msgid "Row ID"
1478
+ msgstr "Rad-ID"
1479
+
1480
+ #: classes/admin-includes/class.swpm-payments-list-table.php:77
1481
+ #: views/forgot_password.php:5
1482
+ msgid "Email Address"
1483
+ msgstr "Epostadresse"
1484
+
1485
+ #: classes/admin-includes/class.swpm-payments-list-table.php:80
1486
+ msgid "Member Profile"
1487
+ msgstr "Medlemsprofil"
1488
+
1489
+ #: classes/admin-includes/class.swpm-payments-list-table.php:82
1490
+ msgid "Transaction ID"
1491
+ msgstr "Transaksjons-ID"
1492
+
1493
+ #: classes/admin-includes/class.swpm-payments-list-table.php:83
1494
+ msgid "Subscriber ID"
1495
+ msgstr "Abonnent-ID"
1496
+
1497
+ #: classes/admin-includes/class.swpm-payments-list-table.php:84
1498
+ msgid "Amount"
1499
+ msgstr "Beløp"
1500
+
1501
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:60
1502
+ msgid "Your membership profile will be updated to reflect the payment."
1503
+ msgstr "Medlemsprofilen din vil bli oppdatert for å gjenspeile betalingen."
1504
+
1505
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:61
1506
+ msgid "Your profile username: "
1507
+ msgstr "Brukernavnet til profilen din: "
1508
 
1509
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:73
1510
+ msgid "Click on the following link to complete the registration."
1511
+ msgstr "Klikk på følgende lenke for å fullføre registreringen."
1512
+
1513
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:74
1514
+ msgid "Click here to complete your paid registration"
1515
+ msgstr "Klikk her for å fullføre den betalte registreringen"
1516
+
1517
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:79
1518
+ msgid "If you have just made a membership payment then your payment is yet to be processed. Please check back in a few minutes. An email will be sent to you with the details shortly."
1519
+ msgstr "Hvis du nettopp har utført et medlemsbetaling, er betalingen ennå ikke behandlet. Kom tilbake om noen minutter. En e-post vil bli sendt til deg med detaljer innen kort tid."
1520
+
1521
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:93
1522
+ msgid "Expiry: "
1523
+ msgstr "Utløps: "
1524
+
1525
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:95
1526
+ msgid "You are not logged-in as a member"
1527
+ msgstr "Du er ikke logget inn som medlem"
1528
+
1529
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:115
1530
+ msgid "Logged in as: "
1531
+ msgstr "Logget inn som: "
1532
+
1533
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:118
1534
+ #: views/loggedin.php:31
1535
+ msgid "Logout"
1536
+ msgstr "Logg ut"
1537
+
1538
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:121
1539
+ msgid "Login Here"
1540
+ msgstr "Logg inn her"
1541
+
1542
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:122
1543
+ msgid "Not a member? "
1544
+ msgstr "Ikke et medlem? "
1545
+
1546
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:123
1547
+ msgid "Join Now"
1548
+ msgstr "Bli med nå"
1549
+
1550
+ #: ipn/swpm-smart-checkout-ipn.php:260 ipn/swpm-smart-checkout-ipn.php:285
1551
+ msgid "Error occured during payment verification. Error code: %d. Message: %s"
1552
+ msgstr "Det oppsto en feil under betalingsverifiseringen. Feilkode:% d. Melding:% s"
1553
+
1554
+ #: ipn/swpm-smart-checkout-ipn.php:298
1555
+ msgid "Payment check failed: invalid amount received. Expected %s %s, got %s %s."
1556
+ msgstr "Betalingskontroll mislyktes: ugyldig beløp mottatt. Forventet% s% s, fikk% s% s."
1557
+
1558
+ #: ipn/swpm-smart-checkout-ipn.php:315
1559
+ msgid "Empty payment data received."
1560
+ msgstr "Tom betalingsdata mottatt."
1561
+
1562
+ #: ipn/swpm-smart-checkout-ipn.php:355
1563
+ msgid "IPN product validation failed. Check debug log for more details."
1564
+ msgstr "Validering av IPN-produkt mislyktes. Sjekk avlusingsloggen for mer informasjon."
1565
+
1566
+ #: views/account_delete_warning.php:7
1567
+ msgid "You are about to delete an account. This will delete user data associated with this account. "
1568
+ msgstr "Du er i ferd med å slette en konto. Dette vil slette brukerdata tilknyttet denne kontoen. "
1569
+
1570
+ #: views/account_delete_warning.php:8
1571
+ msgid "It will also delete associated WordPress user account."
1572
+ msgstr "Den vil også slette tilknyttet WordPress-brukerkonto."
1573
+
1574
+ #: views/account_delete_warning.php:9
1575
+ msgid "(NOTE: for safety, we do not allow deletion of any associated WordPress account with administrator role)."
1576
+ msgstr "(MERKNAD: for sikkerhets skyld tillater vi ikke sletting av tilknyttet WordPress-konto med administratorrolle)."
1577
+
1578
+ #: views/account_delete_warning.php:10
1579
+ msgid "Continue?"
1580
+ msgstr "Fortsette?"
1581
+
1582
+ #: views/account_delete_warning.php:13
1583
+ msgid "Password: "
1584
+ msgstr "Passord: "
1585
+
1586
+ #: views/account_delete_warning.php:14
1587
+ msgid "Confirm Account Deletion"
1588
+ msgstr "Bekreft sletting av kontoen"
1589
+
1590
+ #: views/add.php:24 views/admin_add.php:19 views/admin_edit.php:44
1591
+ #: views/edit.php:31 views/login.php:17
1592
  msgid "Password"
1593
  msgstr "Passord"
1594
 
1595
+ #: views/add.php:28 views/edit.php:35
1596
  msgid "Repeat Password"
1597
  msgstr "Gjenta passord"
1598
 
1599
+ #: views/add.php:65
1600
+ msgid "I accept the "
1601
+ msgstr "Jeg godtar "
1602
 
1603
+ #: views/add.php:77
1604
+ msgid "I agree to the "
1605
+ msgstr "Jeg er enig i "
1606
 
1607
+ #: views/add.php:77
1608
+ msgid "Privacy Policy"
1609
+ msgstr "Personvern"
1610
 
1611
+ #: views/add.php:88
1612
+ msgid "Register"
1613
+ msgstr "Registrere"
1614
 
1615
+ #: views/admin_add.php:7
1616
+ msgid "Create a brand new user and add it to this site."
1617
+ msgstr "Opprett en helt ny bruker og legg den til på dette nettstedet."
1618
+
1619
+ #: views/admin_add.php:11 views/admin_add.php:15 views/admin_add_level.php:12
1620
+ #: views/admin_add_level.php:16 views/admin_add_level.php:20
1621
+ #: views/admin_edit.php:19 views/admin_edit.php:40
1622
+ #: views/admin_edit_level.php:16 views/admin_edit_level.php:20
1623
+ #: views/admin_edit_level.php:24
 
1624
  msgid "(required)"
1625
+ msgstr "(Obligatorisk)"
1626
 
1627
+ #: views/admin_add.php:15 views/admin_edit.php:40
 
1628
  msgid "E-mail"
1629
+ msgstr "E-post"
1630
 
1631
+ #: views/admin_add.php:19
1632
  msgid "(twice, required)"
1633
+ msgstr "(to ganger, påkrevd)"
1634
 
1635
+ #: views/admin_add.php:24 views/admin_edit.php:48
 
1636
  msgid "Strength indicator"
1637
  msgstr "Styrkeindikator"
1638
 
1639
+ #: views/admin_add.php:25 views/admin_edit.php:49
1640
+ msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ &amp; )."
1641
+ msgstr "Tips: Passordet skal være minst syv tegn langt. For å gjøre det sterkere, bruk store og små bokstaver, tall og symboler som! \"? $% ^ & amp;)."
 
 
 
 
 
 
1642
 
1643
+ #: views/admin_add.php:29 views/admin_edit.php:53 views/loggedin.php:10
 
 
1644
  msgid "Account Status"
1645
+ msgstr "Konto status"
1646
 
1647
+ #: views/admin_add.php:39
1648
  msgid "Add New Member "
1649
  msgstr "Legg til nytt medlem "
1650
 
1651
+ #: views/admin_addon_settings.php:3
1652
+ msgid "Some of the simple membership plugin's addon settings and options will be displayed here (if you have them)"
1653
+ msgstr "Noen av de enkle innstillinger og alternativer for tilleggsprogrammet for plugin-medlemskap vises her (hvis du har dem)"
 
 
 
1654
 
1655
+ #: views/admin_addon_settings.php:8
1656
+ msgid "Save Changes"
1657
+ msgstr "Lagre endringer"
 
 
 
 
1658
 
1659
+ #: views/admin_add_level.php:6
1660
+ msgid "Add Membership Level"
1661
+ msgstr "Legg til medlemsnivå"
1662
+
1663
+ #: views/admin_add_level.php:7
1664
  msgid "Create new membership level."
1665
  msgstr "Opprett nytt medlemsnivå."
1666
 
1667
+ #: views/admin_add_level.php:12 views/admin_edit_level.php:16
 
1668
  msgid "Membership Level Name"
1669
+ msgstr "Navn på medlemskapsnivå"
1670
 
1671
+ #: views/admin_add_level.php:16 views/admin_edit_level.php:20
 
1672
  msgid "Default WordPress Role"
1673
+ msgstr "Standard WordPress-rolle"
1674
 
1675
+ #: views/admin_add_level.php:20 views/admin_edit_level.php:24
 
1676
  msgid "Access Duration"
1677
+ msgstr "Tilgangs varighet"
1678
 
1679
+ #: views/admin_add_level.php:23
1680
  msgid "No Expiry (Access for this level will not expire until cancelled"
1681
+ msgstr "Ingen utløp (Tilgang for dette nivået utløper ikke før du avbryter"
1682
+
1683
+ #: views/admin_add_level.php:24 views/admin_add_level.php:26
1684
+ #: views/admin_add_level.php:28 views/admin_add_level.php:30
1685
+ #: views/admin_edit_level.php:28 views/admin_edit_level.php:31
1686
+ #: views/admin_edit_level.php:34 views/admin_edit_level.php:37
 
 
 
 
 
 
1687
  msgid "Expire After"
1688
  msgstr "Utløper etter"
1689
 
1690
+ #: views/admin_add_level.php:25 views/admin_edit_level.php:29
 
1691
  msgid "Days (Access expires after given number of days)"
1692
+ msgstr "Dager (tilgang utløper etter gitt antall dager)"
1693
 
1694
+ #: views/admin_add_level.php:27
1695
  msgid "Weeks (Access expires after given number of weeks"
1696
+ msgstr "Uker (Tilgang utløper etter gitt antall uker"
1697
 
1698
+ #: views/admin_add_level.php:29 views/admin_edit_level.php:35
 
1699
  msgid "Months (Access expires after given number of months)"
1700
+ msgstr "Måneder (Tilgang utløper etter gitt antall måneder)"
1701
 
1702
+ #: views/admin_add_level.php:31 views/admin_edit_level.php:38
 
1703
  msgid "Years (Access expires after given number of years)"
1704
+ msgstr "År (tilgang utløper etter gitt antall år)"
1705
 
1706
+ #: views/admin_add_level.php:32 views/admin_edit_level.php:40
 
1707
  msgid "Fixed Date Expiry"
1708
+ msgstr "Utløpet av fast dato"
1709
 
1710
+ #: views/admin_add_level.php:33 views/admin_edit_level.php:41
 
1711
  msgid "(Access expires on a fixed date)"
1712
+ msgstr "(Tilgang utløper på en fast dato)"
1713
+
1714
+ #: views/admin_add_level.php:38 views/admin_edit_level.php:46
1715
+ msgid "Email Activation"
1716
+ msgstr "E-postaktivering"
1717
 
1718
+ #: views/admin_add_level.php:43
1719
+ msgid "Enable new user activation via email. When enabled, members will need to click on an activation link that is sent to their email address to activate the account. Useful for free membership. "
1720
+ msgstr "Aktiver ny brukeraktivering via e-post. Når det er aktivert, må medlemmene klikke på en aktiveringslenke som sendes til e-postadressen deres for å aktivere kontoen. Nyttig for gratis medlemskap. "
1721
 
1722
+ #: views/admin_add_level.php:44 views/admin_edit_level.php:52
1723
+ msgid "View Documentation"
1724
+ msgstr "Vis dokumentasjon"
1725
 
1726
+ #: views/admin_add_level.php:45 views/admin_edit_level.php:53
1727
+ msgid "Note:"
1728
+ msgstr "Merk:"
1729
+
1730
+ #: views/admin_add_level.php:45 views/admin_edit_level.php:53
1731
+ msgid "If enabled, decryptable member password is temporarily stored in the database until the account is activated."
1732
+ msgstr "Hvis det er aktivert, blir dekrypterbart medlemspassord midlertidig lagret i databasen til kontoen er aktivert."
1733
+
1734
+ #: views/admin_add_level.php:52
1735
  msgid "Add New Membership Level "
1736
+ msgstr "Legg til nytt medlemsnivå "
1737
 
1738
+ #: views/admin_add_ons_page.php:7
1739
  msgid "Simple WP Membership::Add-ons"
1740
+ msgstr "Enkelt WP-medlemskap :: Tillegg"
1741
 
1742
+ #: views/admin_category_list.php:5
1743
+ msgid "First of all, globally protect the category on your site by selecting \"General Protection\" from the drop-down box below and then select the categories that should be protected from non-logged in users."
1744
+ msgstr "Først av alt, beskytte kategorien på nettstedet ditt globalt ved å velge \"Generell beskyttelse\" fra rullegardinboksen nedenfor og deretter velge kategoriene som skal beskyttes mot ikke-innloggede brukere."
1745
 
1746
+ #: views/admin_category_list.php:8
1747
+ msgid "Next, select an existing membership level from the drop-down box below and then select the categories you want to grant access to (for that particular membership level)."
1748
+ msgstr "Velg deretter et eksisterende medlemsnivå fra rullegardinboksen nedenfor, og velg deretter kategoriene du vil gi tilgang til (for det aktuelle medlemsnivået)."
 
 
 
 
 
 
1749
 
1750
+ #: views/admin_category_list.php:11 views/admin_post_list.php:11
1751
+ msgid "Read the "
1752
+ msgstr "Les "
1753
+
1754
+ #: views/admin_category_list.php:11
1755
+ msgid "category protection documentation"
1756
+ msgstr "dokumentasjon for kategoribeskyttelse"
 
 
1757
 
1758
+ #: views/admin_category_list.php:17 views/admin_post_list.php:27
1759
+ msgid "Membership Level:"
1760
+ msgstr "Medlemskapsnivå:"
1761
+
1762
+ #: views/admin_category_list.php:19 views/admin_post_list.php:29
1763
+ msgid "General Protection"
1764
+ msgstr "Generell beskyttelse"
1765
+
1766
+ #: views/admin_category_list.php:23 views/admin_post_list.php:33
1767
+ #: views/edit.php:83
1768
+ msgid "Update"
1769
+ msgstr "Oppdater"
1770
+
1771
+ #: views/admin_edit.php:11
1772
  msgid "Edit Member"
1773
+ msgstr "Rediger medlem"
1774
 
1775
+ #: views/admin_edit.php:13
1776
  msgid "Edit existing member details."
1777
+ msgstr "Rediger eksisterende medlemsdetaljer."
1778
 
1779
+ #: views/admin_edit.php:14
1780
+ msgid " You are currenty editing member with member ID: "
1781
+ msgstr " Du redigerer medlem med medlems-ID: "
1782
 
1783
+ #: views/admin_edit.php:44
1784
  msgid "(twice, leave empty to retain old password)"
1785
+ msgstr "(to ganger, la stå tomt for å beholde gammelt passord)"
1786
 
1787
+ #: views/admin_edit.php:59
1788
+ msgid "This is the member's account status. If you want to manually activate an expired member's account then read"
1789
+ msgstr "Dette er medlemets kontostatus. Hvis du vil aktivere et utløpt medlemskonto manuelt, må du lese"
1790
 
1791
+ #: views/admin_edit.php:60
1792
+ msgid "this documentation"
1793
+ msgstr "denne dokumentasjonen"
1794
 
1795
+ #: views/admin_edit.php:61
1796
+ msgid " to learn how to do it."
1797
+ msgstr " å lære å gjøre det."
1798
 
1799
+ #: views/admin_edit.php:66
1800
+ msgid "Notify User"
1801
+ msgstr "Varsle bruker"
1802
 
1803
+ #: views/admin_edit.php:69
1804
+ msgid "You can use this option to send a quick notification email to this member (the email will be sent when you hit the save button below)."
1805
+ msgstr "Du kan bruke dette alternativet til å sende en rask varslings-e-post til dette medlemmet (e-posten blir sendt når du trykker på lagre-knappen nedenfor)."
 
1806
 
1807
+ #: views/admin_edit.php:75
1808
+ msgid "Subscriber ID/Reference"
1809
+ msgstr "Abonnent-ID / referanse"
1810
 
1811
+ #: views/admin_edit.php:79
1812
+ msgid "Last Accessed Date"
1813
+ msgstr "Sist åpnet dato"
1814
 
1815
+ #: views/admin_edit.php:82 views/admin_edit.php:89
1816
+ msgid "This value gets updated when this member logs into your site."
1817
+ msgstr "Denne verdien blir oppdatert når dette medlemmet logger nettstedet ditt."
 
 
 
1818
 
1819
+ #: views/admin_edit.php:86
1820
+ msgid "Last Accessed From IP"
1821
+ msgstr "Sist tilgang fra IP"
1822
 
1823
+ #: views/admin_edit.php:97
1824
+ msgid "Save Data"
1825
+ msgstr "Lagre data"
1826
 
1827
+ #: views/admin_edit.php:102
1828
+ msgid "Delete User Profile"
1829
+ msgstr "Slett brukerprofil"
 
 
1830
 
1831
+ #: views/admin_edit_level.php:6
1832
+ msgid "Edit membership level"
1833
+ msgstr "Rediger medlemsnivå"
 
1834
 
1835
+ #: views/admin_edit_level.php:9
1836
+ msgid "You can edit details of a selected membership level from this interface. "
1837
+ msgstr "Du kan redigere detaljer om et valgt medlemsnivå fra dette grensesnittet. "
1838
 
1839
+ #: views/admin_edit_level.php:10
1840
+ msgid "You are currently editing: "
1841
+ msgstr "Du redigerer for øyeblikket: "
1842
 
1843
+ #: views/admin_edit_level.php:27
1844
+ msgid "No Expiry (Access for this level will not expire until cancelled)"
1845
+ msgstr "Ingen utløp (tilgang for dette nivået utløper ikke før du avbryter)"
1846
 
1847
+ #: views/admin_edit_level.php:32
1848
+ msgid "Weeks (Access expires after given number of weeks)"
1849
+ msgstr "Uker (tilgang utløper etter gitt antall uker)"
1850
 
1851
+ #: views/admin_edit_level.php:51
1852
+ msgid "Enable new user activation via email. When enabled, members will need to click on an activation link that is sent to their email address to activate the account. Useful for free membership."
1853
+ msgstr "Aktiver ny brukeraktivering via e-post. Når det er aktivert, må medlemmene klikke på en aktiveringslenke som sendes til e-postadressen deres for å aktivere kontoen. Nyttig for gratis medlemskap."
1854
+
1855
+ #: views/admin_edit_level.php:60
1856
+ msgid "Save Membership Level "
1857
+ msgstr "Lagre medlemsnivå "
1858
+
1859
+ #: views/admin_membership_manage.php:18
1860
  msgid "Example Content Protection Settings"
1861
+ msgstr "Eksempel Innstillinger for innholdsbeskyttelse"
1862
+
1863
+ #: views/admin_members_list.php:18
1864
+ msgid "All"
1865
+ msgstr "Alle"
1866
 
1867
+ #: views/admin_members_list.php:23
1868
+ msgid "Incomplete"
1869
+ msgstr "Ufullstendig"
1870
+
1871
+ #: views/admin_member_form_common_part.php:23
1872
+ #: includes/swpm_mda_show_profile.php:37
1873
  msgid "Gender"
1874
  msgstr "Kjønn"
1875
 
1876
+ #: views/admin_member_form_common_part.php:30 views/edit.php:47
1877
+ #: includes/swpm_mda_show_profile.php:34
1878
  msgid "Phone"
1879
  msgstr "Telefon"
1880
 
1881
+ #: views/admin_member_form_common_part.php:34 views/edit.php:51
 
1882
  msgid "Street"
1883
+ msgstr "Gate"
1884
 
1885
+ #: views/admin_member_form_common_part.php:38 views/edit.php:55
 
1886
  msgid "City"
1887
+ msgstr "By"
1888
 
1889
+ #: views/admin_member_form_common_part.php:42 views/edit.php:59
 
1890
  msgid "State"
1891
+ msgstr "Stat"
1892
 
1893
+ #: views/admin_member_form_common_part.php:46 views/edit.php:63
 
1894
  msgid "Zipcode"
1895
+ msgstr "Post kode"
1896
 
1897
+ #: views/admin_member_form_common_part.php:50 views/edit.php:67
1898
+ #: includes/swpm_mda_show_profile.php:33
1899
  msgid "Country"
1900
  msgstr "Land"
1901
 
1902
+ #: views/admin_member_form_common_part.php:54
1903
+ #: includes/swpm_mda_show_profile.php:38
1904
  msgid "Company"
1905
+ msgstr "Selskap"
1906
 
1907
+ #: views/admin_member_form_common_part.php:58
1908
+ #: includes/swpm_mda_show_profile.php:36
1909
  msgid "Member Since"
1910
  msgstr "Medlem siden"
1911
 
1912
+ #: views/admin_post_list.php:5
1913
+ msgid "First of all, globally protect posts and pages on your site by selecting \"General Protection\" from the drop-down box below and then select posts and pages that should be protected from non-logged in users."
1914
+ msgstr "Først av alt, beskytte innlegg og sider på nettstedet ditt globalt ved å velge \"Generell beskyttelse\" fra rullegardinboksen nedenfor og deretter velge innlegg og sider som skal beskyttes mot ikke-innloggede brukere."
1915
 
1916
+ #: views/admin_post_list.php:8
1917
+ msgid "Next, select an existing membership level from the drop-down box below and then select posts and pages you want to grant access to (for that particular membership level)."
1918
+ msgstr "Velg deretter et eksisterende medlemsnivå fra rullegardinboksen nedenfor, og velg deretter innlegg og sider du vil gi tilgang til (for det aktuelle medlemsnivået)."
1919
 
1920
+ #: views/admin_post_list.php:11
1921
+ msgid "bulk protect posts and pages documentation"
1922
+ msgstr "bulk-beskyttelse av innlegg og sider dokumentasjon"
1923
 
1924
+ #: views/admin_post_list.php:11
1925
+ msgid " to learn how to use it."
1926
+ msgstr " å lære å bruke det."
1927
 
1928
+ #: views/admin_post_list.php:21
1929
+ msgid "Posts"
1930
+ msgstr "Innlegg"
1931
+
1932
+ #: views/admin_post_list.php:22
1933
+ msgid "Pages"
1934
+ msgstr "Sider"
1935
+
1936
+ #: views/admin_post_list.php:23
1937
+ msgid "Custom Posts"
1938
+ msgstr "Tilpassede innlegg"
1939
+
1940
+ #: views/admin_tools_settings.php:14
1941
+ msgid "The required pages have been re-created."
1942
+ msgstr "De nødvendige sidene er blitt opprettet på nytt."
1943
+
1944
+ #: views/admin_tools_settings.php:21
1945
  msgid "Generate a Registration Completion link"
1946
  msgstr "Generer en link for fullføring av registrering"
1947
 
1948
+ #: views/admin_tools_settings.php:24
1949
+ msgid "You can manually generate a registration completion link here and give it to your customer if they have missed the email that was automatically sent out to them after the payment."
1950
+ msgstr "Du kan generere en link for fullføring av registrering manuelt her og gi den til kunden din hvis de har gått glipp av e-postmeldingen som automatisk ble sendt ut til dem etter betalingen."
 
 
 
 
 
 
1951
 
1952
+ #: views/admin_tools_settings.php:29
1953
  msgid "Generate Registration Completion Link"
1954
+ msgstr "Generer link for fullføring av registrering"
1955
+
1956
+ #: views/admin_tools_settings.php:30
1957
+ msgid "For a Particular Member ID"
1958
+ msgstr "For en spesiell medlems-ID"
1959
 
1960
+ #: views/admin_tools_settings.php:32
1961
  msgid "OR"
1962
  msgstr "ELLER"
1963
 
1964
+ #: views/admin_tools_settings.php:33
1965
+ msgid "For All Incomplete Registrations"
1966
+ msgstr "For alle ufullstendige registreringer"
1967
 
1968
+ #: views/admin_tools_settings.php:38
1969
+ msgid "Send Registration Reminder Email Too"
1970
+ msgstr "Send påminnelse om påmelding også"
1971
 
1972
+ #: views/admin_tools_settings.php:44
 
 
 
 
1973
  msgid "Submit"
1974
+ msgstr "Sende inn"
1975
 
1976
+ #: views/admin_tools_settings.php:53
1977
+ msgid "Link(s) generated successfully. The following link(s) can be used to complete the registration."
1978
+ msgstr "Kobling (er) generert vellykket. Følgende lenke (r) kan brukes til å fullføre registreringen."
1979
 
1980
+ #: views/admin_tools_settings.php:55
1981
+ msgid "Registration completion links will appear below"
1982
+ msgstr "Linker for fullføring av registrering vises nedenfor"
1983
+
1984
+ #: views/admin_tools_settings.php:65
1985
+ msgid "A prompt to complete registration email was also sent."
1986
+ msgstr "En melding om å fullføre registrerings-e-posten ble også sendt."
1987
+
1988
+ #: views/admin_tools_settings.php:78 views/admin_tools_settings.php:88
1989
+ msgid "Re-create the Required Pages"
1990
+ msgstr "Lag de påkrevde sidene på nytt"
1991
+
1992
+ #: views/admin_tools_settings.php:81
1993
+ msgid "If you have accidentally deleted the required pages that this plugin creates at install time, you can use this option to re-create them."
1994
+ msgstr "Hvis du ved et uhell har slettet de nødvendige sidene som denne pluginen oppretter på installasjonstidspunktet, kan du bruke dette alternativet til å opprette dem på nytt."
1995
+
1996
+ #: views/admin_tools_settings.php:82
1997
+ msgid " has full explanation."
1998
+ msgstr " har full forklaring."
1999
 
2000
+ #: views/edit.php:32 views/edit.php:36
2001
+ msgid "Leave empty to keep the current password"
2002
+ msgstr "La være tomt for å beholde det gjeldende passordet"
2003
+
2004
+ #: views/edit.php:71
2005
+ msgid "Company Name"
2006
+ msgstr "Selskapsnavn"
2007
+
2008
+ #: views/forgot_password.php:12
2009
  msgid "Reset Password"
2010
+ msgstr "Tilbakestille passord"
2011
 
2012
+ #: views/loggedin.php:6
2013
  msgid "Logged in as"
2014
+ msgstr "Logget inn som"
2015
 
2016
+ #: views/loggedin.php:14
2017
  msgid "Membership"
2018
  msgstr "Medlemskap"
2019
 
2020
+ #: views/loggedin.php:18
2021
  msgid "Account Expiry"
2022
+ msgstr "Konto utløp"
2023
 
2024
+ #: views/loggedin.php:26
2025
+ msgid "Edit Profile"
2026
+ msgstr "Rediger profil"
2027
 
2028
+ #: views/login.php:11
2029
+ msgid "Username or Email"
2030
+ msgstr "Brukernavn eller e-post"
2031
+
2032
+ #: views/login.php:24
2033
  msgid "Remember Me"
2034
  msgstr "Husk meg"
2035
 
2036
+ #: views/login.php:33
2037
+ msgid "Forgot Password?"
2038
+ msgstr "Glemt passord?"
2039
+
2040
+ #: views/payments/admin_all_payment_transactions.php:6
2041
+ msgid "All the payments/transactions of your members are recorded here."
2042
+ msgstr "Alle betalingene / transaksjonene til medlemmene dine blir registrert her."
2043
+
2044
+ #: views/payments/admin_all_payment_transactions.php:12
2045
+ msgid "Search for a transaction by using email or name"
2046
+ msgstr "Søk etter en transaksjon ved å bruke e-post eller navn"
2047
+
2048
+ #: views/payments/admin_create_payment_buttons.php:15
2049
+ msgid "You can create new payment button for your memberships using this interface."
2050
+ msgstr "Du kan opprette en ny betalingsknapp for medlemskapene dine ved hjelp av dette grensesnittet."
2051
+
2052
+ #: views/payments/admin_create_payment_buttons.php:23
2053
+ msgid "Select Payment Button Type"
2054
+ msgstr "Velg betalingsknapptype"
2055
+
2056
+ #: views/payments/admin_create_payment_buttons.php:26
2057
+ msgid "PayPal Buy Now"
2058
+ msgstr "PayPal kjøp nå"
2059
+
2060
+ #: views/payments/admin_create_payment_buttons.php:28
2061
+ msgid "PayPal Subscription"
2062
+ msgstr "PayPal-abonnement"
2063
+
2064
+ #: views/payments/admin_create_payment_buttons.php:30
2065
+ msgid "PayPal Smart Checkout"
2066
+ msgstr "PayPal Smart Checkout"
2067
+
2068
+ #: views/payments/admin_create_payment_buttons.php:32
2069
+ msgid "Stripe Buy Now"
2070
+ msgstr "Stripe Kjøp nå"
2071
+
2072
+ #: views/payments/admin_create_payment_buttons.php:34
2073
+ msgid "Stripe Subscription"
2074
+ msgstr "Stripe-abonnement"
2075
+
2076
+ #: views/payments/admin_create_payment_buttons.php:36
2077
+ msgid "Braintree Buy Now"
2078
+ msgstr "Braintree Kjøp nå"
2079
+
2080
+ #: views/payments/admin_create_payment_buttons.php:43
2081
+ msgid "Next"
2082
+ msgstr "Neste"
2083
+
2084
+ #: views/payments/admin_edit_payment_buttons.php:15
2085
+ msgid "You can edit a payment button using this interface."
2086
+ msgstr "Du kan redigere en betalingsknapp ved hjelp av dette grensesnittet."
2087
+
2088
+ #: views/payments/admin_payment_buttons.php:6
2089
+ msgid "All the membership buttons that you created in the plugin are displayed here."
2090
+ msgstr "Her vises alle medlemsknappene du opprettet i pluginen."
2091
+
2092
+ #: views/payments/admin_payment_settings.php:21
2093
+ msgid "Error! The membership level ID ("
2094
+ msgstr "Feil! ID-medlemskap på nivå ("
2095
+
2096
+ #: views/payments/admin_payment_settings.php:28
2097
+ msgid "You can create membership payment buttons from the payments menu of this plugin (useful if you want to offer paid membership on the site)."
2098
+ msgstr "Du kan opprette betalingsknapper for medlemskap fra betalingsmenyen til denne pluginen (nyttig hvis du vil tilby betalt medlemskap på nettstedet)."
2099
+
2100
+ #: views/payments/admin_payment_settings.php:33
2101
+ msgid "PayPal Integration Settings"
2102
+ msgstr "PayPal-integrasjonsinnstillinger"
2103
+
2104
+ #: views/payments/admin_payment_settings.php:36
2105
+ msgid "Generate the \"Advanced Variables\" Code for your PayPal button"
2106
+ msgstr "Generer koden \"Avanserte variabler\" for PayPal-knappen"
2107
+
2108
+ #: views/payments/admin_payment_settings.php:39
2109
+ msgid "Enter the Membership Level ID"
2110
+ msgstr "Angi ID-medlemskap"
2111
+
2112
+ #: views/payments/admin_payment_settings.php:41
2113
+ msgid "Generate Code"
2114
+ msgstr "Generer kode"
2115
+
2116
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:22
2117
+ msgid "Braintree Buy Now Button Configuration"
2118
+ msgstr "Braintree Kjøp nå-knappkonfigurasjon"
2119
+
2120
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:34
2121
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:213
2122
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:33
2123
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:301
2124
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:259
2125
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:83
2126
+ msgid "Button ID"
2127
+ msgstr "Knapp-ID"
2128
+
2129
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:42
2130
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:26
2131
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:221
2132
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:41
2133
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:27
2134
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:309
2135
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:39
2136
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:266
2137
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:91
2138
+ msgid "Button Title"
2139
+ msgstr "Knapptittel"
2140
+
2141
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:60
2142
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:44
2143
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:239
2144
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:59
2145
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:57
2146
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:282
2147
+ msgid "Payment Amount"
2148
+ msgstr "Betalings beløp"
2149
+
2150
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:68
2151
+ msgid "Braintree API key and account details. You can get this from your Braintree account."
2152
+ msgstr "Braintree API nøkkel- og kontodetaljer. Du kan få dette fra Braintree-kontoen din."
2153
+
2154
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:72
2155
+ msgid "Merchant ID"
2156
+ msgstr "Kjøpmann ID"
2157
+
2158
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:80
2159
+ msgid "Public Key"
2160
+ msgstr "Offentlig nøkkel"
2161
+
2162
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:87
2163
+ msgid "Private Key"
2164
+ msgstr "Privat nøkkel"
2165
+
2166
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:95
2167
+ msgid "Merchant Account ID"
2168
+ msgstr "Merchant Account ID"
2169
+
2170
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:113
2171
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:137
2172
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:361
2173
+ msgid "The following details are optional."
2174
+ msgstr "Følgende detaljer er valgfrie."
2175
+
2176
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:117
2177
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:92
2178
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:287
2179
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:204
2180
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:172
2181
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:456
2182
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:149
2183
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:373
2184
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:191
2185
+ msgid "Return URL"
2186
+ msgstr "Returner URL"
2187
+
2188
+ #: views/payments/payment-gateway/admin_braintree_buy_now_button.php:127
2189
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:126
2190
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:321
2191
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:214
2192
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:200
2193
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:484
2194
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:159
2195
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:383
2196
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:212
2197
+ msgid "Save Payment Data"
2198
+ msgstr "Lagre betalingsdata"
2199
+
2200
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:16
2201
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:204
2202
+ msgid "PayPal Buy Now Button Configuration"
2203
+ msgstr "PayPal Kjøp nå-knappkonfigurasjon"
2204
+
2205
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:52
2206
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:247
2207
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:67
2208
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:45
2209
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:327
2210
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:65
2211
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:289
2212
+ msgid "Payment Currency"
2213
+ msgstr "Betalingsvaluta"
2214
+
2215
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:100
2216
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:295
2217
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:85
2218
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:367
2219
+ msgid "PayPal Email"
2220
+ msgstr "PayPal e-post"
2221
+
2222
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:108
2223
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:303
2224
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:180
2225
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:464
2226
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:199
2227
+ msgid "Button Image URL"
2228
+ msgstr "URL for knappebilde"
2229
+
2230
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:116
2231
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:311
2232
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:188
2233
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:472
2234
+ msgid "Custom Checkout Page Logo Image"
2235
+ msgstr "Egendefinert kassesideslogobilde"
2236
+
2237
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:21
2238
+ msgid "PayPal Smart Checkout Button Configuration"
2239
+ msgstr "PayPal Smart Checkout-knappkonfigurasjon"
2240
+
2241
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:107
2242
+ msgid "PayPal Smart Checkout API Credentials (you can get this from your PayPal account)"
2243
+ msgstr "PayPal Smart Checkout API-legitimasjon (du kan få dette fra PayPal-kontoen din)"
2244
+
2245
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:111
2246
+ msgid "Live Client ID"
2247
+ msgstr "Live Client ID"
2248
+
2249
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:119
2250
+ msgid "Live Secret"
2251
+ msgstr "Live Secret"
2252
+
2253
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:127
2254
+ msgid "Sandbox Client ID"
2255
+ msgstr "Sandbox Client ID"
2256
+
2257
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:135
2258
+ msgid "Sandbox Secret"
2259
+ msgstr "Sandbox Secret"
2260
+
2261
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:143
2262
+ msgid "Button Appearance Settings"
2263
+ msgstr "Innstillinger for knapputseende"
2264
+
2265
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:147
2266
+ msgid "Size"
2267
+ msgstr "Størrelse"
2268
+
2269
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:150
2270
+ msgid "Medium"
2271
+ msgstr "Medium"
2272
+
2273
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:151
2274
+ msgid "Large"
2275
+ msgstr "Stor"
2276
+
2277
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:152
2278
+ msgid "Repsonsive"
2279
+ msgstr "Repsonsive"
2280
+
2281
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:154
2282
+ msgid "Select button size."
2283
+ msgstr "Velg knappestørrelse."
2284
+
2285
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:158
2286
+ msgid "Color"
2287
+ msgstr "Farge"
2288
+
2289
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:161
2290
+ msgid "Gold"
2291
+ msgstr "Gull"
2292
+
2293
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:162
2294
+ msgid "Blue"
2295
+ msgstr "Blå"
2296
+
2297
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:163
2298
+ msgid "Silver"
2299
+ msgstr "Sølv"
2300
+
2301
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:164
2302
+ msgid "Black"
2303
+ msgstr "Svart"
2304
+
2305
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:166
2306
+ msgid "Select button color."
2307
+ msgstr "Velg knappefarge."
2308
+
2309
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:170
2310
+ msgid "Shape"
2311
+ msgstr "Form"
2312
+
2313
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:172
2314
+ msgid "Rectangular"
2315
+ msgstr "Rektangulære"
2316
+
2317
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:173
2318
+ msgid "Pill"
2319
+ msgstr "Pille"
2320
+
2321
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:174
2322
+ msgid "Select button shape."
2323
+ msgstr "Velg knappeform."
2324
+
2325
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:178
2326
+ msgid "Layout"
2327
+ msgstr "Oppsett"
2328
+
2329
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:180
2330
+ msgid "Vertical"
2331
+ msgstr "Vertikal"
2332
+
2333
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:181
2334
+ msgid "Horizontal"
2335
+ msgstr "Horisontal"
2336
+
2337
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:182
2338
+ msgid "Select button layout."
2339
+ msgstr "Velg knappoppsett."
2340
+
2341
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:187
2342
+ msgid "Additional Settings"
2343
+ msgstr "Tilleggsinnstillinger"
2344
+
2345
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:191
2346
+ msgid "Payment Methods"
2347
+ msgstr "Betalingsmetoder"
2348
+
2349
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:193
2350
+ msgid "PayPal Credit"
2351
+ msgstr "PayPal-kreditt"
2352
+
2353
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:194
2354
+ msgid "ELV"
2355
+ msgstr "ELV"
2356
+
2357
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:195
2358
+ msgid "Select payment methods that could be used by customers. Note that payment with cards is always enabled."
2359
+ msgstr "Velg betalingsmetoder som kan brukes av kunder. Merk at betaling med kort alltid er aktivert."
2360
+
2361
+ #: views/payments/payment-gateway/admin_paypal_smart_checkout_button.php:200
2362
+ msgid "The following details are optional"
2363
+ msgstr "Følgende detaljer er valgfrie"
2364
+
2365
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:18
2366
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:295
2367
+ msgid "PayPal Subscription Button Configuration"
2368
+ msgstr "PayPal-abonnementsknappkonfigurasjon"
2369
+
2370
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:93
2371
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:375
2372
+ msgid "Billing Amount Each Cycle"
2373
+ msgstr "Faktureringsbeløp hver syklus"
2374
+
2375
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:101
2376
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:383
2377
+ msgid "Billing Cycle"
2378
+ msgstr "Faktureringssyklus"
2379
+
2380
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:114
2381
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:396
2382
+ msgid "Billing Cycle Count"
2383
+ msgstr "Faktureringssyklus-telling"
2384
+
2385
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:122
2386
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:404
2387
+ msgid "Re-attempt on Failure"
2388
+ msgstr "Forsøk på nytt på mislykkethet"
2389
+
2390
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:135
2391
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:419
2392
+ msgid "Trial Billing Details (Leave empty if you are not offering a trial period)"
2393
+ msgstr "Prøvefaktureringsdetaljer (legg tom hvis du ikke tilbyr prøveperiode)"
2394
+
2395
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:141
2396
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:425
2397
+ msgid "Trial Billing Amount"
2398
+ msgstr "Prøvefaktureringsbeløp"
2399
+
2400
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:149
2401
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:433
2402
+ msgid "Trial Billing Period"
2403
+ msgstr "Prøvefaktureringsperiode"
2404
+
2405
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:166
2406
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:450
2407
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:177
2408
+ msgid "Optional Details"
2409
+ msgstr "Valgfrie detaljer"
2410
+
2411
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:29
2412
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:250
2413
+ msgid "Stripe Buy Now Button Configuration"
2414
+ msgstr "Stripe Buy Now-knappkonfigurasjon"
2415
+
2416
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:104
2417
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:328
2418
+ msgid "Stripe API keys. You can get this from your Stripe account."
2419
+ msgstr "Stripe API-nøkler. Du kan få dette fra Stripe-kontoen din."
2420
+
2421
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:108
2422
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:332
2423
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:131
2424
+ msgid "Test Publishable Key"
2425
+ msgstr "Test publiserbar nøkkel"
2426
+
2427
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:115
2428
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:339
2429
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:139
2430
+ msgid "Test Secret Key"
2431
+ msgstr "Test hemmelig nøkkel"
2432
+
2433
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:122
2434
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:346
2435
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:147
2436
+ msgid "Live Publishable Key"
2437
+ msgstr "Live publiserbar nøkkel"
2438
+
2439
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:129
2440
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:353
2441
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:155
2442
+ msgid "Live Secret Key"
2443
+ msgstr "Live Secret Key"
2444
+
2445
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:141
2446
+ #: views/payments/payment-gateway/admin_stripe_buy_now_button.php:365
2447
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:183
2448
+ msgid "Collect Customer Address"
2449
+ msgstr "Samle kundeadresse"
2450
+
2451
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:75
2452
+ msgid "Stripe Subscription Button Configuration"
2453
+ msgstr "Stripe-abonnementsknappkonfigurasjon"
2454
+
2455
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:109
2456
+ msgid "Stripe Plan ID"
2457
+ msgstr "Stripe-ID"
2458
+
2459
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:125
2460
+ msgid "Stripe API Settings"
2461
+ msgstr "Stripe API-innstillinger"
2462
+
2463
+ #: views/payments/payment-gateway/admin_stripe_subscription_button.php:163
2464
+ msgid "Webook Endpoint URL"
2465
+ msgstr "Webook Endpoint URL"
2466
+
2467
+ #: views/payments/payment-gateway/braintree_button_shortcode_view.php:20
2468
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:91
2469
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:93
2470
+ #: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:15
2471
+ #: views/payments/payment-gateway/stripe_button_shortcode_view.php:20
2472
+ #: views/payments/payment-gateway/stripe_button_shortcode_view.php:150
2473
+ msgid "Buy Now"
2474
+ msgstr "Kjøp nå"
2475
+
2476
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:226
2477
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:228
2478
+ msgid "Subscribe Now"
2479
+ msgstr "Abonner nå"
2480
+
2481
+ #: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:137
2482
+ msgid "Error occured during PayPal Smart Checkout process."
2483
+ msgstr "Det oppsto en feil under PayPal Smart Checkout-prosessen."
2484
+
2485
+ #: views/payments/payment-gateway/paypal_smart_checkout_button_shortcode_view.php:165
2486
+ msgid "HTTP error occured during payment process:"
2487
+ msgstr "HTTP-feil oppstod under betalingsprosessen:"
2488
+
2489
+ #: Translation strings from addons === Form builder addon
2490
+ msgid "Type password here"
2491
+ msgstr "Skriv inn passord her"
2492
+
2493
+ msgid "Retype password here"
2494
+ msgstr "Skriv passordet på nytt her"
2495
+
2496
+ msgid "Registration is complete. You can now log into the site."
2497
+ msgstr "Registreringen er fullført. Du kan nå logge inn på siden."
2498
+
2499
+ msgid " Field has invalid character"
2500
+ msgstr " Feltet har ugyldig karakter"
2501
+
2502
+ msgid " Password does not match"
2503
+ msgstr " Passordet stemmer ikke"
2504
+
2505
+ msgid "Already taken."
2506
+ msgstr "Allerede tatt."
2507
+
2508
+ msgid "Street Address"
2509
+ msgstr "Gateadresse"
2510
+
2511
+ msgid "Apt, Suite, Bldg. (optional)"
2512
+ msgstr "Apt, Suite, Bldg. (valgfri)"
2513
+
2514
+ msgid "State / Province / Region"
2515
+ msgstr "Stat / provins / region"
2516
+
2517
+ msgid "Postal / Zip Code"
2518
+ msgstr "Postnummer"
2519
+
2520
+ msgid "Check this box to delete the image. The image will be deleted when you save the profile."
2521
+ msgstr "Merk av i denne ruten for å slette bildet. Bildet blir slettet når du lagrer profilen."
2522
+
2523
+ msgid "You will need to re-login since you changed your password."
2524
+ msgstr "Du må logge inn på nytt siden du endret passord."
2525
+
2526
+ msgid "Please enter any two digits with <strong>no</strong> spaces (Example: 12)"
2527
+ msgstr "Skriv inn to sifre med <strong> ingen </strong> mellomrom (eksempel: 12)"
2528
+
2529
+ msgid "Verification"
2530
+ msgstr "Bekreftelse"
2531
+
2532
+ msgid "Please enter any two digits with no spaces (Example: 12)*"
2533
+ msgstr "Skriv inn to sifre uten mellomrom (eksempel: 12) *"
2534
+
2535
+ msgid "Username can only contain: letters, numbers and .-*@"
2536
+ msgstr "Brukernavn kan bare inneholde: bokstaver, tall og .- * @"
2537
+
2538
+ msgid "Allowed characters are: letters, numbers and .-_*@"
2539
+ msgstr "Tillatte tegn er: bokstaver, tall og.-_ * @"
2540
+
2541
+ #: === Partial protection addon strings
2542
+ msgid "You do not have permission to view this content."
2543
+ msgstr "Du har ikke tillatelse til å se dette innholdet."
2544
+
2545
+ msgid "Your membership level does not have permission to view this content."
2546
+ msgstr "Ditt medlemsnivå har ikke tillatelse til å se dette innholdet."
2547
+
2548
+ msgid "This content is for members only."
2549
+ msgstr "Dette innholdet er kun for medlemmer."
2550
+
2551
+ msgid "Please check at least one."
2552
+ msgstr "Kontroller minst en."
2553
+
2554
+ #: === Member Directory Listing addon strings swpm-member-directory-admin.php:9
2555
+ msgid "Member Directory"
2556
+ msgstr "Medlemskatalog"
2557
+
2558
+ #: includes/swpm_mda_show_profile.php:26
2559
+ msgid "Member ID"
2560
+ msgstr "Medlems-ID"
2561
+
2562
+ #: includes/swpm_mda_show_profile.php:30
2563
+ msgid "Level"
2564
+ msgstr "Nivå"
2565
+
2566
+ #: includes/swpm_mda_show_profile.php:32
2567
+ msgid "Address"
2568
+ msgstr "Adresse"
2569
+
2570
+ #: views/template-1.php:52 views/template-2.php:53
2571
+ msgid "Search..."
2572
+ msgstr "Søk..."
2573
+
2574
+ #: views/template-1.php:60 views/template-2.php:62
2575
+ msgid "Clear Search"
2576
+ msgstr "Tøm søk"
2577
+
2578
+ #. === Misc Shortcodes Addon ===
2579
+ msgid "You must be logged in to upgrade a membership."
2580
+ msgstr "Du må være logget inn for å oppgradere et medlemskap."
2581
+
2582
+ msgid "Membership level has been updated."
2583
+ msgstr "Medlemskapsnivået er oppdatert."
2584
+
2585
+ msgid "Already a member of this level."
2586
+ msgstr "Allerede medlem av dette nivået."
languages/simple-membership.pot CHANGED
@@ -2283,6 +2283,10 @@ msgstr ""
2283
  msgid "Edit Profile"
2284
  msgstr ""
2285
 
 
 
 
 
2286
  #: views/login.php:26
2287
  msgid "Remember Me"
2288
  msgstr ""
2283
  msgid "Edit Profile"
2284
  msgstr ""
2285
 
2286
+ #: views/login.php:7
2287
+ msgid "Username or Email"
2288
+ msgstr ""
2289
+
2290
  #: views/login.php:26
2291
  msgid "Remember Me"
2292
  msgstr ""
log-auth.txt DELETED
File without changes
log.txt DELETED
File without changes
readme.txt CHANGED
@@ -4,8 +4,8 @@ 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: 5.0
6
  Requires PHP: 5.6
7
- Tested up to: 5.8
8
- Stable tag: 4.0.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -159,6 +159,28 @@ https://simple-membership-plugin.com/
159
 
160
  == Changelog ==
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  = 4.0.7 =
163
  - Stripe sca subscriptions enhancement: restore the custom field value from the original webhook notification (when available).
164
  - Custom fields data (if available) is also saved in the swpm_transactions custom post type after a transaction.
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: 5.0
6
  Requires PHP: 5.6
7
+ Tested up to: 5.9
8
+ Stable tag: 4.1.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
159
 
160
  == Changelog ==
161
 
162
+ = 4.1.0 =
163
+ - Added the text 'Username or Email' to the language translation POT file.
164
+ - Added a new action hook (swpm_front_end_registration_form_submitted) for when the front-end registration form is submitted
165
+ - Added nonce check for the "Delete Transaction" action in the payments menu.
166
+
167
+ = 4.0.9 =
168
+ - Added do_blocks() to the more tag protection feature's content formatting to improve compatibility with the link preview plugin. Thanks to @brechtvds for providing the code adjustment.
169
+ - Added a new filter for the more tag protection feature (swpm_format_raw_content_for_front_end_display).
170
+ - Added a new filter for the login form action message output (swpm_login_form_action_msg).
171
+ - Added a new filter for the "Hide Registration Form to Logged Users" feature. It will allow additional content to be added below the message.
172
+ - Added a new filter for the user delete action.
173
+ - Updated the Norwegian language file.
174
+ - Added nonce check to the bulk delete feature of the members menu.
175
+
176
+ = 4.0.8 =
177
+ - Added a new utility function in the plugin to retrieve wp user roles by ID.
178
+ - Added French (Canadian) language translation file to the plugin. Thank you to Ariane Larivière.
179
+ - Added a check to prevent an extra empty line output with a notice/message.
180
+ - Updated the HTML ID value for the privacy policy checkbox item.
181
+ - The debug log file names are uniquely generated on per install.
182
+ - Added nonce check to the debug log file reset action.
183
+
184
  = 4.0.7 =
185
  - Stripe sca subscriptions enhancement: restore the custom field value from the original webhook notification (when available).
186
  - Custom fields data (if available) is also saved in the swpm_transactions custom post type after a transaction.
simple-wp-membership.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Simple WordPress Membership
4
- Version: 4.0.7
5
  Plugin URI: https://simple-membership-plugin.com/
6
  Author: smp7, wp.insider
7
  Author URI: https://simple-membership-plugin.com/
@@ -12,45 +12,45 @@ Requires PHP: 5.6
12
  */
13
 
14
  //Direct access to this file is not permitted
15
- if (!defined('ABSPATH')){
16
- exit("Do not access this file directly.");
17
  }
18
 
19
- include_once('classes/class.simple-wp-membership.php');
20
- include_once('classes/class.swpm-cronjob.php');
21
- include_once('swpm-compat.php');
22
-
23
- define('SIMPLE_WP_MEMBERSHIP_VER', '4.0.7');
24
- define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.3');
25
- define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
26
- define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
27
- define('SIMPLE_WP_MEMBERSHIP_URL', plugins_url('', __FILE__));
28
- define('SIMPLE_WP_MEMBERSHIP_DIRNAME', dirname(plugin_basename(__FILE__)));
29
- define('SIMPLE_WP_MEMBERSHIP_TEMPLATE_PATH', 'simple-membership');
30
- if (!defined('COOKIEHASH')) {
31
- define('COOKIEHASH', md5(get_site_option('siteurl')));
32
  }
33
- define('SIMPLE_WP_MEMBERSHIP_AUTH', 'simple_wp_membership_' . COOKIEHASH);
34
- define('SIMPLE_WP_MEMBERSHIP_SEC_AUTH', 'simple_wp_membership_sec_' . COOKIEHASH);
35
- define('SIMPLE_WP_MEMBERSHIP_STRIPE_ZERO_CENTS',serialize(array('JPY', 'MGA', 'VND', 'KRW')));
36
 
37
  SwpmUtils::do_misc_initial_plugin_setup_tasks();
38
 
39
- register_activation_hook(SIMPLE_WP_MEMBERSHIP_PATH . 'simple-wp-membership.php', 'SimpleWpMembership::activate');
40
- register_deactivation_hook(SIMPLE_WP_MEMBERSHIP_PATH . 'simple-wp-membership.php', 'SimpleWpMembership::deactivate');
41
 
42
- add_action('swpm_login', 'SimpleWpMembership::swpm_login', 10, 3);
43
 
44
- $simple_membership = new SimpleWpMembership();
45
  $simple_membership_cron = new SwpmCronJob();
46
 
47
  //Add settings link in plugins listing page
48
- function swpm_add_settings_link($links, $file) {
49
- if ($file == plugin_basename(__FILE__)) {
50
- $settings_link = '<a href="admin.php?page=simple_wp_membership_settings">Settings</a>';
51
- array_unshift($links, $settings_link);
52
- }
53
- return $links;
54
  }
55
 
56
- add_filter('plugin_action_links', 'swpm_add_settings_link', 10, 2);
1
  <?php
2
  /*
3
  Plugin Name: Simple WordPress Membership
4
+ Version: 4.1.0
5
  Plugin URI: https://simple-membership-plugin.com/
6
  Author: smp7, wp.insider
7
  Author URI: https://simple-membership-plugin.com/
12
  */
13
 
14
  //Direct access to this file is not permitted
15
+ if ( ! defined( 'ABSPATH' ) ) {
16
+ exit( 'Do not access this file directly.' );
17
  }
18
 
19
+ include_once( 'classes/class.simple-wp-membership.php' );
20
+ include_once( 'classes/class.swpm-cronjob.php' );
21
+ include_once( 'swpm-compat.php' );
22
+
23
+ define( 'SIMPLE_WP_MEMBERSHIP_VER', '4.1.0' );
24
+ define( 'SIMPLE_WP_MEMBERSHIP_DB_VER', '1.3' );
25
+ define( 'SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url() );
26
+ define( 'SIMPLE_WP_MEMBERSHIP_PATH', dirname( __FILE__ ) . '/' );
27
+ define( 'SIMPLE_WP_MEMBERSHIP_URL', plugins_url( '', __FILE__ ) );
28
+ define( 'SIMPLE_WP_MEMBERSHIP_DIRNAME', dirname( plugin_basename( __FILE__ ) ) );
29
+ define( 'SIMPLE_WP_MEMBERSHIP_TEMPLATE_PATH', 'simple-membership' );
30
+ if ( ! defined( 'COOKIEHASH' ) ) {
31
+ define( 'COOKIEHASH', md5( get_site_option( 'siteurl' ) ) );
32
  }
33
+ define( 'SIMPLE_WP_MEMBERSHIP_AUTH', 'simple_wp_membership_' . COOKIEHASH );
34
+ define( 'SIMPLE_WP_MEMBERSHIP_SEC_AUTH', 'simple_wp_membership_sec_' . COOKIEHASH );
35
+ define( 'SIMPLE_WP_MEMBERSHIP_STRIPE_ZERO_CENTS', serialize( array( 'JPY', 'MGA', 'VND', 'KRW' ) ) );
36
 
37
  SwpmUtils::do_misc_initial_plugin_setup_tasks();
38
 
39
+ register_activation_hook( SIMPLE_WP_MEMBERSHIP_PATH . 'simple-wp-membership.php', 'SimpleWpMembership::activate' );
40
+ register_deactivation_hook( SIMPLE_WP_MEMBERSHIP_PATH . 'simple-wp-membership.php', 'SimpleWpMembership::deactivate' );
41
 
42
+ add_action( 'swpm_login', 'SimpleWpMembership::swpm_login', 10, 3 );
43
 
44
+ $simple_membership = new SimpleWpMembership();
45
  $simple_membership_cron = new SwpmCronJob();
46
 
47
  //Add settings link in plugins listing page
48
+ function swpm_add_settings_link( $links, $file ) {
49
+ if ( $file == plugin_basename( __FILE__ ) ) {
50
+ $settings_link = '<a href="admin.php?page=simple_wp_membership_settings">Settings</a>';
51
+ array_unshift( $links, $settings_link );
52
+ }
53
+ return $links;
54
  }
55
 
56
+ add_filter( 'plugin_action_links', 'swpm_add_settings_link', 10, 2 );
views/add.php CHANGED
@@ -77,7 +77,7 @@ $user_name = apply_filters('swpm_registration_form_set_username', $user_name);
77
  ?>
78
  <tr>
79
  <td colspan="2" style="text-align: center;">
80
- <label><input type="checkbox" id="accept_pt" name="accept_pp" class="validate[required]" value="1"> <?php echo SwpmUtils::_('I agree to the ') ?> <a href="<?php echo $pp_page_url; ?>" target="_blank"><?php echo SwpmUtils::_('Privacy Policy') ?></a></label>
81
  </td>
82
  </tr>
83
  <?php
77
  ?>
78
  <tr>
79
  <td colspan="2" style="text-align: center;">
80
+ <label><input type="checkbox" id="accept_pp" name="accept_pp" class="validate[required]" value="1"> <?php echo SwpmUtils::_('I agree to the ') ?> <a href="<?php echo $pp_page_url; ?>" target="_blank"><?php echo SwpmUtils::_('Privacy Policy') ?></a></label>
81
  </td>
82
  </tr>
83
  <?php
views/admin_members_list.php CHANGED
@@ -1,70 +1,71 @@
1
- <?php
2
- //$this refers to class "SwpmMembers" in this context.
3
-
4
- if (isset($_REQUEST['member_action']) && $_REQUEST['member_action'] == 'delete') {
5
- //Delete this record
6
- $this->delete();
7
- $success_msg = '<div id="message" class="updated"><p>';
8
- $success_msg .= SwpmUtils::_('The selected entry was deleted!');
9
- $success_msg .= '</p></div>';
10
- echo $success_msg;
11
- }
12
-
13
- $this->prepare_items();
14
- $count = $this->get_user_count_by_account_state();
15
-
16
- global $wpdb;
17
- $query = "SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id !=1 ";
18
- $levels = $wpdb->get_results($query, ARRAY_A);
19
-
20
- $account_state = filter_input(INPUT_GET, 'status', FILTER_SANITIZE_STRING);
21
- $membership_level = filter_input(INPUT_GET, 'membership_level', FILTER_SANITIZE_NUMBER_INT);
22
- ?>
23
- <style>
24
- select.swpm-admin-search-dropdown {
25
- vertical-align: inherit;
26
- }
27
- input.button.swpm-admin-search-btn {
28
- vertical-align: top;
29
- }
30
- </style>
31
- <ul class="subsubsub">
32
- <li class="all"><a href="admin.php?page=simple_wp_membership" <?php echo $status == "" ? "class='current'" : ""; ?> ><?php echo SwpmUtils::_('All') ?> <span class="count">(<?php echo $count['all']; ?>)</span></a> |</li>
33
- <li class="active"><a href="admin.php?page=simple_wp_membership&status=active" <?php echo $status == "active" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Active') ?> <span class="count">(<?php echo isset($count['active']) ? $count['active'] : 0 ?>)</span></a> |</li>
34
- <li class="active"><a href="admin.php?page=simple_wp_membership&status=inactive" <?php echo $status == "inactive" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Inactive') ?> <span class="count">(<?php echo isset($count['inactive']) ? $count['inactive'] : 0 ?>)</span></a> |</li>
35
- <li class="pending"><a href="admin.php?page=simple_wp_membership&status=activation_required" <?php echo $status == "activation_required" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Activation Required') ?> <span class="count">(<?php echo isset($count['activation_required']) ? $count['activation_required'] : 0 ?>)</span></a> |</li>
36
- <li class="pending"><a href="admin.php?page=simple_wp_membership&status=pending" <?php echo $status == "pending" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Pending') ?> <span class="count">(<?php echo isset($count['pending']) ? $count['pending'] : 0 ?>)</span></a> |</li>
37
- <li class="incomplete"><a href="admin.php?page=simple_wp_membership&status=incomplete" <?php echo $status == "incomplete" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Incomplete') ?> <span class="count">(<?php echo isset($count['incomplete']) ? $count['incomplete'] : 0 ?>)</span></a> |</li>
38
- <li class="expired"><a href="admin.php?page=simple_wp_membership&status=expired" <?php echo $status == "expired" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Expired') ?> <span class="count">(<?php echo isset($count['expired']) ? $count['expired'] : 0 ?>)</span></a></li>
39
- </ul>
40
-
41
- <br />
42
- <form method="get">
43
- <p class="search-box">
44
- <select name="status" class="swpm-admin-search-dropdown" id="account_state">
45
- <option value=""<?php echo empty($account_state) ? ' selected' : ''; ?>> <?php echo SwpmUtils::_('Account State'); ?></option>
46
- <?php echo SwpmUtils::account_state_dropdown($account_state); ?>
47
- <option value="incomplete"<?php echo $account_state === "incomplete" ? ' selected' : ''; ?>> <?php echo SwpmUtils::_('Incomplete'); ?></option>
48
- </select>
49
- <select name="membership_level" class="swpm-admin-search-dropdown" id="membership_level">
50
- <option value=""<?php echo empty($membership_level) ? ' selected' : ''; ?>> <?php echo SwpmUtils::_('Membership Level'); ?></option>
51
- <?php foreach ($levels as $level): ?>
52
- <option <?php echo ($level['id'] == $membership_level) ? "selected='selected'" : ""; ?> value="<?php echo $level['id']; ?>"> <?php echo $level['alias'] ?></option>
53
- <?php endforeach; ?>
54
- </select>
55
- <input id="search_id-search-input" type="text" name="s" value="<?php echo isset($_REQUEST['s']) ? esc_attr($_REQUEST['s']) : ''; ?>" />
56
- <input id="search-submit" class="button swpm-admin-search-btn" type="submit" name="" value="<?php echo SwpmUtils::_('Search') ?>" />
57
- <input type="hidden" name="page" value="simple_wp_membership" />
58
- </p>
59
- </form>
60
-
61
- <form id="tables-filter" method="get" onSubmit="return confirm('Are you sure you want to perform this bulk operation on the selected entries?');">
62
- <!-- For plugins, we also need to ensure that the form posts back to our current page -->
63
- <input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>" />
64
- <!-- Now we can render the completed list table -->
65
- <?php $this->display(); ?>
66
- </form>
67
-
68
- <p>
69
- <a href="admin.php?page=simple_wp_membership&member_action=add" class="button-primary"><?php echo SwpmUtils::_('Add New') ?></a>
 
70
  </p>
1
+ <?php
2
+ //$this refers to class "SwpmMembers" in this context.
3
+
4
+ if (isset($_REQUEST['member_action']) && $_REQUEST['member_action'] == 'delete') {
5
+ //Delete this record
6
+ $this->delete();
7
+ $success_msg = '<div id="message" class="updated"><p>';
8
+ $success_msg .= SwpmUtils::_('The selected entry was deleted!');
9
+ $success_msg .= '</p></div>';
10
+ echo $success_msg;
11
+ }
12
+
13
+ $this->prepare_items();
14
+ $count = $this->get_user_count_by_account_state();
15
+
16
+ global $wpdb;
17
+ $query = "SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id !=1 ";
18
+ $levels = $wpdb->get_results($query, ARRAY_A);
19
+
20
+ $account_state = filter_input(INPUT_GET, 'status', FILTER_SANITIZE_STRING);
21
+ $membership_level = filter_input(INPUT_GET, 'membership_level', FILTER_SANITIZE_NUMBER_INT);
22
+ ?>
23
+ <style>
24
+ select.swpm-admin-search-dropdown {
25
+ vertical-align: inherit;
26
+ }
27
+ input.button.swpm-admin-search-btn {
28
+ vertical-align: top;
29
+ }
30
+ </style>
31
+ <ul class="subsubsub">
32
+ <li class="all"><a href="admin.php?page=simple_wp_membership" <?php echo $status == "" ? "class='current'" : ""; ?> ><?php echo SwpmUtils::_('All') ?> <span class="count">(<?php echo $count['all']; ?>)</span></a> |</li>
33
+ <li class="active"><a href="admin.php?page=simple_wp_membership&status=active" <?php echo $status == "active" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Active') ?> <span class="count">(<?php echo isset($count['active']) ? $count['active'] : 0 ?>)</span></a> |</li>
34
+ <li class="active"><a href="admin.php?page=simple_wp_membership&status=inactive" <?php echo $status == "inactive" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Inactive') ?> <span class="count">(<?php echo isset($count['inactive']) ? $count['inactive'] : 0 ?>)</span></a> |</li>
35
+ <li class="pending"><a href="admin.php?page=simple_wp_membership&status=activation_required" <?php echo $status == "activation_required" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Activation Required') ?> <span class="count">(<?php echo isset($count['activation_required']) ? $count['activation_required'] : 0 ?>)</span></a> |</li>
36
+ <li class="pending"><a href="admin.php?page=simple_wp_membership&status=pending" <?php echo $status == "pending" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Pending') ?> <span class="count">(<?php echo isset($count['pending']) ? $count['pending'] : 0 ?>)</span></a> |</li>
37
+ <li class="incomplete"><a href="admin.php?page=simple_wp_membership&status=incomplete" <?php echo $status == "incomplete" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Incomplete') ?> <span class="count">(<?php echo isset($count['incomplete']) ? $count['incomplete'] : 0 ?>)</span></a> |</li>
38
+ <li class="expired"><a href="admin.php?page=simple_wp_membership&status=expired" <?php echo $status == "expired" ? "class='current'" : ""; ?>><?php echo SwpmUtils::_('Expired') ?> <span class="count">(<?php echo isset($count['expired']) ? $count['expired'] : 0 ?>)</span></a></li>
39
+ </ul>
40
+
41
+ <br />
42
+ <form method="get">
43
+ <p class="search-box">
44
+ <select name="status" class="swpm-admin-search-dropdown" id="account_state">
45
+ <option value=""<?php echo empty($account_state) ? ' selected' : ''; ?>> <?php echo SwpmUtils::_('Account State'); ?></option>
46
+ <?php echo SwpmUtils::account_state_dropdown($account_state); ?>
47
+ <option value="incomplete"<?php echo $account_state === "incomplete" ? ' selected' : ''; ?>> <?php echo SwpmUtils::_('Incomplete'); ?></option>
48
+ </select>
49
+ <select name="membership_level" class="swpm-admin-search-dropdown" id="membership_level">
50
+ <option value=""<?php echo empty($membership_level) ? ' selected' : ''; ?>> <?php echo SwpmUtils::_('Membership Level'); ?></option>
51
+ <?php foreach ($levels as $level): ?>
52
+ <option <?php echo ($level['id'] == $membership_level) ? "selected='selected'" : ""; ?> value="<?php echo $level['id']; ?>"> <?php echo $level['alias'] ?></option>
53
+ <?php endforeach; ?>
54
+ </select>
55
+ <input id="search_id-search-input" type="text" name="s" value="<?php echo isset($_REQUEST['s']) ? esc_attr($_REQUEST['s']) : ''; ?>" />
56
+ <input id="search-submit" class="button swpm-admin-search-btn" type="submit" name="" value="<?php echo SwpmUtils::_('Search') ?>" />
57
+ <input type="hidden" name="page" value="simple_wp_membership" />
58
+ </p>
59
+ </form>
60
+
61
+ <form id="tables-filter" method="get" onSubmit="return confirm('Are you sure you want to perform this bulk operation on the selected entries?');">
62
+ <!-- For plugins, we also need to ensure that the form posts back to our current page -->
63
+ <input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>" />
64
+ <!-- Now we can render the completed list table -->
65
+ <?php $this->display(); ?>
66
+ <?php wp_nonce_field( 'swpm_bulk_action', 'swpm_bulk_action_nonce' ); ?>
67
+ </form>
68
+
69
+ <p>
70
+ <a href="admin.php?page=simple_wp_membership&member_action=add" class="button-primary"><?php echo SwpmUtils::_('Add New') ?></a>
71
  </p>
views/login.php CHANGED
@@ -3,8 +3,9 @@ $auth = SwpmAuth::get_instance();
3
  $setting = SwpmSettings::get_instance();
4
  $password_reset_url = $setting->get_value('reset-page-url');
5
  $join_url = $setting->get_value('join-us-page-url');
6
- // Filter allowing to change the default value of username label
7
- $swpm_username_label = apply_filters('swpm_login_form_set_username_label', 'Username or Email');
 
8
  ?>
9
  <div class="swpm-login-widget-form">
10
  <form id="swpm-login-form" name="swpm-login-form" method="post" action="">
@@ -25,9 +26,9 @@ $swpm_username_label = apply_filters('swpm_login_form_set_username_label', 'User
25
  <span class="swpm-remember-checkbox"><input type="checkbox" name="rememberme" value="checked='checked'"></span>
26
  <span class="swpm-rember-label"> <?php echo SwpmUtils::_('Remember Me') ?></span>
27
  </div>
28
-
29
  <div class="swpm-before-login-submit-section"><?php echo apply_filters('swpm_before_login_form_submit_button', ''); ?></div>
30
-
31
  <div class="swpm-login-submit">
32
  <input type="submit" class="swpm-login-form-submit" name="swpm-login" value="<?php echo SwpmUtils::_('Login') ?>"/>
33
  </div>
@@ -38,7 +39,7 @@ $swpm_username_label = apply_filters('swpm_login_form_set_username_label', 'User
38
  <a id="register" class="swpm-login-form-register-link" href="<?php echo $join_url; ?>"><?php echo SwpmUtils::_('Join Us') ?></a>
39
  </div>
40
  <div class="swpm-login-action-msg">
41
- <span class="swpm-login-widget-action-msg"><?php echo $auth->get_message(); ?></span>
42
  </div>
43
  </div>
44
  </form>
3
  $setting = SwpmSettings::get_instance();
4
  $password_reset_url = $setting->get_value('reset-page-url');
5
  $join_url = $setting->get_value('join-us-page-url');
6
+ // Filter that allows changing of the default value of the username label on login form.
7
+ $label_username_or_email = __( 'Username or Email', 'simple-membership' );
8
+ $swpm_username_label = apply_filters('swpm_login_form_set_username_label', $label_username_or_email);
9
  ?>
10
  <div class="swpm-login-widget-form">
11
  <form id="swpm-login-form" name="swpm-login-form" method="post" action="">
26
  <span class="swpm-remember-checkbox"><input type="checkbox" name="rememberme" value="checked='checked'"></span>
27
  <span class="swpm-rember-label"> <?php echo SwpmUtils::_('Remember Me') ?></span>
28
  </div>
29
+
30
  <div class="swpm-before-login-submit-section"><?php echo apply_filters('swpm_before_login_form_submit_button', ''); ?></div>
31
+
32
  <div class="swpm-login-submit">
33
  <input type="submit" class="swpm-login-form-submit" name="swpm-login" value="<?php echo SwpmUtils::_('Login') ?>"/>
34
  </div>
39
  <a id="register" class="swpm-login-form-register-link" href="<?php echo $join_url; ?>"><?php echo SwpmUtils::_('Join Us') ?></a>
40
  </div>
41
  <div class="swpm-login-action-msg">
42
+ <span class="swpm-login-widget-action-msg"><?php echo apply_filters( 'swpm_login_form_action_msg', $auth->get_message() ); ?></span>
43
  </div>
44
  </div>
45
  </form>
views/payments/admin_all_payment_transactions.php CHANGED
@@ -27,6 +27,7 @@ if (isset($_REQUEST['action'])) { //Do list table form row action tasks
27
  if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete_txn') { //Delete link was clicked for a row in list table
28
  $record_id = sanitize_text_field($_REQUEST['id']);
29
  $record_id = absint($record_id);
 
30
  $payments_list_table->delete_record($record_id);
31
  $success_msg = '<div id="message" class="updated"><p><strong>';
32
  $success_msg .= SwpmUtils::_('The selected entry was deleted!');
27
  if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete_txn') { //Delete link was clicked for a row in list table
28
  $record_id = sanitize_text_field($_REQUEST['id']);
29
  $record_id = absint($record_id);
30
+ check_admin_referer('swpm_delete_txn_'.$record_id);
31
  $payments_list_table->delete_record($record_id);
32
  $success_msg = '<div id="message" class="updated"><p><strong>';
33
  $success_msg .= SwpmUtils::_('The selected entry was deleted!');