Version Description
= v130123 = Maintenance release. Upgrade immediately.
Download this release
Release Info
Developer | PriMoThemes |
Plugin | s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) |
Version | 130123 |
Comparing to | |
See all releases |
Code changes from version 130121 to 130123
- checksum.txt +1 -1
- images/brand-kb.png +0 -0
- images/brand-kb.pspimage +0 -0
- includes/classes/menu-pages-rs.inc.php +7 -0
- includes/classes/sc-files-in.inc.php +4 -1
- includes/menu-pages/api-ops.inc.php +9 -0
- includes/menu-pages/down-ops.inc.php +4 -1
- includes/menu-pages/gen-ops.inc.php +1 -0
- includes/menu-pages/menu-pages-min.css +1 -0
- includes/menu-pages/menu-pages.css +2 -0
- includes/menu-pages/paypal-ops.inc.php +2 -1
- includes/syscon.inc.php +1 -1
- includes/templates/players/jwplayer-v6-rtmp-only.php +4 -2
- includes/templates/players/jwplayer-v6-rtmp.php +4 -2
- includes/templates/players/jwplayer-v6.php +4 -2
- includes/translations/s2member.pot +1 -1
- readme.txt +13 -3
- s2member.php +4 -4
checksum.txt
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
2e812841193a58035113e349bc6a37c2
|
images/brand-kb.png
ADDED
Binary file
|
images/brand-kb.pspimage
ADDED
Binary file
|
includes/classes/menu-pages-rs.inc.php
CHANGED
@@ -75,6 +75,13 @@ if (!class_exists ("c_ws_plugin__s2member_menu_pages_rs"))
|
|
75 |
echo '</div>' . "\n";
|
76 |
}
|
77 |
/**/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["videos"])
|
79 |
{
|
80 |
echo '<div class="ws-menu-page-videos">' . "\n";
|
75 |
echo '</div>' . "\n";
|
76 |
}
|
77 |
/**/
|
78 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["kb"])
|
79 |
+
{
|
80 |
+
echo '<div class="ws-menu-page-kb">' . "\n";
|
81 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Knowledge Base")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-kb.png" alt="." /></a>' . "\n";
|
82 |
+
echo '</div>' . "\n";
|
83 |
+
}
|
84 |
+
/**/
|
85 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["videos"])
|
86 |
{
|
87 |
echo '<div class="ws-menu-page-videos">' . "\n";
|
includes/classes/sc-files-in.inc.php
CHANGED
@@ -102,7 +102,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
102 |
/**/
|
103 |
$attr = /* Force array; trim quote entities. */ c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
|
104 |
/**/
|
105 |
-
$attr = shortcode_atts(array("download" => "", "download_key" => "", "stream" => "yes", "inline" => "yes", "storage" => "", "remote" => "", "ssl" => "", "rewrite" => "yes", "rewrite_base" => "", "skip_confirmation" => "", "url_to_storage_source" => "yes", "count_against_user" => "yes", "check_user" => "yes", /* Shortcode-specifics
|
106 |
$attr["download"] = (!empty($attr["file_download"])) ? $attr["file_download"] : $attr["download"];
|
107 |
/**/
|
108 |
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
@@ -134,6 +134,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
134 |
/**/
|
135 |
$get = preg_replace("/%%player_id%%/", $attr["player_id"], $get);
|
136 |
$get = preg_replace("/%%player_path%%/", $attr["player_path"], $get);
|
|
|
137 |
/**/
|
138 |
$get = preg_replace("/%%player_image%%/", $attr["player_image"], $get);
|
139 |
$get = preg_replace("/%%player_title%%/", $attr["player_title"], $get);
|
@@ -150,6 +151,8 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
150 |
$get = preg_replace("/%%player_primary%%/", $attr["player_primary"], $get);
|
151 |
$get = preg_replace("/%%player_repeat%%/", ((filter_var($attr["player_repeat"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
152 |
$get = preg_replace("/%%player_startparam%%/", $attr["player_startparam"], $get);
|
|
|
|
|
153 |
}
|
154 |
}
|
155 |
}
|
102 |
/**/
|
103 |
$attr = /* Force array; trim quote entities. */ c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
|
104 |
/**/
|
105 |
+
$attr = shortcode_atts(array("download" => "", "download_key" => "", "stream" => "yes", "inline" => "yes", "storage" => "", "remote" => "", "ssl" => "", "rewrite" => "yes", "rewrite_base" => "", "skip_confirmation" => "", "url_to_storage_source" => "yes", "count_against_user" => "yes", "check_user" => "yes", /* Shortcode-specifics »» */ "file_download" => "", /* Configuration » */ "player" => "jwplayer-v6-rtmp", "player_id" => "s2-stream-".md5(uniqid("", TRUE)), "player_path" => "/jwplayer/jwplayer.js", "player_key" => "", "player_image" => "", "player_title" => "", /* Layout » */ "player_controls" => "yes", "player_height" => "270", "player_skin" => "", "player_stretching" => "uniform", "player_width" => "480", /* Playback » */ "player_autostart" => "no", "player_fallback" => "yes", "player_mute" => "no", "player_primary" => "flash", "player_repeat" => "no", "player_startparam" => "", /* Advanced option blocks » */ "player_option_blocks" => ""), $attr);
|
106 |
$attr["download"] = (!empty($attr["file_download"])) ? $attr["file_download"] : $attr["download"];
|
107 |
/**/
|
108 |
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
134 |
/**/
|
135 |
$get = preg_replace("/%%player_id%%/", $attr["player_id"], $get);
|
136 |
$get = preg_replace("/%%player_path%%/", $attr["player_path"], $get);
|
137 |
+
$get = preg_replace("/%%player_key%%/", $attr["player_key"], $get);
|
138 |
/**/
|
139 |
$get = preg_replace("/%%player_image%%/", $attr["player_image"], $get);
|
140 |
$get = preg_replace("/%%player_title%%/", $attr["player_title"], $get);
|
151 |
$get = preg_replace("/%%player_primary%%/", $attr["player_primary"], $get);
|
152 |
$get = preg_replace("/%%player_repeat%%/", ((filter_var($attr["player_repeat"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
153 |
$get = preg_replace("/%%player_startparam%%/", $attr["player_startparam"], $get);
|
154 |
+
/**/
|
155 |
+
$get = preg_replace("/%%player_option_blocks%%/", ((strpos($attr["player_option_blocks"], ":") !== false) ? $attr["player_option_blocks"] : base64_decode($attr["player_option_blocks"])), $get);
|
156 |
}
|
157 |
}
|
158 |
}
|
includes/menu-pages/api-ops.inc.php
CHANGED
@@ -56,6 +56,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
56 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever a new Subscription is created, you\'ll want to read this section. This is marked `Signup`, because the URLs that you list below, will be notified each time a "new", "paying" Member, signs up. Depending on your fee structure, this may include a first Initial Payment that establishes their Subscription, or it may not. This Notification will only be triggered once for each Member. Signup Notifications are sent right after a "new", "paying" Member, signs up successfully through your Payment Gateway, regardless of whether any money has actually been transacted initially. In other words, this Notification is triggered anytime a "new", "paying" Member, signs up through your Payment Gateway, even if you provided them with a 100% Free Trial Period <em>( e.g. no money is being transacted intially )</em>.</p>' . "\n";
|
57 |
echo '<p>This Notification will NOT be processed for Free Subscribers that register without going through your Payment Gateway at all. This Notification will NOT be processed when an "existing" User/Member pays for a new Subscription <em>( see: Modification Notifications for that scenario )</em>.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' And, this Notification will NOT be processed on Buy Now transactions for Independent Custom Capabilities <em>( see: Payment Notifications for that scenario )</em>.') . '</p>' . "\n";
|
58 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Signup Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
59 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_signup_notifications", get_defined_vars ());
|
60 |
/**/
|
61 |
echo '<table class="form-table">' . "\n";
|
@@ -147,6 +148,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
147 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever a "new" Member is created, you\'ll want to read this section. This is marked `Registration`, because the URLs that you list below, will be notified each time a "new" Member registers a Username. This is usually triggered right after a `Signup` Notification; at the point in which a "new" Member successfully completes the Registration form, and they are assigned a Username.</p>' . "\n";
|
148 |
echo '<p>This Notification is ALSO triggered whenever you create a "new" User inside your WordPress® Dashboard.</p>' . "\n";
|
149 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Registration Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
150 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_registration_notifications", get_defined_vars ());
|
151 |
/**/
|
152 |
echo '<table class="form-table">' . "\n";
|
@@ -248,6 +250,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
248 |
echo '<p>So, unlike the `Signup` Notification, `Payment` Notifications take place whenever actual payments are received, instead of just once after signup is completed. If a payment is required during signup <em>( i.e. no Free Trial is being offered )</em>, a Signup Notification will be triggered, and a Payment Notification will ALSO be triggered. In other words, a Payment Notification occurs anytime funds are received, no matter what.</p>' . "\n";
|
249 |
echo (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '<p>Payment Notifications are also triggered whenever a Buy Now purchase for Independent Custom Capabilities takes place.</p>' . "\n" : '';
|
250 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Payment Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
251 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_payment_notifications", get_defined_vars ());
|
252 |
/**/
|
253 |
echo '<table class="form-table">' . "\n";
|
@@ -353,6 +356,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
353 |
echo '<p>Modification Notifications are sent right after a Member signs up and/or modifies billing terms successfully through your Payment Gateway, regardless of whether any money has actually been transacted initially. In other words, this Notification is triggered, even if you provided them with a 100% Free Trial Period <em>( e.g. no money is being transacted intially )</em>.</p>' . "\n";
|
354 |
echo '<p>This Notification will NOT be processed for Free Subscribers that register without going through your Payment Gateway at all. This Notification will NOT be processed for "new" Users/Members <em>( see: Signup Notifications for that scenario )</em>.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' And, this Notification will NOT be processed for Independent Custom Capability purchases <em>( see: Payment Notifications for that scenario )</em>.') . '</p>' . "\n";
|
355 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Modification Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
356 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_modification_notifications", get_defined_vars ());
|
357 |
/**/
|
358 |
echo '<table class="form-table">' . "\n";
|
@@ -460,6 +464,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
460 |
echo '<p><em><strong>*Understanding Cancellations*</strong> It\'s important to realize that a Cancellation is not an EOT ( End Of Term ). All that happens during a Cancellation event, is that billing is stopped, and it\'s understood that the Customer is going to lose access, at some point in the future. This does NOT mean, that access will be revoked immediately. A separate EOT event will automatically handle a (demotion or deletion) later, at the appropriate time; which could be several days, or even a year after the Cancellation took place.</em></p>' . "\n";
|
461 |
echo '<p><em><strong>*Some Hairy Details*</strong> There might be times whenever you notice that a Member\'s Subscription has been cancelled through your Payment Gateway... but, s2Member continues allowing the User access to your site as a paid Member. Please don\'t be confused by this... in 99.9% of these cases, the reason for this is legitimate. s2Member will only remove the User\'s Membership privileges when an EOT ( End Of Term ) is processed, a refund occurs, a chargeback occurs, or when a cancellation occurs - which would later result in a delayed Auto-EOT by s2Member.</em></p>' . "\n";
|
462 |
echo '<p><em>s2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect.</em></p>' . "\n";
|
|
|
463 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_cancellation_notifications", get_defined_vars ());
|
464 |
/**/
|
465 |
echo '<table class="form-table">' . "\n";
|
@@ -561,6 +566,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
561 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These EOT/Deletion Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
562 |
echo '<p><em><strong>*Some Hairy Details*</strong> There might be times whenever you notice that a Member\'s Subscription has been cancelled through your Payment Gateway... but, s2Member continues allowing the User access to your site as a paid Member. Please don\'t be confused by this... in 99.9% of these cases, the reason for this is legitimate. s2Member will only remove the User\'s Membership privileges when an EOT ( End Of Term ) is processed, a refund occurs, a chargeback occurs, or when a cancellation occurs - which would later result in a delayed Auto-EOT by s2Member.</em></p>' . "\n";
|
563 |
echo '<p><em>s2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect.</em></p>' . "\n";
|
|
|
564 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_eot_deletion_notifications", get_defined_vars ());
|
565 |
/**/
|
566 |
echo '<table class="form-table">' . "\n";
|
@@ -659,6 +665,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
659 |
echo '<p>This is very similar to the EOT/Deletion Notification described above. However, there is an important distinction. The all-inclusive EOT/Deletion Notification includes cancellations, expirations, failed payments, refunds, chargebacks, and even manual deletions by the Administrator from within the Dashboard. In other words, EOT/Deletion Notifications are processed ANY time a deletion or End Of Term action takes place. This API Notification, that is, Refund/Reversal Notifications, do NOT include all of those scenarios.</p>' . "\n";
|
660 |
echo '<p>So the distinction is that Refund/Reversal Notifications are ONLY sent under two specific circumstances: 1. You log into your Payment Gateway and refund a payment that is associated with a Subscription. 2. The Customer complains to your Payment Gateway and a chargeback occurs, forcing a Reversal. In both of these cases, an EOT/Deletion Notification will be sent <em>( as described in the previous section )</em>, but since EOT/Deletion is a broader Notification, these Refund/Reversal Notifications are here so you can nail down specific back-office operations in these two specific scenarios.</p>' . "\n";
|
661 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Refund/Reversal Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
662 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_refund_reversal_notifications", get_defined_vars ());
|
663 |
/**/
|
664 |
echo '<table class="form-table">' . "\n";
|
@@ -759,6 +766,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
759 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever Specific Post/Page sales take place, you\'ll want to read this section. This is marked `Specific Post/Page`, because the URLs that you list below, will be notified each time a payment occurs, on a sale providing access to a Specific Post/Page.</p>' . "\n";
|
760 |
echo '<p>This is one of only two API Notifications that are sent for Specific Post/Page Access <em>( i.e. this one, and another below, for Refunds/Reversals )</em>. All of the other API Notifications are designed for Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and Independent Custom Capabilities') . '. None of the other API Notifications will ever be processed for Specific Post/Page Access. If you intend to respond to events related to Specific Post/Page Access, you MUST use one of the two API Notifications specifically geared to Post/Page Access.</p>' . "\n";
|
761 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Sale Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
762 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_sp_sale_notifications", get_defined_vars ());
|
763 |
/**/
|
764 |
echo '<table class="form-table">' . "\n";
|
@@ -850,6 +858,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
850 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever sales have been refunded or reversed <em>( i.e. charged back to you )</em>, you\'ll want to read this section. This is marked `Specific Post/Page`, because the URLs that you list below, will be notified each time a Refund or Reversal occurs, on a sale that provided access to a Specific Post/Page.</p>' . "\n";
|
851 |
echo '<p>This is one of only two Notifications that are sent for Specific Post/Page Access <em>( i.e. this one, and another above, for Sales )</em>. All of the other API Notifications are designed for Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and Independent Custom Capabilities') . '. None of the other API Notifications will ever be processed for Specific Post/Page Access. If you intend to respond to events related to Specific Post/Page Access, you MUST use one of the two API Notifications specifically geared to Post/Page Access.</p>' . "\n";
|
852 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Refund/Reversal Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
|
|
853 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_sp_refund_reversal_notifications", get_defined_vars ());
|
854 |
/**/
|
855 |
echo '<table class="form-table">' . "\n";
|
56 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever a new Subscription is created, you\'ll want to read this section. This is marked `Signup`, because the URLs that you list below, will be notified each time a "new", "paying" Member, signs up. Depending on your fee structure, this may include a first Initial Payment that establishes their Subscription, or it may not. This Notification will only be triggered once for each Member. Signup Notifications are sent right after a "new", "paying" Member, signs up successfully through your Payment Gateway, regardless of whether any money has actually been transacted initially. In other words, this Notification is triggered anytime a "new", "paying" Member, signs up through your Payment Gateway, even if you provided them with a 100% Free Trial Period <em>( e.g. no money is being transacted intially )</em>.</p>' . "\n";
|
57 |
echo '<p>This Notification will NOT be processed for Free Subscribers that register without going through your Payment Gateway at all. This Notification will NOT be processed when an "existing" User/Member pays for a new Subscription <em>( see: Modification Notifications for that scenario )</em>.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' And, this Notification will NOT be processed on Buy Now transactions for Independent Custom Capabilities <em>( see: Payment Notifications for that scenario )</em>.') . '</p>' . "\n";
|
58 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Signup Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
59 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
60 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_signup_notifications", get_defined_vars ());
|
61 |
/**/
|
62 |
echo '<table class="form-table">' . "\n";
|
148 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever a "new" Member is created, you\'ll want to read this section. This is marked `Registration`, because the URLs that you list below, will be notified each time a "new" Member registers a Username. This is usually triggered right after a `Signup` Notification; at the point in which a "new" Member successfully completes the Registration form, and they are assigned a Username.</p>' . "\n";
|
149 |
echo '<p>This Notification is ALSO triggered whenever you create a "new" User inside your WordPress® Dashboard.</p>' . "\n";
|
150 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Registration Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
151 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
152 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_registration_notifications", get_defined_vars ());
|
153 |
/**/
|
154 |
echo '<table class="form-table">' . "\n";
|
250 |
echo '<p>So, unlike the `Signup` Notification, `Payment` Notifications take place whenever actual payments are received, instead of just once after signup is completed. If a payment is required during signup <em>( i.e. no Free Trial is being offered )</em>, a Signup Notification will be triggered, and a Payment Notification will ALSO be triggered. In other words, a Payment Notification occurs anytime funds are received, no matter what.</p>' . "\n";
|
251 |
echo (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '<p>Payment Notifications are also triggered whenever a Buy Now purchase for Independent Custom Capabilities takes place.</p>' . "\n" : '';
|
252 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Payment Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
253 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
254 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_payment_notifications", get_defined_vars ());
|
255 |
/**/
|
256 |
echo '<table class="form-table">' . "\n";
|
356 |
echo '<p>Modification Notifications are sent right after a Member signs up and/or modifies billing terms successfully through your Payment Gateway, regardless of whether any money has actually been transacted initially. In other words, this Notification is triggered, even if you provided them with a 100% Free Trial Period <em>( e.g. no money is being transacted intially )</em>.</p>' . "\n";
|
357 |
echo '<p>This Notification will NOT be processed for Free Subscribers that register without going through your Payment Gateway at all. This Notification will NOT be processed for "new" Users/Members <em>( see: Signup Notifications for that scenario )</em>.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' And, this Notification will NOT be processed for Independent Custom Capability purchases <em>( see: Payment Notifications for that scenario )</em>.') . '</p>' . "\n";
|
358 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Modification Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
359 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
360 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_modification_notifications", get_defined_vars ());
|
361 |
/**/
|
362 |
echo '<table class="form-table">' . "\n";
|
464 |
echo '<p><em><strong>*Understanding Cancellations*</strong> It\'s important to realize that a Cancellation is not an EOT ( End Of Term ). All that happens during a Cancellation event, is that billing is stopped, and it\'s understood that the Customer is going to lose access, at some point in the future. This does NOT mean, that access will be revoked immediately. A separate EOT event will automatically handle a (demotion or deletion) later, at the appropriate time; which could be several days, or even a year after the Cancellation took place.</em></p>' . "\n";
|
465 |
echo '<p><em><strong>*Some Hairy Details*</strong> There might be times whenever you notice that a Member\'s Subscription has been cancelled through your Payment Gateway... but, s2Member continues allowing the User access to your site as a paid Member. Please don\'t be confused by this... in 99.9% of these cases, the reason for this is legitimate. s2Member will only remove the User\'s Membership privileges when an EOT ( End Of Term ) is processed, a refund occurs, a chargeback occurs, or when a cancellation occurs - which would later result in a delayed Auto-EOT by s2Member.</em></p>' . "\n";
|
466 |
echo '<p><em>s2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect.</em></p>' . "\n";
|
467 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
468 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_cancellation_notifications", get_defined_vars ());
|
469 |
/**/
|
470 |
echo '<table class="form-table">' . "\n";
|
566 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These EOT/Deletion Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
567 |
echo '<p><em><strong>*Some Hairy Details*</strong> There might be times whenever you notice that a Member\'s Subscription has been cancelled through your Payment Gateway... but, s2Member continues allowing the User access to your site as a paid Member. Please don\'t be confused by this... in 99.9% of these cases, the reason for this is legitimate. s2Member will only remove the User\'s Membership privileges when an EOT ( End Of Term ) is processed, a refund occurs, a chargeback occurs, or when a cancellation occurs - which would later result in a delayed Auto-EOT by s2Member.</em></p>' . "\n";
|
568 |
echo '<p><em>s2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect.</em></p>' . "\n";
|
569 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
570 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_eot_deletion_notifications", get_defined_vars ());
|
571 |
/**/
|
572 |
echo '<table class="form-table">' . "\n";
|
665 |
echo '<p>This is very similar to the EOT/Deletion Notification described above. However, there is an important distinction. The all-inclusive EOT/Deletion Notification includes cancellations, expirations, failed payments, refunds, chargebacks, and even manual deletions by the Administrator from within the Dashboard. In other words, EOT/Deletion Notifications are processed ANY time a deletion or End Of Term action takes place. This API Notification, that is, Refund/Reversal Notifications, do NOT include all of those scenarios.</p>' . "\n";
|
666 |
echo '<p>So the distinction is that Refund/Reversal Notifications are ONLY sent under two specific circumstances: 1. You log into your Payment Gateway and refund a payment that is associated with a Subscription. 2. The Customer complains to your Payment Gateway and a chargeback occurs, forcing a Reversal. In both of these cases, an EOT/Deletion Notification will be sent <em>( as described in the previous section )</em>, but since EOT/Deletion is a broader Notification, these Refund/Reversal Notifications are here so you can nail down specific back-office operations in these two specific scenarios.</p>' . "\n";
|
667 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Refund/Reversal Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
668 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
669 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_refund_reversal_notifications", get_defined_vars ());
|
670 |
/**/
|
671 |
echo '<table class="form-table">' . "\n";
|
766 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever Specific Post/Page sales take place, you\'ll want to read this section. This is marked `Specific Post/Page`, because the URLs that you list below, will be notified each time a payment occurs, on a sale providing access to a Specific Post/Page.</p>' . "\n";
|
767 |
echo '<p>This is one of only two API Notifications that are sent for Specific Post/Page Access <em>( i.e. this one, and another below, for Refunds/Reversals )</em>. All of the other API Notifications are designed for Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and Independent Custom Capabilities') . '. None of the other API Notifications will ever be processed for Specific Post/Page Access. If you intend to respond to events related to Specific Post/Page Access, you MUST use one of the two API Notifications specifically geared to Post/Page Access.</p>' . "\n";
|
768 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Sale Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
769 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
770 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_sp_sale_notifications", get_defined_vars ());
|
771 |
/**/
|
772 |
echo '<table class="form-table">' . "\n";
|
858 |
echo '<p>If you use affiliate software, or have back-office routines that need to be notified whenever sales have been refunded or reversed <em>( i.e. charged back to you )</em>, you\'ll want to read this section. This is marked `Specific Post/Page`, because the URLs that you list below, will be notified each time a Refund or Reversal occurs, on a sale that provided access to a Specific Post/Page.</p>' . "\n";
|
859 |
echo '<p>This is one of only two Notifications that are sent for Specific Post/Page Access <em>( i.e. this one, and another above, for Sales )</em>. All of the other API Notifications are designed for Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and Independent Custom Capabilities') . '. None of the other API Notifications will ever be processed for Specific Post/Page Access. If you intend to respond to events related to Specific Post/Page Access, you MUST use one of the two API Notifications specifically geared to Post/Page Access.</p>' . "\n";
|
860 |
echo '<p>Please note, this feature is not to be confused with the PayPal® IPN service. PayPal® IPN <em>( and other service integrations )</em> are already built into s2Member. They remain active at all times. These Refund/Reversal Notifications are an added layer of functionality, and they are completely optional.</p>' . "\n";
|
861 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/building-an-api-notification-handler/" target="_blank" rel="external">Building An API Notification Handler</a>.</p>'."\n";
|
862 |
do_action ("ws_plugin__s2member_during_api_ops_page_during_left_sections_during_sp_refund_reversal_notifications", get_defined_vars ());
|
863 |
/**/
|
864 |
echo '<table class="form-table">' . "\n";
|
includes/menu-pages/down-ops.inc.php
CHANGED
@@ -488,6 +488,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
488 |
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";
|
489 |
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";
|
490 |
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";
|
|
|
491 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_rtmp_streaming", get_defined_vars());
|
492 |
/**/
|
493 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
@@ -647,6 +648,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
647 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
648 |
/**/
|
649 |
echo '<h4 style="margin:0;">Additional <code>[s2Stream /]</code> Shortcode Attributes:</h4>'."\n";
|
|
|
650 |
echo '<p style="margin:0;"><strong>See also:</strong> API Function <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-functions/#src_doc_s2member_file_download_url()" target="_blank" rel="external">s2member_file_download_url()</a> for PHP integration.</p>'."\n";
|
651 |
echo '<table class="form-table" style="margin-top:0;">'."\n";
|
652 |
echo '<tbody>'."\n";
|
@@ -658,7 +660,8 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
658 |
echo '<li><code>player="jwplayer-v6-rtmp"</code> Required. Current supported players in this Shortcode include: <code>jwplayer-v6</code> (works with any audio/video file, and you do NOT need to have Amazon® S3 or CloudFront™ integrated for this to work), <code>jwplayer-v6-rtmp</code> (streams with the RTMP protocol, plus there is a full download fallback of the source file if streaming is not possible on a particular device; this requires both Amazon® S3 and CloudFront™ integration), <code>jwplayer-v6-rtmp-only</code> (streams with the RTMP protocol only, with no access to the source file, only to the RTMP stream; this requires both Amazon® S3 and CloudFront™ integration).</li>'."\n";
|
659 |
echo '<li><code>player_id=""</code> Optional. HTML div ID for the audio/video player. Defaults to a unique ID generated by s2Member® for each instance of your Shortcode.</li>'."\n";
|
660 |
echo '<li><code>player_path="/jwplayer/jwplayer.js"</code> Required. Path to the player\'s JavaScript file (ex: <code>/jwplayer/jwplayer.js</code> — you should upload the <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">/jwplayer</a> folder to the root of your web directory).</li>'."\n";
|
661 |
-
echo '<li><code>player_[setting]=""</code> Optional. Any additional attributes supported by your audio/video player, prefixed with <code>player_</code>. For JW Player™ v6, see <a href="http://www.longtailvideo.com/support/jw-player/28839/embedding-the-player" target="_blank" rel="external">this article please</a>. Examples: <code>player_width="480"</code>, <code>player_height="270"</code>, <code>player_image="http://www.example.com/wp-content/uploads/video-preview.jpg"</code>, <code>player_autostart="true"</code>, <code>player_skin="/jwplayer/my-skin.xml"</code>. Please note that "Advanced Options Blocks" listed on <a href="http://www.longtailvideo.com/support/jw-player/28839/embedding-the-player" target="_blank" rel="external">this page</a> are
|
|
|
662 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_shortcode_attrs_s2stream_lis", get_defined_vars());
|
663 |
echo '</ul>'."\n";
|
664 |
echo '</td>'."\n";
|
488 |
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";
|
489 |
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";
|
490 |
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";
|
491 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player® w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
|
492 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_rtmp_streaming", get_defined_vars());
|
493 |
/**/
|
494 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
648 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
649 |
/**/
|
650 |
echo '<h4 style="margin:0;">Additional <code>[s2Stream /]</code> Shortcode Attributes:</h4>'."\n";
|
651 |
+
echo '<p style="margin:0;"><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player® w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
|
652 |
echo '<p style="margin:0;"><strong>See also:</strong> API Function <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-functions/#src_doc_s2member_file_download_url()" target="_blank" rel="external">s2member_file_download_url()</a> for PHP integration.</p>'."\n";
|
653 |
echo '<table class="form-table" style="margin-top:0;">'."\n";
|
654 |
echo '<tbody>'."\n";
|
660 |
echo '<li><code>player="jwplayer-v6-rtmp"</code> Required. Current supported players in this Shortcode include: <code>jwplayer-v6</code> (works with any audio/video file, and you do NOT need to have Amazon® S3 or CloudFront™ integrated for this to work), <code>jwplayer-v6-rtmp</code> (streams with the RTMP protocol, plus there is a full download fallback of the source file if streaming is not possible on a particular device; this requires both Amazon® S3 and CloudFront™ integration), <code>jwplayer-v6-rtmp-only</code> (streams with the RTMP protocol only, with no access to the source file, only to the RTMP stream; this requires both Amazon® S3 and CloudFront™ integration).</li>'."\n";
|
661 |
echo '<li><code>player_id=""</code> Optional. HTML div ID for the audio/video player. Defaults to a unique ID generated by s2Member® for each instance of your Shortcode.</li>'."\n";
|
662 |
echo '<li><code>player_path="/jwplayer/jwplayer.js"</code> Required. Path to the player\'s JavaScript file (ex: <code>/jwplayer/jwplayer.js</code> — you should upload the <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">/jwplayer</a> folder to the root of your web directory).</li>'."\n";
|
663 |
+
echo '<li><code>player_[setting]=""</code> Optional. Any additional configuration attributes supported by your audio/video player, prefixed with <code>player_</code>. For JW Player™ v6, see <a href="http://www.longtailvideo.com/support/jw-player/28839/embedding-the-player" target="_blank" rel="external">this article please</a>. Examples: <code>player_width="480"</code>, <code>player_height="270"</code>, <code>player_image="http://www.example.com/wp-content/uploads/video-preview.jpg"</code>, <code>player_autostart="true"</code>, <code>player_skin="/jwplayer/my-skin.xml"</code>, <code>player_key="my-license-key"</code>. Please note that "Advanced Options Blocks" listed on <a href="http://www.longtailvideo.com/support/jw-player/28839/embedding-the-player" target="_blank" rel="external">this page</a> are NOT supported here. For those, please use: <code>player_option_blocks=""</code>.</li>'."\n";
|
664 |
+
echo '<li><code>player_option_blocks=""</code> Optional. Any "Advanced Option Blocks" supported by your audio/video player. For JW Player™ v6, see <a href="http://www.longtailvideo.com/support/jw-player/28839/embedding-the-player" target="_blank" rel="external">this article please</a>. Here are some examples: <code>player_option_blocks="sharing:{}"</code>, <code>player_option_blocks="sharing:{}, logo: {file: \'/logo.png\', link: \'http://example.com\'}"</code>. Or: <code>player_option_blocks="c2hhcmluZzoge30="</code> (base64 encoded version of <code>sharing: {}</code>). Please note that "Advanced Options Blocks" can be defined in plain text or with a <a href="http://www.base64encode.org/" target="_blank" rel="external">base64 encoded string</a>. Advanced Option Blocks are JavaScript objects with properties. If you have trouble defining JavaScript object properties inside a Shortcode Attribute, please use <a href="http://www.base64encode.org/" target="_blank" rel="external">this tool</a> to base64 encode your Advanced Option Blocks, so that you end up with a string that\'s compatible with Shortcode Attributes.</li>'."\n";
|
665 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_shortcode_attrs_s2stream_lis", get_defined_vars());
|
666 |
echo '</ul>'."\n";
|
667 |
echo '</td>'."\n";
|
includes/menu-pages/gen-ops.inc.php
CHANGED
@@ -1122,6 +1122,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
1122 |
echo '<p>Please create and/or choose an existing Page to use as the first page Members will see after logging in.</p>' . "\n";
|
1123 |
echo (c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '<p><em><strong>BuddyPress:</strong> s2Member integrates with BuddyPress. Your Login Welcome Page affects BuddyPress too.</em></p>' . "\n" : '';
|
1124 |
echo '<p><em><strong>*Tip*</strong> This special Page will be protected from public access ( automatically ) by s2Member.</em></p>' . "\n";
|
|
|
1125 |
do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_login_welcome_page", get_defined_vars ());
|
1126 |
/**/
|
1127 |
echo '<table class="form-table">' . "\n";
|
1122 |
echo '<p>Please create and/or choose an existing Page to use as the first page Members will see after logging in.</p>' . "\n";
|
1123 |
echo (c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? '<p><em><strong>BuddyPress:</strong> s2Member integrates with BuddyPress. Your Login Welcome Page affects BuddyPress too.</em></p>' . "\n" : '';
|
1124 |
echo '<p><em><strong>*Tip*</strong> This special Page will be protected from public access ( automatically ) by s2Member.</em></p>' . "\n";
|
1125 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/customizing-your-lwp/" target="_blank" rel="external">Customizing Your Login Welcome Page</a>.</p>'."\n";
|
1126 |
do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_login_welcome_page", get_defined_vars ());
|
1127 |
/**/
|
1128 |
echo '<table class="form-table">' . "\n";
|
includes/menu-pages/menu-pages-min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
div.ws-menu-page{min-width:800px;margin-bottom:20px;background:url('<?php echo $i;?>/brand-bg.png') no-repeat top right;}div.ws-menu-page a.ws-dotted-link{text-decoration:none;border-bottom:1px dotted;}div.ws-menu-page>h2{margin-bottom:15px;}div.ws-menu-page .ws-menu-page-right{float:right;margin-left:25px;}div.ws-menu-page .ws-menu-page-left{float:left;margin-right:25px;}div.ws-menu-page .ws-menu-page-center{display:block;margin-left:auto;margin-right:auto;}div.ws-menu-page div.ws-menu-page-hr{height:1px;line-height:1px;background:#DDD;margin:20px 0 20px 0;}div.ws-menu-page .ws-menu-page-hilite{font-size:102%;background:#FAF9BB;}div.ws-menu-page .ws-menu-page-error{color:#C00;}div.ws-menu-page .ws-menu-page-error-hilite{color:#FFF;background:#F00;}div.ws-menu-page img.ws-menu-page-img-16{border:0;width:16px;height:16px;}div.ws-menu-page img.ws-menu-page-img-24{border:0;width:24px;height:24px;}div.ws-menu-page img.ws-menu-page-img-32{border:0;width:32px;height:32px;}div.ws-menu-page img.ws-menu-page-img-48{border:0;width:48px;height:48px;}div.ws-menu-page img.ws-menu-page-img-64{border:0;width:64px;height:64px;}div.ws-menu-page img.ws-menu-page-img-128{border:0;width:128px;height:128px;}div.ws-menu-page img.ws-menu-page-img-200{border:0;width:200px;height:200px;}div.ws-menu-page img.ws-menu-page-img-256{border:0;width:256px;height:256px;}div.ws-menu-page img.ws-menu-page-img-200-auto{border:0;width:200px;height:auto;}div.ws-menu-page img.ws-menu-page-img-256-auto{border:0;width:256px;height:auto;}table.ws-menu-page-table{border:0;width:100%;}table.ws-menu-page-table ul,table.ws-menu-page-table ol{margin:10px 0 10px 20px;}table.ws-menu-page-table ul>li{list-style:disc outside;}table.ws-menu-page-table ol>li{list-style:decimal outside;}table.ws-menu-page-table>tbody>tr{vertical-align:top;}table.ws-menu-page-table td.ws-menu-page-table-l{padding:0;width:100%;}table.ws-menu-page-table td.ws-menu-page-table-r{padding:0;width:auto;}table.ws-menu-page-table img.ws-menu-page-brand-icon{border:0;float:right;width:128px;height:128px;margin:0 0 0 25px;vertical-align:middle;}table.ws-menu-page-table img.ws-menu-page-brand-updates{border:0;float:right;width:155px;height:40px;margin:0 -153px 0 25px;vertical-align:middle;}table.ws-menu-page-table p.submit{margin:0;padding:0;}table.ws-menu-page-table a[rel ~= "external"]{padding-right:18px;background:url('<?php echo $i;?>/brand-xlink.png') no-repeat center right;}table.ws-menu-page-table div.ws-menu-page-groups-show,table.ws-menu-page-table div.ws-menu-page-groups-hide{float:right;height:24px;width:24px;color:#333;padding:10px;cursor:pointer;font-size:28px;font-weight:bold;line-height:24px;text-align:center;background:#FFF;margin:0 0 0 20px;vertical-align:middle;font-family:monospace;border:1px solid #666;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-user-select:none;-webkit-user-select:none;user-select:none;}table.ws-menu-page-table div.ws-menu-page-groups-hide{color:#999;border-color:#999;}table.ws-menu-page-table div.ws-menu-page-group-header,table.ws-menu-page-table div.ws-menu-page-r-group-header{height:24px;color:#666;padding:10px;cursor:pointer;font-size:19px;line-height:24px;position:relative;background:#FFF;margin:30px 0 30px 0;vertical-align:middle;font-family:'Georgia',serif;border:1px solid #CCC;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-user-select:none;-webkit-user-select:none;user-select:none;}table.ws-menu-page-table div.ws-menu-page-group-header>ins,table.ws-menu-page-table div.ws-menu-page-r-group-header>ins{padding:0;width:22px;height:22px;color:#CCC;font-size:22px;line-height:22px;font-weight:bold;text-align:center;margin:0 10px 0 0;background:#666;text-decoration:none;font-family:monospace;vertical-align:text-top;border:1px solid transparent;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;display:inline-block;zoom:1!ie<8;display:inline!ie<8;margin-top:0!ie<8;}table.ws-menu-page-table div.ws-menu-page-group-header:hover,table.ws-menu-page-table div.ws-menu-page-group-header.open,table.ws-menu-page-table div.ws-menu-page-r-group-header:hover,table.ws-menu-page-table div.ws-menu-page-r-group-header.open{color:#164A61;border-color:#666;}table.ws-menu-page-table div.ws-menu-page-group-header:hover>ins,table.ws-menu-page-table div.ws-menu-page-group-header.open>ins,table.ws-menu-page-table div.ws-menu-page-r-group-header:hover>ins,table.ws-menu-page-table div.ws-menu-page-r-group-header.open>ins{color:#FFF;background:#164A61;}table.ws-menu-page-table div.ws-menu-page-group,table.ws-menu-page-table div.ws-menu-page-r-group{display:none;margin:-35px 5px 0 5px;padding:20px 10px 10px 10px;border:1px solid #CCC;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background:#FFF url('<?php echo $i;?>/brand-gradient-bg.png') repeat-x;}table.ws-menu-page-table div.ws-menu-page-group>div.ws-menu-page-hr,table.ws-menu-page-table div.ws-menu-page-r-group>div.ws-menu-page-hr{background:#666;margin:15px 0 15px 0;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr{vertical-align:top;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>th{width:auto;color:#164A61;font-size:115%;padding:10px 10px 0 0;font-family:'Georgia',serif;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td{width:auto;padding:8px 10px 8px 0;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>th.ws-menu-page-th-side{width:200px;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>input[type = "text"],table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>input[type = "password"],table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>textarea,table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>select{width:100%;width:98%!ie<8;box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>select{width:99.5%!ie<8;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>textarea{font-family:'Courier New',monospace;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>input[type = "checkbox"],table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>input[type = "radio"]{margin-right:3px;vertical-align:middle;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>input[type = "button"].ws-menu-page-media-btn{float:left;margin:5px 25px 0 0;}table.ws-menu-page-table div.ws-menu-page-group table.form-table>tbody>tr>td>div.ws-menu-page-scrollbox{margin:1px;padding:5px;height:150px;overflow-y:scroll;overflow-x:visible;background:#FFF;border:1px solid #CCC;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}div.ws-menu-page-readme>div.readme>div.section{margin:0 0 20px 0;padding:0 0 20px 0;border:0 solid #DDD;border-width:0 0 1px 0;}div.ws-menu-page-readme>div.readme>div.section>h2{margin-top:0;padding-top:0;font-size:150%;}div.ws-menu-page-readme>div.readme>div.section>div.content ul,div.ws-menu-page-readme>div.readme>div.section>div.content ol{padding:0;margin:10px 0 0 25px;}div.ws-menu-page-readme>div.readme>div.section>div.content ul>li{list-style:disc outside;}div.ws-menu-page-readme>div.readme>div.section>div.content ol>li{list-style:decimal outside;}td.ws-menu-page-table-r div.ws-menu-page-js-c-w,td.ws-menu-page-table-r div.ws-menu-page-updates,td.ws-menu-page-table-r div.ws-menu-page-installation,td.ws-menu-page-table-r div.ws-menu-page-tools,td.ws-menu-page-table-r div.ws-menu-page-kb,td.ws-menu-page-table-r div.ws-menu-page-videos,td.ws-menu-page-table-r div.ws-menu-page-support,td.ws-menu-page-table-r div.ws-menu-page-donations,td.ws-menu-page-table-r div.ws-menu-page-others{width:200px;margin:0 0 25px 25px;}td.ws-menu-page-table-r div.ws-menu-page-installation img,td.ws-menu-page-table-r div.ws-menu-page-tools img,td.ws-menu-page-table-r div.ws-menu-page-kb img,td.ws-menu-page-table-r div.ws-menu-page-videos img,td.ws-menu-page-table-r div.ws-menu-page-support img,td.ws-menu-page-table-r div.ws-menu-page-donations img,td.ws-menu-page-table-r div.ws-menu-page-others img{border:0;width:200px;height:auto;}td.ws-menu-page-table-r div.ws-menu-page-js-c-w{width:178px;padding:10px;background:#FFF5F7;text-align:justify;border:1px solid #FA4D4D;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}div.ws-menu-page-updates ul{padding:0;margin:0 0 0 12px;}div.ws-menu-page-updates ul>li{padding:0;margin:5px 0 5px 0;list-style:square outside;-moz-user-select:none;-webkit-user-select:none;user-select:none;}div.ws-menu-page-updates ul>li:first-child{margin-top:0;}div.ws-menu-page-updates a[target = "_blank"]{padding-right:18px;background:url('<?php echo $i;?>/brand-xlink.png') no-repeat center right;}div.ws-menu-page-updates div#creditfooter{display:none;}div.ws-menu-page-updates div#ws-updates-div-fname,div.ws-menu-page-updates div#ws-updates-div-lname,div.ws-menu-page-updates div#ws-updates-div-email,div.ws-menu-page-updates div#ws-updates-div-subs,div.ws-menu-page-updates div#ws-updates-div-priv{margin:0 0 10px 0;}div.ws-menu-page-updates div#ws-updates-div-subs{margin:15px 0 0 0;}div.ws-menu-page-updates div#ws-updates-div-priv{font-size:80%;margin:0 0 5px 0;}div.ws-menu-page-updates input[type = "text"],div.ws-menu-page-updates input[type = "password"],div.ws-menu-page-updates input[type = "submit"],div.ws-menu-page-updates textarea,div.ws-menu-page-updates select{width:100%;width:98%!ie<8;box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}div.ws-menu-page-updates input[type = "checkbox"],div.ws-menu-page-updates input[type = "radio"]{margin-right:3px;vertical-align:middle;}div.ws-menu-page-updates input[type = "submit"]{width:100%!ie<8;}div.ws-menu-page-updates select{width:99.5%!ie<8;}
|
includes/menu-pages/menu-pages.css
CHANGED
@@ -409,6 +409,7 @@ td.ws-menu-page-table-r div.ws-menu-page-js-c-w,
|
|
409 |
td.ws-menu-page-table-r div.ws-menu-page-updates,
|
410 |
td.ws-menu-page-table-r div.ws-menu-page-installation,
|
411 |
td.ws-menu-page-table-r div.ws-menu-page-tools,
|
|
|
412 |
td.ws-menu-page-table-r div.ws-menu-page-videos,
|
413 |
td.ws-menu-page-table-r div.ws-menu-page-support,
|
414 |
td.ws-menu-page-table-r div.ws-menu-page-donations,
|
@@ -419,6 +420,7 @@ td.ws-menu-page-table-r div.ws-menu-page-others
|
|
419 |
}
|
420 |
td.ws-menu-page-table-r div.ws-menu-page-installation img,
|
421 |
td.ws-menu-page-table-r div.ws-menu-page-tools img,
|
|
|
422 |
td.ws-menu-page-table-r div.ws-menu-page-videos img,
|
423 |
td.ws-menu-page-table-r div.ws-menu-page-support img,
|
424 |
td.ws-menu-page-table-r div.ws-menu-page-donations img,
|
409 |
td.ws-menu-page-table-r div.ws-menu-page-updates,
|
410 |
td.ws-menu-page-table-r div.ws-menu-page-installation,
|
411 |
td.ws-menu-page-table-r div.ws-menu-page-tools,
|
412 |
+
td.ws-menu-page-table-r div.ws-menu-page-kb,
|
413 |
td.ws-menu-page-table-r div.ws-menu-page-videos,
|
414 |
td.ws-menu-page-table-r div.ws-menu-page-support,
|
415 |
td.ws-menu-page-table-r div.ws-menu-page-donations,
|
420 |
}
|
421 |
td.ws-menu-page-table-r div.ws-menu-page-installation img,
|
422 |
td.ws-menu-page-table-r div.ws-menu-page-tools img,
|
423 |
+
td.ws-menu-page-table-r div.ws-menu-page-kb img,
|
424 |
td.ws-menu-page-table-r div.ws-menu-page-videos img,
|
425 |
td.ws-menu-page-table-r div.ws-menu-page-support img,
|
426 |
td.ws-menu-page-table-r div.ws-menu-page-donations img,
|
includes/menu-pages/paypal-ops.inc.php
CHANGED
@@ -54,7 +54,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
54 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-paypal-account-details-section">'."\n";
|
55 |
echo '<a href="http://www.s2member.com/paypal" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/paypal-logo.png" class="ws-menu-page-right" style="width:125px; height:125px; border:0;" alt="." /></a>'."\n";
|
56 |
echo '<h3>PayPal® Account Details ( required, if using PayPal® )</h3>'."\n";
|
57 |
-
echo '<p>This plugin works in conjunction with <a href="http://www.s2member.com/paypal" target="_blank" rel="external">PayPal® Website Payments Standard</a>, for businesses. You do NOT need a PayPal® Pro account. You just need to upgrade your Personal PayPal® account to a Business status, which is free. A PayPal® account can be <a href="http://pages.ebay.com/help/buy/questions/upgrade-paypal-account.html" target="_blank" rel="external">upgraded</a> from a Personal account to a Business account, simply by going to the `Profile` button under the `My Account` tab, selecting the `Personal Business Information` button, and then clicking the `Upgrade Your Account` button
|
58 |
echo '<p><em><strong>*PayPal® API Credentials*</strong> Once you have a PayPal® Business account, you\'ll need access to your <a href="http://www.s2member.com/paypal-profile-api-access" target="_blank" rel="external">PayPal® API Credentials</a>. Log into your PayPal® account, and navigate to <code>Profile -> API Access (or Request API Credentials)</code>. You\'ll choose <code>( PayPal® / Request API Signature )</code>.</em></p>'."\n";
|
59 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_account_details", get_defined_vars());
|
60 |
/**/
|
@@ -218,6 +218,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
218 |
echo '<p>Newer PayPal® Pro accounts come with the Payflow® API for Recurring Billing service. If you have a newer PayPal® Pro account, and you wish to integrate PayPal\'s Recurring Billing service with s2Member® Pro Forms, you will need to fill in the details here. Providing Payflow® API Credentials here, automatically puts s2Member\'s Recurring Billing integration through Pro Forms, into Payflow® mode. Just fill in the details below, and you\'re ready to generate Pro Forms that charge customers on a recurring basis. s2Member® will use the Payflow® API instead of the standard PayPal® Pro API, which is being slowly phased out in favor of Payflow®.</p>'."\n";
|
219 |
echo '<p><em><strong>*Payflow® API Credentials*</strong> Once you have a PayPal® Pro account, you\'ll need access to your <a href="http://www.s2member.com/paypal-profile-api-access" target="_blank" rel="external">Payflow® API Credentials</a>. Log into your PayPal® account, and navigate to <code>Profile -> API Access (or Request API Credentials)</code>. You\'ll choose <code>( Payflow® / API Access )</code>.</em></p>'."\n";
|
220 |
echo '<p><em><strong>*Important Note*</strong> s2Member® always uses the PayPal® Pro API. It can also use the Payflow® API (if details are supplied here). But please note... supplying Payflow® API Credentials here, does NOT mean you can bypass other sections. Please supply s2Member® with ALL of your PayPal® account details.</em></p>'."\n";
|
|
|
221 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_payflow_account_details", get_defined_vars());
|
222 |
/**/
|
223 |
echo '<table class="form-table">'."\n";
|
54 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-paypal-account-details-section">'."\n";
|
55 |
echo '<a href="http://www.s2member.com/paypal" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/paypal-logo.png" class="ws-menu-page-right" style="width:125px; height:125px; border:0;" alt="." /></a>'."\n";
|
56 |
echo '<h3>PayPal® Account Details ( required, if using PayPal® )</h3>'."\n";
|
57 |
+
echo '<p>This plugin works in conjunction with <a href="http://www.s2member.com/paypal" target="_blank" rel="external">PayPal® Website Payments Standard</a>, for businesses. You do NOT need a PayPal® Pro account. You just need to upgrade your Personal PayPal® account to a Business status, which is free. A PayPal® account can be <a href="http://pages.ebay.com/help/buy/questions/upgrade-paypal-account.html" target="_blank" rel="external">upgraded</a> from a Personal account to a Business account, simply by going to the `Profile` button under the `My Account` tab, selecting the `Personal Business Information` button, and then clicking the `Upgrade Your Account` button. <strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/paypal-account-types/" target="_blank" rel="external">PayPal® Compatibility (Account Types)</a>.</p>'."\n";
|
58 |
echo '<p><em><strong>*PayPal® API Credentials*</strong> Once you have a PayPal® Business account, you\'ll need access to your <a href="http://www.s2member.com/paypal-profile-api-access" target="_blank" rel="external">PayPal® API Credentials</a>. Log into your PayPal® account, and navigate to <code>Profile -> API Access (or Request API Credentials)</code>. You\'ll choose <code>( PayPal® / Request API Signature )</code>.</em></p>'."\n";
|
59 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_account_details", get_defined_vars());
|
60 |
/**/
|
218 |
echo '<p>Newer PayPal® Pro accounts come with the Payflow® API for Recurring Billing service. If you have a newer PayPal® Pro account, and you wish to integrate PayPal\'s Recurring Billing service with s2Member® Pro Forms, you will need to fill in the details here. Providing Payflow® API Credentials here, automatically puts s2Member\'s Recurring Billing integration through Pro Forms, into Payflow® mode. Just fill in the details below, and you\'re ready to generate Pro Forms that charge customers on a recurring basis. s2Member® will use the Payflow® API instead of the standard PayPal® Pro API, which is being slowly phased out in favor of Payflow®.</p>'."\n";
|
219 |
echo '<p><em><strong>*Payflow® API Credentials*</strong> Once you have a PayPal® Pro account, you\'ll need access to your <a href="http://www.s2member.com/paypal-profile-api-access" target="_blank" rel="external">Payflow® API Credentials</a>. Log into your PayPal® account, and navigate to <code>Profile -> API Access (or Request API Credentials)</code>. You\'ll choose <code>( Payflow® / API Access )</code>.</em></p>'."\n";
|
220 |
echo '<p><em><strong>*Important Note*</strong> s2Member® always uses the PayPal® Pro API. It can also use the Payflow® API (if details are supplied here). But please note... supplying Payflow® API Credentials here, does NOT mean you can bypass other sections. Please supply s2Member® with ALL of your PayPal® account details.</em></p>'."\n";
|
221 |
+
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/paypal-pro-payflow-edition/" target="_blank" rel="external">PayPal® Pro (PayFlow Edition)</a>.</p>'."\n";
|
222 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_payflow_account_details", get_defined_vars());
|
223 |
/**/
|
224 |
echo '<table class="form-table">'."\n";
|
includes/syscon.inc.php
CHANGED
@@ -83,7 +83,7 @@ $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["recaptcha"] = array("public_key" => "6
|
|
83 |
/*
|
84 |
Configure the right menu options panel for s2Member.
|
85 |
*/
|
86 |
-
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"] = array("updates" => true, "upsell-pro" => true, "installation" => false, "tools" => false, "videos" => true, "support" => true, "donations" => true);
|
87 |
/*
|
88 |
Check if s2Member has been configured *should be set after the first config via options panel*.
|
89 |
*/
|
83 |
/*
|
84 |
Configure the right menu options panel for s2Member.
|
85 |
*/
|
86 |
+
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"] = array("updates" => true, "upsell-pro" => true, "installation" => false, "tools" => false, "kb" => true, "videos" => true, "support" => true, "donations" => true);
|
87 |
/*
|
88 |
Check if s2Member has been configured *should be set after the first config via options panel*.
|
89 |
*/
|
includes/templates/players/jwplayer-v6-rtmp-only.php
CHANGED
@@ -6,7 +6,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
6 |
<div id="%%player_id%%"></div>
|
7 |
<script type="text/javascript" src="%%player_path%%"></script>
|
8 |
<script type="text/javascript">
|
9 |
-
jwplayer('%%player_id%%').setup({
|
10 |
|
11 |
playlist:
|
12 |
[{
|
@@ -30,6 +30,8 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
30 |
mute: %%player_mute%%,
|
31 |
primary: '%%player_primary%%',
|
32 |
repeat: %%player_repeat%%,
|
33 |
-
startparam: '%%player_startparam%%'
|
|
|
|
|
34 |
});
|
35 |
</script>
|
6 |
<div id="%%player_id%%"></div>
|
7 |
<script type="text/javascript" src="%%player_path%%"></script>
|
8 |
<script type="text/javascript">
|
9 |
+
jwplayer.key = '%%player_key%%', jwplayer('%%player_id%%').setup({
|
10 |
|
11 |
playlist:
|
12 |
[{
|
30 |
mute: %%player_mute%%,
|
31 |
primary: '%%player_primary%%',
|
32 |
repeat: %%player_repeat%%,
|
33 |
+
startparam: '%%player_startparam%%',
|
34 |
+
|
35 |
+
%%player_option_blocks%%
|
36 |
});
|
37 |
</script>
|
includes/templates/players/jwplayer-v6-rtmp.php
CHANGED
@@ -6,7 +6,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
6 |
<div id="%%player_id%%"></div>
|
7 |
<script type="text/javascript" src="%%player_path%%"></script>
|
8 |
<script type="text/javascript">
|
9 |
-
jwplayer('%%player_id%%').setup({
|
10 |
|
11 |
playlist:
|
12 |
[{
|
@@ -31,6 +31,8 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
31 |
mute: %%player_mute%%,
|
32 |
primary: '%%player_primary%%',
|
33 |
repeat: %%player_repeat%%,
|
34 |
-
startparam: '%%player_startparam%%'
|
|
|
|
|
35 |
});
|
36 |
</script>
|
6 |
<div id="%%player_id%%"></div>
|
7 |
<script type="text/javascript" src="%%player_path%%"></script>
|
8 |
<script type="text/javascript">
|
9 |
+
jwplayer.key = '%%player_key%%', jwplayer('%%player_id%%').setup({
|
10 |
|
11 |
playlist:
|
12 |
[{
|
31 |
mute: %%player_mute%%,
|
32 |
primary: '%%player_primary%%',
|
33 |
repeat: %%player_repeat%%,
|
34 |
+
startparam: '%%player_startparam%%',
|
35 |
+
|
36 |
+
%%player_option_blocks%%
|
37 |
});
|
38 |
</script>
|
includes/templates/players/jwplayer-v6.php
CHANGED
@@ -6,7 +6,7 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
6 |
<div id="%%player_id%%"></div>
|
7 |
<script type="text/javascript" src="%%player_path%%"></script>
|
8 |
<script type="text/javascript">
|
9 |
-
jwplayer('%%player_id%%').setup({
|
10 |
|
11 |
playlist:
|
12 |
[{
|
@@ -30,6 +30,8 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
30 |
mute: %%player_mute%%,
|
31 |
primary: '%%player_primary%%',
|
32 |
repeat: %%player_repeat%%,
|
33 |
-
startparam: '%%player_startparam%%'
|
|
|
|
|
34 |
});
|
35 |
</script>
|
6 |
<div id="%%player_id%%"></div>
|
7 |
<script type="text/javascript" src="%%player_path%%"></script>
|
8 |
<script type="text/javascript">
|
9 |
+
jwplayer.key = '%%player_key%%', jwplayer('%%player_id%%').setup({
|
10 |
|
11 |
playlist:
|
12 |
[{
|
30 |
mute: %%player_mute%%,
|
31 |
primary: '%%player_primary%%',
|
32 |
repeat: %%player_repeat%%,
|
33 |
+
startparam: '%%player_startparam%%',
|
34 |
+
|
35 |
+
%%player_option_blocks%%
|
36 |
});
|
37 |
</script>
|
includes/translations/s2member.pot
CHANGED
@@ -4,7 +4,7 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: s2Member® Framework 130116\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/___s2member\n"
|
7 |
-
"POT-Creation-Date: 2013-01-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: s2Member® Framework 130116\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/___s2member\n"
|
7 |
+
"POT-Creation-Date: 2013-01-24 00:54:01+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
-
Version:
|
4 |
-
Stable tag:
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
@@ -35,6 +35,7 @@ Forum URI: http://www.s2member.com/forums/
|
|
35 |
Plugin URI: http://www.s2member.com/framework/
|
36 |
Privacy URI: http://www.s2member.com/privacy/
|
37 |
Video Tutorials: http://www.s2member.com/videos/
|
|
|
38 |
Pro Module / Home Page: http://www.s2member.com/
|
39 |
Pro Module / Prices: http://www.s2member.com/prices/
|
40 |
Pro Module / Auto-Update URL: http://www.s2member.com/
|
@@ -91,16 +92,25 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
|
|
91 |
|
92 |
== Upgrade Notice ==
|
93 |
|
94 |
-
=
|
95 |
Maintenance release. Upgrade immediately.
|
96 |
|
97 |
== Changelog ==
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
= v130121 =
|
100 |
* **(Maintenance Release) Upgrade immediately.**
|
101 |
* **New Feature** s2Member® now comes with a new Shortcode `[s2Stream file_download="video.mp4" player="jwplayer-v6" ... /]`, making it MUCH easier for site owners to implemement RTMP streams of audio/video content. For further details, please check your Dashboard under: `s2Member® -> Download Options -> JW Player® v6 and RTMP Protocol Examples`. See also: `s2Member® -> Download Options -> Shortcode Attributes (Explained)`.
|
102 |
* **Compatibility (Issue #75)** Updated s2Member's local file storage engine (for File Downloads via s2Member®), to support special characters in file names. Discussed in [this thread](http://www.s2member.com/forums/topic/problem-with-quotes-in-filename-downloads/#post-38395).
|
103 |
* **Bug Fix (Issue #71)** A bug first introduced in the previous release of v130116, where we added support for byte-range requests to s2Member's File Download functionality, was causing multiple byte-range requests (processed by s2Member) to count against each User/Member as multiple File Downloads. Fixed in this release.
|
|
|
104 |
|
105 |
= v130116 =
|
106 |
* **(Maintenance Release) Upgrade immediately.**
|
1 |
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
+
Version: 130123
|
4 |
+
Stable tag: 130123
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
35 |
Plugin URI: http://www.s2member.com/framework/
|
36 |
Privacy URI: http://www.s2member.com/privacy/
|
37 |
Video Tutorials: http://www.s2member.com/videos/
|
38 |
+
Knowledge Base: http://www.s2member.com/kb/
|
39 |
Pro Module / Home Page: http://www.s2member.com/
|
40 |
Pro Module / Prices: http://www.s2member.com/prices/
|
41 |
Pro Module / Auto-Update URL: http://www.s2member.com/
|
92 |
|
93 |
== Upgrade Notice ==
|
94 |
|
95 |
+
= v130123 =
|
96 |
Maintenance release. Upgrade immediately.
|
97 |
|
98 |
== Changelog ==
|
99 |
|
100 |
+
= v130123 =
|
101 |
+
* **(Maintenance Release) Upgrade immediately.**
|
102 |
+
* (s2Member/s2Member Pro) **s2Stream Shortcode (Issue #78)** s2Member® now supports JW Player® license keys using Shortcode Attribute `player_key=""`. See [this KB article](http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/) please. Also discussed in [this thread](http://www.s2member.com/forums/topic/new-jw-player-6-s2-video-audio-shortcodes/#post-38768).
|
103 |
+
* (s2Member/s2Member Pro) **s2Stream Shortcode (Issue #79)** s2Member® now supports JW Player® [Advanced Option Blocks](http://www.longtailvideo.com/support/jw-player/28839/embedding-the-player) using Shortcode Attribute `player_option_blocks=""`. Example: `player_option_blocks="sharing:{}"`. See [this KB article](http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/) please. Also discussed in [this thread](http://www.s2member.com/forums/topic/new-jw-player-6-s2-video-audio-shortcodes/#post-38768).
|
104 |
+
* (s2Member Pro) **User Exportation (Issue #80)** s2Member® Pro User Exportation now occurs with MySQL `ORDER BY ID`, instead of no `ORDER BY` at all. This helps to prevent confusion and buggy behavior. Discussed in [this thread](http://www.s2member.com/forums/topic/user-export-not-working-properly/#post-39123).
|
105 |
+
* (s2Member Pro) **User Exportation (Issue #81)** s2Member Pro's User Exportation now supports the exporation of up to `1000` User/Member table rows at once. Of course it remains possible to export ALL of your Users/Members with s2Member® Pro. All we've done here is bump the default limit from `250` up to `1000` at a time. In addition, there is a new Filter making it possible to extend this limit further on servers that can handle it. Use Filter: `ws_plugin__s2member_pro_export_users_limit` if you would like to export more Users all at once. See also: `Dashboard -› s2Member® Pro -> User/Member Exportation`.
|
106 |
+
* (s2Member/s2Member Pro) **KB Articles** Inline documentation updated in some areas, with a few links pointing to helpful/related KB articles.
|
107 |
+
|
108 |
= v130121 =
|
109 |
* **(Maintenance Release) Upgrade immediately.**
|
110 |
* **New Feature** s2Member® now comes with a new Shortcode `[s2Stream file_download="video.mp4" player="jwplayer-v6" ... /]`, making it MUCH easier for site owners to implemement RTMP streams of audio/video content. For further details, please check your Dashboard under: `s2Member® -> Download Options -> JW Player® v6 and RTMP Protocol Examples`. See also: `s2Member® -> Download Options -> Shortcode Attributes (Explained)`.
|
111 |
* **Compatibility (Issue #75)** Updated s2Member's local file storage engine (for File Downloads via s2Member®), to support special characters in file names. Discussed in [this thread](http://www.s2member.com/forums/topic/problem-with-quotes-in-filename-downloads/#post-38395).
|
112 |
* **Bug Fix (Issue #71)** A bug first introduced in the previous release of v130116, where we added support for byte-range requests to s2Member's File Download functionality, was causing multiple byte-range requests (processed by s2Member) to count against each User/Member as multiple File Downloads. Fixed in this release.
|
113 |
+
* **Compatibility** Updated s2Member's integration with Amazon® S3 to extend the default 30 second connection timeout (which was too conservative for many integrations) up to 24 hours by default, making it match the same as s2Member's Amazon® CloudFront connection timeout. For further details, please check your Dashboard under: `s2Member® -> Download Options -> Amazon® S3/CDN Storage -> Dev Note w/Technical Details`. It is possible to modify this connection timeout through a Filter discussed there.
|
114 |
|
115 |
= v130116 =
|
116 |
* **(Maintenance Release) Upgrade immediately.**
|
s2member.php
CHANGED
@@ -19,8 +19,8 @@
|
|
19 |
*/
|
20 |
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
-
Version:
|
23 |
-
Stable tag:
|
24 |
|
25 |
SSL Compatible: yes
|
26 |
bbPress® Compatible: yes
|
@@ -75,7 +75,7 @@ if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
|
|
75 |
* @var str
|
76 |
*/
|
77 |
if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
|
78 |
-
define("WS_PLUGIN__S2MEMBER_VERSION", "
|
79 |
/**
|
80 |
* Minimum PHP version required to run s2Member.
|
81 |
*
|
@@ -105,7 +105,7 @@ if(!defined("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION"))
|
|
105 |
* @var str
|
106 |
*/
|
107 |
if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
|
108 |
-
define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|
19 |
*/
|
20 |
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
+
Version: 130123
|
23 |
+
Stable tag: 130123
|
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", "130123" /* !#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", "130123" /* !#distro-version#! */);
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|