s2Member v110815
Source Code: s2member-pro\includes\menu-pages\ccbill-buttons.inc.php
Docs updated: August 15, 2011, 4:18 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\ccbill-buttons.inc.php ?php /** * Menu page for s2Member Pro ( ccBill® 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_ccbill_buttons" ) ) { /** * Menu page for s2Member Pro ( ccBill® Buttons page ). * * @package s2Member\Menu_Pages * @since 110531 */ class c_ws_plugin__s2member_pro_menu_page_ccbill_buttons { public function __construct ( ) { echo 'div class="wrap ws-menu-page"' . "\n" ; /**/ echo 'div id="icon-plugins" class="icon32"br //div' . "\n" ; echo 'h2s2Member® / ccBill® 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="ccBill® Buttons 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 ccBill® 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 ccBill® IPN/Postback and DataLink services. s2Member receives updates from ccBill® 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 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/ccbill-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="2.95" size="4" / / select id="ws-plugin--s2member-pro-level' . $n . '-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/ccbill-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/ccbill-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/ccbill-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 '/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="ccBill® 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 ccBill® Recurring Subscription can be modified by the Customer, or even cancelled by the Customer through ccBill®. It\'s very simple. A Member clicks a Modification/Cancellation Button. This brings the Customer to an "Order Lookup" screen at ccBill.com. 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 ccBill\'s DataLink 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 ccBill®... 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/ccbill-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/ccbill-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 '/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="ccBill® 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 Non-Recurring Subscriptions ): 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="ccBill® 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 / Non-Recurring" 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 - ccBill® 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 ccBill® 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="2.95" size="4" / / select id="ws-plugin--s2member-pro-sp-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/ccbill-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/ccbill-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/ccbill-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 '/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="ccBill® 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/ccbill-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 ccBill® 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 = ccBill® Button ( <a> anchor tag ) URL w/ ?query string, codeurl/code = raw URL w/ ?query string./li' . "\n" ; echo 'licodera="2.95"/code Regular, Buy Now, and/or Recurring Amount. Must be >= code2.95/code and <= code100.00/code. ccBill® will NOT allow amounts larger than code100.00/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 ). ccBill® does NOT allow a Regular Billing Period to be < code2/code days, or > code1/code year. When coderr="1"/code ( recurring ), ccBill® ONLY allows monthly, bi-monthly, and quarterly billing. So, for Recurring Subscriptions, you must use one of these combinations: coderp="1" rt="M"/code or coderp="2" rt="M"/code or coderp="3" rt="M"/code./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. ccBill® does NOT allow a Regular Billing Period to be < code2 days/code, or > code1 year/code. When coderr="1"/code ( recurring ), ccBill® ONLY allows monthly, bi-monthly, and quarterly billing. So, for Recurring Subscriptions, you must use one of these combinations: coderp="1" rt="M"/code or coderp="2" rt="M"/code or coderp="3" rt="M"/code./li' . "\n" ; echo 'licoderr="1"/code Recurring directive. Only valid w/ Membership Level Access. Possible values: code0/code = Non-Recurring / Buy Now ( no Initial/Trial Period possible ); code1/code = Recurring Subscription, with possible Initial/Trial Period at a different Trial Amount. ccBill® does NOT allow a 100% free Trial; you have to charge at least code2.95/code. With ccBill®, Initial/Trial Periods are NOT possible unless coderr="1"/code ( recurring )./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; and only when coderr="1"/code ( recurring ). When provided, must be >= code2.95/code and <= code100.00/code./li' . "\n" ; echo 'licodetp="0"/code Trial Period. Only valid w/ Membership Level Access; and only when coderr="1"/code ( recurring ). When provided, must >= code1/code. ccBill® will NOT allow Initial/Trial Periods longer than code365/code days./li' . "\n" ; echo 'licodett="D"/code Trial Term. Only valid w/ Membership Level Access; and only when coderr="1"/code ( recurring ). Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years. My NOT exceed code365 days/code./li' . "\n" ; echo '/ul' . "\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="s2_ Vars ( Explained )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-s2-vars-section"' . "\n" ; echo 'h3s2_ Variables ( Explained In Full Detail )/h3' . "\n" ; echo 'pWhen you generate a Button Code, s2Member will make a Shortcode available to you. Ultimately, your Shortcode produces a clickable link that will send Customers over to ccBill® where they\'ll complete the checkout process. You may notice that s2Member will attach several s2_ Variables to the link it generates. These s2_ Variables 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 s2_ Variables work. Below, is a brief overview of each possible s2_ Variable./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 'licode&s2_custom=' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '/code The domain of your site, which is passed through the `custom` attribute in your Shortcode. You can pipe in additional values if you like ( ex: codeem' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3/em/code )./li' . "\n" ; echo 'licode&s2_customer_ip=' . esc_html (S2MEMBER_CURRENT_USER_IP) . '/code This is the Customer\'s IP Address via code$_SERVER["REMOTE_ADDR"]/code. s2Member will store the Customer\'s IP Address in case you need it for tracking and/or affiliate program integration em( optional )/em./li' . "\n" ; echo 'licode&s2_desc=Brief Description/code Description s2Member uses for a ccBill® purchase. This can/could be different from what you have on file at ccBill® for a Dynamic Pricing Form./li' . "\n" ; echo 'licode&s2_invoice=1:music,videos:2 D/code s2Member\'s Item Number for Membership Level Access ( colon separated codeemlevel:custom_capabilities:fixed term/em/code ) that the Subscription is for./li' . "\n" ; echo 'licode&s2_invoice=sp:13,24,36:72/code s2Member\'s Item Number for Specific Post/Page Access ( translates to: codeemsp:comma-delimited IDs:expiration hours/em/code )./li' . "\n" ; echo 'licode&s2_p1=0 D/code For Subscriptions, this tells s2Member\'s DataLink/Background Post handlers how many Initial/Trial Days are in a Customer\'s ccBill® Subscription configuration./li' . "\n" ; echo 'licode&s2_p3=1 M/code For Subscriptions, this tells s2Member\'s DataLink/Background Post handlers the Regular Billing Period of a Customer\'s ccBill® Subscription configuration./li' . "\n" ; echo 'licode&s2_referencing=54825/code If a Member is logged-in when they click a Checkout Button, s2Member will tag this onto the end of the link so it can update a Customer\'s account instead of asking them to re-register after checkout. The value of this parameter will be set to the Member\'s current Paid Subscr. ID, as stored by s2Member in a previous purchase. If the Customer is NOT a paid Member ( i.e. they\'re still a Free Subscriber ), s2Member will grab the User\'s ID# in your WordPress® database instead./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_ccbill_buttons ( ) ; ? [ full view ]s2member-pro\includes\menu-pages\ccbill-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:18 pm
]]>