| 1 |
<?php |
| 2 |
/** |
| 3 |
* Menu page for the s2Member plugin ( Main Multisite Options page ). |
| 4 |
* |
| 5 |
* Copyright: © 2009-2011 |
| 6 |
* {@link http://www.websharks-inc.com/ WebSharks, Inc.} |
| 7 |
* ( coded in the USA ) |
| 8 |
* |
| 9 |
* Released under the terms of the GNU General Public License. |
| 10 |
* You should have received a copy of the GNU General Public License, |
| 11 |
* along with this software. In the main directory, see: /licensing/ |
| 12 |
* If not, see: {@link http://www.gnu.org/licenses/}. |
| 13 |
* |
| 14 |
* @package s2Member\Menu_Pages |
| 15 |
* @since 3.0 |
| 16 |
*/ |
| 17 |
if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"])) |
| 18 |
exit("Do not access this file directly."); |
| 19 |
/**/ |
| 20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_mms_ops")) |
| 21 |
{ |
| 22 |
/** |
| 23 |
* Menu page for the s2Member plugin ( Main Multisite Options page ). |
| 24 |
* |
| 25 |
* @package s2Member\Menu_Pages |
| 26 |
* @since 110531 |
| 27 |
*/ |
| 28 |
class c_ws_plugin__s2member_menu_page_mms_ops |
| 29 |
{ |
| 30 |
public function __construct() |
| 31 |
{ |
| 32 |
echo '<div class="wrap ws-menu-page">'."\n"; |
| 33 |
/**/ |
| 34 |
echo '<div id="icon-plugins" class="icon32"><br /></div>'."\n"; |
| 35 |
echo '<h2>s2Member® Multisite ( Configuration )</h2>'."\n"; |
| 36 |
/**/ |
| 37 |
echo '<table class="ws-menu-page-table">'."\n"; |
| 38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n"; |
| 39 |
echo '<tr class="ws-menu-page-table-tr">'."\n"; |
| 40 |
echo '<td class="ws-menu-page-table-l">'."\n"; |
| 41 |
/**/ |
| 42 |
if(is_multisite() && is_main_site()) /* These panels will ONLY be available on the Main Site; with Multisite Networking. */ |
| 43 |
{ |
| 44 |
echo '<form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form">'."\n"; |
| 45 |
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"; |
| 46 |
echo '<input type="hidden" name="ws_plugin__s2member_configured" id="ws-plugin--s2member-configured" value="1" />'."\n"; |
| 47 |
/**/ |
| 48 |
do_action("ws_plugin__s2member_during_mms_ops_page_before_left_sections", get_defined_vars()); |
| 49 |
/**/ |
| 50 |
if(apply_filters("ws_plugin__s2member_during_mms_ops_page_during_left_sections_display_mms_patches", true, get_defined_vars())) |
| 51 |
{ |
| 52 |
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_before_mms_patches", get_defined_vars()); |
| 53 |
/**/ |
| 54 |
echo '<div class="ws-menu-page-group" title="Multisite WordPress® Patches" default-state="open">'."\n"; |
| 55 |
/**/ |
| 56 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-mms-patches-section">'."\n"; |
| 57 |
echo '<img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/small-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" />'."\n"; |
| 58 |
echo '<h3>Multisite WordPress® Patches ( required for compatiblity )</h3>'."\n"; |
| 59 |
echo '<p>In order for s2Member to function properly in a Multisite environment, you MUST implement four patches. One goes into your <code>/wp-login.php</code> file, one into <code>/wp-includes/load.php</code>, one into <code>/wp-includes/ms-functions.php</code>, and another into <code>/wp-admin/user-new.php</code>. We have TRAC tickets into WordPress® for these changes. However, until the official release of WordPress® includes these updates, you will need to use the automatic patcher below. All you do is check the box & click Save.</p>'."\n"; |
| 60 |
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_during_mms_patches", get_defined_vars()); |
| 61 |
/**/ |
| 62 |
echo '<table class="form-table">'."\n"; |
| 63 |
echo '<tbody>'."\n"; |
| 64 |
echo '<tr>'."\n"; |
| 65 |
/**/ |
| 66 |
echo '<th>'."\n"; |
| 67 |
echo '<label for="ws-plugin--s2member-mms-auto-patch">'."\n"; |
| 68 |
echo 'Patch Automatically? ( the easiest way )'."\n"; |
| 69 |
echo '</label>'."\n"; |
| 70 |
echo '</th>'."\n"; |
| 71 |
/**/ |
| 72 |
echo '</tr>'."\n"; |
| 73 |
echo '<tr>'."\n"; |
| 74 |
/**/ |
| 75 |
echo '<td>'."\n"; |
| 76 |
/**/ |
| 77 |
if(defined("DISALLOW_FILE_MODS") && DISALLOW_FILE_MODS) |
| 78 |
{ |
| 79 |
echo '<select name="ws_plugin__s2member_mms_auto_patch" id="ws-plugin--s2member-mms-auto-patch" disabled="disabled">'."\n"; |
| 80 |
echo '<option value="0" selected="selected">No ( I\'ll patch WordPress® myself )</option>'."\n"; |
| 81 |
echo '</select><br />'."\n"; |
| 82 |
echo '<em class="ws-menu-page-hilite">This is now locked. Your <code>/wp-config.php</code> file says: <code>DISALLOW_FILE_MODS = true</code></em>.'."\n"; |
| 83 |
} |
| 84 |
else /* Otherwise we can display these options. */ |
| 85 |
{ |
| 86 |
echo '<select name="ws_plugin__s2member_mms_auto_patch" id="ws-plugin--s2member-mms-auto-patch">'."\n"; |
| 87 |
echo '<option value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_auto_patch"]) ? ' selected="selected"' : '').'>Yes ( automatically patch WordPress® )</option>'."\n"; |
| 88 |
echo '<option value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_auto_patch"]) ? ' selected="selected"' : '').'>No ( I\'ll patch WordPress® myself )</option>'."\n"; |
| 89 |
echo '</select><br />'."\n"; |
| 90 |
echo '<em class="ws-menu-page-hilite">These files MUST be patched, each time you upgrade the WordPress® core. If you set this option to <code>Yes ( Patch Automatically )</code>, s2Member will patch your installation now, and also in the future, should you upgrade to newer version. That way, you won\'t need to patch manually each time WordPress® is upgraded.</em>'."\n"; |
| 91 |
} |
| 92 |
/**/ |
| 93 |
echo '</td>'."\n"; |
| 94 |
/**/ |
| 95 |
echo '</tr>'."\n"; |
| 96 |
echo '</tbody>'."\n"; |
| 97 |
echo '</table>'."\n"; |
| 98 |
/**/ |
| 99 |
echo '<div class="ws-menu-page-hr"></div>'."\n"; |
| 100 |
/**/ |
| 101 |
echo '<div id="ws-plugin--s2member-mms-patches-details-wrapper">'."\n"; |
| 102 |
echo '<h3>Rather Do It Yourself? ( <a href="#" onclick="jQuery(\'div#ws-plugin--s2member-mms-patches-details\').toggle(); return false;" class="ws-dotted-link">manual instructions</a> )</h3>'."\n"; |
| 103 |
echo '<div id="ws-plugin--s2member-mms-patches-details" style="display:none;">'."\n"; |
| 104 |
echo '<p><strong>Patch #1</strong> ( /wp-login.php )</p>'."\n"; |
| 105 |
echo '<p>'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/mms-patch-wp-login.x-php")).'</p>'."\n"; |
| 106 |
echo '<p><strong>Patch #2</strong> ( /wp-includes/load.php )</p>'."\n"; |
| 107 |
echo '<p>'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/mms-patch-load.x-php")).'</p>'."\n"; |
| 108 |
echo '<p><strong>Patch #3</strong> ( /wp-admin/user-new.php )</p>'."\n"; |
| 109 |
echo '<p>'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/mms-patch-user-new.x-php")).'</p>'."\n"; |
| 110 |
echo '<p><strong>Patch #4</strong> ( /wp-includes/ms-functions.php )</p>'."\n"; |
| 111 |
echo '<p>'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/mms-patch-ms-functions.x-php")).'</p>'."\n"; |
| 112 |
echo '<p><em class="ws-menu-page-hilite">Don\'t forget to patch these files again, each time you upgrade the WordPress® core.</em></p>'."\n"; |
| 113 |
echo '</div>'."\n"; |
| 114 |
echo '</div>'."\n"; |
| 115 |
echo '</div>'."\n"; |
| 116 |
/**/ |
| 117 |
echo '</div>'."\n"; |
| 118 |
/**/ |
| 119 |
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_after_mms_patches", get_defined_vars()); |
| 120 |
} |
| 121 |
/**/ |
| 122 |
if(apply_filters("ws_plugin__s2member_during_mms_ops_page_during_left_sections_display_mms_registration", true, get_defined_vars())) |
| 123 |
{ |
| 124 |
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_before_mms_registration", get_defined_vars()); |
| 125 |
/**/ |
| 126 |
echo '<div class="ws-menu-page-group" title="Multisite Registration Configuration" default-state="open">'."\n"; |
| 127 |
/**/ |
| 128 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-mms-registration-section">'."\n"; |
| 129 |
echo '<img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/large-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" />'."\n"; |
| 130 |
echo '<h3>Multisite Registration ( Main Site Configuration )</h3>'."\n"; |
| 131 |
echo '<p>s2Member supports Free Subscribers <em>( at Level #0 )</em>, and several Primary Roles created by the s2Member plugin (<em> i.e. s2Member Levels 1-4, or up to the number of configured Levels )</em>. If you want your visitors to be capable of registering absolutely free, you will want to "allow" Open Registration. Whenever a visitor registers without paying, they\'ll automatically become a Free Subscriber, at Level #0.</p>'."\n"; |
| 132 |
echo '<p><strong>Running A Multisite Blog Farm?</strong> With Multisite Networking enabled, your Main Site could ALSO offer a Customer access to create a Blog of their own <em>( optional )</em>, where a Customer becomes a "Member" of your Main Site, and also a Blog Owner/Administrator of at least one other Blog on your Network. With s2Member installed <em>( Network wide )</em>, each of your Blog Owners could offer Membership too, using a single copy of the s2Member plugin, which is a great selling point<em>!</em> We refer to this type of installation as a Multisite Blog Farm.</p>'."\n"; |
| 133 |
echo '<p>Multisite Networking makes a new Registration Form available <em>( driven by your theme )</em>; which we refer to as: <code>/wp-signup.php</code>. If, and only if, you\'re planning to offer Blogs, you MUST use <a href="'.esc_attr(c_ws_plugin__s2member_utils_urls::wp_signup_url()).'" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Multisite Registration Form.\\n* s2Member makes this form available to logged-in Super Administrators, at all times ( for testing purposes ), regardless of configuration.'.((c_ws_plugin__s2member_utils_conds::bp_is_installed()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( '.c_ws_plugin__s2member_utils_strings::esc_js_sq(c_ws_plugin__s2member_utils_urls::bp_register_url()).' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '').'\');">/wp-signup.php</a>, instead of using the Standard Login/Registration Form. In a Multisite installation, we refer to the Standard Login/Registration Form, as: <a href="'.esc_attr(c_ws_plugin__s2member_utils_urls::wp_register_url()).'" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Standard Registration Form.\\n* s2Member makes this form available to logged-in Administrators, at all times ( for testing purposes ), regardless of configuration.'.((c_ws_plugin__s2member_utils_conds::bp_is_installed()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( '.c_ws_plugin__s2member_utils_strings::esc_js_sq(c_ws_plugin__s2member_utils_urls::bp_register_url()).' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '').'\');">/wp-login.php?action=register</a>. If you\'re planning to offer Membership Access only, and NOT Blogs, you can simply use the <a href="'.esc_attr(c_ws_plugin__s2member_utils_urls::wp_register_url()).'" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Standard Registration Form.\\n* s2Member makes this form available to logged-in Administrators, at all times ( for testing purposes ), regardless of configuration.'.((c_ws_plugin__s2member_utils_conds::bp_is_installed()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( '.c_ws_plugin__s2member_utils_strings::esc_js_sq(c_ws_plugin__s2member_utils_urls::bp_register_url()).' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '').'\');">Standard Login/Registration Form</a>, which is easily customized through <code>s2Member -> General Options -> Login/Registration Design</code>.</p>'."\n"; |
| 134 |
echo '<p>In either case, s2Member Pro Forms are possible too. If you\'ve purchased s2Member Pro, you could use Pro Forms instead of these WordPress® defaults. That being said, even with s2Member Pro Forms, if you are offering Blogs, you will still need to facilitate the actual creation of each Blog through <code>/wp-signup.php</code>. In other words, Customers can register through s2Member Pro Forms, and even checkout. But when it comes time to setup a new Blog, you will need to redirect your Customer to <code>/wp-signup.php</code>, while they are logged-in. This will allow them to create a new Blog on your Network. That is, if they are allowed to <em>( based on your configuration below )</em>.</p>'."\n"; |
| 135 |
echo (c_ws_plugin__s2member_utils_conds::bp_is_installed()) ? '<p><em><strong>BuddyPress:</strong> BuddyPress will use its own Registration Form, powered by your theme.<br />( BuddyPress can handle both Membership and Blog creation in its integration )<br />( <a href="'.esc_attr(c_ws_plugin__s2member_utils_urls::bp_register_url()).'" target="_blank" rel="external" onclick="alert(\'s2Member will now open your BuddyPress Registration Form.\\n* However, you will probably be redirected away from this BuddyPress Registration Form ( '.c_ws_plugin__s2member_utils_strings::esc_js_sq(c_ws_plugin__s2member_utils_urls::bp_register_url()).' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.\');">'.esc_html(c_ws_plugin__s2member_utils_urls::bp_register_url()).'</a> )</em></p>'."\n" : ''; |
| 136 |
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_during_mms_registration", get_defined_vars()); |
| 137 |
/**/ |
| 138 |
echo '<div id="ws-plugin--s2member-mms-registration-support-package-details-wrapper">'."\n"; |
| 139 |
echo '<h4 style="margin-bottom:0;">Running a Multisite Blog Farm? ( <a href="#" onclick="jQuery(\'div#ws-plugin--s2member-mms-registration-support-package-details\').toggle(); return false;" class="ws-dotted-link">click here / please read</a> )</h4>'."\n"; |
| 140 |
echo '<div id="ws-plugin--s2member-mms-registration-support-package-details" style="display:none;">'."\n"; |
| 141 |
echo '<p>The most important thing to do when setting up a Blog Farm with s2Member, is to add this line to your <code>/wp-config.php</code> file: <code><span style="color:#0000BB;">define</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"MULTISITE_FARM"</span>, <span style="color:#0000BB;">true</span><span style="color:#007700;">);</span></code>. This will add a default layer of security, to all Blogs within your Network, with respect to s2Member. <strong>But, before you go live</strong>, please contact <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Pro Module / Prices")).'" target="_blank" rel="external">s2Member.com</a> for full documentation. There is some additional functionality that can be enabled for security on a Blog Farm installation; and also some menus/documentation/functionality that can be disabled. You will be asked to purchase our <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Pro Module / Prices")).'" target="_blank" rel="external">Network Support Package</a> when you need assistance in this regard.</p>'."\n"; |
| 142 |
echo '<p>Multisite Blog Farms require a site owner that fully understands the potential security risks associated with Blog Farming. s2Member\'s <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Pro Module / Prices")).'" target="_blank" rel="external">Network Support Package</a> provides you with the information you need, and priority support for anything about s2Member that you don\'t understand. In addition, our Network Support Package includes a lengthy PDF file that details a list of things affected by <code><span style="color:#0000BB;">define</span><span style="color:#007700;">(</span><span style="color:#DD0000;">"MULTISITE_FARM"</span>, <span style="color:#0000BB;">true</span><span style="color:#007700;">);</span></code>, best practices, and other supplemental documentation focused on Blog Farms.</p>'."\n"; |
| 143 |
echo '<p><em><strong>Definition of a Multisite Blog Farm:</strong> If your Network is making it possible for "Members" of your Main Site, to create and/or manage Blogs (in any way), s2Member will consider your installation to be a Multisite Blog Farm. That being said, some site owners run a Multisite Network for the purpose of maintaining their own sites. The term Multisite Blog Farm does NOT apply to a Network that hosts multiple Child Blogs, all of which are operated by a single site owner and/or a single company. Again, a Multisite Blog Farm ( in the eyes of s2Member ), is any Network that is making it possible for "Members" of its Main Site, to create and/or manage Blogs; where one or more of these Child Blogs is being administered by a Customer ( e.g. if you offer both Membership and Blog creation, as configured below ).</em></p>'."\n"; |
| 144 |
echo '<p><em><strong>When NOT to run a Multisite Blog Farm:</strong> If you run a Multisite Network for the purpose of maintaining your own sites. You should NOT run a Multisite Blog Farm. You can still activate s2Member Network-wide, if you like ( optional ), but the advanced security considerations offered through s2Member\'s Multisite Blog Farm functionality are NOT needed in this case; because all of the Child Blogs in your Network belong to trusted Administrators ( i.e. your Customers are NOT going to run Child Blogs on your Network in this case ).</em></p>'."\n"; |
| 145 |
echo '</div>'."\n"; |
| 146 |
echo '</div>'."\n"; |
| 147 |
/**/ |
| 148 |
echo '<div class="ws-menu-page-hr"></div>'."\n"; |
| 149 |
/**/ |
| 150 |
echo '<table class="form-table">'."\n"; |
| 151 |
echo '<tbody>'."\n"; |
| 152 |
echo '<tr>'."\n"; |
| 153 |
/**/ |
| 154 |
echo '<th>'."\n"; |
| 155 |
echo '<label for="ws-plugin--s2member-mms-registration-file">'."\n"; |
| 156 |
echo 'What Do You Plan To Offer? ( please choose one )'."\n"; |
| 157 |
echo '</label>'."\n"; |
| 158 |
echo '</th>'."\n"; |
| 159 |
/**/ |
| 160 |
echo '</tr>'."\n"; |
| 161 |
echo '<tr>'."\n"; |
| 162 |
/**/ |
| 163 |
echo '<td>'."\n"; |
| 164 |
/**/ |
| 165 |
if(defined("MULTISITE_FARM") && MULTISITE_FARM) /* Lock this down if a config option is set in /wp-config.php. */ |
| 166 |
{ |
| 167 |
echo '<select name="ws_plugin__s2member_mms_registration_file" id="ws-plugin--s2member-mms-registration-file" disabled="disabled">'."\n"; |
| 168 |
echo '<option value="wp-signup" selected="selected">Blog Farm ( I plan to offer both Membership & Blog creation )</option>'."\n"; |
| 169 |
echo '</select><br />'."\n"; |
| 170 |
echo '<em class="ws-menu-page-hilite">This is now locked. Your <code>/wp-config.php</code> file says: <code>MULTISITE_FARM = true</code></em>.'."\n"; |
| 171 |
} |
| 172 |
else /* Otherwise we can display these options normally. */ |
| 173 |
{ |
| 174 |
echo '<select name="ws_plugin__s2member_mms_registration_file" id="ws-plugin--s2member-mms-registration-file">'."\n"; |
| 175 |
echo '<option value="wp-login"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_file"] === "wp-login") ? ' selected="selected"' : '').'>Membership Only ( I\'m NOT offering Blogs )</option>'."\n"; |
| 176 |
echo '<option value="wp-signup"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_file"] === "wp-signup") ? ' selected="selected"' : '').'>Blog Farm ( I plan to offer both Membership & Blog creation )</option>'."\n"; |
| 177 |
echo '</select><br />'."\n"; |
| 178 |
echo 'Depending on your selection, the options below may change.'."\n"; |
| 179 |
} |
| 180 |
/**/ |
| 181 |
echo '</td>'."\n"; |
| 182 |
/**/ |
| 183 |
echo '</tr>'."\n"; |
| 184 |
echo '</tbody>'."\n"; |
| 185 |
echo '</table>'."\n"; |
| 186 |
/**/ |
| 187 |
echo '<div class="ws-menu-page-hr"></div>'."\n"; |
| 188 |
/**/ |
| 189 |
echo '<table class="form-table ws-plugin--s2member-mms-registration-wp-login" style="margin:0;">'."\n"; |
| 190 |
echo '<tbody>'."\n"; |
| 191 |
echo '<tr>'."\n"; |
| 192 |
/**/ |
| 193 |
echo '<th style="padding-top:0;">'."\n"; |
| 194 |
echo '<label for="ws-plugin--s2member-allow-subscribers-in">'."\n"; |
| 195 |
echo 'Your Main Site / Allow Open Registration? ( via <code>wp-login.php?action=register</code> )'."\n"; |
| 196 |
echo '</label>'."\n"; |
| 197 |
echo '</th>'."\n"; |
| 198 |
/**/ |
| 199 |
echo '</tr>'."\n"; |
| 200 |
echo '<tr>'."\n"; |
| 201 |
/**/ |
| 202 |
echo '<td>'."\n"; |
| 203 |
echo '<select name="ws_plugin__s2member_allow_subscribers_in" id="ws-plugin--s2member-allow-subscribers-in">'."\n"; |
| 204 |
echo '<option value="0"'.((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["allow_subscribers_in"]) ? ' selected="selected"' : '').'>No ( do NOT allow Open Registration )</option>'."\n"; |
| 205 |
echo '<option value="1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["allow_subscribers_in"]) ? ' selected="selected"' : '').'>Yes ( allow Open Registration; Free Subscribers at Level #0 )</option>'."\n"; |
| 206 |
echo '</select><br />'."\n"; |
| 207 |
echo 'If you set this to <code>Yes</code>, you\'re unlocking <a href="'.esc_attr(c_ws_plugin__s2member_utils_urls::wp_register_url()).'" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Standard Registration Form.\\n* s2Member makes this form available to logged-in Administrators, at all times ( for testing purposes ), regardless of configuration.'.((c_ws_plugin__s2member_utils_conds::bp_is_installed()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( '.c_ws_plugin__s2member_utils_strings::esc_js_sq(c_ws_plugin__s2member_utils_urls::bp_register_url()).' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '').'\');">wp-login.php?action=register</a> ( on your Main Site ). When a visitor registers without paying, they\'ll automatically become a Free Subscriber, at Level #0. The s2Member software reserves Level #0; to be used ONLY for Free Subscribers. All other Membership Levels [1-4] require payment.'."\n"; |
| 208 |
echo '</td>'."\n"; |
| 209 |
/**/ |
| 210 |
echo '</tr>'."\n"; |
| 211 |
echo '</tbody>'."\n"; |
| 212 |
echo '</table>'."\n"; |
| 213 |
/**/ |
| 214 |
echo '<table class="form-table ws-plugin--s2member-mms-registration-wp-signup" style="margin:0;">'."\n"; |
| 215 |
echo '<tbody>'."\n"; |
| 216 |
echo '<tr>'."\n"; |
| 217 |
/**/ |
| 218 |
echo '<th style="padding-top:0;">'."\n"; |
| 219 |
echo '<label for="ws-plugin--s2member-mms-registration-grants">'."\n"; |
| 220 |
echo 'Your Main Site / Allow Open Registration? ( via <code>wp-signup.php</code> )'."\n"; |
| 221 |
echo '</label>'."\n"; |
| 222 |
echo '</th>'."\n"; |
| 223 |
/**/ |
| 224 |
echo '</tr>'."\n"; |
| 225 |
echo '<tr>'."\n"; |
| 226 |
/**/ |
| 227 |
echo '<td style="padding-bottom:0;">'."\n"; |
| 228 |
echo '<select name="ws_plugin__s2member_mms_registration_grants" id="ws-plugin--s2member-mms-registration-grants">'."\n"; |
| 229 |
echo '<option value="none"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_grants"] === "none") ? ' selected="selected"' : '').'>No ( do NOT allow Open Registration )</option>'."\n"; |
| 230 |
echo '<option value="user"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_grants"] === "user") ? ' selected="selected"' : '').'>Yes ( allow Open Registration; Free Subscribers at Level #0 )</option>'."\n"; |
| 231 |
echo '<option value="all"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_grants"] === "all") ? ' selected="selected"' : '').'>Yes ( allow Open Registration; Free Subscribers, with a free Blog too )</option>'."\n"; |
| 232 |
echo '</select><br />'."\n"; |
| 233 |
echo 'If you set this to <code>Yes</code>, you\'re unlocking <a href="'.esc_attr(c_ws_plugin__s2member_utils_urls::wp_signup_url()).'" target="_blank" rel="external" onclick="alert(\'s2Member will now open your Multisite Registration Form.\\n* s2Member makes this form available to logged-in Super Administrators, at all times ( for testing purposes ), regardless of configuration.'.((c_ws_plugin__s2member_utils_conds::bp_is_installed()) ? '\\n\\nBuddyPress: * BuddyPress will use its own Registration Form. Please note, you will probably be redirected away from the BuddyPress Registration Form ( '.c_ws_plugin__s2member_utils_strings::esc_js_sq(c_ws_plugin__s2member_utils_urls::bp_register_url()).' ), because you\\\'re ALREADY logged-in. Please log out before testing BuddyPress registration.' : '').'\');">wp-signup.php</a> ( on your Main Site ).'."\n"; |
| 234 |
echo '</td>'."\n"; |
| 235 |
/**/ |
| 236 |
echo '</tr>'."\n"; |
| 237 |
echo '</tbody>'."\n"; |
| 238 |
echo '</table>'."\n"; |
| 239 |
/**/ |
| 240 |
echo '<table class="form-table ws-plugin--s2member-mms-registration-wp-signup ws-plugin--s2member-mms-registration-wp-signup-blogs-level0">'."\n"; |
| 241 |
echo '<tbody>'."\n"; |
| 242 |
echo '<tr>'."\n"; |
| 243 |
/**/ |
| 244 |
echo '<th>'."\n"; |
| 245 |
echo '<label for="ws-plugin--s2member-mms-registration-blogs-level0">'."\n"; |
| 246 |
echo 'Level #0 ( Free Subscribers ):'."\n"; |
| 247 |
echo '</label>'."\n"; |
| 248 |
echo '</th>'."\n"; |
| 249 |
/**/ |
| 250 |
echo '</tr>'."\n"; |
| 251 |
echo '<tr>'."\n"; |
| 252 |
/**/ |
| 253 |
echo '<td style="padding-bottom:0;">'."\n"; |
| 254 |
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_mms_registration_blogs_level0" id="ws-plugin--s2member-mms-registration-blogs-level0" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_blogs_level0"]).'" /><br />'."\n"; |
| 255 |
echo 'How many blogs can a Free Subscriber create?'."\n"; |
| 256 |
echo '</td>'."\n"; |
| 257 |
/**/ |
| 258 |
echo '</tr>'."\n"; |
| 259 |
echo '</tbody>'."\n"; |
| 260 |
echo '</table>'."\n"; |
| 261 |
/**/ |
| 262 |
echo '<div class="ws-menu-page-hr ws-plugin--s2member-mms-registration-wp-signup"></div>'."\n"; |
| 263 |
/**/ |
| 264 |
echo '<table class="form-table ws-plugin--s2member-mms-registration-wp-signup" style="margin:0;">'."\n"; |
| 265 |
echo '<tbody>'."\n"; |
| 266 |
/**/ |
| 267 |
for($n = 1; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) |
| 268 |
{ |
| 269 |
echo '<tr>'."\n"; |
| 270 |
/**/ |
| 271 |
echo '<th style="padding-top:0;">'."\n"; |
| 272 |
echo '<label for="ws-plugin--s2member-mms-registration-blogs-level'.$n.'">'."\n"; |
| 273 |
echo 'Membership Level #'.$n.' / Maximum Blogs Allowed:'."\n"; |
| 274 |
echo '</label>'."\n"; |
| 275 |
echo '</th>'."\n"; |
| 276 |
/**/ |
| 277 |
echo '</tr>'."\n"; |
| 278 |
echo '<tr>'."\n"; |
| 279 |
/**/ |
| 280 |
echo '<td>'."\n"; |
| 281 |
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_mms_registration_blogs_level'.$n.'" id="ws-plugin--s2member-mms-registration-blogs-level'.$n.'" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_blogs_level".$n]).'" /><br />'."\n"; |
| 282 |
echo 'How many blogs can a Member ( at Level #'.$n.' ) create?'."\n"; |
| 283 |
echo '</td>'."\n"; |
| 284 |
/**/ |
| 285 |
echo '</tr>'."\n"; |
| 286 |
} |
| 287 |
/**/ |
| 288 |
echo '</tbody>'."\n"; |
| 289 |
echo '</table>'."\n"; |
| 290 |
echo '</div>'."\n"; |
| 291 |
/**/ |
| 292 |
echo '</div>'."\n"; |
| 293 |
/**/ |
| 294 |
do_action("ws_plugin__s2member_during_mms_ops_page_during_left_sections_after_mms_registration", get_defined_vars()); |
| 295 |
} |
| 296 |
do_action("ws_plugin__s2member_during_mms_ops_page_after_left_sections", get_defined_vars()); |
| 297 |
/**/ |
| 298 |
echo '<div class="ws-menu-page-hr"></div>'."\n"; |
| 299 |
/**/ |
| 300 |
echo '<p class="submit"><input type="submit" class="button-primary" value="Save All Changes" /></p>'."\n"; |
| 301 |
/**/ |
| 302 |
echo '</form>'."\n"; |
| 303 |
} |
| 304 |
else /* Otherwise, we can display a simple notation; leading into Multisite Networking. */ |
| 305 |
{ |
| 306 |
echo '<p style="margin-top:0;"><span class="ws-menu-page-hilite">Your WordPress® installation does not have Multisite Networking enabled.<br />Which is perfectly OK :-) Multisite Networking is 100% completely optional.</span></p>'."\n"; |
| 307 |
echo '<img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/large-icon.png" title="s2Member (a Membership management system for WordPress®)" alt="" style="float:right; margin:0 0 0 25px; border:0;" />'."\n"; |
| 308 |
/**/ |
| 309 |
if(file_exists($ws_plugin__s2member_temp = dirname(dirname(dirname(__FILE__)))."/readme-ms.txt")) |
| 310 |
{ |
| 311 |
echo '<div class="ws-menu-page-hr"></div>'."\n"; |
| 312 |
/**/ |
| 313 |
if(!function_exists("NC_Markdown")) |
| 314 |
include_once dirname(dirname(__FILE__))."/_xtnls/markdown/nc-markdown.inc.php"; |
| 315 |
/**/ |
| 316 |
$ws_plugin__s2member_temp = file_get_contents($ws_plugin__s2member_temp); |
| 317 |
$ws_plugin__s2member_temp = preg_replace("/(\=)( )(.+?)( )(\=)/", "<h3>$3</h3>", $ws_plugin__s2member_temp); |
| 318 |
$ws_plugin__s2member_temp = NC_Markdown($ws_plugin__s2member_temp); |
| 319 |
/**/ |
| 320 |
echo preg_replace("/(\<a)( href)/i", "$1".' target="_blank" rel="nofollow external"'."$2", $ws_plugin__s2member_temp); |
| 321 |
} |
| 322 |
} |
| 323 |
/**/ |
| 324 |
echo '</td>'."\n"; |
| 325 |
/**/ |
| 326 |
echo '<td class="ws-menu-page-table-r">'."\n"; |
| 327 |
c_ws_plugin__s2member_menu_pages_rs::display(); |
| 328 |
echo '</td>'."\n"; |
| 329 |
/**/ |
| 330 |
echo '</tr>'."\n"; |
| 331 |
echo '</tbody>'."\n"; |
| 332 |
echo '</table>'."\n"; |
| 333 |
/**/ |
| 334 |
echo '</div>'."\n"; |
| 335 |
} |
| 336 |
} |
| 337 |
} |
| 338 |
/**/ |
| 339 |
new c_ws_plugin__s2member_menu_page_mms_ops(); |
| 340 |
?> |