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

Version Description

= v130816 = (Maintenance Release) Upgrade immediately.

Download this release

Release Info

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

Code changes from version 130802 to 130816

checksum.txt CHANGED
@@ -1 +1 @@
1
- 9dc191cd407f459b07792c5e24abdea1
1
+ a1483e3b04ff24591ddc65fac0e7b361
includes/classes/login-customizations.inc.php CHANGED
@@ -134,7 +134,10 @@ if(!class_exists("c_ws_plugin__s2member_login_customizations"))
134
$a[] = 'div#login form#registerform p#reg_passmail { font-style:italic'.$i.'; }';
135
136
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"])
137
- $a[] = 'p#reg_passmail { display:none'.$i.'; }';
138
139
$a = apply_filters("ws_plugin__s2member_login_header_styles_array_before_close", $a, get_defined_vars());
140
$a[] = /* Now close style tag. There are other Filters below. */ '</style>';
134
$a[] = 'div#login form#registerform p#reg_passmail { font-style:italic'.$i.'; }';
135
136
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"])
137
+ $a[] = 'div#login form#registerform p#reg_passmail { display:none'.$i.'; }';
138
+
139
+ if(!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_footer_backtoblog"])
140
+ $a[] = 'div#login p#backtoblog { display:none'.$i.'; }';
141
142
$a = apply_filters("ws_plugin__s2member_login_header_styles_array_before_close", $a, get_defined_vars());
143
$a[] = /* Now close style tag. There are other Filters below. */ '</style>';
includes/classes/login-redirects.inc.php CHANGED
@@ -27,7 +27,7 @@ if (!class_exists ("c_ws_plugin__s2member_login_redirects"))
27
*/
28
class c_ws_plugin__s2member_login_redirects
29
{
30
-
31
/**
32
* Assists in multisite User authentication.
33
*
@@ -46,7 +46,7 @@ if (!class_exists ("c_ws_plugin__s2member_login_redirects"))
46
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
47
do_action ("ws_plugin__s2member_before_ms_wp_authenticate_user", get_defined_vars ());
48
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
49
-
50
if(is_a($user_or_wp_error, "WP_User") && ($user = $user_or_wp_error) && $user->ID && !is_super_admin($user->ID) && !in_array(get_current_blog_id(), array_keys(get_blogs_of_user($user->ID)), TRUE))
51
$user_or_wp_error = new WP_Error("invalid_username", _x("<strong>ERROR</strong>: Invalid username for this site.", "s2member-front", "s2member"));
52
@@ -98,16 +98,18 @@ if (!class_exists ("c_ws_plugin__s2member_login_redirects"))
98
do_action ("ws_plugin__s2member_during_login_redirect", get_defined_vars ());
99
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
100
101
- if /* Is this a string? */ ($redirect && is_string ($redirect))
102
- wp_redirect /* Dynamic URL introduced by a Filter? */ ($redirect);
103
104
else if ($redirection_url = c_ws_plugin__s2member_login_redirects::login_redirection_url ($user))
105
- wp_redirect /* Special Redirection URL configured with s2Member. */ ($redirection_url);
106
107
else // Else we use the Login Welcome Page configured for s2Member.
108
- wp_redirect (get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]));
109
110
- exit /* Clean exit. */ ();
111
}
112
}
113
}
27
*/
28
class c_ws_plugin__s2member_login_redirects
29
{
30
+
31
/**
32
* Assists in multisite User authentication.
33
*
46
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
47
do_action ("ws_plugin__s2member_before_ms_wp_authenticate_user", get_defined_vars ());
48
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
49
+
50
if(is_a($user_or_wp_error, "WP_User") && ($user = $user_or_wp_error) && $user->ID && !is_super_admin($user->ID) && !in_array(get_current_blog_id(), array_keys(get_blogs_of_user($user->ID)), TRUE))
51
$user_or_wp_error = new WP_Error("invalid_username", _x("<strong>ERROR</strong>: Invalid username for this site.", "s2member-front", "s2member"));
52
98
do_action ("ws_plugin__s2member_during_login_redirect", get_defined_vars ());
99
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
100
101
+ if($redirect && is_string ($redirect)) $redirect = $redirect; // Custom?
102
103
else if ($redirection_url = c_ws_plugin__s2member_login_redirects::login_redirection_url ($user))
104
+ $redirect = $redirection_url; // Special redirection URL (overrides LWP).
105
106
else // Else we use the Login Welcome Page configured for s2Member.
107
+ $redirect = get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]);
108
+
109
+ if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_always_http"])
110
+ $redirect = preg_replace("/^https\:\/\//i", "http://", $redirect);
111
112
+ wp_redirect($redirect).exit();
113
}
114
}
115
}
includes/classes/users-list.inc.php CHANGED
@@ -89,15 +89,15 @@ if (!class_exists ("c_ws_plugin__s2member_users_list"))
89
$query->query_where .= " AND (" . apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_before", "", get_defined_vars ());
90
$query->query_where .= " (`" . $wpdb->users . "`.`user_login` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_nicename` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`display_name` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_email` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_url` LIKE '" . $s . "')";
91
$query->query_where .= " OR ((`" . $wpdb->usermeta . "`.`meta_key` = 'first_name' OR `" . $wpdb->usermeta . "`.`meta_key` = 'last_name') AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
92
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_subscr_id' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
93
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_custom' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
94
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_custom_fields' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
95
if(apply_filters("ws_plugin__s2member_users_list_search_admin_notes", false, get_defined_vars())) // Off by default; this can get very slow on large sites.
96
- $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->prefix . "s2member_notes' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
97
$query->query_where .= apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_after", "", get_defined_vars ()) . ")"; // Leaving room for additional searches here.
98
99
if(is_multisite()) // On a Multisite Network we need to make sure we're searching only users w/ capabilities on this blog.
100
- $query->query_where .= " AND `" . $wpdb->users . "`.`ID` IN(SELECT DISTINCT(`user_id`) FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "capabilities'";
101
102
$query->query_from = apply_filters ("ws_plugin__s2member_before_users_list_search_from", $query->query_from, get_defined_vars ());
103
$query->query_where = apply_filters ("ws_plugin__s2member_before_users_list_search_where", $query->query_where, get_defined_vars ());
89
$query->query_where .= " AND (" . apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_before", "", get_defined_vars ());
90
$query->query_where .= " (`" . $wpdb->users . "`.`user_login` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_nicename` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`display_name` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_email` LIKE '" . $s . "' OR `" . $wpdb->users . "`.`user_url` LIKE '" . $s . "')";
91
$query->query_where .= " OR ((`" . $wpdb->usermeta . "`.`meta_key` = 'first_name' OR `" . $wpdb->usermeta . "`.`meta_key` = 'last_name') AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
92
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_subscr_id' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
93
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_custom' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
94
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_custom_fields' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
95
if(apply_filters("ws_plugin__s2member_users_list_search_admin_notes", false, get_defined_vars())) // Off by default; this can get very slow on large sites.
96
+ $query->query_where .= " OR (`" . $wpdb->usermeta . "`.`meta_key` = '" . $wpdb->base_prefix . "s2member_notes' AND `" . $wpdb->usermeta . "`.`meta_value` LIKE '" . $s . "')";
97
$query->query_where .= apply_filters ("ws_plugin__s2member_before_users_list_search_where_or_after", "", get_defined_vars ()) . ")"; // Leaving room for additional searches here.
98
99
if(is_multisite()) // On a Multisite Network we need to make sure we're searching only users w/ capabilities on this blog.
100
+ $query->query_where .= " AND `" . $wpdb->users . "`.`ID` IN(SELECT DISTINCT(`user_id`) FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "capabilities')";
101
102
$query->query_from = apply_filters ("ws_plugin__s2member_before_users_list_search_from", $query->query_from, get_defined_vars ());
103
$query->query_where = apply_filters ("ws_plugin__s2member_before_users_list_search_where", $query->query_where, get_defined_vars ());
includes/menu-pages/down-ops.inc.php CHANGED
@@ -721,6 +721,42 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
721
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_gzip_conflicts", get_defined_vars());
722
}
723
724
do_action("ws_plugin__s2member_during_down_ops_page_after_left_sections", get_defined_vars());
725
726
echo '<div class="ws-menu-page-hr"></div>'."\n";
721
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_gzip_conflicts", get_defined_vars());
722
}
723
724
+ if (apply_filters ("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_custom_capability_files", (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()), get_defined_vars ()))
725
+ {
726
+ do_action ("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_custom_capability_files", get_defined_vars ());
727
+
728
+ echo '<div class="ws-menu-page-group" title="Custom Capability &amp; Member Level Files">' . "\n";
729
+
730
+ echo '<div class="ws-menu-page-section ws-plugin--s2member-custom-capability-files-section">' . "\n";
731
+ echo '<h3>Restricting Files, Based On Custom Capabilities</h3>' . "\n";
732
+ echo '<p>If you\'re NOT familiar with Custom Capabilities yet, please read: <code>Dashboard -› s2Member® -› API Scripting -› Custom Capability Packages</code>. Once you understand the basic concept of Custom Capabilities &amp; Protected File Downloads, you\'ll see that (by default) s2Member does NOT handle File Download Protection with respect to Custom Capabilities. That\'s where Custom Capability Sub-directories come in.</p>' . "\n";
733
+ echo '<p>You can create Custom Capability Sub-directories under: <code>' . esc_html (c_ws_plugin__s2member_utils_dirs::doc_root_path ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '</code>. For instance, if you have a Custom Capability <code>music</code>, you can place protected files that should ONLY be accessible to Members with <code>access_s2member_ccap_music</code>, inside: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-ccap-music/</code>. Some examples are provided below.</p>' . "\n";
734
+ do_action ("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_custom_capability_files", get_defined_vars ());
735
+
736
+ echo '<div class="ws-menu-page-hr"></div>' . "\n";
737
+
738
+ echo '<p><strong>Custom Capabilities:</strong> (music,videos)</p>' . "\n";
739
+ echo '<p>Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-ccap-music</code><br />Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-ccap-videos</code></p>' . "\n";
740
+ echo '<p>Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-ccap-music/file.mp3</code><br />Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-ccap-videos/file.avi</code></p>' . "\n";
741
+ echo '<p>Now, here are some link examples, using Custom Capability Sub-directories:</p>' . "\n";
742
+ echo '<p>' . c_ws_plugin__s2member_utils_strings::highlight_php (file_get_contents (dirname (__FILE__) . "/code-samples/ccap-file-downloads.x-php")) . '</p>' . "\n";
743
+ echo '<p><em>These links will ONLY work for Members who are logged-in, with the proper Capabilities.</em></p>' . "\n";
744
+
745
+ echo '<div class="ws-menu-page-hr"></div>' . "\n";
746
+
747
+ echo '<p><strong>Membership Levels:</strong> (this also works fine)</p>' . "\n";
748
+ echo '<p>Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level0</code><br />Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level1</code><br />Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level2</code><br />Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level3</code><br />Sub-Directory: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level4</code></p>' . "\n";
749
+ echo '<p>Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level0/tiger.doc</code><br />Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level1/zebra.pdf</code><br />Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level2/elephant.doc</code><br />Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level3/rhino.pdf</code><br />Protected File: <code>/' . esc_html (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) . '/access-s2member-level4/lion.doc</code></p>' . "\n";
750
+ echo '<p>Now, here are some link examples, using Member Level Sub-directories:</p>' . "\n";
751
+ echo '<p>' . c_ws_plugin__s2member_utils_strings::highlight_php (file_get_contents (dirname (__FILE__) . "/code-samples/level-file-downloads.x-php")) . '</p>' . "\n";
752
+ echo '<p><em>These links will ONLY work for Members who are logged-in, with an adequate Membership Level.</em></p>' . "\n";
753
+ echo '</div>' . "\n";
754
+
755
+ echo '</div>' . "\n";
756
+
757
+ do_action ("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_custom_capability_files", get_defined_vars ());
758
+ }
759
+
760
do_action("ws_plugin__s2member_during_down_ops_page_after_left_sections", get_defined_vars());
761
762
echo '<div class="ws-menu-page-hr"></div>'."\n";
includes/menu-pages/gen-ops.inc.php CHANGED
@@ -963,6 +963,25 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
963
echo '<tbody>' . "\n";
964
echo '<tr>' . "\n";
965
966
echo '<td>' . "\n";
967
echo '<h3 style="margin:0;">Footer Design (i.e. Bottom)</h3>' . "\n";
968
echo '<p style="margin:0;">This field accepts raw HTML' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? ' (and/or PHP)' : '') . ' code.</p>' . "\n";
@@ -1183,9 +1202,51 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
1183
foreach (($ws_plugin__s2member_temp_a = array_merge ((array)get_pages ())) as $ws_plugin__s2member_temp_o)
1184
echo '<option value="' . esc_attr ($ws_plugin__s2member_temp_o->ID) . '"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && $ws_plugin__s2member_temp_o->ID == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]) ? ' selected="selected"' : '') . '>' . esc_html ($ws_plugin__s2member_temp_o->post_title) . '</option>' . "\n";
1185
echo '</select><br />' . "\n";
1186
- echo 'Please choose a Page to be used as the first page Members will see after logging in. This Page can contain anything you like. We recommend the following title: <code>Welcome To Our Members Area</code>.<br /><br />' . "\n";
1187
- echo '&darr; Or, you may configure a Special Redirection URL, if you prefer. You\'ll need to type in the full URL, starting with: <code>http://</code>. <em>A few <a href="#" onclick="alert(\'Replacement Codes:\\n\\n%%current_user_login%% = The current User\\\'s Username, lowercase.\\n%%current_user_id%% = The current User\\\'s ID.\\n%%current_user_level%% = The current User\\\'s s2Member Level.\\n%%current_user_role%% = The current User\\\'s WordPress® Role.' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '\\n%%current_user_ccaps%% = The current User\\\'s Custom Capabilities.' : '') . '\\n%%current_user_logins%% = Number of times the current User has logged in.\\n\\nFor example, if you\\\'re using BuddyPress, and you want to redirect Members to their BuddyPress Profile page after logging in, you would setup a Special Redirection URL, like this: ' . site_url ("/members/%%current_user_login%%/profile/") . '\\n\\nOr ... using %%current_user_level%%, you could have a separate Login Welcome Page for each Membership Level that you plan to offer. BuddyPress not required.\'); return false;">Replacement Codes</a> are also supported here.</em>' . "\n";
1188
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_login_redirection_override" id="ws-plugin--s2member-login-redirection-override" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"]) . '" /><br />' . "\n";
1189
echo '</td>' . "\n";
1190
1191
echo '</tr>' . "\n";
963
echo '<tbody>' . "\n";
964
echo '<tr>' . "\n";
965
966
+ echo '<th>' . "\n";
967
+ echo '<label for="ws-plugin--s2member-login-reg-footer-backtoblog">' . "\n";
968
+ echo 'Display [Back to Home Page] Link At Bottom?' . "\n";
969
+ echo '</label>' . "\n";
970
+ echo '</th>' . "\n";
971
+
972
+ echo '</tr>' . "\n";
973
+ echo '<tr>' . "\n";
974
+
975
+ echo '<td>' . "\n";
976
+ echo '<select name="ws_plugin__s2member_login_reg_footer_backtoblog" id="ws-plugin--s2member-login-reg-footer-backtoblog">' . "\n";
977
+ echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_footer_backtoblog"]) ? ' selected="selected"' : '') . '>Yes, display link at bottom pointing visitors back to the home page</option>' . "\n";
978
+ echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_footer_backtoblog"]) ? ' selected="selected"' : '') . '>No, hide this link (I\'ll create my own custom footer w/ the details I prefer)</option>' . "\n";
979
+ echo '</select>' . "\n";
980
+ echo '</td>' . "\n";
981
+
982
+ echo '</tr>' . "\n";
983
+ echo '<tr>' . "\n";
984
+
985
echo '<td>' . "\n";
986
echo '<h3 style="margin:0;">Footer Design (i.e. Bottom)</h3>' . "\n";
987
echo '<p style="margin:0;">This field accepts raw HTML' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? ' (and/or PHP)' : '') . ' code.</p>' . "\n";
1202
foreach (($ws_plugin__s2member_temp_a = array_merge ((array)get_pages ())) as $ws_plugin__s2member_temp_o)
1203
echo '<option value="' . esc_attr ($ws_plugin__s2member_temp_o->ID) . '"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && $ws_plugin__s2member_temp_o->ID == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]) ? ' selected="selected"' : '') . '>' . esc_html ($ws_plugin__s2member_temp_o->post_title) . '</option>' . "\n";
1204
echo '</select><br />' . "\n";
1205
+ echo 'Please choose a Page to be used as the first page Members will see after logging in. This Page can contain anything you like. We recommend the following title: <code>Welcome To Our Members Area</code>.' . "\n";
1206
+ echo '</td>' . "\n";
1207
+
1208
+ echo '</tr>' . "\n";
1209
+ echo '<tr>' . "\n";
1210
+
1211
+ echo '<th>' . "\n";
1212
+ echo '<label for="ws-plugin--s2member-login-redirection-override">' . "\n";
1213
+ echo 'Or, a Special Redirection URL?' . "\n";
1214
+ echo '</label>' . "\n";
1215
+ echo '</th>' . "\n";
1216
+
1217
+ echo '</tr>' . "\n";
1218
+ echo '<tr>' . "\n";
1219
+
1220
+ echo '<td>' . "\n";
1221
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_login_redirection_override" id="ws-plugin--s2member-login-redirection-override" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"]) . '" /><br />' . "\n";
1222
+ echo 'Or, you may configure a Special Redirection URL, if you prefer. You\'ll need to type in the full URL, starting with: <code>http://</code>. <em>A few <a href="#" onclick="alert(\'Replacement Codes:\\n\\n%%current_user_login%% = The current User\\\'s Username, lowercase.\\n%%current_user_id%% = The current User\\\'s ID.\\n%%current_user_level%% = The current User\\\'s s2Member Level.\\n%%current_user_role%% = The current User\\\'s WordPress® Role.' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '\\n%%current_user_ccaps%% = The current User\\\'s Custom Capabilities.' : '') . '\\n%%current_user_logins%% = Number of times the current User has logged in.\\n\\nFor example, if you\\\'re using BuddyPress, and you want to redirect Members to their BuddyPress Profile page after logging in, you would setup a Special Redirection URL, like this: ' . site_url ("/members/%%current_user_login%%/profile/") . '\\n\\nOr ... using %%current_user_level%%, you could have a separate Login Welcome Page for each Membership Level that you plan to offer. BuddyPress not required.\'); return false;">Replacement Codes</a> are also supported here.</em>' . "\n";
1223
+ echo '</td>' . "\n";
1224
+
1225
+ echo '</tr>' . "\n";
1226
+ echo '</tbody>' . "\n";
1227
+ echo '</table>' . "\n";
1228
+
1229
+ echo '<div class="ws-menu-page-hr"></div>' . "\n";
1230
+
1231
+ echo '<table class="form-table" style="margin-top:0;">' . "\n";
1232
+ echo '<tbody>' . "\n";
1233
+ echo '<tr>' . "\n";
1234
+
1235
+ echo '<th>' . "\n";
1236
+ echo '<label for="ws-plugin--s2member-login-redirection-always-http">' . "\n";
1237
+ echo 'Always Redirect non-Administrative Users (after login) using HTTP?' . "\n";
1238
+ echo '</label>' . "\n";
1239
+ echo '</th>' . "\n";
1240
+
1241
+ echo '</tr>' . "\n";
1242
+ echo '<tr>' . "\n";
1243
+
1244
+ echo '<td>' . "\n";
1245
+ echo '<select name="ws_plugin__s2member_login_redirection_always_http" id="ws-plugin--s2member-login-redirection-always-http">' . "\n";
1246
+ echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_always_http"]) ? ' selected="selected"' : '') . '>No, do NOT modify (use WordPress® default behavior; e.g. detect URL scheme automatically)</option>' . "\n";
1247
+ echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_always_http"]) ? ' selected="selected"' : '') . '>Yes, always redirect non-administrative users to non-SSL version (e.g. always use http://)</option>' . "\n";
1248
+ echo '</select><br />' . "\n";
1249
+ echo 'Recommended setting: <code>Yes</code>. This is compatible w/ <a href="http://codex.wordpress.org/Administration_Over_SSL" target="_blank" rel="external"><code>FORCE_SSL_LOGIN</code></a> and/or <a href="http://codex.wordpress.org/Administration_Over_SSL" target="_blank" rel="external"><code>FORCE_SSL_ADMIN</code></a>.' . "\n";
1250
echo '</td>' . "\n";
1251
1252
echo '</tr>' . "\n";
includes/menu-pages/logs.inc.php CHANGED
@@ -80,19 +80,19 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
80
{
81
do_action("ws_plugin__s2member_during_logs_page_during_left_sections_before_log_settings", get_defined_vars());
82
83
- echo '<div class="ws-menu-page-group" title="s2Member® Logging Configuration (for Debugging Purposes)">'."\n";
84
echo '<div class="ws-menu-page-section ws-plugin--s2member-log-settings-section">'."\n";
85
86
echo '<h3>s2Member® Logging Configuration (for Debugging Purposes)</h3>'."\n";
87
-
88
echo '<div class="ws-menu-page-hilite" style="border-radius:3px; padding:5px;">'."\n";
89
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems that occur during processing. Enable logging here, and then view your log files below; in the s2Member® Log Viewer.</span></p>'."\n";
90
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
91
echo '<p style="font-size:110%; margin-bottom:0;"><span>Regarding s2Member® Security Badges. If debug logging is enabled, your site will NOT qualify for an s2Member® Security Badge until you disable logging (and you must ALSO download, and then delete any existing log files). For further details, please see KB Article: <a href="http://www.s2member.com/kb/security-badges/" target="_blank" rel="external">s2Member® Security Badges</a>.</span></p>'."\n";
92
echo '</div>'."\n";
93
-
94
echo '<div class="ws-menu-page-hr"></div>'."\n";
95
-
96
do_action("ws_plugin__s2member_during_logs_page_during_left_sections_during_log_settings", get_defined_vars());
97
98
echo '<form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form">' . "\n";
80
{
81
do_action("ws_plugin__s2member_during_logs_page_during_left_sections_before_log_settings", get_defined_vars());
82
83
+ echo '<div class="ws-menu-page-group" title="Logging Configuration (for Debugging)">'."\n";
84
echo '<div class="ws-menu-page-section ws-plugin--s2member-log-settings-section">'."\n";
85
86
echo '<h3>s2Member® Logging Configuration (for Debugging Purposes)</h3>'."\n";
87
+
88
echo '<div class="ws-menu-page-hilite" style="border-radius:3px; padding:5px;">'."\n";
89
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems that occur during processing. Enable logging here, and then view your log files below; in the s2Member® Log Viewer.</span></p>'."\n";
90
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
91
echo '<p style="font-size:110%; margin-bottom:0;"><span>Regarding s2Member® Security Badges. If debug logging is enabled, your site will NOT qualify for an s2Member® Security Badge until you disable logging (and you must ALSO download, and then delete any existing log files). For further details, please see KB Article: <a href="http://www.s2member.com/kb/security-badges/" target="_blank" rel="external">s2Member® Security Badges</a>.</span></p>'."\n";
92
echo '</div>'."\n";
93
+
94
echo '<div class="ws-menu-page-hr"></div>'."\n";
95
+
96
do_action("ws_plugin__s2member_during_logs_page_during_left_sections_during_log_settings", get_defined_vars());
97
98
echo '<form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form">' . "\n";
includes/menu-pages/menu-pages-min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(b){b("div#ws-menu-page-js-c-w").hide();b(window).resize(tb_position=function(){var c=(b(window).width()>720)?720:b(window).width(),e=b(window).height(),d=(b("body.admin-bar").length)?28:0;b("#TB_window").css({width:c-50+"px",height:e-45-d+"px",top:25+d+"px","margin-top":0,"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});b("#TB_ajaxContent").css({width:c-50+"px",height:e-75-d+"px",margin:0,padding:0})});var a=b("div.ws-menu-page-group");a.each(function(e){var g=b(this),d="<ins>+</ins>",f=g,h=b.trim(f.attr("title"));var c=b('<div class="ws-menu-page-group-header">'+d+h+"</div>");c.css({"z-index":100-e});c.insertBefore(f),f.hide(),c.click(function(){var k=b(this),j=b("ins",k),i=k.next();if(i.css("display")==="none"){k.addClass("open"),j.html("-"),i.show()}else{k.removeClass("open"),j.html("+"),i.hide()}return false});if(a.length>1&&e===0){b('<div class="ws-menu-page-groups-show">+</div>').insertBefore(c).click(function(){b("div.ws-menu-page-group-header").each(function(){var k=b(this),j=b("ins",k),i=k.next();k.addClass("open"),j.html("-"),i.show();return});return false});b('<div class="ws-menu-page-groups-hide">-</div>').insertBefore(c).click(function(){b("div.ws-menu-page-group-header").each(function(){var k=b(this),j=b("ins",k),i=k.next();k.removeClass("open"),j.html("+"),i.hide();return});return false})}if(f.attr("default-state")==="open"){c.trigger("click")}return});if(a.length>1){b("div.ws-menu-page-group-header:first").css({"margin-right":"140px"});b("div.ws-menu-page-group:first").css({"margin-right":"145px"})}b("div.ws-menu-page-r-group-header").click(function(){var d=b(this),c=d.next("div.ws-menu-page-r-group");if(c.css("display")==="none"){b("ins",d).html("-"),d.addClass("open"),c.show()}else{b("ins",d).html("+"),d.removeClass("open");c.hide()}return false});b("div.ws-menu-page-group-header:first, div.ws-menu-page-r-group-header:first").css({"margin-top":"0"});b("div.ws-menu-page-group > div.ws-menu-page-section:first-child > h3").css({"margin-top":"0"});b("div.ws-menu-page-readme > div.readme > div.section:last-child").css({"border-bottom-width":"0"});b("input.ws-menu-page-media-btn").filter(function(){return(b(this).attr("rel"))?true:false}).click(function(){var c=b(this);window.send_to_editor=function(g){var h,f,d=b.trim(c.attr("rel"));if(d&&(h=b("input#"+d)).length>0){var e=h.css("background-color"),i=b.trim(b(g).attr("src"));i=(!i)?b.trim(b("img",g).attr("src")):i;h.val(i),h.css({"background-color":"#FFFFCC"}),setTimeout(function(){h.css({"background-color":e})},2000);tb_remove();return}else{if(d&&(f=b("textarea#"+d)).length>0){var e=f.css("background-color"),i=b.trim(b(g).attr("src"));i=(!i)?b.trim(b("img",g).attr("src")):i;f.val(b.trim(f.val())+"\n"+i),f.css({"background-color":"#FFFFCC"}),setTimeout(function(){f.css({"background-color":e})},2000);tb_remove();return}}};tb_show("","./media-upload.php?type=image&TB_iframe=true");return false});b("form#ws-updates-form").submit(function(){var c="";if(!b.trim(b("input#ws-updates-fname").val())){c+="First Name missing, please try again.\n\n"}if(!b.trim(b("input#ws-updates-lname").val())){c+="Last Name missing, please try again.\n\n"}if(!b.trim(b("input#ws-updates-email").val())){c+="Email missing, please try again.\n\n"}else{if(!b("input#ws-updates-email").val().match(/^([a-z_~0-9\+\-]+)(((\.?)([a-z_~0-9\+\-]+))*)(@)([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})#x2F;i)){c+="Invalid email address, please try again.\n\n"}}if(c=b.trim(c)){alert("— Oops, you missed something: —\n\n"+c);return false}return true})});
1
+ jQuery(document).ready(function(b){b("div#ws-menu-page-js-c-w").hide();b(window).resize(tb_position=function(){var c=(b(window).width()>720)?720:b(window).width(),e=b(window).height(),d=(b("body.admin-bar").length)?28:0;b("#TB_window").css({width:c-50+"px",height:e-45-d+"px",top:25+d+"px","margin-top":0,"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});b("#TB_ajaxContent").css({width:c-50+"px",height:e-75-d+"px",margin:0,padding:0})});var a=b("div.ws-menu-page-group");a.each(function(e){var g=b(this),d="<ins>+</ins>",f=g,h=b.trim(f.attr("title"));var c=b('<div class="ws-menu-page-group-header">'+d+h+"</div>");c.css({"z-index":1});c.insertBefore(f),f.hide(),c.click(function(){var k=b(this),j=b("ins",k),i=k.next();if(i.css("display")==="none"){k.addClass("open"),j.html("-"),i.show()}else{k.removeClass("open"),j.html("+"),i.hide()}return false});if(a.length>1&&e===0){b('<div class="ws-menu-page-groups-show">+</div>').insertBefore(c).click(function(){b("div.ws-menu-page-group-header").each(function(){var k=b(this),j=b("ins",k),i=k.next();k.addClass("open"),j.html("-"),i.show();return});return false});b('<div class="ws-menu-page-groups-hide">-</div>').insertBefore(c).click(function(){b("div.ws-menu-page-group-header").each(function(){var k=b(this),j=b("ins",k),i=k.next();k.removeClass("open"),j.html("+"),i.hide();return});return false})}if(f.attr("default-state")==="open"){c.trigger("click")}return});if(a.length>1){b("div.ws-menu-page-group-header:first").css({"margin-right":"140px"});b("div.ws-menu-page-group:first").css({"margin-right":"145px"})}b("div.ws-menu-page-r-group-header").click(function(){var d=b(this),c=d.next("div.ws-menu-page-r-group");if(c.css("display")==="none"){b("ins",d).html("-"),d.addClass("open"),c.show()}else{b("ins",d).html("+"),d.removeClass("open");c.hide()}return false});b("div.ws-menu-page-group-header:first, div.ws-menu-page-r-group-header:first").css({"margin-top":"0"});b("div.ws-menu-page-group > div.ws-menu-page-section:first-child > h3").css({"margin-top":"0"});b("div.ws-menu-page-readme > div.readme > div.section:last-child").css({"border-bottom-width":"0"});b("input.ws-menu-page-media-btn").filter(function(){return(b(this).attr("rel"))?true:false}).click(function(){var c=b(this);window.send_to_editor=function(g){var h,f,d=b.trim(c.attr("rel"));if(d&&(h=b("input#"+d)).length>0){var e=h.css("background-color"),i=b.trim(b(g).attr("src"));i=(!i)?b.trim(b("img",g).attr("src")):i;h.val(i),h.css({"background-color":"#FFFFCC"}),setTimeout(function(){h.css({"background-color":e})},2000);tb_remove();return}else{if(d&&(f=b("textarea#"+d)).length>0){var e=f.css("background-color"),i=b.trim(b(g).attr("src"));i=(!i)?b.trim(b("img",g).attr("src")):i;f.val(b.trim(f.val())+"\n"+i),f.css({"background-color":"#FFFFCC"}),setTimeout(function(){f.css({"background-color":e})},2000);tb_remove();return}}};tb_show("","./media-upload.php?type=image&TB_iframe=true");return false});b("form#ws-updates-form").submit(function(){var c="";if(!b.trim(b("input#ws-updates-fname").val())){c+="First Name missing, please try again.\n\n"}if(!b.trim(b("input#ws-updates-lname").val())){c+="Last Name missing, please try again.\n\n"}if(!b.trim(b("input#ws-updates-email").val())){c+="Email missing, please try again.\n\n"}else{if(!b("input#ws-updates-email").val().match(/^([a-z_~0-9\+\-]+)(((\.?)([a-z_~0-9\+\-]+))*)(@)([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})#x2F;i)){c+="Invalid email address, please try again.\n\n"}}if(c=b.trim(c)){alert("— Oops, you missed something: —\n\n"+c);return false}return true})});
includes/menu-pages/menu-pages.js CHANGED
@@ -36,7 +36,7 @@ jQuery(document).ready (function($)
36
37
var $header = $('<div class="ws-menu-page-group-header">' + ins + title + '</div>');
38
39
- $header.css /* Stack them sequentially, top to bottom. */ ({'z-index': 100 - index});
40
41
$header.insertBefore ($group), $group.hide (), $header.click (function()
42
{
36
37
var $header = $('<div class="ws-menu-page-group-header">' + ins + title + '</div>');
38
39
+ $header.css /* Stack them sequentially, top to bottom. */ ({'z-index': 1});
40
41
$header.insertBefore ($group), $group.hide (), $header.click (function()
42
{
includes/menu-pages/start.inc.php CHANGED
@@ -48,7 +48,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_start"))
48
echo '<div class="ws-menu-page-group" title="Video Tutorials" style="padding-top:5px;">' . "\n";
49
50
echo '<div class="ws-menu-page-section ws-plugin--s2member-registration-process-section">' . "\n";
51
- echo '<p><embed type="application/x-shockwave-flash" src="//www.youtube.com/p/A40AFC154461862E?version=3&hd=1&fs=1&rel=0" width="100%" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></p>' . "\n";
52
do_action ("ws_plugin__s2member_during_start_page_during_left_sections_during_video_tutorials", get_defined_vars ());
53
echo '</div>' . "\n";
54
48
echo '<div class="ws-menu-page-group" title="Video Tutorials" style="padding-top:5px;">' . "\n";
49
50
echo '<div class="ws-menu-page-section ws-plugin--s2member-registration-process-section">' . "\n";
51
+ echo '<p><iframe src="//www.youtube.com/embed/videoseries?list=PLA40AFC154461862E" width="100%" height="550" frameborder="0" allowfullscreen></iframe></p>' . "\n";
52
do_action ("ws_plugin__s2member_during_start_page_during_left_sections_during_video_tutorials", get_defined_vars ());
53
echo '</div>' . "\n";
54
includes/syscon.inc.php CHANGED
@@ -167,6 +167,7 @@ if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
167
168
$default_options["login_welcome_page"] = "";
169
$default_options["login_redirection_override"] = "";
170
$default_options["membership_options_page"] = "";
171
172
$default_options["login_reg_design_enabled"] = "1";
@@ -189,6 +190,7 @@ if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
189
$default_options["login_reg_font_family"] = "'Verdana', 'Arial', sans-serif";
190
$default_options["login_reg_font_field_size"] = "18px";
191
192
$default_options["login_reg_footer_design"] = "";
193
194
$default_options["reg_email_from_name"] = get_bloginfo("name");
@@ -426,6 +428,9 @@ if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
426
else if($key === "login_redirection_override" && (!is_string($value) || !strlen($value)))
427
$value = $default_options[$key];
428
429
else if($key === "membership_options_page" && (!is_string($value) || !is_numeric($value)))
430
$value = $default_options[$key];
431
@@ -441,6 +446,9 @@ if(!function_exists("ws_plugin__s2member_configure_options_and_their_defaults"))
441
else if(preg_match("/^login_reg_(?:background|logo|font|footer)_/", $key) && !preg_match("/background_image/", $key) && (!is_string($value) || !strlen($value)))
442
$value = $default_options[$key];
443
444
else if(preg_match("/^reg_email_(?:from_name|from_email|support_link)#x2F;", $key) && (!is_string($value) || !strlen($value)))
445
$value = $default_options[$key];
446
167
168
$default_options["login_welcome_page"] = "";
169
$default_options["login_redirection_override"] = "";
170
+ $default_options["login_redirection_always_http"] = "1";
171
$default_options["membership_options_page"] = "";
172
173
$default_options["login_reg_design_enabled"] = "1";
190
$default_options["login_reg_font_family"] = "'Verdana', 'Arial', sans-serif";
191
$default_options["login_reg_font_field_size"] = "18px";
192
193
+ $default_options["login_reg_footer_backtoblog"] = "0";
194
$default_options["login_reg_footer_design"] = "";
195
196
$default_options["reg_email_from_name"] = get_bloginfo("name");
428
else if($key === "login_redirection_override" && (!is_string($value) || !strlen($value)))
429
$value = $default_options[$key];
430
431
+ else if($key === "login_redirection_always_http" && (!is_string($value) || !is_numeric($value)))
432
+ $value = $default_options[$key];
433
+
434
else if($key === "membership_options_page" && (!is_string($value) || !is_numeric($value)))
435
$value = $default_options[$key];
436
446
else if(preg_match("/^login_reg_(?:background|logo|font|footer)_/", $key) && !preg_match("/background_image/", $key) && (!is_string($value) || !strlen($value)))
447
$value = $default_options[$key];
448
449
+ else if($key === "login_reg_footer_backtoblog" && (!is_string($value) || !is_numeric($value)))
450
+ $value = $default_options[$key];
451
+
452
else if(preg_match("/^reg_email_(?:from_name|from_email|support_link)#x2F;", $key) && (!is_string($value) || !strlen($value)))
453
$value = $default_options[$key];
454
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 130801\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
- "POT-Creation-Date: 2013-08-02 09:54:27+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
@@ -1450,12 +1450,12 @@ msgctxt "s2member-front"
1450
msgid "Yes, I want to receive updates via email."
1451
msgstr ""
1452
1453
- #: s2member/includes/syscon.inc.php:200
1454
msgctxt "s2member-front"
1455
msgid "[%s] Username/Password"
1456
msgstr ""
1457
1458
- #: s2member/includes/syscon.inc.php:201
1459
msgctxt "s2member-front"
1460
msgid ""
1461
"Your Username/Password for:\n"
@@ -1466,12 +1466,12 @@ msgid ""
1466
"%%%%wp_login_url%%%%"
1467
msgstr ""
1468
1469
- #: s2member/includes/syscon.inc.php:204
1470
msgctxt "s2member-front"
1471
msgid "[%s] New User Registration"
1472
msgstr ""
1473
1474
- #: s2member/includes/syscon.inc.php:205
1475
msgctxt "s2member-front"
1476
msgid ""
1477
"New User Registration on your site:\n"
@@ -1483,12 +1483,12 @@ msgid ""
1483
"IP Address: %%%%user_ip%%%%"
1484
msgstr ""
1485
1486
- #: s2member/includes/syscon.inc.php:226 s2member-pro/includes/syscon.inc.php:94
1487
msgctxt "s2member-front"
1488
msgid "Congratulations! (your membership has been approved)"
1489
msgstr ""
1490
1491
- #: s2member/includes/syscon.inc.php:227
1492
msgctxt "s2member-front"
1493
msgid ""
1494
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
@@ -1504,12 +1504,12 @@ msgid ""
1504
"%s"
1505
msgstr ""
1506
1507
- #: s2member/includes/syscon.inc.php:230 s2member-pro/includes/syscon.inc.php:98
1508
msgctxt "s2member-front"
1509
msgid "Thank You! (instructions for access)"
1510
msgstr ""
1511
1512
- #: s2member/includes/syscon.inc.php:231
1513
msgctxt "s2member-front"
1514
msgid ""
1515
"Thanks %%%%first_name%%%%!\n"
@@ -1526,32 +1526,32 @@ msgid ""
1526
"%s"
1527
msgstr ""
1528
1529
- #: s2member/includes/syscon.inc.php:259
1530
msgctxt "s2member-front"
1531
msgid "Free Subscriber"
1532
msgstr ""
1533
1534
- #: s2member/includes/syscon.inc.php:259
1535
msgctxt "s2member-front"
1536
msgid "Bronze Member"
1537
msgstr ""
1538
1539
- #: s2member/includes/syscon.inc.php:259
1540
msgctxt "s2member-front"
1541
msgid "Silver Member"
1542
msgstr ""
1543
1544
- #: s2member/includes/syscon.inc.php:259
1545
msgctxt "s2member-front"
1546
msgid "Gold Member"
1547
msgstr ""
1548
1549
- #: s2member/includes/syscon.inc.php:259
1550
msgctxt "s2member-front"
1551
msgid "Platinum Member"
1552
msgstr ""
1553
1554
- #: s2member/includes/syscon.inc.php:259
1555
msgctxt "s2member-front"
1556
msgid "Level %s Member"
1557
msgstr ""
@@ -2484,8 +2484,8 @@ msgstr ""
2484
2485
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:288
2486
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:626
2487
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:330
2488
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:653
2489
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:388
2490
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:722
2491
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:469
@@ -2496,8 +2496,8 @@ msgstr ""
2496
2497
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:492
2498
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:743
2499
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:490
2500
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:806
2501
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:561
2502
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:874
2503
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:737
@@ -2512,10 +2512,10 @@ msgstr ""
2512
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:773
2513
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:125
2514
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:142
2515
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:499
2516
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:520
2517
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:815
2518
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:836
2519
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:570
2520
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:591
2521
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:883
@@ -2532,8 +2532,8 @@ msgstr ""
2532
2533
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:516
2534
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:764
2535
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:511
2536
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:827
2537
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:582
2538
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:895
2539
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:758
@@ -2543,7 +2543,7 @@ msgid "<strong>Thank you.</strong> Your account has been approved.<br />&mdash;
2543
msgstr ""
2544
2545
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:784
2546
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:847
2547
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:915
2548
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1101
2549
#: s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:137
@@ -3727,8 +3727,8 @@ msgctxt "s2member-front"
3727
msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal®</a> to cancel your Subscription."
3728
msgstr ""
3729
3730
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:342
3731
- #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:665
3732
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:486
3733
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:918
3734
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 130802\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
7
+ "POT-Creation-Date: 2013-08-16 07:10:15+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
1450
msgid "Yes, I want to receive updates via email."
1451
msgstr ""
1452
1453
+ #: s2member/includes/syscon.inc.php:202
1454
msgctxt "s2member-front"
1455
msgid "[%s] Username/Password"
1456
msgstr ""
1457
1458
+ #: s2member/includes/syscon.inc.php:203
1459
msgctxt "s2member-front"
1460
msgid ""
1461
"Your Username/Password for:\n"
1466
"%%%%wp_login_url%%%%"
1467
msgstr ""
1468
1469
+ #: s2member/includes/syscon.inc.php:206
1470
msgctxt "s2member-front"
1471
msgid "[%s] New User Registration"
1472
msgstr ""
1473
1474
+ #: s2member/includes/syscon.inc.php:207
1475
msgctxt "s2member-front"
1476
msgid ""
1477
"New User Registration on your site:\n"
1483
"IP Address: %%%%user_ip%%%%"
1484
msgstr ""
1485
1486
+ #: s2member/includes/syscon.inc.php:228 s2member-pro/includes/syscon.inc.php:94
1487
msgctxt "s2member-front"
1488
msgid "Congratulations! (your membership has been approved)"
1489
msgstr ""
1490
1491
+ #: s2member/includes/syscon.inc.php:229
1492
msgctxt "s2member-front"
1493
msgid ""
1494
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
1504
"%s"
1505
msgstr ""
1506
1507
+ #: s2member/includes/syscon.inc.php:232 s2member-pro/includes/syscon.inc.php:98
1508
msgctxt "s2member-front"
1509
msgid "Thank You! (instructions for access)"
1510
msgstr ""
1511
1512
+ #: s2member/includes/syscon.inc.php:233
1513
msgctxt "s2member-front"
1514
msgid ""
1515
"Thanks %%%%first_name%%%%!\n"
1526
"%s"
1527
msgstr ""
1528
1529
+ #: s2member/includes/syscon.inc.php:261
1530
msgctxt "s2member-front"
1531
msgid "Free Subscriber"
1532
msgstr ""
1533
1534
+ #: s2member/includes/syscon.inc.php:261
1535
msgctxt "s2member-front"
1536
msgid "Bronze Member"
1537
msgstr ""
1538
1539
+ #: s2member/includes/syscon.inc.php:261
1540
msgctxt "s2member-front"
1541
msgid "Silver Member"
1542
msgstr ""
1543
1544
+ #: s2member/includes/syscon.inc.php:261
1545
msgctxt "s2member-front"
1546
msgid "Gold Member"
1547
msgstr ""
1548
1549
+ #: s2member/includes/syscon.inc.php:261
1550
msgctxt "s2member-front"
1551
msgid "Platinum Member"
1552
msgstr ""
1553
1554
+ #: s2member/includes/syscon.inc.php:261
1555
msgctxt "s2member-front"
1556
msgid "Level %s Member"
1557
msgstr ""
2484
2485
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:288
2486
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:626
2487
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:332
2488
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:655
2489
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:388
2490
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:722
2491
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:469
2496
2497
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:492
2498
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:743
2499
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:492
2500
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:808
2501
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:561
2502
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:874
2503
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:737
2512
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:773
2513
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:125
2514
#: s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:142
2515
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:501
2516
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:522
2517
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:817
2518
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:838
2519
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:570
2520
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:591
2521
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:883
2532
2533
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:516
2534
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:764
2535
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:513
2536
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:829
2537
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:582
2538
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:895
2539
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:758
2543
msgstr ""
2544
2545
#: s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:784
2546
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:849
2547
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:915
2548
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1101
2549
#: s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:137
3727
msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal®</a> to cancel your Subscription."
3728
msgstr ""
3729
3730
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:344
3731
+ #: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:667
3732
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:486
3733
#: s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:918
3734
msgctxt "s2member-front"
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
- Version: 130802
4
- Stable tag: 130802
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
@@ -66,7 +66,7 @@ Yes. s2Member and s2Member Pro, are also both compatible with Multisite Networki
66
67
**NOTE:** Please do NOT use the WordPress® forums to seek company support. Support for s2Member® is handled in [our own support forums](http://www.s2member.com/forums/).
68
69
- [youtube http://www.youtube.com/watch?v=neGsNjWhOBs /]
70
71
The s2Member® Framework (free) integrates with PayPal® Website Payments Standard (also free), and fully supports recurring billing. s2Member supports custom Pages for registration (including Custom Registration/Profile Fields), account access, and a lot more. s2Member is compatible with Multisite Networking too, and even with BuddyPress and bbPress. With the s2Member® Pro add-on (an optional paid upgrade), you can add support for unlimited Membership Levels, PayPal® Website Payments Pro (w/ Pro Forms to facilitate on-site credit card processing), Authorize.Net® (also with Pro Forms), Google® Checkout, ClickBank®, advanced User Import/Export tools, the ability to use Coupon Codes, and many other enhancements. Videos available at: [s2Member.com / Videos](http://www.s2member.com/videos/).
72
@@ -92,11 +92,19 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
92
93
== Upgrade Notice ==
94
95
- = v130802 =
96
(Maintenance Release) Upgrade immediately.
97
98
== Changelog ==
99
100
= v130802 =
101
* (s2Member Pro) **Compatibility, WordPress® v3.6** Updating s2Member® Pro Form templates and their underlying CSS. This update improves their appearance against the Twenty Thirteen theme that comes with WordPress® v3.6. Specifically, some of the Pro Form buttons were a little out of place in this new default theme. Fixed in this release.
102
* (s2Member Pro) **Compatibility, Checkout Options (#443)** Revision 3. Updating this feature to support a wider variety of WordPress® configurations and content filters. This update also resolves an empty `desc=""` attribute error reported by some site owners. Feature description... It is now possible to build dropdown menus offering your customers a variety of options using a Single Pro Form. This is accomplished quite easily using Shortcodes. For full details and examples, please check this section of your Dashboard in the latest release. See: `s2Member® -› PayPal® Pro Forms -› Wrapping Multiple Shortcodes as "Checkout Options"`. NOTE: this works for PayPal® Pro Forms, and ALSO for Authorize.Net Pro Forms.
1
=== s2Member® Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
2
3
+ Version: 130816
4
+ Stable tag: 130816
5
6
SSL Compatible: yes
7
bbPress® Compatible: yes
66
67
**NOTE:** Please do NOT use the WordPress® forums to seek company support. Support for s2Member® is handled in [our own support forums](http://www.s2member.com/forums/).
68
69
+ [youtube http://www.youtube.com/watch?v=2C3Lan7vxw0 /]
70
71
The s2Member® Framework (free) integrates with PayPal® Website Payments Standard (also free), and fully supports recurring billing. s2Member supports custom Pages for registration (including Custom Registration/Profile Fields), account access, and a lot more. s2Member is compatible with Multisite Networking too, and even with BuddyPress and bbPress. With the s2Member® Pro add-on (an optional paid upgrade), you can add support for unlimited Membership Levels, PayPal® Website Payments Pro (w/ Pro Forms to facilitate on-site credit card processing), Authorize.Net® (also with Pro Forms), Google® Checkout, ClickBank®, advanced User Import/Export tools, the ability to use Coupon Codes, and many other enhancements. Videos available at: [s2Member.com / Videos](http://www.s2member.com/videos/).
72
92
93
== Upgrade Notice ==
94
95
+ = v130816 =
96
(Maintenance Release) Upgrade immediately.
97
98
== Changelog ==
99
100
+ = v130816 =
101
+ * (s2Member Pro) **Compatibility, ClickBank (#467)** Improving support for ClickBank PitchPlus Upsell Flows. Please see [this thread](http://www.s2member.com/forums/topic/clickbank-buttons-not-working/#post-55725) for further details.
102
+ * (s2Member/s2Member Pro) **User Search on Multisite Networks (#468)** User search functionality was partially broken for Child Blogs in a Multisite Network after some improvements were implemented in s2Member® v130731. The issue has now been corrected in this release for Multisite Networks. For further details, please see [this thread](http://www.s2member.com/forums/topic/user-search-no-longer-working/#post-55778).
103
+ * (s2Member/s2Member Pro) **Z-Index in Menu Pages (#461)** Stacking order against a WordPress® installation running a Dashboard with a collapsed sidebar menu (left side) was causing some UI problems. Fixed in this release.
104
+ * (s2Member/s2Member Pro) **SSL Compatibility (#437)** Adding a new option in the `s2Member® -› General Options -› Login Welcome Page` section. The default value for this new option is always `yes`. However, the default functionality can be turned off (if you prefer). This new option allows site owners to better integrate with a core WordPress® feature commonly referred to as `FORCE_SSL_LOGIN` and/or `FORCE_SSL_ADMIN`. This new feature can be used, or not. It is intended mainly for site owners running w/ `FORCE_SSL_LOGIN` and/or `FORCE_SSL_ADMIN`.
105
+ * (s2Member/s2Member Pro) **Login/Registration Design Option (#437)** Adding a new option in the `s2Member® -› General Options -› Login/Registration Design` section. This new option (found at the bottom of `s2Member® -› General Options -› Login/Registration Design`) allows a site owner to show/hide the `Back To Home Page` link at the bottom of the default WordPress® Login/Registration system. This can be useful for site owners running w/ `FORCE_SSL_LOGIN` and/or `FORCE_SSL_ADMIN`; where they would prefer NOT to link customers back to the main site under a default HTTPS link; but rather, create their own link and gain better control over this area of their site.
106
+ * (s2Member/s2Member Pro) **Videos (#467)** Updating internal documentation found in `Dashboard -› s2Member® -› Quick-Start`. Specifically, the video player here was integrated with an older version of the YouTube® API and was not working properly. Fixed in this release.
107
+
108
= v130802 =
109
* (s2Member Pro) **Compatibility, WordPress® v3.6** Updating s2Member® Pro Form templates and their underlying CSS. This update improves their appearance against the Twenty Thirteen theme that comes with WordPress® v3.6. Specifically, some of the Pro Form buttons were a little out of place in this new default theme. Fixed in this release.
110
* (s2Member Pro) **Compatibility, Checkout Options (#443)** Revision 3. Updating this feature to support a wider variety of WordPress® configurations and content filters. This update also resolves an empty `desc=""` attribute error reported by some site owners. Feature description... It is now possible to build dropdown menus offering your customers a variety of options using a Single Pro Form. This is accomplished quite easily using Shortcodes. For full details and examples, please check this section of your Dashboard in the latest release. See: `s2Member® -› PayPal® Pro Forms -› Wrapping Multiple Shortcodes as "Checkout Options"`. NOTE: this works for PayPal® Pro Forms, and ALSO for Authorize.Net Pro Forms.
s2member.php CHANGED
@@ -19,8 +19,8 @@
19
*/
20
/* -- This section for WordPress® parsing. ------------------------------------------------------------------------------
21
22
- Version: 130802
23
- Stable tag: 130802
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", "130802" /* !#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", "130802" /* !#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: 130816
23
+ Stable tag: 130816
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", "130816" /* !#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", "130816" /* !#distro-version#! */);
109
/*
110
Several compatibility checks.
111
If all pass, load the s2Member plugin.