PluginProbe ʕ •ᴥ•ʔ
Code Manager / 1.0.28
Code Manager v1.0.28
1.0.48 1.0.47 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.3 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.4 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9
code-manager / freemius / templates / pricing.php
code-manager / freemius / templates Last commit date
account 2 years ago connect 2 years ago debug 2 years ago forms 2 years ago js 2 years ago partials 2 years ago plugin-info 2 years ago account.php 2 years ago add-ons.php 2 years ago add-trial-to-pricing.php 2 years ago admin-notice.php 2 years ago ajax-loader.php 2 years ago api-connectivity-message-js.php 2 years ago auto-installation.php 2 years ago checkout.php 2 years ago clone-resolution-js.php 2 years ago connect.php 2 years ago contact.php 2 years ago debug.php 2 years ago email.php 2 years ago gdpr-optin-js.php 2 years ago index.php 2 years ago plugin-icon.php 2 years ago powered-by.php 2 years ago pricing.php 2 years ago secure-https-header.php 2 years ago sticky-admin-notice-js.php 2 years ago tabs-capture-js.php 2 years ago tabs.php 2 years ago
pricing.php
211 lines
1 <?php
2 /**
3 * @package Freemius
4 * @copyright Copyright (c) 2015, Freemius, Inc.
5 * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6 * @since 1.0.3
7 */
8
9 /**
10 * Note for WordPress.org Theme/Plugin reviewer:
11 * Freemius is an SDK for plugin and theme developers. Since the core
12 * of the SDK is relevant both for plugins and themes, for obvious reasons,
13 * we only develop and maintain one code base.
14 *
15 * This code (and page) will not run for wp.org themes (only plugins).
16 *
17 * In addition, this page loads an i-frame. We intentionally named it 'frame'
18 * so it will pass the "Theme Check" that is looking for the string "i" . "frame".
19 *
20 * UPDATE:
21 * After ongoing conversations with the WordPress.org TRT we received
22 * an official approval for including i-frames in the theme's WP Admin setting's
23 * page tab (the SDK will never add any i-frames on the sitefront). i-frames
24 * were never against the guidelines, but we wanted to get the team's blessings
25 * before we move forward. For the record, I got the final approval from
26 * Ulrich Pogson (@grapplerulrich), a team lead at the TRT during WordCamp
27 * Europe 2017 (June 16th, 2017).
28 *
29 * If you have any questions or need clarifications, please don't hesitate
30 * pinging me on slack, my username is @svovaf.
31 *
32 * @author Vova Feldman (@svovaf)
33 * @since 1.2.2
34 */
35
36 if ( ! defined( 'ABSPATH' ) ) {
37 exit;
38 }
39
40 wp_enqueue_script( 'jquery' );
41 wp_enqueue_script( 'json2' );
42 fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
43 fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
44 fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
45
46 /**
47 * @var array $VARS
48 * @var Freemius $fs
49 */
50 $fs = freemius( $VARS['id'] );
51 $slug = $fs->get_slug();
52 $timestamp = time();
53
54 $context_params = array(
55 'plugin_id' => $fs->get_id(),
56 'plugin_public_key' => $fs->get_public_key(),
57 'plugin_version' => $fs->get_plugin_version(),
58 );
59
60 $bundle_id = $fs->get_bundle_id();
61 if ( ! is_null( $bundle_id ) ) {
62 $context_params['bundle_id'] = $bundle_id;
63 }
64
65 // Get site context secure params.
66 if ( $fs->is_registered() ) {
67 $context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
68 $fs->get_site(),
69 $timestamp,
70 'upgrade'
71 ) );
72 } else {
73 $context_params['home_url'] = home_url();
74 }
75
76 if ( $fs->is_payments_sandbox() ) // Append plugin secure token for sandbox mode authentication.)
77 {
78 $context_params['sandbox'] = FS_Security::instance()->get_secure_token(
79 $fs->get_plugin(),
80 $timestamp,
81 'checkout'
82 );
83 }
84
85 $query_params = array_merge( $context_params, $_GET, array(
86 'next' => $fs->_get_sync_license_url( false, false ),
87 'plugin_version' => $fs->get_plugin_version(),
88 // Billing cycle.
89 'billing_cycle' => fs_request_get( 'billing_cycle', WP_FS__PERIOD_ANNUALLY ),
90 'is_network_admin' => fs_is_network_admin() ? 'true' : 'false',
91 'currency' => $fs->apply_filters( 'default_currency', 'usd' ),
92 'discounts_model' => $fs->apply_filters( 'pricing/discounts_model', 'absolute' ),
93 ) );
94
95 $use_external_pricing = $fs->should_use_external_pricing();
96
97 if ( ! $use_external_pricing ) {
98 $pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() );
99 wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
100 } else {
101 if ( ! $fs->is_registered() ) {
102 $template_data = array(
103 'id' => $fs->get_id(),
104 );
105 fs_require_template( 'forms/trial-start.php', $template_data);
106 }
107
108 $view_params = array(
109 'id' => $VARS['id'],
110 'page' => strtolower( $fs->get_text_x_inline( 'Pricing', 'noun', 'pricing' ) ),
111 );
112 fs_require_once_template('secure-https-header.php', $view_params);
113 }
114
115 $has_tabs = $fs->_add_tabs_before_content();
116
117 if ( $has_tabs ) {
118 $query_params['tabs'] = 'true';
119 }
120 ?>
121 <div id="fs_pricing" class="wrap fs-section fs-full-size-wrapper">
122 <?php if ( ! $use_external_pricing ) : ?>
123 <div id="fs_pricing_wrapper" data-public-url="<?php echo trailingslashit( dirname( $pricing_js_url ) ) ?>"></div>
124 <?php
125 $pricing_config = array_merge( array(
126 'contact_url' => $fs->contact_url(),
127 'is_production' => ( defined( 'WP_FS__IS_PRODUCTION_MODE' ) ? WP_FS__IS_PRODUCTION_MODE : null ),
128 'menu_slug' => $fs->get_menu_slug(),
129 'mode' => 'dashboard',
130 'fs_wp_endpoint_url' => WP_FS__ADDRESS,
131 'request_handler_url' => admin_url(
132 'admin-ajax.php?' . http_build_query( array(
133 'module_id' => $fs->get_id(),
134 'action' => $fs->get_ajax_action( 'pricing_ajax_action' ),
135 'security' => $fs->get_ajax_security( 'pricing_ajax_action' )
136 ) )
137 ),
138 'selector' => '#fs_pricing_wrapper',
139 'unique_affix' => $fs->get_unique_affix(),
140 'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ),
141 ), $query_params );
142
143 wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' );
144 ?>
145 <?php else : ?>
146 <div id="fs_frame"></div>
147 <form action="" method="POST">
148 <input type="hidden" name="user_id"/>
149 <input type="hidden" name="user_email"/>
150 <input type="hidden" name="site_id"/>
151 <input type="hidden" name="public_key"/>
152 <input type="hidden" name="secret_key"/>
153 <input type="hidden" name="action" value="account"/>
154 </form>
155
156 <script type="text/javascript">
157 (function ($, undef) {
158 $(function () {
159 var
160 // Keep track of the i-frame height.
161 frame_height = 800,
162 base_url = '<?php echo WP_FS__ADDRESS ?>',
163 // Pass the parent page URL into the i-frame in a meaningful way (this URL could be
164 // passed via query string or hard coded into the child page, it depends on your needs).
165 src = base_url + '/pricing/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
166
167 // Append the I-frame into the DOM.
168 frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>')
169 .appendTo('#fs_frame');
170
171 FS.PostMessage.init(base_url, [frame[0]]);
172
173 FS.PostMessage.receive('height', function (data) {
174 var h = data.height;
175 if (!isNaN(h) && h > 0 && h != frame_height) {
176 frame_height = h;
177 frame.height(frame_height + 'px');
178
179 FS.PostMessage.postScroll(frame[0]);
180 }
181 });
182
183 FS.PostMessage.receive('get_dimensions', function (data) {
184 FS.PostMessage.post('dimensions', {
185 height : $(document.body).height(),
186 scrollTop: $(document).scrollTop()
187 }, frame[0]);
188 });
189
190 FS.PostMessage.receive('start_trial', function (data) {
191 openTrialConfirmationModal(data);
192 });
193 });
194 })(jQuery);
195 </script>
196 <?php endif ?>
197 </div>
198 <?php
199 if ( $has_tabs ) {
200 $fs->_add_tabs_after_content();
201 }
202
203 $params = array(
204 'page' => 'pricing',
205 'module_id' => $fs->get_id(),
206 'module_type' => $fs->get_module_type(),
207 'module_slug' => $slug,
208 'module_version' => $fs->get_plugin_version(),
209 );
210 fs_require_template( 'powered-by.php', $params );
211