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

Version Description

= v121204 = Maintenance release. Upgrade immediately.

Download this release

Release Info

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

Code changes from version 121201 to 121204

includes/classes/paypal-utilities.inc.php CHANGED
@@ -170,6 +170,10 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
170
$post_vars["PWD"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_password"];
171
$post_vars["SIGNATURE"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_signature"];
172
/**/
173
$input_time = /* Record input/nvp for logging. */ date("D M j, Y g:i:s a T");
174
/**/
175
$nvp = trim(c_ws_plugin__s2member_utils_urls::remote($url, $post_vars, array("timeout" => 20)));
@@ -239,6 +243,28 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
239
return $response; /* Filters already applied with: ``ws_plugin__s2member_paypal_api_response``. */
240
}
241
/**
242
* Calls upon the PayPal® PayFlow API, and returns the response.
243
*
244
* @package s2Member\PayPal
@@ -260,15 +286,19 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
260
$post_vars = apply_filters("ws_plugin__s2member_paypal_payflow_api_post_vars", $post_vars, get_defined_vars());
261
$post_vars = (is_array($post_vars)) ? $post_vars : array();
262
/**/
263
- $post_vars["VERBOSITY"] = "HIGH";
264
$post_vars["USER"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_username"];
265
$post_vars["PARTNER"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_partner"];
266
$post_vars["VENDOR"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_vendor"];
267
$post_vars["PWD"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_password"];
268
/**/
269
$input_time = /* Record input/nvp for logging. */ date("D M j, Y g:i:s a T");
270
/**/
271
- $nvp_post_vars = "";
272
foreach($post_vars as $_key => $_value /* A ridiculous `text/namevalue` format. */)
273
$nvp_post_vars .= (($nvp_post_vars) ? "&" : "").$_key."[".strlen($_value)."]=".$_value;
274
unset($_key, $_value);
@@ -311,7 +341,7 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
311
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
312
if(is_dir($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
313
if(is_writable($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files())
314
- if(($log = "-------- Input vars: ( ".$input_time." ) --------\n".var_export($post_vars, true)."\n"))
315
if(($log .= "-------- Output string/vars: ( ".$output_time." ) --------\n".$nvp."\n".var_export($response, true)))
316
file_put_contents($logs_dir."/".$log2, $logv."\n".$logm."\n".$log4."\n".$log."\n\n", FILE_APPEND);
317
/**/
@@ -349,6 +379,28 @@ if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
349
return $response; /* Filters already applied with: ``ws_plugin__s2member_paypal_payflow_api_response``. */
350
}
351
/**
352
* Converts a term `D|W|M|Y` into PayPal® Pro format.
353
*
354
* @package s2Member\PayPal
170
$post_vars["PWD"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_password"];
171
$post_vars["SIGNATURE"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_api_signature"];
172
/**/
173
+ foreach($post_vars as $_key => &$_value /* We need to clean these up. */)
174
+ $_value = c_ws_plugin__s2member_paypal_utilities::paypal_api_nv_cleanup($_key, $_value);
175
+ unset($_key, $_value);
176
+ /**/
177
$input_time = /* Record input/nvp for logging. */ date("D M j, Y g:i:s a T");
178
/**/
179
$nvp = trim(c_ws_plugin__s2member_utils_urls::remote($url, $post_vars, array("timeout" => 20)));
243
return $response; /* Filters already applied with: ``ws_plugin__s2member_paypal_api_response``. */
244
}
245
/**
246
+ * Cleans up values passed through PayPal® NVP strings.
247
+ *
248
+ * @package s2Member\PayPal
249
+ * @since 121202
250
+ *
251
+ * @param string $key Expects a string value.
252
+ * @param string $value Expects a string value.
253
+ * @return string Cleaned string value.
254
+ */
255
+ public static function paypal_api_nv_cleanup($key = FALSE, $value = FALSE)
256
+ {
257
+ $value = (string)$value;
258
+ $value = preg_replace('/"/', "'", $value);
259
+ /**/
260
+ if(($key === "DESC" || $key === "BA_DESC" #
261
+ || preg_match("/^L_NAME[0-9]+#x2F;", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_DESC#x2F;", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_NAME[0-9]+#x2F;", $key) #
262
+ || preg_match("/^L_BILLINGAGREEMENTDESCRIPTION[0-9]+#x2F;", $key)) && strlen($value) > 60)
263
+ $value = substr($value, 0, 57)."...";
264
+ /**/
265
+ return apply_filters("ws_plugin__s2member_paypal_api_nv_cleanup", $value, get_defined_vars());
266
+ }
267
+ /**
268
* Calls upon the PayPal® PayFlow API, and returns the response.
269
*
270
* @package s2Member\PayPal
286
$post_vars = apply_filters("ws_plugin__s2member_paypal_payflow_api_post_vars", $post_vars, get_defined_vars());
287
$post_vars = (is_array($post_vars)) ? $post_vars : array();
288
/**/
289
+ $post_vars["VERBOSITY"] = "MEDIUM";
290
$post_vars["USER"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_username"];
291
$post_vars["PARTNER"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_partner"];
292
$post_vars["VENDOR"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_vendor"];
293
$post_vars["PWD"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_payflow_api_password"];
294
/**/
295
+ foreach($post_vars as $_key => &$_value /* We need to clean these up. */)
296
+ $_value = c_ws_plugin__s2member_paypal_utilities::paypal_payflow_api_nv_cleanup($_key, $_value);
297
+ unset($_key, $_value);
298
+ /**/
299
$input_time = /* Record input/nvp for logging. */ date("D M j, Y g:i:s a T");
300
/**/
301
+ $nvp_post_vars = /* Initialize this to an empty string. */ "";
302
foreach($post_vars as $_key => $_value /* A ridiculous `text/namevalue` format. */)
303
$nvp_post_vars .= (($nvp_post_vars) ? "&" : "").$_key."[".strlen($_value)."]=".$_value;
304
unset($_key, $_value);
341
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"])
342
if(is_dir($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"]))
343
if(is_writable($logs_dir) && c_ws_plugin__s2member_utils_logs::archive_oversize_log_files())
344
+ if(($log = "-------- Input vars: ( ".$input_time." ) --------\n".$nvp_post_vars."\n".var_export($post_vars, true)."\n"))
345
if(($log .= "-------- Output string/vars: ( ".$output_time." ) --------\n".$nvp."\n".var_export($response, true)))
346
file_put_contents($logs_dir."/".$log2, $logv."\n".$logm."\n".$log4."\n".$log."\n\n", FILE_APPEND);
347
/**/
379
return $response; /* Filters already applied with: ``ws_plugin__s2member_paypal_payflow_api_response``. */
380
}
381
/**
382
+ * Cleans up values passed through PayPal® text/namevalue strings.
383
+ *
384
+ * @package s2Member\PayPal
385
+ * @since 121202
386
+ *
387
+ * @param string $key Expects a string value.
388
+ * @param string $value Expects a string value.
389
+ * @return string Cleaned string value.
390
+ */
391
+ public static function paypal_payflow_api_nv_cleanup($key = FALSE, $value = FALSE)
392
+ {
393
+ $value = (string)$value;
394
+ $value = preg_replace('/"/', "'", $value);
395
+ /**/
396
+ if(($key === "DESC" || $key === "BA_DESC" #
397
+ || preg_match("/^L_NAME[0-9]+#x2F;", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_DESC#x2F;", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_NAME[0-9]+#x2F;", $key) #
398
+ || preg_match("/^L_BILLINGAGREEMENTDESCRIPTION[0-9]+#x2F;", $key)) && strlen($value) > 60)
399
+ $value = substr($value, 0, 57)."...";
400
+ /**/
401
+ return apply_filters("ws_plugin__s2member_paypal_payflow_api_nv_cleanup", $value, get_defined_vars());
402
+ }
403
+ /**
404
* Converts a term `D|W|M|Y` into PayPal® Pro format.
405
*
406
* @package s2Member\PayPal
includes/menu-pages/code-samples/jwplayer-standard-mp4.x-php CHANGED
@@ -8,23 +8,16 @@ $s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test fil
8
<div id="jw-container">JW Player® appears here.</div>
9
<script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
10
<script type="text/javascript">
11
- jwplayer("jw-container").setup({modes: /* JW Player®. */
12
- [
13
- /* First try psuedo-streaming with Flash® player. */
14
- {type: "flash", provider: "http", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
15
- config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}},
16
- /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
17
-
18
- /* Else, try an HTML5 video tag. */
19
- {type: "html5", provider: "video",
20
- config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}},
21
- /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
22
-
23
- /* Else, this is a safe fallback. */
24
- {type: "download", /* Download the file. */
25
- config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}}
26
- /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
27
- ],
28
- /* Set video dimensions. */ width: 480, height: 270
29
- });
30
</script>
8
<div id="jw-container">JW Player® appears here.</div>
9
<script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
10
<script type="text/javascript">
11
+ jwplayer('jw-container').setup({
12
+ playlist:
13
+ [{
14
+ sources: /* List all available sources. */
15
+ [
16
+ {type: 'mp4', file: '/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>'}
17
+ /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
18
+ ]
19
+ }],
20
+ primary: 'flash' /* Try Flash® first, fallback on HTML5 or direct download of MP4 file. */,
21
+ width: 480, height: 270 /* Set video dimensions for all sources. */
22
+ });
23
</script>
includes/menu-pages/code-samples/jwplayer-streaming-mp4-sca.x-php CHANGED
@@ -18,22 +18,18 @@ $s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test fil
18
<script type="text/javascript">
19
if(typeof mp4 === 'object') /* `s2File` returns a null object if access is denied to the current User. */
20
{
21
- jwplayer("jw-container").setup({modes: /* JW Player®. */
22
- [
23
- /* First try real-time streaming with Flash® player. */
24
- {type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
25
- config: {streamer: mp4['streamer'], file: mp4['file']}},
26
-
27
- /* Else, try an HTML5 video tag. */
28
- {type: "html5", provider: "video",
29
- config: {file: mp4['url']}},
30
-
31
- /* Else, this is a safe fallback. */
32
- {type: "download", /* Download the file. */
33
- config: {file: mp4['url']}}
34
- ],
35
- /* Set video dimensions. */ width: 480, height: 270
36
- });
37
}
38
else /* Else, `s2File` returned a null object value. */
39
{
18
<script type="text/javascript">
19
if(typeof mp4 === 'object') /* `s2File` returns a null object if access is denied to the current User. */
20
{
21
+ jwplayer('jw-container').setup({
22
+ playlist:
23
+ [{
24
+ sources: /* List all available sources. */
25
+ [
26
+ {type: 'rtmp', file: mp4['streamer'] + '/' + mp4['file']},
27
+ {type: 'mp4', file: mp4['url']}
28
+ ]
29
+ }],
30
+ primary: 'flash' /* Try Flash® RTMP first, fallback on HTML5 or direct download of MP4 file. */,
31
+ width: 480, height: 270 /* Set video dimensions for all sources. */
32
+ });
33
}
34
else /* Else, `s2File` returned a null object value. */
35
{
includes/menu-pages/code-samples/jwplayer-streaming-mp4-webm.x-php CHANGED
@@ -18,26 +18,19 @@ if (($mp4 = s2member_file_download_url ($mp4_cfg, "get-streamer-array"))
18
&& ($webm["url"] = s2member_file_download_url ($webm_cfg))) { ?>
19
20
<script type="text/javascript">
21
- jwplayer("jw-container").setup({modes: /* JW Player®. */
22
- [
23
- /* First try real-time streaming with Flash® player. */
24
- {type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
25
- config: {streamer: "<?php echo $mp4["streamer"]; ?>", file: "<?php echo $mp4["file"]; ?>"}},
26
-
27
- /* Else, try an HTML5 video tag with the `mp4` file. */
28
- {type: "html5", provider: "video",
29
- config: {file: "<?php echo $mp4["url"]; ?>"}},
30
-
31
- /* Else, try an HTML5 video tag with a `webm` file. */
32
- {type: "html5", provider: "video",
33
- config: {file: "<?php echo $webm["url"]; ?>"}},
34
-
35
- /* Else, this is a safe fallback. */
36
- {type: "download", /* Download the file. */
37
- config: {file: "<?php echo $mp4["url"]; ?>"}}
38
- ],
39
- /* Set video dimensions. */ width: 480, height: 270
40
- });
41
</script>
42
43
<?php } else /* Access is denied to the current User. */ { ?>
18
&& ($webm["url"] = s2member_file_download_url ($webm_cfg))) { ?>
19
20
<script type="text/javascript">
21
+ jwplayer('jw-container').setup({
22
+ playlist:
23
+ [{
24
+ sources: /* List all available sources. */
25
+ [
26
+ {type: 'rtmp', file: '<?php echo $mp4["streamer"]; ?>/<?php echo $mp4["file"]; ?>'},
27
+ {type: 'mp4', file: '<?php echo $mp4["url"]; ?>'},
28
+ {type: 'webm', file: '<?php echo $webm["url"]; ?>'}
29
+ ]
30
+ }],
31
+ primary: 'flash' /* Try Flash® RTMP first, fallback on HTML5 or direct download of MP4/WEBM files. */,
32
+ width: 480, height: 270 /* Set video dimensions for all sources. */
33
+ });
34
</script>
35
36
<?php } else /* Access is denied to the current User. */ { ?>
includes/menu-pages/code-samples/jwplayer-streaming-mp4.x-php CHANGED
@@ -15,22 +15,18 @@ $cfg = array ("file_download" => $s2_jw_config["mp4_video_file_name"], "url_to_s
15
if (($mp4 = s2member_file_download_url ($cfg, "get-streamer-array"))) { ?>
16
17
<script type="text/javascript">
18
- jwplayer("jw-container").setup({modes: /* JW Player®. */
19
- [
20
- /* First try real-time streaming with Flash® player. */
21
- {type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
22
- config: {streamer: "<?php echo $mp4["streamer"]; ?>", file: "<?php echo $mp4["file"]; ?>"}},
23
-
24
- /* Else, try an HTML5 video tag. */
25
- {type: "html5", provider: "video",
26
- config: {file: "<?php echo $mp4["url"]; ?>"}},
27
-
28
- /* Else, this is a safe fallback. */
29
- {type: "download", /* Download the file. */
30
- config: {file: "<?php echo $mp4["url"]; ?>"}}
31
- ],
32
- /* Set video dimensions. */ width: 480, height: 270
33
- });
34
</script>
35
36
<?php } else /* Access is denied to the current User. */ { ?>
15
if (($mp4 = s2member_file_download_url ($cfg, "get-streamer-array"))) { ?>
16
17
<script type="text/javascript">
18
+ jwplayer('jw-container').setup({
19
+ playlist:
20
+ [{
21
+ sources: /* List all available sources. */
22
+ [
23
+ {type: 'rtmp', file: '<?php echo $mp4["streamer"]; ?>/<?php echo $mp4["file"]; ?>'},
24
+ {type: 'mp4', file: '<?php echo $mp4["url"]; ?>'}
25
+ ]
26
+ }],
27
+ primary: 'flash' /* Try Flash® RTMP first, fallback on HTML5 or direct download of MP4 file. */,
28
+ width: 480, height: 270 /* Set video dimensions for all sources. */
29
+ });
30
</script>
31
32
<?php } else /* Access is denied to the current User. */ { ?>
includes/menu-pages/code-samples/jwplayer-v5-standard-mp4.x-php ADDED
@@ -0,0 +1,30 @@
1
+ <?php
2
+ // Configuration.
3
+ $s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
4
+ $s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
5
+ // Don't edit anything else below unless you know what you're doing.
6
+ ?>
7
+
8
+ <div id="jw-container">JW Player® appears here.</div>
9
+ <script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
10
+ <script type="text/javascript">
11
+ jwplayer("jw-container").setup({modes: /* JW Player®. */
12
+ [
13
+ /* First try psuedo-streaming with Flash® player. */
14
+ {type: "flash", provider: "http", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
15
+ config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}},
16
+ /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
17
+
18
+ /* Else, try an HTML5 video tag. */
19
+ {type: "html5", provider: "video",
20
+ config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}},
21
+ /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
22
+
23
+ /* Else, this is a safe fallback. */
24
+ {type: "download", /* Download the file. */
25
+ config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}}
26
+ /* Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /] */
27
+ ],
28
+ /* Set video dimensions. */ width: 480, height: 270
29
+ });
30
+ </script>
includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-sca.x-php ADDED
@@ -0,0 +1,42 @@
1
+ <?php
2
+ // Configuration.
3
+ $s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
4
+ $s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
5
+ // Don't edit anything else below unless you know what you're doing.
6
+ ?>
7
+
8
+ <div id="jw-container">JW Player® appears here.</div>
9
+ <script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
10
+
11
+ <script type="text/javascript">
12
+ /* The Shortcode here will return a JSON object for JavaScript notation. */
13
+ /* A direct URL to the RTMP source; counting the file against the current User in real-time. */
14
+ /* API Shortcode `s2File` returns a null object if access is denied to the current User/Member. */
15
+ var mp4 = [s2File download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" url_to_storage_source="true" count_against_user="true" get_streamer_json="true" /];
16
+ </script>
17
+
18
+ <script type="text/javascript">
19
+ if(typeof mp4 === 'object') /* `s2File` returns a null object if access is denied to the current User. */
20
+ {
21
+ jwplayer("jw-container").setup({modes: /* JW Player®. */
22
+ [
23
+ /* First try real-time streaming with Flash® player. */
24
+ {type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
25
+ config: {streamer: mp4['streamer'], file: mp4['file']}},
26
+
27
+ /* Else, try an HTML5 video tag. */
28
+ {type: "html5", provider: "video",
29
+ config: {file: mp4['url']}},
30
+
31
+ /* Else, this is a safe fallback. */
32
+ {type: "download", /* Download the file. */
33
+ config: {file: mp4['url']}}
34
+ ],
35
+ /* Set video dimensions. */ width: 480, height: 270
36
+ });
37
+ }
38
+ else /* Else, `s2File` returned a null object value. */
39
+ {
40
+ document.write('Sorry, you do NOT have access to this file.');
41
+ }
42
+ </script>
includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-webm.x-php ADDED
@@ -0,0 +1,45 @@
1
+ <?php
2
+ // Configuration.
3
+ $s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
4
+ $s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
5
+ $s2_jw_config["webm_video_file_name"] = "video.webm"; // Name of your WEBM test file.
6
+ // Don't edit anything else below unless you know what you're doing.
7
+ ?>
8
+
9
+ <div id="jw-container">JW Player® appears here.</div>
10
+ <script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
11
+
12
+ <?php /* A direct URL to the RTMP source; counting the file against the current User in real-time. */
13
+ $mp4_cfg = array ("file_download" => $s2_jw_config["mp4_video_file_name"], "url_to_storage_source" => true, "count_against_user" => true);
14
+ $webm_cfg = array ("file_download" => $s2_jw_config["webm_video_file_name"], "url_to_storage_source" => true /* Don't count variations. */); ?>
15
+
16
+ <?php /* API Function `s2member_file_download_url()` returns false if access is denied to the current User. */
17
+ if (($mp4 = s2member_file_download_url ($mp4_cfg, "get-streamer-array"))
18
+ && ($webm["url"] = s2member_file_download_url ($webm_cfg))) { ?>
19
+
20
+ <script type="text/javascript">
21
+ jwplayer("jw-container").setup({modes: /* JW Player®. */
22
+ [
23
+ /* First try real-time streaming with Flash® player. */
24
+ {type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
25
+ config: {streamer: "<?php echo $mp4["streamer"]; ?>", file: "<?php echo $mp4["file"]; ?>"}},
26
+
27
+ /* Else, try an HTML5 video tag with the `mp4` file. */
28
+ {type: "html5", provider: "video",
29
+ config: {file: "<?php echo $mp4["url"]; ?>"}},
30
+
31
+ /* Else, try an HTML5 video tag with a `webm` file. */
32
+ {type: "html5", provider: "video",
33
+ config: {file: "<?php echo $webm["url"]; ?>"}},
34
+
35
+ /* Else, this is a safe fallback. */
36
+ {type: "download", /* Download the file. */
37
+ config: {file: "<?php echo $mp4["url"]; ?>"}}
38
+ ],
39
+ /* Set video dimensions. */ width: 480, height: 270
40
+ });
41
+ </script>
42
+
43
+ <?php } else /* Access is denied to the current User. */ { ?>
44
+ Sorry, you do NOT have access to this file.
45
+ <?php } ?>
includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4.x-php ADDED
@@ -0,0 +1,38 @@
1
+ <?php
2
+ // Configuration.
3
+ $s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
4
+ $s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
5
+ // Don't edit anything else below unless you know what you're doing.
6
+ ?>
7
+
8
+ <div id="jw-container">JW Player® appears here.</div>
9
+ <script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
10
+
11
+ <?php /* A direct URL to the RTMP source; counting the file against the current User in real-time. */
12
+ $cfg = array ("file_download" => $s2_jw_config["mp4_video_file_name"], "url_to_storage_source" => true, "count_against_user" => true); ?>
13
+
14
+ <?php /* API Function `s2member_file_download_url()` returns false if access is denied to the current User. */
15
+ if (($mp4 = s2member_file_download_url ($cfg, "get-streamer-array"))) { ?>
16
+
17
+ <script type="text/javascript">
18
+ jwplayer("jw-container").setup({modes: /* JW Player®. */
19
+ [
20
+ /* First try real-time streaming with Flash® player. */
21
+ {type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
22
+ config: {streamer: "<?php echo $mp4["streamer"]; ?>", file: "<?php echo $mp4["file"]; ?>"}},
23
+
24
+ /* Else, try an HTML5 video tag. */
25
+ {type: "html5", provider: "video",
26
+ config: {file: "<?php echo $mp4["url"]; ?>"}},
27
+
28
+ /* Else, this is a safe fallback. */
29
+ {type: "download", /* Download the file. */
30
+ config: {file: "<?php echo $mp4["url"]; ?>"}}
31
+ ],
32
+ /* Set video dimensions. */ width: 480, height: 270
33
+ });
34
+ </script>
35
+
36
+ <?php } else /* Access is denied to the current User. */ { ?>
37
+ Sorry, you do NOT have access to this file.
38
+ <?php } ?>
includes/menu-pages/down-ops.inc.php CHANGED
@@ -480,10 +480,10 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
480
{
481
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rtmp_streaming", get_defined_vars());
482
/**/
483
- echo '<div class="ws-menu-page-group" title="JW Player® &amp; RTMP Protocol Examples">'."\n";
484
/**/
485
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
486
- echo '<h3>JW Player® &amp; RTMP Protocol Examples</h3>'."\n";
487
echo '<a href="http://www.longtailvideo.com/players/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0;" alt="." /></a>'."\n";
488
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon® S3 or CloudFront; we DO highly recommend that you integrate both Amazon® S3 and Amazon® CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon® S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
489
echo '<p><strong>One of the great things about Amazon® CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon® CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon® S3 and Amazon® CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon® CloudFront Streaming Distribution.</p>'."\n";
@@ -500,7 +500,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
500
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, via s2Member\'s JSON/Shortcode alternative )</a></p>'."\n";
501
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4-sca.x-php")).'</p>'."\n";
502
/**/
503
- echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, advanced w/ multiple HTML5 fallbacks )</a></p>'."\n";
504
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4-webm.x-php")).'</p>'."\n";
505
/**/
506
echo '</div>'."\n";
@@ -510,6 +510,40 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
510
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_rtmp_streaming", get_defined_vars());
511
}
512
/**/
513
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rewrite_linkage", true, get_defined_vars()))
514
{
515
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rewrite_linkage", get_defined_vars());
480
{
481
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rtmp_streaming", get_defined_vars());
482
/**/
483
+ echo '<div class="ws-menu-page-group" title="JW Player® v6 &amp; RTMP Protocol Examples">'."\n";
484
/**/
485
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
486
+ echo '<h3>JW Player® v6 &amp; RTMP Protocol Examples</h3>'."\n";
487
echo '<a href="http://www.longtailvideo.com/players/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0;" alt="." /></a>'."\n";
488
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon® S3 or CloudFront; we DO highly recommend that you integrate both Amazon® S3 and Amazon® CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon® S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
489
echo '<p><strong>One of the great things about Amazon® CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon® CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon® S3 and Amazon® CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon® CloudFront Streaming Distribution.</p>'."\n";
500
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, via s2Member\'s JSON/Shortcode alternative )</a></p>'."\n";
501
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4-sca.x-php")).'</p>'."\n";
502
/**/
503
+ echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, advanced w/ multiple fallbacks )</a></p>'."\n";
504
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4-webm.x-php")).'</p>'."\n";
505
/**/
506
echo '</div>'."\n";
510
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_rtmp_streaming", get_defined_vars());
511
}
512
/**/
513
+ if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rtmp_streaming", true, get_defined_vars()))
514
+ {
515
+ do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rtmp_streaming", get_defined_vars());
516
+ /**/
517
+ echo '<div class="ws-menu-page-group" title="JW Player® v5 &amp; RTMP Protocol Examples">'."\n";
518
+ /**/
519
+ echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
520
+ echo '<h3>JW Player® v5 &amp; RTMP Protocol Examples</h3>'."\n";
521
+ echo '<a href="http://www.longtailvideo.com/players/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0;" alt="." /></a>'."\n";
522
+ echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon® S3 or CloudFront; we DO highly recommend that you integrate both Amazon® S3 and Amazon® CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon® S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
523
+ echo '<p><strong>One of the great things about Amazon® CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon® CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon® S3 and Amazon® CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon® CloudFront Streaming Distribution.</p>'."\n";
524
+ do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_rtmp_streaming", get_defined_vars());
525
+ /**/
526
+ echo '<div class="ws-menu-page-hr"></div>'."\n";
527
+ /**/
528
+ echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-standard-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player® ( MP4 file, via Rewrite URLs. Amazon® S3/CloudFront NOT required )</a></p>'."\n";
529
+ echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-standard-mp4" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This does NOT require s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <code>s2Member -> Download Options -> Advanced Mod Rewrite Linkage</code>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-standard-mp4.x-php")).'</p>'."\n";
530
+ /**/
531
+ echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, via s2Member\'s Amazon® S3/CloudFront integration )</a></p>'."\n";
532
+ echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-streaming-mp4.x-php")).'</p>'."\n";
533
+ /**/
534
+ echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, via s2Member\'s JSON/Shortcode alternative )</a></p>'."\n";
535
+ echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-streaming-mp4-sca.x-php")).'</p>'."\n";
536
+ /**/
537
+ echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm\').toggle(); return false;" class="ws-dotted-link">JW Player® ( RTMP streaming MP4, advanced w/ multiple fallbacks )</a></p>'."\n";
538
+ echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player® here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon® S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -> API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-streaming-mp4-webm.x-php")).'</p>'."\n";
539
+ /**/
540
+ echo '</div>'."\n";
541
+ /**/
542
+ echo '</div>'."\n";
543
+ /**/
544
+ do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_rtmp_streaming", get_defined_vars());
545
+ }
546
+ /**/
547
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rewrite_linkage", true, get_defined_vars()))
548
{
549
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rewrite_linkage", get_defined_vars());
includes/translations/s2member.pot CHANGED
@@ -2,9 +2,9 @@
2
# This file is distributed under the same license as the s2Member® Framework package.
3
msgid ""
4
msgstr ""
5
- "Project-Id-Version: s2Member® Framework 121023\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/___s2member\n"
7
- "POT-Creation-Date: 2012-12-01 19:58:09+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
@@ -660,30 +660,30 @@ msgstr ""
660
#. again`, or something to that affect. Or, if you prefer, you could Filter
661
#. ``$response["__error"]`` with `ws_plugin__s2member_paypal_api_response`.
662
663
- #: s2member/includes/classes/paypal-utilities.inc.php:186
664
msgctxt "s2member-front"
665
msgid "Error #%1$s. %2$s. %3$s."
666
msgstr ""
667
668
- #: s2member/includes/classes/paypal-utilities.inc.php:189
669
- #: s2member/includes/classes/paypal-utilities.inc.php:290
670
- #: s2member/includes/classes/paypal-utilities.inc.php:299
671
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
672
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:322
673
msgctxt "s2member-front"
674
msgid "Error. Please contact Support for assistance."
675
msgstr ""
676
677
- #: s2member/includes/classes/paypal-utilities.inc.php:230
678
- #: s2member/includes/classes/paypal-utilities.inc.php:236
679
- #: s2member/includes/classes/paypal-utilities.inc.php:340
680
- #: s2member/includes/classes/paypal-utilities.inc.php:346
681
msgctxt "s2member-front"
682
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
683
msgstr ""
684
685
- #: s2member/includes/classes/paypal-utilities.inc.php:233
686
- #: s2member/includes/classes/paypal-utilities.inc.php:343
687
msgctxt "s2member-front"
688
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
689
msgstr ""
@@ -703,8 +703,8 @@ msgstr ""
703
#. ``$response["__error"]`` with
704
#. `ws_plugin__s2member_pro_authnet_arb_response`.
705
706
- #: s2member/includes/classes/paypal-utilities.inc.php:287
707
- #: s2member/includes/classes/paypal-utilities.inc.php:296
708
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
709
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:319
710
msgctxt "s2member-front"
@@ -2466,8 +2466,8 @@ msgstr ""
2466
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:580
2467
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:294
2468
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:617
2469
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:337
2470
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:669
2471
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:425
2472
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:853
2473
msgctxt "s2member-front"
@@ -2478,8 +2478,8 @@ msgstr ""
2478
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:696
2479
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:456
2480
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:769
2481
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:508
2482
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:821
2483
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:687
2484
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1005
2485
msgctxt "s2member-front"
@@ -2496,10 +2496,10 @@ msgstr ""
2496
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:486
2497
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:778
2498
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:799
2499
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:517
2500
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:538
2501
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:830
2502
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:851
2503
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:696
2504
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:717
2505
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1014
@@ -2514,8 +2514,8 @@ msgstr ""
2514
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:717
2515
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:477
2516
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:790
2517
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:529
2518
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:842
2519
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:708
2520
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1026
2521
msgctxt "s2member-front"
@@ -2524,7 +2524,7 @@ msgstr ""
2524
2525
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:737
2526
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:810
2527
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:862
2528
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1046
2529
#: s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:138
2530
msgctxt "s2member-front"
@@ -3595,8 +3595,8 @@ msgstr ""
3595
3596
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:306
3597
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:629
3598
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:349
3599
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:681
3600
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:442
3601
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:865
3602
msgctxt "s2member-front"
2
# This file is distributed under the same license as the s2Member® Framework package.
3
msgid ""
4
msgstr ""
5
+ "Project-Id-Version: s2Member® Framework 121204\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/___s2member\n"
7
+ "POT-Creation-Date: 2012-12-05 08:31:10+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
660
#. again`, or something to that affect. Or, if you prefer, you could Filter
661
#. ``$response["__error"]`` with `ws_plugin__s2member_paypal_api_response`.
662
663
+ #: s2member/includes/classes/paypal-utilities.inc.php:190
664
msgctxt "s2member-front"
665
msgid "Error #%1$s. %2$s. %3$s."
666
msgstr ""
667
668
+ #: s2member/includes/classes/paypal-utilities.inc.php:193
669
+ #: s2member/includes/classes/paypal-utilities.inc.php:320
670
+ #: s2member/includes/classes/paypal-utilities.inc.php:329
671
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
672
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:322
673
msgctxt "s2member-front"
674
msgid "Error. Please contact Support for assistance."
675
msgstr ""
676
677
+ #: s2member/includes/classes/paypal-utilities.inc.php:234
678
+ #: s2member/includes/classes/paypal-utilities.inc.php:240
679
+ #: s2member/includes/classes/paypal-utilities.inc.php:370
680
+ #: s2member/includes/classes/paypal-utilities.inc.php:376
681
msgctxt "s2member-front"
682
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
683
msgstr ""
684
685
+ #: s2member/includes/classes/paypal-utilities.inc.php:237
686
+ #: s2member/includes/classes/paypal-utilities.inc.php:373
687
msgctxt "s2member-front"
688
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
689
msgstr ""
703
#. ``$response["__error"]`` with
704
#. `ws_plugin__s2member_pro_authnet_arb_response`.
705
706
+ #: s2member/includes/classes/paypal-utilities.inc.php:317
707
+ #: s2member/includes/classes/paypal-utilities.inc.php:326
708
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
709
#: s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:319
710
msgctxt "s2member-front"
2466
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:580
2467
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:294
2468
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:617
2469
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:338
2470
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:671
2471
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:425
2472
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:853
2473
msgctxt "s2member-front"
2478
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:696
2479
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:456
2480
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:769
2481
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:510
2482
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:823
2483
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:687
2484
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1005
2485
msgctxt "s2member-front"
2496
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:486
2497
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:778
2498
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:799
2499
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:519
2500
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:540
2501
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:832
2502
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:853
2503
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:696
2504
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:717
2505
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1014
2514
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:717
2515
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:477
2516
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:790
2517
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:531
2518
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:844
2519
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:708
2520
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1026
2521
msgctxt "s2member-front"
2524
2525
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:737
2526
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:810
2527
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:864
2528
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1046
2529
#: s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:138
2530
msgctxt "s2member-front"
3595
3596
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:306
3597
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:629
3598
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:350
3599
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:683
3600
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:442
3601
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:865
3602
msgctxt "s2member-front"
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
- Version: 121201
4
- Stable tag: 121201
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
@@ -91,11 +91,16 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
91
92
== Upgrade Notice ==
93
94
- = v121201 =
95
Maintenance release. Upgrade immediately.
96
97
== Changelog ==
98
99
= v121201 =
100
* **(Maintenance Release) Upgrade immediately.**
101
* (s2Member / s2Member Pro) **Bug Fix**. Support Rep Cristián Lávaque found a bug in the behavior of s2Member’s Alternative View Restrictions, associated with Category listings in custom menu widgets. Fixed in this release. Discussed in [this thread](http://www.s2member.com/forums/topic/welcome-page-title-shows-but-no-content/page/2/#post-29802).
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
+ Version: 121204
4
+ Stable tag: 121204
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
91
92
== Upgrade Notice ==
93
94
+ = v121204 =
95
Maintenance release. Upgrade immediately.
96
97
== Changelog ==
98
99
+ = v121204 =
100
+ * **(Maintenance Release) Upgrade immediately.**
101
+ * (s2Member / s2Member Pro) **Bug Fix**. An issue with long billing agreement descriptions under PayPal® Pro (Payflow® Edition) accounts, when coupon codes were being used by customers, was addressed in this release. Symptoms of this bug were errors in s2Member® log files from the Payflow® API, with error code: ``11581-Profile description is invalid``. Caused by undocumented length requirements for the billing agreement description under the Payflow® API. Fixed in this release. Discussed in [this thread](http://www.s2member.com/forums/topic/error-generic-processor-error-11581/page/2/#post-33477).
102
+ * (s2Member / s2Member Pro) **Compatibility**. Updated JW Player code samples for compatibility with JW Player v6. Discussed in [this thread](http://www.s2member.com/forums/topic/jw-player-rtmp-streaming-mp4-amazon-s3/page/2/#post-32074).
103
+
104
= v121201 =
105
* **(Maintenance Release) Upgrade immediately.**
106
* (s2Member / s2Member Pro) **Bug Fix**. Support Rep Cristián Lávaque found a bug in the behavior of s2Member’s Alternative View Restrictions, associated with Category listings in custom menu widgets. Fixed in this release. Discussed in [this thread](http://www.s2member.com/forums/topic/welcome-page-title-shows-but-no-content/page/2/#post-29802).
s2member.php CHANGED
@@ -19,8 +19,8 @@
19
*/
20
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
21
22
- Version: 121201
23
- Stable tag: 121201
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", "121201" /* !#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", "121201" /* !#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: 121204
23
+ Stable tag: 121204
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", "121204" /* !#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", "121204" /* !#distro-version#! */);
109
/*
110
Several compatibility checks.
111
If all pass, load the s2Member plugin.