Community Support Forums — WordPress® ( Users Helping Users ) — 2011-12-20T09:51:02-05:00 http://www.primothemes.com/forums/feed.php?f=40&t=13139 2011-12-20T09:51:02-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=57885#p57885 <![CDATA[s2Member v111220 / Source Code: s2member\i...]]>
s2Member v111220
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: December 20, 2011, 9:51 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — December 20th, 2011, 9:51 am


]]>
2011-12-07T01:04:09-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=55567#p55567 <![CDATA[s2Member v111206 / Source Code: s2member\i...]]>
s2Member v111206
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: December 7, 2011, 1:04 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — December 7th, 2011, 1:04 am


]]>
2011-11-05T19:26:53-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=51941#p51941 <![CDATA[s2Member v111105 / Source Code: s2member\i...]]>
s2Member v111105
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: November 5, 2011, 8:26 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — November 5th, 2011, 7:26 pm


]]>
2011-10-29T20:36:16-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=50037#p50037 <![CDATA[s2Member v111029 / Source Code: s2member\i...]]>
s2Member v111029
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: October 29, 2011, 9:36 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 29th, 2011, 8:36 pm


]]>
2011-10-17T15:40:14-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=47831#p47831 <![CDATA[s2Member v111017 / Source Code: s2member\i...]]>
s2Member v111017
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: October 17, 2011, 1:40 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 17th, 2011, 3:40 pm


]]>
2011-10-11T14:36:07-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=46232#p46232 <![CDATA[s2Member v111011 / Source Code: s2member\i...]]>
s2Member v111011
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: October 11, 2011, 12:36 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 11th, 2011, 2:36 pm


]]>
2011-10-03T15:48:41-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=44362#p44362 <![CDATA[s2Member v111003 / Source Code: s2member\i...]]>
s2Member v111003
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: October 3, 2011, 1:48 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 3rd, 2011, 3:48 pm


]]>
2011-10-03T03:42:20-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=43069#p43069 <![CDATA[s2Member v111002 / Source Code: s2member\i...]]>
s2Member v111002
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: October 3, 2011, 1:42 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 3rd, 2011, 3:42 am


]]>
2011-09-27T05:27:24-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=41315#p41315 <![CDATA[s2Member v110927 / Source Code: s2member\i...]]>
s2Member v110927
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: September 27, 2011, 3:27 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 27th, 2011, 5:27 am


]]>
2011-09-26T21:04:02-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=40071#p40071 <![CDATA[s2Member v110926 / Source Code: s2member\i...]]>
s2Member v110926
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: September 26, 2011, 7:04 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 26th, 2011, 9:04 pm


]]>
2011-09-17T17:02:57-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=38215#p38215 <![CDATA[s2Member v110915 / Source Code: s2member\i...]]>
s2Member v110915
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: September 17, 2011, 3:03 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 17th, 2011, 5:02 pm


]]>
2011-09-14T01:28:35-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=36794#p36794 <![CDATA[s2Member v110913 / Source Code: s2member\i...]]>
s2Member v110913
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: September 13, 2011, 11:28 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 14th, 2011, 1:28 am


]]>
2011-09-13T12:03:37-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=35522#p35522 <![CDATA[s2Member v110912 / Source Code: s2member\i...]]>
s2Member v110912
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: September 13, 2011, 10:03 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 13th, 2011, 12:03 pm


]]>
2011-08-15T15:15:34-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=31633#p31633 <![CDATA[s2Member v110815 / Source Code: s2member\i...]]>
s2Member v110815
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: August 15, 2011, 4:15 pm

Open for public discussion.
(!-- s-words :: --)Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code jQuery(window).load(function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli'+location.hash).addClass('hilite'); }); jQuery(window).bind('hashchange', function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli').removeClass('hilite'); jQuery('olli'+location.hash).addClass('hilite'); }); [ full view ]s2member\includes\menu-pages\res-ops.inc.php ?php /** * Menu page for the s2Member plugin ( Restriction Options page ). * * Copyright: © 2009-2011 * {@link http://www.websharks-inc.com/ WebSharks, Inc.} * ( coded in the USA ) * * Released under the terms of the GNU General Public License. * You should have received a copy of the GNU General Public License, * along with this software. In the main directory, see: /licensing/ * If not, see: {@link http://www.gnu.org/licenses/}. * * @package s2Member\Menu_Pages * @since 3.0 */ if ( realpath ( __FILE__ ) === realpath ( $_SERVER [ "SCRIPT_FILENAME" ] ) ) exit ( "Do not access this file directly." ) ; /**/ if ( ! class_exists ( "c_ws_plugin__s2member_menu_page_res_ops" ) ) { /** * Menu page for the s2Member plugin ( Restriction Options page ). * * @package s2Member\Menu_Pages * @since 110531 */ class c_ws_plugin__s2member_menu_page_res_ops { public function __construct ( ) { echo 'div class="wrap ws-menu-page"' . "\n" ; /**/ echo 'div id="icon-plugins" class="icon32"br //div' . "\n" ; echo 'h2s2Member® Restriction Options/h2' . "\n" ; /**/ echo 'table class="ws-menu-page-table"' . "\n" ; echo 'tbody class="ws-menu-page-table-tbody"' . "\n" ; echo 'tr class="ws-menu-page-table-tr"' . "\n" ; echo 'td class="ws-menu-page-table-l"' . "\n" ; /**/ echo 'form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form"' . "\n" ; echo 'input type="hidden" name="ws_plugin__s2member_options_save" id="ws-plugin--s2member-options-save" value="' . esc_attr ( wp_create_nonce ( "ws-plugin--s2member-options-save" ) ) . '" /' . "\n" ; echo 'input type="hidden" name="ws_plugin__s2member_configured" id="ws-plugin--s2member-configured" value="1" /' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_before_left_sections" , get_defined_vars ( ) ) ; /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_post_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_post_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Post Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-post-level-access-section"' . "\n" ; echo 'h3Post Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Posts that are restricted to certain Membership Access Levels. s2Member also supports Custom Post Types here, which were first introduced in WordPress® 3.0. If you have a theme or plugin installed, that has enabled Custom Post Types ( i.e. Music/Videos or something else ), you can put the IDs for those Posts here./p' . "\n" ; echo 'pemstrong*Note*/strong Protecting individual Posts, ONLY protects the Permalinks for those Posts. It is still possible for excerpts of protected content to be seen in search results generated by WordPress®, feeds, and Archive views; such as your Home Page, inside a Category listing, or through other queries formulated by your theme. This is the intended functionality. Excerpts are a great way to "tease" public visitors. In other words, public visitors may have access to excerpts introduced by your theme, but any attempt to view the full Post ( i.e. the Permalink ) will result in an automatic redirect to your Membership Options Page; requiring registration. All of that being said, if you would like to protect many Posts at once ( including Archive views ), you can use Category Level Restrictions, Tag Level Restrictions, or have a look down below at s2Member\'s options for "Alternative View Protection", which deals with search results, as well as feeds./em/p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Post IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_post_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-posts"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Posts That Require Highest Level #' . $n . ':' . "\n" : 'Posts That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_posts" id="ws-plugin--s2member-level' . $n . '-posts" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) . '" /br /' . "\n" ; echo 'Post IDs in comma-delimited format. Example: code1,2,3,34,8,21/code — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_post_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_page_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_page_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Page Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-page-level-access-section"' . "\n" ; echo 'h3Page Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Pages that are restricted to certain Membership Access Levels./p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Page IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_page_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-pages"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Pages That Require Highest Level #' . $n . ':' . "\n" : 'Pages That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_pages" id="ws-plugin--s2member-level' . $n . '-pages" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) . '" /br /' . "\n" ; echo 'Page IDs in comma-delimited format. Example: code1,2,3,34,8,21/code — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_page_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_tag_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_tag_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Tag Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-tag-level-access-section"' . "\n" ; echo 'h3Tag Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Tags that are restricted to certain Membership Access Levels. This is very similar to Category Level Access. When you restrict access to a Tag Archive, it also restricts access to any Post having that Tag; even if a Post has other Tags. em*Tip*/em ... Tags can be applied to any Post, without affecting your Category structure at all. If you\'d like to use Tags with Pages, get a href="http://wordpress.org/extend/plugins/page-tagger/" target="_blank" rel="external"Page Tagger/a em( compatible with s2Member )/em./p' . "\n" ; echo 'pTags are caSe sensitive. The Tag codemembers only/code is NOT the same as codeMembers Only/code./p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_tag_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-ptags"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Tags That Require Highest Level #' . $n . ':' . "\n" : 'Tags That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_ptags" id="ws-plugin--s2member-level' . $n . '-ptags" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_ptags" ] ) . '" /br /' . "\n" ; echo 'Tags in comma-delimited format. Example: ' . ( ( $n === 0 ) ? 'codefree,subscribers only/code' : 'codemembers,members only/code' ) . ' — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_tag_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_category_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_category_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Category Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-category-level-access-section"' . "\n" ; echo 'h3Category Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Categories that are restricted to certain Membership Access Levels. Category restrictions are a bit more complex. When you restrict access to a Category, it also restricts access to any child Categories it may have ( aka: sub-Categories ). In other words, restricting a Category protects a Category Archive, all of its child Category Archives, and any Posts contained within the Category, or its child Categories./p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Category IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_category_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-catgs"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Categories That Require Highest Level #' . $n . ':' . "\n" : 'Categories That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_catgs" id="ws-plugin--s2member-level' . $n . '-catgs" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_catgs" ] ) . '" /br /' . "\n" ; echo 'Category IDs in comma-delimited format. Example: code1,2,3,34,8,21/code — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; /**/ echo 'tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_category_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_uri_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_uri_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="URI Restrictions ( typical w/ BuddyPress )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-uri-level-access-section"' . "\n" ; echo 'h3URI Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify URIs ( or word fragments found in URIs ) that are restricted to certain Membership Access Levels. Control over URIs is a little more complex. This section is intended for advanced webmasters only. That being said, here are the basics... A REQUEST_URI, is the portion of the URL that comes after the domain. This is a URL codehttp://www.example.com/path/to/file.php/code, and this is the URI: code/path/to/file.php/code./p' . "\n" ; echo 'pIn the fields below, you can provide a list ( one per line ) of URIs on your site that should be off-limits based on Membership Level. You can also use word fragments instead of a full URI. If a word fragment is found anywhere in the URI, it will be protected. Wildcards and other regex patterns are not supported here, and therefore you don\'t need to escape special characters or anything. Please note, these ARE caSe sensitive. You must be specific with respect to case sensitivity. The word fragment codesome-path//code would NOT match a URI that contains codesome-Path//code. emA few a href="#" Replacement Codes/a are also supported here./em/p' . "\n" ; echo 'pemstrong*BuddyPress ( and similar )*/strong URI Restrictions work great with plugins like BuddyPress that add new areas to your site ( where those new areas are NOT necessarily a Post/Page/Tag/Category ). In other words, anytime you\'d like to protect a specific feature offered by BuddyPress ( or other plugins ), you\'ll need to nail down some word fragments found in the URIs associated with those areas. For instance, with BuddyPress you might have: [ a href="#" click for example/a ]./em/p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_uri_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-ruris"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'URIs That Require Highest Level #' . $n . ':' . "\n" : 'URIs That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'textarea name="ws_plugin__s2member_level' . $n . '_ruris" id="ws-plugin--s2member-level' . $n . '-ruris" rows="3" wrap="off" spellcheck="false"' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_ruris" ] ) . '/textareabr /' . "\n" ; echo 'URIs and/or word fragments found in URIs. One per line please.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_uri_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_query_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_query_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Alternative View Protection ( please read )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-query-level-access-section"' . "\n" ; echo 'h3Alternative View Protection ( optional / experimental )/h3' . "\n" ; echo 'ps2Member protects Categories, Tags, Posts, Pages, Files, URIs & more. BUT, even with all of those security restrictions, it\'s still possible for protected content excerpts to be seen through XML feeds, in search results generated by WordPress®; and/or ( depending on your theme ), possibly in other Archive views; which might include: Posts by Author, Posts by Date, a list of featured items formulated by your theme, OR even through other widgets/plugins adding functionality to your site. ~ We refer to all of these collectively, as "Alternative Views"./p' . "\n" ; echo 'pUsing the options below, you can tell s2Member to protect some ( or all ) of these "Alternative Views", by filtering WordPress® database queries for you. s2Member can automatically hide protected content that is NOT available to the current User/Member. In other words, s2Member is capable of pre-filtering ALL database queries, so that excerpts of protected content will not be allowed to slip through. This is marked "experimental", because we\'re still testing this against MANY widget/plugin/theme combinations. Please a href="' . esc_attr (c_ws_plugin__s2member_readmes:: parse_readme_value ( "Forum URI" ) ) . '" target="_blank"report/a all bugs./p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_uri_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-filter-wp-query"' . "\n" ; echo 'Protect Alternative Views?' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_filter_wp_query" id="ws-plugin--s2member-filter-wp-query"' . "\n" ; echo 'option value="none"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "none" ) ? ' selected="selected"' : '' ) . 'None ( do NOT filter any WordPress® queries )/option' . "\n" ; echo 'option value="feeds"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "feeds" ) ? ' selected="selected"' : '' ) . 'Feeds Only ( hide protected content in feeds only )/option' . "\n" ; echo 'option value="searches"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "searches" ) ? ' selected="selected"' : '' ) . 'Searches Only ( hide protected content in search results only )/option' . "\n" ; echo 'option value="searches,feeds"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "searches,feeds" ) ? ' selected="selected"' : '' ) . 'Searches & Feeds Only ( hide protected content in search results & feeds only )/option' . "\n" ; echo 'option value="all"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "all" ) ? ' selected="selected"' : '' ) . 'Yes ( filter ALL WordPress® queries; protecting all Alternative Views )/option' . "\n" ; echo '/selectbr /' . "\n" ; echo 'Attn Developers: Filters can be suppressed dynamically, using this technique:br /' . "\n" ; echo 'codequery_posts(" ... &suppress_filters=true");/code' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_query_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_sp_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_sp_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Specific Post/Page Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-sp-access-section"' . "\n" ; echo 'h3Specific Post/Page Access Restrictions ( optional )/h3' . "\n" ; echo 'ps2Member now supports an additional layer of functionality ( very powerful ), which allows you to sell access to specific Posts/Pages that you\'ve created in WordPress®. Specific Post/Page Access works independently from Member Level Access. That is, you can sell an unlimited number of Posts/Pages using "Buy Now" Buttons, and your Customers will NOT be required to have a Membership Account with your site in order to receive access. If they are already a Member, that\'s fine, but they won\'t need to be./p' . "\n" ; echo 'pIn other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link ( see: codes2Member - PayPal® Options - Specific Post/Page Email/code ). Authentication is handled automatically through self-expiring links, good for 72 hours by default./p' . "\n" ; echo 'pSpecific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress®. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress® Post/Page that you\'ve created./p' . "\n" ; echo 'pVery simple. All you do is protect the Specific Post/Page IDs that are being sold on your site. Then, you can go to codes2Member - PayPal® Buttons - Specific Post/Page/code to generate "Buy Now" Buttons that you can insert into your WordPress® Editor, and make available on your site. The Button Generator for s2Member, will even let you Package Additional Posts/Pages together into one transaction./p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Post/Page IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_sp_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-specific-ids"' . "\n" ; echo 'Specific Post/Page IDs Being Sold On Your Site:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_specific_ids" id="ws-plugin--s2member-specific-ids" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) . '" /br /' . "\n" ; echo 'Post/Page IDs in comma-delimited format. Example: code1,2,3,34,8,21/code * Note... the word codeall/code does NOT work here. Also, please be careful not to create a conflict with other Access Restrictions. If you are going to sell Specific Post/Page Access, you should enter specific Post/Page IDs here; and strongmake SURE that you\'ve NOT already protected any of these Posts/Pages with Member Level Access Restrictions/strong. In other words, if you configure s2Member, in such as a way, that a Post/Page requires Membership Level Access, you cannot sell that same Post/Page through Specific Post/Page Access. Doing so, would create a conflict. Customers that purchased Specific Post/Page Access, would be unable to access the Post/Page - without also having a Membership. Not good. So be careful with this.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_sp_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_brute_force_restrictions" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_brute_force_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Brute Force IP/Login Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-brute-force-restrictions-section"' . "\n" ; echo 'h3Brute Force IP/Login Restrictions ( prevents username/password guessing )/h3' . "\n" ; echo 'input type="button" id="ws-plugin--s2member-brute-force-restrictions-reset-button" value="Reset Brute Force Logs" class="ws-menu-page-right" style="min-width:175px;" /' . "\n" ; echo 'pAs with any Membership system, it is possible for someone to try and guess Username/Password combinations by attempting a a href="http://en.wikipedia.org/wiki/Brute-force_attack" target="_blank" rel="external"Brute Force Attack/a; whereby multiple/repeated logins are strategically attempted with various Username/Password combinations until a correct guess is made. It is NOT likely that you\'ll be attacked in this way, but it\'s still a good idea to protect your system; just in case somebody tries this. s2Member thwarts this behavior by monitoring failed login attempts that occur within a short period of time. Whenever s2Member detects an IP address ( i.e. a remote user ) that is consistently failing to enter a valid Username/Password, a temporary ban is created; preventing additional attempts from taking place for 30 minutes. This temporary ban, will ONLY affect the offending IP address./p' . "\n" ; echo 'pem*Note* an empty IP address ( associated with someone browsing anonymously ), is also considered a unique IP address, so it cannot circumvent s2Member\'s security./em/p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_ip_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-max-failed-login-attempts"' . "\n" ; echo 'Maximum Failed Login Attempts:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_max_failed_login_attempts" id="ws-plugin--s2member-max-failed-login-attempts"' . "\n" ; $ws_plugin__s2member_temp_s = apply_filters ( "ws_plugin__s2member_track_failed_logins__exp_time" , "30 minutes" ) ; echo 'option value="1"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 1 ) ? ' selected="selected"' : '' ) . 'Allow 1 failed login attempt ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="2"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 2 ) ? ' selected="selected"' : '' ) . 'Allow 2 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="3"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 3 ) ? ' selected="selected"' : '' ) . 'Allow 3 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="4"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 4 ) ? ' selected="selected"' : '' ) . 'Allow 4 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="5"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 5 ) ? ' selected="selected"' : '' ) . 'Allow 5 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="10"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 10 ) ? ' selected="selected"' : '' ) . 'Allow 10 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="20"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 20 ) ? ' selected="selected"' : '' ) . 'Allow 20 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="30"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 30 ) ? ' selected="selected"' : '' ) . 'Allow 30 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="40"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 40 ) ? ' selected="selected"' : '' ) . 'Allow 40 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="50"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 50 ) ? ' selected="selected"' : '' ) . 'Allow 50 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="75"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 75 ) ? ' selected="selected"' : '' ) . 'Allow 75 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="100"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 100 ) ? ' selected="selected"' : '' ) . 'Allow 100 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="0"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 0 ) ? ' selected="selected"' : '' ) . 'Allow infinite failed logins ( Brute Force Restrictions disabled )/option' . "\n" ; echo '/selectbr /' . "\n" ; echo 'When/if you change this, you should also strongReset Brute Force Logs/strong ( click button above ).' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'br /br /The default period of "30 minutes" could be modified through this WordPress® Filter:br /codews_plugin__s2member_track_failed_logins__exp_time/code' . "\n" : '' ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_ip_restrictions" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_ip_restrictions" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_ip_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Unique IP Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-ip-restrictions-section"' . "\n" ; echo 'h3Unique IP Access Restrictions ( prevents username/link sharing )/h3' . "\n" ; echo 'input type="button" id="ws-plugin--s2member-ip-restrictions-reset-button" value="Reset IP Restriction Logs" class="ws-menu-page-right" style="min-width:175px;" /' . "\n" ; echo 'pAs with any Membership system, it is possible for one Member to signup, and then share their Username with someone else; or even post it online for the whole world to see. This is known as Link Sharing ( aka: Username Sharing ). It is NOT likely that you\'ll be attacked in this way, but it\'s still a good idea to protect your system; just in case somebody tries this. s2Member\'s IP Restrictions work for Membership Level Access ( account logins ), Specific Post/Page Access, Registration Links, and other secure Entry Points. In all cases, the rules are simple. A single Username, Access Link, and/or Entry Point ... is only valid for a certain number of unique IP addresses. Once that limit is reached, s2Member assumes there has been a security breach. At that time, s2Member will place a temporary ban ( preventing access ) to a Specific Post/Page, or to an account associated with a particular Username. This temporary ban, will ONLY affect the offending Link and/or Username associated with the security breach. You can fine-tune this behavior, using the options below./p' . "\n" ; echo 'pem*Note* an empty IP address ( associated with someone browsing anonymously ), is also considered a unique IP address, so it cannot circumvent s2Member\'s security./em/p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_ip_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-max-ip-restriction"' . "\n" ; echo 'Maximum Unique IP Addresses Allowed:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_max_ip_restriction" id="ws-plugin--s2member-max-ip-restriction"' . "\n" ; $ws_plugin__s2member_temp_s = apply_filters ( "ws_plugin__s2member_ip_restrictions__concurrency_time_per_ip" , "30 days" ) ; echo 'option value="1"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 1 ) ? ' selected="selected"' : '' ) . 'Allow up to 1 unique IP per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="2"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 2 ) ? ' selected="selected"' : '' ) . 'Allow up to 2 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="3"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 3 ) ? ' selected="selected"' : '' ) . 'Allow up to 3 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="4"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 4 ) ? ' selected="selected"' : '' ) . 'Allow up to 4 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="5"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 5 ) ? ' selected="selected"' : '' ) . 'Allow up to 5 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="10"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 10 ) ? ' selected="selected"' : '' ) . 'Allow up to 10 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="20"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 20 ) ? ' selected="selected"' : '' ) . 'Allow up to 20 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="30"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 30 ) ? ' selected="selected"' : '' ) . 'Allow up to 30 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="40"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 40 ) ? ' selected="selected"' : '' ) . 'Allow up to 40 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="50"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 50 ) ? ' selected="selected"' : '' ) . 'Allow up to 50 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="75"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 75 ) ? ' selected="selected"' : '' ) . 'Allow up to 75 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="100"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 100 ) ? ' selected="selected"' : '' ) . 'Allow up to 100 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="0"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 0 ) ? ' selected="selected"' : '' ) . 'Allow infinite IPs ( all IP Restrictions are disabled )/option' . "\n" ; echo '/select' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'br /The default period of "30 days" could be modified through this WordPress® Filter:br /codews_plugin__s2member_ip_restrictions__concurrency_time_per_ip/code' . "\n" : '' ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-max-ip-restriction-time"' . "\n" ; echo 'Security Breach Timeout Period:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_max_ip_restriction_time" id="ws-plugin--s2member-max-ip-restriction-time"' . "\n" ; echo 'option value="300"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 300 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 5 mins )/option' . "\n" ; echo 'option value="900"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 900 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 15 mins )/option' . "\n" ; echo 'option value="1800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 1800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 30 mins )/option' . "\n" ; echo 'option value="3600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 3600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 hour )/option' . "\n" ; echo 'option value="7200"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 7200 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 hours )/option' . "\n" ; echo 'option value="14400"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 14400 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 4 hours )/option' . "\n" ; echo 'option value="21600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 21600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 6 hours )/option' . "\n" ; echo 'option value="28800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 28800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 8 hours )/option' . "\n" ; echo 'option value="43200"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 43200 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 12 hours )/option' . "\n" ; echo 'option value="86400"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 86400 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 24 hours )/option' . "\n" ; echo 'option value="172800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 172800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 days )/option' . "\n" ; echo 'option value="345600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 345600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 4 days )/option' . "\n" ; echo 'option value="604800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 604800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 week )/option' . "\n" ; echo 'option value="1209600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 1209600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 weeks )/option' . "\n" ; echo 'option value="2629743"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 2629743 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 month )/option' . "\n" ; echo 'option value="5259487"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 5259487 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 months )/option' . "\n" ; echo 'option value="7889231"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 7889231 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 3 months )/option' . "\n" ; echo 'option value="15778463"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 15778463 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 6 months )/option' . "\n" ; echo 'option value="31556926"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 31556926 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 year )/option' . "\n" ; echo '/selectbr /' . "\n" ; echo 'When/if you change this, you should also strongReset IP Restriction Logs/strong ( click button above ).' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_ip_restrictions" , get_defined_vars ( ) ) ; } /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_after_left_sections" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'p class="submit"input type="submit" class="button-primary" value="Save All Changes" //p' . "\n" ; /**/ echo '/form' . "\n" ; /**/ echo '/td' . "\n" ; /**/ echo 'td class="ws-menu-page-table-r"' . "\n" ; c_ws_plugin__s2member_menu_pages_rs:: display ( ) ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; /**/ echo '/div' . "\n" ; } } } /**/ new c_ws_plugin__s2member_menu_page_res_ops ( ) ; ? [ full view ]s2member\includes\menu-pages\res-ops.inc.php Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code(!-- :: s-words --)

Statistics: Posted by System Robot — August 15th, 2011, 3:15 pm


]]>
2011-07-11T17:32:04-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=27802#p27802 <![CDATA[s2Member v110710 / Source Code: s2member\i...]]>
s2Member v110710
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: July 11, 2011, 6:32 pm

Open for public discussion.
(!-- s-words :: --)Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code jQuery(window).load(function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli'+location.hash).addClass('hilite'); }); jQuery(window).bind('hashchange', function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli').removeClass('hilite'); jQuery('olli'+location.hash).addClass('hilite'); }); [ full view ]s2member\includes\menu-pages\res-ops.inc.php ?php /** * Menu page for the s2Member plugin ( Restriction Options page ). * * Copyright: © 2009-2011 * {@link http://www.websharks-inc.com/ WebSharks, Inc.} * ( coded in the USA ) * * Released under the terms of the GNU General Public License. * You should have received a copy of the GNU General Public License, * along with this software. In the main directory, see: /licensing/ * If not, see: {@link http://www.gnu.org/licenses/}. * * @package s2Member\Menu_Pages * @since 3.0 */ if ( realpath ( __FILE__ ) === realpath ( $_SERVER [ "SCRIPT_FILENAME" ] ) ) exit ( "Do not access this file directly." ) ; /**/ if ( ! class_exists ( "c_ws_plugin__s2member_menu_page_res_ops" ) ) { /** * Menu page for the s2Member plugin ( Restriction Options page ). * * @package s2Member\Menu_Pages * @since 110531 */ class c_ws_plugin__s2member_menu_page_res_ops { public function __construct ( ) { echo 'div class="wrap ws-menu-page"' . "\n" ; /**/ echo 'div id="icon-plugins" class="icon32"br //div' . "\n" ; echo 'h2s2Member® Restriction Options/h2' . "\n" ; /**/ echo 'table class="ws-menu-page-table"' . "\n" ; echo 'tbody class="ws-menu-page-table-tbody"' . "\n" ; echo 'tr class="ws-menu-page-table-tr"' . "\n" ; echo 'td class="ws-menu-page-table-l"' . "\n" ; /**/ echo 'form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form"' . "\n" ; echo 'input type="hidden" name="ws_plugin__s2member_options_save" id="ws-plugin--s2member-options-save" value="' . esc_attr ( wp_create_nonce ( "ws-plugin--s2member-options-save" ) ) . '" /' . "\n" ; echo 'input type="hidden" name="ws_plugin__s2member_configured" id="ws-plugin--s2member-configured" value="1" /' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_before_left_sections" , get_defined_vars ( ) ) ; /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_post_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_post_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Post Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-post-level-access-section"' . "\n" ; echo 'h3Post Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Posts that are restricted to certain Membership Access Levels. s2Member also supports Custom Post Types here, which were first introduced in WordPress® 3.0. If you have a theme or plugin installed, that has enabled Custom Post Types ( i.e. Music/Videos or something else ), you can put the IDs for those Posts here./p' . "\n" ; echo 'pemstrong*Note*/strong Protecting individual Posts, ONLY protects the Permalinks for those Posts. It is still possible for excerpts of protected content to be seen in search results generated by WordPress®, feeds, and Archive views; such as your Home Page, inside a Category listing, or through other queries formulated by your theme. This is the intended functionality. Excerpts are a great way to "tease" public visitors. In other words, public visitors may have access to excerpts introduced by your theme, but any attempt to view the full Post ( i.e. the Permalink ) will result in an automatic redirect to your Membership Options Page; requiring registration. All of that being said, if you would like to protect many Posts at once ( including Archive views ), you can use Category Level Restrictions, Tag Level Restrictions, or have a look down below at s2Member\'s options for "Alternative View Protection", which deals with search results, as well as feeds./em/p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Post IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_post_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-posts"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Posts That Require Highest Level #' . $n . ':' . "\n" : 'Posts That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_posts" id="ws-plugin--s2member-level' . $n . '-posts" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) . '" /br /' . "\n" ; echo 'Post IDs in comma-delimited format. Example: code1,2,3,34,8,21/code — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_post_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_page_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_page_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Page Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-page-level-access-section"' . "\n" ; echo 'h3Page Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Pages that are restricted to certain Membership Access Levels./p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Page IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_page_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-pages"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Pages That Require Highest Level #' . $n . ':' . "\n" : 'Pages That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_pages" id="ws-plugin--s2member-level' . $n . '-pages" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) . '" /br /' . "\n" ; echo 'Page IDs in comma-delimited format. Example: code1,2,3,34,8,21/code — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_page_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_tag_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_tag_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Tag Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-tag-level-access-section"' . "\n" ; echo 'h3Tag Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Tags that are restricted to certain Membership Access Levels. This is very similar to Category Level Access. When you restrict access to a Tag Archive, it also restricts access to any Post having that Tag; even if a Post has other Tags. em*Tip*/em ... Tags can be applied to any Post, without affecting your Category structure at all. If you\'d like to use Tags with Pages, get a href="http://wordpress.org/extend/plugins/page-tagger/" target="_blank" rel="external"Page Tagger/a em( compatible with s2Member )/em./p' . "\n" ; echo 'pTags are caSe sensitive. The Tag codemembers only/code is NOT the same as codeMembers Only/code./p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_tag_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-ptags"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Tags That Require Highest Level #' . $n . ':' . "\n" : 'Tags That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_ptags" id="ws-plugin--s2member-level' . $n . '-ptags" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_ptags" ] ) . '" /br /' . "\n" ; echo 'Tags in comma-delimited format. Example: ' . ( ( $n === 0 ) ? 'codefree,subscribers only/code' : 'codemembers,members only/code' ) . ' — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_tag_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_category_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_category_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Category Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-category-level-access-section"' . "\n" ; echo 'h3Category Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify Categories that are restricted to certain Membership Access Levels. Category restrictions are a bit more complex. When you restrict access to a Category, it also restricts access to any child Categories it may have ( aka: sub-Categories ). In other words, restricting a Category protects a Category Archive, all of its child Category Archives, and any Posts contained within the Category, or its child Categories./p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Category IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_category_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-catgs"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'Categories That Require Highest Level #' . $n . ':' . "\n" : 'Categories That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_level' . $n . '_catgs" id="ws-plugin--s2member-level' . $n . '-catgs" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_catgs" ] ) . '" /br /' . "\n" ; echo 'Category IDs in comma-delimited format. Example: code1,2,3,34,8,21/code — or you can type: codeall/code.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; /**/ echo 'tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_category_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_uri_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_uri_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="URI Restrictions ( typical w/ BuddyPress )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-uri-level-access-section"' . "\n" ; echo 'h3URI Level Access Restrictions ( optional )/h3' . "\n" ; echo 'pHere you can specify URIs ( or word fragments found in URIs ) that are restricted to certain Membership Access Levels. Control over URIs is a little more complex. This section is intended for advanced webmasters only. That being said, here are the basics... A REQUEST_URI, is the portion of the URL that comes after the domain. This is a URL codehttp://www.example.com/path/to/file.php/code, and this is the URI: code/path/to/file.php/code./p' . "\n" ; echo 'pIn the fields below, you can provide a list ( one per line ) of URIs on your site that should be off-limits based on Membership Level. You can also use word fragments instead of a full URI. If a word fragment is found anywhere in the URI, it will be protected. Wildcards and other regex patterns are not supported here, and therefore you don\'t need to escape special characters or anything. Please note, these ARE caSe sensitive. You must be specific with respect to case sensitivity. The word fragment codesome-path//code would NOT match a URI that contains codesome-Path//code. emA few a href="#" Replacement Codes/a are also supported here./em/p' . "\n" ; echo 'pemstrong*BuddyPress ( and similar )*/strong URI Restrictions work great with plugins like BuddyPress that add new areas to your site ( where those new areas are NOT necessarily a Post/Page/Tag/Category ). In other words, anytime you\'d like to protect a specific feature offered by BuddyPress ( or other plugins ), you\'ll need to nail down some word fragments found in the URIs associated with those areas. For instance, with BuddyPress you might have: [ a href="#" click for example/a ]./em/p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_uri_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-level' . $n . '-ruris"' . "\n" ; echo ( $n === $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'URIs That Require Highest Level #' . $n . ':' . "\n" : 'URIs That Require Level #' . $n . ' Or Higher:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'textarea name="ws_plugin__s2member_level' . $n . '_ruris" id="ws-plugin--s2member-level' . $n . '-ruris" rows="3" wrap="off" spellcheck="false"' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_ruris" ] ) . '/textareabr /' . "\n" ; echo 'URIs and/or word fragments found in URIs. One per line please.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; } /**/ echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_uri_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_query_level_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_query_level_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Alternative View Protection ( please read )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-query-level-access-section"' . "\n" ; echo 'h3Alternative View Protection ( optional / experimental )/h3' . "\n" ; echo 'ps2Member protects Categories, Tags, Posts, Pages, Files, URIs & more. BUT, even with all of those security restrictions, it\'s still possible for protected content excerpts to be seen through XML feeds, in search results generated by WordPress®; and/or ( depending on your theme ), possibly in other Archive views; which might include: Posts by Author, Posts by Date, a list of featured items formulated by your theme, OR even through other widgets/plugins adding functionality to your site. ~ We refer to all of these collectively, as "Alternative Views"./p' . "\n" ; echo 'pUsing the options below, you can tell s2Member to protect some ( or all ) of these "Alternative Views", by filtering WordPress® database queries for you. s2Member can automatically hide protected content that is NOT available to the current User/Member. In other words, s2Member is capable of pre-filtering ALL database queries, so that excerpts of protected content will not be allowed to slip through. This is marked "experimental", because we\'re still testing this against MANY widget/plugin/theme combinations. Please a href="' . esc_attr (c_ws_plugin__s2member_readmes:: parse_readme_value ( "Forum URI" ) ) . '" target="_blank"report/a all bugs./p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_uri_level_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-filter-wp-query"' . "\n" ; echo 'Protect Alternative Views?' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_filter_wp_query" id="ws-plugin--s2member-filter-wp-query"' . "\n" ; echo 'option value="none"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "none" ) ? ' selected="selected"' : '' ) . 'None ( do NOT filter any WordPress® queries )/option' . "\n" ; echo 'option value="feeds"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "feeds" ) ? ' selected="selected"' : '' ) . 'Feeds Only ( hide protected content in feeds only )/option' . "\n" ; echo 'option value="searches"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "searches" ) ? ' selected="selected"' : '' ) . 'Searches Only ( hide protected content in search results only )/option' . "\n" ; echo 'option value="searches,feeds"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "searches,feeds" ) ? ' selected="selected"' : '' ) . 'Searches & Feeds Only ( hide protected content in search results & feeds only )/option' . "\n" ; echo 'option value="all"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "filter_wp_query" ] === "all" ) ? ' selected="selected"' : '' ) . 'Yes ( filter ALL WordPress® queries; protecting all Alternative Views )/option' . "\n" ; echo '/selectbr /' . "\n" ; echo 'Attn Developers: Filters can be suppressed dynamically, using this technique:br /' . "\n" ; echo 'codequery_posts(" ... &suppress_filters=true");/code' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_query_level_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_sp_access" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_sp_access" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Specific Post/Page Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-sp-access-section"' . "\n" ; echo 'h3Specific Post/Page Access Restrictions ( optional )/h3' . "\n" ; echo 'ps2Member now supports an additional layer of functionality ( very powerful ), which allows you to sell access to specific Posts/Pages that you\'ve created in WordPress®. Specific Post/Page Access works independently from Member Level Access. That is, you can sell an unlimited number of Posts/Pages using "Buy Now" Buttons, and your Customers will NOT be required to have a Membership Account with your site in order to receive access. If they are already a Member, that\'s fine, but they won\'t need to be./p' . "\n" ; echo 'pIn other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link ( see: codes2Member - PayPal® Options - Specific Post/Page Email/code ). Authentication is handled automatically through self-expiring links, good for 72 hours by default./p' . "\n" ; echo 'pSpecific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress®. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress® Post/Page that you\'ve created./p' . "\n" ; echo 'pVery simple. All you do is protect the Specific Post/Page IDs that are being sold on your site. Then, you can go to codes2Member - PayPal® Buttons - Specific Post/Page/code to generate "Buy Now" Buttons that you can insert into your WordPress® Editor, and make available on your site. The Button Generator for s2Member, will even let you Package Additional Posts/Pages together into one transaction./p' . "\n" ; echo ( ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) && ! $GLOBALS [ "WS_PLUGIN__" ] [ "wp_show_ids" ] ) ? 'pemstrong*Tip*/strong Can\'t find your Post/Page IDs? Get a href="http://www.primothemes.com/post/product/wp-show-ids-plugin/" target="_blank" rel="external"WP Show IDs/a./em/p' . "\n" : '' ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_sp_access" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-specific-ids"' . "\n" ; echo 'Specific Post/Page IDs Being Sold On Your Site:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'input type="text" name="ws_plugin__s2member_specific_ids" id="ws-plugin--s2member-specific-ids" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) . '" /br /' . "\n" ; echo 'Post/Page IDs in comma-delimited format. Example: code1,2,3,34,8,21/code * Note... the word codeall/code does NOT work here. Also, please be careful not to create a conflict with other Access Restrictions. If you are going to sell Specific Post/Page Access, you should enter specific Post/Page IDs here; and strongmake SURE that you\'ve NOT already protected any of these Posts/Pages with Member Level Access Restrictions/strong. In other words, if you configure s2Member, in such as a way, that a Post/Page requires Membership Level Access, you cannot sell that same Post/Page through Specific Post/Page Access. Doing so, would create a conflict. Customers that purchased Specific Post/Page Access, would be unable to access the Post/Page - without also having a Membership. Not good. So be careful with this.' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_sp_access" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_brute_force_restrictions" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_brute_force_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Brute Force IP/Login Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-brute-force-restrictions-section"' . "\n" ; echo 'h3Brute Force IP/Login Restrictions ( prevents username/password guessing )/h3' . "\n" ; echo 'input type="button" id="ws-plugin--s2member-brute-force-restrictions-reset-button" value="Reset Brute Force Logs" class="ws-menu-page-right" style="min-width:175px;" /' . "\n" ; echo 'pAs with any Membership system, it is possible for someone to try and guess Username/Password combinations by attempting a a href="http://en.wikipedia.org/wiki/Brute-force_attack" target="_blank" rel="external"Brute Force Attack/a; whereby multiple/repeated logins are strategically attempted with various Username/Password combinations until a correct guess is made. It is NOT likely that you\'ll be attacked in this way, but it\'s still a good idea to protect your system; just in case somebody tries this. s2Member thwarts this behavior by monitoring failed login attempts that occur within a short period of time. Whenever s2Member detects an IP address ( i.e. a remote user ) that is consistently failing to enter a valid Username/Password, a temporary ban is created; preventing additional attempts from taking place for 30 minutes. This temporary ban, will ONLY affect the offending IP address./p' . "\n" ; echo 'pem*Note* an empty IP address ( associated with someone browsing anonymously ), is also considered a unique IP address, so it cannot circumvent s2Member\'s security./em/p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_ip_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-max-failed-login-attempts"' . "\n" ; echo 'Maximum Failed Login Attempts:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_max_failed_login_attempts" id="ws-plugin--s2member-max-failed-login-attempts"' . "\n" ; $ws_plugin__s2member_temp_s = apply_filters ( "ws_plugin__s2member_track_failed_logins__exp_time" , "30 minutes" ) ; echo 'option value="1"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 1 ) ? ' selected="selected"' : '' ) . 'Allow 1 failed login attempt ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="2"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 2 ) ? ' selected="selected"' : '' ) . 'Allow 2 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="3"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 3 ) ? ' selected="selected"' : '' ) . 'Allow 3 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="4"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 4 ) ? ' selected="selected"' : '' ) . 'Allow 4 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="5"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 5 ) ? ' selected="selected"' : '' ) . 'Allow 5 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="10"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 10 ) ? ' selected="selected"' : '' ) . 'Allow 10 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="20"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 20 ) ? ' selected="selected"' : '' ) . 'Allow 20 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="30"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 30 ) ? ' selected="selected"' : '' ) . 'Allow 30 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="40"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 40 ) ? ' selected="selected"' : '' ) . 'Allow 40 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="50"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 50 ) ? ' selected="selected"' : '' ) . 'Allow 50 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="75"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 75 ) ? ' selected="selected"' : '' ) . 'Allow 75 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="100"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 100 ) ? ' selected="selected"' : '' ) . 'Allow 100 failed login attempts ( then punish for ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="0"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_failed_login_attempts" ] == 0 ) ? ' selected="selected"' : '' ) . 'Allow infinite failed logins ( Brute Force Restrictions disabled )/option' . "\n" ; echo '/selectbr /' . "\n" ; echo 'When/if you change this, you should also strongReset Brute Force Logs/strong ( click button above ).' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'br /br /The default period of "30 minutes" could be modified through this WordPress® Filter:br /codews_plugin__s2member_track_failed_logins__exp_time/code' . "\n" : '' ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_ip_restrictions" , get_defined_vars ( ) ) ; } /**/ if ( apply_filters ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_display_ip_restrictions" , true , get_defined_vars ( ) ) ) { do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_before_ip_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-group" title="Unique IP Access Restrictions"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-ip-restrictions-section"' . "\n" ; echo 'h3Unique IP Access Restrictions ( prevents username/link sharing )/h3' . "\n" ; echo 'input type="button" id="ws-plugin--s2member-ip-restrictions-reset-button" value="Reset IP Restriction Logs" class="ws-menu-page-right" style="min-width:175px;" /' . "\n" ; echo 'pAs with any Membership system, it is possible for one Member to signup, and then share their Username with someone else; or even post it online for the whole world to see. This is known as Link Sharing ( aka: Username Sharing ). It is NOT likely that you\'ll be attacked in this way, but it\'s still a good idea to protect your system; just in case somebody tries this. s2Member\'s IP Restrictions work for Membership Level Access ( account logins ), Specific Post/Page Access, Registration Links, and other secure Entry Points. In all cases, the rules are simple. A single Username, Access Link, and/or Entry Point ... is only valid for a certain number of unique IP addresses. Once that limit is reached, s2Member assumes there has been a security breach. At that time, s2Member will place a temporary ban ( preventing access ) to a Specific Post/Page, or to an account associated with a particular Username. This temporary ban, will ONLY affect the offending Link and/or Username associated with the security breach. You can fine-tune this behavior, using the options below./p' . "\n" ; echo 'pem*Note* an empty IP address ( associated with someone browsing anonymously ), is also considered a unique IP address, so it cannot circumvent s2Member\'s security./em/p' . "\n" ; do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_during_ip_restrictions" , get_defined_vars ( ) ) ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-max-ip-restriction"' . "\n" ; echo 'Maximum Unique IP Addresses Allowed:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_max_ip_restriction" id="ws-plugin--s2member-max-ip-restriction"' . "\n" ; $ws_plugin__s2member_temp_s = apply_filters ( "ws_plugin__s2member_ip_restrictions__concurrency_time_per_ip" , "30 days" ) ; echo 'option value="1"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 1 ) ? ' selected="selected"' : '' ) . 'Allow up to 1 unique IP per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="2"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 2 ) ? ' selected="selected"' : '' ) . 'Allow up to 2 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="3"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 3 ) ? ' selected="selected"' : '' ) . 'Allow up to 3 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="4"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 4 ) ? ' selected="selected"' : '' ) . 'Allow up to 4 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="5"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 5 ) ? ' selected="selected"' : '' ) . 'Allow up to 5 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="10"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 10 ) ? ' selected="selected"' : '' ) . 'Allow up to 10 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="20"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 20 ) ? ' selected="selected"' : '' ) . 'Allow up to 20 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="30"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 30 ) ? ' selected="selected"' : '' ) . 'Allow up to 30 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="40"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 40 ) ? ' selected="selected"' : '' ) . 'Allow up to 40 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="50"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 50 ) ? ' selected="selected"' : '' ) . 'Allow up to 50 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="75"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 75 ) ? ' selected="selected"' : '' ) . 'Allow up to 75 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="100"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 100 ) ? ' selected="selected"' : '' ) . 'Allow up to 100 different IPs per Customer ( every ' . $ws_plugin__s2member_temp_s . ' )/option' . "\n" ; echo 'option value="0"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction" ] == 0 ) ? ' selected="selected"' : '' ) . 'Allow infinite IPs ( all IP Restrictions are disabled )/option' . "\n" ; echo '/select' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'br /The default period of "30 days" could be modified through this WordPress® Filter:br /codews_plugin__s2member_ip_restrictions__concurrency_time_per_ip/code' . "\n" : '' ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th' . "\n" ; echo 'label for="ws-plugin--s2member-max-ip-restriction-time"' . "\n" ; echo 'Security Breach Timeout Period:' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'select name="ws_plugin__s2member_max_ip_restriction_time" id="ws-plugin--s2member-max-ip-restriction-time"' . "\n" ; echo 'option value="300"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 300 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 5 mins )/option' . "\n" ; echo 'option value="900"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 900 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 15 mins )/option' . "\n" ; echo 'option value="1800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 1800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 30 mins )/option' . "\n" ; echo 'option value="3600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 3600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 hour )/option' . "\n" ; echo 'option value="7200"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 7200 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 hours )/option' . "\n" ; echo 'option value="14400"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 14400 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 4 hours )/option' . "\n" ; echo 'option value="21600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 21600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 6 hours )/option' . "\n" ; echo 'option value="28800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 28800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 8 hours )/option' . "\n" ; echo 'option value="43200"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 43200 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 12 hours )/option' . "\n" ; echo 'option value="86400"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 86400 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 24 hours )/option' . "\n" ; echo 'option value="172800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 172800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 days )/option' . "\n" ; echo 'option value="345600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 345600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 4 days )/option' . "\n" ; echo 'option value="604800"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 604800 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 week )/option' . "\n" ; echo 'option value="1209600"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 1209600 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 weeks )/option' . "\n" ; echo 'option value="2629743"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 2629743 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 month )/option' . "\n" ; echo 'option value="5259487"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 5259487 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 2 months )/option' . "\n" ; echo 'option value="7889231"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 7889231 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 3 months )/option' . "\n" ; echo 'option value="15778463"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 15778463 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 6 months )/option' . "\n" ; echo 'option value="31556926"' . ( ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "max_ip_restriction_time" ] == 31556926 ) ? ' selected="selected"' : '' ) . 'If limit is exceeded ( punish for 1 year )/option' . "\n" ; echo '/selectbr /' . "\n" ; echo 'When/if you change this, you should also strongReset IP Restriction Logs/strong ( click button above ).' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_during_left_sections_after_ip_restrictions" , get_defined_vars ( ) ) ; } /**/ do_action ( "ws_plugin__s2member_during_res_ops_page_after_left_sections" , get_defined_vars ( ) ) ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'p class="submit"input type="submit" class="button-primary" value="Save All Changes" //p' . "\n" ; /**/ echo '/form' . "\n" ; /**/ echo '/td' . "\n" ; /**/ echo 'td class="ws-menu-page-table-r"' . "\n" ; c_ws_plugin__s2member_menu_pages_rs:: display ( ) ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; /**/ echo '/div' . "\n" ; } } } /**/ new c_ws_plugin__s2member_menu_page_res_ops ( ) ; ? [ full view ]s2member\includes\menu-pages\res-ops.inc.php Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code(!-- :: s-words --)

Statistics: Posted by System Robot — July 11th, 2011, 5:32 pm


]]>
2011-07-09T06:12:24-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13139&p=25434#p25434 <![CDATA[s2Member v111220 / Source Code: s2member\i...]]>
s2Member v111220
Source Code: s2member\includes\menu-pages\res-ops.inc.php
Docs updated: December 20, 2011, 9:51 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — July 9th, 2011, 6:12 am


]]>