Simple Membership - Version 3.3.8

Version Description

  • The account renewal payment will take into account any remaining time (when the user's level is using a duration type expiry).
  • The members can now user their email address (instead of username) and password to log into the site. The username field of the member login form will accept either the email address or the username.
  • The set_user_role action hook will not be triggered by the plugin as the wp_update_user() function will take care of it automatically.
Download this release

Release Info

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

Code changes from version 3.3.6 to 3.3.8

classes/class.simple-wp-membership.php CHANGED
@@ -3,6 +3,7 @@
3
  include_once('class.swpm-utils-misc.php');
4
  include_once('class.swpm-utils.php');
5
  include_once('class.swpm-utils-member.php');
 
6
  include_once('class.swpm-utils-template.php');
7
  include_once('class.swpm-init-time-tasks.php');
8
  include_once('class.swpm-comment-form-related.php');
@@ -24,7 +25,6 @@ include_once('class.swpm-front-registration.php');
24
  include_once('class.swpm-admin-registration.php');
25
  include_once('class.swpm-membership-level.php');
26
  include_once('class.swpm-membership-level-custom.php');
27
- include_once('class.swpm-membership-level-utils.php');
28
  include_once('class.swpm-permission-collection.php');
29
  include_once('class.swpm-auth-permission-collection.php');
30
  include_once('class.swpm-transactions.php');
3
  include_once('class.swpm-utils-misc.php');
4
  include_once('class.swpm-utils.php');
5
  include_once('class.swpm-utils-member.php');
6
+ include_once('class.swpm-utils-membership-level.php');
7
  include_once('class.swpm-utils-template.php');
8
  include_once('class.swpm-init-time-tasks.php');
9
  include_once('class.swpm-comment-form-related.php');
25
  include_once('class.swpm-admin-registration.php');
26
  include_once('class.swpm-membership-level.php');
27
  include_once('class.swpm-membership-level-custom.php');
 
28
  include_once('class.swpm-permission-collection.php');
29
  include_once('class.swpm-auth-permission-collection.php');
30
  include_once('class.swpm-transactions.php');
classes/class.swpm-auth.php CHANGED
@@ -35,10 +35,10 @@ class SwpmAuth {
35
  global $wpdb;
36
  $swpm_password = empty($pass) ? filter_input(INPUT_POST, 'swpm_password') : $pass;
37
  $swpm_user_name = empty($user) ? apply_filters('swpm_user_name', filter_input(INPUT_POST, 'swpm_user_name')) : $user;
38
-
39
  if (!empty($swpm_user_name) && !empty($swpm_password)) {
40
  //SWPM member login request.
41
-
42
  //First, lets make sure this user is not already logged into the site as an "Admin" user. We don't want to override that admin login session.
43
  if (current_user_can('administrator')) {
44
  //This user is logged in as ADMIN then trying to do another login as a member. Stop the login request processing (we don't want to override your admin login session).
@@ -50,10 +50,20 @@ class SwpmAuth {
50
  wp_die($error_msg);
51
  }
52
 
 
 
 
 
 
 
 
 
 
 
53
  //Lets process the request. Check username and password
54
  $user = sanitize_user($swpm_user_name);
55
  $pass = trim($swpm_password);
56
- SwpmLog::log_auth_debug("Authenticate request - Username: " . $swpm_user_name, true);
57
 
58
  $query = "SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl WHERE user_name = %s";
59
  $userData = $wpdb->get_row($wpdb->prepare($query, $user));
@@ -289,8 +299,7 @@ class SwpmAuth {
289
 
290
  public function get_expire_date() {
291
  if ($this->isLoggedIn) {
292
- return SwpmUtils::get_expire_date(
293
- $this->get('subscription_starts'), $this->get('subscription_period'), $this->get('subscription_duration_type'));
294
  }
295
  return "";
296
  }
35
  global $wpdb;
36
  $swpm_password = empty($pass) ? filter_input(INPUT_POST, 'swpm_password') : $pass;
37
  $swpm_user_name = empty($user) ? apply_filters('swpm_user_name', filter_input(INPUT_POST, 'swpm_user_name')) : $user;
38
+
39
  if (!empty($swpm_user_name) && !empty($swpm_password)) {
40
  //SWPM member login request.
41
+
42
  //First, lets make sure this user is not already logged into the site as an "Admin" user. We don't want to override that admin login session.
43
  if (current_user_can('administrator')) {
44
  //This user is logged in as ADMIN then trying to do another login as a member. Stop the login request processing (we don't want to override your admin login session).
50
  wp_die($error_msg);
51
  }
52
 
53
+ if(is_email($swpm_user_name)){//User is trying to log-in using an email address
54
+ $email = sanitize_email($swpm_user_name);
55
+ $query = $wpdb->prepare("SELECT user_name FROM " . $wpdb->prefix . "swpm_members_tbl WHERE email = %s", $email);
56
+ $username = $wpdb->get_var($query);
57
+ if($username){//Found a user record
58
+ $swpm_user_name = $username;//Grab the usrename value so it can be used in the authentication process.
59
+ SwpmLog::log_auth_debug("Authentication request using email address: " . $email.', Found a user record with username: '.$swpm_user_name, true);
60
+ }
61
+ }
62
+
63
  //Lets process the request. Check username and password
64
  $user = sanitize_user($swpm_user_name);
65
  $pass = trim($swpm_password);
66
+ SwpmLog::log_auth_debug("Authentication request - Username: " . $swpm_user_name, true);
67
 
68
  $query = "SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl WHERE user_name = %s";
69
  $userData = $wpdb->get_row($wpdb->prepare($query, $user));
299
 
300
  public function get_expire_date() {
301
  if ($this->isLoggedIn) {
302
+ return SwpmUtils::get_formatted_expiry_date($this->get('subscription_starts'), $this->get('subscription_period'), $this->get('subscription_duration_type'));
 
303
  }
304
  return "";
305
  }
classes/class.swpm-log.php CHANGED
@@ -64,7 +64,7 @@ class SwpmLog {
64
  $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
65
 
66
  // Timestamp
67
- $text = '[' . date('m/d/Y g:i A') . '] - ' . (($success) ? 'SUCCESS :' : 'FAILURE :') . $message . "\n";
68
  if ($end) {
69
  $text .= "\n------------------------------------------------------------------\n\n";
70
  }
@@ -85,7 +85,7 @@ class SwpmLog {
85
  $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log-auth.txt';
86
 
87
  // Timestamp
88
- $text = '[' . date('m/d/Y g:i A') . '] - ' . (($success) ? 'SUCCESS :' : 'FAILURE :') . $message . "\n";
89
  if ($end) {
90
  $text .= "\n------------------------------------------------------------------\n\n";
91
  }
@@ -107,7 +107,7 @@ class SwpmLog {
107
  continue;
108
  }
109
 
110
- $text = '[' . date('m/d/Y g:i A') . '] - SUCCESS : Log file reset';
111
  $text .= "\n------------------------------------------------------------------\n\n";
112
  $fp = fopen($logfile, 'w');
113
  if ($fp != FALSE) {
64
  $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
65
 
66
  // Timestamp
67
+ $text = '[' . date('m/d/Y g:i A') . '] - ' . (($success) ? 'SUCCESS: ' : 'FAILURE: ') . $message . "\n";
68
  if ($end) {
69
  $text .= "\n------------------------------------------------------------------\n\n";
70
  }
85
  $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log-auth.txt';
86
 
87
  // Timestamp
88
+ $text = '[' . date('m/d/Y g:i A') . '] - ' . (($success) ? 'SUCCESS: ' : 'FAILURE: ') . $message . "\n";
89
  if ($end) {
90
  $text .= "\n------------------------------------------------------------------\n\n";
91
  }
107
  continue;
108
  }
109
 
110
+ $text = '[' . date('m/d/Y g:i A') . '] - SUCCESS: Log file reset';
111
  $text .= "\n------------------------------------------------------------------\n\n";
112
  $fp = fopen($logfile, 'w');
113
  if ($fp != FALSE) {
classes/class.swpm-membership-level-utils.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * BMembershipLevelUtils
5
- *
6
- * @author nur
7
- */
8
- class SwpmMembershipLevelUtils {
9
-
10
- }
 
 
 
 
 
 
 
 
 
 
classes/class.swpm-membership-level.php CHANGED
@@ -1,9 +1,7 @@
1
  <?php
2
 
3
  /**
4
- * Description of BMembershipLevel
5
- *
6
- * @author nur
7
  */
8
  class SwpmMembershipLevel {
9
 
@@ -25,6 +23,25 @@ class SwpmMembershipLevel {
25
  return self::$_instance;
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  public function create_level() {
29
  //Check we are on the admin end and user has management permission
30
  SwpmMiscUtils::check_user_permission_and_is_admin('membership level creation');
1
  <?php
2
 
3
  /**
4
+ * Description of SwpmMembershipLevel
 
 
5
  */
6
  class SwpmMembershipLevel {
7
 
23
  return self::$_instance;
24
  }
25
 
26
+ public static function get_level_duration_type_string($type){
27
+ $type_string = '';
28
+ switch($type){
29
+ case '0': $type_string = 'No Expiry or Until Cancelled';
30
+ break;
31
+ case '1': $type_string = 'Days';
32
+ break;
33
+ case '2': $type_string = 'Weeks';
34
+ break;
35
+ case '3': $type_string = 'Months';
36
+ break;
37
+ case '4': $type_string = 'Years';
38
+ break;
39
+ case '5': $type_string = 'Fixed Date';
40
+ break;
41
+ }
42
+ return $type_string;
43
+ }
44
+
45
  public function create_level() {
46
  //Check we are on the admin end and user has management permission
47
  SwpmMiscUtils::check_user_permission_and_is_admin('membership level creation');
classes/class.swpm-registration.php CHANGED
@@ -39,7 +39,7 @@ abstract class SwpmRegistration {
39
 
40
  //Send notification email to the member
41
  wp_mail(trim($email), $subject, $body, $headers);
42
- SwpmLog::log_simple_debug('Member notification email sent to: '.$email, true);
43
 
44
  if ($settings->get_value('enable-admin-notification-after-reg')) {
45
  //Send notification email to the site admin
39
 
40
  //Send notification email to the member
41
  wp_mail(trim($email), $subject, $body, $headers);
42
+ SwpmLog::log_simple_debug('Member registration complete email sent to: '.$email.'. From email address value used: '.$from_address, true);
43
 
44
  if ($settings->get_value('enable-admin-notification-after-reg')) {
45
  //Send notification email to the site admin
classes/class.swpm-transactions.php CHANGED
@@ -18,7 +18,7 @@ class SwpmTransactions {
18
  $txn_data['last_name'] = $ipn_data['last_name'];
19
  $txn_data['last_name'] = $ipn_data['last_name'];
20
  $txn_data['ip_address'] = $ipn_data['ip'];
21
- $txn_data['member_id'] = $ipn_data['swpm_id'];
22
  $txn_data['membership_level'] = $custom_var['subsc_ref'];
23
 
24
  $txn_data['txn_date'] = $current_date;
18
  $txn_data['last_name'] = $ipn_data['last_name'];
19
  $txn_data['last_name'] = $ipn_data['last_name'];
20
  $txn_data['ip_address'] = $ipn_data['ip'];
21
+ $txn_data['member_id'] = $custom_var['swpm_id'];
22
  $txn_data['membership_level'] = $custom_var['subsc_ref'];
23
 
24
  $txn_data['txn_date'] = $current_date;
classes/class.swpm-utils-member.php CHANGED
@@ -58,7 +58,12 @@ class SwpmMemberUtils {
58
  return apply_filters('swpm_get_member_field_by_id', $default, $id, $field);
59
  }
60
 
61
-
 
 
 
 
 
62
  public static function get_user_by_id($swpm_id) {
63
  //Retrieves the SWPM user record for the given member ID
64
  global $wpdb;
@@ -86,5 +91,60 @@ class SwpmMemberUtils {
86
  public static function is_valid_user_name($user_name){
87
  return preg_match("/^[a-zA-Z0-9!@#$%&+\/=?^_`{|}~\.-]+$/", $user_name)== 1;
88
  }
89
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
58
  return apply_filters('swpm_get_member_field_by_id', $default, $id, $field);
59
  }
60
 
61
+ public static function get_expiry_date_timestamp_by_user_id($swpm_id){
62
+ $swpm_user = SwpmMemberUtils::get_user_by_id($swpm_id);
63
+ $expiry_timestamp = SwpmUtils::get_expiration_timestamp($swpm_user);
64
+ return $expiry_timestamp;
65
+ }
66
+
67
  public static function get_user_by_id($swpm_id) {
68
  //Retrieves the SWPM user record for the given member ID
69
  global $wpdb;
91
  public static function is_valid_user_name($user_name){
92
  return preg_match("/^[a-zA-Z0-9!@#$%&+\/=?^_`{|}~\.-]+$/", $user_name)== 1;
93
  }
94
+
95
+ /*
96
+ * Use this function to update or set account status of a member easily.
97
+ */
98
+ public static function update_account_state($member_id, $new_status = 'active') {
99
+ global $wpdb;
100
+ $members_table_name = $wpdb->prefix . "swpm_members_tbl";
101
+
102
+ SwpmLog::log_simple_debug("Updating the account status value of member (" . $member_id . ") to: " . $new_status, true);
103
+ $query = $wpdb->prepare("UPDATE $members_table_name SET account_state=%s WHERE member_id=%s", $new_status, $member_id);
104
+ $resultset = $wpdb->query($query);
105
+ }
106
+
107
+
108
+ /*
109
+ * Calculates the Access Starts date value considering the level and current expiry. Useful for after payment member profile update.
110
+ */
111
+ public static function calculate_access_start_date_for_account_update($args){
112
+ $swpm_id = $args['swpm_id'];
113
+ $membership_level = $args['membership_level'];
114
+ $old_membership_level = $args['old_membership_level'];
115
+
116
+ $subscription_starts = (date("Y-m-d"));
117
+ if($membership_level == $old_membership_level){
118
+ //Payment for the same membership level (renewal).
119
+
120
+ //Algorithm - ONLY set the $subscription_starts date to current expiry date if the current expiry date is in the future.
121
+ //Otherwise set $subscription_starts to TODAY.
122
+ $expiry_timestamp = SwpmMemberUtils::get_expiry_date_timestamp_by_user_id($swpm_id);
123
+ if($expiry_timestamp > time()){
124
+ //Account is not expired. Expiry date is in the future.
125
+ $level_row = SwpmUtils::get_membership_level_row_by_id($membership_level);
126
+ $subs_duration_type = $level_row->subscription_duration_type;
127
+ if($subs_duration_type == SwpmMembershipLevel::NO_EXPIRY){
128
+ //No expiry type level.
129
+ //Use todays date for $subscription_starts date parameter.
130
+ } else if ($subs_duration_type == SwpmMembershipLevel::FIXED_DATE){
131
+ //Fixed date expiry level.
132
+ //Use todays date for $subscription_starts date parameter.
133
+ } else {
134
+ //Duration expiry level.
135
+ //Set the $subscription_starts date to the current expiry date so the renewal time starts from then.
136
+ $subscription_starts = date('Y-m-d', $expiry_timestamp);
137
+ }
138
+ } else {
139
+ //Account is already expired.
140
+ //Use todays date for $subscription_starts date parameter.
141
+ }
142
+ } else {
143
+ //Payment for a NEW membership level (upgrade).
144
+ //Use todays date for $subscription_starts date parameter.
145
+ }
146
+
147
+ return $subscription_starts;
148
+ }
149
+
150
  }
classes/class.swpm-utils-membership-level.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * This class will contain various utility functions for the membership access level.
5
+ */
6
+
7
+ class SwpmMembershipLevelUtils {
8
+
9
+ }
classes/class.swpm-utils.php CHANGED
@@ -69,8 +69,7 @@ abstract class SwpmUtils {
69
  if (SwpmMembershipLevel::FIXED_DATE == $permission->get('subscription_duration_type')) {
70
  return strtotime($permission->get('subscription_period'));
71
  }
72
- $days = self::calculate_subscription_period_days(
73
- $permission->get('subscription_period'), $permission->get('subscription_duration_type'));
74
  if ($days == 'noexpire') {
75
  return PHP_INT_MAX; // which is equivalent to
76
  }
@@ -79,9 +78,33 @@ abstract class SwpmUtils {
79
 
80
  public static function is_subscription_expired($user) {
81
  $expiration_timestamp = SwpmUtils::get_expiration_timestamp($user);
82
- return $expiration_timestamp < time();
 
 
 
 
83
  }
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  public static function gender_dropdown($selected = 'not specified') {
86
  return '<option ' . ((strtolower($selected) == 'male') ? 'selected="selected"' : "") . ' value="male">Male</option>' .
87
  '<option ' . ((strtolower($selected) == 'female') ? 'selected="selected"' : "") . ' value="female">Female</option>' .
@@ -121,6 +144,13 @@ abstract class SwpmUtils {
121
  return $wpdb->get_col($query);
122
  }
123
 
 
 
 
 
 
 
 
124
  public static function membership_level_id_exists($level_id){
125
  //Returns true if the specified membership level exists in the system. Returns false if the level has been deleted (or doesn't exist).
126
  $all_level_ids = SwpmUtils::get_all_membership_level_ids();
@@ -191,8 +221,13 @@ abstract class SwpmUtils {
191
  if (in_array('administrator', array_keys((array) $caps))) {
192
  return;
193
  }
194
- do_action('set_user_role', $wp_user_id, $role); //Fire the action for other plugin(s)
 
 
 
 
195
  wp_update_user(array('ID' => $wp_user_id, 'role' => $role));
 
196
  $roles = new WP_Roles();
197
  $level = $roles->roles[$role]['capabilities'];
198
  if (isset($level['level_10']) && $level['level_10']) {
@@ -316,23 +351,6 @@ abstract class SwpmUtils {
316
  return current_user_can('manage_options');
317
  }
318
 
319
- public static function get_expire_date($start_date, $subscription_duration, $subscription_duration_type) {
320
- if ($subscription_duration_type == SwpmMembershipLevel::FIXED_DATE) {
321
- //Membership will expire after a fixed date.
322
- return SwpmUtils::get_formatted_date_according_to_wp_settings($subscription_duration);
323
- }
324
-
325
- $expires = self::calculate_subscription_period_days($subscription_duration, $subscription_duration_type);
326
- if ($expires == 'noexpire') {
327
- //Membership is set to no expiry or until cancelled.
328
- return SwpmUtils::_('Never');
329
- }
330
-
331
- //Membership is set to a duration expiry settings.
332
-
333
- return date(get_option('date_format'), strtotime($start_date . ' ' . $expires . ' days'));
334
- }
335
-
336
  /*
337
  * Formats the given date value according to the WP date format settings. This function is useful for displaying a human readable date value to the user.
338
  */
69
  if (SwpmMembershipLevel::FIXED_DATE == $permission->get('subscription_duration_type')) {
70
  return strtotime($permission->get('subscription_period'));
71
  }
72
+ $days = self::calculate_subscription_period_days($permission->get('subscription_period'), $permission->get('subscription_duration_type'));
 
73
  if ($days == 'noexpire') {
74
  return PHP_INT_MAX; // which is equivalent to
75
  }
78
 
79
  public static function is_subscription_expired($user) {
80
  $expiration_timestamp = SwpmUtils::get_expiration_timestamp($user);
81
+ if($expiration_timestamp < time()){
82
+ //Account expired.
83
+ return true;
84
+ }
85
+ return false;
86
  }
87
 
88
+ /*
89
+ * Returns a formatted expiry date string (of a member). This can be useful to echo the date value.
90
+ */
91
+ public static function get_formatted_expiry_date($start_date, $subscription_duration, $subscription_duration_type) {
92
+ if ($subscription_duration_type == SwpmMembershipLevel::FIXED_DATE) {
93
+ //Membership will expire after a fixed date.
94
+ return SwpmUtils::get_formatted_date_according_to_wp_settings($subscription_duration);
95
+ }
96
+
97
+ $expires = self::calculate_subscription_period_days($subscription_duration, $subscription_duration_type);
98
+ if ($expires == 'noexpire') {
99
+ //Membership is set to no expiry or until cancelled.
100
+ return SwpmUtils::_('Never');
101
+ }
102
+
103
+ //Membership is set to a duration expiry settings.
104
+
105
+ return date(get_option('date_format'), strtotime($start_date . ' ' . $expires . ' days'));
106
+ }
107
+
108
  public static function gender_dropdown($selected = 'not specified') {
109
  return '<option ' . ((strtolower($selected) == 'male') ? 'selected="selected"' : "") . ' value="male">Male</option>' .
110
  '<option ' . ((strtolower($selected) == 'female') ? 'selected="selected"' : "") . ' value="female">Female</option>' .
144
  return $wpdb->get_col($query);
145
  }
146
 
147
+ public static function get_membership_level_row_by_id($level_id){
148
+ global $wpdb;
149
+ $query = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id=%d", $level_id);
150
+ $level_resultset = $wpdb->get_row($query);
151
+ return $level_resultset;
152
+ }
153
+
154
  public static function membership_level_id_exists($level_id){
155
  //Returns true if the specified membership level exists in the system. Returns false if the level has been deleted (or doesn't exist).
156
  $all_level_ids = SwpmUtils::get_all_membership_level_ids();
221
  if (in_array('administrator', array_keys((array) $caps))) {
222
  return;
223
  }
224
+
225
+ //No need to trigger this action hook as the wp_update_user() function will trigger it automatically.
226
+ //$old_roles = array();
227
+ //do_action('set_user_role', $wp_user_id, $role, $old_roles); //Trigger the action hook for other plugin(s)
228
+
229
  wp_update_user(array('ID' => $wp_user_id, 'role' => $role));
230
+
231
  $roles = new WP_Roles();
232
  $level = $roles->roles[$role]['capabilities'];
233
  if (isset($level['level_10']) && $level['level_10']) {
351
  return current_user_can('manage_options');
352
  }
353
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
354
  /*
355
  * Formats the given date value according to the WP date format settings. This function is useful for displaying a human readable date value to the user.
356
  */
images/addons/swpm-aweber-integration-addon.png ADDED
Binary file
images/addons/swpm-member-payments-addon.png ADDED
Binary file
ipn/swpm_handle_pp_ipn.php CHANGED
@@ -57,21 +57,7 @@ class swpm_paypal_ipn_handler {
57
  }
58
 
59
  $custom = $this->ipn_data['custom'];
60
- $delimiter = "&";
61
- $customvariables = array();
62
- $namevaluecombos = explode($delimiter, $custom);
63
- foreach ($namevaluecombos as $keyval_unparsed)
64
- {
65
- $equalsignposition = strpos($keyval_unparsed, '=');
66
- if ($equalsignposition === false)
67
- {
68
- $customvariables[$keyval_unparsed] = '';
69
- continue;
70
- }
71
- $key = substr($keyval_unparsed, 0, $equalsignposition);
72
- $value = substr($keyval_unparsed, $equalsignposition + 1);
73
- $customvariables[$key] = $value;
74
- }
75
 
76
  //Handle refunds
77
  if ($gross_total < 0)
@@ -89,13 +75,13 @@ class swpm_paypal_ipn_handler {
89
 
90
  if (($transaction_type == "subscr_signup"))
91
  {
92
- $this->debug_log('Subscription signup IPN received... nothing to do here(handled by the subscription IPN handler)',true);
93
  // Code to handle the signup IPN for subscription
94
  $subsc_ref = $customvariables['subsc_ref'];
95
 
96
  if (!empty($subsc_ref))
97
  {
98
- $this->debug_log('swpm integration is being used... creating member account...',true);
99
  $swpm_id = $customvariables['swpm_id'];
100
  swpm_handle_subsc_signup_stand_alone($this->ipn_data,$subsc_ref,$this->ipn_data['subscr_id'],$swpm_id);
101
  //Handle customized subscription signup
@@ -105,8 +91,8 @@ class swpm_paypal_ipn_handler {
105
  else if (($transaction_type == "subscr_cancel") || ($transaction_type == "subscr_eot") || ($transaction_type == "subscr_failed"))
106
  {
107
  // Code to handle the IPN for subscription cancellation
 
108
  swpm_handle_subsc_cancel_stand_alone($this->ipn_data);
109
- $this->debug_log('Subscription cancellation IPN received... nothing to do here(handled by the subscription IPN handler)',true);
110
  return true;
111
  }
112
  else
@@ -163,11 +149,11 @@ class swpm_paypal_ipn_handler {
163
  }
164
  if ($transaction_type == "web_accept")
165
  {
166
- $this->debug_log('swpm integration is being used... creating member account...',true);
167
  swpm_handle_subsc_signup_stand_alone($this->ipn_data,$subsc_ref,$this->ipn_data['txn_id'],$swpm_id);
168
  }
169
  else if($transaction_type == "subscr_payment"){
170
- $this->debug_log('swpm subscr_payment type transaction. Checking if the member profile needed to be updated',true);
171
  swpm_update_member_subscription_start_date_if_applicable($this->ipn_data);
172
  }
173
  }
57
  }
58
 
59
  $custom = $this->ipn_data['custom'];
60
+ $customvariables = SwpmTransactions::parse_custom_var($custom);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  //Handle refunds
63
  if ($gross_total < 0)
75
 
76
  if (($transaction_type == "subscr_signup"))
77
  {
78
+ $this->debug_log('Subscription signup IPN received... (handled by the subscription IPN handler)',true);
79
  // Code to handle the signup IPN for subscription
80
  $subsc_ref = $customvariables['subsc_ref'];
81
 
82
  if (!empty($subsc_ref))
83
  {
84
+ $this->debug_log('Found a membership level ID. Creating member account...',true);
85
  $swpm_id = $customvariables['swpm_id'];
86
  swpm_handle_subsc_signup_stand_alone($this->ipn_data,$subsc_ref,$this->ipn_data['subscr_id'],$swpm_id);
87
  //Handle customized subscription signup
91
  else if (($transaction_type == "subscr_cancel") || ($transaction_type == "subscr_eot") || ($transaction_type == "subscr_failed"))
92
  {
93
  // Code to handle the IPN for subscription cancellation
94
+ $this->debug_log('Subscription cancellation IPN received... (handled by the subscription IPN handler)',true);
95
  swpm_handle_subsc_cancel_stand_alone($this->ipn_data);
 
96
  return true;
97
  }
98
  else
149
  }
150
  if ($transaction_type == "web_accept")
151
  {
152
+ $this->debug_log('Transaction type: web_accept. Creating member account...',true);
153
  swpm_handle_subsc_signup_stand_alone($this->ipn_data,$subsc_ref,$this->ipn_data['txn_id'],$swpm_id);
154
  }
155
  else if($transaction_type == "subscr_payment"){
156
+ $this->debug_log('Transaction type: subscr_payment. Checking if the member profile needed to be updated',true);
157
  swpm_update_member_subscription_start_date_if_applicable($this->ipn_data);
158
  }
159
  }
ipn/swpm_handle_subsc_ipn.php CHANGED
@@ -4,7 +4,6 @@ function swpm_handle_subsc_signup_stand_alone($ipn_data, $subsc_ref, $unique_ref
4
  global $wpdb;
5
  $settings = SwpmSettings::get_instance();
6
  $members_table_name = $wpdb->prefix . "swpm_members_tbl";
7
- $membership_level_table = $wpdb->prefix . "swpm_membership_tbl";
8
  $membership_level = $subsc_ref;
9
  $subscr_id = $unique_ref;
10
 
@@ -39,9 +38,8 @@ function swpm_handle_subsc_signup_stand_alone($ipn_data, $subsc_ref, $unique_ref
39
  swpm_debug_log_subsc("Modifying the existing membership profile... Member ID: " . $swpm_id, true);
40
 
41
  //Upgrade the member account
42
- $account_state = 'active'; //This is renewal or upgrade of a previously active account. So the status should be set to active
43
- $subscription_starts = (date("Y-m-d"));
44
-
45
  $resultset = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name where member_id=%d", $swpm_id), OBJECT);
46
  if (!$resultset) {
47
  swpm_debug_log_subsc("ERROR! Could not find a member account record for the given Member ID: " . $swpm_id, false);
@@ -49,7 +47,13 @@ function swpm_handle_subsc_signup_stand_alone($ipn_data, $subsc_ref, $unique_ref
49
  }
50
  $old_membership_level = $resultset->membership_level;
51
 
52
- swpm_debug_log_subsc("Upgrading the current membership level (" . $old_membership_level . ") of this member to the newly paid level (" . $membership_level . ")", true);
 
 
 
 
 
 
53
  $updatedb = $wpdb->prepare("UPDATE $members_table_name SET account_state=%s, membership_level=%d,subscription_starts=%s,subscr_id=%s WHERE member_id=%d", $account_state, $membership_level, $subscription_starts, $subscr_id, $swpm_id);
54
  $results = $wpdb->query($updatedb);
55
  do_action('swpm_membership_changed', array('member_id' => $swpm_id, 'from_level' => $old_membership_level, 'to_level' => $membership_level));
@@ -139,37 +143,88 @@ function swpm_handle_subsc_signup_stand_alone($ipn_data, $subsc_ref, $unique_ref
139
  swpm_debug_log_subsc("Member signup/upgrade completion email successfully sent to: " . $email, true);
140
  }
141
 
 
 
 
142
  function swpm_handle_subsc_cancel_stand_alone($ipn_data, $refund = false) {
143
- if ($refund) {
144
- $subscr_id = $ipn_data['parent_txn_id'];
145
- swpm_debug_log_subsc("Refund notification check - check if a member account needs to be deactivated... parent_txn_id: " . $ipn_data['parent_txn_id'], true);
146
- } else {
147
- $subscr_id = $ipn_data['subscr_id'];
148
- }
149
-
150
- if (empty($subscr_id)) {
151
- swpm_debug_log_subsc("No subscr_id associated with this transaction. Nothing to do here.", true);
152
- return;
153
- }
154
-
155
  global $wpdb;
156
  $members_table_name = $wpdb->prefix . "swpm_members_tbl";
 
 
 
157
 
158
- swpm_debug_log_subsc("Retrieving member account from the database. Subscr_id: " . $subscr_id, true);
159
- $resultset = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name where subscr_id=%s", $subscr_id), OBJECT);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  if ($resultset) {
161
- //Deactivate this account as it is a refund or cancellation
 
162
  $member_id = $resultset->member_id;
163
- $account_state = 'inactive';
164
- $updatedb = $wpdb->prepare("UPDATE $members_table_name SET account_state=%s WHERE member_id=%s", $account_state, $member_id);
165
- $resultset = $wpdb->query($updatedb);
166
- swpm_debug_log_subsc("Subscription cancellation received! Member account deactivated. Member ID: " . $member_id, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
 
168
  $ipn_data['member_id'] = $member_id;
169
  do_action('swpm_subscription_payment_cancelled', $ipn_data);//Hook for recurring payment received
170
 
171
  } else {
172
- swpm_debug_log_subsc("No member found for the given subscriber ID: " . $subscr_id, false);
173
  return;
174
  }
175
  }
@@ -177,13 +232,12 @@ function swpm_handle_subsc_cancel_stand_alone($ipn_data, $refund = false) {
177
  function swpm_update_member_subscription_start_date_if_applicable($ipn_data) {
178
  global $wpdb;
179
  $members_table_name = $wpdb->prefix . "swpm_members_tbl";
180
- $membership_level_table = $wpdb->prefix . "swpm_membership_tbl";
181
  $email = $ipn_data['payer_email'];
182
  $subscr_id = $ipn_data['subscr_id'];
183
  $account_state = SwpmSettings::get_instance()->get_value('default-account-status', 'active');
184
  swpm_debug_log_subsc("Updating subscription start date if applicable for this subscription payment. Subscriber ID: " . $subscr_id . " Email: " . $email, true);
185
 
186
- //We can also query using the email address
187
  $query_db = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name WHERE subscr_id = %s", $subscr_id), OBJECT);
188
  if ($query_db) {
189
  $swpm_id = $query_db->member_id;
@@ -199,7 +253,8 @@ function swpm_update_member_subscription_start_date_if_applicable($ipn_data) {
199
  $resultset = $wpdb->query($updatedb);
200
  swpm_debug_log_subsc("Updated the member profile with current date as the subscription start date.", true);
201
  } else {
202
- swpm_debug_log_subsc("Did not find a record in the members table for subscriber ID: " . $subscr_id, true);
 
203
  }
204
  }
205
 
@@ -213,7 +268,7 @@ function swpm_debug_log_subsc($message, $success, $end = false) {
213
  $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
214
 
215
  // Timestamp
216
- $text = '[' . date('m/d/Y g:i A') . '] - ' . (($success) ? 'SUCCESS :' : 'FAILURE :') . $message . "\n";
217
  if ($end) {
218
  $text .= "\n------------------------------------------------------------------\n\n";
219
  }
4
  global $wpdb;
5
  $settings = SwpmSettings::get_instance();
6
  $members_table_name = $wpdb->prefix . "swpm_members_tbl";
 
7
  $membership_level = $subsc_ref;
8
  $subscr_id = $unique_ref;
9
 
38
  swpm_debug_log_subsc("Modifying the existing membership profile... Member ID: " . $swpm_id, true);
39
 
40
  //Upgrade the member account
41
+ $account_state = 'active'; //This is renewal or upgrade of a previously active account. So the status should be set to active
42
+
 
43
  $resultset = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name where member_id=%d", $swpm_id), OBJECT);
44
  if (!$resultset) {
45
  swpm_debug_log_subsc("ERROR! Could not find a member account record for the given Member ID: " . $swpm_id, false);
47
  }
48
  $old_membership_level = $resultset->membership_level;
49
 
50
+ //If the payment is for the same/existing membership level, then this is a renewal. Refresh the start date as appropriate.
51
+ $args = array('swpm_id' => $swpm_id, 'membership_level' => $membership_level, 'old_membership_level' => $old_membership_level);
52
+ $subscription_starts = SwpmMemberUtils::calculate_access_start_date_for_account_update($args);
53
+ $subscription_starts = apply_filters('swpm_account_update_subscription_starts', $subscription_starts, $args);
54
+ swpm_debug_log_subsc("Setting access starts date value to: " . $subscription_starts, true);
55
+
56
+ swpm_debug_log_subsc("Updating the current membership level (" . $old_membership_level . ") of this member to the newly paid level (" . $membership_level . ")", true);
57
  $updatedb = $wpdb->prepare("UPDATE $members_table_name SET account_state=%s, membership_level=%d,subscription_starts=%s,subscr_id=%s WHERE member_id=%d", $account_state, $membership_level, $subscription_starts, $subscr_id, $swpm_id);
58
  $results = $wpdb->query($updatedb);
59
  do_action('swpm_membership_changed', array('member_id' => $swpm_id, 'from_level' => $old_membership_level, 'to_level' => $membership_level));
143
  swpm_debug_log_subsc("Member signup/upgrade completion email successfully sent to: " . $email, true);
144
  }
145
 
146
+ /*
147
+ * All in one function that can handle notification for refund, cancellation, end of term
148
+ */
149
  function swpm_handle_subsc_cancel_stand_alone($ipn_data, $refund = false) {
150
+
 
 
 
 
 
 
 
 
 
 
 
151
  global $wpdb;
152
  $members_table_name = $wpdb->prefix . "swpm_members_tbl";
153
+
154
+ $customvariables = SwpmTransactions::parse_custom_var($ipn_data['custom']);
155
+ $swpm_id = $customvariables['swpm_id'];
156
 
157
+ swpm_debug_log_subsc("Refund/Cancellation check - lets see if a member account needs to be deactivated.", true);
158
+ //swpm_debug_log_subsc("Parent txn id: " . $ipn_data['parent_txn_id'] . ", Subscr ID: " . $ipn_data['subscr_id'] . ", SWPM ID: " . $swpm_id, true);
159
+
160
+ if(!empty($swpm_id)){
161
+ //This IPN has the SWPM ID. Retrieve the member record using member ID.
162
+ swpm_debug_log_subsc("Member ID is present. Retrieving member account from the database. Member ID: " . $swpm_id, true);
163
+ $resultset = SwpmMemberUtils::get_user_by_id($swpm_id);
164
+ } else if (isset($ipn_data['subscr_id']) && !empty($ipn_data['subscr_id'])) {
165
+ //This IPN has the subscriber ID. Retrieve the member record using subscr_id.
166
+ $subscr_id = $ipn_data['subscr_id'];
167
+ swpm_debug_log_subsc("Subscriber ID is present. Retrieving member account from the database. Subscr_id: " . $subscr_id, true);
168
+ $resultset = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name where subscr_id=%s", $subscr_id), OBJECT);
169
+ } else {
170
+ //Refund for a one time transaction. Use the parent transaction ID to retrieve the profile.
171
+ $subscr_id = $ipn_data['parent_txn_id'];
172
+ $resultset = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name where subscr_id=%s", $subscr_id), OBJECT);
173
+ }
174
+
175
  if ($resultset) {
176
+ //We have found a member profile for this notification.
177
+
178
  $member_id = $resultset->member_id;
179
+
180
+ //First, check if this is a refund notification.
181
+ if ($refund) {
182
+ //This is a refund (not just a subscription cancellation or end). So deactivate the account regardless and bail.
183
+ SwpmMemberUtils::update_account_state($member_id, 'inactive');//Set the account status to inactive.
184
+ swpm_debug_log_subsc("Subscription refund notification received! Member account deactivated.", true);
185
+ return;
186
+ }
187
+
188
+ //This is a cancellation or end of subscription term (no refund).
189
+
190
+ //Lets retrieve the membership level and details
191
+ $level_id = $resultset->membership_level;
192
+ swpm_debug_log_subsc("Membership level ID of the member is: " . $level_id, true);
193
+ $level_row = SwpmUtils::get_membership_level_row_by_id($level_id);
194
+ $subs_duration_type = $level_row->subscription_duration_type;
195
+
196
+ if($subs_duration_type == SwpmMembershipLevel::NO_EXPIRY){
197
+ //This is a level with "no expiry" or "until cancelled" duration.
198
+ swpm_debug_log_subsc('This is a level with "no expiry" or "until cancelled" duration', true);
199
+
200
+ //Deactivate this account as the membership level is "no expiry" or "until cancelled".
201
+ $account_state = 'inactive';
202
+ SwpmMemberUtils::update_account_state($member_id, $account_state);
203
+ swpm_debug_log_subsc("Subscription cancellation or end of term received! Member account deactivated. Member ID: " . $member_id, true);
204
+
205
+ } else if ($subs_duration_type == SwpmMembershipLevel::FIXED_DATE){
206
+ //This is a level with a "fixed expiry date" duration.
207
+ swpm_debug_log_subsc('This is a level with a "fixed expiry date" duration.', true);
208
+ swpm_debug_log_subsc('Nothing to do here. The account will expire on the fixed set date.', true);
209
+
210
+ } else {
211
+ //This is a level with "duration" type expiry (example: 30 days, 1 year etc). subscription_period has the duration/period.
212
+ $subs_period = $level_row->subscription_period;
213
+ $subs_period_unit = SwpmMembershipLevel::get_level_duration_type_string($level_row->subscription_duration_type);
214
+
215
+ swpm_debug_log_subsc('This is a level with "duration" type expiry. Duration period: ' . $subs_period . ', Unit: ' . $subs_period_unit, true);
216
+ swpm_debug_log_subsc('Nothing to do here. The account will expire after the duration time is over.', true);
217
+
218
+ //TODO Later as an improvement. If you wanted to segment the members who have unsubscribed, you can set the account status to "unsubscribed" here.
219
+ //Make sure the cronjob to do expiry check and deactivate the member accounts treat this status as if it is "active".
220
+
221
+ }
222
 
223
  $ipn_data['member_id'] = $member_id;
224
  do_action('swpm_subscription_payment_cancelled', $ipn_data);//Hook for recurring payment received
225
 
226
  } else {
227
+ swpm_debug_log_subsc("No associated active member record found for this notification.", false);
228
  return;
229
  }
230
  }
232
  function swpm_update_member_subscription_start_date_if_applicable($ipn_data) {
233
  global $wpdb;
234
  $members_table_name = $wpdb->prefix . "swpm_members_tbl";
 
235
  $email = $ipn_data['payer_email'];
236
  $subscr_id = $ipn_data['subscr_id'];
237
  $account_state = SwpmSettings::get_instance()->get_value('default-account-status', 'active');
238
  swpm_debug_log_subsc("Updating subscription start date if applicable for this subscription payment. Subscriber ID: " . $subscr_id . " Email: " . $email, true);
239
 
240
+ //We can also query using the email address or SWPM ID (if present in custom var).
241
  $query_db = $wpdb->get_row($wpdb->prepare("SELECT * FROM $members_table_name WHERE subscr_id = %s", $subscr_id), OBJECT);
242
  if ($query_db) {
243
  $swpm_id = $query_db->member_id;
253
  $resultset = $wpdb->query($updatedb);
254
  swpm_debug_log_subsc("Updated the member profile with current date as the subscription start date.", true);
255
  } else {
256
+ swpm_debug_log_subsc("Did not find an existing record in the members table for subscriber ID: " . $subscr_id, true);
257
+ swpm_debug_log_subsc("This is a new subscription payment for a new subscription agreement.", true);
258
  }
259
  }
260
 
268
  $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
269
 
270
  // Timestamp
271
+ $text = '[' . date('m/d/Y g:i A') . '] - ' . (($success) ? 'SUCCESS: ' : 'FAILURE: ') . $message . "\n";
272
  if ($end) {
273
  $text .= "\n------------------------------------------------------------------\n\n";
274
  }
languages/swpm-it_IT.mo ADDED
Binary file
languages/swpm-it_IT.po ADDED
@@ -0,0 +1,1334 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: simple membership\n"
4
+ "POT-Creation-Date: 2016-09-25 10:11+0200\n"
5
+ "PO-Revision-Date: 2016-09-25 10:51+0200\n"
6
+ "Language-Team: \n"
7
+ "MIME-Version: 1.0\n"
8
+ "Content-Type: text/plain; charset=UTF-8\n"
9
+ "Content-Transfer-Encoding: 8bit\n"
10
+ "X-Generator: Poedit 1.8.8\n"
11
+ "X-Poedit-KeywordsList: __;_e\n"
12
+ "X-Poedit-Basepath: .\n"
13
+ "Last-Translator: \n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "Language: it_IT\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ #: classes/class.simple-wp-membership.php:264
19
+ msgid "You are not logged in."
20
+ msgstr "Non hai effettuato l'accesso"
21
+
22
+ #: classes/class.simple-wp-membership.php:298
23
+ msgid "Simple WP Membership Protection"
24
+ msgstr ""
25
+
26
+ #: classes/class.simple-wp-membership.php:310
27
+ msgid "Simple Membership Protection options"
28
+ msgstr "Opzioni Simple Membership Protection"
29
+
30
+ #: classes/class.simple-wp-membership.php:326
31
+ msgid "Do you want to protect this content?"
32
+ msgstr "Proteggi il contenuto"
33
+
34
+ #: classes/class.simple-wp-membership.php:331
35
+ msgid "Select the membership level that can access this content:"
36
+ msgstr "Seleziona il livello utente che può accedere a questo contentuto"
37
+
38
+ #: classes/class.simple-wp-membership.php:464
39
+ msgid "WP Membership"
40
+ msgstr ""
41
+
42
+ #: classes/class.simple-wp-membership.php:465 classes/class.swpm-members.php:10
43
+ #: views/admin_members_menu.php:2
44
+ msgid "Members"
45
+ msgstr "Iscritti"
46
+
47
+ #: classes/class.simple-wp-membership.php:466
48
+ #: classes/class.swpm-category-list.php:20
49
+ #: classes/class.swpm-membership-levels.php:11
50
+ msgid "Membership Levels"
51
+ msgstr "Livelli di iscrizione"
52
+
53
+ #: classes/class.simple-wp-membership.php:467
54
+ msgid "Settings"
55
+ msgstr "Impostazioni"
56
+
57
+ #: classes/class.simple-wp-membership.php:468
58
+ msgid "Payments"
59
+ msgstr "Pagamenti"
60
+
61
+ #: classes/class.simple-wp-membership.php:469
62
+ msgid "Add-ons"
63
+ msgstr ""
64
+
65
+ #: classes/class.swpm-access-control.php:21
66
+ #: classes/class.swpm-access-control.php:28
67
+ #: classes/class.swpm-access-control.php:55
68
+ msgid "You need to login to view this content. "
69
+ msgstr "Per visualizzare questo contenuto devi essere registrato."
70
+
71
+ #: classes/class.swpm-access-control.php:34
72
+ #: classes/class.swpm-access-control.php:60
73
+ msgid ""
74
+ "Your account has expired. Please renew your account to gain access to this "
75
+ "content."
76
+ msgstr ""
77
+ "Il tuo abbonamento è scaduto. Rinnovalo per accedere a questo contenuto."
78
+
79
+ #: classes/class.swpm-access-control.php:41
80
+ msgid "This content can only be viewed by members who joined on or before "
81
+ msgstr "Per visualizzare questo contenuto devi essere registrato."
82
+
83
+ #: classes/class.swpm-access-control.php:46
84
+ #: classes/class.swpm-access-control.php:66
85
+ msgid "This content is not permitted for your membership level."
86
+ msgstr "Questo contenuto è riservato a un livello d'iscrizione superiore."
87
+
88
+ #: classes/class.swpm-access-control.php:84
89
+ msgid " The rest of the content is not permitted for your membership level."
90
+ msgstr ""
91
+ "Il resto del contenuto è riservato a un livello d'iscrizione superiore."
92
+
93
+ #: classes/class.swpm-access-control.php:88
94
+ #: classes/class.swpm-access-control.php:106
95
+ msgid "You need to login to view the rest of the content. "
96
+ msgstr "Per visualizzare tutto il contenuto devi effettuare l'accesso."
97
+
98
+ #: classes/class.swpm-admin-registration.php:54
99
+ msgid "Member record added successfully."
100
+ msgstr ""
101
+
102
+ #: classes/class.swpm-admin-registration.php:59
103
+ #: classes/class.swpm-admin-registration.php:81
104
+ #: classes/class.swpm-admin-registration.php:105
105
+ #: classes/class.swpm-membership-level.php:43
106
+ #: classes/class.swpm-membership-level.php:62
107
+ msgid "Please correct the following:"
108
+ msgstr "Per favore, correggere i seguenti errori:"
109
+
110
+ #: classes/class.swpm-admin-registration.php:96
111
+ msgid "Your current password"
112
+ msgstr "La tua password attuale:"
113
+
114
+ #: classes/class.swpm-ajax.php:14
115
+ msgid "Invalid Email Address"
116
+ msgstr "Indirizzo e-mail non valido."
117
+
118
+ #: classes/class.swpm-ajax.php:21 classes/class.swpm-ajax.php:36
119
+ msgid "Aready taken"
120
+ msgstr ""
121
+
122
+ #: classes/class.swpm-ajax.php:30
123
+ msgid "Name contains invalid character"
124
+ msgstr "Il nome contiene caratteri non validi."
125
+
126
+ #: classes/class.swpm-ajax.php:37
127
+ msgid "Available"
128
+ msgstr "Disponibile"
129
+
130
+ #: classes/class.swpm-auth.php:50
131
+ msgid "User Not Found."
132
+ msgstr "Nessun utente trovato con questo indirizzo e-mail."
133
+
134
+ #: classes/class.swpm-auth.php:57
135
+ msgid "Password Empty or Invalid."
136
+ msgstr "Campo password vuoto o non valido"
137
+
138
+ #: classes/class.swpm-auth.php:82
139
+ msgid "Account is inactive."
140
+ msgstr "L'account è disattivo."
141
+
142
+ #: classes/class.swpm-auth.php:85
143
+ msgid "Account is pending."
144
+ msgstr ""
145
+
146
+ #: classes/class.swpm-auth.php:88 classes/class.swpm-auth.php:106
147
+ msgid "Account has expired."
148
+ msgstr "L'account è scaduto."
149
+
150
+ #: classes/class.swpm-auth.php:114
151
+ msgid "You are logged in as:"
152
+ msgstr "Sei loggato come:"
153
+
154
+ #: classes/class.swpm-auth.php:160
155
+ msgid "Logged Out Successfully."
156
+ msgstr ""
157
+
158
+ #: classes/class.swpm-auth.php:210
159
+ msgid "Session Expired."
160
+ msgstr "Sessione scaduta."
161
+
162
+ #: classes/class.swpm-auth.php:219
163
+ msgid "Invalid Username"
164
+ msgstr "Username non valido."
165
+
166
+ #: classes/class.swpm-auth.php:227
167
+ msgid "Please login again."
168
+ msgstr "Per favore esegui di nuovo l'accesso."
169
+
170
+ #: classes/class.swpm-category-list.php:19 classes/class.swpm-members.php:23
171
+ #: classes/class.swpm-membership-levels.php:10
172
+ #: classes/class.swpm-membership-levels.php:20
173
+ #: classes/admin-includes/class.swpm-payments-list-table.php:80
174
+ #: views/add.php:30 views/admin_member_form_common_part.php:2 views/edit.php:53
175
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:36
176
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:217
177
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:37
178
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:310
179
+ msgid "Membership Level"
180
+ msgstr "Livello d'iscrizione"
181
+
182
+ #: classes/class.swpm-category-list.php:33 classes/class.swpm-members.php:18
183
+ #: classes/class.swpm-membership-levels.php:19
184
+ msgid "ID"
185
+ msgstr ""
186
+
187
+ #: classes/class.swpm-category-list.php:34
188
+ msgid "Name"
189
+ msgstr "Nome"
190
+
191
+ #: classes/class.swpm-category-list.php:35
192
+ msgid "Description"
193
+ msgstr "Descrizione"
194
+
195
+ #: classes/class.swpm-category-list.php:36
196
+ msgid "Count"
197
+ msgstr ""
198
+
199
+ #: classes/class.swpm-category-list.php:80
200
+ msgid "Category protection updated!"
201
+ msgstr ""
202
+
203
+ #: classes/class.swpm-form.php:26
204
+ msgid ""
205
+ "Wordpress account exists with given username. But given email doesn't match."
206
+ msgstr ""
207
+ "Un account Wordpress con questo nome esiste già, ma non combacia con l'email "
208
+ "fornita."
209
+
210
+ #: classes/class.swpm-form.php:31
211
+ msgid ""
212
+ "Wordpress account exists with given email. But given username doesn't match."
213
+ msgstr ""
214
+ "Un account Wordpress con questa e-mail esiste già, ma non combacia con il "
215
+ "nome utente fornito."
216
+
217
+ #: classes/class.swpm-form.php:40
218
+ msgid "Username is required"
219
+ msgstr "Nome utente richiesto"
220
+
221
+ #: classes/class.swpm-form.php:44
222
+ msgid "Username contains invalid character"
223
+ msgstr "Il nome contiene caratteri non validi."
224
+
225
+ #: classes/class.swpm-form.php:52
226
+ msgid "Username already exists."
227
+ msgstr "Username già esistente."
228
+
229
+ #: classes/class.swpm-form.php:75
230
+ msgid "Password is required"
231
+ msgstr "Password richiesta"
232
+
233
+ #: classes/class.swpm-form.php:82
234
+ msgid "Password mismatch"
235
+ msgstr "La password non combacia."
236
+
237
+ #: classes/class.swpm-form.php:93
238
+ msgid "Email is required"
239
+ msgstr "E-mail richiesta"
240
+
241
+ #: classes/class.swpm-form.php:97
242
+ msgid "Email is invalid"
243
+ msgstr "Indirizzo e-mail non valido."
244
+
245
+ #: classes/class.swpm-form.php:113
246
+ msgid "Email is already used."
247
+ msgstr "Indirizzo e-mail già in uso."
248
+
249
+ #: classes/class.swpm-form.php:170
250
+ msgid "Member since field is invalid"
251
+ msgstr ""
252
+
253
+ #: classes/class.swpm-form.php:181
254
+ msgid "Access starts field is invalid"
255
+ msgstr ""
256
+
257
+ #: classes/class.swpm-form.php:191
258
+ msgid "Gender field is invalid"
259
+ msgstr ""
260
+
261
+ #: classes/class.swpm-form.php:202
262
+ msgid "Account state field is invalid"
263
+ msgstr ""
264
+
265
+ #: classes/class.swpm-form.php:209
266
+ msgid "Invalid membership level"
267
+ msgstr ""
268
+
269
+ #: classes/class.swpm-front-registration.php:71
270
+ msgid "Security check: captcha validation failed."
271
+ msgstr ""
272
+
273
+ #: classes/class.swpm-front-registration.php:80
274
+ msgid "Registration Successful. "
275
+ msgstr "Registrazione completata."
276
+
277
+ #: classes/class.swpm-front-registration.php:80
278
+ #: classes/class.swpm-settings.php:377
279
+ msgid "Please"
280
+ msgstr "Per favore"
281
+
282
+ #: classes/class.swpm-front-registration.php:80
283
+ #: classes/class.swpm-settings.php:377 views/login.php:21
284
+ msgid "Login"
285
+ msgstr ""
286
+
287
+ #: classes/class.swpm-front-registration.php:92
288
+ #: classes/class.swpm-front-registration.php:179
289
+ msgid "Please correct the following"
290
+ msgstr "Per favore, correggere i seguenti errori:"
291
+
292
+ #: classes/class.swpm-front-registration.php:123
293
+ msgid "Membership Level Couldn't be found."
294
+ msgstr ""
295
+
296
+ #: classes/class.swpm-front-registration.php:162
297
+ msgid "Profile updated successfully."
298
+ msgstr "Profilo aggiornato con successo."
299
+
300
+ #: classes/class.swpm-front-registration.php:170
301
+ msgid ""
302
+ "Profile updated successfully. You will need to re-login since you changed "
303
+ "your password."
304
+ msgstr ""
305
+ "Profilo aggiornato con successo. Se hai cambiato la password dovrai "
306
+ "effettuare nuovamente l'accesso."
307
+
308
+ #: classes/class.swpm-front-registration.php:189
309
+ msgid "Email address not valid."
310
+ msgstr "Indirizzo e-mail non valido."
311
+
312
+ #: classes/class.swpm-front-registration.php:200
313
+ msgid "No user found with that email address."
314
+ msgstr "Nessun utente trovato con questo indirizzo e-mail."
315
+
316
+ #: classes/class.swpm-front-registration.php:201
317
+ #: classes/class.swpm-front-registration.php:225
318
+ msgid "Email Address: "
319
+ msgstr "Indirizzo e-mail:"
320
+
321
+ #: classes/class.swpm-front-registration.php:224
322
+ msgid "New password has been sent to your email address."
323
+ msgstr ""
324
+ "La tua nuova password è stata inviata all'indirizzo email che ci hai fornito."
325
+
326
+ #: classes/class.swpm-init-time-tasks.php:108
327
+ msgid "Sorry, Nonce verification failed."
328
+ msgstr ""
329
+
330
+ #: classes/class.swpm-init-time-tasks.php:115
331
+ msgid "Sorry, Password didn't match."
332
+ msgstr "La password non combacia."
333
+
334
+ #: classes/class.swpm-level-form.php:47
335
+ msgid "Date format is not valid."
336
+ msgstr ""
337
+
338
+ #: classes/class.swpm-level-form.php:55
339
+ msgid "Access duration must be > 0."
340
+ msgstr ""
341
+
342
+ #: classes/class.swpm-member-utils.php:22
343
+ #: classes/class.swpm-member-utils.php:30
344
+ #: classes/class.swpm-member-utils.php:38
345
+ #: classes/class.swpm-member-utils.php:48
346
+ msgid "User is not logged in."
347
+ msgstr "Non hai effettuato l'accesso"
348
+
349
+ #: classes/class.swpm-members.php:9
350
+ msgid "Member"
351
+ msgstr ""
352
+
353
+ #: classes/class.swpm-members.php:19 views/add.php:6 views/admin_add.php:11
354
+ #: views/admin_edit.php:9 views/edit.php:5 views/login.php:5
355
+ msgid "Username"
356
+ msgstr ""
357
+
358
+ #: classes/class.swpm-members.php:20
359
+ #: classes/admin-includes/class.swpm-payments-list-table.php:74
360
+ #: views/add.php:22 views/admin_member_form_common_part.php:15
361
+ #: views/edit.php:21
362
+ msgid "First Name"
363
+ msgstr "Nome"
364
+
365
+ #: classes/class.swpm-members.php:21
366
+ #: classes/admin-includes/class.swpm-payments-list-table.php:75
367
+ #: views/add.php:26 views/admin_member_form_common_part.php:19
368
+ #: views/edit.php:25
369
+ msgid "Last Name"
370
+ msgstr "Cognome"
371
+
372
+ #: classes/class.swpm-members.php:22 views/add.php:10 views/edit.php:9
373
+ msgid "Email"
374
+ msgstr "Indirizzo e-mail:"
375
+
376
+ #: classes/class.swpm-members.php:24 views/admin_member_form_common_part.php:11
377
+ msgid "Access Starts"
378
+ msgstr ""
379
+
380
+ #: classes/class.swpm-members.php:25
381
+ msgid "Account State"
382
+ msgstr ""
383
+
384
+ #: classes/class.swpm-members.php:41
385
+ #: classes/class.swpm-membership-levels.php:35
386
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:80
387
+ #: classes/admin-includes/class.swpm-payments-list-table.php:95
388
+ msgid "Delete"
389
+ msgstr "Cancella"
390
+
391
+ #: classes/class.swpm-members.php:42
392
+ msgid "Set Status to Active"
393
+ msgstr "Imposta lo stato in \"Attivo\""
394
+
395
+ #: classes/class.swpm-members.php:44
396
+ msgid "Set Status to Inactive"
397
+ msgstr "Imposta lo stato in \"Disattivo\""
398
+
399
+ #: classes/class.swpm-members.php:45
400
+ msgid "Set Status to Pending"
401
+ msgstr "Imposta lo stato in \"In attesa\""
402
+
403
+ #: classes/class.swpm-members.php:46
404
+ msgid "Set Status to Expired"
405
+ msgstr "Imposta lo stato in \"Scaduto\""
406
+
407
+ #: classes/class.swpm-members.php:121
408
+ msgid "No Member found."
409
+ msgstr ""
410
+
411
+ #: classes/class.swpm-membership-level.php:38
412
+ msgid "Membership Level Creation Successful."
413
+ msgstr ""
414
+
415
+ #: classes/class.swpm-membership-level.php:57
416
+ msgid "Updated Successfully."
417
+ msgstr "Aggiornato con successo."
418
+
419
+ #: classes/class.swpm-membership-levels.php:21
420
+ msgid "Role"
421
+ msgstr "Ruolo"
422
+
423
+ #: classes/class.swpm-membership-levels.php:22
424
+ msgid "Access Valid For/Until"
425
+ msgstr ""
426
+
427
+ #: classes/class.swpm-misc-utils.php:50
428
+ msgid "Registration"
429
+ msgstr "Registrazione"
430
+
431
+ #: classes/class.swpm-misc-utils.php:73
432
+ msgid "Member Login"
433
+ msgstr ""
434
+
435
+ #: classes/class.swpm-misc-utils.php:96
436
+ msgid "Profile"
437
+ msgstr "Profilo"
438
+
439
+ #: classes/class.swpm-misc-utils.php:119
440
+ msgid "Password Reset"
441
+ msgstr "Crea una nuova password"
442
+
443
+ #: classes/class.swpm-settings.php:21 classes/class.swpm-settings.php:39
444
+ msgid "General Settings"
445
+ msgstr "Impostazioni generali"
446
+
447
+ #: classes/class.swpm-settings.php:21
448
+ msgid "Payment Settings"
449
+ msgstr "Impostazioni di pagamento"
450
+
451
+ #: classes/class.swpm-settings.php:22
452
+ msgid "Email Settings"
453
+ msgstr "Impostazioni e-mail"
454
+
455
+ #: classes/class.swpm-settings.php:22
456
+ msgid "Tools"
457
+ msgstr "Strumenti"
458
+
459
+ #: classes/class.swpm-settings.php:22 classes/class.swpm-settings.php:150
460
+ msgid "Advanced Settings"
461
+ msgstr "Impostazioni avanzate"
462
+
463
+ #: classes/class.swpm-settings.php:22
464
+ msgid "Addons Settings"
465
+ msgstr "Impostazioni aggiuntive"
466
+
467
+ #: classes/class.swpm-settings.php:38
468
+ msgid "Plugin Documentation"
469
+ msgstr "Documentazione plugin"
470
+
471
+ #: classes/class.swpm-settings.php:40
472
+ msgid "Enable Free Membership"
473
+ msgstr "Consenti iscrizione gratuita"
474
+
475
+ #: classes/class.swpm-settings.php:41
476
+ msgid ""
477
+ "Enable/disable registration for free membership level. When you enable this "
478
+ "option, make sure to specify a free membership level ID in the field below."
479
+ msgstr ""
480
+
481
+ #: classes/class.swpm-settings.php:42
482
+ msgid "Free Membership Level ID"
483
+ msgstr ""
484
+
485
+ #: classes/class.swpm-settings.php:43
486
+ msgid "Assign free membership level ID"
487
+ msgstr ""
488
+
489
+ #: classes/class.swpm-settings.php:44
490
+ msgid "Enable More Tag Protection"
491
+ msgstr ""
492
+
493
+ #: classes/class.swpm-settings.php:45
494
+ msgid ""
495
+ "Enables or disables \"more\" tag protection in the posts and pages. Anything "
496
+ "after the More tag is protected. Anything before the more tag is teaser "
497
+ "content."
498
+ msgstr ""
499
+ "Abilita o disabilita il tag di protezione \"more\" nei post e nelle pagine. "
500
+ "Tutto quello che segue il tag \"more\" è protetto. Il contenuto sopra al tag "
501
+ "\"more\" è invece fornito in anteprima."
502
+
503
+ #: classes/class.swpm-settings.php:46
504
+ msgid "Hide Adminbar"
505
+ msgstr "Nascondi la barra d'amministrazione"
506
+
507
+ #: classes/class.swpm-settings.php:47
508
+ msgid ""
509
+ "WordPress shows an admin toolbar to the logged in users of the site. Check "
510
+ "this box if you want to hide that admin toolbar in the fronend of your site."
511
+ msgstr ""
512
+ "WordPress mostra la barra dell'amministratore agli utenti che hanno "
513
+ "effettuato l'accesso. Spunta questa casella se vuoi nascondere la barra nel "
514
+ "front-end."
515
+
516
+ #: classes/class.swpm-settings.php:49
517
+ msgid "Default Account Status"
518
+ msgstr ""
519
+
520
+ #: classes/class.swpm-settings.php:52
521
+ msgid ""
522
+ "Select the default account status for newly registered users. If you want to "
523
+ "manually approve the members then you can set the status to \"Pending\"."
524
+ msgstr ""
525
+ "Selezione lo stato di default dell'account per i nuovi utenti registrati. Se "
526
+ "desideri approvare manualmente le nuove iscrizioni, seleziona \"In attesa\"."
527
+
528
+ #: classes/class.swpm-settings.php:53
529
+ msgid "Allow Account Deletion"
530
+ msgstr "Consenti la cancellazione dell'account"
531
+
532
+ #: classes/class.swpm-settings.php:55
533
+ msgid "Allow users to delete their accounts."
534
+ msgstr "Consenti agli utenti di cancellare i loro account."
535
+
536
+ #: classes/class.swpm-settings.php:56
537
+ msgid "Auto Delete Pending Account"
538
+ msgstr "Cancella automaticamente gli account pendenti."
539
+
540
+ #: classes/class.swpm-settings.php:59
541
+ msgid "Select how long you want to keep \"pending\" account."
542
+ msgstr ""
543
+ "Seleziona quanto a lungo un account può restare nello stato \"in attesa\"."
544
+
545
+ #: classes/class.swpm-settings.php:67
546
+ msgid "Pages Settings"
547
+ msgstr "Impostazioni di pagina"
548
+
549
+ #: classes/class.swpm-settings.php:68
550
+ msgid "Login Page URL"
551
+ msgstr ""
552
+
553
+ #: classes/class.swpm-settings.php:70
554
+ msgid "Registration Page URL"
555
+ msgstr ""
556
+
557
+ #: classes/class.swpm-settings.php:72
558
+ msgid "Join Us Page URL"
559
+ msgstr ""
560
+
561
+ #: classes/class.swpm-settings.php:74
562
+ msgid "Edit Profile Page URL"
563
+ msgstr ""
564
+
565
+ #: classes/class.swpm-settings.php:76
566
+ msgid "Password Reset Page URL"
567
+ msgstr ""
568
+
569
+ #: classes/class.swpm-settings.php:79
570
+ msgid "Test & Debug Settings"
571
+ msgstr "Impostazioni di test e debug"
572
+
573
+ #: classes/class.swpm-settings.php:81
574
+ msgid "Check this option to enable debug logging."
575
+ msgstr ""
576
+
577
+ #: classes/class.swpm-settings.php:86
578
+ msgid "Enable Sandbox Testing"
579
+ msgstr ""
580
+
581
+ #: classes/class.swpm-settings.php:87
582
+ msgid "Enable this option if you want to do sandbox payment testing."
583
+ msgstr ""
584
+
585
+ #: classes/class.swpm-settings.php:97 classes/class.swpm-settings.php:145
586
+ #: classes/class.swpm-settings.php:243
587
+ msgid "Settings updated!"
588
+ msgstr "Impostazioni aggiornate!"
589
+
590
+ #: classes/class.swpm-settings.php:102
591
+ msgid "Email Misc. Settings"
592
+ msgstr ""
593
+
594
+ #: classes/class.swpm-settings.php:103
595
+ msgid "From Email Address"
596
+ msgstr ""
597
+
598
+ #: classes/class.swpm-settings.php:106
599
+ msgid "Email Settings (Prompt to Complete Registration )"
600
+ msgstr ""
601
+
602
+ #: classes/class.swpm-settings.php:107 classes/class.swpm-settings.php:113
603
+ #: classes/class.swpm-settings.php:125 classes/class.swpm-settings.php:132
604
+ msgid "Email Subject"
605
+ msgstr "Oggetto della mail"
606
+
607
+ #: classes/class.swpm-settings.php:109 classes/class.swpm-settings.php:115
608
+ #: classes/class.swpm-settings.php:127 classes/class.swpm-settings.php:134
609
+ msgid "Email Body"
610
+ msgstr "Corpo della mail"
611
+
612
+ #: classes/class.swpm-settings.php:112
613
+ msgid "Email Settings (Registration Complete)"
614
+ msgstr ""
615
+
616
+ #: classes/class.swpm-settings.php:117
617
+ msgid "Send Notification to Admin"
618
+ msgstr "Invia una notifica all'amministratore"
619
+
620
+ #: classes/class.swpm-settings.php:118
621
+ msgid ""
622
+ "Enable this option if you want the admin to receive a notification when a "
623
+ "member registers."
624
+ msgstr ""
625
+ "Spunta quest'opzione se desideri che l'amministratore riceva una notifica "
626
+ "per ogni nuova iscrizione."
627
+
628
+ #: classes/class.swpm-settings.php:119
629
+ msgid "Admin Email Address"
630
+ msgstr ""
631
+
632
+ #: classes/class.swpm-settings.php:120
633
+ msgid ""
634
+ "Enter the email address where you want the admin notification email to be "
635
+ "sent to."
636
+ msgstr ""
637
+ "Inserisci l'indirizzo e-mail a cui inviare le mail di notifica "
638
+ "dell'amministratore."
639
+
640
+ #: classes/class.swpm-settings.php:121
641
+ msgid "Send Email to Member When Added via Admin Dashboard"
642
+ msgstr ""
643
+
644
+ #: classes/class.swpm-settings.php:124
645
+ msgid "Email Settings (Password Reset)"
646
+ msgstr ""
647
+
648
+ #: classes/class.swpm-settings.php:131
649
+ msgid " Email Settings (Account Upgrade Notification)"
650
+ msgstr ""
651
+
652
+ #: classes/class.swpm-settings.php:152
653
+ msgid "Enable Expired Account Login"
654
+ msgstr ""
655
+
656
+ #: classes/class.swpm-settings.php:153
657
+ msgid ""
658
+ "When enabled, expired members will be able to log into the system but won't "
659
+ "be able to view any protected content. This allows them to easily renew "
660
+ "their account by making another payment."
661
+ msgstr ""
662
+
663
+ #: classes/class.swpm-settings.php:377
664
+ msgid "Not a Member?"
665
+ msgstr "Non sei iscritto?"
666
+
667
+ #: classes/class.swpm-settings.php:377 views/login.php:27
668
+ msgid "Join Us"
669
+ msgstr "Registrati ora"
670
+
671
+ #: classes/class.swpm-utils.php:67
672
+ msgid "Active"
673
+ msgstr "Attivo"
674
+
675
+ #: classes/class.swpm-utils.php:68
676
+ msgid "Inactive"
677
+ msgstr "Disattivo"
678
+
679
+ #: classes/class.swpm-utils.php:69
680
+ msgid "Pending"
681
+ msgstr "In attesa"
682
+
683
+ #: classes/class.swpm-utils.php:70
684
+ msgid "Expired"
685
+ msgstr "Scaduto"
686
+
687
+ #: classes/class.swpm-utils.php:297
688
+ msgid "Never"
689
+ msgstr "Mai"
690
+
691
+ #: classes/class.swpm-utils.php:371
692
+ msgid "Delete Account"
693
+ msgstr "Cancella account"
694
+
695
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:63
696
+ msgid "Payment Button ID"
697
+ msgstr ""
698
+
699
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:64
700
+ msgid "Payment Button Title"
701
+ msgstr ""
702
+
703
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:65
704
+ msgid "Membership Level ID"
705
+ msgstr ""
706
+
707
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:66
708
+ msgid "Button Shortcode"
709
+ msgstr ""
710
+
711
+ #: classes/admin-includes/class.swpm-payment-buttons-list-table.php:106
712
+ #: views/admin_members_list.php:15
713
+ #: views/payments/admin_all_payment_transactions.php:33
714
+ msgid "The selected entry was deleted!"
715
+ msgstr ""
716
+
717
+ #: classes/admin-includes/class.swpm-payments-list-table.php:53
718
+ msgid "View Profile"
719
+ msgstr "Visualizza profilo"
720
+
721
+ #: classes/admin-includes/class.swpm-payments-list-table.php:72
722
+ msgid "Row ID"
723
+ msgstr ""
724
+
725
+ #: classes/admin-includes/class.swpm-payments-list-table.php:73
726
+ #: views/forgot_password.php:5
727
+ msgid "Email Address"
728
+ msgstr "Indirizzo e-mail"
729
+
730
+ #: classes/admin-includes/class.swpm-payments-list-table.php:76
731
+ msgid "Member Profile"
732
+ msgstr "Profilo"
733
+
734
+ #: classes/admin-includes/class.swpm-payments-list-table.php:77
735
+ msgid "Date"
736
+ msgstr "Data"
737
+
738
+ #: classes/admin-includes/class.swpm-payments-list-table.php:78
739
+ msgid "Transaction ID"
740
+ msgstr ""
741
+
742
+ #: classes/admin-includes/class.swpm-payments-list-table.php:79
743
+ msgid "Amount"
744
+ msgstr ""
745
+
746
+ #: classes/common/class.swpm-list-table.php:137
747
+ msgid "List View"
748
+ msgstr ""
749
+
750
+ #: classes/common/class.swpm-list-table.php:138
751
+ msgid "Excerpt View"
752
+ msgstr ""
753
+
754
+ #: classes/common/class.swpm-list-table.php:305
755
+ msgid "No items found."
756
+ msgstr ""
757
+
758
+ #: classes/common/class.swpm-list-table.php:431
759
+ msgid "Select bulk action"
760
+ msgstr ""
761
+
762
+ #: classes/common/class.swpm-list-table.php:433
763
+ msgid "Bulk Actions"
764
+ msgstr ""
765
+
766
+ #: classes/common/class.swpm-list-table.php:443
767
+ msgid "Apply"
768
+ msgstr ""
769
+
770
+ #: classes/common/class.swpm-list-table.php:543
771
+ msgid "Filter by date"
772
+ msgstr "Filtra per data"
773
+
774
+ #: classes/common/class.swpm-list-table.php:545
775
+ msgid "All dates"
776
+ msgstr "Tutte le date"
777
+
778
+ #: classes/common/class.swpm-list-table.php:555
779
+ #, php-format
780
+ msgid "%1$s %2$d"
781
+ msgstr ""
782
+
783
+ #: classes/common/class.swpm-list-table.php:599
784
+ #, php-format
785
+ msgid "%s pending"
786
+ msgstr ""
787
+
788
+ #: classes/common/class.swpm-list-table.php:704
789
+ msgid "Select Page"
790
+ msgstr "Seleziona pagina"
791
+
792
+ #: classes/common/class.swpm-list-table.php:848
793
+ msgid "Select All"
794
+ msgstr "Seleziona tutto"
795
+
796
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:47
797
+ msgid "Your membership profile will be updated to reflect the payment."
798
+ msgstr ""
799
+
800
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:48
801
+ msgid "Your profile username: "
802
+ msgstr "Il tuo username:"
803
+
804
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:60
805
+ msgid "Click on the following link to complete the registration."
806
+ msgstr "Clicca sul link seguente per completare la registrazione:"
807
+
808
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:61
809
+ msgid "Click here to complete your paid registration"
810
+ msgstr "Clicca sul link seguente per completare la registrazione:"
811
+
812
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:66
813
+ msgid ""
814
+ "If you have just made a membership payment then your payment is yet to be "
815
+ "processed. Please check back in a few minutes. An email will be sent to you "
816
+ "with the details shortly."
817
+ msgstr ""
818
+ "Se hai già effettuato il pagamento per l'iscrizione, il pagamento è ancora "
819
+ "in fase di processamento. Torna di nuovo tra qualche minuto. A breve ti sarà "
820
+ "inviata un'email con i dettagli."
821
+
822
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:80
823
+ msgid "Expiry: "
824
+ msgstr "Scadenza:"
825
+
826
+ #: classes/shortcode-related/class.swpm-shortcodes-handler.php:82
827
+ msgid "You are not logged-in as a member"
828
+ msgstr "Non hai effettuato l'accesso."
829
+
830
+ #: views/add.php:14 views/admin_add.php:19 views/admin_edit.php:17
831
+ #: views/edit.php:13 views/login.php:11
832
+ msgid "Password"
833
+ msgstr ""
834
+
835
+ #: views/add.php:18 views/edit.php:17
836
+ msgid "Repeat Password"
837
+ msgstr "Digita di nuovo la password"
838
+
839
+ #: views/add.php:41
840
+ msgid "Register"
841
+ msgstr ""
842
+
843
+ #: views/admin_add.php:6
844
+ msgid "Add Member"
845
+ msgstr "Aggiungi iscritto"
846
+
847
+ #: views/admin_add.php:7
848
+ msgid "Create a brand new user and add it to this site."
849
+ msgstr "Crea un nuovo utente e aggiungilo a questo sito."
850
+
851
+ #: views/admin_add.php:11 views/admin_add.php:15 views/admin_add_level.php:11
852
+ #: views/admin_add_level.php:15 views/admin_add_level.php:19
853
+ #: views/admin_edit.php:9 views/admin_edit.php:13 views/admin_edit_level.php:10
854
+ #: views/admin_edit_level.php:14 views/admin_edit_level.php:18
855
+ msgid "(required)"
856
+ msgstr "(richiesto)"
857
+
858
+ #: views/admin_add.php:15 views/admin_edit.php:13
859
+ msgid "E-mail"
860
+ msgstr ""
861
+
862
+ #: views/admin_add.php:19
863
+ msgid "(twice, required)"
864
+ msgstr ""
865
+
866
+ #: views/admin_add.php:24 views/admin_edit.php:21
867
+ msgid "Strength indicator"
868
+ msgstr "Sicurezza della password:"
869
+
870
+ #: views/admin_add.php:25 views/admin_edit.php:22
871
+ msgid ""
872
+ "Hint: The password should be at least seven characters long. To make it "
873
+ "stronger, use upper and lower case letters, numbers and symbols like ! \" ? "
874
+ "$ % ^ &amp; )."
875
+ msgstr ""
876
+ "La password dev'essere lunga almeno sette lettere. Puoi usare lettere "
877
+ "minuscole e maiuscole, numeri e simboli."
878
+
879
+ #: views/admin_add.php:29 views/admin_edit.php:26 views/loggedin.php:7
880
+ msgid "Account Status"
881
+ msgstr "Stato dell'account"
882
+
883
+ #: views/admin_add.php:39
884
+ msgid "Add New Member "
885
+ msgstr "Aggiungi iscritto"
886
+
887
+ #: views/admin_addon_settings.php:3 views/admin_settings.php:3
888
+ #: views/admin_tools_settings.php:3 views/payments/admin_payment_settings.php:3
889
+ msgid "Simple WP Membership::Settings"
890
+ msgstr ""
891
+
892
+ #: views/admin_addon_settings.php:8
893
+ msgid ""
894
+ "Some of the simple membership plugin's addon settings and options will be "
895
+ "displayed here (if you have them)"
896
+ msgstr ""
897
+
898
+ #: views/admin_addon_settings.php:13
899
+ msgid "Save Changes"
900
+ msgstr "Salva i cambiamenti"
901
+
902
+ #: views/admin_add_level.php:6
903
+ msgid "Create new membership level."
904
+ msgstr "Crea un nuovo livello d'iscrizione."
905
+
906
+ #: views/admin_add_level.php:11 views/admin_edit_level.php:10
907
+ msgid "Membership Level Name"
908
+ msgstr ""
909
+
910
+ #: views/admin_add_level.php:15 views/admin_edit_level.php:14
911
+ msgid "Default WordPress Role"
912
+ msgstr ""
913
+
914
+ #: views/admin_add_level.php:19 views/admin_edit_level.php:18
915
+ msgid "Access Duration"
916
+ msgstr ""
917
+
918
+ #: views/admin_add_level.php:22
919
+ msgid "No Expiry (Access for this level will not expire until cancelled"
920
+ msgstr ""
921
+ "Nessuna scadenza (l'accesso a questo livello non scade fino alla "
922
+ "cancellazione dell'account)."
923
+
924
+ #: views/admin_add_level.php:23 views/admin_add_level.php:25
925
+ #: views/admin_add_level.php:27 views/admin_add_level.php:29
926
+ #: views/admin_edit_level.php:22 views/admin_edit_level.php:25
927
+ #: views/admin_edit_level.php:28 views/admin_edit_level.php:31
928
+ msgid "Expire After"
929
+ msgstr "Scadenza dopo"
930
+
931
+ #: views/admin_add_level.php:24 views/admin_edit_level.php:23
932
+ msgid "Days (Access expires after given number of days)"
933
+ msgstr "Giorni (l'accesso scade dopo un certo numero di giorni)"
934
+
935
+ #: views/admin_add_level.php:26
936
+ msgid "Weeks (Access expires after given number of weeks"
937
+ msgstr "Settimane (l'accesso scade dopo un certo numero di settimane)"
938
+
939
+ #: views/admin_add_level.php:28 views/admin_edit_level.php:29
940
+ msgid "Months (Access expires after given number of months)"
941
+ msgstr "Mesi (l'accesso scade dopo un certo numero di mesi)"
942
+
943
+ #: views/admin_add_level.php:30 views/admin_edit_level.php:32
944
+ msgid "Years (Access expires after given number of years)"
945
+ msgstr "Anni (l'accesso scade dopo un certo numero di anni)"
946
+
947
+ #: views/admin_add_level.php:31 views/admin_edit_level.php:34
948
+ msgid "Fixed Date Expiry"
949
+ msgstr "Data fissata per la scadenza"
950
+
951
+ #: views/admin_add_level.php:32 views/admin_edit_level.php:35
952
+ msgid "(Access expires on a fixed date)"
953
+ msgstr "(l'accesso scade a una data prefissata)"
954
+
955
+ #: views/admin_add_level.php:38
956
+ msgid "Add New Membership Level "
957
+ msgstr "Crea un nuovo livello d'iscrizione."
958
+
959
+ #: views/admin_add_ons_page.php:7
960
+ msgid "Simple WP Membership::Add-ons"
961
+ msgstr ""
962
+
963
+ #: views/admin_category_list.php:2
964
+ msgid "Simple WP Membership::Categories"
965
+ msgstr ""
966
+
967
+ #: views/admin_category_list.php:7
968
+ msgid ""
969
+ "First of all, globally protect the category on your site by selecting "
970
+ "\"General Protection\" from the drop-down box below and then select the "
971
+ "categories that should be protected from non-logged in users."
972
+ msgstr ""
973
+
974
+ #: views/admin_category_list.php:10
975
+ msgid ""
976
+ "Next, select an existing membership level from the drop-down box below and "
977
+ "then select the categories you want to grant access to (for that particular "
978
+ "membership level)."
979
+ msgstr ""
980
+
981
+ #: views/admin_edit.php:5
982
+ msgid "Edit Member"
983
+ msgstr "Modifica utente"
984
+
985
+ #: views/admin_edit.php:6
986
+ msgid "Edit existing member details."
987
+ msgstr "Modifica i dettagli dell'utente."
988
+
989
+ #: views/admin_edit.php:17
990
+ msgid "(twice, leave empty to retain old password)"
991
+ msgstr ""
992
+
993
+ #: views/admin_edit.php:33
994
+ msgid "Notify User"
995
+ msgstr ""
996
+
997
+ #: views/admin_edit.php:40
998
+ msgid "Subscriber ID/Reference"
999
+ msgstr ""
1000
+
1001
+ #: views/admin_edit.php:44
1002
+ msgid "Last Accessed From IP"
1003
+ msgstr ""
1004
+
1005
+ #: views/admin_edit.php:52
1006
+ msgid "Edit User "
1007
+ msgstr "Modifica utente"
1008
+
1009
+ #: views/admin_edit_level.php:5
1010
+ msgid "Edit membership level"
1011
+ msgstr "Modifica livello d'iscrizione"
1012
+
1013
+ #: views/admin_edit_level.php:6
1014
+ msgid "Edit membership level."
1015
+ msgstr "Modifica livello d'iscrizione"
1016
+
1017
+ #: views/admin_edit_level.php:21
1018
+ msgid "No Expiry (Access for this level will not expire until cancelled)"
1019
+ msgstr ""
1020
+ "Nessuna scadenza (l'accesso a questo livello non scade fino alla "
1021
+ "cancellazione dell'account)."
1022
+
1023
+ #: views/admin_edit_level.php:26
1024
+ msgid "Weeks (Access expires after given number of weeks)"
1025
+ msgstr "Settimane (l'accesso scade dopo un certo numero di settimane)"
1026
+
1027
+ #: views/admin_edit_level.php:41
1028
+ msgid "Edit Membership Level "
1029
+ msgstr "Modifica livello d'iscrizione"
1030
+
1031
+ #: views/admin_members.php:2
1032
+ msgid "Simple WP Membership::Members"
1033
+ msgstr ""
1034
+
1035
+ #: views/admin_members.php:3 views/admin_members_list.php:30
1036
+ msgid "Add New"
1037
+ msgstr "Aggiungi nuovo"
1038
+
1039
+ #: views/admin_membership_levels.php:2
1040
+ msgid "Simple WP Membership::Membership Levels"
1041
+ msgstr ""
1042
+
1043
+ #: views/admin_membership_levels.php:12 views/admin_members_list.php:6
1044
+ msgid "search"
1045
+ msgstr "Cerca"
1046
+
1047
+ #: views/admin_membership_level_menu.php:2
1048
+ msgid "Membership level"
1049
+ msgstr "Livello d'iscrizione"
1050
+
1051
+ #: views/admin_membership_level_menu.php:3
1052
+ msgid "Manage Content Production"
1053
+ msgstr ""
1054
+
1055
+ #: views/admin_membership_level_menu.php:4
1056
+ msgid "Category Protection"
1057
+ msgstr ""
1058
+
1059
+ #: views/admin_membership_manage.php:17
1060
+ msgid "Example Content Protection Settings"
1061
+ msgstr ""
1062
+
1063
+ #: views/admin_member_form_common_part.php:23
1064
+ msgid "Gender"
1065
+ msgstr "Sesso"
1066
+
1067
+ #: views/admin_member_form_common_part.php:30 views/edit.php:29
1068
+ msgid "Phone"
1069
+ msgstr "Telefono"
1070
+
1071
+ #: views/admin_member_form_common_part.php:34 views/edit.php:33
1072
+ msgid "Street"
1073
+ msgstr "Via"
1074
+
1075
+ #: views/admin_member_form_common_part.php:38 views/edit.php:37
1076
+ msgid "City"
1077
+ msgstr "Città"
1078
+
1079
+ #: views/admin_member_form_common_part.php:42 views/edit.php:41
1080
+ msgid "State"
1081
+ msgstr "Provincia"
1082
+
1083
+ #: views/admin_member_form_common_part.php:46 views/edit.php:45
1084
+ msgid "Zipcode"
1085
+ msgstr "CAP"
1086
+
1087
+ #: views/admin_member_form_common_part.php:50 views/edit.php:49
1088
+ msgid "Country"
1089
+ msgstr "Stato"
1090
+
1091
+ #: views/admin_member_form_common_part.php:54
1092
+ msgid "Company"
1093
+ msgstr "Ente/azienda"
1094
+
1095
+ #: views/admin_member_form_common_part.php:58
1096
+ msgid "Member Since"
1097
+ msgstr "Iscritto dal"
1098
+
1099
+ #: views/admin_tools_settings.php:9
1100
+ msgid "Generate a Registration Completion link"
1101
+ msgstr "Genera un link per completare la registrazione"
1102
+
1103
+ #: views/admin_tools_settings.php:12
1104
+ msgid ""
1105
+ "You can manually generate a registration completion link here and give it to "
1106
+ "your customer if they have missed the email that was automatically sent out "
1107
+ "to them after the payment."
1108
+ msgstr ""
1109
+ "Puoi generare manualmente un link per completare la registrazione e inviarlo "
1110
+ "al tuo cliente se ha perso la mail inviata automaticamente dopo l'avvenuto "
1111
+ "pagamento."
1112
+
1113
+ #: views/admin_tools_settings.php:17
1114
+ msgid "Generate Registration Completion Link"
1115
+ msgstr "Genera il link per completare la registrazione"
1116
+
1117
+ #: views/admin_tools_settings.php:20
1118
+ msgid "OR"
1119
+ msgstr ""
1120
+
1121
+ #: views/admin_tools_settings.php:21
1122
+ msgid "For All Pending Registrations"
1123
+ msgstr ""
1124
+
1125
+ #: views/admin_tools_settings.php:24
1126
+ msgid "Registration Completion Links Will Appear Below:"
1127
+ msgstr "I link per completare la registrazione appariranno di seguito:"
1128
+
1129
+ #: views/admin_tools_settings.php:31
1130
+ msgid "Send Registration Reminder Email too"
1131
+ msgstr ""
1132
+
1133
+ #: views/admin_tools_settings.php:34
1134
+ msgid "Submit"
1135
+ msgstr "Invia"
1136
+
1137
+ #: views/edit.php:59
1138
+ msgid "Update"
1139
+ msgstr "Aggiorna"
1140
+
1141
+ #: views/forgot_password.php:12
1142
+ msgid "Reset Password"
1143
+ msgstr "Crea una nuova password"
1144
+
1145
+ #: views/loggedin.php:3
1146
+ msgid "Logged in as"
1147
+ msgstr "Hai effettuato l'accesso come:"
1148
+
1149
+ #: views/loggedin.php:11
1150
+ msgid "Membership"
1151
+ msgstr "Iscrizione"
1152
+
1153
+ #: views/loggedin.php:15
1154
+ msgid "Account Expiry"
1155
+ msgstr "Scadenza:"
1156
+
1157
+ #: views/loggedin.php:19
1158
+ msgid "Logout"
1159
+ msgstr ""
1160
+
1161
+ #: views/login.php:18
1162
+ msgid "Remember Me"
1163
+ msgstr "Ricordami"
1164
+
1165
+ #: views/login.php:24
1166
+ msgid "Forgot Password"
1167
+ msgstr "Password dimenticata"
1168
+
1169
+ #: views/payments/admin_all_payment_transactions.php:7
1170
+ msgid "All the payments/transactions of your members are recorded here."
1171
+ msgstr ""
1172
+
1173
+ #: views/payments/admin_all_payment_transactions.php:14
1174
+ msgid "Search for a transaction by using email or name"
1175
+ msgstr ""
1176
+
1177
+ #: views/payments/admin_all_payment_transactions.php:18
1178
+ msgid "Search"
1179
+ msgstr "Cerca"
1180
+
1181
+ #: views/payments/admin_create_payment_buttons.php:13
1182
+ msgid ""
1183
+ "You can create new payment button for your memberships using this interface."
1184
+ msgstr ""
1185
+
1186
+ #: views/payments/admin_create_payment_buttons.php:22
1187
+ msgid "Select Payment Button Type"
1188
+ msgstr ""
1189
+
1190
+ #: views/payments/admin_create_payment_buttons.php:34
1191
+ msgid "Next"
1192
+ msgstr ""
1193
+
1194
+ #: views/payments/admin_edit_payment_buttons.php:12
1195
+ msgid "You can edit a payment button using this interface."
1196
+ msgstr ""
1197
+
1198
+ #: views/payments/admin_payments_page.php:9
1199
+ msgid "Simple Membership::Payments"
1200
+ msgstr ""
1201
+
1202
+ #: views/payments/admin_payment_buttons.php:7
1203
+ msgid ""
1204
+ "All the membership buttons that you created in the plugin are displayed here."
1205
+ msgstr ""
1206
+
1207
+ #: views/payments/admin_payment_settings.php:31
1208
+ msgid "PayPal Integration Settings"
1209
+ msgstr ""
1210
+
1211
+ #: views/payments/admin_payment_settings.php:34
1212
+ msgid "Generate the \"Advanced Variables\" Code for your PayPal button"
1213
+ msgstr ""
1214
+
1215
+ #: views/payments/admin_payment_settings.php:37
1216
+ msgid "Enter the Membership Level ID"
1217
+ msgstr ""
1218
+
1219
+ #: views/payments/admin_payment_settings.php:39
1220
+ msgid "Generate Code"
1221
+ msgstr ""
1222
+
1223
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:18
1224
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:192
1225
+ msgid "PayPal Buy Now Button Configuration"
1226
+ msgstr ""
1227
+
1228
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:28
1229
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:209
1230
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:29
1231
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:302
1232
+ msgid "Button Title"
1233
+ msgstr ""
1234
+
1235
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:46
1236
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:227
1237
+ msgid "Payment Amount"
1238
+ msgstr ""
1239
+
1240
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:54
1241
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:235
1242
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:47
1243
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:320
1244
+ msgid "Payment Currency"
1245
+ msgstr "Valuta di pagamento"
1246
+
1247
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:93
1248
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:274
1249
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:173
1250
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:446
1251
+ msgid "Return URL"
1252
+ msgstr ""
1253
+
1254
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:101
1255
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:282
1256
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:86
1257
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:359
1258
+ msgid "PayPal Email"
1259
+ msgstr "Indirizzo PayPal"
1260
+
1261
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:109
1262
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:290
1263
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:181
1264
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:454
1265
+ msgid "Button Image URL"
1266
+ msgstr ""
1267
+
1268
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:119
1269
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:300
1270
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:193
1271
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:466
1272
+ msgid "Save Payment Data"
1273
+ msgstr "Salva i dati del pagamento"
1274
+
1275
+ #: views/payments/payment-gateway/admin_paypal_buy_now_button.php:201
1276
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:294
1277
+ msgid "Button ID"
1278
+ msgstr ""
1279
+
1280
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:20
1281
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:288
1282
+ msgid "PayPal Subscription Button Configuration"
1283
+ msgstr "Configura il pulsante PayPal"
1284
+
1285
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:94
1286
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:367
1287
+ msgid "Billing Amount Each Cycle"
1288
+ msgstr ""
1289
+
1290
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:102
1291
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:375
1292
+ msgid "Billing Cycle"
1293
+ msgstr ""
1294
+
1295
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:115
1296
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:388
1297
+ msgid "Billing Cycle Count"
1298
+ msgstr ""
1299
+
1300
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:123
1301
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:396
1302
+ msgid "Re-attempt on Failure"
1303
+ msgstr ""
1304
+
1305
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:136
1306
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:409
1307
+ msgid ""
1308
+ "Trial Billing Details (Leave empty if you are not offering a trial period)"
1309
+ msgstr ""
1310
+
1311
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:142
1312
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:415
1313
+ msgid "Trial Billing Amount"
1314
+ msgstr ""
1315
+
1316
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:150
1317
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:423
1318
+ msgid "Trial Billing Period"
1319
+ msgstr ""
1320
+
1321
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:167
1322
+ #: views/payments/payment-gateway/admin_paypal_subscription_button.php:440
1323
+ msgid "Optional Details"
1324
+ msgstr "Dettagli opzionali"
1325
+
1326
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:77
1327
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:79
1328
+ msgid "Buy Now"
1329
+ msgstr "Acquista ora!"
1330
+
1331
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:197
1332
+ #: views/payments/payment-gateway/paypal_button_shortcode_view.php:199
1333
+ msgid "Subscribe Now"
1334
+ msgstr "Abbonati ora!"
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://simple-membership-plugin.com/
4
  Tags: member, members, members only, membership, memberships, register, WordPress membership plugin, content, content protection, paypal, restrict, restrict access, Restrict content, admin, access control, subscription, teaser, protection, profile, login, login page, bbpress, stripe
5
  Requires at least: 4.0
6
  Tested up to: 4.6
7
- Stable tag: 3.3.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -107,6 +107,7 @@ The following language translations are already available:
107
  * Hungarian
108
  * Bosnian (Bosnia and Herzegovina)
109
  * Slovak
 
110
 
111
  You can translate the plugin using the language [translation documentation](https://simple-membership-plugin.com/translate-simple-membership-plugin/).
112
 
@@ -128,6 +129,17 @@ https://simple-membership-plugin.com/
128
 
129
  == Changelog ==
130
 
 
 
 
 
 
 
 
 
 
 
 
131
  = 3.3.6 =
132
  - Added a new option so the admin notification email content can be customized from the email settings menu of the plugin.
133
 
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
5
  Requires at least: 4.0
6
  Tested up to: 4.6
7
+ Stable tag: 3.3.8
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
107
  * Hungarian
108
  * Bosnian (Bosnia and Herzegovina)
109
  * Slovak
110
+ * Italian
111
 
112
  You can translate the plugin using the language [translation documentation](https://simple-membership-plugin.com/translate-simple-membership-plugin/).
113
 
129
 
130
  == Changelog ==
131
 
132
+ = 3.3.8 =
133
+ - The account renewal payment will take into account any remaining time (when the user's level is using a duration type expiry).
134
+ - The members can now user their email address (instead of username) and password to log into the site. The username field of the member login form will accept either the email address or the username.
135
+ - The set_user_role action hook will not be triggered by the plugin as the wp_update_user() function will take care of it automatically.
136
+
137
+ = 3.3.7 =
138
+ - Added Italian language translation file. The translation was submitted by Roberto Paura.
139
+ - Improved the paypal refund handling.
140
+ - The subscription payment cancellation sequence/code has been improved. Details in the following documentation:
141
+ https://simple-membership-plugin.com/what-happens-when-paypal-subscription-cancelled/
142
+
143
  = 3.3.6 =
144
  - Added a new option so the admin notification email content can be customized from the email settings menu of the plugin.
145
 
simple-wp-membership.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Simple WordPress Membership
4
- Version: 3.3.6
5
  Plugin URI: https://simple-membership-plugin.com/
6
  Author: smp7, wp.insider
7
  Author URI: https://simple-membership-plugin.com/
@@ -17,7 +17,7 @@ include_once('classes/class.simple-wp-membership.php');
17
  include_once('classes/class.swpm-cronjob.php');
18
  include_once('swpm-compat.php');
19
 
20
- define('SIMPLE_WP_MEMBERSHIP_VER', '3.3.6');
21
  define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.2');
22
  define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
23
  define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
1
  <?php
2
  /*
3
  Plugin Name: Simple WordPress Membership
4
+ Version: 3.3.8
5
  Plugin URI: https://simple-membership-plugin.com/
6
  Author: smp7, wp.insider
7
  Author URI: https://simple-membership-plugin.com/
17
  include_once('classes/class.swpm-cronjob.php');
18
  include_once('swpm-compat.php');
19
 
20
+ define('SIMPLE_WP_MEMBERSHIP_VER', '3.3.8');
21
  define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.2');
22
  define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
23
  define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
views/admin_add_ons_page.php CHANGED
@@ -137,6 +137,22 @@ echo '<link type="text/css" rel="stylesheet" href="' . SIMPLE_WP_MEMBERSHIP_URL
137
  'page_url' => 'https://simple-membership-plugin.com/simple-membership-member-data-exporter-addon/',
138
  );
139
  array_push($addons_data, $addon_16);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
 
141
 
142
  /*** Show the addons list ***/
137
  'page_url' => 'https://simple-membership-plugin.com/simple-membership-member-data-exporter-addon/',
138
  );
139
  array_push($addons_data, $addon_16);
140
+
141
+ $addon_17 = array(
142
+ 'name' => 'Display Member Payments',
143
+ 'thumbnail' => SIMPLE_WP_MEMBERSHIP_URL . '/images/addons/swpm-member-payments-addon.png',
144
+ 'description' => 'This addon allows you to display the member payments on a page using a shortcode.',
145
+ 'page_url' => 'https://simple-membership-plugin.com/simple-membership-member-payments-listing-addon/',
146
+ );
147
+ array_push($addons_data, $addon_17);
148
+
149
+ $addon_17 = array(
150
+ 'name' => 'AWeber Integration',
151
+ 'thumbnail' => SIMPLE_WP_MEMBERSHIP_URL . '/images/addons/swpm-aweber-integration-addon.png',
152
+ 'description' => 'You can automatically signup your members to a specific list in your AWeber account when they register.',
153
+ 'page_url' => 'https://simple-membership-plugin.com/simple-membership-aweber-integration-addon/',
154
+ );
155
+ array_push($addons_data, $addon_17);
156
 
157
 
158
  /*** Show the addons list ***/
views/login.php CHANGED
@@ -8,7 +8,7 @@ $join_url = $setting->get_value('join-us-page-url');
8
  <form id="swpm-login-form" name="swpm-login-form" method="post" action="">
9
  <div class="swpm-login-form-inner">
10
  <div class="swpm-username-label">
11
- <label for="swpm_user_name" class="swpm-label"><?php echo SwpmUtils::_('Username') ?></label>
12
  </div>
13
  <div class="swpm-username-input">
14
  <input type="text" class="swpm-text-field swpm-username-field" id="swpm_user_name" value="" size="25" name="swpm_user_name" />
8
  <form id="swpm-login-form" name="swpm-login-form" method="post" action="">
9
  <div class="swpm-login-form-inner">
10
  <div class="swpm-username-label">
11
+ <label for="swpm_user_name" class="swpm-label"><?php echo SwpmUtils::_('Username or Email') ?></label>
12
  </div>
13
  <div class="swpm-username-input">
14
  <input type="text" class="swpm-text-field swpm-username-field" id="swpm_user_name" value="" size="25" name="swpm_user_name" />