s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) - Version 140423

Version Description

= v140423 =

(Maintenance Release) Upgrade immediately.

Download this release

Release Info

Developer JasWSInc
Plugin Icon 128x128 s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members)
Version 140423
Comparing to
See all releases

Code changes from version 140409 to 140423

checksum.txt CHANGED
@@ -1 +1 @@
1
- 0dc9576ca2b6a5856d4e1e602dccc109
1
+ 2901368de4b8eaf96fc4f5d0dcd5451c
includes/classes/mo-page-in.inc.php CHANGED
@@ -82,8 +82,6 @@ if(!class_exists("c_ws_plugin__s2member_mo_page_in"))
82
  * Defaults to ``$seeking_type``.
83
  *
84
  * @return bool This function always returns true.
85
- *
86
- * @TODO Update documentation in the API Scripting section.
87
  */
88
  public static function wp_redirect_w_mop_vars($seeking_type = FALSE, $seeking_type_value = FALSE, $req_type = FALSE, $req_type_value = FALSE, $seeking_uri = FALSE, $res_type = FALSE)
89
  {
@@ -93,14 +91,14 @@ if(!class_exists("c_ws_plugin__s2member_mo_page_in"))
93
  {
94
  if($_param === "seeking_uri" || ($_param === "seeking_type_value" && $seeking_type === "ruri"))
95
  ${$_param} = base64_encode((string)${$_param});
96
- else ${$_param} = str_replace(".", "", (string)${$_param});
97
  }
98
  unset($_param); // Housekeeping.
99
 
100
  if(!$res_type) $res_type = $seeking_type;
101
 
102
- $vars = $res_type.".".$req_type.".".$req_type_value.".";
103
- $vars .= $seeking_type.".".$seeking_type_value.".".$seeking_uri;
104
  $vars = array("_s2member_vars" => $vars);
105
 
106
  $status = apply_filters("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars());
@@ -120,11 +118,11 @@ if(!class_exists("c_ws_plugin__s2member_mo_page_in"))
120
  }
121
 
122
  /*
123
- * s2Member's MOP Vars are now a dot (`.`) delimited list of six values.
124
  *
125
  * e.g. .../membership-options-page/
126
- * ?_s2member_vars=[restriction type].[requirement type].[requirement type value].
127
- * [seeking type].[seeking type value].[seeking URI base 64 encoded]
128
  */
129
  public static function back_compat_mop_vars()
130
  {
@@ -132,7 +130,7 @@ if(!class_exists("c_ws_plugin__s2member_mo_page_in"))
132
  || !is_string($_REQUEST["_s2member_vars"])
133
  ) return;
134
 
135
- $v = explode(".", $_REQUEST["_s2member_vars"]);
136
  if(count($v) !== 6) return;
137
 
138
  /*
82
  * Defaults to ``$seeking_type``.
83
  *
84
  * @return bool This function always returns true.
 
 
85
  */
86
  public static function wp_redirect_w_mop_vars($seeking_type = FALSE, $seeking_type_value = FALSE, $req_type = FALSE, $req_type_value = FALSE, $seeking_uri = FALSE, $res_type = FALSE)
87
  {
91
  {
92
  if($_param === "seeking_uri" || ($_param === "seeking_type_value" && $seeking_type === "ruri"))
93
  ${$_param} = base64_encode((string)${$_param});
94
+ else ${$_param} = str_replace("..", "--", (string)${$_param});
95
  }
96
  unset($_param); // Housekeeping.
97
 
98
  if(!$res_type) $res_type = $seeking_type;
99
 
100
+ $vars = $res_type."..".$req_type."..".$req_type_value."..";
101
+ $vars .= $seeking_type."..".$seeking_type_value."..".$seeking_uri;
102
  $vars = array("_s2member_vars" => $vars);
103
 
104
  $status = apply_filters("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars());
118
  }
119
 
120
  /*
121
+ * s2Member's MOP Vars are now a double-dot (`..`) delimited list of six values.
122
  *
123
  * e.g. .../membership-options-page/
124
+ * ?_s2member_vars=[restriction type]..[requirement type]..[requirement type value]..
125
+ * [seeking type]..[seeking type value]..[seeking URI base 64 encoded]
126
  */
127
  public static function back_compat_mop_vars()
128
  {
130
  || !is_string($_REQUEST["_s2member_vars"])
131
  ) return;
132
 
133
+ $v = explode("..", $_REQUEST["_s2member_vars"]);
134
  if(count($v) !== 6) return;
135
 
136
  /*
includes/classes/mo-page.inc.php CHANGED
@@ -71,11 +71,11 @@ if(!class_exists("c_ws_plugin__s2member_mo_page"))
71
  }
72
 
73
  /*
74
- * s2Member's MOP Vars are now a dot (`.`) delimited list of six values.
75
  *
76
  * e.g. .../membership-options-page/
77
- * ?_s2member_vars=[restriction type].[requirement type].[requirement type value].
78
- * [seeking type].[seeking type value].[seeking URI base 64 encoded]
79
  */
80
  public static function back_compat_mop_vars()
81
  {
71
  }
72
 
73
  /*
74
+ * s2Member's MOP Vars are now a double-dot (`..`) delimited list of six values.
75
  *
76
  * e.g. .../membership-options-page/
77
+ * ?_s2member_vars=[restriction type]..[requirement type]..[requirement type value]..
78
+ * [seeking type]..[seeking type value]..[seeking URI base 64 encoded]
79
  */
80
  public static function back_compat_mop_vars()
81
  {
includes/classes/registration-times.inc.php CHANGED
@@ -1,110 +1,245 @@
1
  <?php
2
  /**
3
- * Registration Times.
4
- *
5
- * Copyright: © 2009-2011
6
- * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * (coded in the USA)
8
- *
9
- * Released under the terms of the GNU General Public License.
10
- * You should have received a copy of the GNU General Public License,
11
- * along with this software. In the main directory, see: /licensing/
12
- * If not, see: {@link http://www.gnu.org/licenses/}.
13
- *
14
- * @package s2Member\Registrations
15
- * @since 3.5
16
- */
17
- if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
18
  exit ("Do not access this file directly.");
19
 
20
- if (!class_exists ("c_ws_plugin__s2member_registration_times"))
21
  {
22
  /**
23
- * Registration Times.
24
- *
25
- * @package s2Member\Registrations
26
- * @since 3.5
27
- */
28
  class c_ws_plugin__s2member_registration_times
29
- {
30
- /**
31
- * Synchronizes Paid Registration Times with Role assignments.
32
- *
33
- * @package s2Member\Registrations
34
- * @since 3.5
35
- *
36
- * @attaches-to ``add_action("set_user_role");``
37
- *
38
- * @param int|str $user_id A numeric WordPress User ID should be passed in by the Action Hook.
39
- * @param str $role A WordPress Role ID/Name should be passed in by the Action Hook.
40
- * @return null
41
- */
42
- public static function synchronize_paid_reg_times ($user_id = FALSE, $role = FALSE)
43
- {
44
- foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
45
- do_action ("ws_plugin__s2member_before_synchronize_paid_reg_times", get_defined_vars ());
46
- unset /* Unset defined __refs, __v. */ ($__refs, $__v);
47
-
48
- if ($user_id && is_object ($user = new WP_User ($user_id)) && !empty ($user->ID) && ($level = c_ws_plugin__s2member_user_access::user_access_level ($user)) > 0)
49
- {
50
- $pr_times = get_user_option ("s2member_paid_registration_times", $user_id);
51
- $pr_times["level"] = (empty ($pr_times["level"])) ? time () : $pr_times["level"];
52
- $pr_times["level" . $level] = (empty ($pr_times["level" . $level])) ? time () : $pr_times["level" . $level];
53
- update_user_option ($user_id, "s2member_paid_registration_times", $pr_times); // Update now.
54
- }
55
-
56
- return /* Return for uniformity. */;
57
- }
58
- /**
59
- * Retrieves a Registration Time.
60
- *
61
- * @package s2Member\Registrations
62
- * @since 3.5
63
- *
64
- * @param int|str $user_id Optional. A numeric WordPress User ID. Defaults to the current User, if logged-in.
65
- * @return int A Unix timestamp, indicating Registration Time, else `0` on failure.
66
- */
67
- public static function registration_time ($user_id = FALSE)
68
- {
69
- foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
70
- do_action ("ws_plugin__s2member_before_registration_time", get_defined_vars ());
71
- unset /* Unset defined __refs, __v. */ ($__refs, $__v);
72
-
73
- $user = ($user_id) ? new WP_User ($user_id) : ((is_user_logged_in ()) ? wp_get_current_user () : false);
74
-
75
- if (is_object ($user) && !empty ($user->ID) && ($user_id = $user->ID) && $user->user_registered)
76
- {
77
- return apply_filters ("ws_plugin__s2member_registration_time", strtotime ($user->user_registered), get_defined_vars ());
78
- }
79
- else // Else we return a default value of 0, because there is insufficient data.
80
- return apply_filters ("ws_plugin__s2member_registration_time", 0, get_defined_vars ());
81
- }
82
- /**
83
- * Retrieves a Paid Registration Time.
84
- *
85
- * @package s2Member\Registrations
86
- * @since 3.5
87
- *
88
- * @param int|str $level Optional. Defaults to the first/initial Paid Registration Time, regardless of Level#.
89
- * @param int|str $user_id Optional. A numeric WordPress User ID. Defaults to the current User, if logged-in.
90
- * @return int A Unix timestamp, indicating Paid Registration Time, else `0` on failure.
91
- */
92
- public static function paid_registration_time ($level = FALSE, $user_id = FALSE)
93
- {
94
- foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
95
- do_action ("ws_plugin__s2member_before_paid_registration_time", get_defined_vars ());
96
- unset /* Unset defined __refs, __v. */ ($__refs, $__v);
97
-
98
- $level = (!is_numeric ($level)) ? "level" : "level" . preg_replace ("/[^0-9]/", "", (string)$level);
99
- $user = ($user_id) ? new WP_User ($user_id) : ((is_user_logged_in ()) ? wp_get_current_user () : false);
100
-
101
- if ($level && is_object ($user) && !empty ($user->ID) && ($user_id = $user->ID) && is_array ($pr_times = get_user_option ("s2member_paid_registration_times", $user_id)))
102
- {
103
- return apply_filters ("ws_plugin__s2member_paid_registration_time", ((isset ($pr_times[$level])) ? (int)$pr_times[$level] : 0), get_defined_vars ());
104
- }
105
- else // Else we return a default value of `0`, because there is insufficient data.
106
- return apply_filters ("ws_plugin__s2member_paid_registration_time", 0, get_defined_vars ());
107
- }
108
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
  ?>
1
  <?php
2
  /**
3
+ * Registration Times.
4
+ *
5
+ * Copyright: © 2009-2011
6
+ * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
+ *
9
+ * Released under the terms of the GNU General Public License.
10
+ * You should have received a copy of the GNU General Public License,
11
+ * along with this software. In the main directory, see: /licensing/
12
+ * If not, see: {@link http://www.gnu.org/licenses/}.
13
+ *
14
+ * @package s2Member\Registrations
15
+ * @since 3.5
16
+ */
17
+ if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
18
  exit ("Do not access this file directly.");
19
 
20
+ if(!class_exists("c_ws_plugin__s2member_registration_times"))
21
  {
22
  /**
23
+ * Registration Times.
24
+ *
25
+ * @package s2Member\Registrations
26
+ * @since 3.5
27
+ */
28
  class c_ws_plugin__s2member_registration_times
29
+ {
30
+ /**
31
+ * Synchronizes Paid Registration Times with Role assignments.
32
+ *
33
+ * @package s2Member\Registrations
34
+ * @since 3.5
35
+ *
36
+ * @attaches-to ``add_action("set_user_role");``
37
+ *
38
+ * @param int|str $user_id A numeric WordPress User ID should be passed in by the Action Hook.
39
+ * @param str $role A WordPress Role ID/Name should be passed in by the Action Hook.
40
+ *
41
+ * @return null
42
+ */
43
+ public static function synchronize_paid_reg_times($user_id = FALSE, $role = FALSE)
44
+ {
45
+ foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
46
+ do_action("ws_plugin__s2member_before_synchronize_paid_reg_times", get_defined_vars());
47
+ unset($__refs, $__v);
48
+
49
+ if($user_id && is_object($user = new WP_User ($user_id)) && !empty ($user->ID) && ($level = c_ws_plugin__s2member_user_access::user_access_level($user)) > 0)
50
+ {
51
+ $pr_times = get_user_option("s2member_paid_registration_times", $user_id);
52
+ $pr_times["level"] = (empty ($pr_times["level"])) ? time() : $pr_times["level"];
53
+ $pr_times["level".$level] = (empty ($pr_times["level".$level])) ? time() : $pr_times["level".$level];
54
+ update_user_option($user_id, "s2member_paid_registration_times", $pr_times); // Update now.
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Retrieves a Registration Time.
60
+ *
61
+ * @package s2Member\Registrations
62
+ * @since 3.5
63
+ *
64
+ * @param int|str $user_id Optional. A numeric WordPress User ID. Defaults to the current User, if logged-in.
65
+ *
66
+ * @return int A Unix timestamp, indicating Registration Time, else `0` on failure.
67
+ */
68
+ public static function registration_time($user_id = FALSE)
69
+ {
70
+ foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
71
+ do_action("ws_plugin__s2member_before_registration_time", get_defined_vars());
72
+ unset($__refs, $__v);
73
+
74
+ $user = ($user_id) ? new WP_User ($user_id) : ((is_user_logged_in()) ? wp_get_current_user() : FALSE);
75
+
76
+ if(is_object($user) && !empty ($user->ID) && ($user_id = $user->ID) && $user->user_registered)
77
+ {
78
+ return apply_filters("ws_plugin__s2member_registration_time", strtotime($user->user_registered), get_defined_vars());
79
+ }
80
+ else // Else we return a default value of 0, because there is insufficient data.
81
+ return apply_filters("ws_plugin__s2member_registration_time", 0, get_defined_vars());
82
+ }
83
+
84
+ /**
85
+ * Retrieves a Paid Registration Time.
86
+ *
87
+ * @package s2Member\Registrations
88
+ * @since 3.5
89
+ *
90
+ * @param int|str $level Optional. Defaults to the first/initial Paid Registration Time, regardless of Level#.
91
+ * @param int|str $user_id Optional. A numeric WordPress User ID. Defaults to the current User, if logged-in.
92
+ *
93
+ * @return int A Unix timestamp, indicating Paid Registration Time, else `0` on failure.
94
+ */
95
+ public static function paid_registration_time($level = FALSE, $user_id = FALSE)
96
+ {
97
+ foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
98
+ do_action("ws_plugin__s2member_before_paid_registration_time", get_defined_vars());
99
+ unset($__refs, $__v);
100
+
101
+ $level = (!is_numeric($level)) ? "level" : "level".preg_replace("/[^0-9]/", "", (string)$level);
102
+ $user = ($user_id) ? new WP_User ($user_id) : ((is_user_logged_in()) ? wp_get_current_user() : FALSE);
103
+
104
+ if($level && is_object($user) && !empty ($user->ID) && ($user_id = $user->ID) && is_array($pr_times = get_user_option("s2member_paid_registration_times", $user_id)))
105
+ {
106
+ return apply_filters("ws_plugin__s2member_paid_registration_time", ((isset ($pr_times[$level])) ? (int)$pr_times[$level] : 0), get_defined_vars());
107
+ }
108
+ else // Else we return a default value of `0`, because there is insufficient data.
109
+ return apply_filters("ws_plugin__s2member_paid_registration_time", 0, get_defined_vars());
110
+ }
111
+
112
+ /**
113
+ * Logs capability times.
114
+ *
115
+ * @package s2Member\Registrations
116
+ * @since 140418
117
+ *
118
+ * @attaches-to ``add_action("update_user_meta")``
119
+ *
120
+ * @param integer $meta_id Meta row ID in database.
121
+ * @param integer $object_id User ID.
122
+ * @param string $meta_key Meta key.
123
+ * @param mixed $meta_value Meta value.
124
+ */
125
+ public static function log_capability_time($meta_id, $object_id, $meta_key, $meta_value)
126
+ {
127
+ $wpdb = $GLOBALS["wpdb"];
128
+ /** @var $wpdb \wpdb For IDEs. */
129
+
130
+ if(strpos($meta_key, "capabilities") === FALSE
131
+ || $meta_key !== $wpdb->get_blog_prefix()."capabilities"
132
+ ) return; // Not updating caps.
133
+
134
+ /*
135
+ * NOTE: $prev_caps (and $new_caps) both include individual non-role caps (e.g. `access_s2member_ccap_x`).
136
+ * These arrays ALSO include role names (minus role-specific caps); e.g. `administrator` or `s2member_level1`;
137
+ * but NOT `delete_users` or `access_s2member_leveln`.
138
+ */
139
+
140
+ $user_id = $object_id;
141
+ if(!is_array($new_caps = $meta_value))
142
+ $new_caps = array(); // All caps removed.
143
+
144
+ $user = new WP_User($user_id);
145
+ if(!$user->ID || !$user->exists())
146
+ return; // Not a valid user.
147
+ $prev_caps = $user->caps;
148
+
149
+ /*
150
+ * NOTE: we iterate these arrays so that it's possible to properly analzye boolean flags.
151
+ * WordPress can enable/disable a cap by adding/removing it; or by flagging it as TRUE|FALSE.
152
+ */
153
+ $caps_added = $caps_removed = array();
154
+
155
+ foreach($new_caps as $_new_cap => $_is_enabled)
156
+ if($_is_enabled && (!array_key_exists($_new_cap, $prev_caps) || !$prev_caps[$_new_cap]))
157
+ $caps_added[] = $_new_cap;
158
+
159
+ foreach($prev_caps as $_prev_cap => $_was_enabled)
160
+ if(!array_key_exists($_prev_cap, $new_caps) || (!$new_caps[$_prev_cap] && $_was_enabled))
161
+ $caps_removed[] = $_prev_cap;
162
+
163
+ unset($_new_cap, $_is_enabled, $_prev_cap, $_was_enabled);
164
+
165
+ /*
166
+ * Below, we log CAPS that begin with:
167
+ *
168
+ * `s2member_level`
169
+ * or `access_s2member_ccap_`
170
+ *
171
+ * This makes it possible for us to get access times for all s2Member Levels, and for CCAPS too.
172
+ */
173
+ foreach(array_unique($caps_added) as $_cap)
174
+ if(strpos($_cap, "s2member_level") === 0 || strpos($_cap, "access_s2member_ccap_") === 0)
175
+ c_ws_plugin__s2member_registration_times::_log_capability_time($user_id, $_cap);
176
+
177
+ foreach(array_unique($caps_removed) as $_cap)
178
+ if(strpos($_cap, "s2member_level") === 0 || strpos($_cap, "access_s2member_ccap_") === 0)
179
+ c_ws_plugin__s2member_registration_times::_log_capability_time($user_id, $_cap, TRUE);
180
+
181
+ unset($_cap); // Housekeeping.
182
+ }
183
+
184
+ /**
185
+ * Records access times.
186
+ *
187
+ * @package s2Member\Registrations
188
+ * @since 140418
189
+ *
190
+ * @param integer $user_id WP user ID.
191
+ * @param integer $access_cap s2Member-related capability.
192
+ * @param boolean $removed Defaults to a FALSE value. Flag as TRUE if `$access_cap` is being removed instead of being added.
193
+ */
194
+ public static function _log_capability_time($user_id, $access_cap, $removed = FALSE)
195
+ {
196
+ foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
197
+ do_action("ws_plugin__s2member_before_log_capability_time", get_defined_vars());
198
+ unset($__refs, $__v);
199
+
200
+ if($user_id && $access_cap)
201
+ {
202
+ $user_id = (integer)$user_id;
203
+ $ac_times = get_user_option("s2member_capability_times", $user_id);
204
+ $ac_times[time()] = ($removed ? "-" : "").$access_cap;
205
+ update_user_option($user_id, "s2member_capability_times", $ac_times);
206
+
207
+ do_action("ws_plugin__s2member_during_log_capability_time", get_defined_vars());
208
+ }
209
+ do_action("ws_plugin__s2member_after_log_capability_time", get_defined_vars());
210
+ }
211
+
212
+ /**
213
+ * Gets access capability times.
214
+ *
215
+ * @package s2Member\Registrations
216
+ * @since 140418
217
+ *
218
+ * @param integer $user_id WP User ID.
219
+ * @param boolean $access_caps Optional. An array of access capabilities to get the times for.
220
+ * If removal times are desired, you should add a `-` prefix.
221
+ *
222
+ * @return array An array of all access capability times.
223
+ * Keys are UTC timestamps, values are the capabilities (including `-` prefixed removals).
224
+ */
225
+ public static function get_capability_times($user_id, $access_caps = FALSE)
226
+ {
227
+ if(($user_id = (integer)$user_id))
228
+ {
229
+ $ac_times = get_user_option("s2member_capability_times", $user_id);
230
+
231
+ if(!is_array($ac_times))
232
+ $ac_times = array();
233
+
234
+ else if($access_caps)
235
+ $ac_times = array_intersect($ac_times, (array)$access_caps);
236
+
237
+ ksort($ac_times);
238
+ }
239
+ else $ac_times = array();
240
+
241
+ return apply_filters("ws_plugin__s2member_get_capability_times", $ac_times, get_defined_vars());
242
+ }
243
+ }
244
  }
245
  ?>
includes/classes/registrations.inc.php CHANGED
@@ -974,7 +974,7 @@ if (!class_exists ("c_ws_plugin__s2member_registrations"))
974
  unset($sbj, $msg, $var, $val, $recipient, $email_configs_were_on); // Housekeeping.
975
  }
976
 
977
- if ($url = $GLOBALS["ws_plugin__s2member_registration_return_url"])
978
 
979
  if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)))
980
  if (($url = preg_replace ("/%%role%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($role)), $url)))
974
  unset($sbj, $msg, $var, $val, $recipient, $email_configs_were_on); // Housekeeping.
975
  }
976
 
977
+ if (!empty($GLOBALS["ws_plugin__s2member_registration_return_url"]) && ($url = $GLOBALS["ws_plugin__s2member_registration_return_url"]))
978
 
979
  if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)))
980
  if (($url = preg_replace ("/%%role%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($role)), $url)))
includes/classes/user-deletions.inc.php CHANGED
@@ -118,6 +118,7 @@ if (!class_exists ("c_ws_plugin__s2member_user_deletions"))
118
 
119
  delete_user_option ($user_id, "s2member_ipn_signup_vars");
120
  delete_user_option ($user_id, "s2member_paid_registration_times");
 
121
  delete_user_option ($user_id, "s2member_sp_references");
122
 
123
  delete_user_option ($user_id, "s2member_last_status_scan");
118
 
119
  delete_user_option ($user_id, "s2member_ipn_signup_vars");
120
  delete_user_option ($user_id, "s2member_paid_registration_times");
121
+ delete_user_option ($user_id, "s2member_capability_times");
122
  delete_user_option ($user_id, "s2member_sp_references");
123
 
124
  delete_user_option ($user_id, "s2member_last_status_scan");
includes/classes/users-list.inc.php CHANGED
@@ -80,28 +80,29 @@ if (!class_exists ("c_ws_plugin__s2member_users_list"))
80
  do_action ("ws_plugin__s2member_before_users_list_search", get_defined_vars ());
81
  unset /* Unset defined __refs, __v. */ ($__refs, $__v);
82
 
83
- if (isset ($query->query_vars) && !is_network_admin ()) // NOT in Network admin panels.
84
- if (is_array ($qv = $query->query_vars) && ($s = trim ($qv["search"], "* \t\n\r\0\x0B")) && ($s = "%" . esc_sql (like_escape ($s)) . "%"))
85
- {
86
- $query->query_fields = "SQL_CALC_FOUND_ROWS DISTINCT(`" . $wpdb->users . "`.`ID`)";
87
- $query->query_from = " FROM `" . $wpdb->users . "`, `" . $wpdb->usermeta . "`"; // Include meta table also.
88
- $query->query_where = " WHERE `" . $wpdb->users . "`.`ID` = `" . $wpdb->usermeta . "`.`user_id`"; // Join w/ meta table.
89
- $query->query_where .= " AND (" . apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_before", "", get_defined_vars ());
90
- $query->query_where .= " (`" . $wpdb->users . "`.`user_login` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_nicename` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`display_name` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_email` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_url` LIKE '" . $s . "')";
91
- $query->query_where .= " OR ((`" . $wpdb->usermeta . "`.`meta_key` = 'first_name' OR `" . $wpdb->usermeta . "`.`meta_key` = 'last_name') AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
92
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_subscr_id' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
93
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_custom' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
94
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_custom_fields' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
95
- if(apply_filters("ws_plugin__s2member_users_list_search_admin_notes", false, get_defined_vars())) // Off by default; this can get very slow on large sites.
96
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_notes' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
97
- $query->query_where .= apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_after", "", get_defined_vars ()) . ")"; // Leaving room for additional searches here.
98
-
99
- if(is_multisite()) // On a Multisite Network we need to make sure we're searching only users w/ capabilities on this blog.
100
- $query->query_where .= " AND `" . $wpdb->users . "`.`ID` IN(SELECT DISTINCT(`user_id`) FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "capabilities')";
101
-
102
- $query->query_from = apply_filters ("ws_plugin__s2member_before_users_list_search_from", $query->query_from, get_defined_vars ());
103
- $query->query_where = apply_filters ("ws_plugin__s2member_before_users_list_search_where", $query->query_where, get_defined_vars ());
104
- }
 
105
  foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
106
  do_action ("ws_plugin__s2member_after_users_list_search", get_defined_vars ());
107
  unset /* Unset defined __refs, __v. */ ($__refs, $__v);
80
  do_action ("ws_plugin__s2member_before_users_list_search", get_defined_vars ());
81
  unset /* Unset defined __refs, __v. */ ($__refs, $__v);
82
 
83
+ if (is_admin() && !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'users.php')
84
+ if(isset ($query->query_vars) && !is_network_admin ()) // NOT in Network admin panels.
85
+ if (is_array ($qv = $query->query_vars) && ($s = trim ($qv["search"], "* \t\n\r\0\x0B")) && ($s = "%" . esc_sql (like_escape ($s)) . "%"))
86
+ {
87
+ $query->query_fields = "SQL_CALC_FOUND_ROWS DISTINCT(`" . $wpdb->users . "`.`ID`)";
88
+ $query->query_from = " FROM `" . $wpdb->users . "`, `" . $wpdb->usermeta . "`"; // Include meta table also.
89
+ $query->query_where = " WHERE `" . $wpdb->users . "`.`ID` = `" . $wpdb->usermeta . "`.`user_id`"; // Join w/ meta table.
90
+ $query->query_where .= " AND (" . apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_before", "", get_defined_vars ());
91
+ $query->query_where .= " (`" . $wpdb->users . "`.`user_login` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_nicename` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`display_name` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_email` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_url` LIKE '" . $s . "')";
92
+ $query->query_where .= " OR ((`" . $wpdb->usermeta . "`.`meta_key` = 'first_name' OR `" . $wpdb->usermeta . "`.`meta_key` = 'last_name') AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
93
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_subscr_id' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
94
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_custom' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
95
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_custom_fields' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
96
+ if(apply_filters("ws_plugin__s2member_users_list_search_admin_notes", false, get_defined_vars())) // Off by default; this can get very slow on large sites.
97
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_notes' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
98
+ $query->query_where .= apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_after", "", get_defined_vars ()) . ")"; // Leaving room for additional searches here.
99
+
100
+ if(is_multisite()) // On a Multisite Network we need to make sure we're searching only users w/ capabilities on this blog.
101
+ $query->query_where .= " AND `" . $wpdb->users . "`.`ID` IN(SELECT DISTINCT(`user_id`) FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "capabilities')";
102
+
103
+ $query->query_from = apply_filters ("ws_plugin__s2member_before_users_list_search_from", $query->query_from, get_defined_vars ());
104
+ $query->query_where = apply_filters ("ws_plugin__s2member_before_users_list_search_where", $query->query_where, get_defined_vars ());
105
+ }
106
  foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
107
  do_action ("ws_plugin__s2member_after_users_list_search", get_defined_vars ());
108
  unset /* Unset defined __refs, __v. */ ($__refs, $__v);
includes/classes/utils-arrays.inc.php CHANGED
@@ -216,7 +216,7 @@ if (!class_exists ("c_ws_plugin__s2member_utils_arrays"))
216
  * See: {@link http://www.php.net/manual/en/function.ksort.php}
217
  * @return Unlike PHP's ``ksort()``, this function returns the array, and does NOT work on a reference.
218
  */
219
- function ksort_deep ($array = FALSE, $flags = SORT_REGULAR)
220
  {
221
  $array = (array)$array;
222
  ksort /* Sort by key. */ ($array, $flags);
216
  * See: {@link http://www.php.net/manual/en/function.ksort.php}
217
  * @return Unlike PHP's ``ksort()``, this function returns the array, and does NOT work on a reference.
218
  */
219
+ public static function ksort_deep ($array = FALSE, $flags = SORT_REGULAR)
220
  {
221
  $array = (array)$array;
222
  ksort /* Sort by key. */ ($array, $flags);
includes/functions/api-functions.inc.php CHANGED
@@ -2240,11 +2240,20 @@ if(!function_exists("s2member_registration_time"))
2240
  */
2241
  if(!function_exists("s2member_paid_registration_time"))
2242
  {
2243
- function s2member_paid_registration_time($level = FALSE, $user_id = FALSE)
2244
  {
2245
  return c_ws_plugin__s2member_registration_times::paid_registration_time($level, $user_id);
2246
  }
2247
  }
 
 
 
 
 
 
 
 
 
2248
  /**
2249
  * A powerful function that can retrieve almost anything
2250
  * you need to know about the current User, and/or a particular User.
2240
  */
2241
  if(!function_exists("s2member_paid_registration_time"))
2242
  {
2243
+ function s2member_paid_registration_time($level = false, $user_id = false)
2244
  {
2245
  return c_ws_plugin__s2member_registration_times::paid_registration_time($level, $user_id);
2246
  }
2247
  }
2248
+ if(!function_exists("s2member_capability_times"))
2249
+ {
2250
+ function s2member_capability_times($user_id = false, $levels_and_or_caps = false)
2251
+ {
2252
+ if(!$user_id) $user_id = get_current_user_id();
2253
+
2254
+ return c_ws_plugin__s2member_registration_times::get_capability_times($user_id, $levels_and_or_caps);
2255
+ }
2256
+ }
2257
  /**
2258
  * A powerful function that can retrieve almost anything
2259
  * you need to know about the current User, and/or a particular User.
includes/hooks.inc.php CHANGED
@@ -1,19 +1,19 @@
1
  <?php
2
  /**
3
- * Primary Hooks/Filters used by the s2Member plugin.
4
- *
5
- * Copyright: © 2009-2011
6
- * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * (coded in the USA)
8
- *
9
- * Released under the terms of the GNU General Public License.
10
- * You should have received a copy of the GNU General Public License,
11
- * along with this software. In the main directory, see: /licensing/
12
- * If not, see: {@link http://www.gnu.org/licenses/}.
13
- *
14
- * @package s2Member
15
- * @since 3.0
16
- */
17
  if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
18
  exit("Do not access this file directly.");
19
  /*
@@ -63,7 +63,7 @@ add_action("wp", "c_ws_plugin__s2member_security::security_gate", 1);
63
 
64
  add_filter("wp_mail", "c_ws_plugin__s2member_email_configs::email_filter");
65
 
66
- add_filter /* Shortcodes in widgets. */("widget_text", "do_shortcode");
67
 
68
  add_action("wp_print_styles", "c_ws_plugin__s2member_css_js_themes::add_css");
69
  add_action("wp_print_scripts", "c_ws_plugin__s2member_css_js_themes::add_js_w_globals");
@@ -159,6 +159,7 @@ add_action("show_user_profile", "c_ws_plugin__s2member_users_list::users_list_ed
159
  add_action("edit_user_profile_update", "c_ws_plugin__s2member_users_list::users_list_update_cols");
160
  add_action("personal_options_update", "c_ws_plugin__s2member_users_list::users_list_update_cols");
161
  add_action("set_user_role", "c_ws_plugin__s2member_registration_times::synchronize_paid_reg_times", 10, 2);
 
162
  add_filter("show_password_fields", "c_ws_plugin__s2member_user_securities::hide_password_fields", 10, 2);
163
 
164
  add_filter("cron_schedules", "c_ws_plugin__s2member_cron_jobs::extend_cron_schedules");
1
  <?php
2
  /**
3
+ * Primary Hooks/Filters used by the s2Member plugin.
4
+ *
5
+ * Copyright: © 2009-2011
6
+ * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
+ *
9
+ * Released under the terms of the GNU General Public License.
10
+ * You should have received a copy of the GNU General Public License,
11
+ * along with this software. In the main directory, see: /licensing/
12
+ * If not, see: {@link http://www.gnu.org/licenses/}.
13
+ *
14
+ * @package s2Member
15
+ * @since 3.0
16
+ */
17
  if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
18
  exit("Do not access this file directly.");
19
  /*
63
 
64
  add_filter("wp_mail", "c_ws_plugin__s2member_email_configs::email_filter");
65
 
66
+ add_filter("widget_text", "do_shortcode"); // Shortcodes in widgets.
67
 
68
  add_action("wp_print_styles", "c_ws_plugin__s2member_css_js_themes::add_css");
69
  add_action("wp_print_scripts", "c_ws_plugin__s2member_css_js_themes::add_js_w_globals");
159
  add_action("edit_user_profile_update", "c_ws_plugin__s2member_users_list::users_list_update_cols");
160
  add_action("personal_options_update", "c_ws_plugin__s2member_users_list::users_list_update_cols");
161
  add_action("set_user_role", "c_ws_plugin__s2member_registration_times::synchronize_paid_reg_times", 10, 2);
162
+ add_action("update_user_meta", "c_ws_plugin__s2member_registration_times::log_capability_time", 10, 4);
163
  add_filter("show_password_fields", "c_ws_plugin__s2member_user_securities::hide_password_fields", 10, 2);
164
 
165
  add_filter("cron_schedules", "c_ws_plugin__s2member_cron_jobs::extend_cron_schedules");
includes/menu-pages/code-samples/api-mop-vars-e.x-php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  if(!empty($_REQUEST["_s2member_vars"]))
3
  @list($restriction_type, $requirement_type, $requirement_type_value, $seeking_type, $seeking_type_value, $seeking_uri)
4
- = explode(".", stripslashes((string)$_REQUEST["_s2member_vars"]));
5
 
6
  if (!empty($seeking_type) /* One of: page|post|catg|ptag|file|ruri */ )
7
  echo 'You were trying to access a protected: ' . esc_html($seeking_type) . '.';
1
  <?php
2
  if(!empty($_REQUEST["_s2member_vars"]))
3
  @list($restriction_type, $requirement_type, $requirement_type_value, $seeking_type, $seeking_type_value, $seeking_uri)
4
+ = explode("..", stripslashes((string)$_REQUEST["_s2member_vars"]));
5
 
6
  if (!empty($seeking_type) /* One of: page|post|catg|ptag|file|ruri */ )
7
  echo 'You were trying to access a protected: ' . esc_html($seeking_type) . '.';
includes/menu-pages/code-samples/api-mop-vars.x-php CHANGED
@@ -1,12 +1,12 @@
1
  -----------------------------------------------------------------------------------------------------------
2
- Example redirection link with MOP Vars, in psuedo code:
3
  -----------------------------------------------------------------------------------------------------------
4
 
5
- s2Member's MOP Vars are now a dot (`.`) delimited list of six values.
6
 
7
  .../membership-options-page/
8
- ?_s2member_vars=[restriction type].[requirement type].[requirement type value].
9
- [seeking type].[seeking type value].[seeking URI base 64 encoded]
10
 
11
  -----------------------------------------------------------------------------------------------------------
12
 
1
  -----------------------------------------------------------------------------------------------------------
2
+ Example redirection link with MOP Vars, in pseudo code:
3
  -----------------------------------------------------------------------------------------------------------
4
 
5
+ s2Member's MOP Vars are now a double-dot (`..`) delimited list of six values.
6
 
7
  .../membership-options-page/
8
+ ?_s2member_vars=[restriction type]..[requirement type]..[requirement type value]..
9
+ [seeking type]..[seeking type value]..[seeking URI base 64 encoded]
10
 
11
  -----------------------------------------------------------------------------------------------------------
12
 
includes/menu-pages/menu-pages-s-min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function($){var esc_attr=esc_html=function(str){return String(str).replace(/"/g,"&quot;").replace(/\</g,"&lt;").replace(/\>/g,"&gt;")};if(location.href.match(/page\=ws-plugin--s2member/)){$("input.ws-plugin--s2member-update-roles-button, input.ws-plugin--s2member-reset-roles-button").click(function(){var $this=$(this);$this.val("one moment please ...");var levels='<?php echo (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; ?>';var resetUpdate=($this.hasClass("ws-plugin--s2member-reset-roles-button"))?"Reset":"Update";$.post(ajaxurl,{action:"ws_plugin__s2member_update_roles_via_ajax",ws_plugin__s2member_update_roles_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-update-roles-via-ajax")); ?>'},function(response){if(response==="1"){alert("s2Member's Roles/Capabilities "+((resetUpdate.toLowerCase()==="reset")?"have been successfully reset":"updated successfully")+".\nYour installation of s2Member has Membership Levels 0-"+levels+"."),$this.val(resetUpdate+" Roles/Capabilities")}else{if(response==="l"){alert("Sorry, your request failed.\ns2Member's Roles/Capabilities are locked by Filter:\nws_plugin__s2member_lock_roles_caps"),$this.val(resetUpdate+" Roles/Capabilities")}else{alert("Sorry, your request failed.\nAccess denied. Do you have the ability to `create_users`?"),$this.val(resetUpdate+" Roles/Capabilities")}}});return false})}if(location.href.match(/page\=ws-plugin--s2member-logs/)){$("input#ws-plugin--s2member-gateway-debug-logs-extensive-1").click(function(){var $this=$(this),thisChecked=(this.checked)?true:false;if(thisChecked){$("input#ws-plugin--s2member-gateway-debug-logs-1").attr("checked","checked")}});var $toggles=$("a.ws-plugin--s2member-log-file-viewport-toggle");$toggles.click(function(){$("textarea#ws-plugin--s2member-log-file-viewer").each(function(){var $viewer=$(this);if($viewer.attr("data-state")!=="expanded"){$viewer.css({height:($viewer.prop("scrollHeight")+50)+"px","overflow-y":"auto"});$toggles.html("&#8657; normalize viewport &#10073;");$viewer.attr("data-state","expanded")}else{$viewer.css({height:"auto","overflow-y":"scroll"});$toggles.html("&#8659; expand viewport &#8659;");$viewer.attr("data-state","scrolling")}});return false})}if(location.href.match(/page\=ws-plugin--s2member-mms-ops/)){$("select#ws-plugin--s2member-mms-registration-file").change(function(){if($(this).val()==="wp-signup"){var gv=$("select#ws-plugin--s2member-mms-registration-grants").val(),l0v=$("input#ws-plugin--s2member-mms-registration-blogs-level0").val();$("div#ws-plugin--s2member-mms-registration-support-package-details-wrapper").show(),$("div.ws-plugin--s2member-mms-registration-wp-login, table.ws-plugin--s2member-mms-registration-wp-login").hide(),$("div.ws-plugin--s2member-mms-registration-wp-signup, table.ws-plugin--s2member-mms-registration-wp-signup").show();$("div.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0, table.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0")[((gv==="all")?"show":"hide")]();$("input#ws-plugin--s2member-mms-registration-blogs-level0").val(((gv==="all")?((l0v>0)?l0v:"1"):"0"))}else{if($(this).val()==="wp-login"){var gv=$("select#ws-plugin--s2member-mms-registration-grants").val(),l0v=$("input#ws-plugin--s2member-mms-registration-blogs-level0").val();$("div#ws-plugin--s2member-mms-registration-support-package-details-wrapper").hide(),$("div.ws-plugin--s2member-mms-registration-wp-login, table.ws-plugin--s2member-mms-registration-wp-login").show(),$("div.ws-plugin--s2member-mms-registration-wp-signup, table.ws-plugin--s2member-mms-registration-wp-signup").hide();$("div.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0, table.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0").hide();$("input#ws-plugin--s2member-mms-registration-blogs-level0").val("0")}}}).trigger("change");$("select#ws-plugin--s2member-mms-registration-grants").change(function(){$("select#ws-plugin--s2member-mms-registration-file").trigger("change")})}if(location.href.match(/page\=ws-plugin--s2member-gen-ops/)){ws_plugin__s2member_generateSecurityKey=function(){var mt_rand=function(min,max){min=(arguments.length<1)?0:min;max=(arguments.length<2)?2147483647:max;return Math.floor(Math.random()*(max-min+1))+min};var chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()";for(var i=0,key="";i<64;i++){key+=chars.substr(mt_rand(0,chars.length-1),1)}$("input#ws-plugin--s2member-sec-encryption-key").val(key);return false};ws_plugin__s2member_enableSecurityKey=function(){if(confirm("Edit Key? Are you sure?\nThis could break your installation!\n\n*Note* If you've been testing s2Member, feel free to change this Key before you go live. Just don't go live, and then change it. You'll have unhappy Customers. Data corruption WILL occur! For your safety, s2Member keeps a history of the last 10 Keys that you've used. If you get yourself into a real situation, s2Member will let you revert back to a previous Key.")){$("input#ws-plugin--s2member-sec-encryption-key").removeAttr("disabled")}return false};ws_plugin__s2member_securityKeyHistory=function(){$("div#ws-plugin--s2member-sec-encryption-key-history").toggle();return false};$("select#ws-plugin--s2member-new-user-emails-enabled").change(function(){var $pluggable=$("input#ws-plugin--s2member-pluggables-wp-new-user-notification"),$this=$(this),$newUserEmails=$("div#ws-plugin--s2member-new-user-emails");if($pluggable.val()==="0"||$this.val()==="0"){($pluggable.val()==="0")?$this.attr("disabled","disabled"):$this.removeAttr("disabled");$(":input",$newUserEmails).attr("disabled","disabled"),$newUserEmails.css("opacity","0.5")}else{$this.removeAttr("disabled"),$(":input",$newUserEmails).removeAttr("disabled"),$newUserEmails.css("opacity","")}}).trigger("change");$("select#ws-plugin--s2member-login-reg-design-enabled").change(function(){var $this=$(this),$loginRegDesign=$("div#ws-plugin--s2member-login-reg-design");if($this.val()==="0"){$(":input",$loginRegDesign).attr("disabled","disabled"),$loginRegDesign.css("opacity","0.5"),$loginRegDesign.hide()}else{$(":input",$loginRegDesign).removeAttr("disabled"),$loginRegDesign.css("opacity",""),$loginRegDesign.show()}}).trigger("change");if($("input#ws-plugin--s2member-custom-reg-fields").length&&$("div#ws-plugin--s2member-custom-reg-field-configuration").length){(function(){var i,fieldDefaults,tools,table,$tools,$table;var $fields=$("input#ws-plugin--s2member-custom-reg-fields");var $configuration=$("div#ws-plugin--s2member-custom-reg-field-configuration");var fields=($fields.val())?$.JSON.parse($fields.val()):[];fields=(fields instanceof Array)?fields:[];fieldDefaults={section:"no",sectitle:"",id:"",label:"",type:"text",deflt:"",options:"",expected:"",required:"yes",levels:"all",editable:"yes",classes:"",styles:"",attrs:""};for(i=0;i<fields.length;i++){fields[i]=$.extend(true,{},fieldDefaults,fields[i])}tools='<div id="ws-plugin--s2member-custom-reg-field-configuration-tools"></div>',table='<table id="ws-plugin--s2member-custom-reg-field-configuration-table"></table>';$configuration.html(tools+table);$tools=$("div#ws-plugin--s2member-custom-reg-field-configuration-tools"),$table=$("table#ws-plugin--s2member-custom-reg-field-configuration-table");ws_plugin__s2member_customRegFieldSectionChange=function(select){var section=$(select).val();var sectitle_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle";(section==="yes")?$(sectitle_trs).css("display",""):$(sectitle_trs).css("display","none")};ws_plugin__s2member_customRegFieldTypeChange=function(select){var type=$(select).val();var deflt_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt",options_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-options",expected_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected";(type.match(/^(text|textarea)$/))?$(deflt_trs).css("display",""):$(deflt_trs).css("display","none");(type.match(/^(select|selects|checkboxes|radios)$/))?$(options_trs).css("display",""):$(options_trs).css("display","none");(type.match(/^(text|textarea)$/))?$(expected_trs).css("display",""):$(expected_trs).css("display","none")};ws_plugin__s2member_customRegFieldDelete=function(index){var newFields=new Array();for(var i=0;i<fields.length;i++){if(i!==index){newFields.push(fields[i])}}fields=newFields,updateFields(),buildTable()};ws_plugin__s2member_customRegFieldMoveUp=function(index){if(typeof fields[index]==="object"&&typeof fields[index-1]==="object"){var prevFieldObj=fields[index-1],thisFieldObj=fields[index];fields[index-1]=thisFieldObj,fields[index]=prevFieldObj;updateFields(),buildTable()}};ws_plugin__s2member_customRegFieldMoveDown=function(index){if(typeof fields[index]==="object"&&typeof fields[index+1]==="object"){var nextFieldObj=fields[index+1],thisFieldObj=fields[index];fields[index+1]=thisFieldObj,fields[index]=nextFieldObj;updateFields(),buildTable()}};ws_plugin__s2member_customRegFieldCreate=function(){var $table=$("table#ws-plugin--s2member-custom-reg-field-configuration-tools-form"),field={};$(":input[property]",$table).each(function(){var $this=$(this),property=$this.attr("property"),val=$.trim($this.val());field[property]=val});if((field=validateField(field))){fields.push(field),updateFields(),buildTools(),buildTable(),scrollReset();setTimeout(function(){var row="tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-"+(fields.length-1);alert('Field created successfully.\n* Remember to "Save All Changes".');$(row).effect("highlight",1500)},500)}};ws_plugin__s2member_customRegFieldUpdate=function(index){var $table=$("table#ws-plugin--s2member-custom-reg-field-configuration-tools-form"),field={};$(":input[property]",$table).each(function(){var $this=$(this),property=$this.attr("property"),val=$.trim($this.val());field[property]=val});if((field=validateField(field,index))){fields[index]=field,updateFields(),buildTools(),buildTable(),scrollReset();setTimeout(function(){var row="tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-"+index;alert('Field updated successfully.\n* Remember to "Save All Changes".');$(row).effect("highlight",1500)},500)}};ws_plugin__s2member_customRegFieldAdd=function(){buildTools(true)};ws_plugin__s2member_customRegFieldEdit=function(index){buildTools(false,index),scrollReset()};ws_plugin__s2member_customRegFieldCancel=function(){buildTools(),scrollReset()};var validateField=function(field,index){var editing=(typeof index==="number"&&typeof fields[index]==="object")?true:false,errors=[],options,i;if(typeof field!=="object"||typeof(field=$.extend(true,{},fieldDefaults,field))!=="object"){alert("Invalid field object. Please try again.");return false}field.sectitle=(field.section==="yes")?field.sectitle:"";field.deflt=(field.type.match(/^(text|textarea)$/))?field.deflt:"";field.deflt=(field.type.match(/^(text)$/))?field.deflt.replace(/[\r\n\t ]+/g," "):field.deflt;field.options=(field.type.match(/^(select|selects|checkboxes|radios)$/))?field.options:"";field.expected=(field.type.match(/^(text|textarea)$/))?field.expected:"";if(!field.id){errors.push("Unique Field ID:\nThis is required. Please try again.")}else{if(fieldIdExists(field.id)&&(!editing||field.id!==fields[index].id)){errors.push("Unique Field ID:\nThat Field ID already exists. Please try again.")}}if(!field.label){errors.push("Field Label/Description:\nThis is required. Please try again.")}if(field.type.match(/^(select|selects|checkboxes|radios)$/)&&!field.options){errors.push("Option Configuration File:\nThis is required. Please try again.")}else{if(field.type.match(/^(select|selects|checkboxes|radios)$/)){for(i=0;i<(options=field.options.split(/[\r\n]+/)).length;i++){if(!(options[i]=$.trim(options[i])).match(/^([^\|]*)(\|)([^\|]*)(\|default)?$/)){errors.push("Option Configuration File:\nInvalid configuration at line #"+(i+1)+".");break}}field.options=$.trim(options.join("\n"))}}if(!(field.levels=field.levels.replace(/ /g,""))){errors.push("Applicable Levels:\nThis is required. Please try again.")}else{if(!field.levels.match(/^(all|[0-9,]+)$/)){errors.push("Applicable Levels:\nShould be comma-delimited Levels, or just type: all.\n(examples: 0,1,2,3,4 or type the word: all)")}}if(field.classes&&field.classes.match(/[^a-z 0-9 _ \-]/i)){errors.push("CSS Classes:\nContains invalid characters. Please try again.\n(only: alphanumerics, underscores, hyphens, spaces)")}if(field.styles&&field.styles.match(/["\=\>\<]/)){errors.push('CSS Styles:\nContains invalid characters. Please try again.\n(do NOT use these characters: = " < >)')}if(field.attrs&&field.attrs.match(/[\>\<]/)){errors.push("Other Attributes:\nContains invalid characters. Please try again.\n(do NOT use these characters: < >)")}if(errors.length>0){alert(errors.join("\n\n"));return false}else{return field}};var updateFields=function(){$fields.val(((fields.length>0)?$.JSON.stringify(fields):""))};var fieldId2Var=function(fieldId){return(typeof fieldId==="string")?$.trim(fieldId).toLowerCase().replace(/[^a-z0-9]/g,"_"):""};var fieldTypeDesc=function(type){var types={text:"Text (single line)",textarea:"Textarea (multi-line)",select:"Select Menu (drop-down)",selects:"Select Menu (multi-option)",checkbox:"Checkbox (single)",pre_checkbox:"Checkbox (pre-checked)",checkboxes:"Checkboxes (multi-option)",radios:"Radio Buttons (multi-option)"};if(typeof types[type]==="string"){return types[type]}return""};var fieldIdExists=function(fieldId){for(var i=0;i<fields.length;i++){if(fields[i].id===fieldId){return true}}};var scrollReset=function(){scrollTo(0,$("div.ws-plugin--s2member-custom-reg-fields-section").offset()["top"]-100)};var buildTools=function(adding,index){var i=0,html="",form="",w=0,h=0,editing=(typeof index==="number"&&typeof fields[index]==="object")?true:false,displayForm=(adding||editing)?true:false,field=(editing)?$.extend(true,{},fieldDefaults,fields[index]):fieldDefaults;html+='<a href="#" onclick="ws_plugin__s2member_customRegFieldAdd(); return false;">Add New Field</a>';tb_remove(),$("div#ws-plugin--s2member-custom-reg-field-configuration-thickbox-tools-form").remove();if(displayForm){form+='<div id="ws-plugin--s2member-custom-reg-field-configuration-thickbox-tools-form">';form+='<table id="ws-plugin--s2member-custom-reg-field-configuration-tools-form">';form+="<tbody>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section">Starts A New Section?</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section">';form+='<td colspan="2">';form+='<select property="section" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section" onchange="ws_plugin__s2member_customRegFieldSectionChange(this);">';form+='<option value="no"'+((field.section==="no")?' selected="selected"':"")+'">No (this Field flows normally)</option>';form+='<option value="yes"'+((field.section==="yes")?' selected="selected"':"")+'">Yes (this Field begins a new section)</option>';form+="</select><br />";form+="<small>Optional. Allows Fields to be grouped into sections.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle ws-plugin--s2member-custom-reg-field-configuration-tools-form-section"'+((field.section==="yes")?"":' style="display:none;"')+'><td colspan="2"><hr /></td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle ws-plugin--s2member-custom-reg-field-configuration-tools-form-section"'+((field.section==="yes")?"":' style="display:none;"')+">";form+='<td colspan="2">';form+="Title for this new section? (optional)<br />";form+='<input type="text" property="sectitle" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle" value="'+esc_attr(field.sectitle)+'" /><br />';form+="<small>If empty, a simple divider will be used by default.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-type"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type">Form Field Type: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type">';form+='<td colspan="2">';form+='<select property="type" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type" onchange="ws_plugin__s2member_customRegFieldTypeChange(this);">';form+='<option value="text"'+((field.type==="text")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("text"))+"</option>";form+='<option value="textarea"'+((field.type==="textarea")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("textarea"))+"</option>";form+='<option value="select"'+((field.type==="select")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("select"))+"</option>";form+='<option value="selects"'+((field.type==="selects")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("selects"))+"</option>";form+='<option value="checkbox"'+((field.type==="checkbox")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("checkbox"))+"</option>";form+='<option value="pre_checkbox"'+((field.type==="pre_checkbox")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("pre_checkbox"))+"</option>";form+='<option value="checkboxes"'+((field.type==="checkboxes")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("checkboxes"))+"</option>";form+='<option value="radios"'+((field.type==="radios")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("radios"))+"</option>";form+="</select><br />";form+="<small>The options below may change, based on the Field Type you choose here.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-label"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label">Field Label/Desc: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label">';form+='<td colspan="2">';form+='<input type="text" property="label" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label" value="'+esc_attr(field.label)+'" /><br />';form+="<small>Examples: <code>Choose Country</code>, <code>Street Address</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-id"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id">Unique Field ID: *</label></label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id">';form+='<td colspan="2">';form+='<input type="text" property="id" maxlength="25" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id" value="'+esc_attr(field.id)+'" /><br />';form+="<small>Examples: <code>country_code</code>, <code>street_address</code></small><br />";form+='<small>e.g. <code>[s2Get user_field="country_code" /]</code></small>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-required"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">Field Required: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">';form+='<td colspan="2">';form+='<select property="required" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">';form+='<option value="yes"'+((field.required==="yes")?' selected="selected"':"")+'">Yes (required)</option>';form+='<option value="no"'+((field.required==="no")?' selected="selected"':"")+'">No (optional)</option>';form+="</select><br />";form+='<small>If <code>yes</code>, only Users/Members will be "required" to enter this field.</small><br />';form+="<small>* Administrators are exempt from this requirement.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+'><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt">Default Text Value: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<textarea property="deflt" wrap="off" spellcheck="false" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt" rows="1">'+esc_html(field.deflt)+"</textarea><br />";form+="<small>Default value before user input is received.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-options"'+((field.type.match(/^(select|selects|checkboxes|radios)$/))?"":' style="display:none;"')+'><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options"'+((field.type.match(/^(select|selects|checkboxes|radios)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options">Option Configuration File: * (one option per line)</label><br />';form+="<small>Use a pipe <code>|</code> delimited format: <code>option value|option label</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options"'+((field.type.match(/^(select|selects|checkboxes|radios)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<textarea property="options" wrap="off" spellcheck="false" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options" rows="3">'+esc_html(field.options)+"</textarea><br />";form+="Here is a quick example:<br />";form+="<small>You can also specify a <em>default</em> option:</small><br />";form+="<code>US|United States|default</code><br />";form+="<code>CA|Canada</code><br />";form+="<code>VI|Virgin Islands (U.S.)</code>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+'><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected">Expected Format: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<select property="expected" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected">';form+='<option value=""'+((field.expected==="")?' selected="selected"':"")+'">Anything Goes</option>';form+='<option disabled="disabled"></option>';form+='<optgroup label="Specific Input Types">';form+='<option value="numeric-wp-commas"'+((field.expected==="numeric-wp-commas")?' selected="selected"':"")+'">Numeric (with or without decimals, commas allowed)</option>';form+='<option value="numeric"'+((field.expected==="numeric")?' selected="selected"':"")+'">Numeric (with or without decimals, no commas)</option>';form+='<option value="integer"'+((field.expected==="integer")?' selected="selected"':"")+'">Integer (whole number, without any decimals)</option>';form+='<option value="integer-gt-0"'+((field.expected==="integer-gt-0")?' selected="selected"':"")+'">Integer > 0 (whole number, no decimals, greater than 0)</option>';form+='<option value="float"'+((field.expected==="float")?' selected="selected"':"")+'">Float (floating point number, decimals required)</option>';form+='<option value="float-gt-0"'+((field.expected==="float-gt-0")?' selected="selected"':"")+'">Float > 0 (floating point number, decimals required, greater than 0)</option>';form+='<option value="date"'+((field.expected==="date")?' selected="selected"':"")+'">Date (required date format: dd/mm/yyyy)</option>';form+='<option value="email"'+((field.expected==="email")?' selected="selected"':"")+'">Email (require valid email)</option>';form+='<option value="url"'+((field.expected==="url")?' selected="selected"':"")+'">Full URL (starting with http or https)</option>';form+='<option value="domain"'+((field.expected==="domain")?' selected="selected"':"")+'">Domain Name (domain name only, without http)</option>';form+='<option value="phone"'+((field.expected==="phone")?' selected="selected"':"")+'">Phone # (10 digits w/possible hyphens,spaces,brackets)</option>';form+='<option value="uszip"'+((field.expected==="uszip")?' selected="selected"':"")+'">US Zipcode (5-9 digits w/possible hyphen)</option>';form+='<option value="cazip"'+((field.expected==="cazip")?' selected="selected"':"")+'">Canadian Zipcode (6 alpha-numerics w/possible space)</option>';form+='<option value="uczip"'+((field.expected==="uczip")?' selected="selected"':"")+'">US/Canadian Zipcode (either a US or Canadian zipcode)</option>';form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Any Character Combination">';for(i=1;i<=25;i++){form+='<option value="any-'+i+'"'+((field.expected==="any-"+i)?' selected="selected"':"")+'">Any Character Combination ( '+i+" character minimum )</option>";form+='<option value="any-'+i+'-e"'+((field.expected==="any-"+i+"-e")?' selected="selected"':"")+'">Any Character Combination ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics, Spaces &amp; Punctuation Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-spaces-punctuation-'+i+'"'+((field.expected==="alphanumerics-spaces-punctuation-"+i)?' selected="selected"':"")+'">Alphanumerics, Spaces &amp; Punctuation ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-spaces-punctuation-'+i+'-e"'+((field.expected==="alphanumerics-spaces-punctuation-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics, Spaces &amp; Punctuation ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics &amp; Spaces Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-spaces-'+i+'"'+((field.expected==="alphanumerics-spaces-"+i)?' selected="selected"':"")+'">Alphanumerics &amp; Spaces ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-spaces-'+i+'-e"'+((field.expected==="alphanumerics-spaces-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics &amp; Spaces ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics &amp; Punctuation Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-punctuation-'+i+'"'+((field.expected==="alphanumerics-punctuation-"+i)?' selected="selected"':"")+'">Alphanumerics &amp; Punctuation ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-punctuation-'+i+'-e"'+((field.expected==="alphanumerics-punctuation-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics &amp; Punctuation ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-'+i+'"'+((field.expected==="alphanumerics-"+i)?' selected="selected"':"")+'">Alphanumerics ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-'+i+'-e"'+((field.expected==="alphanumerics-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphabetics Only">';for(i=1;i<=25;i++){form+='<option value="alphabetics-'+i+'"'+((field.expected==="alphabetics-"+i)?' selected="selected"':"")+'">Alphabetics ( '+i+" character minimum )</option>";form+='<option value="alphabetics-'+i+'-e"'+((field.expected==="alphabetics-"+i+"-e")?' selected="selected"':"")+'">Alphabetics ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Numeric Digits Only">';for(i=1;i<=25;i++){form+='<option value="numerics-'+i+'"'+((field.expected==="numerics-"+i)?' selected="selected"':"")+'">Numeric Digits ( '+i+" digit minimum )</option>";form+='<option value="numerics-'+i+'-e"'+((field.expected==="numerics-"+i+"-e")?' selected="selected"':"")+'">Numeric Digits ( exactly '+i+" digit"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+="</select><br />";form+="<small>Only Users/Members will be required to meet this criteria.</small><br />";form+="<small>* Administrators are exempt from this.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels">Applicable Membership Levels: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels">';form+='<td colspan="2">';form+='<input type="text" property="levels" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels" value="'+esc_attr(field.levels)+'" /><br />';form+="<small>Please use comma-delimited Level #'s: <code>0,1,2,3,4</code> or type: <code>all</code>.</small><br />";form+="<small>This allows you to enable this field - only at specific Membership Levels.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">Allow Profile Edits: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">';form+='<td colspan="2">';form+='<select property="editable" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">';form+='<option value="yes"'+((field.editable==="yes")?' selected="selected"':"")+'">Yes (editable)</option>';form+='<option value="no"'+((field.editable==="no")?' selected="selected"':"")+'">No (uneditable after registration)</option>';form+='<option value="no-invisible"'+((field.editable==="no-invisible")?' selected="selected"':"")+'">No (uneditable &amp; totally invisible after registration)</option>';form+='<option value="no-always-invisible"'+((field.editable==="no-always-invisible")?' selected="selected"':"")+'">No (uneditable &amp; totally invisible, both during &amp; after registration)</option>';form+='<option value="yes-invisible"'+((field.editable==="yes-invisible")?' selected="selected"':"")+'">Yes (editable after registration / invisible during registration)</option>';form+="</select><br />";form+="<small>If <code>No</code>, this field will be un-editable after registration.</small><br />";form+="<small>* Administrators are exempt from this.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes">CSS Classes: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes">';form+='<td colspan="2">';form+='<input type="text" property="classes" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes" value="'+esc_attr(field.classes)+'" /><br />';form+="<small>Example: <code>my-style-1 my-style-2</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles">CSS Styles: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles">';form+='<td colspan="2">';form+='<input type="text" property="styles" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles" value="'+esc_attr(field.styles)+'" /><br />';form+="<small>Example: <code>color:#000000; background:#FFFFFF;</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs">Other Attributes: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs">';form+='<td colspan="2">';form+='<input type="text" property="attrs" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs" value="'+esc_attr(field.attrs)+'" /><br />';form+='<small>Example: <code>onkeyup="" onblur=""</code></small>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-buttons"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-buttons">';form+='<td align="left">';form+='<input type="button" value="Cancel" onclick="ws_plugin__s2member_customRegFieldCancel();" />';form+="</td>";form+='<td align="right">';form+='<input type="button" value="'+((editing)?"Update This Field":"Create Registration Field")+'" onclick="'+((editing)?"ws_plugin__s2member_customRegFieldUpdate("+index+");":"ws_plugin__s2member_customRegFieldCreate();")+'" />';form+="</td>";form+="</tr>";form+="</tbody>";form+="</table>";form+="<div>";$("body").append(form);tb_show(((editing)?"Editing Registration/Profile Field":"New Custom Registration/Profile Field"),"#TB_inline?inlineId=ws-plugin--s2member-custom-reg-field-configuration-thickbox-tools-form");$("table#ws-plugin--s2member-custom-reg-field-configuration-tools-form").show()}$tools.html(html)};var buildTable=function(){var l=fields.length,i=0,html="",eo="o";html+="<tbody>";html+="<tr>";html+="<th>Order</th>";html+="<th>Field Type</th>";html+="<th>Unique ID</th>";html+="<th>Required</th>";html+="<th>Levels</th>";html+="<th>- Tools -</th>";html+="</tr>";if(fields.length>0){for(i=0;i<fields.length;i++){html+='<tr class="'+esc_attr((eo=(eo==="o")?"e":"o"))+((fields[i].section==="yes")?" s":"")+" ws-plugin--s2member-custom-reg-field-configuration-table-row-"+i+'">';html+='<td nowrap="nowrap"><a class="ws-plugin--s2member-custom-reg-field-configuration-move-up" href="#" onclick="ws_plugin__s2member_customRegFieldMoveUp('+i+'); return false;"></a><a class="ws-plugin--s2member-custom-reg-field-configuration-move-down" href="#" onclick="ws_plugin__s2member_customRegFieldMoveDown('+i+'); return false;"></a></td>';html+='<td nowrap="nowrap">'+esc_html(fieldTypeDesc(fields[i].type))+"</td>";html+='<td nowrap="nowrap">'+esc_html(fields[i].id)+"</td>";html+='<td nowrap="nowrap">'+esc_html(fields[i].required)+"</td>";html+='<td nowrap="nowrap">'+esc_html(fields[i].levels)+"</td>";html+='<td nowrap="nowrap"><a class="ws-plugin--s2member-custom-reg-field-configuration-edit" href="#" onclick="ws_plugin__s2member_customRegFieldEdit('+i+'); return false;"></a><a class="ws-plugin--s2member-custom-reg-field-configuration-delete" href="#" onclick="ws_plugin__s2member_customRegFieldDelete('+i+'); return false;"></a></td>';html+="</tr>"}}else{html+="<tr>";html+='<td colspan="6">No Custom Fields are configured.</td>';html+="</tr>"}html+="</tbody>";$table.html(html)};buildTools(),buildTable()})()}}if(location.href.match(/page\=ws-plugin--s2member-res-ops/)){$("input#ws-plugin--s2member-brute-force-restrictions-reset-button").click(function(){var $this=$(this);$this.val("one moment please ...");$.post(ajaxurl,{action:"ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax",ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-delete-reset-all-ip-restrictions-via-ajax")); ?>'},function(response){alert("s2Member's Brute Force Restriction Logs have all been reset."),$this.val("Reset Brute Force Logs")});return false});$("input#ws-plugin--s2member-ip-restrictions-reset-button").click(function(){var $this=$(this);$this.val("one moment please ...");$.post(ajaxurl,{action:"ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax",ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-delete-reset-all-ip-restrictions-via-ajax")); ?>'},function(response){alert("s2Member's IP Restriction Logs have all been reset."),$this.val("Reset IP Restriction Logs")});return false});$('div.ws-plugin--s2member-query-level-access-section input[type="checkbox"][name="ws_plugin__s2member_filter_wp_query[]"]').change(function(){var thisChange=$(this).val();$('div.ws-plugin--s2member-query-level-access-section input[type="checkbox"][name="ws_plugin__s2member_filter_wp_query[]"]').each(function(){var $this=$(this),val=$this.val(),checkboxes='input[type="checkbox"]';if(val==="all"&&this.checked){$this.nextAll(checkboxes).attr({checked:"checked",disabled:"disabled"})}else{if(val==="all"&&!this.checked){$this.nextAll(checkboxes).removeAttr("disabled");(thisChange==="all")?$this.nextAll(checkboxes).removeAttr("checked"):null}}})}).last().trigger("change")}if(location.href.match(/page\=ws-plugin--s2member-down-ops/)){var updateCloudFrontPrivateKey=function(){var $hiddenPrivateKey=$("input#ws-plugin--s2member-amazon-cf-files-private-key");var $visiblePrivateKeyEntry=$("textarea#ws-plugin--s2member-amazon-cf-files-private-key-entry");var hiddenPrivateKeyValue=$.trim($hiddenPrivateKey.val()),visiblePrivateKeyEntryValue=$.trim($visiblePrivateKeyEntry.val());if((hiddenPrivateKeyValue&&!visiblePrivateKeyEntryValue)||visiblePrivateKeyEntryValue.match(/[^\r\n\u25CF]/)){$hiddenPrivateKey.val(visiblePrivateKeyEntryValue),$visiblePrivateKeyEntry.val(visiblePrivateKeyEntryValue.replace(/[^\r\n]/g,String.fromCharCode(9679)))}};$("form#ws-plugin--s2member-options-form").submit(updateCloudFrontPrivateKey);$("textarea#ws-plugin--s2member-amazon-cf-files-private-key-entry").change(updateCloudFrontPrivateKey).trigger("change");var updateCloudFrontDistroCfgs=function(){var $hiddenPrivateKey=$("input#ws-plugin--s2member-amazon-cf-files-private-key");var $visiblePrivateKeyId=$("input#ws-plugin--s2member-amazon-cf-files-private-key-id");var $autoConfigDistros=$("input#ws-plugin--s2member-amazon-cf-files-auto-configure-distros");var $autoConfigDistrosStatus=$("input#ws-plugin--s2member-amazon-cf-files-distros-auto-config-status");var autoConfigDistrosStatusValue=$.trim($autoConfigDistrosStatus.val());var hiddenPrivateKeyValue=$.trim($hiddenPrivateKey.val()),visiblePrivateKeyIdValue=$.trim($visiblePrivateKeyId.val());var hiddenPrivateKeyPrevConfigValue=$.trim($hiddenPrivateKey.attr("data-s-prev-config-value")),visiblePrivateKeyIdPrevConfigValue=$.trim($visiblePrivateKeyId.attr("data-s-prev-config-value"));if(autoConfigDistrosStatusValue==="configured"&&((visiblePrivateKeyIdPrevConfigValue&&visiblePrivateKeyIdValue!==visiblePrivateKeyIdPrevConfigValue)||(hiddenPrivateKeyPrevConfigValue&&hiddenPrivateKeyValue!==hiddenPrivateKeyPrevConfigValue))){alert("s2Member will need to delete and re-configure your Amazon CloudFront distributions if you change this. When you're done editing, click (Save All Changes) below.");$autoConfigDistros.attr("checked","checked")}else{if(autoConfigDistrosStatusValue!=="configured"&&visiblePrivateKeyIdValue&&hiddenPrivateKeyValue){alert("s2Member will need to auto-configure your Amazon CloudFront distributions for you. When you're done editing, click (Save All Changes) below.");$autoConfigDistros.attr("checked","checked")}}};$("input#ws-plugin--s2member-amazon-cf-files-private-key-id").change(updateCloudFrontDistroCfgs);$("textarea#ws-plugin--s2member-amazon-cf-files-private-key-entry").change(updateCloudFrontDistroCfgs);$("input#ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames").change(function(){var $this=$(this),thisChecked=(this.checked)?true:false;var $autoConfigDistros=$("input#ws-plugin--s2member-amazon-cf-files-auto-configure-distros");var $autoConfigDistroCnames=$("div#ws-plugin--s2member-amazon-cf-files-auto-configure-distro-cnames");(thisChecked)?$autoConfigDistroCnames.show():$autoConfigDistroCnames.hide();(thisChecked)?$autoConfigDistros.attr("checked","checked"):null}).trigger("change")}if(location.href.match(/page\=ws-plugin--s2member-paypal-ops/)){$("select#ws-plugin--s2member-auto-eot-system-enabled").change(function(){var $this=$(this),val=$this.val();var $viaCron=$("p#ws-plugin--s2member-auto-eot-system-enabled-via-cron");if(val==2){$viaCron.show()}else{$viaCron.hide()}})}if(location.href.match(/page\=ws-plugin--s2member-paypal-buttons/)){$("div.ws-menu-page select[id]").filter(function(){return this.id.match(/^ws-plugin--s2member-(level[1-9][0-9]*|modification)-term$/)}).change(function(){var button=this.id.replace(/^ws-plugin--s2member-(.+?)-term$/g,"$1");var trialDisabled=($(this).val().split("-")[2].replace(/[^0-1BN]/g,"")==="BN")?1:0;$("p#ws-plugin--s2member-"+button+"-trial-line").css("display",(trialDisabled?"none":""));$("span#ws-plugin--s2member-"+button+"-trial-then").css("display",(trialDisabled?"none":""));$("span#ws-plugin--s2member-"+button+"-20p-rule").css("display",(trialDisabled?"none":""));(trialDisabled)?$("input#ws-plugin--s2member-"+button+"-trial-period").val(0):null;(trialDisabled)?$("input#ws-plugin--s2member-"+button+"-trial-amount").val("0.00"):null});$("div.ws-menu-page input[id]").filter(function(){return this.id.match(/^ws-plugin--s2member-(level[1-9][0-9]*|modification|ccap)-ccaps$/)}).keyup(function(){var value=this.value.replace(/^(-all|-al|-a|-)[;,]*/gi,""),_all=(this.value.match(/^(-all|-al|-a|-)[;,]*/i))?"-all,":"";if(value.match(/[^a-z_0-9,]/)){this.value=_all+$.trim($.trim(value).replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase())}});ws_plugin__s2member_paypalButtonGenerate=function(button){var shortCodeTemplate='[s2Member-PayPal-Button %%attrs%% image="default" output="button" /]',shortCodeTemplateAttrs="",labels={};eval("<?php echo c_ws_plugin__s2member_utils_strings::esc_dq($labels); ?>");var shortCode=$("input#ws-plugin--s2member-"+button+"-shortcode");var code=$("textarea#ws-plugin--s2member-"+button+"-button");var modLevel=$("select#ws-plugin--s2member-modification-level");var level=(button==="modification")?modLevel.val().split(":",2)[1]:button.replace(/^level/,"");var label=labels["level"+level].replace(/"/g,"");var desc=$.trim($("input#ws-plugin--s2member-"+button+"-desc").val().replace(/"/g,""));var trialAmount=$("input#ws-plugin--s2member-"+button+"-trial-amount").val().replace(/[^0-9\.]/g,"");var trialPeriod=$("input#ws-plugin--s2member-"+button+"-trial-period").val().replace(/[^0-9]/g,"");var trialTerm=$("select#ws-plugin--s2member-"+button+"-trial-term").val().replace(/[^A-Z]/g,"");var regAmount=$("input#ws-plugin--s2member-"+button+"-amount").val().replace(/[^0-9\.]/g,"");var regPeriod=$("select#ws-plugin--s2member-"+button+"-term").val().split("-")[0].replace(/[^0-9]/g,"");var regTerm=$("select#ws-plugin--s2member-"+button+"-term").val().split("-")[1].replace(/[^A-Z]/g,"");var regRecur=$("select#ws-plugin--s2member-"+button+"-term").val().split("-")[2].replace(/[^0-1BN]/g,"");var regRecurTimes="",regRecurRetry="1";var localeCode="",digital="0",noShipping="1";var pageStyle=$.trim($("input#ws-plugin--s2member-"+button+"-page-style").val().replace(/"/g,""));var currencyCode=$("select#ws-plugin--s2member-"+button+"-currency").val().replace(/[^A-Z]/g,"");var cCaps=$.trim($.trim($("input#ws-plugin--s2member-"+button+"-ccaps").val()).replace(/^(-all|-al|-a|-)[;,]*/gi,"").replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase());cCaps=($.trim($("input#ws-plugin--s2member-"+button+"-ccaps").val()).match(/^(-all|-al|-a|-)[;,]*/i))?((cCaps)?"-all,":"-all")+cCaps.toLowerCase():cCaps.toLowerCase();trialPeriod=(regRecur==="BN")?"0":trialPeriod;trialAmount=(!trialAmount||isNaN(trialAmount)||trialAmount<0.01||trialPeriod<=0)?"0":trialAmount;var levelCcapsPer=(regRecur==="BN"&&regTerm!=="L")?level+":"+cCaps+":"+regPeriod+" "+regTerm:level+":"+cCaps;levelCcapsPer=levelCcapsPer.replace(/\:+$/g,"");if(trialAmount!=="0"&&(isNaN(trialAmount)||trialAmount<0)){alert("— Oops, a slight problem: —\n\nWhen provided, Trial Amount must be >= 0.00");return false}else{if(trialAmount!=="0"&&trialAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Trial Amount is: 10000.00");return false}else{if(trialTerm==="D"&&trialPeriod>90){alert("— Oops, a slight problem: —\n\nMaximum Trial Days is: 90.\nIf you want to offer more than 90 days, please choose Weeks or Months from the drop-down.");return false}else{if(trialTerm==="W"&&trialPeriod>52){alert("— Oops, a slight problem: —\n\nMaximum Trial Weeks is: 52.\nIf you want to offer more than 52 weeks, please choose Months from the drop-down.");return false}else{if(trialTerm==="M"&&trialPeriod>24){alert("— Oops, a slight problem: —\n\nMaximum Trial Months is: 24.\nIf you want to offer more than 24 months, please choose Years from the drop-down.");return false}else{if(trialTerm==="Y"&&trialPeriod>5){alert("— Oops, a slight problem: —\n\nMax Trial Period Years is: 5.");return false}else{if(!regAmount||isNaN(regAmount)||regAmount<0.01){alert("— Oops, a slight problem: —\n\nAmount must be >= 0.01");return false}else{if(regAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Amount is: 10000.00");return false}else{if(!desc){alert("— Oops, a slight problem: —\n\nPlease type a Description for this Button.");return false}}}}}}}}}code.html(code.val().replace(/ \<\!--(\<input type\="hidden" name\="(amount|src|srt|sra|a1|p1|t1|a3|p3|t3)" value\="(.*?)" \/\>)--\>/g," $1"));(parseInt(trialPeriod)<=0)?code.html(code.val().replace(/ (\<input type\="hidden" name\="(a1|p1|t1)" value\="(.*?)" \/\>)/g," <!--$1-->")):null;(regRecur==="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="cmd" value\=")(.*?)(" \/\>)/g," $1_xclick$3")):null;(regRecur==="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="(src|srt|sra|a1|p1|t1|a3|p3|t3)" value\="(.*?)" \/\>)/g," <!--$1-->")):null;(regRecur!=="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="cmd" value\=")(.*?)(" \/\>)/g," $1_xclick-subscriptions$3")):null;(regRecur!=="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="amount" value\="(.*?)" \/\>)/g," <!--$1-->")):null;shortCodeTemplateAttrs+=(button==="modification")?'modify="1" ':"";shortCodeTemplateAttrs+='level="'+esc_attr(level)+'" ccaps="'+esc_attr(cCaps)+'" desc="'+esc_attr(desc)+'" ps="'+esc_attr(pageStyle)+'" lc="'+esc_attr(localeCode)+'" cc="'+esc_attr(currencyCode)+'" dg="'+esc_attr(digital)+'" ns="'+esc_attr(noShipping)+'" custom="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"';shortCodeTemplateAttrs+=' ta="'+esc_attr(trialAmount)+'" tp="'+esc_attr(trialPeriod)+'" tt="'+esc_attr(trialTerm)+'" ra="'+esc_attr(regAmount)+'" rp="'+esc_attr(regPeriod)+'" rt="'+esc_attr(regTerm)+'" rr="'+esc_attr(regRecur)+'" rrt="'+esc_attr(regRecurTimes)+'" rra="'+esc_attr(regRecurRetry)+'"';shortCode.val(shortCodeTemplate.replace(/%%attrs%%/,shortCodeTemplateAttrs));code.html(code.val().replace(/ name\="lc" value\="(.*?)"/,' name="lc" value="'+esc_attr(localeCode)+'"'));code.html(code.val().replace(/ name\="no_shipping" value\="(.*?)"/,' name="no_shipping" value="'+esc_attr(noShipping)+'"'));code.html(code.val().replace(/ name\="item_name" value\="(.*?)"/,' name="item_name" value="'+esc_attr(desc)+'"'));code.html(code.val().replace(/ name\="item_number" value\="(.*?)"/,' name="item_number" value="'+esc_attr(levelCcapsPer)+'"'));code.html(code.val().replace(/ name\="page_style" value\="(.*?)"/,' name="page_style" value="'+esc_attr(pageStyle)+'"'));code.html(code.val().replace(/ name\="currency_code" value\="(.*?)"/,' name="currency_code" value="'+esc_attr(currencyCode)+'"'));code.html(code.val().replace(/ name\="custom" value\="(.*?)"/,' name="custom" value="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"'));code.html(code.val().replace(/ name\="modify" value\="(.*?)"/,' name="modify" value="'+((button==="modification")?"1":"0")+'"'));code.html(code.val().replace(/ name\="amount" value\="(.*?)"/,' name="amount" value="'+esc_attr(regAmount)+'"'));code.html(code.val().replace(/ name\="src" value\="(.*?)"/,' name="src" value="'+esc_attr(regRecur)+'"'));code.html(code.val().replace(/ name\="srt" value\="(.*?)"/,' name="srt" value="'+esc_attr(regRecurTimes)+'"'));code.html(code.val().replace(/ name\="sra" value\="(.*?)"/,' name="sra" value="'+esc_attr(regRecurRetry)+'"'));code.html(code.val().replace(/ name\="a1" value\="(.*?)"/,' name="a1" value="'+esc_attr(trialAmount)+'"'));code.html(code.val().replace(/ name\="p1" value\="(.*?)"/,' name="p1" value="'+esc_attr(trialPeriod)+'"'));code.html(code.val().replace(/ name\="t1" value\="(.*?)"/,' name="t1" value="'+esc_attr(trialTerm)+'"'));code.html(code.val().replace(/ name\="a3" value\="(.*?)"/,' name="a3" value="'+esc_attr(regAmount)+'"'));code.html(code.val().replace(/ name\="p3" value\="(.*?)"/,' name="p3" value="'+esc_attr(regPeriod)+'"'));code.html(code.val().replace(/ name\="t3" value\="(.*?)"/,' name="t3" value="'+esc_attr(regTerm)+'"'));$("div#ws-plugin--s2member-"+button+"-button-prev").html(code.val().replace(/\<form/,'<form target="_blank"').replace(/\<\?php echo S2MEMBER_VALUE_FOR_PP_INV\(\); \?\>/g,Math.round(new Date().getTime())+'~<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["REMOTE_ADDR"])); ?>').replace(/\<\?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_(ON0|OS0|ON1|OS1); \?\>/g,""));(button==="modification")?alert("Your Modification Button has been generated.\nPlease copy/paste the Shortcode into your Login Welcome Page, or wherever you feel it would be most appropriate.\n\n* Remember, Modification Buttons should be displayed to existing Users/Members, and they should be logged-in, BEFORE clicking this Button."):alert("Your Button has been generated.\nPlease copy/paste the Shortcode Format into your Membership Options Page.");shortCode.each(function(){this.focus(),this.select()});return false};ws_plugin__s2member_paypalCcapButtonGenerate=function(){var shortCodeTemplate='[s2Member-PayPal-Button %%attrs%% image="default" output="button" /]',shortCodeTemplateAttrs="";var shortCode=$("input#ws-plugin--s2member-ccap-shortcode");var code=$("textarea#ws-plugin--s2member-ccap-button");var desc=$.trim($("input#ws-plugin--s2member-ccap-desc").val().replace(/"/g,""));var regAmount=$("input#ws-plugin--s2member-ccap-amount").val().replace(/[^0-9\.]/g,"");var regPeriod=$("select#ws-plugin--s2member-ccap-term").val().split("-")[0].replace(/[^0-9]/g,"");var regTerm=$("select#ws-plugin--s2member-ccap-term").val().split("-")[1].replace(/[^A-Z]/g,"");var regRecur=$("select#ws-plugin--s2member-ccap-term").val().split("-")[2].replace(/[^0-1BN]/g,"");var localeCode="",digital="0",noShipping="1";var pageStyle=$.trim($("input#ws-plugin--s2member-ccap-page-style").val().replace(/"/g,""));var currencyCode=$("select#ws-plugin--s2member-ccap-currency").val().replace(/[^A-Z]/g,"");var cCaps=$.trim($.trim($("input#ws-plugin--s2member-ccap-ccaps").val()).replace(/^(-all|-al|-a|-)[;,]*/gi,"").replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase());cCaps=($.trim($("input#ws-plugin--s2member-ccap-ccaps").val()).match(/^(-all|-al|-a|-)[;,]*/i))?((cCaps)?"-all,":"-all")+cCaps.toLowerCase():cCaps.toLowerCase();var levelCcapsPer=(regRecur==="BN"&&regTerm!=="L")?"*:"+cCaps+":"+regPeriod+" "+regTerm:"*:"+cCaps;levelCcapsPer=levelCcapsPer.replace(/\:+$/g,"");if(!cCaps||cCaps==="-all"){alert("— Oops, a slight problem: —\n\nPlease provide at least one Custom Capability.");return false}else{if(!regAmount||isNaN(regAmount)||regAmount<0.01){alert("— Oops, a slight problem: —\n\nAmount must be >= 0.01");return false}else{if(regAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Amount is: 10000.00");return false}else{if(!desc){alert("— Oops, a slight problem: —\n\nPlease type a Description for this Button.");return false}}}}shortCodeTemplateAttrs+='level="*" ccaps="'+esc_attr(cCaps)+'" desc="'+esc_attr(desc)+'" ps="'+esc_attr(pageStyle)+'" lc="'+esc_attr(localeCode)+'" cc="'+esc_attr(currencyCode)+'" dg="'+esc_attr(digital)+'" ns="'+esc_attr(noShipping)+'"';shortCodeTemplateAttrs+=' custom="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>" ra="'+esc_attr(regAmount)+'" rp="'+esc_attr(regPeriod)+'" rt="'+esc_attr(regTerm)+'" rr="'+esc_attr(regRecur)+'"';shortCode.val(shortCodeTemplate.replace(/%%attrs%%/,shortCodeTemplateAttrs));code.html(code.val().replace(/ name\="lc" value\="(.*?)"/,' name="lc" value="'+esc_attr(localeCode)+'"'));code.html(code.val().replace(/ name\="no_shipping" value\="(.*?)"/,' name="no_shipping" value="'+esc_attr(noShipping)+'"'));code.html(code.val().replace(/ name\="item_name" value\="(.*?)"/,' name="item_name" value="'+esc_attr(desc)+'"'));code.html(code.val().replace(/ name\="item_number" value\="(.*?)"/,' name="item_number" value="'+esc_attr(levelCcapsPer)+'"'));code.html(code.val().replace(/ name\="page_style" value\="(.*?)"/,' name="page_style" value="'+esc_attr(pageStyle)+'"'));code.html(code.val().replace(/ name\="currency_code" value\="(.*?)"/,' name="currency_code" value="'+esc_attr(currencyCode)+'"'));code.html(code.val().replace(/ name\="custom" value\="(.*?)"/,' name="custom" value="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"'));code.html(code.val().replace(/ name\="amount" value\="(.*?)"/,' name="amount" value="'+esc_attr(regAmount)+'"'));$("div#ws-plugin--s2member-ccap-button-prev").html(code.val().replace(/\<form/,'<form target="_blank"').replace(/\<\?php echo S2MEMBER_VALUE_FOR_PP_INV\(\); \?\>/g,Math.round(new Date().getTime())+'~<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["REMOTE_ADDR"])); ?>').replace(/\<\?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_(ON0|OS0|ON1|OS1); \?\>/g,""));alert("Your Button has been generated.\nPlease copy/paste the Shortcode into your Login Welcome Page, or wherever you feel it would be most appropriate.\n\n* Remember, Independent Custom Capability Buttons should ONLY be displayed to existing Users/Members, and they MUST be logged-in, BEFORE clicking this Button.");shortCode.each(function(){this.focus(),this.select()});return false};ws_plugin__s2member_paypalSpButtonGenerate=function(){var shortCodeTemplate='[s2Member-PayPal-Button %%attrs%% image="default" output="button" /]',shortCodeTemplateAttrs="";var shortCode=$("input#ws-plugin--s2member-sp-shortcode");var code=$("textarea#ws-plugin--s2member-sp-button");var leading=$("select#ws-plugin--s2member-sp-leading-id").val().replace(/[^0-9]/g,"");var additionals=$("select#ws-plugin--s2member-sp-additional-ids").val()||[];var hours=$("select#ws-plugin--s2member-sp-hours").val().replace(/[^0-9]/g,"");var regAmount=$("input#ws-plugin--s2member-sp-amount").val().replace(/[^0-9\.]/g,"");var desc=$.trim($("input#ws-plugin--s2member-sp-desc").val().replace(/"/g,""));var localeCode="",digital="0",noShipping="1";var pageStyle=$.trim($("input#ws-plugin--s2member-sp-page-style").val().replace(/"/g,""));var currencyCode=$("select#ws-plugin--s2member-sp-currency").val().replace(/[^A-Z]/g,"");if(!leading){alert("— Oops, a slight problem: —\n\nPlease select a Leading Post/Page.\n\n*Tip* If there are no Posts/Pages in the menu, it's because you've not configured s2Member for Specific Post/Page Access yet. See: s2Member -› Restriction Options -› Specific Post/Page Access.");return false}else{if(!regAmount||isNaN(regAmount)||regAmount<0.01){alert("— Oops, a slight problem: —\n\nAmount must be >= 0.01");return false}else{if(regAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Amount is: 10000.00");return false}else{if(!desc){alert("— Oops, a slight problem: —\n\nPlease type a Description for this Button.");return false}}}}for(var i=0,ids=leading;i<additionals.length;i++){if(additionals[i]&&additionals[i]!==leading){ids+=","+additionals[i]}}var spIdsHours="sp:"+ids+":"+hours;shortCodeTemplateAttrs+='sp="1" ids="'+esc_attr(ids)+'" exp="'+esc_attr(hours)+'" desc="'+esc_attr(desc)+'" ps="'+esc_attr(pageStyle)+'" lc="'+esc_attr(localeCode)+'" cc="'+esc_attr(currencyCode)+'" dg="'+esc_attr(digital)+'" ns="'+esc_attr(noShipping)+'"';shortCodeTemplateAttrs+=' custom="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>" ra="'+esc_attr(regAmount)+'"';shortCode.val(shortCodeTemplate.replace(/%%attrs%%/,shortCodeTemplateAttrs));code.html(code.val().replace(/ name\="lc" value\="(.*?)"/,' name="lc" value="'+esc_attr(localeCode)+'"'));code.html(code.val().replace(/ name\="no_shipping" value\="(.*?)"/,' name="no_shipping" value="'+esc_attr(noShipping)+'"'));code.html(code.val().replace(/ name\="item_name" value\="(.*?)"/,' name="item_name" value="'+esc_attr(desc)+'"'));code.html(code.val().replace(/ name\="item_number" value\="(.*?)"/,' name="item_number" value="'+esc_attr(spIdsHours)+'"'));code.html(code.val().replace(/ name\="page_style" value\="(.*?)"/,' name="page_style" value="'+esc_attr(pageStyle)+'"'));code.html(code.val().replace(/ name\="currency_code" value\="(.*?)"/,' name="currency_code" value="'+esc_attr(currencyCode)+'"'));code.html(code.val().replace(/ name\="custom" value\="(.*?)"/,' name="custom" value="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"'));code.html(code.val().replace(/ name\="amount" value\="(.*?)"/,' name="amount" value="'+esc_attr(regAmount)+'"'));$("div#ws-plugin--s2member-sp-button-prev").html(code.val().replace(/\<form/,'<form target="_blank"').replace(/\<\?php echo S2MEMBER_VALUE_FOR_PP_INV\(\); \?\>/g,Math.round(new Date().getTime())+'~<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["REMOTE_ADDR"])); ?>').replace(/\<\?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_(ON0|OS0|ON1|OS1); \?\>/g,""));alert("Your Button has been generated.\nPlease copy/paste the Shortcode into your WordPress Editor.");shortCode.each(function(){this.focus(),this.select()});return false};ws_plugin__s2member_paypalRegLinkGenerate=function(){var level=$("select#ws-plugin--s2member-reg-link-level").val().replace(/[^0-9]/g,"");var subscrID=$.trim($("input#ws-plugin--s2member-reg-link-subscr-id").val());var custom=$.trim($("input#ws-plugin--s2member-reg-link-custom").val());var cCaps=$.trim($.trim($("input#ws-plugin--s2member-reg-link-ccaps").val()).replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase());var fixedTerm=$.trim($("input#ws-plugin--s2member-reg-link-fixed-term").val().replace(/[^A-Z 0-9]/gi,"").toUpperCase());var $link=$("p#ws-plugin--s2member-reg-link"),$loading=$("img#ws-plugin--s2member-reg-link-loading");var levelCcapsPer=(fixedTerm&&!fixedTerm.match(/L$/))?level+":"+cCaps+":"+fixedTerm:level+":"+cCaps;levelCcapsPer=levelCcapsPer.replace(/\:+$/g,"");if(!subscrID){alert("— Oops, a slight problem: —\n\nPaid Subscr. ID is a required value.");return false}else{if(!custom||custom.indexOf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq ($_SERVER["HTTP_HOST"]); ?>')!==0){alert("— Oops, a slight problem: —\n\nThe Custom Value MUST start with your domain name.");return false}else{if(fixedTerm&&!fixedTerm.match(/^[1-9]+ (D|W|M|Y|L)$/)){alert("— Oops, a slight problem: —\n\nThe Fixed Term Length is not formatted properly.");return false}}}$link.hide(),$loading.show(),$.post(ajaxurl,{action:"ws_plugin__s2member_reg_access_link_via_ajax",ws_plugin__s2member_reg_access_link_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-reg-access-link-via-ajax")); ?>',s2member_reg_access_link_subscr_gateway:"paypal",s2member_reg_access_link_subscr_id:subscrID,s2member_reg_access_link_custom:custom,s2member_reg_access_link_item_number:levelCcapsPer},function(response){$link.show().html('<a href="'+esc_attr(response)+'" target="_blank" rel="external">'+esc_html(response)+"</a>"),$loading.hide()});return false};ws_plugin__s2member_paypalSpLinkGenerate=function(){var leading=$("select#ws-plugin--s2member-sp-link-leading-id").val().replace(/[^0-9]/g,"");var additionals=$("select#ws-plugin--s2member-sp-link-additional-ids").val()||[];var hours=$("select#ws-plugin--s2member-sp-link-hours").val().replace(/[^0-9]/g,"");var $link=$("p#ws-plugin--s2member-sp-link"),$loading=$("img#ws-plugin--s2member-sp-link-loading");if(!leading){alert("— Oops, a slight problem: —\n\nPlease select a Leading Post/Page.\n\n*Tip* If there are no Posts/Pages in the menu, it's because you've not configured s2Member for Specific Post/Page Access yet. See: s2Member -› Restriction Options -› Specific Post/Page Access.");return false}for(var i=0,ids=leading;i<additionals.length;i++){if(additionals[i]&&additionals[i]!==leading){ids+=","+additionals[i]}}$link.hide(),$loading.show(),$.post(ajaxurl,{action:"ws_plugin__s2member_sp_access_link_via_ajax",ws_plugin__s2member_sp_access_link_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-sp-access-link-via-ajax")); ?>',s2member_sp_access_link_ids:ids,s2member_sp_access_link_hours:hours},function(response){$link.show().html('<a href="'+esc_attr(response)+'" target="_blank" rel="external">'+esc_html(response)+"</a>"),$loading.hide()});return false}}if(location.href.match(/page\=ws-plugin--s2member-els-ops/)){$("select#ws-plugin--s2member-custom-reg-opt-in").change(function(){var $this=$(this),val=$this.val();var $rows=$("tr.ws-plugin--s2member-custom-reg-opt-in-label-row");var $prevImg=$("img.ws-plugin--s2member-custom-reg-opt-in-label-prev-img");if(val<=0){$rows.css("display","none"),$prevImg.attr("src",$prevImg.attr("src").replace(/\/checked\.png$/,"/unchecked.png"))}else{if(val==1){$rows.css("display",""),$prevImg.attr("src",$prevImg.attr("src").replace(/\/unchecked\.png$/,"/checked.png"))}else{if(val==2){$rows.css("display",""),$prevImg.attr("src",$prevImg.attr("src").replace(/\/checked\.png$/,"/unchecked.png"))}}}});$('div.ws-plugin--s2member-opt-out-section input[type="checkbox"][name="ws_plugin__s2member_custom_reg_auto_opt_outs[]"]').change(function(){var thisChange=$(this).val(),checkedIndexes=[];$('div.ws-plugin--s2member-opt-out-section input[type="checkbox"][name="ws_plugin__s2member_custom_reg_auto_opt_outs[]"]').each(function(){var $this=$(this),val=$this.val(),checkboxes='input[type="checkbox"]';if(val==="removal-deletion"&&this.checked){$this.nextAll(checkboxes).slice(0,2).attr({checked:"checked",disabled:"disabled"})}else{if(val==="removal-deletion"&&!this.checked){$this.nextAll(checkboxes).slice(0,2).removeAttr("disabled");(thisChange==="removal-deletion")?$this.nextAll(checkboxes).slice(0,2).removeAttr("checked"):null}else{if(val==="modification"&&this.checked){$this.nextAll(checkboxes).slice(0,3).attr({checked:"checked",disabled:"disabled"})}else{if(val==="modification"&&!this.checked){(thisChange==="modification")?$this.nextAll(checkboxes).slice(0,3).removeAttr("checked"):null;$this.nextAll(checkboxes).slice(0,3).removeAttr("disabled")}}}}}).each(function(index){(this.checked)?checkedIndexes.push(index):null});$("select#ws-plugin--s2member-custom-reg-auto-opt-out-transitions").removeAttr("disabled");if($.inArray(3,checkedIndexes)===-1&&$.inArray(4,checkedIndexes)===-1&&$.inArray(5,checkedIndexes)===-1&&$.inArray(6,checkedIndexes)===-1){$("select#ws-plugin--s2member-custom-reg-auto-opt-out-transitions").attr("disabled","disabled")}}).last().trigger("change")}});
1
+ jQuery(document).ready(function($){var esc_attr=esc_html=function(str){return String(str).replace(/"/g,"&quot;").replace(/\</g,"&lt;").replace(/\>/g,"&gt;")};if(location.href.match(/page\=ws-plugin--s2member/)){$("input.ws-plugin--s2member-update-roles-button, input.ws-plugin--s2member-reset-roles-button").click(function(){var $this=$(this);$this.val("one moment please ...");var levels='<?php echo (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; ?>';var resetUpdate=($this.hasClass("ws-plugin--s2member-reset-roles-button"))?"Reset":"Update";$.post(ajaxurl,{action:"ws_plugin__s2member_update_roles_via_ajax",ws_plugin__s2member_update_roles_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-update-roles-via-ajax")); ?>'},function(response){if(response==="1"){alert("s2Member's Roles/Capabilities "+((resetUpdate.toLowerCase()==="reset")?"have been successfully reset":"updated successfully")+".\nYour installation of s2Member has Membership Levels 0-"+levels+"."),$this.val(resetUpdate+" Roles/Capabilities")}else{if(response==="l"){alert("Sorry, your request failed.\ns2Member's Roles/Capabilities are locked by Filter:\nws_plugin__s2member_lock_roles_caps"),$this.val(resetUpdate+" Roles/Capabilities")}else{alert("Sorry, your request failed.\nAccess denied. Do you have the ability to `create_users`?"),$this.val(resetUpdate+" Roles/Capabilities")}}});return false})}if(location.href.match(/page\=ws-plugin--s2member-logs/)){$("input#ws-plugin--s2member-gateway-debug-logs-extensive-1").click(function(){var $this=$(this),thisChecked=(this.checked)?true:false;if(thisChecked){$("input#ws-plugin--s2member-gateway-debug-logs-1").attr("checked","checked")}});var $toggles=$("a.ws-plugin--s2member-log-file-viewport-toggle");$toggles.click(function(){$("textarea#ws-plugin--s2member-log-file-viewer").each(function(){var $viewer=$(this);if($viewer.attr("data-state")!=="expanded"){$viewer.css({height:($viewer.prop("scrollHeight")+50)+"px","overflow-y":"auto"});$toggles.html("&#8657; normalize viewport &#10073;");$viewer.attr("data-state","expanded")}else{$viewer.css({height:"auto","overflow-y":"scroll"});$toggles.html("&#8659; expand viewport &#8659;");$viewer.attr("data-state","scrolling")}});return false})}if(location.href.match(/page\=ws-plugin--s2member-mms-ops/)){$("select#ws-plugin--s2member-mms-registration-file").change(function(){if($(this).val()==="wp-signup"){var gv=$("select#ws-plugin--s2member-mms-registration-grants").val(),l0v=$("input#ws-plugin--s2member-mms-registration-blogs-level0").val();$("div#ws-plugin--s2member-mms-registration-support-package-details-wrapper").show(),$("div.ws-plugin--s2member-mms-registration-wp-login, table.ws-plugin--s2member-mms-registration-wp-login").hide(),$("div.ws-plugin--s2member-mms-registration-wp-signup, table.ws-plugin--s2member-mms-registration-wp-signup").show();$("div.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0, table.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0")[((gv==="all")?"show":"hide")]();$("input#ws-plugin--s2member-mms-registration-blogs-level0").val(((gv==="all")?((l0v>0)?l0v:"1"):"0"))}else{if($(this).val()==="wp-login"){var gv=$("select#ws-plugin--s2member-mms-registration-grants").val(),l0v=$("input#ws-plugin--s2member-mms-registration-blogs-level0").val();$("div#ws-plugin--s2member-mms-registration-support-package-details-wrapper").hide(),$("div.ws-plugin--s2member-mms-registration-wp-login, table.ws-plugin--s2member-mms-registration-wp-login").show(),$("div.ws-plugin--s2member-mms-registration-wp-signup, table.ws-plugin--s2member-mms-registration-wp-signup").hide();$("div.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0, table.ws-plugin--s2member-mms-registration-wp-signup-blogs-level0").hide();$("input#ws-plugin--s2member-mms-registration-blogs-level0").val("0")}}}).trigger("change");$("select#ws-plugin--s2member-mms-registration-grants").change(function(){$("select#ws-plugin--s2member-mms-registration-file").trigger("change")})}if(location.href.match(/page\=ws-plugin--s2member-gen-ops/)){ws_plugin__s2member_generateSecurityKey=function(){var mt_rand=function(min,max){min=(arguments.length<1)?0:min;max=(arguments.length<2)?2147483647:max;return Math.floor(Math.random()*(max-min+1))+min};var chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()";for(var i=0,key="";i<64;i++){key+=chars.substr(mt_rand(0,chars.length-1),1)}$("input#ws-plugin--s2member-sec-encryption-key").val(key);return false};ws_plugin__s2member_enableSecurityKey=function(){if(confirm("Edit Key? Are you sure?\nThis could break your installation!\n\n*Note* If you've been testing s2Member, feel free to change this Key before you go live. Just don't go live, and then change it. You'll have unhappy Customers. Data corruption WILL occur! For your safety, s2Member keeps a history of the last 10 Keys that you've used. If you get yourself into a real situation, s2Member will let you revert back to a previous Key.")){$("input#ws-plugin--s2member-sec-encryption-key").removeAttr("disabled")}return false};ws_plugin__s2member_securityKeyHistory=function(){$("div#ws-plugin--s2member-sec-encryption-key-history").toggle();return false};$("select#ws-plugin--s2member-new-user-emails-enabled").change(function(){var $pluggable=$("input#ws-plugin--s2member-pluggables-wp-new-user-notification"),$this=$(this),$newUserEmails=$("div#ws-plugin--s2member-new-user-emails");if($pluggable.val()==="0"||$this.val()==="0"){($pluggable.val()==="0")?$this.attr("disabled","disabled"):$this.removeAttr("disabled");$(":input",$newUserEmails).attr("disabled","disabled"),$newUserEmails.css("opacity","0.5")}else{$this.removeAttr("disabled"),$(":input",$newUserEmails).removeAttr("disabled"),$newUserEmails.css("opacity","")}}).trigger("change");$("select#ws-plugin--s2member-login-reg-design-enabled").change(function(){var $this=$(this),$loginRegDesign=$("div#ws-plugin--s2member-login-reg-design");if($this.val()==="0"){$(":input",$loginRegDesign).attr("disabled","disabled"),$loginRegDesign.css("opacity","0.5"),$loginRegDesign.hide()}else{$(":input",$loginRegDesign).removeAttr("disabled"),$loginRegDesign.css("opacity",""),$loginRegDesign.show()}}).trigger("change");if($("input#ws-plugin--s2member-custom-reg-fields").length&&$("div#ws-plugin--s2member-custom-reg-field-configuration").length){(function(){var i,fieldDefaults,tools,table,$tools,$table;var $fields=$("input#ws-plugin--s2member-custom-reg-fields");var $configuration=$("div#ws-plugin--s2member-custom-reg-field-configuration");var fields=($fields.val())?$.JSON.parse($fields.val()):[];fields=(fields instanceof Array)?fields:[];fieldDefaults={section:"no",sectitle:"",id:"",label:"",type:"text",deflt:"",options:"",expected:"",required:"yes",levels:"all",editable:"yes",classes:"",styles:"",attrs:""};for(i=0;i<fields.length;i++){fields[i]=$.extend(true,{},fieldDefaults,fields[i])}tools='<div id="ws-plugin--s2member-custom-reg-field-configuration-tools"></div>',table='<table id="ws-plugin--s2member-custom-reg-field-configuration-table"></table>';$configuration.html(tools+table);$tools=$("div#ws-plugin--s2member-custom-reg-field-configuration-tools"),$table=$("table#ws-plugin--s2member-custom-reg-field-configuration-table");ws_plugin__s2member_customRegFieldSectionChange=function(select){var section=$(select).val();var sectitle_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle";(section==="yes")?$(sectitle_trs).css("display",""):$(sectitle_trs).css("display","none")};ws_plugin__s2member_customRegFieldTypeChange=function(select){var type=$(select).val();var deflt_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt",options_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-options",expected_trs="tr.ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected";(type.match(/^(text|textarea)$/))?$(deflt_trs).css("display",""):$(deflt_trs).css("display","none");(type.match(/^(select|selects|checkboxes|radios)$/))?$(options_trs).css("display",""):$(options_trs).css("display","none");(type.match(/^(text|textarea)$/))?$(expected_trs).css("display",""):$(expected_trs).css("display","none")};ws_plugin__s2member_customRegFieldDelete=function(index){var newFields=new Array();for(var i=0;i<fields.length;i++){if(i!==index){newFields.push(fields[i])}}fields=newFields,updateFields(),buildTable()};ws_plugin__s2member_customRegFieldMoveUp=function(index){if(typeof fields[index]==="object"&&typeof fields[index-1]==="object"){var prevFieldObj=fields[index-1],thisFieldObj=fields[index];fields[index-1]=thisFieldObj,fields[index]=prevFieldObj;updateFields(),buildTable()}};ws_plugin__s2member_customRegFieldMoveDown=function(index){if(typeof fields[index]==="object"&&typeof fields[index+1]==="object"){var nextFieldObj=fields[index+1],thisFieldObj=fields[index];fields[index+1]=thisFieldObj,fields[index]=nextFieldObj;updateFields(),buildTable()}};ws_plugin__s2member_customRegFieldCreate=function(){var $table=$("table#ws-plugin--s2member-custom-reg-field-configuration-tools-form"),field={};$(":input[property]",$table).each(function(){var $this=$(this),property=$this.attr("property"),val=$.trim($this.val());field[property]=val});if((field=validateField(field))){fields.push(field),updateFields(),buildTools(),buildTable(),scrollReset();setTimeout(function(){var row="tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-"+(fields.length-1);alert('Field created successfully.\n* Remember to "Save All Changes".')},500)}};ws_plugin__s2member_customRegFieldUpdate=function(index){var $table=$("table#ws-plugin--s2member-custom-reg-field-configuration-tools-form"),field={};$(":input[property]",$table).each(function(){var $this=$(this),property=$this.attr("property"),val=$.trim($this.val());field[property]=val});if((field=validateField(field,index))){fields[index]=field,updateFields(),buildTools(),buildTable(),scrollReset();setTimeout(function(){var row="tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-"+index;alert('Field updated successfully.\n* Remember to "Save All Changes".')},500)}};ws_plugin__s2member_customRegFieldAdd=function(){buildTools(true)};ws_plugin__s2member_customRegFieldEdit=function(index){buildTools(false,index),scrollReset()};ws_plugin__s2member_customRegFieldCancel=function(){buildTools(),scrollReset()};var validateField=function(field,index){var editing=(typeof index==="number"&&typeof fields[index]==="object")?true:false,errors=[],options,i;if(typeof field!=="object"||typeof(field=$.extend(true,{},fieldDefaults,field))!=="object"){alert("Invalid field object. Please try again.");return false}field.sectitle=(field.section==="yes")?field.sectitle:"";field.deflt=(field.type.match(/^(text|textarea)$/))?field.deflt:"";field.deflt=(field.type.match(/^(text)$/))?field.deflt.replace(/[\r\n\t ]+/g," "):field.deflt;field.options=(field.type.match(/^(select|selects|checkboxes|radios)$/))?field.options:"";field.expected=(field.type.match(/^(text|textarea)$/))?field.expected:"";if(!field.id){errors.push("Unique Field ID:\nThis is required. Please try again.")}else{if(fieldIdExists(field.id)&&(!editing||field.id!==fields[index].id)){errors.push("Unique Field ID:\nThat Field ID already exists. Please try again.")}}if(!field.label){errors.push("Field Label/Description:\nThis is required. Please try again.")}if(field.type.match(/^(select|selects|checkboxes|radios)$/)&&!field.options){errors.push("Option Configuration File:\nThis is required. Please try again.")}else{if(field.type.match(/^(select|selects|checkboxes|radios)$/)){for(i=0;i<(options=field.options.split(/[\r\n]+/)).length;i++){if(!(options[i]=$.trim(options[i])).match(/^([^\|]*)(\|)([^\|]*)(\|default)?$/)){errors.push("Option Configuration File:\nInvalid configuration at line #"+(i+1)+".");break}}field.options=$.trim(options.join("\n"))}}if(!(field.levels=field.levels.replace(/ /g,""))){errors.push("Applicable Levels:\nThis is required. Please try again.")}else{if(!field.levels.match(/^(all|[0-9,]+)$/)){errors.push("Applicable Levels:\nShould be comma-delimited Levels, or just type: all.\n(examples: 0,1,2,3,4 or type the word: all)")}}if(field.classes&&field.classes.match(/[^a-z 0-9 _ \-]/i)){errors.push("CSS Classes:\nContains invalid characters. Please try again.\n(only: alphanumerics, underscores, hyphens, spaces)")}if(field.styles&&field.styles.match(/["\=\>\<]/)){errors.push('CSS Styles:\nContains invalid characters. Please try again.\n(do NOT use these characters: = " < >)')}if(field.attrs&&field.attrs.match(/[\>\<]/)){errors.push("Other Attributes:\nContains invalid characters. Please try again.\n(do NOT use these characters: < >)")}if(errors.length>0){alert(errors.join("\n\n"));return false}else{return field}};var updateFields=function(){$fields.val(((fields.length>0)?$.JSON.stringify(fields):""))};var fieldId2Var=function(fieldId){return(typeof fieldId==="string")?$.trim(fieldId).toLowerCase().replace(/[^a-z0-9]/g,"_"):""};var fieldTypeDesc=function(type){var types={text:"Text (single line)",textarea:"Textarea (multi-line)",select:"Select Menu (drop-down)",selects:"Select Menu (multi-option)",checkbox:"Checkbox (single)",pre_checkbox:"Checkbox (pre-checked)",checkboxes:"Checkboxes (multi-option)",radios:"Radio Buttons (multi-option)"};if(typeof types[type]==="string"){return types[type]}return""};var fieldIdExists=function(fieldId){for(var i=0;i<fields.length;i++){if(fields[i].id===fieldId){return true}}};var scrollReset=function(){scrollTo(0,$("div.ws-plugin--s2member-custom-reg-fields-section").offset()["top"]-100)};var buildTools=function(adding,index){var i=0,html="",form="",w=0,h=0,editing=(typeof index==="number"&&typeof fields[index]==="object")?true:false,displayForm=(adding||editing)?true:false,field=(editing)?$.extend(true,{},fieldDefaults,fields[index]):fieldDefaults;html+='<a href="#" onclick="ws_plugin__s2member_customRegFieldAdd(); return false;">Add New Field</a>';tb_remove(),$("div#ws-plugin--s2member-custom-reg-field-configuration-thickbox-tools-form").remove();if(displayForm){form+='<div id="ws-plugin--s2member-custom-reg-field-configuration-thickbox-tools-form">';form+='<table id="ws-plugin--s2member-custom-reg-field-configuration-tools-form">';form+="<tbody>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section">Starts A New Section?</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section">';form+='<td colspan="2">';form+='<select property="section" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-section" onchange="ws_plugin__s2member_customRegFieldSectionChange(this);">';form+='<option value="no"'+((field.section==="no")?' selected="selected"':"")+'">No (this Field flows normally)</option>';form+='<option value="yes"'+((field.section==="yes")?' selected="selected"':"")+'">Yes (this Field begins a new section)</option>';form+="</select><br />";form+="<small>Optional. Allows Fields to be grouped into sections.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle ws-plugin--s2member-custom-reg-field-configuration-tools-form-section"'+((field.section==="yes")?"":' style="display:none;"')+'><td colspan="2"><hr /></td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle ws-plugin--s2member-custom-reg-field-configuration-tools-form-section"'+((field.section==="yes")?"":' style="display:none;"')+">";form+='<td colspan="2">';form+="Title for this new section? (optional)<br />";form+='<input type="text" property="sectitle" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-sectitle" value="'+esc_attr(field.sectitle)+'" /><br />';form+="<small>If empty, a simple divider will be used by default.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-type"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type">Form Field Type: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type">';form+='<td colspan="2">';form+='<select property="type" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-type" onchange="ws_plugin__s2member_customRegFieldTypeChange(this);">';form+='<option value="text"'+((field.type==="text")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("text"))+"</option>";form+='<option value="textarea"'+((field.type==="textarea")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("textarea"))+"</option>";form+='<option value="select"'+((field.type==="select")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("select"))+"</option>";form+='<option value="selects"'+((field.type==="selects")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("selects"))+"</option>";form+='<option value="checkbox"'+((field.type==="checkbox")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("checkbox"))+"</option>";form+='<option value="pre_checkbox"'+((field.type==="pre_checkbox")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("pre_checkbox"))+"</option>";form+='<option value="checkboxes"'+((field.type==="checkboxes")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("checkboxes"))+"</option>";form+='<option value="radios"'+((field.type==="radios")?' selected="selected"':"")+'">'+esc_html(fieldTypeDesc("radios"))+"</option>";form+="</select><br />";form+="<small>The options below may change, based on the Field Type you choose here.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-label"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label">Field Label/Desc: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label">';form+='<td colspan="2">';form+='<input type="text" property="label" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-label" value="'+esc_attr(field.label)+'" /><br />';form+="<small>Examples: <code>Choose Country</code>, <code>Street Address</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-id"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id">Unique Field ID: *</label></label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id">';form+='<td colspan="2">';form+='<input type="text" property="id" maxlength="25" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-id" value="'+esc_attr(field.id)+'" /><br />';form+="<small>Examples: <code>country_code</code>, <code>street_address</code></small><br />";form+='<small>e.g. <code>[s2Get user_field="country_code" /]</code></small>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-required"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">Field Required: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">';form+='<td colspan="2">';form+='<select property="required" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-required">';form+='<option value="yes"'+((field.required==="yes")?' selected="selected"':"")+'">Yes (required)</option>';form+='<option value="no"'+((field.required==="no")?' selected="selected"':"")+'">No (optional)</option>';form+="</select><br />";form+='<small>If <code>yes</code>, only Users/Members will be "required" to enter this field.</small><br />';form+="<small>* Administrators are exempt from this requirement.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+'><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt">Default Text Value: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<textarea property="deflt" wrap="off" spellcheck="false" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-deflt" rows="1">'+esc_html(field.deflt)+"</textarea><br />";form+="<small>Default value before user input is received.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-options"'+((field.type.match(/^(select|selects|checkboxes|radios)$/))?"":' style="display:none;"')+'><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options"'+((field.type.match(/^(select|selects|checkboxes|radios)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options">Option Configuration File: * (one option per line)</label><br />';form+="<small>Use a pipe <code>|</code> delimited format: <code>option value|option label</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options"'+((field.type.match(/^(select|selects|checkboxes|radios)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<textarea property="options" wrap="off" spellcheck="false" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-options" rows="3">'+esc_html(field.options)+"</textarea><br />";form+="Here is a quick example:<br />";form+="<small>You can also specify a <em>default</em> option:</small><br />";form+="<code>US|United States|default</code><br />";form+="<code>CA|Canada</code><br />";form+="<code>VI|Virgin Islands (U.S.)</code>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+'><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected">Expected Format: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected"'+((field.type.match(/^(text|textarea)$/))?"":' style="display:none;"')+">";form+='<td colspan="2">';form+='<select property="expected" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-expected">';form+='<option value=""'+((field.expected==="")?' selected="selected"':"")+'">Anything Goes</option>';form+='<option disabled="disabled"></option>';form+='<optgroup label="Specific Input Types">';form+='<option value="numeric-wp-commas"'+((field.expected==="numeric-wp-commas")?' selected="selected"':"")+'">Numeric (with or without decimals, commas allowed)</option>';form+='<option value="numeric"'+((field.expected==="numeric")?' selected="selected"':"")+'">Numeric (with or without decimals, no commas)</option>';form+='<option value="integer"'+((field.expected==="integer")?' selected="selected"':"")+'">Integer (whole number, without any decimals)</option>';form+='<option value="integer-gt-0"'+((field.expected==="integer-gt-0")?' selected="selected"':"")+'">Integer > 0 (whole number, no decimals, greater than 0)</option>';form+='<option value="float"'+((field.expected==="float")?' selected="selected"':"")+'">Float (floating point number, decimals required)</option>';form+='<option value="float-gt-0"'+((field.expected==="float-gt-0")?' selected="selected"':"")+'">Float > 0 (floating point number, decimals required, greater than 0)</option>';form+='<option value="date"'+((field.expected==="date")?' selected="selected"':"")+'">Date (required date format: dd/mm/yyyy)</option>';form+='<option value="email"'+((field.expected==="email")?' selected="selected"':"")+'">Email (require valid email)</option>';form+='<option value="url"'+((field.expected==="url")?' selected="selected"':"")+'">Full URL (starting with http or https)</option>';form+='<option value="domain"'+((field.expected==="domain")?' selected="selected"':"")+'">Domain Name (domain name only, without http)</option>';form+='<option value="phone"'+((field.expected==="phone")?' selected="selected"':"")+'">Phone # (10 digits w/possible hyphens,spaces,brackets)</option>';form+='<option value="uszip"'+((field.expected==="uszip")?' selected="selected"':"")+'">US Zipcode (5-9 digits w/possible hyphen)</option>';form+='<option value="cazip"'+((field.expected==="cazip")?' selected="selected"':"")+'">Canadian Zipcode (6 alpha-numerics w/possible space)</option>';form+='<option value="uczip"'+((field.expected==="uczip")?' selected="selected"':"")+'">US/Canadian Zipcode (either a US or Canadian zipcode)</option>';form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Any Character Combination">';for(i=1;i<=25;i++){form+='<option value="any-'+i+'"'+((field.expected==="any-"+i)?' selected="selected"':"")+'">Any Character Combination ( '+i+" character minimum )</option>";form+='<option value="any-'+i+'-e"'+((field.expected==="any-"+i+"-e")?' selected="selected"':"")+'">Any Character Combination ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics, Spaces &amp; Punctuation Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-spaces-punctuation-'+i+'"'+((field.expected==="alphanumerics-spaces-punctuation-"+i)?' selected="selected"':"")+'">Alphanumerics, Spaces &amp; Punctuation ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-spaces-punctuation-'+i+'-e"'+((field.expected==="alphanumerics-spaces-punctuation-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics, Spaces &amp; Punctuation ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics &amp; Spaces Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-spaces-'+i+'"'+((field.expected==="alphanumerics-spaces-"+i)?' selected="selected"':"")+'">Alphanumerics &amp; Spaces ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-spaces-'+i+'-e"'+((field.expected==="alphanumerics-spaces-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics &amp; Spaces ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics &amp; Punctuation Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-punctuation-'+i+'"'+((field.expected==="alphanumerics-punctuation-"+i)?' selected="selected"':"")+'">Alphanumerics &amp; Punctuation ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-punctuation-'+i+'-e"'+((field.expected==="alphanumerics-punctuation-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics &amp; Punctuation ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphanumerics Only">';for(i=1;i<=25;i++){form+='<option value="alphanumerics-'+i+'"'+((field.expected==="alphanumerics-"+i)?' selected="selected"':"")+'">Alphanumerics ( '+i+" character minimum )</option>";form+='<option value="alphanumerics-'+i+'-e"'+((field.expected==="alphanumerics-"+i+"-e")?' selected="selected"':"")+'">Alphanumerics ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Alphabetics Only">';for(i=1;i<=25;i++){form+='<option value="alphabetics-'+i+'"'+((field.expected==="alphabetics-"+i)?' selected="selected"':"")+'">Alphabetics ( '+i+" character minimum )</option>";form+='<option value="alphabetics-'+i+'-e"'+((field.expected==="alphabetics-"+i+"-e")?' selected="selected"':"")+'">Alphabetics ( exactly '+i+" character"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+='<option disabled="disabled"></option>';form+='<optgroup label="Numeric Digits Only">';for(i=1;i<=25;i++){form+='<option value="numerics-'+i+'"'+((field.expected==="numerics-"+i)?' selected="selected"':"")+'">Numeric Digits ( '+i+" digit minimum )</option>";form+='<option value="numerics-'+i+'-e"'+((field.expected==="numerics-"+i+"-e")?' selected="selected"':"")+'">Numeric Digits ( exactly '+i+" digit"+((i>1)?"s":"")+" )</option>"}form+="</optgroup>";form+="</select><br />";form+="<small>Only Users/Members will be required to meet this criteria.</small><br />";form+="<small>* Administrators are exempt from this.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels">Applicable Membership Levels: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels">';form+='<td colspan="2">';form+='<input type="text" property="levels" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-levels" value="'+esc_attr(field.levels)+'" /><br />';form+="<small>Please use comma-delimited Level #'s: <code>0,1,2,3,4</code> or type: <code>all</code>.</small><br />";form+="<small>This allows you to enable this field - only at specific Membership Levels.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">Allow Profile Edits: *</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">';form+='<td colspan="2">';form+='<select property="editable" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-editable">';form+='<option value="yes"'+((field.editable==="yes")?' selected="selected"':"")+'">Yes (editable)</option>';form+='<option value="no"'+((field.editable==="no")?' selected="selected"':"")+'">No (uneditable after registration)</option>';form+='<option value="no-invisible"'+((field.editable==="no-invisible")?' selected="selected"':"")+'">No (uneditable &amp; totally invisible after registration)</option>';form+='<option value="no-always-invisible"'+((field.editable==="no-always-invisible")?' selected="selected"':"")+'">No (uneditable &amp; totally invisible, both during &amp; after registration)</option>';form+='<option value="yes-invisible"'+((field.editable==="yes-invisible")?' selected="selected"':"")+'">Yes (editable after registration / invisible during registration)</option>';form+="</select><br />";form+="<small>If <code>No</code>, this field will be un-editable after registration.</small><br />";form+="<small>* Administrators are exempt from this.</small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes">CSS Classes: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes">';form+='<td colspan="2">';form+='<input type="text" property="classes" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-classes" value="'+esc_attr(field.classes)+'" /><br />';form+="<small>Example: <code>my-style-1 my-style-2</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles">CSS Styles: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles">';form+='<td colspan="2">';form+='<input type="text" property="styles" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-styles" value="'+esc_attr(field.styles)+'" /><br />';form+="<small>Example: <code>color:#000000; background:#FFFFFF;</code></small>";form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs">';form+='<td colspan="2">';form+='<label for="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs">Other Attributes: (optional)</label>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs">';form+='<td colspan="2">';form+='<input type="text" property="attrs" autocomplete="off" id="ws-plugin--s2member-custom-reg-field-configuration-tools-form-attrs" value="'+esc_attr(field.attrs)+'" /><br />';form+='<small>Example: <code>onkeyup="" onblur=""</code></small>';form+="</td>";form+="</tr>";form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-spacer ws-plugin--s2member-custom-reg-field-configuration-tools-form-buttons"><td colspan="2">&nbsp;</td></tr>';form+='<tr class="ws-plugin--s2member-custom-reg-field-configuration-tools-form-buttons">';form+='<td align="left">';form+='<input type="button" value="Cancel" onclick="ws_plugin__s2member_customRegFieldCancel();" />';form+="</td>";form+='<td align="right">';form+='<input type="button" value="'+((editing)?"Update This Field":"Create Registration Field")+'" onclick="'+((editing)?"ws_plugin__s2member_customRegFieldUpdate("+index+");":"ws_plugin__s2member_customRegFieldCreate();")+'" />';form+="</td>";form+="</tr>";form+="</tbody>";form+="</table>";form+="<div>";$("body").append(form);tb_show(((editing)?"Editing Registration/Profile Field":"New Custom Registration/Profile Field"),"#TB_inline?inlineId=ws-plugin--s2member-custom-reg-field-configuration-thickbox-tools-form");$("table#ws-plugin--s2member-custom-reg-field-configuration-tools-form").show()}$tools.html(html)};var buildTable=function(){var l=fields.length,i=0,html="",eo="o";html+="<tbody>";html+="<tr>";html+="<th>Order</th>";html+="<th>Field Type</th>";html+="<th>Unique ID</th>";html+="<th>Required</th>";html+="<th>Levels</th>";html+="<th>- Tools -</th>";html+="</tr>";if(fields.length>0){for(i=0;i<fields.length;i++){html+='<tr class="'+esc_attr((eo=(eo==="o")?"e":"o"))+((fields[i].section==="yes")?" s":"")+" ws-plugin--s2member-custom-reg-field-configuration-table-row-"+i+'">';html+='<td nowrap="nowrap"><a class="ws-plugin--s2member-custom-reg-field-configuration-move-up" href="#" onclick="ws_plugin__s2member_customRegFieldMoveUp('+i+'); return false;"></a><a class="ws-plugin--s2member-custom-reg-field-configuration-move-down" href="#" onclick="ws_plugin__s2member_customRegFieldMoveDown('+i+'); return false;"></a></td>';html+='<td nowrap="nowrap">'+esc_html(fieldTypeDesc(fields[i].type))+"</td>";html+='<td nowrap="nowrap">'+esc_html(fields[i].id)+"</td>";html+='<td nowrap="nowrap">'+esc_html(fields[i].required)+"</td>";html+='<td nowrap="nowrap">'+esc_html(fields[i].levels)+"</td>";html+='<td nowrap="nowrap"><a class="ws-plugin--s2member-custom-reg-field-configuration-edit" href="#" onclick="ws_plugin__s2member_customRegFieldEdit('+i+'); return false;"></a><a class="ws-plugin--s2member-custom-reg-field-configuration-delete" href="#" onclick="ws_plugin__s2member_customRegFieldDelete('+i+'); return false;"></a></td>';html+="</tr>"}}else{html+="<tr>";html+='<td colspan="6">No Custom Fields are configured.</td>';html+="</tr>"}html+="</tbody>";$table.html(html)};buildTools(),buildTable()})()}}if(location.href.match(/page\=ws-plugin--s2member-res-ops/)){$("input#ws-plugin--s2member-brute-force-restrictions-reset-button").click(function(){var $this=$(this);$this.val("one moment please ...");$.post(ajaxurl,{action:"ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax",ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-delete-reset-all-ip-restrictions-via-ajax")); ?>'},function(response){alert("s2Member's Brute Force Restriction Logs have all been reset."),$this.val("Reset Brute Force Logs")});return false});$("input#ws-plugin--s2member-ip-restrictions-reset-button").click(function(){var $this=$(this);$this.val("one moment please ...");$.post(ajaxurl,{action:"ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax",ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-delete-reset-all-ip-restrictions-via-ajax")); ?>'},function(response){alert("s2Member's IP Restriction Logs have all been reset."),$this.val("Reset IP Restriction Logs")});return false});$('div.ws-plugin--s2member-query-level-access-section input[type="checkbox"][name="ws_plugin__s2member_filter_wp_query[]"]').change(function(){var thisChange=$(this).val();$('div.ws-plugin--s2member-query-level-access-section input[type="checkbox"][name="ws_plugin__s2member_filter_wp_query[]"]').each(function(){var $this=$(this),val=$this.val(),checkboxes='input[type="checkbox"]';if(val==="all"&&this.checked){$this.nextAll(checkboxes).attr({checked:"checked",disabled:"disabled"})}else{if(val==="all"&&!this.checked){$this.nextAll(checkboxes).removeAttr("disabled");(thisChange==="all")?$this.nextAll(checkboxes).removeAttr("checked"):null}}})}).last().trigger("change")}if(location.href.match(/page\=ws-plugin--s2member-down-ops/)){var updateCloudFrontPrivateKey=function(){var $hiddenPrivateKey=$("input#ws-plugin--s2member-amazon-cf-files-private-key");var $visiblePrivateKeyEntry=$("textarea#ws-plugin--s2member-amazon-cf-files-private-key-entry");var hiddenPrivateKeyValue=$.trim($hiddenPrivateKey.val()),visiblePrivateKeyEntryValue=$.trim($visiblePrivateKeyEntry.val());if((hiddenPrivateKeyValue&&!visiblePrivateKeyEntryValue)||visiblePrivateKeyEntryValue.match(/[^\r\n\u25CF]/)){$hiddenPrivateKey.val(visiblePrivateKeyEntryValue),$visiblePrivateKeyEntry.val(visiblePrivateKeyEntryValue.replace(/[^\r\n]/g,String.fromCharCode(9679)))}};$("form#ws-plugin--s2member-options-form").submit(updateCloudFrontPrivateKey);$("textarea#ws-plugin--s2member-amazon-cf-files-private-key-entry").change(updateCloudFrontPrivateKey).trigger("change");var updateCloudFrontDistroCfgs=function(){var $hiddenPrivateKey=$("input#ws-plugin--s2member-amazon-cf-files-private-key");var $visiblePrivateKeyId=$("input#ws-plugin--s2member-amazon-cf-files-private-key-id");var $autoConfigDistros=$("input#ws-plugin--s2member-amazon-cf-files-auto-configure-distros");var $autoConfigDistrosStatus=$("input#ws-plugin--s2member-amazon-cf-files-distros-auto-config-status");var autoConfigDistrosStatusValue=$.trim($autoConfigDistrosStatus.val());var hiddenPrivateKeyValue=$.trim($hiddenPrivateKey.val()),visiblePrivateKeyIdValue=$.trim($visiblePrivateKeyId.val());var hiddenPrivateKeyPrevConfigValue=$.trim($hiddenPrivateKey.attr("data-s-prev-config-value")),visiblePrivateKeyIdPrevConfigValue=$.trim($visiblePrivateKeyId.attr("data-s-prev-config-value"));if(autoConfigDistrosStatusValue==="configured"&&((visiblePrivateKeyIdPrevConfigValue&&visiblePrivateKeyIdValue!==visiblePrivateKeyIdPrevConfigValue)||(hiddenPrivateKeyPrevConfigValue&&hiddenPrivateKeyValue!==hiddenPrivateKeyPrevConfigValue))){alert("s2Member will need to delete and re-configure your Amazon CloudFront distributions if you change this. When you're done editing, click (Save All Changes) below.");$autoConfigDistros.attr("checked","checked")}else{if(autoConfigDistrosStatusValue!=="configured"&&visiblePrivateKeyIdValue&&hiddenPrivateKeyValue){alert("s2Member will need to auto-configure your Amazon CloudFront distributions for you. When you're done editing, click (Save All Changes) below.");$autoConfigDistros.attr("checked","checked")}}};$("input#ws-plugin--s2member-amazon-cf-files-private-key-id").change(updateCloudFrontDistroCfgs);$("textarea#ws-plugin--s2member-amazon-cf-files-private-key-entry").change(updateCloudFrontDistroCfgs);$("input#ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames").change(function(){var $this=$(this),thisChecked=(this.checked)?true:false;var $autoConfigDistros=$("input#ws-plugin--s2member-amazon-cf-files-auto-configure-distros");var $autoConfigDistroCnames=$("div#ws-plugin--s2member-amazon-cf-files-auto-configure-distro-cnames");(thisChecked)?$autoConfigDistroCnames.show():$autoConfigDistroCnames.hide();(thisChecked)?$autoConfigDistros.attr("checked","checked"):null}).trigger("change")}if(location.href.match(/page\=ws-plugin--s2member-paypal-ops/)){$("select#ws-plugin--s2member-auto-eot-system-enabled").change(function(){var $this=$(this),val=$this.val();var $viaCron=$("p#ws-plugin--s2member-auto-eot-system-enabled-via-cron");if(val==2){$viaCron.show()}else{$viaCron.hide()}})}if(location.href.match(/page\=ws-plugin--s2member-paypal-buttons/)){$("div.ws-menu-page select[id]").filter(function(){return this.id.match(/^ws-plugin--s2member-(level[1-9][0-9]*|modification)-term$/)}).change(function(){var button=this.id.replace(/^ws-plugin--s2member-(.+?)-term$/g,"$1");var trialDisabled=($(this).val().split("-")[2].replace(/[^0-1BN]/g,"")==="BN")?1:0;$("p#ws-plugin--s2member-"+button+"-trial-line").css("display",(trialDisabled?"none":""));$("span#ws-plugin--s2member-"+button+"-trial-then").css("display",(trialDisabled?"none":""));$("span#ws-plugin--s2member-"+button+"-20p-rule").css("display",(trialDisabled?"none":""));(trialDisabled)?$("input#ws-plugin--s2member-"+button+"-trial-period").val(0):null;(trialDisabled)?$("input#ws-plugin--s2member-"+button+"-trial-amount").val("0.00"):null});$("div.ws-menu-page input[id]").filter(function(){return this.id.match(/^ws-plugin--s2member-(level[1-9][0-9]*|modification|ccap)-ccaps$/)}).keyup(function(){var value=this.value.replace(/^(-all|-al|-a|-)[;,]*/gi,""),_all=(this.value.match(/^(-all|-al|-a|-)[;,]*/i))?"-all,":"";if(value.match(/[^a-z_0-9,]/)){this.value=_all+$.trim($.trim(value).replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase())}});ws_plugin__s2member_paypalButtonGenerate=function(button){var shortCodeTemplate='[s2Member-PayPal-Button %%attrs%% image="default" output="button" /]',shortCodeTemplateAttrs="",labels={};eval("<?php echo c_ws_plugin__s2member_utils_strings::esc_dq($labels); ?>");var shortCode=$("input#ws-plugin--s2member-"+button+"-shortcode");var code=$("textarea#ws-plugin--s2member-"+button+"-button");var modLevel=$("select#ws-plugin--s2member-modification-level");var level=(button==="modification")?modLevel.val().split(":",2)[1]:button.replace(/^level/,"");var label=labels["level"+level].replace(/"/g,"");var desc=$.trim($("input#ws-plugin--s2member-"+button+"-desc").val().replace(/"/g,""));var trialAmount=$("input#ws-plugin--s2member-"+button+"-trial-amount").val().replace(/[^0-9\.]/g,"");var trialPeriod=$("input#ws-plugin--s2member-"+button+"-trial-period").val().replace(/[^0-9]/g,"");var trialTerm=$("select#ws-plugin--s2member-"+button+"-trial-term").val().replace(/[^A-Z]/g,"");var regAmount=$("input#ws-plugin--s2member-"+button+"-amount").val().replace(/[^0-9\.]/g,"");var regPeriod=$("select#ws-plugin--s2member-"+button+"-term").val().split("-")[0].replace(/[^0-9]/g,"");var regTerm=$("select#ws-plugin--s2member-"+button+"-term").val().split("-")[1].replace(/[^A-Z]/g,"");var regRecur=$("select#ws-plugin--s2member-"+button+"-term").val().split("-")[2].replace(/[^0-1BN]/g,"");var regRecurTimes="",regRecurRetry="1";var localeCode="",digital="0",noShipping="1";var pageStyle=$.trim($("input#ws-plugin--s2member-"+button+"-page-style").val().replace(/"/g,""));var currencyCode=$("select#ws-plugin--s2member-"+button+"-currency").val().replace(/[^A-Z]/g,"");var cCaps=$.trim($.trim($("input#ws-plugin--s2member-"+button+"-ccaps").val()).replace(/^(-all|-al|-a|-)[;,]*/gi,"").replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase());cCaps=($.trim($("input#ws-plugin--s2member-"+button+"-ccaps").val()).match(/^(-all|-al|-a|-)[;,]*/i))?((cCaps)?"-all,":"-all")+cCaps.toLowerCase():cCaps.toLowerCase();trialPeriod=(regRecur==="BN")?"0":trialPeriod;trialAmount=(!trialAmount||isNaN(trialAmount)||trialAmount<0.01||trialPeriod<=0)?"0":trialAmount;var levelCcapsPer=(regRecur==="BN"&&regTerm!=="L")?level+":"+cCaps+":"+regPeriod+" "+regTerm:level+":"+cCaps;levelCcapsPer=levelCcapsPer.replace(/\:+$/g,"");if(trialAmount!=="0"&&(isNaN(trialAmount)||trialAmount<0)){alert("— Oops, a slight problem: —\n\nWhen provided, Trial Amount must be >= 0.00");return false}else{if(trialAmount!=="0"&&trialAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Trial Amount is: 10000.00");return false}else{if(trialTerm==="D"&&trialPeriod>90){alert("— Oops, a slight problem: —\n\nMaximum Trial Days is: 90.\nIf you want to offer more than 90 days, please choose Weeks or Months from the drop-down.");return false}else{if(trialTerm==="W"&&trialPeriod>52){alert("— Oops, a slight problem: —\n\nMaximum Trial Weeks is: 52.\nIf you want to offer more than 52 weeks, please choose Months from the drop-down.");return false}else{if(trialTerm==="M"&&trialPeriod>24){alert("— Oops, a slight problem: —\n\nMaximum Trial Months is: 24.\nIf you want to offer more than 24 months, please choose Years from the drop-down.");return false}else{if(trialTerm==="Y"&&trialPeriod>5){alert("— Oops, a slight problem: —\n\nMax Trial Period Years is: 5.");return false}else{if(!regAmount||isNaN(regAmount)||regAmount<0.01){alert("— Oops, a slight problem: —\n\nAmount must be >= 0.01");return false}else{if(regAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Amount is: 10000.00");return false}else{if(!desc){alert("— Oops, a slight problem: —\n\nPlease type a Description for this Button.");return false}}}}}}}}}code.html(code.val().replace(/ \<\!--(\<input type\="hidden" name\="(amount|src|srt|sra|a1|p1|t1|a3|p3|t3)" value\="(.*?)" \/\>)--\>/g," $1"));(parseInt(trialPeriod)<=0)?code.html(code.val().replace(/ (\<input type\="hidden" name\="(a1|p1|t1)" value\="(.*?)" \/\>)/g," <!--$1-->")):null;(regRecur==="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="cmd" value\=")(.*?)(" \/\>)/g," $1_xclick$3")):null;(regRecur==="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="(src|srt|sra|a1|p1|t1|a3|p3|t3)" value\="(.*?)" \/\>)/g," <!--$1-->")):null;(regRecur!=="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="cmd" value\=")(.*?)(" \/\>)/g," $1_xclick-subscriptions$3")):null;(regRecur!=="BN")?code.html(code.val().replace(/ (\<input type\="hidden" name\="amount" value\="(.*?)" \/\>)/g," <!--$1-->")):null;shortCodeTemplateAttrs+=(button==="modification")?'modify="1" ':"";shortCodeTemplateAttrs+='level="'+esc_attr(level)+'" ccaps="'+esc_attr(cCaps)+'" desc="'+esc_attr(desc)+'" ps="'+esc_attr(pageStyle)+'" lc="'+esc_attr(localeCode)+'" cc="'+esc_attr(currencyCode)+'" dg="'+esc_attr(digital)+'" ns="'+esc_attr(noShipping)+'" custom="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"';shortCodeTemplateAttrs+=' ta="'+esc_attr(trialAmount)+'" tp="'+esc_attr(trialPeriod)+'" tt="'+esc_attr(trialTerm)+'" ra="'+esc_attr(regAmount)+'" rp="'+esc_attr(regPeriod)+'" rt="'+esc_attr(regTerm)+'" rr="'+esc_attr(regRecur)+'" rrt="'+esc_attr(regRecurTimes)+'" rra="'+esc_attr(regRecurRetry)+'"';shortCode.val(shortCodeTemplate.replace(/%%attrs%%/,shortCodeTemplateAttrs));code.html(code.val().replace(/ name\="lc" value\="(.*?)"/,' name="lc" value="'+esc_attr(localeCode)+'"'));code.html(code.val().replace(/ name\="no_shipping" value\="(.*?)"/,' name="no_shipping" value="'+esc_attr(noShipping)+'"'));code.html(code.val().replace(/ name\="item_name" value\="(.*?)"/,' name="item_name" value="'+esc_attr(desc)+'"'));code.html(code.val().replace(/ name\="item_number" value\="(.*?)"/,' name="item_number" value="'+esc_attr(levelCcapsPer)+'"'));code.html(code.val().replace(/ name\="page_style" value\="(.*?)"/,' name="page_style" value="'+esc_attr(pageStyle)+'"'));code.html(code.val().replace(/ name\="currency_code" value\="(.*?)"/,' name="currency_code" value="'+esc_attr(currencyCode)+'"'));code.html(code.val().replace(/ name\="custom" value\="(.*?)"/,' name="custom" value="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"'));code.html(code.val().replace(/ name\="modify" value\="(.*?)"/,' name="modify" value="'+((button==="modification")?"1":"0")+'"'));code.html(code.val().replace(/ name\="amount" value\="(.*?)"/,' name="amount" value="'+esc_attr(regAmount)+'"'));code.html(code.val().replace(/ name\="src" value\="(.*?)"/,' name="src" value="'+esc_attr(regRecur)+'"'));code.html(code.val().replace(/ name\="srt" value\="(.*?)"/,' name="srt" value="'+esc_attr(regRecurTimes)+'"'));code.html(code.val().replace(/ name\="sra" value\="(.*?)"/,' name="sra" value="'+esc_attr(regRecurRetry)+'"'));code.html(code.val().replace(/ name\="a1" value\="(.*?)"/,' name="a1" value="'+esc_attr(trialAmount)+'"'));code.html(code.val().replace(/ name\="p1" value\="(.*?)"/,' name="p1" value="'+esc_attr(trialPeriod)+'"'));code.html(code.val().replace(/ name\="t1" value\="(.*?)"/,' name="t1" value="'+esc_attr(trialTerm)+'"'));code.html(code.val().replace(/ name\="a3" value\="(.*?)"/,' name="a3" value="'+esc_attr(regAmount)+'"'));code.html(code.val().replace(/ name\="p3" value\="(.*?)"/,' name="p3" value="'+esc_attr(regPeriod)+'"'));code.html(code.val().replace(/ name\="t3" value\="(.*?)"/,' name="t3" value="'+esc_attr(regTerm)+'"'));$("div#ws-plugin--s2member-"+button+"-button-prev").html(code.val().replace(/\<form/,'<form target="_blank"').replace(/\<\?php echo S2MEMBER_VALUE_FOR_PP_INV\(\); \?\>/g,Math.round(new Date().getTime())+'~<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["REMOTE_ADDR"])); ?>').replace(/\<\?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_(ON0|OS0|ON1|OS1); \?\>/g,""));(button==="modification")?alert("Your Modification Button has been generated.\nPlease copy/paste the Shortcode into your Login Welcome Page, or wherever you feel it would be most appropriate.\n\n* Remember, Modification Buttons should be displayed to existing Users/Members, and they should be logged-in, BEFORE clicking this Button."):alert("Your Button has been generated.\nPlease copy/paste the Shortcode Format into your Membership Options Page.");shortCode.each(function(){this.focus(),this.select()});return false};ws_plugin__s2member_paypalCcapButtonGenerate=function(){var shortCodeTemplate='[s2Member-PayPal-Button %%attrs%% image="default" output="button" /]',shortCodeTemplateAttrs="";var shortCode=$("input#ws-plugin--s2member-ccap-shortcode");var code=$("textarea#ws-plugin--s2member-ccap-button");var desc=$.trim($("input#ws-plugin--s2member-ccap-desc").val().replace(/"/g,""));var regAmount=$("input#ws-plugin--s2member-ccap-amount").val().replace(/[^0-9\.]/g,"");var regPeriod=$("select#ws-plugin--s2member-ccap-term").val().split("-")[0].replace(/[^0-9]/g,"");var regTerm=$("select#ws-plugin--s2member-ccap-term").val().split("-")[1].replace(/[^A-Z]/g,"");var regRecur=$("select#ws-plugin--s2member-ccap-term").val().split("-")[2].replace(/[^0-1BN]/g,"");var localeCode="",digital="0",noShipping="1";var pageStyle=$.trim($("input#ws-plugin--s2member-ccap-page-style").val().replace(/"/g,""));var currencyCode=$("select#ws-plugin--s2member-ccap-currency").val().replace(/[^A-Z]/g,"");var cCaps=$.trim($.trim($("input#ws-plugin--s2member-ccap-ccaps").val()).replace(/^(-all|-al|-a|-)[;,]*/gi,"").replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase());cCaps=($.trim($("input#ws-plugin--s2member-ccap-ccaps").val()).match(/^(-all|-al|-a|-)[;,]*/i))?((cCaps)?"-all,":"-all")+cCaps.toLowerCase():cCaps.toLowerCase();var levelCcapsPer=(regRecur==="BN"&&regTerm!=="L")?"*:"+cCaps+":"+regPeriod+" "+regTerm:"*:"+cCaps;levelCcapsPer=levelCcapsPer.replace(/\:+$/g,"");if(!cCaps||cCaps==="-all"){alert("— Oops, a slight problem: —\n\nPlease provide at least one Custom Capability.");return false}else{if(!regAmount||isNaN(regAmount)||regAmount<0.01){alert("— Oops, a slight problem: —\n\nAmount must be >= 0.01");return false}else{if(regAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Amount is: 10000.00");return false}else{if(!desc){alert("— Oops, a slight problem: —\n\nPlease type a Description for this Button.");return false}}}}shortCodeTemplateAttrs+='level="*" ccaps="'+esc_attr(cCaps)+'" desc="'+esc_attr(desc)+'" ps="'+esc_attr(pageStyle)+'" lc="'+esc_attr(localeCode)+'" cc="'+esc_attr(currencyCode)+'" dg="'+esc_attr(digital)+'" ns="'+esc_attr(noShipping)+'"';shortCodeTemplateAttrs+=' custom="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>" ra="'+esc_attr(regAmount)+'" rp="'+esc_attr(regPeriod)+'" rt="'+esc_attr(regTerm)+'" rr="'+esc_attr(regRecur)+'"';shortCode.val(shortCodeTemplate.replace(/%%attrs%%/,shortCodeTemplateAttrs));code.html(code.val().replace(/ name\="lc" value\="(.*?)"/,' name="lc" value="'+esc_attr(localeCode)+'"'));code.html(code.val().replace(/ name\="no_shipping" value\="(.*?)"/,' name="no_shipping" value="'+esc_attr(noShipping)+'"'));code.html(code.val().replace(/ name\="item_name" value\="(.*?)"/,' name="item_name" value="'+esc_attr(desc)+'"'));code.html(code.val().replace(/ name\="item_number" value\="(.*?)"/,' name="item_number" value="'+esc_attr(levelCcapsPer)+'"'));code.html(code.val().replace(/ name\="page_style" value\="(.*?)"/,' name="page_style" value="'+esc_attr(pageStyle)+'"'));code.html(code.val().replace(/ name\="currency_code" value\="(.*?)"/,' name="currency_code" value="'+esc_attr(currencyCode)+'"'));code.html(code.val().replace(/ name\="custom" value\="(.*?)"/,' name="custom" value="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"'));code.html(code.val().replace(/ name\="amount" value\="(.*?)"/,' name="amount" value="'+esc_attr(regAmount)+'"'));$("div#ws-plugin--s2member-ccap-button-prev").html(code.val().replace(/\<form/,'<form target="_blank"').replace(/\<\?php echo S2MEMBER_VALUE_FOR_PP_INV\(\); \?\>/g,Math.round(new Date().getTime())+'~<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["REMOTE_ADDR"])); ?>').replace(/\<\?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_(ON0|OS0|ON1|OS1); \?\>/g,""));alert("Your Button has been generated.\nPlease copy/paste the Shortcode into your Login Welcome Page, or wherever you feel it would be most appropriate.\n\n* Remember, Independent Custom Capability Buttons should ONLY be displayed to existing Users/Members, and they MUST be logged-in, BEFORE clicking this Button.");shortCode.each(function(){this.focus(),this.select()});return false};ws_plugin__s2member_paypalSpButtonGenerate=function(){var shortCodeTemplate='[s2Member-PayPal-Button %%attrs%% image="default" output="button" /]',shortCodeTemplateAttrs="";var shortCode=$("input#ws-plugin--s2member-sp-shortcode");var code=$("textarea#ws-plugin--s2member-sp-button");var leading=$("select#ws-plugin--s2member-sp-leading-id").val().replace(/[^0-9]/g,"");var additionals=$("select#ws-plugin--s2member-sp-additional-ids").val()||[];var hours=$("select#ws-plugin--s2member-sp-hours").val().replace(/[^0-9]/g,"");var regAmount=$("input#ws-plugin--s2member-sp-amount").val().replace(/[^0-9\.]/g,"");var desc=$.trim($("input#ws-plugin--s2member-sp-desc").val().replace(/"/g,""));var localeCode="",digital="0",noShipping="1";var pageStyle=$.trim($("input#ws-plugin--s2member-sp-page-style").val().replace(/"/g,""));var currencyCode=$("select#ws-plugin--s2member-sp-currency").val().replace(/[^A-Z]/g,"");if(!leading){alert("— Oops, a slight problem: —\n\nPlease select a Leading Post/Page.\n\n*Tip* If there are no Posts/Pages in the menu, it's because you've not configured s2Member for Specific Post/Page Access yet. See: s2Member -› Restriction Options -› Specific Post/Page Access.");return false}else{if(!regAmount||isNaN(regAmount)||regAmount<0.01){alert("— Oops, a slight problem: —\n\nAmount must be >= 0.01");return false}else{if(regAmount>10000&&currencyCode.toUpperCase()==="USD"){alert("— Oops, a slight problem: —\n\nMaximum Amount is: 10000.00");return false}else{if(!desc){alert("— Oops, a slight problem: —\n\nPlease type a Description for this Button.");return false}}}}for(var i=0,ids=leading;i<additionals.length;i++){if(additionals[i]&&additionals[i]!==leading){ids+=","+additionals[i]}}var spIdsHours="sp:"+ids+":"+hours;shortCodeTemplateAttrs+='sp="1" ids="'+esc_attr(ids)+'" exp="'+esc_attr(hours)+'" desc="'+esc_attr(desc)+'" ps="'+esc_attr(pageStyle)+'" lc="'+esc_attr(localeCode)+'" cc="'+esc_attr(currencyCode)+'" dg="'+esc_attr(digital)+'" ns="'+esc_attr(noShipping)+'"';shortCodeTemplateAttrs+=' custom="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>" ra="'+esc_attr(regAmount)+'"';shortCode.val(shortCodeTemplate.replace(/%%attrs%%/,shortCodeTemplateAttrs));code.html(code.val().replace(/ name\="lc" value\="(.*?)"/,' name="lc" value="'+esc_attr(localeCode)+'"'));code.html(code.val().replace(/ name\="no_shipping" value\="(.*?)"/,' name="no_shipping" value="'+esc_attr(noShipping)+'"'));code.html(code.val().replace(/ name\="item_name" value\="(.*?)"/,' name="item_name" value="'+esc_attr(desc)+'"'));code.html(code.val().replace(/ name\="item_number" value\="(.*?)"/,' name="item_number" value="'+esc_attr(spIdsHours)+'"'));code.html(code.val().replace(/ name\="page_style" value\="(.*?)"/,' name="page_style" value="'+esc_attr(pageStyle)+'"'));code.html(code.val().replace(/ name\="currency_code" value\="(.*?)"/,' name="currency_code" value="'+esc_attr(currencyCode)+'"'));code.html(code.val().replace(/ name\="custom" value\="(.*?)"/,' name="custom" value="<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"])); ?>"'));code.html(code.val().replace(/ name\="amount" value\="(.*?)"/,' name="amount" value="'+esc_attr(regAmount)+'"'));$("div#ws-plugin--s2member-sp-button-prev").html(code.val().replace(/\<form/,'<form target="_blank"').replace(/\<\?php echo S2MEMBER_VALUE_FOR_PP_INV\(\); \?\>/g,Math.round(new Date().getTime())+'~<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["REMOTE_ADDR"])); ?>').replace(/\<\?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_(ON0|OS0|ON1|OS1); \?\>/g,""));alert("Your Button has been generated.\nPlease copy/paste the Shortcode into your WordPress Editor.");shortCode.each(function(){this.focus(),this.select()});return false};ws_plugin__s2member_paypalRegLinkGenerate=function(){var level=$("select#ws-plugin--s2member-reg-link-level").val().replace(/[^0-9]/g,"");var subscrID=$.trim($("input#ws-plugin--s2member-reg-link-subscr-id").val());var custom=$.trim($("input#ws-plugin--s2member-reg-link-custom").val());var cCaps=$.trim($.trim($("input#ws-plugin--s2member-reg-link-ccaps").val()).replace(/[ \-]/g,"_").replace(/[^a-z_0-9,]/gi,"").toLowerCase());var fixedTerm=$.trim($("input#ws-plugin--s2member-reg-link-fixed-term").val().replace(/[^A-Z 0-9]/gi,"").toUpperCase());var $link=$("p#ws-plugin--s2member-reg-link"),$loading=$("img#ws-plugin--s2member-reg-link-loading");var levelCcapsPer=(fixedTerm&&!fixedTerm.match(/L$/))?level+":"+cCaps+":"+fixedTerm:level+":"+cCaps;levelCcapsPer=levelCcapsPer.replace(/\:+$/g,"");if(!subscrID){alert("— Oops, a slight problem: —\n\nPaid Subscr. ID is a required value.");return false}else{if(!custom||custom.indexOf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq ($_SERVER["HTTP_HOST"]); ?>')!==0){alert("— Oops, a slight problem: —\n\nThe Custom Value MUST start with your domain name.");return false}else{if(fixedTerm&&!fixedTerm.match(/^[1-9]+ (D|W|M|Y|L)$/)){alert("— Oops, a slight problem: —\n\nThe Fixed Term Length is not formatted properly.");return false}}}$link.hide(),$loading.show(),$.post(ajaxurl,{action:"ws_plugin__s2member_reg_access_link_via_ajax",ws_plugin__s2member_reg_access_link_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-reg-access-link-via-ajax")); ?>',s2member_reg_access_link_subscr_gateway:"paypal",s2member_reg_access_link_subscr_id:subscrID,s2member_reg_access_link_custom:custom,s2member_reg_access_link_item_number:levelCcapsPer},function(response){$link.show().html('<a href="'+esc_attr(response)+'" target="_blank" rel="external">'+esc_html(response)+"</a>"),$loading.hide()});return false};ws_plugin__s2member_paypalSpLinkGenerate=function(){var leading=$("select#ws-plugin--s2member-sp-link-leading-id").val().replace(/[^0-9]/g,"");var additionals=$("select#ws-plugin--s2member-sp-link-additional-ids").val()||[];var hours=$("select#ws-plugin--s2member-sp-link-hours").val().replace(/[^0-9]/g,"");var $link=$("p#ws-plugin--s2member-sp-link"),$loading=$("img#ws-plugin--s2member-sp-link-loading");if(!leading){alert("— Oops, a slight problem: —\n\nPlease select a Leading Post/Page.\n\n*Tip* If there are no Posts/Pages in the menu, it's because you've not configured s2Member for Specific Post/Page Access yet. See: s2Member -› Restriction Options -› Specific Post/Page Access.");return false}for(var i=0,ids=leading;i<additionals.length;i++){if(additionals[i]&&additionals[i]!==leading){ids+=","+additionals[i]}}$link.hide(),$loading.show(),$.post(ajaxurl,{action:"ws_plugin__s2member_sp_access_link_via_ajax",ws_plugin__s2member_sp_access_link_via_ajax:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (wp_create_nonce ("ws-plugin--s2member-sp-access-link-via-ajax")); ?>',s2member_sp_access_link_ids:ids,s2member_sp_access_link_hours:hours},function(response){$link.show().html('<a href="'+esc_attr(response)+'" target="_blank" rel="external">'+esc_html(response)+"</a>"),$loading.hide()});return false}}if(location.href.match(/page\=ws-plugin--s2member-els-ops/)){$("select#ws-plugin--s2member-custom-reg-opt-in").change(function(){var $this=$(this),val=$this.val();var $rows=$("tr.ws-plugin--s2member-custom-reg-opt-in-label-row");var $prevImg=$("img.ws-plugin--s2member-custom-reg-opt-in-label-prev-img");if(val<=0){$rows.css("display","none"),$prevImg.attr("src",$prevImg.attr("src").replace(/\/checked\.png$/,"/unchecked.png"))}else{if(val==1){$rows.css("display",""),$prevImg.attr("src",$prevImg.attr("src").replace(/\/unchecked\.png$/,"/checked.png"))}else{if(val==2){$rows.css("display",""),$prevImg.attr("src",$prevImg.attr("src").replace(/\/checked\.png$/,"/unchecked.png"))}}}});$('div.ws-plugin--s2member-opt-out-section input[type="checkbox"][name="ws_plugin__s2member_custom_reg_auto_opt_outs[]"]').change(function(){var thisChange=$(this).val(),checkedIndexes=[];$('div.ws-plugin--s2member-opt-out-section input[type="checkbox"][name="ws_plugin__s2member_custom_reg_auto_opt_outs[]"]').each(function(){var $this=$(this),val=$this.val(),checkboxes='input[type="checkbox"]';if(val==="removal-deletion"&&this.checked){$this.nextAll(checkboxes).slice(0,2).attr({checked:"checked",disabled:"disabled"})}else{if(val==="removal-deletion"&&!this.checked){$this.nextAll(checkboxes).slice(0,2).removeAttr("disabled");(thisChange==="removal-deletion")?$this.nextAll(checkboxes).slice(0,2).removeAttr("checked"):null}else{if(val==="modification"&&this.checked){$this.nextAll(checkboxes).slice(0,3).attr({checked:"checked",disabled:"disabled"})}else{if(val==="modification"&&!this.checked){(thisChange==="modification")?$this.nextAll(checkboxes).slice(0,3).removeAttr("checked"):null;$this.nextAll(checkboxes).slice(0,3).removeAttr("disabled")}}}}}).each(function(index){(this.checked)?checkedIndexes.push(index):null});$("select#ws-plugin--s2member-custom-reg-auto-opt-out-transitions").removeAttr("disabled");if($.inArray(3,checkedIndexes)===-1&&$.inArray(4,checkedIndexes)===-1&&$.inArray(5,checkedIndexes)===-1&&$.inArray(6,checkedIndexes)===-1){$("select#ws-plugin--s2member-custom-reg-auto-opt-out-transitions").attr("disabled","disabled")}}).last().trigger("change")}});
includes/menu-pages/menu-pages-s.js CHANGED
@@ -248,7 +248,7 @@ jQuery(document).ready(function($)
248
  {
249
  var row = 'tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-'+(fields.length-1);
250
  alert('Field created successfully.\n* Remember to "Save All Changes".');
251
- $(row).effect('highlight', 1500);
252
  }, 500);
253
  }
254
  };
@@ -270,7 +270,7 @@ jQuery(document).ready(function($)
270
  {
271
  var row = 'tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-'+index;
272
  alert('Field updated successfully.\n* Remember to "Save All Changes".');
273
- $(row).effect('highlight', 1500);
274
  }, 500);
275
  }
276
  };
248
  {
249
  var row = 'tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-'+(fields.length-1);
250
  alert('Field created successfully.\n* Remember to "Save All Changes".');
251
+ //$(row).effect('highlight');
252
  }, 500);
253
  }
254
  };
270
  {
271
  var row = 'tr.ws-plugin--s2member-custom-reg-field-configuration-table-row-'+index;
272
  alert('Field updated successfully.\n* Remember to "Save All Changes".');
273
+ //$(row).effect('highlight');
274
  }, 500);
275
  }
276
  };
includes/s2member.js CHANGED
@@ -425,7 +425,7 @@ jQuery(document).ready (function($)
425
  {
426
  return label + '\n' + '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a full URL (starting with http or https).", "s2member-front", "s2member")); ?>';
427
  }
428
- else if (expected === 'domain' && !value.match (/^([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})$/i))
429
  {
430
  return label + '\n' + '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a domain name (domain name only, without http).", "s2member-front", "s2member")); ?>';
431
  }
425
  {
426
  return label + '\n' + '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a full URL (starting with http or https).", "s2member-front", "s2member")); ?>';
427
  }
428
+ else if (expected === 'domain' && !value.match (/^([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,})$/i))
429
  {
430
  return label + '\n' + '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a domain name (domain name only, without http).", "s2member-front", "s2member")); ?>';
431
  }
includes/translations/s2member.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: 140409\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
- "POT-Creation-Date: 2014-04-10 02:25:41+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -635,7 +635,7 @@ msgstr ""
635
  #: s2member/includes/classes/paypal-utilities.inc.php:316
636
  #: s2member/includes/classes/paypal-utilities.inc.php:324
637
  #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
638
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:329
639
  msgctxt "s2member-front"
640
  msgid "Error. Please contact Support for assistance."
641
  msgstr ""
@@ -668,7 +668,7 @@ msgstr ""
668
  #: s2member/includes/classes/paypal-utilities.inc.php:314
669
  #: s2member/includes/classes/paypal-utilities.inc.php:322
670
  #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
671
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:326
672
  msgctxt "s2member-front"
673
  msgid "Error #%1$s. %2$s."
674
  msgstr ""
@@ -2744,7 +2744,7 @@ msgstr ""
2744
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:233
2745
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:517
2746
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:236
2747
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:597
2748
  msgctxt "s2member-front"
2749
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to cancel your account."
2750
  msgstr ""
@@ -2759,208 +2759,208 @@ msgstr ""
2759
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:244
2760
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:244
2761
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:250
2762
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:260
2763
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:266
2764
  msgctxt "s2member-front"
2765
  msgid "Nothing to cancel. You have NO recurring fees."
2766
  msgstr ""
2767
 
2768
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:250
2769
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:528
2770
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:272
2771
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:608
2772
  msgctxt "s2member-front"
2773
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to update your billing information."
2774
  msgstr ""
2775
 
2776
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:253
2777
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:275
2778
  msgctxt "s2member-front"
2779
  msgid "Nothing to update. You're NOT a paid Member."
2780
  msgstr ""
2781
 
2782
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:258
2783
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:261
2784
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:280
2785
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:289
2786
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:302
2787
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:308
2788
  msgctxt "s2member-front"
2789
  msgid "Nothing to update. You have NO recurring fees. Or, your billing profile is no longer active. Please contact Support if you need assistance."
2790
  msgstr ""
2791
 
2792
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:267
2793
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:314
2794
  msgctxt "s2member-admin"
2795
  msgid "Invalid form configuration. Missing \"level\" attribute. Membership Level. Must be numeric [0-%s]."
2796
  msgstr ""
2797
 
2798
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:270
2799
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:317
2800
  msgctxt "s2member-admin"
2801
  msgid "Invalid form configuration. Invalid \"level\" attribute. Membership Level. Must be numeric [0-%s]."
2802
  msgstr ""
2803
 
2804
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:273
2805
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:361
2806
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:320
2807
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:426
2808
  msgctxt "s2member-admin"
2809
  msgid "Invalid form configuration. Invalid \"ccaps\" attribute. Custom Capabilities. When provided, must be all lowercase [a-z_0-9,]. A preceding `-all,` directive is also acceptable."
2810
  msgstr ""
2811
 
2812
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:276
2813
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:385
2814
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:323
2815
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:468
2816
  msgctxt "s2member-admin"
2817
  msgid "Invalid form configuration. Invalid \"tp\" attribute. The Trial Period. When provided, must be numeric."
2818
  msgstr ""
2819
 
2820
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:279
2821
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:388
2822
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:326
2823
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:471
2824
  msgctxt "s2member-admin"
2825
  msgid "Invalid form configuration. Invalid \"tp\" attribute. The Trial Period. When provided, must be >= 1."
2826
  msgstr ""
2827
 
2828
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:282
2829
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:391
2830
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:329
2831
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:474
2832
  msgctxt "s2member-admin"
2833
  msgid "Invalid form configuration. Missing \"tt\" attribute. The Trial Term. When \"tp\" is provided, \"tt\" (Trial Term) must be one of D,W,M,Y."
2834
  msgstr ""
2835
 
2836
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:285
2837
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:394
2838
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:332
2839
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:477
2840
  msgctxt "s2member-admin"
2841
  msgid "Invalid form configuration. Invalid \"tt\" attribute. The Trial Term. When \"tp\" is provided, \"tt\" (Trial Term) must be one of D,W,M,Y."
2842
  msgstr ""
2843
 
2844
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:288
2845
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:335
2846
  msgctxt "s2member-admin"
2847
  msgid "Invalid form configuration. Invalid \"custom\" attribute. When provided, must start with your domain name."
2848
  msgstr ""
2849
 
2850
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:293
2851
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:340
2852
  msgctxt "s2member-admin"
2853
  msgid "Invalid form configuration. Missing \"ids\" attribute. Must contain comma-delimited Post/Page IDs."
2854
  msgstr ""
2855
 
2856
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:296
2857
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:343
2858
  msgctxt "s2member-admin"
2859
  msgid "Invalid form configuration. Invalid \"ids\" attribute. Must contain comma-delimited Post/Page IDs. Must contain [0-9,] only."
2860
  msgstr ""
2861
 
2862
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:299
2863
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:346
2864
  msgctxt "s2member-admin"
2865
  msgid "Invalid form configuration. Missing \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be numeric."
2866
  msgstr ""
2867
 
2868
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:302
2869
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:349
2870
  msgctxt "s2member-admin"
2871
  msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be numeric."
2872
  msgstr ""
2873
 
2874
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:305
2875
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:352
2876
  msgctxt "s2member-admin"
2877
  msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be >= 1."
2878
  msgstr ""
2879
 
2880
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:308
2881
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:355
2882
  msgctxt "s2member-admin"
2883
  msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be <= 43800."
2884
  msgstr ""
2885
 
2886
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:311
2887
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:358
2888
  msgctxt "s2member-admin"
2889
  msgid "Invalid form configuration. Missing \"sp_ids_exp\" internal attribute. Please check Shortcode Attributes."
2890
  msgstr ""
2891
 
2892
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:314
2893
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:361
2894
  msgctxt "s2member-admin"
2895
  msgid "Invalid form configuration. Invalid \"sp_ids_exp\" internal attribute. Please check Shortcode Attributes."
2896
  msgstr ""
2897
 
2898
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:317
2899
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:367
2900
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:364
2901
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:432
2902
  msgctxt "s2member-admin"
2903
  msgid "Invalid form configuration. Missing \"desc\" attribute. Please provide a Description for this form."
2904
  msgstr ""
2905
 
2906
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:320
2907
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:370
2908
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:367
2909
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:435
2910
  msgctxt "s2member-admin"
2911
  msgid "Invalid form configuration. Your \"desc\" (Description) attribute must be <= 100 characters long."
2912
  msgstr ""
2913
 
2914
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:323
2915
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:373
2916
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:370
2917
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:438
2918
  msgctxt "s2member-admin"
2919
  msgid "Invalid form configuration. Missing \"custom\" attribute. Must start with your domain name."
2920
  msgstr ""
2921
 
2922
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:326
2923
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:373
2924
  msgctxt "s2member-admin"
2925
  msgid "Invalid form configuration. Invalid \"custom\" attribute. Must start with your domain name."
2926
  msgstr ""
2927
 
2928
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:329
2929
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:379
2930
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:376
2931
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:444
2932
  msgctxt "s2member-admin"
2933
  msgid "Invalid form configuration. Missing \"cc\" attribute. Must be a 3 character Currency Code."
2934
  msgstr ""
2935
 
2936
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:332
2937
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:382
2938
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:379
2939
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:447
2940
  msgctxt "s2member-admin"
2941
  msgid "Invalid form configuration. Invalid \"cc\" attribute. Must be a 3 character Currency Code."
2942
  msgstr ""
2943
 
2944
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:335
2945
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:463
2946
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:400
2947
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:537
2948
  msgctxt "s2member-admin"
2949
  msgid "Invalid form configuration. Missing \"ra\" attribute. The Regular Amount. Must be >= 0.00."
2950
  msgstr ""
2951
 
2952
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:338
2953
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:466
2954
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:403
2955
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:540
2956
  msgctxt "s2member-admin"
2957
  msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be numeric."
2958
  msgstr ""
2959
 
2960
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:341
2961
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:469
2962
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:406
2963
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:543
2964
  msgctxt "s2member-admin"
2965
  msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be >= 0.00."
2966
  msgstr ""
@@ -2972,69 +2972,69 @@ msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount.
2972
  msgstr ""
2973
 
2974
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:349
2975
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:414
2976
  msgctxt "s2member-front"
2977
  msgid "You must <a href=\"%s\" rel=\"nofollow\">login</a> to update your billing plan."
2978
  msgstr ""
2979
 
2980
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:352
2981
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:417
2982
  msgctxt "s2member-front"
2983
  msgid "You must <a href=\"%s\" rel=\"nofollow\">login</a> before making this purchase."
2984
  msgstr ""
2985
 
2986
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:355
2987
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:420
2988
  msgctxt "s2member-admin"
2989
  msgid "Invalid form configuration. Missing \"level\" attribute. Membership Level. Must be numeric [1-%s], or an asterisk (*)."
2990
  msgstr ""
2991
 
2992
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:358
2993
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:423
2994
  msgctxt "s2member-admin"
2995
  msgid "Invalid form configuration. Invalid \"level\" attribute. Membership Level. Must be numeric [1-%s], or an asterisk (*)."
2996
  msgstr ""
2997
 
2998
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:364
2999
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:429
3000
  msgctxt "s2member-admin"
3001
  msgid "Invalid form configuration. Missing or invalid \"ccaps\" attribute. When \"level\" is \"*\" for (Independent Custom Capabilities), \"ccaps\" is required. All lowercase [a-z_0-9,]. A preceding `-all,` directive is also acceptable."
3002
  msgstr ""
3003
 
3004
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:376
3005
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:441
3006
  msgctxt "s2member-admin"
3007
  msgid "Invalid form configuration. Invalid \"custom\" attribute. Must start with matching domain."
3008
  msgstr ""
3009
 
3010
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:397
3011
  msgctxt "s2member-admin"
3012
- msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. The \"tt\" (Trial Term) attribute is \"D\", and \"tp\" (Trial Period) > 365."
3013
  msgstr ""
3014
 
3015
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:400
3016
  msgctxt "s2member-admin"
3017
- msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. The \"tt\" (Trial Term) attribute is \"W\", and \"tp\" (Trial Period) > 52."
3018
  msgstr ""
3019
 
3020
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:403
3021
  msgctxt "s2member-admin"
3022
- msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. The \"tt\" (Trial Term) attribute is \"M\", and \"tp\" (Trial Period) > 12."
3023
  msgstr ""
3024
 
3025
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:406
3026
  msgctxt "s2member-admin"
3027
- msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. The \"tt\" (Trial Term) attribute is \"Y\", and \"tp\" (Trial Period) > 1."
3028
  msgstr ""
3029
 
3030
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:409
3031
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:480
3032
  msgctxt "s2member-admin"
3033
  msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be numeric."
3034
  msgstr ""
3035
 
3036
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:412
3037
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:483
3038
  msgctxt "s2member-admin"
3039
  msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be >= 0.00."
3040
  msgstr ""
@@ -3045,31 +3045,31 @@ msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. W
3045
  msgstr ""
3046
 
3047
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:418
3048
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:489
3049
  msgctxt "s2member-admin"
3050
  msgid "Invalid form configuration. Missing \"rp\" attribute. The Regular Period. Must be >= 1."
3051
  msgstr ""
3052
 
3053
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:421
3054
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:492
3055
  msgctxt "s2member-admin"
3056
  msgid "Invalid form configuration. Invalid \"rp\" attribute. The Regular Period. Must be numeric."
3057
  msgstr ""
3058
 
3059
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:424
3060
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:495
3061
  msgctxt "s2member-admin"
3062
  msgid "Invalid form configuration. Invalid \"rp\" attribute. The Regular Period. Must be >= 1."
3063
  msgstr ""
3064
 
3065
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:427
3066
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:498
3067
  msgctxt "s2member-admin"
3068
  msgid "Invalid form configuration. Missing \"rt\" attribute. The Regular Term. Must be one of D,W,M,Y,L."
3069
  msgstr ""
3070
 
3071
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:430
3072
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:501
3073
  msgctxt "s2member-admin"
3074
  msgid "Invalid form configuration. Invalid \"rt\" attribute. The Regular Term. Must be one of D,W,M,Y,L."
3075
  msgstr ""
@@ -3080,93 +3080,93 @@ msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\"
3080
  msgstr ""
3081
 
3082
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:436
3083
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:504
3084
  msgctxt "s2member-admin"
3085
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"D\", \"rp\" (Regular Period) > 365, and \"rr\" is not \"BN\" (Buy Now)."
3086
  msgstr ""
3087
 
3088
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:439
3089
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:507
3090
  msgctxt "s2member-admin"
3091
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"W\", \"rp\" (Regular Period) > 52, and \"rr\" is not \"BN\" (Buy Now)."
3092
  msgstr ""
3093
 
3094
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:442
3095
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:510
3096
  msgctxt "s2member-admin"
3097
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"M\", \"rp\" (Regular Period) > 12, and \"rr\" is not \"BN\" (Buy Now)."
3098
  msgstr ""
3099
 
3100
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:445
3101
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:519
3102
  msgctxt "s2member-admin"
3103
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"Y\", \"rp\" (Regular Period) > 1, and \"rr\" is not \"BN\" (Buy Now)."
3104
  msgstr ""
3105
 
3106
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:448
3107
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:522
3108
  msgctxt "s2member-admin"
3109
  msgid "Invalid form configuration. Invalid \"rp, rt\" attributes. The \"rt\" (Regular Term) attribute is \"L\" (Lifetime), and \"rp\" (Regular Period) > 1."
3110
  msgstr ""
3111
 
3112
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:451
3113
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:525
3114
  msgctxt "s2member-admin"
3115
  msgid "Invalid form configuration. Invalid \"rt, rr\" attributes. The \"rt\" (Regular Term) attribute is \"L\" (Lifetime), and \"rr\" is not \"BN\" (Buy Now)."
3116
  msgstr ""
3117
 
3118
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:454
3119
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:528
3120
  msgctxt "s2member-admin"
3121
  msgid "Invalid form configuration. Missing \"level_ccaps_eotper\" attribute. Please check Shortcode Attributes."
3122
  msgstr ""
3123
 
3124
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:457
3125
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:460
3126
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:531
3127
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:534
3128
  msgctxt "s2member-admin"
3129
  msgid "Invalid form configuration. Invalid \"level_ccaps_eotper\" attribute. Please check Shortcode Attributes."
3130
  msgstr ""
3131
 
3132
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:475
3133
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:549
3134
  msgctxt "s2member-admin"
3135
  msgid "Invalid form configuration. Invalid \"rr\" attribute. Regular Recurring. When provided, must be 0, 1, or BN."
3136
  msgstr ""
3137
 
3138
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:478
3139
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:552
3140
  msgctxt "s2member-admin"
3141
  msgid "Invalid form configuration. Invalid \"rr, tp\" attributes. The \"rr\" (Regular Recurring) attribute is \"BN\" (Buy Now), and \"tp\" (Trial Period) is not \"0\"."
3142
  msgstr ""
3143
 
3144
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:481
3145
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:555
3146
  msgctxt "s2member-admin"
3147
  msgid "Invalid form configuration. Invalid \"level, rr\" attributes. The \"level\" (Level) attribute is \"*\" for (Independent Custom Capabilities), and \"rr\" is not \"BN\" (Buy Now)."
3148
  msgstr ""
3149
 
3150
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:484
3151
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:558
3152
  msgctxt "s2member-admin"
3153
  msgid "Invalid form configuration. Invalid \"ta, tp, tt\" attributes. Trial Period. When provided, these cannot be exactly the same as your \"ra, rp, rt\" attributes."
3154
  msgstr ""
3155
 
3156
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:487
3157
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:561
3158
  msgctxt "s2member-admin"
3159
  msgid "Invalid form configuration. Invalid \"rrt\" attribute. Recurring Times (fixed). When provided, must be numeric."
3160
  msgstr ""
3161
 
3162
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:490
3163
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:564
3164
  msgctxt "s2member-admin"
3165
  msgid "Invalid form configuration. Invalid \"rrt\" attribute. Recurring Times (fixed). When provided, must be >= 1."
3166
  msgstr ""
3167
 
3168
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:493
3169
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:567
3170
  msgctxt "s2member-admin"
3171
  msgid "Invalid form configuration. Invalid \"rr, rrt\" attributes. When \"rrt\" (Recurring Times) is provided, \"rr\" (Regular Recurring) must be 1."
3172
  msgstr ""
@@ -3176,11 +3176,11 @@ msgstr ""
3176
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:614
3177
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:670
3178
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:762
3179
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:600
3180
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:650
3181
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:694
3182
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:750
3183
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:842
3184
  msgctxt "s2member-front"
3185
  msgid "Missing or invalid Security Code. Please try again."
3186
  msgstr ""
@@ -3188,9 +3188,9 @@ msgstr ""
3188
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:523
3189
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:531
3190
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:681
3191
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:603
3192
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:611
3193
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:761
3194
  msgctxt "s2member-admin"
3195
  msgid "Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access."
3196
  msgstr ""
@@ -3198,9 +3198,9 @@ msgstr ""
3198
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:534
3199
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:631
3200
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:723
3201
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:614
3202
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:711
3203
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:803
3204
  msgctxt "s2member-front"
3205
  msgid "Missing Card Type (Billing Method). Please try again."
3206
  msgstr ""
@@ -3210,11 +3210,11 @@ msgstr ""
3210
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:637
3211
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:726
3212
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:729
3213
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:617
3214
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:714
3215
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:717
3216
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:806
3217
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:809
3218
  msgctxt "s2member-front"
3219
  msgid "Invalid Card Type (Billing Method). Please try again."
3220
  msgstr ""
@@ -3222,9 +3222,9 @@ msgstr ""
3222
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:540
3223
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:640
3224
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:732
3225
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:620
3226
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:720
3227
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:812
3228
  msgctxt "s2member-front"
3229
  msgid "Missing Card Number. Please try again."
3230
  msgstr ""
@@ -3232,9 +3232,9 @@ msgstr ""
3232
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:543
3233
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:643
3234
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:735
3235
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:623
3236
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:723
3237
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:815
3238
  msgctxt "s2member-front"
3239
  msgid "Missing Card Expiration Date (mm/yyyy). Please try again."
3240
  msgstr ""
@@ -3242,9 +3242,9 @@ msgstr ""
3242
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:546
3243
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:646
3244
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:738
3245
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:626
3246
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:726
3247
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:818
3248
  msgctxt "s2member-front"
3249
  msgid "Invalid Card Expiration Date. Must be in this format (mm/yyyy). Please try again."
3250
  msgstr ""
@@ -3252,9 +3252,9 @@ msgstr ""
3252
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:549
3253
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:649
3254
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:741
3255
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:629
3256
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:729
3257
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:821
3258
  msgctxt "s2member-front"
3259
  msgid "Missing Card Verification Code. It's on the back of your Card. 3-4 digits. Please try again."
3260
  msgstr ""
@@ -3262,9 +3262,9 @@ msgstr ""
3262
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:552
3263
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:652
3264
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:744
3265
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:632
3266
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:732
3267
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:824
3268
  msgctxt "s2member-front"
3269
  msgid "Missing Card Start Date, or Issue #. Required for Maestro/Solo. Please try again."
3270
  msgstr ""
@@ -3272,9 +3272,9 @@ msgstr ""
3272
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:555
3273
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:655
3274
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:747
3275
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:635
3276
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:735
3277
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:827
3278
  msgctxt "s2member-front"
3279
  msgid "Missing Street Address. Please try again."
3280
  msgstr ""
@@ -3282,9 +3282,9 @@ msgstr ""
3282
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:558
3283
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:658
3284
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:750
3285
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:638
3286
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:738
3287
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:830
3288
  msgctxt "s2member-front"
3289
  msgid "Missing City/Town. Please try again."
3290
  msgstr ""
@@ -3292,9 +3292,9 @@ msgstr ""
3292
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:561
3293
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:661
3294
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:753
3295
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:641
3296
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:741
3297
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:833
3298
  msgctxt "s2member-front"
3299
  msgid "Missing State/Province. Please try again."
3300
  msgstr ""
@@ -3302,9 +3302,9 @@ msgstr ""
3302
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:564
3303
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:664
3304
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:756
3305
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:644
3306
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:744
3307
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:836
3308
  msgctxt "s2member-front"
3309
  msgid "Missing Country. Please try again."
3310
  msgstr ""
@@ -3312,9 +3312,9 @@ msgstr ""
3312
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:567
3313
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:667
3314
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:759
3315
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:647
3316
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:747
3317
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:839
3318
  msgctxt "s2member-front"
3319
  msgid "Missing Postal/Zip Code. Please try again."
3320
  msgstr ""
@@ -3322,9 +3322,9 @@ msgstr ""
3322
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:575
3323
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:619
3324
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:684
3325
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:655
3326
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:699
3327
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:764
3328
  msgctxt "s2member-front"
3329
  msgid "Missing First Name. Please try again."
3330
  msgstr ""
@@ -3332,9 +3332,9 @@ msgstr ""
3332
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:578
3333
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:622
3334
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:687
3335
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:658
3336
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:702
3337
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:767
3338
  msgctxt "s2member-front"
3339
  msgid "Missing Last Name. Please try again."
3340
  msgstr ""
@@ -3342,9 +3342,9 @@ msgstr ""
3342
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:581
3343
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:625
3344
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:690
3345
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:661
3346
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:705
3347
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:770
3348
  msgctxt "s2member-front"
3349
  msgid "Missing or invalid Email Address. Please try again."
3350
  msgstr ""
@@ -3352,91 +3352,91 @@ msgstr ""
3352
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:584
3353
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:628
3354
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:693
3355
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:664
3356
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:708
3357
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:773
3358
  msgctxt "s2member-front"
3359
  msgid "Invalid Email Address. Please try again."
3360
  msgstr ""
3361
 
3362
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:587
3363
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:696
3364
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:667
3365
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:776
3366
  msgctxt "s2member-front"
3367
  msgid "That Email Address is already in use. Please try again."
3368
  msgstr ""
3369
 
3370
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:590
3371
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:699
3372
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:670
3373
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:779
3374
  msgctxt "s2member-front"
3375
  msgid "Missing or invalid Username. Please try again."
3376
  msgstr ""
3377
 
3378
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:593
3379
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:702
3380
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:673
3381
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:782
3382
  msgctxt "s2member-front"
3383
  msgid "Invalid Username. Please try again. Use ONLY lowercase alphanumerics."
3384
  msgstr ""
3385
 
3386
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:596
3387
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:705
3388
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:676
3389
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:785
3390
  msgctxt "s2member-front"
3391
  msgid "That Username is already in use. Please try again."
3392
  msgstr ""
3393
 
3394
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:602
3395
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:711
3396
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:682
3397
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:791
3398
  msgctxt "s2member-front"
3399
  msgid "Missing Password. Please try again."
3400
  msgstr ""
3401
 
3402
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:605
3403
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:714
3404
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:685
3405
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:794
3406
  msgctxt "s2member-front"
3407
  msgid "Invalid Password. Must be at least 6 characters. Please try again."
3408
  msgstr ""
3409
 
3410
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:608
3411
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:717
3412
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:688
3413
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:797
3414
  msgctxt "s2member-front"
3415
  msgid "Invalid Password. Max length is 20 characters. Please try again."
3416
  msgstr ""
3417
 
3418
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:611
3419
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:720
3420
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:691
3421
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:800
3422
  msgctxt "s2member-front"
3423
  msgid "Password fields do NOT match. Please try again."
3424
  msgstr ""
3425
 
3426
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:675
3427
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:755
3428
  msgctxt "s2member-front"
3429
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to modify your billing plan."
3430
  msgstr ""
3431
 
3432
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:678
3433
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:758
3434
  msgctxt "s2member-front"
3435
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> before making this purchase."
3436
  msgstr ""
3437
 
3438
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:765
3439
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:845
3440
  msgctxt "s2member-front"
3441
  msgid "Unknown form submission type. Please contact Support."
3442
  msgstr ""
@@ -3473,26 +3473,26 @@ msgctxt "s2member-front"
3473
  msgid "<strong>Oops.</strong> No Subscr. ID. Please contact Support for assistance."
3474
  msgstr ""
3475
 
3476
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:666
3477
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:809
3478
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:295
3479
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:438
3480
  msgctxt "s2member-front percentage-symbol"
3481
  msgid "%"
3482
  msgstr ""
3483
 
3484
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:808
3485
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:437
3486
  msgctxt "s2member-front"
3487
  msgid " + tax"
3488
  msgstr ""
3489
 
3490
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:853
3491
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:905
3492
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:918
3493
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:940
3494
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1000
3495
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1015
3496
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:482
3497
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:534
3498
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:547
@@ -3503,12 +3503,12 @@ msgctxt "s2member-front"
3503
  msgid "COUPON %s off. (Now: %s)"
3504
  msgstr ""
3505
 
3506
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:854
3507
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:906
3508
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:919
3509
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:941
3510
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1001
3511
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1016
3512
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:483
3513
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:535
3514
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:548
@@ -3519,12 +3519,12 @@ msgctxt "s2member-front"
3519
  msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s</strong>)</div>"
3520
  msgstr ""
3521
 
3522
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:866
3523
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:879
3524
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:892
3525
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:955
3526
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:970
3527
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:985
3528
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:495
3529
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:508
3530
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:521
@@ -3535,12 +3535,12 @@ msgctxt "s2member-front"
3535
  msgid "COUPON %s off. (Now: %s, then %s)"
3536
  msgstr ""
3537
 
3538
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:867
3539
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:880
3540
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:893
3541
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:956
3542
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:971
3543
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:986
3544
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:496
3545
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:509
3546
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:522
@@ -3551,27 +3551,27 @@ msgctxt "s2member-front"
3551
  msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s, then %s</strong>)</div>"
3552
  msgstr ""
3553
 
3554
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:923
3555
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1020
3556
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:552
3557
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:649
3558
  msgctxt "s2member-front"
3559
  msgid "<div>Sorry, your Coupon is not applicable.</div>"
3560
  msgstr ""
3561
 
3562
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1024
3563
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:653
3564
  msgctxt "s2member-front"
3565
  msgid "<div>Coupon: <strong>%s0.00 off</strong>.</div>"
3566
  msgstr ""
3567
 
3568
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1028
3569
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:657
3570
  msgctxt "s2member-front"
3571
  msgid "<div>Sorry, your Coupon cannot be applied to this particular purchase.</div>"
3572
  msgstr ""
3573
 
3574
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1032
3575
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:661
3576
  msgctxt "s2member-front"
3577
  msgid "<div>Sorry, your Coupon <strong>expired</strong>: <em>%s</em>.</div>"
@@ -3579,14 +3579,14 @@ msgstr ""
3579
 
3580
  #. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
3581
  #. is original description.
3582
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1038
3583
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:667
3584
  msgctxt "s2member-front"
3585
  msgid "%1$s ~ ORIGINALLY: %2$s"
3586
  msgstr ""
3587
 
3588
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1067
3589
- #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1070
3590
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:696
3591
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:699
3592
  msgctxt "s2member-front"
@@ -3616,7 +3616,7 @@ msgstr ""
3616
 
3617
  #: s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:123
3618
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:247
3619
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:263
3620
  msgctxt "s2member-front"
3621
  msgid "<strong>Unable to cancel at this time.</strong> Your account is pending other changes. Please try again in 15 minutes."
3622
  msgstr ""
@@ -3682,9 +3682,9 @@ msgctxt "s2member-admin"
3682
  msgid "PayPal configuration error. Your PayPal API Signature is not yet configured."
3683
  msgstr ""
3684
 
3685
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:283
3686
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:296
3687
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:299
3688
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:79
3689
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:135
3690
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:139
@@ -3694,76 +3694,76 @@ msgctxt "s2member-front"
3694
  msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal</a> to update your billing information."
3695
  msgstr ""
3696
 
3697
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:286
3698
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:305
3699
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:127
3700
  msgctxt "s2member-front"
3701
  msgid "<strong>Unable to update at this time.</strong> Your account is pending other changes. Please try again in 15 minutes."
3702
  msgstr ""
3703
 
3704
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:382
3705
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:450
3706
  msgctxt "s2member-admin"
3707
  msgid "Invalid form configuration. Missing \"dg\" attribute. Digital indicator. Must be numeric [0-1]."
3708
  msgstr ""
3709
 
3710
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:385
3711
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:453
3712
  msgctxt "s2member-admin"
3713
  msgid "Invalid form configuration. Invalid \"dg\" attribute. Digital indicator. Must be numeric [0-1]."
3714
  msgstr ""
3715
 
3716
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:388
3717
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:456
3718
  msgctxt "s2member-admin"
3719
  msgid "Invalid form configuration. Missing \"ns\" attribute. Shipping configuration. Must be numeric [0-2]."
3720
  msgstr ""
3721
 
3722
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:391
3723
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:459
3724
  msgctxt "s2member-admin"
3725
  msgid "Invalid form configuration. Invalid \"ns\" attribute. Shipping configuration. Must be numeric [0-2]."
3726
  msgstr ""
3727
 
3728
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:394
3729
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:462
3730
  msgctxt "s2member-admin"
3731
  msgid "Invalid form configuration. Invalid \"ns\" attribute. Shipping configuration. Must be 1 with \"dg\" (digital) items."
3732
  msgstr ""
3733
 
3734
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:397
3735
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:465
3736
  msgctxt "s2member-admin"
3737
  msgid "Invalid form configuration. Invalid \"lc\" attribute. Locale Code. When provided, must be a 2 character country code."
3738
  msgstr ""
3739
 
3740
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:409
3741
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:546
3742
  msgctxt "s2member-admin"
3743
  msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 10000.00."
3744
  msgstr ""
3745
 
3746
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:486
3747
  msgctxt "s2member-admin"
3748
  msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 10000.00."
3749
  msgstr ""
3750
 
3751
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:513
3752
  msgctxt "s2member-admin"
3753
  msgid "Invalid Payflow form configuration. Invalid \"rt, rp, rr\" attributes. Payflow supports a specific set of recurring intervals. Pro Forms can be configured to charge: weekly, bi-weekly, monthly, quarterly, semi-yearly or yearly. Any other combination results in this error. This is a Payflow limitation."
3754
  msgstr ""
3755
 
3756
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:516
3757
  msgctxt "s2member-admin"
3758
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"Y\", \"rp\" (Regular Period) > 5, and \"rr\" is not \"BN\" (Buy Now)."
3759
  msgstr ""
3760
 
3761
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:570
3762
  msgctxt "s2member-admin"
3763
  msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be numeric."
3764
  msgstr ""
3765
 
3766
- #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:573
3767
  msgctxt "s2member-admin"
3768
  msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be >= 0."
3769
  msgstr ""
2
  # This file is distributed under the same license as the package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: 140423\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
+ "POT-Creation-Date: 2014-04-24 01:15:56+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
635
  #: s2member/includes/classes/paypal-utilities.inc.php:316
636
  #: s2member/includes/classes/paypal-utilities.inc.php:324
637
  #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
638
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:325
639
  msgctxt "s2member-front"
640
  msgid "Error. Please contact Support for assistance."
641
  msgstr ""
668
  #: s2member/includes/classes/paypal-utilities.inc.php:314
669
  #: s2member/includes/classes/paypal-utilities.inc.php:322
670
  #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
671
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:322
672
  msgctxt "s2member-front"
673
  msgid "Error #%1$s. %2$s."
674
  msgstr ""
2744
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:233
2745
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:517
2746
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:236
2747
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:595
2748
  msgctxt "s2member-front"
2749
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to cancel your account."
2750
  msgstr ""
2759
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:244
2760
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:244
2761
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:250
2762
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:259
2763
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:265
2764
  msgctxt "s2member-front"
2765
  msgid "Nothing to cancel. You have NO recurring fees."
2766
  msgstr ""
2767
 
2768
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:250
2769
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:528
2770
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:271
2771
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:606
2772
  msgctxt "s2member-front"
2773
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to update your billing information."
2774
  msgstr ""
2775
 
2776
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:253
2777
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:274
2778
  msgctxt "s2member-front"
2779
  msgid "Nothing to update. You're NOT a paid Member."
2780
  msgstr ""
2781
 
2782
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:258
2783
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:261
2784
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:279
2785
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:288
2786
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:300
2787
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:306
2788
  msgctxt "s2member-front"
2789
  msgid "Nothing to update. You have NO recurring fees. Or, your billing profile is no longer active. Please contact Support if you need assistance."
2790
  msgstr ""
2791
 
2792
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:267
2793
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:312
2794
  msgctxt "s2member-admin"
2795
  msgid "Invalid form configuration. Missing \"level\" attribute. Membership Level. Must be numeric [0-%s]."
2796
  msgstr ""
2797
 
2798
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:270
2799
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:315
2800
  msgctxt "s2member-admin"
2801
  msgid "Invalid form configuration. Invalid \"level\" attribute. Membership Level. Must be numeric [0-%s]."
2802
  msgstr ""
2803
 
2804
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:273
2805
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:361
2806
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:318
2807
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:424
2808
  msgctxt "s2member-admin"
2809
  msgid "Invalid form configuration. Invalid \"ccaps\" attribute. Custom Capabilities. When provided, must be all lowercase [a-z_0-9,]. A preceding `-all,` directive is also acceptable."
2810
  msgstr ""
2811
 
2812
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:276
2813
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:385
2814
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:321
2815
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:466
2816
  msgctxt "s2member-admin"
2817
  msgid "Invalid form configuration. Invalid \"tp\" attribute. The Trial Period. When provided, must be numeric."
2818
  msgstr ""
2819
 
2820
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:279
2821
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:388
2822
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:324
2823
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:469
2824
  msgctxt "s2member-admin"
2825
  msgid "Invalid form configuration. Invalid \"tp\" attribute. The Trial Period. When provided, must be >= 1."
2826
  msgstr ""
2827
 
2828
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:282
2829
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:391
2830
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:327
2831
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:472
2832
  msgctxt "s2member-admin"
2833
  msgid "Invalid form configuration. Missing \"tt\" attribute. The Trial Term. When \"tp\" is provided, \"tt\" (Trial Term) must be one of D,W,M,Y."
2834
  msgstr ""
2835
 
2836
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:285
2837
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:394
2838
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:330
2839
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:475
2840
  msgctxt "s2member-admin"
2841
  msgid "Invalid form configuration. Invalid \"tt\" attribute. The Trial Term. When \"tp\" is provided, \"tt\" (Trial Term) must be one of D,W,M,Y."
2842
  msgstr ""
2843
 
2844
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:288
2845
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:333
2846
  msgctxt "s2member-admin"
2847
  msgid "Invalid form configuration. Invalid \"custom\" attribute. When provided, must start with your domain name."
2848
  msgstr ""
2849
 
2850
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:293
2851
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:338
2852
  msgctxt "s2member-admin"
2853
  msgid "Invalid form configuration. Missing \"ids\" attribute. Must contain comma-delimited Post/Page IDs."
2854
  msgstr ""
2855
 
2856
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:296
2857
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:341
2858
  msgctxt "s2member-admin"
2859
  msgid "Invalid form configuration. Invalid \"ids\" attribute. Must contain comma-delimited Post/Page IDs. Must contain [0-9,] only."
2860
  msgstr ""
2861
 
2862
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:299
2863
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:344
2864
  msgctxt "s2member-admin"
2865
  msgid "Invalid form configuration. Missing \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be numeric."
2866
  msgstr ""
2867
 
2868
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:302
2869
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:347
2870
  msgctxt "s2member-admin"
2871
  msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be numeric."
2872
  msgstr ""
2873
 
2874
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:305
2875
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:350
2876
  msgctxt "s2member-admin"
2877
  msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be >= 1."
2878
  msgstr ""
2879
 
2880
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:308
2881
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:353
2882
  msgctxt "s2member-admin"
2883
  msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be <= 43800."
2884
  msgstr ""
2885
 
2886
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:311
2887
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:356
2888
  msgctxt "s2member-admin"
2889
  msgid "Invalid form configuration. Missing \"sp_ids_exp\" internal attribute. Please check Shortcode Attributes."
2890
  msgstr ""
2891
 
2892
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:314
2893
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:359
2894
  msgctxt "s2member-admin"
2895
  msgid "Invalid form configuration. Invalid \"sp_ids_exp\" internal attribute. Please check Shortcode Attributes."
2896
  msgstr ""
2897
 
2898
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:317
2899
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:367
2900
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:362
2901
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:430
2902
  msgctxt "s2member-admin"
2903
  msgid "Invalid form configuration. Missing \"desc\" attribute. Please provide a Description for this form."
2904
  msgstr ""
2905
 
2906
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:320
2907
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:370
2908
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:365
2909
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:433
2910
  msgctxt "s2member-admin"
2911
  msgid "Invalid form configuration. Your \"desc\" (Description) attribute must be <= 100 characters long."
2912
  msgstr ""
2913
 
2914
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:323
2915
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:373
2916
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:368
2917
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:436
2918
  msgctxt "s2member-admin"
2919
  msgid "Invalid form configuration. Missing \"custom\" attribute. Must start with your domain name."
2920
  msgstr ""
2921
 
2922
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:326
2923
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:371
2924
  msgctxt "s2member-admin"
2925
  msgid "Invalid form configuration. Invalid \"custom\" attribute. Must start with your domain name."
2926
  msgstr ""
2927
 
2928
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:329
2929
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:379
2930
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:374
2931
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:442
2932
  msgctxt "s2member-admin"
2933
  msgid "Invalid form configuration. Missing \"cc\" attribute. Must be a 3 character Currency Code."
2934
  msgstr ""
2935
 
2936
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:332
2937
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:382
2938
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:377
2939
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:445
2940
  msgctxt "s2member-admin"
2941
  msgid "Invalid form configuration. Invalid \"cc\" attribute. Must be a 3 character Currency Code."
2942
  msgstr ""
2943
 
2944
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:335
2945
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:463
2946
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:398
2947
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:535
2948
  msgctxt "s2member-admin"
2949
  msgid "Invalid form configuration. Missing \"ra\" attribute. The Regular Amount. Must be >= 0.00."
2950
  msgstr ""
2951
 
2952
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:338
2953
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:466
2954
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:401
2955
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:538
2956
  msgctxt "s2member-admin"
2957
  msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be numeric."
2958
  msgstr ""
2959
 
2960
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:341
2961
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:469
2962
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:404
2963
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:541
2964
  msgctxt "s2member-admin"
2965
  msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be >= 0.00."
2966
  msgstr ""
2972
  msgstr ""
2973
 
2974
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:349
2975
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:412
2976
  msgctxt "s2member-front"
2977
  msgid "You must <a href=\"%s\" rel=\"nofollow\">login</a> to update your billing plan."
2978
  msgstr ""
2979
 
2980
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:352
2981
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:415
2982
  msgctxt "s2member-front"
2983
  msgid "You must <a href=\"%s\" rel=\"nofollow\">login</a> before making this purchase."
2984
  msgstr ""
2985
 
2986
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:355
2987
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:418
2988
  msgctxt "s2member-admin"
2989
  msgid "Invalid form configuration. Missing \"level\" attribute. Membership Level. Must be numeric [1-%s], or an asterisk (*)."
2990
  msgstr ""
2991
 
2992
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:358
2993
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:421
2994
  msgctxt "s2member-admin"
2995
  msgid "Invalid form configuration. Invalid \"level\" attribute. Membership Level. Must be numeric [1-%s], or an asterisk (*)."
2996
  msgstr ""
2997
 
2998
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:364
2999
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:427
3000
  msgctxt "s2member-admin"
3001
  msgid "Invalid form configuration. Missing or invalid \"ccaps\" attribute. When \"level\" is \"*\" for (Independent Custom Capabilities), \"ccaps\" is required. All lowercase [a-z_0-9,]. A preceding `-all,` directive is also acceptable."
3002
  msgstr ""
3003
 
3004
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:376
3005
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:439
3006
  msgctxt "s2member-admin"
3007
  msgid "Invalid form configuration. Invalid \"custom\" attribute. Must start with matching domain."
3008
  msgstr ""
3009
 
3010
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:397
3011
  msgctxt "s2member-admin"
3012
+ msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"D\", and \"tp\" (Trial Period) > 365."
3013
  msgstr ""
3014
 
3015
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:400
3016
  msgctxt "s2member-admin"
3017
+ msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"W\", and \"tp\" (Trial Period) > 52."
3018
  msgstr ""
3019
 
3020
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:403
3021
  msgctxt "s2member-admin"
3022
+ msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"M\", and \"tp\" (Trial Period) > 12."
3023
  msgstr ""
3024
 
3025
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:406
3026
  msgctxt "s2member-admin"
3027
+ msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"Y\", and \"tp\" (Trial Period) > 1."
3028
  msgstr ""
3029
 
3030
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:409
3031
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:478
3032
  msgctxt "s2member-admin"
3033
  msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be numeric."
3034
  msgstr ""
3035
 
3036
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:412
3037
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:481
3038
  msgctxt "s2member-admin"
3039
  msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be >= 0.00."
3040
  msgstr ""
3045
  msgstr ""
3046
 
3047
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:418
3048
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:487
3049
  msgctxt "s2member-admin"
3050
  msgid "Invalid form configuration. Missing \"rp\" attribute. The Regular Period. Must be >= 1."
3051
  msgstr ""
3052
 
3053
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:421
3054
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:490
3055
  msgctxt "s2member-admin"
3056
  msgid "Invalid form configuration. Invalid \"rp\" attribute. The Regular Period. Must be numeric."
3057
  msgstr ""
3058
 
3059
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:424
3060
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:493
3061
  msgctxt "s2member-admin"
3062
  msgid "Invalid form configuration. Invalid \"rp\" attribute. The Regular Period. Must be >= 1."
3063
  msgstr ""
3064
 
3065
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:427
3066
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:496
3067
  msgctxt "s2member-admin"
3068
  msgid "Invalid form configuration. Missing \"rt\" attribute. The Regular Term. Must be one of D,W,M,Y,L."
3069
  msgstr ""
3070
 
3071
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:430
3072
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:499
3073
  msgctxt "s2member-admin"
3074
  msgid "Invalid form configuration. Invalid \"rt\" attribute. The Regular Term. Must be one of D,W,M,Y,L."
3075
  msgstr ""
3080
  msgstr ""
3081
 
3082
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:436
3083
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:502
3084
  msgctxt "s2member-admin"
3085
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"D\", \"rp\" (Regular Period) > 365, and \"rr\" is not \"BN\" (Buy Now)."
3086
  msgstr ""
3087
 
3088
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:439
3089
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:505
3090
  msgctxt "s2member-admin"
3091
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"W\", \"rp\" (Regular Period) > 52, and \"rr\" is not \"BN\" (Buy Now)."
3092
  msgstr ""
3093
 
3094
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:442
3095
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:508
3096
  msgctxt "s2member-admin"
3097
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"M\", \"rp\" (Regular Period) > 12, and \"rr\" is not \"BN\" (Buy Now)."
3098
  msgstr ""
3099
 
3100
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:445
3101
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:517
3102
  msgctxt "s2member-admin"
3103
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"Y\", \"rp\" (Regular Period) > 1, and \"rr\" is not \"BN\" (Buy Now)."
3104
  msgstr ""
3105
 
3106
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:448
3107
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:520
3108
  msgctxt "s2member-admin"
3109
  msgid "Invalid form configuration. Invalid \"rp, rt\" attributes. The \"rt\" (Regular Term) attribute is \"L\" (Lifetime), and \"rp\" (Regular Period) > 1."
3110
  msgstr ""
3111
 
3112
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:451
3113
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:523
3114
  msgctxt "s2member-admin"
3115
  msgid "Invalid form configuration. Invalid \"rt, rr\" attributes. The \"rt\" (Regular Term) attribute is \"L\" (Lifetime), and \"rr\" is not \"BN\" (Buy Now)."
3116
  msgstr ""
3117
 
3118
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:454
3119
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:526
3120
  msgctxt "s2member-admin"
3121
  msgid "Invalid form configuration. Missing \"level_ccaps_eotper\" attribute. Please check Shortcode Attributes."
3122
  msgstr ""
3123
 
3124
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:457
3125
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:460
3126
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:529
3127
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:532
3128
  msgctxt "s2member-admin"
3129
  msgid "Invalid form configuration. Invalid \"level_ccaps_eotper\" attribute. Please check Shortcode Attributes."
3130
  msgstr ""
3131
 
3132
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:475
3133
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:547
3134
  msgctxt "s2member-admin"
3135
  msgid "Invalid form configuration. Invalid \"rr\" attribute. Regular Recurring. When provided, must be 0, 1, or BN."
3136
  msgstr ""
3137
 
3138
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:478
3139
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:550
3140
  msgctxt "s2member-admin"
3141
  msgid "Invalid form configuration. Invalid \"rr, tp\" attributes. The \"rr\" (Regular Recurring) attribute is \"BN\" (Buy Now), and \"tp\" (Trial Period) is not \"0\"."
3142
  msgstr ""
3143
 
3144
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:481
3145
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:553
3146
  msgctxt "s2member-admin"
3147
  msgid "Invalid form configuration. Invalid \"level, rr\" attributes. The \"level\" (Level) attribute is \"*\" for (Independent Custom Capabilities), and \"rr\" is not \"BN\" (Buy Now)."
3148
  msgstr ""
3149
 
3150
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:484
3151
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:556
3152
  msgctxt "s2member-admin"
3153
  msgid "Invalid form configuration. Invalid \"ta, tp, tt\" attributes. Trial Period. When provided, these cannot be exactly the same as your \"ra, rp, rt\" attributes."
3154
  msgstr ""
3155
 
3156
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:487
3157
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:559
3158
  msgctxt "s2member-admin"
3159
  msgid "Invalid form configuration. Invalid \"rrt\" attribute. Recurring Times (fixed). When provided, must be numeric."
3160
  msgstr ""
3161
 
3162
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:490
3163
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:562
3164
  msgctxt "s2member-admin"
3165
  msgid "Invalid form configuration. Invalid \"rrt\" attribute. Recurring Times (fixed). When provided, must be >= 1."
3166
  msgstr ""
3167
 
3168
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:493
3169
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:565
3170
  msgctxt "s2member-admin"
3171
  msgid "Invalid form configuration. Invalid \"rr, rrt\" attributes. When \"rrt\" (Recurring Times) is provided, \"rr\" (Regular Recurring) must be 1."
3172
  msgstr ""
3176
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:614
3177
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:670
3178
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:762
3179
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:598
3180
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:648
3181
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:692
3182
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:748
3183
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:840
3184
  msgctxt "s2member-front"
3185
  msgid "Missing or invalid Security Code. Please try again."
3186
  msgstr ""
3188
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:523
3189
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:531
3190
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:681
3191
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:601
3192
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:609
3193
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:759
3194
  msgctxt "s2member-admin"
3195
  msgid "Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access."
3196
  msgstr ""
3198
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:534
3199
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:631
3200
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:723
3201
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:612
3202
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:709
3203
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:801
3204
  msgctxt "s2member-front"
3205
  msgid "Missing Card Type (Billing Method). Please try again."
3206
  msgstr ""
3210
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:637
3211
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:726
3212
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:729
3213
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:615
3214
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:712
3215
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:715
3216
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:804
3217
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:807
3218
  msgctxt "s2member-front"
3219
  msgid "Invalid Card Type (Billing Method). Please try again."
3220
  msgstr ""
3222
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:540
3223
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:640
3224
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:732
3225
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:618
3226
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:718
3227
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:810
3228
  msgctxt "s2member-front"
3229
  msgid "Missing Card Number. Please try again."
3230
  msgstr ""
3232
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:543
3233
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:643
3234
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:735
3235
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:621
3236
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:721
3237
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:813
3238
  msgctxt "s2member-front"
3239
  msgid "Missing Card Expiration Date (mm/yyyy). Please try again."
3240
  msgstr ""
3242
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:546
3243
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:646
3244
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:738
3245
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:624
3246
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:724
3247
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:816
3248
  msgctxt "s2member-front"
3249
  msgid "Invalid Card Expiration Date. Must be in this format (mm/yyyy). Please try again."
3250
  msgstr ""
3252
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:549
3253
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:649
3254
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:741
3255
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:627
3256
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:727
3257
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:819
3258
  msgctxt "s2member-front"
3259
  msgid "Missing Card Verification Code. It's on the back of your Card. 3-4 digits. Please try again."
3260
  msgstr ""
3262
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:552
3263
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:652
3264
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:744
3265
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:630
3266
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:730
3267
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:822
3268
  msgctxt "s2member-front"
3269
  msgid "Missing Card Start Date, or Issue #. Required for Maestro/Solo. Please try again."
3270
  msgstr ""
3272
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:555
3273
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:655
3274
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:747
3275
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:633
3276
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:733
3277
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:825
3278
  msgctxt "s2member-front"
3279
  msgid "Missing Street Address. Please try again."
3280
  msgstr ""
3282
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:558
3283
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:658
3284
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:750
3285
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:636
3286
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:736
3287
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:828
3288
  msgctxt "s2member-front"
3289
  msgid "Missing City/Town. Please try again."
3290
  msgstr ""
3292
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:561
3293
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:661
3294
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:753
3295
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:639
3296
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:739
3297
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:831
3298
  msgctxt "s2member-front"
3299
  msgid "Missing State/Province. Please try again."
3300
  msgstr ""
3302
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:564
3303
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:664
3304
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:756
3305
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:642
3306
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:742
3307
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:834
3308
  msgctxt "s2member-front"
3309
  msgid "Missing Country. Please try again."
3310
  msgstr ""
3312
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:567
3313
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:667
3314
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:759
3315
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:645
3316
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:745
3317
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:837
3318
  msgctxt "s2member-front"
3319
  msgid "Missing Postal/Zip Code. Please try again."
3320
  msgstr ""
3322
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:575
3323
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:619
3324
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:684
3325
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:653
3326
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:697
3327
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:762
3328
  msgctxt "s2member-front"
3329
  msgid "Missing First Name. Please try again."
3330
  msgstr ""
3332
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:578
3333
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:622
3334
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:687
3335
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:656
3336
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:700
3337
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:765
3338
  msgctxt "s2member-front"
3339
  msgid "Missing Last Name. Please try again."
3340
  msgstr ""
3342
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:581
3343
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:625
3344
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:690
3345
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:659
3346
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:703
3347
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:768
3348
  msgctxt "s2member-front"
3349
  msgid "Missing or invalid Email Address. Please try again."
3350
  msgstr ""
3352
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:584
3353
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:628
3354
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:693
3355
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:662
3356
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:706
3357
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:771
3358
  msgctxt "s2member-front"
3359
  msgid "Invalid Email Address. Please try again."
3360
  msgstr ""
3361
 
3362
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:587
3363
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:696
3364
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:665
3365
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:774
3366
  msgctxt "s2member-front"
3367
  msgid "That Email Address is already in use. Please try again."
3368
  msgstr ""
3369
 
3370
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:590
3371
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:699
3372
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:668
3373
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:777
3374
  msgctxt "s2member-front"
3375
  msgid "Missing or invalid Username. Please try again."
3376
  msgstr ""
3377
 
3378
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:593
3379
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:702
3380
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:671
3381
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:780
3382
  msgctxt "s2member-front"
3383
  msgid "Invalid Username. Please try again. Use ONLY lowercase alphanumerics."
3384
  msgstr ""
3385
 
3386
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:596
3387
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:705
3388
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:674
3389
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:783
3390
  msgctxt "s2member-front"
3391
  msgid "That Username is already in use. Please try again."
3392
  msgstr ""
3393
 
3394
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:602
3395
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:711
3396
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:680
3397
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:789
3398
  msgctxt "s2member-front"
3399
  msgid "Missing Password. Please try again."
3400
  msgstr ""
3401
 
3402
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:605
3403
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:714
3404
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:683
3405
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:792
3406
  msgctxt "s2member-front"
3407
  msgid "Invalid Password. Must be at least 6 characters. Please try again."
3408
  msgstr ""
3409
 
3410
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:608
3411
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:717
3412
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:686
3413
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:795
3414
  msgctxt "s2member-front"
3415
  msgid "Invalid Password. Max length is 20 characters. Please try again."
3416
  msgstr ""
3417
 
3418
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:611
3419
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:720
3420
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:689
3421
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:798
3422
  msgctxt "s2member-front"
3423
  msgid "Password fields do NOT match. Please try again."
3424
  msgstr ""
3425
 
3426
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:675
3427
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:753
3428
  msgctxt "s2member-front"
3429
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to modify your billing plan."
3430
  msgstr ""
3431
 
3432
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:678
3433
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:756
3434
  msgctxt "s2member-front"
3435
  msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> before making this purchase."
3436
  msgstr ""
3437
 
3438
  #: s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:765
3439
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:843
3440
  msgctxt "s2member-front"
3441
  msgid "Unknown form submission type. Please contact Support."
3442
  msgstr ""
3473
  msgid "<strong>Oops.</strong> No Subscr. ID. Please contact Support for assistance."
3474
  msgstr ""
3475
 
3476
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:662
3477
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:805
3478
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:295
3479
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:438
3480
  msgctxt "s2member-front percentage-symbol"
3481
  msgid "%"
3482
  msgstr ""
3483
 
3484
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:804
3485
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:437
3486
  msgctxt "s2member-front"
3487
  msgid " + tax"
3488
  msgstr ""
3489
 
3490
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:849
3491
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:901
3492
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:914
3493
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:936
3494
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:996
3495
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1011
3496
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:482
3497
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:534
3498
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:547
3503
  msgid "COUPON %s off. (Now: %s)"
3504
  msgstr ""
3505
 
3506
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:850
3507
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:902
3508
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:915
3509
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:937
3510
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:997
3511
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1012
3512
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:483
3513
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:535
3514
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:548
3519
  msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s</strong>)</div>"
3520
  msgstr ""
3521
 
3522
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:862
3523
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:875
3524
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:888
3525
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:951
3526
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:966
3527
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:981
3528
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:495
3529
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:508
3530
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:521
3535
  msgid "COUPON %s off. (Now: %s, then %s)"
3536
  msgstr ""
3537
 
3538
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:863
3539
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:876
3540
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:889
3541
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:952
3542
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:967
3543
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:982
3544
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:496
3545
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:509
3546
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:522
3551
  msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s, then %s</strong>)</div>"
3552
  msgstr ""
3553
 
3554
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:919
3555
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1016
3556
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:552
3557
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:649
3558
  msgctxt "s2member-front"
3559
  msgid "<div>Sorry, your Coupon is not applicable.</div>"
3560
  msgstr ""
3561
 
3562
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1020
3563
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:653
3564
  msgctxt "s2member-front"
3565
  msgid "<div>Coupon: <strong>%s0.00 off</strong>.</div>"
3566
  msgstr ""
3567
 
3568
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1024
3569
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:657
3570
  msgctxt "s2member-front"
3571
  msgid "<div>Sorry, your Coupon cannot be applied to this particular purchase.</div>"
3572
  msgstr ""
3573
 
3574
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1028
3575
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:661
3576
  msgctxt "s2member-front"
3577
  msgid "<div>Sorry, your Coupon <strong>expired</strong>: <em>%s</em>.</div>"
3579
 
3580
  #. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
3581
  #. is original description.
3582
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1034
3583
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:667
3584
  msgctxt "s2member-front"
3585
  msgid "%1$s ~ ORIGINALLY: %2$s"
3586
  msgstr ""
3587
 
3588
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1063
3589
+ #: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1066
3590
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:696
3591
  #: s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:699
3592
  msgctxt "s2member-front"
3616
 
3617
  #: s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:123
3618
  #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:247
3619
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:262
3620
  msgctxt "s2member-front"
3621
  msgid "<strong>Unable to cancel at this time.</strong> Your account is pending other changes. Please try again in 15 minutes."
3622
  msgstr ""
3682
  msgid "PayPal configuration error. Your PayPal API Signature is not yet configured."
3683
  msgstr ""
3684
 
3685
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:282
3686
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:295
3687
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:298
3688
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:79
3689
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:135
3690
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:139
3694
  msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal</a> to update your billing information."
3695
  msgstr ""
3696
 
3697
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:285
3698
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:303
3699
  #: s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:127
3700
  msgctxt "s2member-front"
3701
  msgid "<strong>Unable to update at this time.</strong> Your account is pending other changes. Please try again in 15 minutes."
3702
  msgstr ""
3703
 
3704
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:380
3705
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:448
3706
  msgctxt "s2member-admin"
3707
  msgid "Invalid form configuration. Missing \"dg\" attribute. Digital indicator. Must be numeric [0-1]."
3708
  msgstr ""
3709
 
3710
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:383
3711
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:451
3712
  msgctxt "s2member-admin"
3713
  msgid "Invalid form configuration. Invalid \"dg\" attribute. Digital indicator. Must be numeric [0-1]."
3714
  msgstr ""
3715
 
3716
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:386
3717
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:454
3718
  msgctxt "s2member-admin"
3719
  msgid "Invalid form configuration. Missing \"ns\" attribute. Shipping configuration. Must be numeric [0-2]."
3720
  msgstr ""
3721
 
3722
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:389
3723
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:457
3724
  msgctxt "s2member-admin"
3725
  msgid "Invalid form configuration. Invalid \"ns\" attribute. Shipping configuration. Must be numeric [0-2]."
3726
  msgstr ""
3727
 
3728
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:392
3729
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:460
3730
  msgctxt "s2member-admin"
3731
  msgid "Invalid form configuration. Invalid \"ns\" attribute. Shipping configuration. Must be 1 with \"dg\" (digital) items."
3732
  msgstr ""
3733
 
3734
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:395
3735
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:463
3736
  msgctxt "s2member-admin"
3737
  msgid "Invalid form configuration. Invalid \"lc\" attribute. Locale Code. When provided, must be a 2 character country code."
3738
  msgstr ""
3739
 
3740
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:407
3741
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:544
3742
  msgctxt "s2member-admin"
3743
  msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 10000.00."
3744
  msgstr ""
3745
 
3746
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:484
3747
  msgctxt "s2member-admin"
3748
  msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 10000.00."
3749
  msgstr ""
3750
 
3751
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:511
3752
  msgctxt "s2member-admin"
3753
  msgid "Invalid Payflow form configuration. Invalid \"rt, rp, rr\" attributes. Payflow supports a specific set of recurring intervals. Pro Forms can be configured to charge: weekly, bi-weekly, monthly, quarterly, semi-yearly or yearly. Any other combination results in this error. This is a Payflow limitation."
3754
  msgstr ""
3755
 
3756
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:514
3757
  msgctxt "s2member-admin"
3758
  msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"Y\", \"rp\" (Regular Period) > 5, and \"rr\" is not \"BN\" (Buy Now)."
3759
  msgstr ""
3760
 
3761
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:568
3762
  msgctxt "s2member-admin"
3763
  msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be numeric."
3764
  msgstr ""
3765
 
3766
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:571
3767
  msgctxt "s2member-admin"
3768
  msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be >= 0."
3769
  msgstr ""
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
  === s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
 
3
- Version: 140409
4
- Stable tag: 140409
5
 
6
  SSL Compatible: yes
7
  bbPress® Compatible: yes
@@ -142,15 +142,31 @@ Released under the terms of the [GNU General Public License](http://www.gnu.org/
142
 
143
  == Upgrade Notice ==
144
 
145
- = v140409 =
146
 
147
  (Maintenance Release) Upgrade immediately.
148
 
149
  == Changelog ==
150
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  = v140409 =
152
 
153
- * (s2Member Pro) **s2MOP Shortcode**. A new shortcode is now available for site owners running s2Member Pro: `[s2MOP]`. For further details, please check your Dashboard under: `s2Member ⥱ API / Scripting ⥱ Membership Options Page / Variables`. See also: [this KB article]( http://www.s2member.com/kb/s2mop-shortcode/).
154
  * (s2Member/s2Member Pro) **Compatibility**. Reviewed by Lead Developer Jason Caldwell for full compatibility against WordPress v3.9. s2Member also remains backward compatible with WP v3.3 - 3.8.
155
  * (s2Member/s2Member Pro) **Security Review**. Reviewed by Lead Developer Jason Caldwell to look closer at any portions of s2Member which might be impacted by the [OpenSSL Heartbleed bug](http://heartbleed.com/). Please note, the Heartbleed bug is NOT an s2Member bug. It is a bug in the OpenSSL library used by many services across the web. Please see this [GitHub issue](https://github.com/WebSharks/s2Member/issues/90) where Jason posted a few tips for site owners running the s2Member software.
156
  * (s2Member/s2Member Pro) **s2 MOP Vars**. The format of s2Member's MOP Vars has been updated in this release. Backward compatibility remains for the older formats, so this should not cause any problems for site owners using the older formats provided by previous versions of s2Member. For further details, please check your Dashboard under: `s2Member ⥱ API / Scripting ⥱ Membership Options Page / Variables`.
1
  === s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
 
3
+ Version: 140423
4
+ Stable tag: 140423
5
 
6
  SSL Compatible: yes
7
  bbPress® Compatible: yes
142
 
143
  == Upgrade Notice ==
144
 
145
+ = v140423 =
146
 
147
  (Maintenance Release) Upgrade immediately.
148
 
149
  == Changelog ==
150
 
151
+ = v140423 =
152
+
153
+ * (s2Member/s2Member Pro) **WP v3.9 Compatibility**. Resolving an incompatibility between s2Member and WP v3.9 where s2Member was attempting to use the jQuery `highlight` effect no longer available by default; starting with WP v3.9. A symptom of this bug was to have problems closing the dialog box when creating new Registration/Profile Fields with s2Member in the WP Dashboard. See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/108).
154
+ * (s2Member Pro) **User Export Limitation**. Adding an option to the Import/Export panel used to export Users from your installation of WordPress. This new option makes it possible to specify an exact number of maximum rows to export; instead of the previous behavior which forced to a value of `1000` max. See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/80).
155
+ * (s2Member Pro) **s2Drip Enhancement**. Updating the s2Drip shortcode to allow for a time frame that specifies `from_day="1" to_day="1"`. See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/103). For instructions on how to use the `[s2Drip]` shortcode see [this KB article](http://www.s2member.com/kb/s2drip-shortcode/).
156
+ * (s2Member Pro) **s2Drip Enhancement**. Adding support for nested shortcodes inside the `[s2Drip]` conditional shortcode tags. See [this commit](https://github.com/WebSharks/s2Member-Pro/commit/3d042250736a074136924afd5b4030065aff881e) for detailed changes. For instructions on how to use the `[s2Drip]` shortcode see [this KB article](http://www.s2member.com/kb/s2drip-shortcode/).
157
+ * (s2Member Pro). **s2MOP Enhancement**. Adding an optional `%%POST_EXCERPT%%` Replacement Code to the `[s2MOP]` shortcode. For further details see [this GitHub issue](https://github.com/WebSharks/s2Member-Pro/pull/11). For instructions on how to use the `[s2MOP]` shortcode see [this KB article](http://www.s2member.com/kb/s2mop-shortcode/).
158
+ * (s2Member Pro). **s2MOP Enhancement**. Improving `[s2MOP]` Replacement Codes overall by converting internal slugs into textual labels for an improved user experience. Also making it possible to filter the default labels. See [this GitHub issue](https://github.com/WebSharks/s2Member-Pro/pull/10). For instructions on how to use the `[s2MOP]` shortcode see [this KB article](http://www.s2member.com/kb/s2mop-shortcode/).
159
+ * (s2Member Pro) **s2MOP Enhancement**. Adding support for nested shortcodes inside the `[s2MOP]` shortcode. For instructions on how to use the `[s2MOP]` shortcode see [this KB article](http://www.s2member.com/kb/s2mop-shortcode/).
160
+ * (s2Member/s2Member Pro) **Time Tracking**. This release begins tracking some additional timestamps to be used by features coming in a future version of s2Member. A new routine was added internally to go ahead and begin tracking some additional timestamps associated with the addition and/or removal of specific Membership Levels and/or Custom Capabilities. A future release of s2Member will take advantage of this data in some of it's shortcodes and API Functions (coming soon). See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/84).
161
+ * (s2Member/s2Member Pro) **Bug Fix**. A bug related to domain validation against some of the latest TLDs like `.photography` or `.solutions` has been resolved with this release. See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/98).
162
+ * (s2Member) **Bug Fix**. The declaration `function ksort_deep` should be `public static function ksort_deep`. Fixed in this release.
163
+ * (s2Member/s2Member Pro) **Bug Fix**. s2Member preventing some fields from making it into results provided by `WP_User_Query` on the front-end of a site utilizing this core class. Fixed in this release. See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/95).
164
+ * (s2Member Pro). **Authorize.Net Trial Limitation**. Updating s2Member Pro to support a 100% free trial period of any length when integrating with Authorize.Net. See also [this GitHub issue](https://github.com/WebSharks/s2Member/issues/106).
165
+ * (s2Member/s2Member Pro) **WP_DEBUG Compatibility**. Resolving several `E_NOTICE` level messages in an ongoing effort to satisfy `WP_DEBUG` mode. For further details, please see [this GitHub issue](https://github.com/WebSharks/s2Member/issues/97). See also [issue #105](https://github.com/WebSharks/s2Member/issues/105). See also [issue #91](https://github.com/WebSharks/s2Member/issues/91).
166
+
167
  = v140409 =
168
 
169
+ * (s2Member Pro) **s2MOP Shortcode**. A new shortcode is now available for site owners running s2Member Pro: `[s2MOP]`. For further details, please check your Dashboard under: `s2Member ⥱ API / Scripting ⥱ Membership Options Page / Variables`. See also: [this KB article](http://www.s2member.com/kb/s2mop-shortcode/).
170
  * (s2Member/s2Member Pro) **Compatibility**. Reviewed by Lead Developer Jason Caldwell for full compatibility against WordPress v3.9. s2Member also remains backward compatible with WP v3.3 - 3.8.
171
  * (s2Member/s2Member Pro) **Security Review**. Reviewed by Lead Developer Jason Caldwell to look closer at any portions of s2Member which might be impacted by the [OpenSSL Heartbleed bug](http://heartbleed.com/). Please note, the Heartbleed bug is NOT an s2Member bug. It is a bug in the OpenSSL library used by many services across the web. Please see this [GitHub issue](https://github.com/WebSharks/s2Member/issues/90) where Jason posted a few tips for site owners running the s2Member software.
172
  * (s2Member/s2Member Pro) **s2 MOP Vars**. The format of s2Member's MOP Vars has been updated in this release. Backward compatibility remains for the older formats, so this should not cause any problems for site owners using the older formats provided by previous versions of s2Member. For further details, please check your Dashboard under: `s2Member ⥱ API / Scripting ⥱ Membership Options Page / Variables`.
s2member.php CHANGED
@@ -19,8 +19,8 @@
19
  */
20
  /* -- This section for WordPress parsing. ------------------------------------------------------------------------------
21
 
22
- Version: 140409
23
- Stable tag: 140409
24
 
25
  SSL Compatible: yes
26
  bbPress Compatible: yes
@@ -75,7 +75,7 @@ if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
75
  * @var str
76
  */
77
  if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
78
- define("WS_PLUGIN__S2MEMBER_VERSION", "140409" /* !#distro-version#! */);
79
  /**
80
  * Minimum PHP version required to run s2Member.
81
  *
@@ -105,7 +105,7 @@ if(!defined("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION"))
105
  * @var str
106
  */
107
  if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
108
- define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "140409" /* !#distro-version#! */);
109
  /*
110
  Several compatibility checks.
111
  If all pass, load the s2Member plugin.
19
  */
20
  /* -- This section for WordPress parsing. ------------------------------------------------------------------------------
21
 
22
+ Version: 140423
23
+ Stable tag: 140423
24
 
25
  SSL Compatible: yes
26
  bbPress Compatible: yes
75
  * @var str
76
  */
77
  if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
78
+ define("WS_PLUGIN__S2MEMBER_VERSION", "140423" /* !#distro-version#! */);
79
  /**
80
  * Minimum PHP version required to run s2Member.
81
  *
105
  * @var str
106
  */
107
  if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
108
+ define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "140423" /* !#distro-version#! */);
109
  /*
110
  Several compatibility checks.
111
  If all pass, load the s2Member plugin.