s2Member v110815
Source Code: s2member-pro\includes\menu-pages\google-buttons.inc.php
Docs updated: August 15, 2011, 4:19 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-pro\includes\menu-pages\google-buttons.inc.php ?php /** * Menu page for s2Member Pro ( Google® Buttons page ). * * Copyright: © 2009-2011 * {@link http://www.websharks-inc.com/ WebSharks, Inc.} * ( coded in the USA ) * * This WordPress® plugin ( s2Member Pro ) is comprised of two parts: * * o (1) Its PHP code is licensed under the GPL license, as is WordPress®. * 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/}. * * o (2) All other parts of ( s2Member Pro ); including, but not limited to: * the CSS code, some JavaScript code, images, and design; * are licensed according to the license purchased. * See: {@link http://www.s2member.com/prices/} * * Unless you have our prior written consent, you must NOT directly or indirectly license, * sub-license, sell, resell, or provide for free; part (2) of the s2Member Pro Module; * or make an offer to do any of these things. All of these things are strictly * prohibited with part (2) of the s2Member Pro Module. * * Your purchase of s2Member Pro includes free lifetime upgrades via s2Member.com * ( i.e. new features, bug fixes, updates, improvements ); along with full access * to our video tutorial library: {@link http://www.s2member.com/videos/} * * @package s2Member\Menu_Pages * @since 1.5 */ if ( realpath ( __FILE__ ) === realpath ( $_SERVER [ "SCRIPT_FILENAME" ] ) ) exit ( "Do not access this file directly." ) ; /**/ if ( ! class_exists ( "c_ws_plugin__s2member_pro_menu_page_google_buttons" ) ) { /** * Menu page for s2Member Pro ( Google® Buttons page ). * * @package s2Member\Menu_Pages * @since 110531 */ class c_ws_plugin__s2member_pro_menu_page_google_buttons { public function __construct ( ) { echo 'div class="wrap ws-menu-page"' . "\n" ; /**/ echo 'div id="icon-plugins" class="icon32"br //div' . "\n" ; echo 'h2s2Member® / Google® Checkout Buttons/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" ; /**/ for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'div class="ws-menu-page-group" title="Google® Checkout For Level #' . $n . ' Access"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-level' . $n . '-buttons-section"' . "\n" ; echo 'h3Button Code Generator For Level #' . $n . ' Access/h3' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each Membership Level that you plan to offer. Then press (Generate Button Code). These Google® Checkout Buttons are customized to work with s2Member seamlessly. Member accounts will be activated instantly, in an automated fashion. When you, or a Member, cancels their Membership, or fails to make payments on time, s2Member will automatically terminate their Membership privileges. s2Member makes extensive use of the Google® API Callback service. s2Member receives updates from Google® behind-the-scene. em* Buttons are NOT saved here. This is only a Button Generator. Once you\'ve generated your Button, copy/paste it into your Membership Options Page. If you lose your Button Code, you\'ll need to come back & re-generate a new one./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th class="ws-menu-page-th-side"' . "\n" ; echo 'label for="ws-plugin--s2member-pro-level' . $n . '-shortcode"' . "\n" ; echo 'Button Codebr /For Level #' . $n . ':br /br /' . "\n" ; echo 'div id="ws-plugin--s2member-pro-level' . $n . '-button-prev"/div' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'p id="ws-plugin--s2member-pro-level' . $n . '-trial-line"I\'ll offer the first input type="text" id="ws-plugin--s2member-pro-level' . $n . '-trial-period" value="0" size="6" / select id="ws-plugin--s2member-pro-level' . $n . '-trial-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/google-membership-trial-terms.html" ) . '/select @ $input type="text" id="ws-plugin--s2member-pro-level' . $n . '-trial-amount" value="0.00" size="4" //p' . "\n" ; echo 'pspan id="ws-plugin--s2member-pro-level' . $n . '-trial-then"Then, /spanI want to charge: $input type="text" id="ws-plugin--s2member-pro-level' . $n . '-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-level' . $n . '-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/google-membership-regular-terms.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-level' . $n . '-desc" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] ) . ' / description and pricing details here." size="73" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-level' . $n . '-ccaps" size="40" maxlength="125" //p' . "\n" ; echo 'pCurrency: select id="ws-plugin--s2member-pro-level' . $n . '-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/google-currencies.html" ) . '/select input type="button" value="Generate Button Code" class="button-primary" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td colspan="2"' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/google-checkout-button-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $n ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-level' . $n . '-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; /**/ echo 'div' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'br /' . "\n" ; echo 'strongResulting Google® Button Code:/strong ( ultimately, your Shortcode will produce this snippet )br /' . "\n" ; echo 'textarea id="ws-plugin--s2member-pro-level' . $n . '-button" rows="8" wrap="off" style="font-family:Consolas, monospace; width:99%;"' ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/buttons/google-checkout-button.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%wpurl%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( site_url ( ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( $n ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%ccaps%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%desc%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] . " / description and pricing details." ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%cc%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "USD" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( $_SERVER [ "HTTP_HOST" ] ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%ta%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "0" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%tp%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "0" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%tt%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "D" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%ra%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "0.01" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%rp%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "1" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%rt%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "M" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%rr%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "1" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%image%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "default" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%output%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "anchor" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%images%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member_pro" ] [ "c" ] [ "dir_url" ] . "/images" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/&/" , "&" , $ws_plugin__s2member_pro_temp_s ) ; /* Match this with the JavaScript generator. */ echo format_to_edit ( $ws_plugin__s2member_pro_temp_s ) ; echo '/textareabr /' . "\n" ; echo '↑ Use this more advanced Code if you\'re building a theme or plugin that integrates with s2Member.br /' . "\n" ; echo '↑ emThis span class="ws-menu-page-hilite"may contain PHP code too/span; so be careful if you use this./em' . "\n" ; echo '/div' . "\n" ; /**/ echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; } /**/ echo 'div class="ws-menu-page-group" title="Google® Modification/Cancellation Buttons"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-cancellation-buttons-section"' . "\n" ; echo 'h3One Button Does It All For Modifications/Cancellations ( copy/paste )/h3' . "\n" ; echo 'pEvery Google® Recurring Subscription can be modified by the Customer, or even cancelled by the Customer through Google® Checkout. It\'s very simple. A Member clicks a Modification/Cancellation Button. This brings the Customer to a "Purchase History" screen inside their Google® Checkout account. Here they\'ll have easy access to make any changes they like. When important changes occur ( such as a cancellation ), information regarding this event will be relayed back to s2Member through Google\'s API Callback service. s2Member will react appropriately at that time./p' . "\n" ; echo 'pemstrong*Understanding Cancellations*/strong It\'s important to realize that a Cancellation is not an EOT ( End Of Term ). All that happens during a Cancellation event, is that billing is stopped, and it\'s understood that the Customer is going to lose access, at some point in the future. This does NOT mean, that access will be revoked immediately. A separate EOT event will automatically handle a (demotion or deletion) later, at the appropriate time; which could be several days, or even a year after the Cancellation took place./em/p' . "\n" ; echo 'pemstrong*Some Hairy Details*/strong There might be times whenever you notice that a Member\'s Subscription has been cancelled through Google® Checkout... but, s2Member continues allowing the User access to your site as a paid Member. Please don\'t be confused by this... in 99.9% of these cases, the reason for this is legitimate. s2Member will only remove the User\'s Membership privileges when an EOT ( End Of Term ) is processed, a refund occurs, a chargeback occurs, or when a cancellation occurs - which would later result in a delayed Auto-EOT by s2Member./em/p' . "\n" ; echo 'pems2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th class="ws-menu-page-th-side"' . "\n" ; echo 'label for="ws-plugin--s2member-pro-cancellation-shortcode"' . "\n" ; echo 'Button Codebr /For Cancellations:br /br /' . "\n" ; echo 'div id="ws-plugin--s2member-pro-cancellation-button-prev"' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/buttons/google-cancellation-button.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%images%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member_pro" ] [ "c" ] [ "dir_url" ] . "/images" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%wpurl%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( site_url ( ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/&/" , "&" , $ws_plugin__s2member_pro_temp_s ) ; /* Match this with the JavaScript generator. */ echo preg_replace ( "/\a/" , 'a target="_blank"' , $ws_plugin__s2member_pro_temp_s ) ; echo '/div' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'pNo configuration necessary./p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td colspan="2"' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/google-cancellation-button-shortcode.html" ) ) ; echo 'input id="ws-plugin--s2member-pro-cancellation-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; /**/ echo 'div' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'br /' . "\n" ; echo 'strongResulting Google® Button Code:/strong ( ultimately, your Shortcode will produce this snippet )br /' . "\n" ; echo 'textarea id="ws-plugin--s2member-pro-cancellation-button" rows="8" wrap="off" style="font-family:Consolas, monospace; width:99%;"' ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/buttons/google-cancellation-button.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%images%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member_pro" ] [ "c" ] [ "dir_url" ] . "/images" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%wpurl%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( site_url ( ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/&/" , "&" , $ws_plugin__s2member_pro_temp_s ) ; /* Match this with the JavaScript generator. */ echo format_to_edit ( $ws_plugin__s2member_pro_temp_s ) ; echo '/textareabr /' . "\n" ; echo '↑ Use this more advanced Code if you\'re building a theme or plugin that integrates with s2Member.br /' . "\n" ; echo '↑ emThis span class="ws-menu-page-hilite"may contain PHP code too/span; so be careful if you use this./em' . "\n" ; echo '/div' . "\n" ; /**/ echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="Google® Member Registration Access Links"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-reg-links-section"' . "\n" ; echo 'h3Registration Access Link Generator ( for Customer Service )/h3' . "\n" ; echo 'ps2Member automatically generates Registration Access Links for your Customers after checkout, and also sends them a link in a Confirmation Email. However, if you ever need to deal with a Customer Service issue that requires a new Registration Access Link to be created manually, you can use this tool for that. Alternatively, you can create their account yourself/manually by going to codes2Member - Add A Member/code. Either of these methods will work fine./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'pPaid Membership Level#: select id="ws-plugin--s2member-pro-reg-link-level"' . "\n" ; for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) echo 'option value="' . $n . '"s2Member Level #' . $n . '/option' . "\n" ; echo '/select/p' . "\n" ; echo 'pPaid Subscr. ID: input id="ws-plugin--s2member-pro-reg-link-subscr-id" type="text" value="" size="50" / a href="#" tabindex="-1"[?]/a/p' . "\n" ; echo 'pCustom String Value: input id="ws-plugin--s2member-pro-reg-link-custom" type="text" value="' . esc_attr ( $_SERVER [ "HTTP_HOST" ] ) . '" size="30" / a href="#" HTTP_HOST" ] ) ) . '\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\n' . c_ws_plugin__s2member_utils_strings:: esc_sq ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) . '|cv1|cv2|cv3\'); return false;" tabindex="-1"[?]/a input type="button" value="Generate Access Link" class="button-primary" / img id="ws-plugin--s2member-pro-reg-link-loading" src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/ajax-loader.gif" alt="" style="display:none;" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-reg-link-ccaps" size="40" maxlength="125" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" //p' . "\n" ; echo 'pFixed Term Length ( for Buy Now transactions ): input id="ws-plugin--s2member-pro-reg-link-fixed-term" type="text" value="" size="10" / a href="#" [?]/a/p' . "\n" ; echo 'p id="ws-plugin--s2member-pro-reg-link" style="font-family:Consolas, monospace; display:none;"/p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="Google® Specific Post/Page (Buy Now) Buttons"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-sp-buttons-section"' . "\n" ; echo 'h3Button Code Generator For Specific Post/Page Buttons/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 - Google® 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. To protect Specific Posts/Pages, please see: codes2Member - Restriction Options - Specific Post/Page Access/code. Once you\'ve configured your Specific Post/Page Restrictions, those Posts/Pages will be available in the menus below./p' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each Post/Page that you plan to sell. Then press (Generate Button Code). These Google® Checkout Buttons are customized to work with s2Member seamlessly. You can even Package Additional Posts/Pages together into one transaction. em* Buttons are NOT saved here. This is only a Button Generator. Once you\'ve generated your Button, copy/paste it into your WordPress® Editor, wherever you feel it would be most appropriate. If you lose your Button Code, you\'ll need to come back & re-generate a new one./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'th class="ws-menu-page-th-side"' . "\n" ; echo 'label for="ws-plugin--s2member-pro-sp-shortcode"' . "\n" ; echo 'Button Codebr /Specific Posts/Pages:br /br /' . "\n" ; echo 'div id="ws-plugin--s2member-pro-sp-button-prev"/div' . "\n" ; echo '/label' . "\n" ; echo '/th' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-leading-id"' . "\n" ; echo 'option value=""— Select a Leading Post/Page that you\'ve protected —/option' . "\n" ; /**/ $ws_plugin__s2member_pro_temp_a_pp = ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) ? ( array ) get_posts ( "post_type=any&include=" . $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) : array ( ) ; /**/ $ws_plugin__s2member_pro_temp_a_pp_excludes = array ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "login_welcome_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "membership_options_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "file_download_limit_exceeded_page" ] ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) ) ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-additional-ids" multiple="multiple" style="height:100px;"' . "\n" ; echo 'optgroup label="— Package Additional Posts/Pages that you\'ve protected —"' . "\n" ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/optgroup/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pI want to charge: $input type="text" id="ws-plugin--s2member-pro-sp-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-sp-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/google-sp-hours.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-sp-desc" value="Description and pricing details here." size="68" //p' . "\n" ; echo 'pCurrency: select id="ws-plugin--s2member-pro-sp-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/google-currencies.html" ) . '/select input type="button" value="Generate Button Code" class="button-primary" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td colspan="2"' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/google-sp-checkout-button-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-sp-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; /**/ echo 'div' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'br /' . "\n" ; echo 'strongResulting Google® Button Code:/strong ( ultimately, your Shortcode will produce this snippet )br /' . "\n" ; echo 'textarea id="ws-plugin--s2member-pro-sp-button" rows="8" wrap="off" style="font-family:Consolas, monospace; width:99%;"' ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/buttons/google-sp-checkout-button.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%wpurl%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( site_url ( ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%ids%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "0" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%exp%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "72" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%desc%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "Description and pricing details." ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%cc%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "USD" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( $_SERVER [ "HTTP_HOST" ] ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%ra%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "0.01" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%sp%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "1" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%image%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "default" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%output%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( urlencode ( "anchor" ) ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%images%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member_pro" ] [ "c" ] [ "dir_url" ] . "/images" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/&/" , "&" , $ws_plugin__s2member_pro_temp_s ) ; /* Match this with the JavaScript generator. */ echo format_to_edit ( $ws_plugin__s2member_pro_temp_s ) ; echo '/textareabr /' . "\n" ; echo '↑ Use this more advanced Code if you\'re building a theme or plugin that integrates with s2Member.br /' . "\n" ; echo '↑ emThis span class="ws-menu-page-hilite"may contain PHP code too/span; so be careful if you use this./em' . "\n" ; echo '/div' . "\n" ; /**/ echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="Google® Specific Post/Page Access Links"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-sp-links-section"' . "\n" ; echo 'h3Specific Post/Page Link Generator ( for Customer Service )/h3' . "\n" ; echo 'ps2Member automatically generates Specific Post/Page Links for your Customers after checkout, and also sends them a link in a Confirmation Email. However, if you ever need to deal with a Customer Service issue that requires a new Specific Post/Page Link to be created manually, you can use this tool for that./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-leading-id"' . "\n" ; echo 'option value=""— Select a Leading Post/Page that you\'ve protected —/option' . "\n" ; /**/ $ws_plugin__s2member_pro_temp_a_pp = ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) ? ( array ) get_posts ( "post_type=any&include=" . $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) : array ( ) ; /**/ $ws_plugin__s2member_pro_temp_a_pp_excludes = array ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "login_welcome_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "membership_options_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "file_download_limit_exceeded_page" ] ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) ) ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-additional-ids" multiple="multiple" style="height:100px; min-width:450px;"' . "\n" ; echo 'optgroup label="— Package Additional Posts/Pages that you\'ve protected —"' . "\n" ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/optgroup/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/google-sp-hours.html" ) . '/select input type="button" value="Generate Access Link" class="button-primary" / img id="ws-plugin--s2member-pro-sp-link-loading" src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/ajax-loader.gif" alt="" style="display:none;" //p' . "\n" ; echo 'p id="ws-plugin--s2member-pro-sp-link" style="font-family:Consolas, monospace; display:none;"/p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="Shortcode Attributes ( Explained )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-shortcode-attrs-section"' . "\n" ; echo 'h3Shortcode Attributes ( Explained In Full Detail )/h3' . "\n" ; echo 'pWhen you generate a Button Code, s2Member will make a a href="http://codex.wordpress.org/Shortcode_API#Overview" target="_blank" rel="external"Shortcode/a available to you. Like most Shortcodes for WordPress®, s2Member reads Attributes in your Shortcode. These Attributes will be pre-configured by one of s2Member\'s Button Generators automatically; so there really is nothing more you need to do. However, many site owners like to know exactly how these Shortcode Attributes work. Below, is a brief overview of each possible Shortcode Attribute./p' . "\n" ; /**/ echo 'table class="form-table" style="margin-top:0;"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr style="padding-top:0;"' . "\n" ; /**/ echo 'td style="padding-top:0;"' . "\n" ; echo 'ul' . "\n" ; echo 'licodecancel="0"/code Cancellation Button. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Cancellation Button, code1/code = this IS a Cancellation Button./li' . "\n" ; echo 'licodecc="USD"/code 3 character Currency Code. Not valid when codemodify|cancel="1"/code./li' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodeccaps="music,videos"/code A comma-delimited list of Custom Capabilities. Only valid w/ Membership Level Access./li' . "\n" : '' ; echo 'licodecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '"/code must start with your domain. Additional values can be piped in ( ex: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3|etc"/code ). Not valid when codemodify|cancel="1"/code./li' . "\n" ; echo 'licodedesc="Gold Membership"/code A brief purchase Description. Not valid when codemodify|cancel="1"/code./li' . "\n" ; echo 'licodeexp="72"/code Access Expires ( in hours ). Only valid when codesp="1"/code for Specific Post/Page Access./li' . "\n" ; echo 'licodeids="14"/code A Post/Page ID#, or a comma-delimited list of IDs. Only valid when codesp="1"/code for Specific Post/Page Access./li' . "\n" ; echo 'licodeimage="default"/code Button Image Location. Possible values: codedefault/code = use the default Google® Checkout Button, codehttp://.../code = location of your custom Image./li' . "\n" ; echo 'licodelevel="1"/code Membership Level [1-4] em( or, up to the number of configured Levels )/em. Only valid for Buttons providing paid Membership Level Access./li' . "\n" ; echo 'licodemodify="0"/code Modification Button. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Modification Button, code1/code = this IS a Modification Button./li' . "\n" ; echo 'licodeoutput="anchor"/code Output Type. Possible values: codeanchor/code = Google® Checkout Button ( <a> anchor tag ) URL w/ ?query string, codeurl/code = raw URL w/ ?query string./li' . "\n" ; echo 'licodera="0.01"/code Regular, Buy Now, and/or Recurring Amount. Must be >= code0.01/code. Not valid when codemodify|cancel="1"/code./li' . "\n" ; echo 'licoderp="1"/code Regular Period. Only valid w/ Membership Level Access. Must be >= code1/code ( ex: code1/code Week, code2/code Months, code1/code Month, code3/code Days )./li' . "\n" ; echo 'licodert="M"/code Regular Term. Only valid w/ Membership Level Access. Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years, codeL/code = Lifetime./li' . "\n" ; echo 'licoderr="1"/code Recurring directive. Only valid w/ Membership Level Access. Possible values: code0/code = non-recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; code1/code = recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; codeBN/code = non-recurring "Buy Now" functionality, no Trial Period possible./li' . "\n" ; echo 'licodesp="0"/code Specific Post/Page Button. Possible values: code0/code = this is NOT a Specific Post/Page Access Button, code1/code = this IS a Specific Post/Page Access Button./li' . "\n" ; echo 'licodeta="0.00"/code Trial Amount. Only valid w/ Membership Level Access. Must be code0/code when codert="L"/code or when coderr="BN"/code./li' . "\n" ; echo 'licodetp="0"/code Trial Period. Only valid w/ Membership Level Access. Must be code0/code when codert="L"/code or when coderr="BN"/code./li' . "\n" ; echo 'licodett="D"/code Trial Term. Only valid w/ Membership Level Access. Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years./li' . "\n" ; echo '/ul' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\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_pro_menu_page_google_buttons ( ) ; ? [ full view ]s2member-pro\includes\menu-pages\google-buttons.inc.php Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code(!-- :: s-words --)Statistics: Posted by System Robot — August 15th, 2011, 3:19 pm
]]>