Version Description
= v130617 = (Maintenance Release) Upgrade immediately.
Download this release
Release Info
Developer | WebSharks |
Plugin | ![]() |
Version | 130617 |
Comparing to | |
See all releases |
Code changes from version 130513 to 130617
- checksum.txt +1 -1
- includes/classes/ip-restrictions.inc.php +295 -286
- includes/menu-pages/down-ops.inc.php +3 -2
- includes/templates/cfg-files/s2-cross-xml.php +1 -1
- includes/templates/errors/index.php +0 -0
- includes/templates/errors/ip-restrictions.php +15 -0
- includes/translations/s2member.pot +89 -84
- includes/translations/translators.txt +7 -1
- readme.txt +21 -4
- s2member.php +4 -4
checksum.txt
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
4a206d6b3eba4c0a8d51bed207aac656
|
includes/classes/ip-restrictions.inc.php
CHANGED
@@ -1,292 +1,301 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* IP Restrictions.
|
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\IP_Restrictions
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_ip_restrictions"))
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
?>
|
1 |
<?php
|
2 |
/**
|
3 |
+
* IP Restrictions.
|
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\IP_Restrictions
|
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_ip_restrictions"))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* IP Restrictions.
|
24 |
+
*
|
25 |
+
* @package s2Member\IP_Restrictions
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_ip_restrictions
|
29 |
+
{
|
30 |
+
/**
|
31 |
+
* Handles IP Restrictions.
|
32 |
+
*
|
33 |
+
* IP address details are stored as Transients.
|
34 |
+
*
|
35 |
+
* @package s2Member\IP_Restrictions
|
36 |
+
* @since 3.5
|
37 |
+
*
|
38 |
+
* @param str $ip IP Address.
|
39 |
+
* @param str $restriction Unique IP Restriction name/identifier. Such as a Username, or a unique access code.
|
40 |
+
* @return bool True if IP Restrictions are OK, otherwise this function will exit script execution after issuing a warning.
|
41 |
+
*/
|
42 |
+
public static function ip_restrictions_ok($ip = FALSE, $restriction = FALSE)
|
43 |
+
{
|
44 |
+
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
45 |
+
do_action("ws_plugin__s2member_before_ip_restrictions_ok", get_defined_vars());
|
46 |
+
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
47 |
+
|
48 |
+
if(!apply_filters("ws_plugin__s2member_disable_all_ip_restrictions", false, get_defined_vars())
|
49 |
+
/* Also allow specific exclusions here. */ && !apply_filters("ws_plugin__s2member_disable_specific_ip_restriction", false, get_defined_vars())
|
50 |
+
/* And enabled by site owner? */ && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"] /* And a valid ``$restriction``? */ && $restriction && is_string($restriction)
|
51 |
+
/* Flag indicating that we ARE processing this IP Restriction. Useful in Hooks/Filters. */ && ($processing = true))
|
52 |
+
{
|
53 |
+
$prefix = /* s2Member Transient prefix for all IP Restrictions. */ "s2m_ipr_";
|
54 |
+
$transient_entries = $prefix.md5("s2member_ip_restrictions_".$restriction."_entries");
|
55 |
+
$transient_security_breach = $prefix.md5("s2member_ip_restrictions_".$restriction."_security_breach");
|
56 |
+
|
57 |
+
// If you add Filters, use a string compatible with PHP's strtotime() function.
|
58 |
+
$concurrency = apply_filters("ws_plugin__s2member_ip_restrictions__concurrency_time_per_ip", "30 days");
|
59 |
+
|
60 |
+
$entries = (is_array($entries = get_transient($transient_entries))) ? $entries : array();
|
61 |
+
|
62 |
+
foreach /* Auto-expire entries, based on time. */($entries as $_entry => $_time)
|
63 |
+
if /* Based on time. */($_time < strtotime("-".$concurrency))
|
64 |
+
unset /* Unset this entry value. */($entries[$_entry]);
|
65 |
+
|
66 |
+
$ip = ($ip && is_string($ip)) ? $ip : /* Allow empty IPs. */ "empty";
|
67 |
+
$entries[$ip] = /* Log entry. Add IP with entry time. */ strtotime("now");
|
68 |
+
set_transient($transient_entries, $entries, 2 * (strtotime("+".$concurrency) - strtotime("now")));
|
69 |
+
|
70 |
+
if /* Already breached security? */(get_transient($transient_security_breach))
|
71 |
+
{
|
72 |
+
c_ws_plugin__s2member_no_cache::no_cache_constants(true);
|
73 |
+
|
74 |
+
status_header /* Send a 503 error status header; temporarily unavailable. */(503);
|
75 |
+
wp_clear_auth_cookie /* Clear authorization cookies; we need to log them out now. */();
|
76 |
+
header /* Content-Type text/html with UTF-8. */("Content-Type: text/html; charset=UTF-8");
|
77 |
+
while (@ob_end_clean ()); // Clean any existing output buffers.
|
78 |
+
|
79 |
+
$custom_template = (file_exists (TEMPLATEPATH . "/" . "ip-restrictions.php")) ? TEMPLATEPATH . "/" . "ip-restrictions.php" : false;
|
80 |
+
$custom_template = (file_exists (WP_CONTENT_DIR . "/" . "ip-restrictions.php")) ? WP_CONTENT_DIR . "/" . "ip-restrictions.php" : $custom_template;
|
81 |
+
|
82 |
+
$msg_503 = trim(file_get_contents((($custom_template) ? $custom_template : dirname(dirname(__FILE__))."/templates/errors/ip-restrictions.php")));
|
83 |
+
$msg_503 = trim(((!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site()) ? c_ws_plugin__s2member_utilities::evl($msg_503) : $msg_503));
|
84 |
+
|
85 |
+
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
86 |
+
do_action("ws_plugin__s2member_during_ip_restrictions_ok_no", get_defined_vars());
|
87 |
+
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
88 |
+
|
89 |
+
exit /* Clean exit with 503 error message. */($msg_503);
|
90 |
+
}
|
91 |
+
|
92 |
+
else if(count($entries) > $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"])
|
93 |
+
{
|
94 |
+
c_ws_plugin__s2member_no_cache::no_cache_constants(true);
|
95 |
+
|
96 |
+
set_transient // A security breach has just occurred. We need to set this Transient now.
|
97 |
+
($transient_security_breach, 1, $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction_time"]);
|
98 |
+
|
99 |
+
status_header /* Send a 503 error status header; temporarily unavailable. */(503);
|
100 |
+
wp_clear_auth_cookie /* Clear authorization cookies; we need to log them out now. */();
|
101 |
+
header /* Content-Type text/html with UTF-8. */("Content-Type: text/html; charset=UTF-8");
|
102 |
+
while (@ob_end_clean ()); // Clean any existing output buffers.
|
103 |
+
|
104 |
+
$custom_template = (file_exists (TEMPLATEPATH . "/" . "ip-restrictions.php")) ? TEMPLATEPATH . "/" . "ip-restrictions.php" : false;
|
105 |
+
$custom_template = (file_exists (WP_CONTENT_DIR . "/" . "ip-restrictions.php")) ? WP_CONTENT_DIR . "/" . "ip-restrictions.php" : $custom_template;
|
106 |
+
|
107 |
+
$msg_503 = trim(file_get_contents((($custom_template) ? $custom_template : dirname(dirname(__FILE__))."/templates/errors/ip-restrictions.php")));
|
108 |
+
$msg_503 = trim(((!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site()) ? c_ws_plugin__s2member_utilities::evl($msg_503) : $msg_503));
|
109 |
+
|
110 |
+
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
111 |
+
do_action("ws_plugin__s2member_during_ip_restrictions_ok_no", get_defined_vars());
|
112 |
+
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
113 |
+
|
114 |
+
exit /* Clean exit with 503 error message. */($msg_503);
|
115 |
+
}
|
116 |
+
|
117 |
+
else // OK, this looks legitimate. Apply Filters here and return true.
|
118 |
+
{
|
119 |
+
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
120 |
+
do_action("ws_plugin__s2member_during_ip_restrictions_ok_yes", get_defined_vars());
|
121 |
+
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
122 |
+
|
123 |
+
return apply_filters("ws_plugin__s2member_ip_restrictions_ok", true, get_defined_vars());
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
128 |
+
do_action("ws_plugin__s2member_during_ip_restrictions_ok_yes", get_defined_vars());
|
129 |
+
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
130 |
+
|
131 |
+
return apply_filters("ws_plugin__s2member_ip_restrictions_ok", true, get_defined_vars());
|
132 |
+
}
|
133 |
+
/**
|
134 |
+
* Queries Transients for specific IP Restrictions at or above max allowable.
|
135 |
+
*
|
136 |
+
* @package s2Member\IP_Restrictions
|
137 |
+
* @since 130407
|
138 |
+
*
|
139 |
+
* @param str $restriction Unique IP Restriction name/identifier. Such as Username, or a unique access code.
|
140 |
+
* @return bool TRUE if at or above max allowable IPs; else FALSE.
|
141 |
+
*/
|
142 |
+
public static function specific_ip_restriction_at_or_above_max($restriction = FALSE)
|
143 |
+
{
|
144 |
+
do_action("ws_plugin__s2member_before_specific_ip_restriction_at_or_above_max", get_defined_vars());
|
145 |
+
|
146 |
+
if(apply_filters("ws_plugin__s2member_disable_all_ip_restrictions", false, get_defined_vars())
|
147 |
+
|| apply_filters("ws_plugin__s2member_disable_specific_ip_restriction", false, get_defined_vars())
|
148 |
+
|| !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"])
|
149 |
+
return false; // No IP Restrictions in this case.
|
150 |
+
|
151 |
+
$prefix = /* s2Member Transient prefix for all IP Restrictions. Allows s2Member to find these easily. */ "s2m_ipr_";
|
152 |
+
$transient_entries = $prefix.md5("s2member_ip_restrictions_".(string)$restriction."_entries");
|
153 |
+
|
154 |
+
// If you add Filters, use a string compatible with PHP's strtotime() function.
|
155 |
+
$concurrency = apply_filters("ws_plugin__s2member_ip_restrictions__concurrency_time_per_ip", "30 days");
|
156 |
+
|
157 |
+
$entries = (is_array($entries = get_transient($transient_entries))) ? $entries : array();
|
158 |
+
|
159 |
+
foreach /* Auto-expire entries, based on time. */($entries as $_entry => $_time)
|
160 |
+
if /* Based on time. */($_time < strtotime("-".$concurrency))
|
161 |
+
unset /* Unset this entry value. */($entries[$_entry]);
|
162 |
+
|
163 |
+
$at_or_above_max = (count($entries) >= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"]);
|
164 |
+
|
165 |
+
return apply_filters("ws_plugin__s2member_specific_ip_restriction_at_or_above_max", $at_or_above_max, get_defined_vars());
|
166 |
+
}
|
167 |
+
/**
|
168 |
+
* Queries Transients for specific IP Restrictions associated with a security breach.
|
169 |
+
*
|
170 |
+
* @package s2Member\IP_Restrictions
|
171 |
+
* @since 3.5
|
172 |
+
*
|
173 |
+
* @param str $restriction Unique IP Restriction name/identifier. Such as a Username, or a unique access code.
|
174 |
+
* @return bool True if the specific IP Restriction is associated with a security breach, else false.
|
175 |
+
*/
|
176 |
+
public static function specific_ip_restriction_breached_security($restriction = FALSE)
|
177 |
+
{
|
178 |
+
do_action("ws_plugin__s2member_before_specific_ip_restriction_breached_security", get_defined_vars());
|
179 |
+
|
180 |
+
$prefix = /* s2Member Transient prefix for all IP Restrictions. */ "s2m_ipr_";
|
181 |
+
$transient_security_breach = $prefix.md5("s2member_ip_restrictions_".(string)$restriction."_security_breach");
|
182 |
+
$breached_security = $associated_with_security_breach = (get_transient($transient_security_breach)) ? true : false;
|
183 |
+
|
184 |
+
return apply_filters("ws_plugin__s2member_specific_ip_restriction_breached_security", $breached_security, get_defined_vars());
|
185 |
+
}
|
186 |
+
/**
|
187 |
+
* Resets/deletes specific IP Restrictions.
|
188 |
+
*
|
189 |
+
* @package s2Member\IP_Restrictions
|
190 |
+
* @since 3.5
|
191 |
+
*
|
192 |
+
* @param str $restriction Unique IP Restriction name/identifier. Such as a Username, or a unique access code.
|
193 |
+
* @return bool Always returns a `true` value.
|
194 |
+
*
|
195 |
+
* @todo Make return value conditional, based on success.
|
196 |
+
*/
|
197 |
+
public static function delete_reset_specific_ip_restrictions($restriction = FALSE)
|
198 |
+
{
|
199 |
+
global /* Need global database object. */ $wpdb;
|
200 |
+
|
201 |
+
do_action("ws_plugin__s2member_before_delete_reset_specific_ip_restrictions", get_defined_vars());
|
202 |
+
|
203 |
+
$prefix /* s2Member Transient prefix for all IP Restrictions. */ = "s2m_ipr_";
|
204 |
+
$transient_entries = $prefix.md5("s2member_ip_restrictions_".(string)$restriction."_entries");
|
205 |
+
$transient_security_breach = $prefix.md5("s2member_ip_restrictions_".(string)$restriction."_security_breach");
|
206 |
+
|
207 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '%".esc_sql(like_escape($transient_entries))."'");
|
208 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '%".esc_sql(like_escape($transient_security_breach))."'");
|
209 |
+
|
210 |
+
do_action("ws_plugin__s2member_after_delete_reset_specific_ip_restrictions", get_defined_vars());
|
211 |
+
|
212 |
+
return apply_filters("ws_plugin__s2member_delete_reset_specific_ip_restrictions", true, get_defined_vars());
|
213 |
+
}
|
214 |
+
/**
|
215 |
+
* Resets/deletes specific IP Restrictions via AJAX.
|
216 |
+
*
|
217 |
+
* @package s2Member\IP_Restrictions
|
218 |
+
* @since 3.5
|
219 |
+
*
|
220 |
+
* @attaches-to ``add_action("wp_ajax_ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax");``
|
221 |
+
*
|
222 |
+
* @return null Exits script execution after returning data for AJAX caller.
|
223 |
+
*/
|
224 |
+
public static function delete_reset_specific_ip_restrictions_via_ajax()
|
225 |
+
{
|
226 |
+
do_action("ws_plugin__s2member_before_delete_reset_specific_ip_restrictions_via_ajax", get_defined_vars());
|
227 |
+
|
228 |
+
status_header /* Send a 200 OK status header. */(200);
|
229 |
+
header /* Content-Type with UTF-8. */("Content-Type: text/plain; charset=UTF-8");
|
230 |
+
while (@ob_end_clean ()); // Clean any existing output buffers.
|
231 |
+
|
232 |
+
if /* Check privileges. Ability to create Users? */(current_user_can("create_users"))
|
233 |
+
|
234 |
+
if(!empty($_POST["ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax"]))
|
235 |
+
if(($nonce = $_POST["ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax"]))
|
236 |
+
if(wp_verify_nonce($nonce, "ws-plugin--s2member-delete-reset-specific-ip-restrictions-via-ajax"))
|
237 |
+
|
238 |
+
if(!empty($_POST["ws_plugin__s2member_delete_reset_specific_ip_restriction"]))
|
239 |
+
if(is_string /* Must be a string here. */($_POST["ws_plugin__s2member_delete_reset_specific_ip_restriction"]))
|
240 |
+
if(($restriction = trim(stripslashes($_POST["ws_plugin__s2member_delete_reset_specific_ip_restriction"]))))
|
241 |
+
|
242 |
+
if(c_ws_plugin__s2member_ip_restrictions::delete_reset_specific_ip_restrictions($restriction))
|
243 |
+
$success = /* Yes, this IP Restriction was deleted/reset. */ true;
|
244 |
+
|
245 |
+
exit(apply_filters("ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax", ((isset($success) && $success) ? "1" : "0"), get_defined_vars()));
|
246 |
+
}
|
247 |
+
/**
|
248 |
+
* Resets/deletes all IP Restrictions.
|
249 |
+
*
|
250 |
+
* @package s2Member\IP_Restrictions
|
251 |
+
* @since 3.5
|
252 |
+
*
|
253 |
+
* @return bool Always returns a `true` value.
|
254 |
+
*
|
255 |
+
* @todo Make return value conditional, based on success.
|
256 |
+
*/
|
257 |
+
public static function delete_reset_all_ip_restrictions()
|
258 |
+
{
|
259 |
+
global /* Need global database object. */ $wpdb;
|
260 |
+
|
261 |
+
do_action("ws_plugin__s2member_before_delete_reset_all_ip_restrictions", get_defined_vars());
|
262 |
+
|
263 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '".esc_sql(like_escape("_transient_s2m_ipr_"))."%'");
|
264 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '".esc_sql(like_escape("_transient_timeout_s2m_ipr_"))."%'");
|
265 |
+
|
266 |
+
do_action("ws_plugin__s2member_after_delete_reset_all_ip_restrictions", get_defined_vars());
|
267 |
+
|
268 |
+
return apply_filters("ws_plugin__s2member_delete_reset_all_ip_restrictions", true, get_defined_vars());
|
269 |
+
}
|
270 |
+
/**
|
271 |
+
* Resets/deletes all IP Restrictions via AJAX.
|
272 |
+
*
|
273 |
+
* @package s2Member\IP_Restrictions
|
274 |
+
* @since 3.5
|
275 |
+
*
|
276 |
+
* @attaches-to ``add_action("wp_ajax_ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax");``
|
277 |
+
*
|
278 |
+
* @return null Exits script execution after returning data for AJAX caller.
|
279 |
+
*/
|
280 |
+
public static function delete_reset_all_ip_restrictions_via_ajax()
|
281 |
+
{
|
282 |
+
do_action("ws_plugin__s2member_before_delete_reset_all_ip_restrictions_via_ajax", get_defined_vars());
|
283 |
+
|
284 |
+
status_header /* Send a 200 OK status header. */(200);
|
285 |
+
header /* Content-Type with UTF-8. */("Content-Type: text/plain; charset=UTF-8");
|
286 |
+
while (@ob_end_clean ()); // Clean any existing output buffers.
|
287 |
+
|
288 |
+
if /* Check privileges. Ability to create Users? */(current_user_can("create_users"))
|
289 |
+
|
290 |
+
if(!empty($_POST["ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax"]))
|
291 |
+
if(($nonce = $_POST["ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax"]))
|
292 |
+
if(wp_verify_nonce($nonce, "ws-plugin--s2member-delete-reset-all-ip-restrictions-via-ajax"))
|
293 |
+
|
294 |
+
if(c_ws_plugin__s2member_ip_restrictions::delete_reset_all_ip_restrictions())
|
295 |
+
$success = /* Yes, all IP Restrictions were deleted/reset. */ true;
|
296 |
+
|
297 |
+
exit(apply_filters("ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax", ((isset($success) && $success) ? "1" : "0"), get_defined_vars()));
|
298 |
+
}
|
299 |
+
}
|
300 |
+
}
|
301 |
?>
|
includes/menu-pages/down-ops.inc.php
CHANGED
@@ -300,7 +300,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
300 |
|
301 |
echo '<td>'."\n";
|
302 |
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_amazon_s3_files_access_key" id="ws-plugin--s2member-amazon-s3-files-access-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_access_key"]).'" /><br />'."\n";
|
303 |
-
echo 'See: <code>Amazon® Web Services Account -› Security Credentials -› Access
|
304 |
echo '</td>'."\n";
|
305 |
|
306 |
echo '</tr>'."\n";
|
@@ -317,7 +317,8 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
317 |
|
318 |
echo '<td>'."\n";
|
319 |
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_amazon_s3_files_secret_key" id="ws-plugin--s2member-amazon-s3-files-secret-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_secret_key"]).'" /><br />'."\n";
|
320 |
-
echo 'See: <code>Amazon® Web Services Account -› Security Credentials -› Access Credentials</code
|
|
|
321 |
echo '</td>'."\n";
|
322 |
|
323 |
echo '</tr>'."\n";
|
300 |
|
301 |
echo '<td>'."\n";
|
302 |
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_amazon_s3_files_access_key" id="ws-plugin--s2member-amazon-s3-files-access-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_access_key"]).'" /><br />'."\n";
|
303 |
+
echo 'See: <code>Amazon® Web Services Account -› Security Credentials -› Access Keys</code>.'."\n";
|
304 |
echo '</td>'."\n";
|
305 |
|
306 |
echo '</tr>'."\n";
|
317 |
|
318 |
echo '<td>'."\n";
|
319 |
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_amazon_s3_files_secret_key" id="ws-plugin--s2member-amazon-s3-files-secret-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_secret_key"]).'" /><br />'."\n";
|
320 |
+
echo 'See: <code>Amazon® Web Services Account -› Security Credentials -› Access Keys (leading to: Legacy Security Credentials)</code>.<br />'."\n";
|
321 |
+
echo 'Amazon® is deprecating Secret Access Keys, but they ARE still required for digitally signed URLs.'."\n";
|
322 |
echo '</td>'."\n";
|
323 |
|
324 |
echo '</tr>'."\n";
|
includes/templates/cfg-files/s2-cross-xml.php
CHANGED
@@ -3,7 +3,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
6 |
-
<?xml version="1.0"?>
|
7 |
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
|
8 |
<cross-domain-policy>
|
9 |
<allow-access-from domain="*" />
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
6 |
+
<?php echo '<?xml version="1.0"?>'."\n"; ?>
|
7 |
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
|
8 |
<cross-domain-policy>
|
9 |
<allow-access-from domain="*" />
|
includes/templates/errors/index.php
ADDED
File without changes
|
includes/templates/errors/ip-restrictions.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
3 |
+
exit("Do not access this file directly.");
|
4 |
+
?>
|
5 |
+
|
6 |
+
<!DOCTYPE html>
|
7 |
+
<html>
|
8 |
+
<head>
|
9 |
+
<meta charset="UTF-8">
|
10 |
+
<title><?php echo _x('503: Service Temporarily Unavailable', "s2member-front", "s2member"); ?></title>
|
11 |
+
</head>
|
12 |
+
<body>
|
13 |
+
<?php echo _x('<strong>503: Service Temporarily Unavailable</strong><br />Too many IP addresses accessing one secure area<em>!</em><br />Please contact Support if you need assistance.', "s2member-front", "s2member"); ?>
|
14 |
+
</body>
|
15 |
+
</html>
|
includes/translations/s2member.pot
CHANGED
@@ -4,7 +4,7 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: s2Member® Framework 130513\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
-
"POT-Creation-Date: 2013-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -494,11 +494,6 @@ msgctxt "s2member-admin"
|
|
494 |
msgid "Unable to create Amazon® CloudFront Distro. Invalid Distro type."
|
495 |
msgstr ""
|
496 |
|
497 |
-
#: s2member/includes/classes/ip-restrictions.inc.php:53
|
498 |
-
msgctxt "s2member-front"
|
499 |
-
msgid "<strong>503: Service Temporarily Unavailable</strong><br />Too many IP addresses accessing one secure area<em>!</em><br />Please contact Support if you need assistance."
|
500 |
-
msgstr ""
|
501 |
-
|
502 |
#: s2member/includes/classes/login-redirects.inc.php:51
|
503 |
msgctxt "s2member-front"
|
504 |
msgid "<strong>ERROR</strong>: Invalid username for this site."
|
@@ -817,8 +812,8 @@ msgstr ""
|
|
817 |
#: s2member/includes/templates/buttons/paypal-checkout-button.php:46
|
818 |
#: s2member/includes/templates/buttons/paypal-sp-checkout-button.php:34
|
819 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
820 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
821 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
822 |
msgctxt "s2member-front paypal-button-lang-code"
|
823 |
msgid "en_US"
|
824 |
msgstr ""
|
@@ -1217,35 +1212,35 @@ msgstr ""
|
|
1217 |
#: s2member/includes/s2member.js:231 s2member/includes/s2member.js:263
|
1218 |
#: s2member/includes/s2member.js:290
|
1219 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1220 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1221 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1222 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1223 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1224 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1225 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1226 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1227 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1228 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1229 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1230 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1231 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1232 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1233 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1234 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1235 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1236 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1237 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1238 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1239 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1240 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1241 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1242 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1243 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1244 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1245 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1246 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1247 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1248 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1249 |
msgctxt "s2member-front"
|
1250 |
msgid "— Oops, you missed something: —"
|
1251 |
msgstr ""
|
@@ -1253,11 +1248,11 @@ msgstr ""
|
|
1253 |
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:87
|
1254 |
#: s2member/includes/s2member.js:192
|
1255 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1256 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1257 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1258 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1259 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1260 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1261 |
msgctxt "s2member-front"
|
1262 |
msgid "Passwords do not match up. Please try again."
|
1263 |
msgstr ""
|
@@ -1265,11 +1260,11 @@ msgstr ""
|
|
1265 |
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:94
|
1266 |
#: s2member/includes/s2member.js:199
|
1267 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1268 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1269 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1270 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1271 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1272 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1273 |
msgctxt "s2member-front"
|
1274 |
msgid "Password MUST be at least 6 characters. Please try again."
|
1275 |
msgstr ""
|
@@ -1650,6 +1645,16 @@ msgctxt "s2member-admin"
|
|
1650 |
msgid "Customizes Prices, Payments & Billing Cycle"
|
1651 |
msgstr ""
|
1652 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1653 |
#: s2member/includes/templates/options/paypal-currencies.php:6
|
1654 |
#: s2member-pro/includes/templates/options/authnet-currencies.php:6
|
1655 |
#: s2member-pro/includes/templates/options/ccbill-currencies.php:6
|
@@ -3799,75 +3804,75 @@ msgid "My Profile Summary"
|
|
3799 |
msgstr ""
|
3800 |
|
3801 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3802 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3803 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3804 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3805 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3806 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3807 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3808 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3809 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3810 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3811 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3812 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3813 |
msgctxt "s2member-front"
|
3814 |
msgid "Security Code missing. Please try again."
|
3815 |
msgstr ""
|
3816 |
|
3817 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3818 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3819 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3820 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3821 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3822 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3823 |
msgctxt "s2member-front"
|
3824 |
msgid "Please choose a Billing Method."
|
3825 |
msgstr ""
|
3826 |
|
3827 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3828 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3829 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3830 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3831 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3832 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3833 |
msgctxt "s2member-front"
|
3834 |
msgid "Calculating Sales Tax..."
|
3835 |
msgstr ""
|
3836 |
|
3837 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3838 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3839 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3840 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3841 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3842 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3843 |
msgctxt "s2member-front"
|
3844 |
msgid "calculating sales tax..."
|
3845 |
msgstr ""
|
3846 |
|
3847 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3848 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3849 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3850 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3851 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3852 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3853 |
msgctxt "s2member-front"
|
3854 |
msgid "<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s"
|
3855 |
msgstr ""
|
3856 |
|
3857 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3858 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3859 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3860 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3861 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3862 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3863 |
msgctxt "s2member-front"
|
3864 |
msgid "Today"
|
3865 |
msgstr ""
|
3866 |
|
3867 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3868 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3869 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3870 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3871 |
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:47
|
3872 |
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:28
|
3873 |
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:47
|
@@ -3877,27 +3882,27 @@ msgid "Create Profile"
|
|
3877 |
msgstr ""
|
3878 |
|
3879 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3880 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3881 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3882 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3883 |
msgctxt "s2member-front"
|
3884 |
msgid "Your Profile"
|
3885 |
msgstr ""
|
3886 |
|
3887 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3888 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3889 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3890 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3891 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3892 |
#: s2member-pro/includes/templates/forms/authnet-cancellation-form.php:34
|
3893 |
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:178
|
3894 |
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:79
|
3895 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
3896 |
#: s2member-pro/includes/templates/forms/authnet-update-form.php:110
|
3897 |
#: s2member-pro/includes/templates/forms/paypal-cancellation-form.php:34
|
3898 |
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:178
|
3899 |
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:79
|
3900 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
3901 |
#: s2member-pro/includes/templates/forms/paypal-update-form.php:110
|
3902 |
msgctxt "s2member-front"
|
3903 |
msgid "Submit Form"
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: s2Member® Framework 130513\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
+
"POT-Creation-Date: 2013-06-17 23:30:26+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
494 |
msgid "Unable to create Amazon® CloudFront Distro. Invalid Distro type."
|
495 |
msgstr ""
|
496 |
|
|
|
|
|
|
|
|
|
|
|
497 |
#: s2member/includes/classes/login-redirects.inc.php:51
|
498 |
msgctxt "s2member-front"
|
499 |
msgid "<strong>ERROR</strong>: Invalid username for this site."
|
812 |
#: s2member/includes/templates/buttons/paypal-checkout-button.php:46
|
813 |
#: s2member/includes/templates/buttons/paypal-sp-checkout-button.php:34
|
814 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
815 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:270
|
816 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:514
|
817 |
msgctxt "s2member-front paypal-button-lang-code"
|
818 |
msgid "en_US"
|
819 |
msgstr ""
|
1212 |
#: s2member/includes/s2member.js:231 s2member/includes/s2member.js:263
|
1213 |
#: s2member/includes/s2member.js:290
|
1214 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1215 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:66
|
1216 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:73
|
1217 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:160
|
1218 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:167
|
1219 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:232
|
1220 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:239
|
1221 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:246
|
1222 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:253
|
1223 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:453
|
1224 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:460
|
1225 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:681
|
1226 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:688
|
1227 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:695
|
1228 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:702
|
1229 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1230 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:66
|
1231 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
1232 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:160
|
1233 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:167
|
1234 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:232
|
1235 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:239
|
1236 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:246
|
1237 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:253
|
1238 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:489
|
1239 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:496
|
1240 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:753
|
1241 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:760
|
1242 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:767
|
1243 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:774
|
1244 |
msgctxt "s2member-front"
|
1245 |
msgid "— Oops, you missed something: —"
|
1246 |
msgstr ""
|
1248 |
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:87
|
1249 |
#: s2member/includes/s2member.js:192
|
1250 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1251 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:239
|
1252 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:688
|
1253 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1254 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:239
|
1255 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:760
|
1256 |
msgctxt "s2member-front"
|
1257 |
msgid "Passwords do not match up. Please try again."
|
1258 |
msgstr ""
|
1260 |
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:94
|
1261 |
#: s2member/includes/s2member.js:199
|
1262 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1263 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:246
|
1264 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:695
|
1265 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1266 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:246
|
1267 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:767
|
1268 |
msgctxt "s2member-front"
|
1269 |
msgid "Password MUST be at least 6 characters. Please try again."
|
1270 |
msgstr ""
|
1645 |
msgid "Customizes Prices, Payments & Billing Cycle"
|
1646 |
msgstr ""
|
1647 |
|
1648 |
+
#: s2member/includes/templates/errors/ip-restrictions.php:10
|
1649 |
+
msgctxt "s2member-front"
|
1650 |
+
msgid "503: Service Temporarily Unavailable"
|
1651 |
+
msgstr ""
|
1652 |
+
|
1653 |
+
#: s2member/includes/templates/errors/ip-restrictions.php:13
|
1654 |
+
msgctxt "s2member-front"
|
1655 |
+
msgid "<strong>503: Service Temporarily Unavailable</strong><br />Too many IP addresses accessing one secure area<em>!</em><br />Please contact Support if you need assistance."
|
1656 |
+
msgstr ""
|
1657 |
+
|
1658 |
#: s2member/includes/templates/options/paypal-currencies.php:6
|
1659 |
#: s2member-pro/includes/templates/options/authnet-currencies.php:6
|
1660 |
#: s2member-pro/includes/templates/options/ccbill-currencies.php:6
|
3804 |
msgstr ""
|
3805 |
|
3806 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3807 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:73
|
3808 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:167
|
3809 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:253
|
3810 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:460
|
3811 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:702
|
3812 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3813 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
3814 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:167
|
3815 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:253
|
3816 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:496
|
3817 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:774
|
3818 |
msgctxt "s2member-front"
|
3819 |
msgid "Security Code missing. Please try again."
|
3820 |
msgstr ""
|
3821 |
|
3822 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3823 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:142
|
3824 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:435
|
3825 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:663
|
3826 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3827 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:142
|
3828 |
msgctxt "s2member-front"
|
3829 |
msgid "Please choose a Billing Method."
|
3830 |
msgstr ""
|
3831 |
|
3832 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3833 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:302
|
3834 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:510
|
3835 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3836 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:306
|
3837 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:550
|
3838 |
msgctxt "s2member-front"
|
3839 |
msgid "Calculating Sales Tax..."
|
3840 |
msgstr ""
|
3841 |
|
3842 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3843 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:302
|
3844 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:510
|
3845 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3846 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:306
|
3847 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:550
|
3848 |
msgctxt "s2member-front"
|
3849 |
msgid "calculating sales tax..."
|
3850 |
msgstr ""
|
3851 |
|
3852 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3853 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:313
|
3854 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:521
|
3855 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3856 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:317
|
3857 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:561
|
3858 |
msgctxt "s2member-front"
|
3859 |
msgid "<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s"
|
3860 |
msgstr ""
|
3861 |
|
3862 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3863 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:313
|
3864 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:521
|
3865 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3866 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:317
|
3867 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:561
|
3868 |
msgctxt "s2member-front"
|
3869 |
msgid "Today"
|
3870 |
msgstr ""
|
3871 |
|
3872 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3873 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:583
|
3874 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3875 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:623
|
3876 |
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:47
|
3877 |
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:28
|
3878 |
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:47
|
3882 |
msgstr ""
|
3883 |
|
3884 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3885 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:584
|
3886 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3887 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:624
|
3888 |
msgctxt "s2member-front"
|
3889 |
msgid "Your Profile"
|
3890 |
msgstr ""
|
3891 |
|
3892 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3893 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:269
|
3894 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:270
|
3895 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:513
|
3896 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:514
|
3897 |
#: s2member-pro/includes/templates/forms/authnet-cancellation-form.php:34
|
3898 |
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:178
|
3899 |
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:79
|
3900 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:159
|
3901 |
#: s2member-pro/includes/templates/forms/authnet-update-form.php:110
|
3902 |
#: s2member-pro/includes/templates/forms/paypal-cancellation-form.php:34
|
3903 |
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:178
|
3904 |
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:79
|
3905 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:159
|
3906 |
#: s2member-pro/includes/templates/forms/paypal-update-form.php:110
|
3907 |
msgctxt "s2member-front"
|
3908 |
msgid "Submit Form"
|
includes/translations/translators.txt
CHANGED
@@ -10,4 +10,10 @@ The file: `/s2member/includes/translations/s2member.pot` will be updated with ea
|
|
10 |
|
11 |
If this is your first translation of a WordPress® plugin, [this article](http://codex.wordpress.org/Translating_WordPress#Localization_Technology) and/or [this article](http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/), might be of some assistance. When you are finished translating the `s2member.pot` file, place your completed `s2member-[locale].mo` file into this directory: `/wp-content/plugins/`; and please feel free to [share your translation](http://www.s2member.com/forums/forum/community/) with the rest of the s2Member® community.
|
12 |
|
13 |
-
Quick Tip: If you only need to translate the front-end of s2Member, please ignore entries in the `s2member.pot` file with a context matching `s2member-admin`. Those sections of s2Member are only seen by site Administrators; they are NOT used in s2Member's front-end integration with WordPress®. Skipping over translation entries with a context matching `s2member-admin` can save you time.
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
If this is your first translation of a WordPress® plugin, [this article](http://codex.wordpress.org/Translating_WordPress#Localization_Technology) and/or [this article](http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/), might be of some assistance. When you are finished translating the `s2member.pot` file, place your completed `s2member-[locale].mo` file into this directory: `/wp-content/plugins/`; and please feel free to [share your translation](http://www.s2member.com/forums/forum/community/) with the rest of the s2Member® community.
|
12 |
|
13 |
+
Quick Tip: If you only need to translate the front-end of s2Member, please ignore entries in the `s2member.pot` file with a context matching `s2member-admin`. Those sections of s2Member are only seen by site Administrators; they are NOT used in s2Member's front-end integration with WordPress®. Skipping over translation entries with a context matching `s2member-admin` can save you time.
|
14 |
+
|
15 |
+
== Existing Translations (Updating Your PO File)? ==
|
16 |
+
|
17 |
+
FUZZY translation entries: If you're updating an existing PO file (e.g. recompiling your MO file after changes in a new release of s2Member); please be sure to manually review any "fuzzy" entries. A fuzzy entry can occur as a result of changes from one release of s2Member (or s2Member Pro) to the next; where small changes in text might render your translation invalid (e.g. fuzzy).
|
18 |
+
|
19 |
+
Depending on your PO file editor, fuzzy entries may need to be reviewed and changes committed BEFORE you recompile; otherwise fuzzy entries will revert to their default state in your final MO file. Translations that are fuzzy, are NOT compiled into your final MO file. This can lead to much confusion. Please review any fuzzy entries carefully.
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
-
Version:
|
4 |
-
Stable tag:
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
@@ -92,15 +92,32 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
|
|
92 |
|
93 |
== Upgrade Notice ==
|
94 |
|
95 |
-
=
|
96 |
(Maintenance Release) Upgrade immediately.
|
97 |
|
98 |
== Changelog ==
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
= v130513 =
|
101 |
* (s2Member/s2Member Pro) **s2Stream Shortcode Bug Fix (#256)** Fixing a bug first introduced in the previous release where we added support for `player_aspectratio`. This quick update corrects the PHP parse error at line #154 of `sc-files-in.inc.php`. It also corrects the behavior of the `player_height=""` and `player_aspectratio=""` Shortcode Attributes for the `s2Stream` Shortcode. Many thanks to everyone that reported this bug.
|
102 |
* (s2Member Pro) **Codestyling Localization** Removing symlink creator for Codestyleing Localization compatibility. There have been some reports of problems during WordPress® automatic upgrades (when/if the symlink exists). Until we can find a way to avoid this, we're disabling the automatic symlink generator. If you're running the Codestyling Localization plugin together with s2Member Pro, you will need to create the symlink yourself if you want to make s2Member fully compatible. Please create a symlink here: `/wp-content/plugins/s2member/s2member-pro` that points to the s2Member Pro directory: `/wp-content/plugins/s2member-pro`. See notes in previous changelog for further details on this.
|
103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
= v130510 =
|
105 |
* (s2Member Pro) **Authorize.Net UK (and Other Currencies) (#104)** Adding support for Authorize.Net UK and other currencies too. s2Member Pro now officially supports Authorize.Net UK Edition. It is now possible to change your Authorize.Net Pro Form Shortcode Attribute `cc="USD"` to one of these values: `cc="USD"`, or `cc="CAD"` or `cc="EUR"` or `cc="GBP"`. For further details, please see: `Dashboard -› Authorize.Net Pro Forms -› Shortcode Attributes (Explained)`.
|
106 |
* (s2Member Pro) **ClickBank Skins (#227)** Adding support for the `cbskin=""` Shortcode Attribute. For further details, please see: `Dashboard -› ClickBank Buttons -› Shortcode Attributes (Explained)`.
|
@@ -122,7 +139,7 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
|
|
122 |
- You have a PayPal Payments Pro (Payflow Edition) account.
|
123 |
- You charge your customers on a recurring basis.
|
124 |
- A customer chooses PayPal as their billing method during checkout.
|
125 |
-
|
126 |
No other part of s2Member's integration with Payflow was modified in this release.
|
127 |
|
128 |
For further details, please see [this thread](http://www.s2member.com/forums/topic/paypal-expired-security-token/page/2/) (or monitor the [s2Member KB](http://www.s2member.com/kb/) for new articles on this subject).
|
1 |
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
+
Version: 130617
|
4 |
+
Stable tag: 130617
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
92 |
|
93 |
== Upgrade Notice ==
|
94 |
|
95 |
+
= v130617 =
|
96 |
(Maintenance Release) Upgrade immediately.
|
97 |
|
98 |
== Changelog ==
|
99 |
|
100 |
+
= v130617 =
|
101 |
+
* (s2Member/s2Member Pro) **IP Restrictions (#148)** It is now possible to introduce a custom template file that controls the error message displayed when/if a user breaches security by exceeding your maximum unique IP addresses; as configured under `s2Member -› Restriction Options -› Unique IP Restrictions`. If you would like to use a custom template for this message, please copy the default template file from `/s2member/includes/templates/errors/ip-restrictions.php` and place this file into your active WordPress® theme directory (or into the `/wp-content/` directory if you prefer). s2Member will automatically find your custom template in one of these locations; and s2Member will use your custom template instead of the built-in default.
|
102 |
+
* (s2Member Pro) **Bug Fix (#302)** Updating Authorize.Net Pro Form Generator to support max days of `365` instead of `7`.
|
103 |
+
* (s2Member Pro) **Amazon S3 Secret Access Keys (#321)** Updating UI configuration panel to better explain what a Secret Access Key is; and adding a note about Secret Access Keys for Amazon S3 integration. Amazon® is deprecating Secret Access Keys, but they ARE still required for digitally signed URLs. This update changes nothing in s2Member's functionality. It simply adds some additional detail to a configuration field that will assist site owners integrating s2Member w/ Amazon S3 for the first time.
|
104 |
+
* (s2Member/s2Member Pro) **Translations (#317)** Updating `/s2member/includes/translations/translations.txt` (README file). Adding blurp about fuzzy translation entries in existing PO files that translate s2Member. This contains some additional tips on how to update existing PO files upon each release of s2Member and/or s2Member Pro.
|
105 |
+
* (s2Member/s2Member Pro) **Bug Fix (#321)** Fixing bug in `/s2member/includes/templates/cfg-files/s2-cross-xml.php` for S3 Buckets (resulting in `crossdomain.xml`). This file contained a parse error and was causing some problems for site owners integrating Adobe Flash content served via Amazon S3. Fixed in this release.
|
106 |
+
|
107 |
= v130513 =
|
108 |
* (s2Member/s2Member Pro) **s2Stream Shortcode Bug Fix (#256)** Fixing a bug first introduced in the previous release where we added support for `player_aspectratio`. This quick update corrects the PHP parse error at line #154 of `sc-files-in.inc.php`. It also corrects the behavior of the `player_height=""` and `player_aspectratio=""` Shortcode Attributes for the `s2Stream` Shortcode. Many thanks to everyone that reported this bug.
|
109 |
* (s2Member Pro) **Codestyling Localization** Removing symlink creator for Codestyleing Localization compatibility. There have been some reports of problems during WordPress® automatic upgrades (when/if the symlink exists). Until we can find a way to avoid this, we're disabling the automatic symlink generator. If you're running the Codestyling Localization plugin together with s2Member Pro, you will need to create the symlink yourself if you want to make s2Member fully compatible. Please create a symlink here: `/wp-content/plugins/s2member/s2member-pro` that points to the s2Member Pro directory: `/wp-content/plugins/s2member-pro`. See notes in previous changelog for further details on this.
|
110 |
|
111 |
+
**IMPORTANT NOTE:** If you upgraded previously to v130510 (and you ran the Codestyling Localization plugin together with s2Member® v130510 — at any time); please delete this symlink via FTP: `/wp-content/plugins/s2member/s2member-pro`. Please do this BEFORE attempting an automatic upgrade via WordPress®.
|
112 |
+
|
113 |
+
If you missed this note and you've already attempted an automatic upgrade, you will have trouble. Here's how to correct the problem.
|
114 |
+
|
115 |
+
1. Log into your site via FTP and delete these two directories manually.
|
116 |
+
`/wp-content/plugins/s2member` and `/wp-content/plugins/s2member-pro`.
|
117 |
+
|
118 |
+
2. Now, please follow the [instructions here](http://www.s2member.com/pro/#!s2_tab_jump=s2-pro-install-update) to upgrade s2Member® Pro manually.
|
119 |
+
|
120 |
+
|
121 |
= v130510 =
|
122 |
* (s2Member Pro) **Authorize.Net UK (and Other Currencies) (#104)** Adding support for Authorize.Net UK and other currencies too. s2Member Pro now officially supports Authorize.Net UK Edition. It is now possible to change your Authorize.Net Pro Form Shortcode Attribute `cc="USD"` to one of these values: `cc="USD"`, or `cc="CAD"` or `cc="EUR"` or `cc="GBP"`. For further details, please see: `Dashboard -› Authorize.Net Pro Forms -› Shortcode Attributes (Explained)`.
|
123 |
* (s2Member Pro) **ClickBank Skins (#227)** Adding support for the `cbskin=""` Shortcode Attribute. For further details, please see: `Dashboard -› ClickBank Buttons -› Shortcode Attributes (Explained)`.
|
139 |
- You have a PayPal Payments Pro (Payflow Edition) account.
|
140 |
- You charge your customers on a recurring basis.
|
141 |
- A customer chooses PayPal as their billing method during checkout.
|
142 |
+
|
143 |
No other part of s2Member's integration with Payflow was modified in this release.
|
144 |
|
145 |
For further details, please see [this thread](http://www.s2member.com/forums/topic/paypal-expired-security-token/page/2/) (or monitor the [s2Member KB](http://www.s2member.com/kb/) for new articles on this subject).
|
s2member.php
CHANGED
@@ -19,8 +19,8 @@
|
|
19 |
*/
|
20 |
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
-
Version:
|
23 |
-
Stable tag:
|
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", "
|
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", "
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|
19 |
*/
|
20 |
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
+
Version: 130617
|
23 |
+
Stable tag: 130617
|
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", "130617" /* !#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", "130617" /* !#distro-version#! */);
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|