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]+$/", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_DESC$/", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_NAME[0-9]+$/", $key) #
262
+ || preg_match("/^L_BILLINGAGREEMENTDESCRIPTION[0-9]+$/", $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]+$/", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_DESC$/", $key) || preg_match("/^PAYMENTREQUEST_[0-9]+_NAME[0-9]+$/", $key) #
398
+ || preg_match("/^L_BILLINGAGREEMENTDESCRIPTION[0-9]+$/", $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.