PluginProbe ʕ •ᴥ•ʔ
Royal Addons for Elementor – Addons and Templates Kit for Elementor / 1.7.1064
Royal Addons for Elementor – Addons and Templates Kit for Elementor v1.7.1064
1.7.1064 1.7.1063 1.7.1062 1.7.1061 1.7.1060 1.7.1059 1.7.1058 trunk 1.0.0 1.1.0 1.2 1.3 1.3.1 1.3.2 1.3.21 1.3.22 1.3.23 1.3.24 1.3.25 1.3.26 1.3.27 1.3.28 1.3.29 1.3.30 1.3.31 1.3.32 1.3.33 1.3.34 1.3.35 1.3.36 1.3.37 1.3.38 1.3.39 1.3.40 1.3.41 1.3.42 1.3.43 1.3.44 1.3.45 1.3.46 1.3.47 1.3.48 1.3.49 1.3.50 1.3.51 1.3.52 1.3.53 1.3.54 1.3.55 1.3.56 1.3.57 1.3.58 1.3.59 1.3.60 1.3.61 1.3.62 1.3.63 1.3.64 1.3.65 1.3.66 1.3.67 1.3.68 1.3.69 1.3.70 1.3.71 1.3.72 1.3.73 1.3.74 1.3.75 1.3.76 1.3.77 1.3.78 1.3.79 1.3.80 1.3.81 1.3.82 1.3.83 1.3.84 1.3.85 1.3.86 1.3.87 1.3.88 1.3.89 1.3.90 1.3.91 1.3.92 1.3.93 1.3.94 1.3.95 1.3.96 1.3.97 1.3.971 1.3.972 1.3.973 1.3.974 1.3.975 1.3.976 1.3.977 1.3.978 1.3.979 1.3.980 1.3.981 1.3.982 1.3.983 1.3.984 1.3.985 1.3.986 1.3.987 1.7.1 1.7.1001 1.7.1002 1.7.1003 1.7.1004 1.7.1005 1.7.1006 1.7.1007 1.7.1008 1.7.1009 1.7.1010 1.7.1011 1.7.1012 1.7.1013 1.7.1014 1.7.1015 1.7.1016 1.7.1017 1.7.1018 1.7.1019 1.7.1020 1.7.1021 1.7.1022 1.7.1023 1.7.1024 1.7.1025 1.7.1026 1.7.1027 1.7.1028 1.7.1029 1.7.1030 1.7.1031 1.7.1032 1.7.1033 1.7.1034 1.7.1035 1.7.1036 1.7.1037 1.7.1038 1.7.1039 1.7.1040 1.7.1041 1.7.1042 1.7.1043 1.7.1044 1.7.1045 1.7.1046 1.7.1047 1.7.1048 1.7.1049 1.7.1050 1.7.1051 1.7.1052 1.7.1053 1.7.1054 1.7.1055 1.7.1056 1.7.1057
royal-elementor-addons / freemius / templates / account.php
royal-elementor-addons / freemius / templates Last commit date
account 5 days ago checkout 5 days ago connect 5 days ago debug 5 days ago forms 5 days ago js 5 days ago partials 5 days ago plugin-info 5 days ago account.php 5 days ago add-ons.php 5 days ago add-trial-to-pricing.php 5 days ago admin-notice.php 5 days ago ajax-loader.php 5 days ago api-connectivity-message-js.php 5 days ago auto-installation.php 5 days ago checkout.php 5 days ago clone-resolution-js.php 5 days ago connect.php 5 days ago contact.php 5 days ago debug.php 5 days ago email.php 5 days ago gdpr-optin-js.php 5 days ago index.php 5 days ago plugin-icon.php 5 days ago pricing.php 5 days ago secure-https-header.php 5 days ago sticky-admin-notice-js.php 5 days ago tabs-capture-js.php 5 days ago tabs.php 5 days ago
account.php
1121 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 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 /**
14 * @var array $VARS
15 * @var Freemius $fs
16 */
17 $fs = freemius( $VARS['id'] );
18
19 $slug = $fs->get_slug();
20
21 /**
22 * @var FS_Plugin_Tag $update
23 */
24 $update = $fs->has_release_on_freemius() ?
25 $fs->get_update( false, false ) :
26 null;
27
28 if ( is_object($update) ) {
29 /**
30 * This logic is particularly required for multisite environment.
31 * If a module is site activated (not network) and not on the main site,
32 * the module will NOT be executed on the network level, therefore, the
33 * custom updates logic will not be executed as well, so unless we force
34 * the injection of the update into the updates transient, premium updates
35 * will not work.
36 *
37 * @author Vova Feldman (@svovaf)
38 * @since 2.0.0
39 */
40 $updater = FS_Plugin_Updater::instance( $fs );
41 $updater->set_update_data( $update );
42 }
43
44 $is_paying = $fs->is_paying();
45 $user = $fs->get_user();
46 $site = $fs->get_site();
47 $name = $user->get_name();
48 $license = $fs->_get_license();
49 $is_license_foreign = ( is_object( $license ) && $user->id != $license->user_id );
50 $is_data_debug_mode = $fs->is_data_debug_mode();
51 $is_whitelabeled = $fs->is_whitelabeled();
52 $subscription = ( is_object( $license ) ?
53 $fs->_get_subscription( $license->id ) :
54 null );
55 $plan = $fs->get_plan();
56 $is_active_subscription = ( is_object( $subscription ) && $subscription->is_active() );
57 $is_paid_trial = $fs->is_paid_trial();
58 $has_paid_plan = $fs->apply_filters( 'has_paid_plan_account', $fs->has_paid_plan() );
59 $show_upgrade = ( ! $is_whitelabeled && $has_paid_plan && ! $is_paying && ! $is_paid_trial );
60 $trial_plan = $fs->get_trial_plan();
61
62 $is_plan_change_supported = (
63 ! $fs->is_single_plan() &&
64 ! $fs->apply_filters( 'hide_plan_change', false )
65 );
66
67 if ( $has_paid_plan ) {
68 $fs->_add_license_activation_dialog_box();
69 }
70
71 if ( $fs->should_handle_user_change() ) {
72 $fs->_add_email_address_update_dialog_box();
73 }
74
75 $ids_of_installs_activated_with_foreign_licenses = $fs->should_handle_user_change() ?
76 $fs->get_installs_ids_with_foreign_licenses() :
77 array();
78
79 if ( ! empty( $ids_of_installs_activated_with_foreign_licenses ) ) {
80 $fs->_add_user_change_dialog_box( $ids_of_installs_activated_with_foreign_licenses );
81 }
82
83 if ( $fs->is_whitelabeled( true ) || $fs->is_data_debug_mode() ) {
84 $fs->_add_data_debug_mode_dialog_box();
85 }
86
87 if ( fs_request_get_bool( 'auto_install' ) ) {
88 $fs->_add_auto_installation_dialog_box();
89 }
90
91 if ( fs_request_get_bool( 'activate_license' ) ) {
92 // Open the license activation dialog box on the account page.
93 add_action( 'admin_footer', array(
94 &$fs,
95 '_open_license_activation_dialog_box'
96 ) );
97 }
98
99 $show_billing = ( ! $is_whitelabeled && ! $fs->apply_filters( 'hide_billing_and_payments_info', false ) );
100 if ( $show_billing ) {
101 $payments = $fs->_fetch_payments();
102
103 $show_billing = ( is_array( $payments ) && 0 < count( $payments ) );
104 }
105
106
107 $has_tabs = $fs->_add_tabs_before_content();
108
109 // Aliases.
110 $download_latest_text = fs_text_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $slug );
111 $downgrading_plan_text = fs_text_inline( 'Downgrading your plan', 'downgrading-plan', $slug );
112 $cancelling_subscription_text = fs_text_inline( 'Cancelling the subscription', 'cancelling-subscription', $slug );
113 /* translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription' */
114 $downgrade_x_confirm_text = fs_text_inline( '%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s.', 'downgrade-x-confirm', $slug );
115 $prices_increase_text = fs_text_inline( 'Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price.', 'pricing-increase-warning', $slug );
116 $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug );
117 $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.', 'after-downgrade-non-blocking', $slug );
118 $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug );
119 /* translators: %s: Plan title (e.g. "Professional") */
120 $activate_plan_text = fs_text_inline( 'Activate %s Plan', 'activate-x-plan', $slug );
121 $version_text = fs_text_x_inline( 'Version', 'product version', 'version', $slug );
122 /* translators: %s: Time period (e.g. Auto renews in "2 months") */
123 $renews_in_text = fs_text_inline( 'Auto renews in %s', 'renews-in', $slug );
124 /* translators: %s: Time period (e.g. Expires in "2 months") */
125 $expires_in_text = fs_text_inline( 'Expires in %s', 'expires-in', $slug );
126 $sync_license_text = fs_text_x_inline( 'Sync License', 'as synchronize license', 'sync-license', $slug );
127 $cancel_trial_text = fs_text_inline( 'Cancel Trial', 'cancel-trial', $slug );
128 $change_plan_text = fs_text_inline( 'Change Plan', 'change-plan', $slug );
129 $upgrade_text = fs_text_x_inline( 'Upgrade', 'verb', 'upgrade', $slug );
130 $addons_text = fs_text_inline( 'Add-Ons', 'add-ons', $slug );
131 $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug );
132 $trial_text = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug );
133 $free_text = fs_text_inline( 'Free', 'free', $slug );
134 $activate_text = fs_text_inline( 'Activate', 'activate', $slug );
135 $plan_text = fs_text_x_inline( 'Plan', 'as product pricing plan', 'plan', $slug );
136 $bundle_plan_text = fs_text_inline( 'Bundle Plan', 'bundle-plan', $slug );
137
138 $show_plan_row = true;
139 $show_license_row = is_object( $license );
140
141 $site_view_params = array();
142
143 if ( fs_is_network_admin() ) {
144 $sites = Freemius::get_sites();
145 $all_installs_plan_id = null;
146 $all_installs_license_id = ( $show_license_row ? $license->id : null );
147 foreach ( $sites as $s ) {
148 $site_info = $fs->get_site_info( $s );
149 $install = $fs->get_install_by_blog_id( $site_info['blog_id'] );
150 $view_params = array(
151 'freemius' => $fs,
152 'user' => $fs->get_user(),
153 'license' => $license,
154 'site' => $site_info,
155 'install' => $install,
156 );
157
158 $site_view_params[] = $view_params;
159
160 if ( empty( $install ) ) {
161 continue;
162 }
163
164 if ( $show_plan_row ) {
165 if ( is_null( $all_installs_plan_id ) ) {
166 $all_installs_plan_id = $install->plan_id;
167 } else if ( $all_installs_plan_id != $install->plan_id ) {
168 $show_plan_row = false;
169 }
170 }
171
172 if ( $show_license_row && $all_installs_license_id != $install->license_id ) {
173 $show_license_row = false;
174 }
175 }
176 }
177
178 $has_bundle_license = false;
179
180 if ( is_object( $license ) &&
181 FS_Plugin_License::is_valid_id( $license->parent_license_id )
182 ) {
183 // Context license has a parent license, therefore, the account has a bundle license.
184 $has_bundle_license = true;
185 }
186
187 $bundle_subscription = null;
188 $is_bundle_first_payment_pending = false;
189
190 if (
191 $show_plan_row &&
192 is_object( $license ) &&
193 $has_bundle_license
194 ) {
195 $bundle_plan_title = strtoupper( $license->parent_plan_title );
196 $bundle_subscription = $fs->_get_subscription( $license->parent_license_id );
197 $is_bundle_first_payment_pending = $license->is_first_payment_pending();
198 }
199
200 $fs_blog_id = ( is_multisite() && ! is_network_admin() ) ?
201 get_current_blog_id() :
202 0;
203
204 $active_plugins_directories_map = Freemius::get_active_plugins_directories_map( $fs_blog_id );
205
206 $is_premium = $fs->is_premium();
207
208 $account_addons = $fs->get_updated_account_addons();
209 $installed_addons = $fs->get_installed_addons();
210 $installed_addons_ids = array();
211
212 /**
213 * Store the installed add-ons' IDs into a collection which will be used in determining the add-ons to show on the "Account" page, and at the same time try to find an add-on that is activated with a bundle license if the core product is not.
214 *
215 * @author Leo Fajardo
216 *
217 * @since 2.4.0
218 */
219 foreach ( $installed_addons as $fs_addon ) {
220 $installed_addons_ids[] = $fs_addon->get_id();
221
222 if ( $has_bundle_license ) {
223 // We already have the context bundle license details, skip.
224 continue;
225 }
226
227 if (
228 $show_plan_row &&
229 $fs_addon->has_active_valid_license()
230 ) {
231 $addon_license = $fs_addon->_get_license();
232
233 if ( FS_Plugin_License::is_valid_id( $addon_license->parent_license_id ) ) {
234 // Add-on's license is associated with a parent/bundle license.
235 $has_bundle_license = true;
236
237 $bundle_plan_title = strtoupper( $addon_license->parent_plan_title );
238 $bundle_subscription = $fs_addon->_get_subscription( $addon_license->parent_license_id );
239 $is_bundle_first_payment_pending = $addon_license->is_first_payment_pending();
240 }
241 }
242 }
243
244 $addons_to_show = array_unique( array_merge( $installed_addons_ids, $account_addons ) );
245
246 $is_active_bundle_subscription = ( is_object( $bundle_subscription ) && $bundle_subscription->is_active() );
247
248 $available_license = ( $fs->is_free_plan() && ! fs_is_network_admin() ) ?
249 $fs->_get_available_premium_license( $site->is_localhost() ) :
250 null;
251
252 $available_license_paid_plan = is_object( $available_license ) ?
253 $fs->_get_plan_by_id( $available_license->plan_id ) :
254 null;
255 ?>
256 <div class="wrap fs-section">
257 <?php if ( ! $has_tabs && ! $fs->apply_filters( 'hide_account_tabs', false ) ) : ?>
258 <h2 class="nav-tab-wrapper">
259 <a href="<?php echo esc_url( $fs->get_account_url() ) ?>"
260 class="nav-tab nav-tab-active"><?php fs_esc_html_echo_inline( 'Account', 'account', $slug ) ?></a>
261 <?php if ( $fs->has_addons() ) : ?>
262 <a href="<?php echo esc_url( $fs->_get_admin_page_url( 'addons' ) ) ?>"
263 class="nav-tab"><?php echo esc_html( $addons_text ) ?></a>
264 <?php endif ?>
265 <?php if ( $show_upgrade ) : ?>
266 <a href="<?php echo esc_url( $fs->get_upgrade_url() ) ?>" class="nav-tab"><?php echo esc_html( $upgrade_text ) ?></a>
267 <?php if ( $fs->apply_filters( 'show_trial', true ) && ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
268 <a href="<?php echo esc_url( $fs->get_trial_url() ) ?>" class="nav-tab"><?php fs_esc_html_echo_inline( 'Free Trial', 'free-trial', $slug ) ?></a>
269 <?php endif ?>
270 <?php endif ?>
271 </h2>
272 <?php endif ?>
273
274 <div id="poststuff">
275 <div id="fs_account">
276 <div class="has-sidebar has-right-sidebar">
277 <div class="has-sidebar-content">
278 <div class="postbox">
279 <h3><span class="dashicons dashicons-businessman"></span> <?php fs_esc_html_echo_inline( 'Account Details', 'account-details', $slug ) ?></h3>
280 <div class="fs-header-actions">
281 <ul>
282 <?php if ( $fs->is_whitelabeled( true ) ) : ?>
283 <li>
284 <a href="#" class="debug-license-trigger"><i class="dashicons dashicons-<?php echo $is_whitelabeled ? 'editor-code' : 'controls-pause' ?>"></i> <span><?php
285 if ( $is_whitelabeled ) {
286 fs_esc_html_echo_inline( 'Start Debug', 'start-debug-license', $slug );
287 } else {
288 fs_esc_html_echo_inline( 'Stop Debug', 'stop-debug-license', $slug );
289 }
290 ?></span></a>
291 </li>
292 <li>&nbsp;&bull;&nbsp;</li>
293 <?php endif ?>
294 <?php if ( $show_billing ) : ?>
295 <li><a href="#fs_billing"><i class="dashicons dashicons-portfolio"></i> <?php fs_esc_html_echo_inline( 'Billing & Invoices', 'billing-invoices', $slug ) ?></a></li>
296 <li>&nbsp;&bull;&nbsp;</li>
297 <?php endif ?>
298 <?php if ( ! $is_whitelabeled ) : ?>
299 <?php if ( ! $is_paying ) : ?>
300 <li>
301 <?php
302 $view_params = array(
303 'freemius' => $fs,
304 'license' => $available_license,
305 'license_paid_plan' => $available_license_paid_plan,
306 );
307 fs_require_template( 'account/partials/disconnect-button.php', $view_params ); ?>
308 </li>
309 <li>&nbsp;&bull;&nbsp;</li>
310 <?php endif ?>
311 <?php if ( $is_paying ) : ?>
312 <?php if ( ! fs_is_network_admin() ) : ?>
313 <li>
314 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
315 <input type="hidden" name="fs_action" value="deactivate_license">
316 <?php wp_nonce_field( 'deactivate_license' ) ?>
317 <a href="#" class="fs-deactivate-license"><i
318 class="dashicons dashicons-admin-network"></i> <?php fs_echo_inline( 'Deactivate License', 'deactivate-license', $slug ) ?>
319 </a>
320 </form>
321 </li>
322 <li>&nbsp;&bull;&nbsp;</li>
323 <?php endif ?>
324 <?php if ( ! $license->is_lifetime() &&
325 $is_active_subscription
326 ) : ?>
327 <li>
328 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
329 <input type="hidden" name="fs_action" value="downgrade_account">
330 <?php wp_nonce_field( 'downgrade_account' ) ?>
331 <a href="#"
332 onclick="if ( confirm('<?php echo esc_attr( sprintf(
333 $downgrade_x_confirm_text,
334 ( $fs->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ),
335 $plan->title,
336 human_time_diff( time(), strtotime( $license->expiration ) )
337 ) ) ?> <?php if ( ! $license->is_block_features ) {
338 echo esc_attr( sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs->get_module_label( true ) ) );
339 } else {
340 echo esc_attr( sprintf( $after_downgrade_blocking_text, $plan->title ) );
341 }?> <?php echo esc_attr( $prices_increase_text ) ?> <?php fs_esc_attr_echo_inline( 'Are you sure you want to proceed?', 'proceed-confirmation', $slug ) ?>') ) this.parentNode.submit(); return false;"><i class="dashicons dashicons-download"></i> <?php echo esc_html( $fs->is_only_premium() ? fs_text_inline( 'Cancel Subscription', 'cancel-subscription', $slug ) : $downgrade_text ) ?></a>
342 </form>
343 </li>
344 <li>&nbsp;&bull;&nbsp;</li>
345 <?php endif ?>
346 <?php if ( $is_plan_change_supported ) : ?>
347 <li>
348 <a href="<?php echo esc_url( $fs->get_upgrade_url() ) ?>"><i
349 class="dashicons dashicons-grid-view"></i> <?php echo esc_html( $change_plan_text ) ?></a>
350 </li>
351 <li>&nbsp;&bull;&nbsp;</li>
352 <?php endif ?>
353 <?php elseif ( $is_paid_trial ) : ?>
354 <li>
355 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
356 <input type="hidden" name="fs_action" value="cancel_trial">
357 <?php wp_nonce_field( 'cancel_trial' ) ?>
358 <a href="#" class="fs-cancel-trial"><i
359 class="dashicons dashicons-download"></i> <?php echo esc_html( $cancel_trial_text ) ?></a>
360 </form>
361 </li>
362 <li>&nbsp;&bull;&nbsp;</li>
363 <?php endif ?>
364 <?php endif ?>
365 <li>
366 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
367 <input type="hidden" name="fs_action" value="<?php echo esc_attr( $fs->get_unique_affix() ) ?>_sync_license">
368 <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
369 <a href="#" onclick="this.parentNode.submit(); return false;"><i
370 class="dashicons dashicons-image-rotate"></i> <?php fs_esc_html_echo_x_inline( 'Sync', 'as synchronize', 'sync', $slug ) ?></a>
371 </form>
372 </li>
373 </ul>
374 </div>
375 <div class="inside">
376 <table id="fs_account_details" cellspacing="0" class="fs-key-value-table">
377 <?php
378 $hide_license_key = ( ! $show_license_row || $fs->apply_filters( 'hide_license_key', false ) );
379
380 $profile = array();
381
382 if ( ! $is_whitelabeled ) {
383 $profile[] = array(
384 'id' => 'user_name',
385 'title' => fs_text_inline( 'Name', 'name', $slug ),
386 'value' => $name
387 );
388 // if (isset($user->email) && false !== strpos($user->email, '@'))
389 $profile[] = array(
390 'id' => 'email',
391 'title' => fs_text_inline( 'Email', 'email', $slug ),
392 'value' => $user->email
393 );
394
395 if ( is_numeric( $user->id ) ) {
396 $profile[] = array(
397 'id' => 'user_id',
398 'title' => fs_text_inline( 'User ID', 'user-id', $slug ),
399 'value' => $user->id
400 );
401 }
402 }
403
404 $profile[] = array(
405 'id' => 'product',
406 'title' => ( $fs->is_plugin() ?
407 fs_text_inline( 'Plugin', 'plugin', $slug ) :
408 fs_text_inline( 'Theme', 'theme', $slug ) ),
409 'value' => $fs->get_plugin_title()
410 );
411
412 $profile[] = array(
413 'id' => 'product_id',
414 'title' => ( $fs->is_plugin() ?
415 fs_text_inline( 'Plugin', 'plugin', $slug ) :
416 fs_text_inline( 'Theme', 'theme', $slug ) ) . ' ' . fs_text_inline( 'ID', 'id', $slug ),
417 'value' => $fs->get_id()
418 );
419
420 if ( ! fs_is_network_admin()) {
421 $profile[] = array(
422 'id' => 'site_id',
423 'title' => fs_text_inline( 'Site ID', 'site-id', $slug ),
424 'value' => is_string( $site->id ) ?
425 $site->id :
426 fs_text_inline( 'No ID', 'no-id', $slug )
427 );
428
429 $profile[] = array(
430 'id' => 'site_public_key',
431 'title' => fs_text_inline( 'Public Key', 'public-key', $slug ),
432 'value' => $site->public_key
433 );
434
435 $profile[] = array(
436 'id' => 'site_secret_key',
437 'title' => fs_text_inline( 'Secret Key', 'secret-key', $slug ),
438 'value' => ( ( is_string( $site->secret_key ) ) ?
439 $site->secret_key :
440 fs_text_x_inline( 'No Secret', 'as secret encryption key missing', 'no-secret', $slug )
441 )
442 );
443 }
444
445 $profile[] = array(
446 'id' => 'version',
447 'title' => $version_text,
448 'value' => $fs->get_plugin_version()
449 );
450
451 if ( ! fs_is_network_admin() && $is_premium ) {
452 $profile[] = array(
453 'id' => 'beta_program',
454 'title' => '',
455 'value' => $site->is_beta
456 );
457 }
458
459 if ( $has_paid_plan || $has_bundle_license ) {
460 if ( $fs->is_trial() ) {
461 if ( $show_plan_row ) {
462 $profile[] = array(
463 'id' => 'plan',
464 'title' => $plan_text,
465 'value' => ( is_string( $trial_plan->name ) ?
466 strtoupper( $trial_plan->title ) :
467 fs_text_inline( 'Trial', 'trial', $slug ) )
468 );
469 }
470 } else {
471 if ( $show_plan_row ) {
472 $profile[] = array(
473 'id' => 'plan',
474 'title' => ( $has_bundle_license ? ucfirst( $fs->get_module_type() ) . ' ' : '' ) . $plan_text,
475 'value' => strtoupper( is_string( $plan->name ) ?
476 $plan->title :
477 strtoupper( $free_text )
478 )
479 );
480
481 if ( $has_bundle_license ) {
482 $profile[] = array(
483 'id' => 'bundle_plan',
484 'title' => $bundle_plan_text,
485 'value' => $bundle_plan_title
486 );
487 }
488 }
489
490 if ( is_object( $license ) ) {
491 if ( ! $hide_license_key ) {
492 $profile[] = array(
493 'id' => 'license_key',
494 'title' => fs_text_inline( 'License Key', $slug ),
495 'value' => $license->secret_key,
496 );
497 }
498 }
499 }
500 }
501 ?>
502 <?php $odd = true;
503 foreach ( $profile as $p ) : ?>
504 <?php
505 if ( 'plan' === $p['id'] && ! $has_paid_plan ) {
506 // If plugin don't have any paid plans, there's no reason
507 // to show current plan.
508 continue;
509 }
510 ?>
511 <tr class="fs-field-<?php echo esc_attr( $p['id'] ) ?><?php if ( $odd ) : ?> alternate<?php endif ?>">
512 <td>
513 <nobr><?php echo esc_html( $p['title'] ) ?><?php echo ( ! empty( $p['title'] ) ) ? ':' : '' ?></nobr>
514 </td>
515 <td<?php if ( 'plan' === $p['id'] || 'bundle_plan' === $p['id'] ) { echo ' colspan="2"'; }?>>
516 <?php if ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
517 <code><?php echo FS_Plugin_License::mask_secret_key_for_html( $p['value'] ) ?></code>
518 <?php if ( ! $is_whitelabeled ) : ?>
519 <input type="text" value="<?php echo htmlspecialchars( $p['value'] ) ?>" style="display: none"
520 readonly/>
521 <?php endif ?>
522 <?php elseif ( 'beta_program' === $p['id'] ) : ?>
523 <label>
524 <input type="checkbox" class="fs-toggle-beta-mode" <?php checked( true, $p['value'] ) ?>/><span><?php
525 fs_esc_html_echo_inline( 'Join the Beta program', 'join-beta', $slug )
526 ?></span></label>
527 <?php else : ?>
528 <code><?php echo htmlspecialchars( $p['value'] ) ?></code>
529 <?php endif ?>
530 <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
531 <label class="fs-tag fs-warn"><?php fs_esc_html_echo_inline( 'not verified', 'not-verified', $slug ) ?></label>
532 <?php endif ?>
533 <?php if ( 'plan' === $p['id'] ) : ?>
534 <?php if ( $fs->is_trial() ) : ?>
535 <label class="fs-tag fs-success"><?php echo esc_html( $trial_text ) ?></label>
536 <?php endif ?>
537 <?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
538 <?php if ( ! $is_active_subscription && ! $is_active_bundle_subscription && ! $license->is_first_payment_pending() ) : ?>
539 <?php $is_license_expired = $license->is_expired() ?>
540 <?php $expired_ago_text = ( fs_text_inline( 'Expired', 'expired', $slug ) . ' ' . fs_text_x_inline( '%s ago', 'x-ago', $slug ) ) ?>
541 <label
542 class="fs-tag <?php echo $is_license_expired ? 'fs-error' : 'fs-warn' ?>"><?php
543 echo esc_html( sprintf( $is_license_expired ? $expired_ago_text : $expires_in_text, human_time_diff( time(), strtotime( $license->expiration ) ) ) )
544 ?></label>
545 <?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
546 <label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ) ?></label>
547 <?php endif ?>
548 <?php elseif ( $fs->is_trial() ) : ?>
549 <label class="fs-tag fs-warn"><?php echo esc_html( sprintf( $expires_in_text, human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ) ?></label>
550 <?php endif ?>
551 <?php if ( ! $is_whitelabeled ) : ?>
552 <div class="button-group">
553 <?php if ( is_object( $available_license ) ) : ?>
554 <?php
555 $view_params = array(
556 'freemius' => $fs,
557 'slug' => $slug,
558 'license' => $available_license,
559 'plan' => $available_license_paid_plan,
560 'is_localhost' => $site->is_localhost(),
561 'install_id' => $site->id,
562 'class' => 'button-primary',
563 );
564 fs_require_template( 'account/partials/activate-license-button.php', $view_params ); ?>
565 <?php else : ?>
566 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>"
567 method="POST" class="button-group">
568 <?php if ( $show_upgrade && $is_premium ) : ?>
569 <a class="button activate-license-trigger <?php echo esc_attr( $fs->get_unique_affix() ) ?>" href="#"><?php fs_esc_html_echo_inline( 'Activate License', 'activate-license', $slug ) ?></a>
570 <?php endif ?>
571 <input type="submit" class="button"
572 value="<?php echo esc_attr( $sync_license_text ) ?>">
573 <input type="hidden" name="fs_action"
574 value="<?php echo esc_attr( $fs->get_unique_affix() ) ?>_sync_license">
575 <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
576 <?php if ( $show_upgrade || $is_plan_change_supported ) : ?>
577 <a href="<?php echo esc_url( $fs->get_upgrade_url() ) ?>"
578 class="button<?php
579 echo $show_upgrade ?
580 ' button-primary fs-upgrade' :
581 ' fs-change-plan'; ?> button-upgrade"><i
582 class="dashicons dashicons-cart"></i> <?php echo esc_html( $show_upgrade ? $upgrade_text : $change_plan_text ) ?></a>
583 <?php endif ?>
584 </form>
585 <?php endif ?>
586 </div>
587 <?php endif ?>
588 <?php elseif ( 'bundle_plan' === $p['id'] ) : ?>
589 <?php if ( is_object( $bundle_subscription ) ) : ?>
590 <?php if ( $is_active_bundle_subscription && ! $is_bundle_first_payment_pending ) : ?>
591 <label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $bundle_subscription->next_payment ) ) ) ) ?></label>
592 <?php endif ?>
593 <?php endif ?>
594 <?php elseif ( 'version' === $p['id'] && $has_paid_plan ) : ?>
595 <?php if ( $fs->has_premium_version() ) : ?>
596 <?php if ( $is_premium ) : ?>
597 <label
598 class="fs-tag fs-<?php echo $fs->can_use_premium_code() ? 'success' : 'warn' ?>"><?php fs_esc_html_echo_inline( 'Premium version', 'premium-version', $slug ) ?></label>
599 <?php elseif ( $fs->can_use_premium_code() ) : ?>
600 <label class="fs-tag fs-warn"><?php fs_esc_html_echo_inline( 'Free version', 'free-version', $slug ) ?></label>
601 <?php endif ?>
602 <?php endif ?>
603 <?php endif ?>
604 </td>
605 <?php if ( 'plan' !== $p['id'] && 'bundle_plan' !== $p['id'] ) : ?>
606 <td class="fs-right">
607 <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
608 <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST">
609 <input type="hidden" name="fs_action" value="verify_email">
610 <?php wp_nonce_field( 'verify_email' ) ?>
611 <input type="submit" class="button button-small"
612 value="<?php fs_esc_attr_echo_inline( 'Verify Email', 'verify-email', $slug ) ?>">
613 </form>
614 <?php endif ?>
615 <?php if ( 'version' === $p['id'] ) : ?>
616 <?php if ( $fs->has_release_on_freemius() ) : ?>
617 <div class="button-group">
618 <?php if ( $is_paying || $fs->is_trial() ) : ?>
619 <?php if ( ! $fs->is_allowed_to_install() ) : ?>
620 <a target="_blank" rel="noopener" class="button button-primary"
621 href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php
622 $download_version_text_suffix = ( is_object( $update ) ? ' [' . $update->version . ']' : '' );
623
624 $download_version_text = sprintf(
625 /* translators: %s: plan name (e.g. Download "Professional" Version) */
626 fs_text_inline( 'Download %s Version', 'download-x-version', $slug ),
627 ( $fs->is_trial() ? $trial_plan->title : $plan->title )
628 ) .
629 $download_version_text_suffix;
630
631 $download_version_text_length = function_exists( 'mb_strlen' ) ?
632 mb_strlen( $download_version_text ) :
633 strlen( $download_version_text );
634
635 if ( $download_version_text_length > 31 ) {
636 /**
637 * Try to limit the number of characters to 31 for now.
638 *
639 * @author Leo Fajardo (@leorw)
640 * @aince 2.3.2
641 */
642 $download_version_text = fs_text_inline( 'Download Paid Version', 'download-paid-version', $slug ) . $download_version_text_suffix;
643 }
644
645 echo $download_version_text;
646 ?></a>
647 <?php elseif ( is_object( $update ) ) : ?>
648 <?php
649 $module_type = $fs->get_module_type();
650 ?>
651 <a class="button button-primary"
652 href="<?php echo wp_nonce_url( self_admin_url( "update.php?action=upgrade-{$module_type}&{$module_type}=" . $fs->get_plugin_basename() ), "upgrade-{$module_type}_" . $fs->get_plugin_basename() ) ?>"><?php echo fs_esc_html_inline( 'Install Update Now', 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
653 <?php endif ?>
654 <?php endif; ?>
655 </div>
656 <?php endif ?>
657 <?php
658 elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
659 <?php if ( ! $is_whitelabeled && ( 'site_secret_key' === $p['id'] || ! $is_license_foreign ) ) : ?>
660 <button class="button button-small fs-toggle-visibility"><?php fs_esc_html_echo_x_inline( 'Show', 'verb', 'show', $slug ) ?></button>
661 <?php endif ?>
662 <?php if ('license_key' === $p['id']) : ?>
663 <button class="button button-small activate-license-trigger <?php echo $fs->get_unique_affix() ?>"><?php fs_esc_html_echo_inline( 'Change License', 'change-license', $slug ) ?></button>
664 <?php endif ?>
665 <?php
666 elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
667 ( is_string( $user->secret_key ) && in_array( $p['id'], array(
668 'email',
669 'user_name'
670 ) ) )
671 ) : ?>
672 <?php if ( 'email' !== $p['id'] || ! fs_is_network_admin() ) : ?>
673 <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"
674 onsubmit="var val = prompt('<?php echo esc_attr( sprintf(
675 /* translators: %s: User's account property (e.g. name, email) */
676 fs_text_inline( 'What is your %s?', 'what-is-your-x', $slug ),
677 $p['title']
678 ) ) ?>', '<?php echo $p['value'] ?>'); if (null == val || '' === val) return false; jQuery('input[name=fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>]').val(val); return true;">
679 <input type="hidden" name="fs_action" value="update_<?php echo $p['id'] ?>">
680 <input type="hidden" name="fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>"
681 value="">
682 <?php wp_nonce_field( 'update_' . $p['id'] ) ?>
683 <input type="submit" class="button button-small <?php if ( 'email' === $p['id'] ) echo 'button-edit-email-address' ?>"
684 value="<?php echo fs_esc_attr_x_inline( 'Edit', 'verb', 'edit', $slug ) ?>">
685 </form>
686 <?php endif ?>
687 <?php elseif ( 'user_id' === $p['id'] && ! empty( $ids_of_installs_activated_with_foreign_licenses ) ) : ?>
688 <input id="fs_change_user" type="submit" class="button button-small"
689 value="<?php echo fs_esc_attr_inline( 'Change User', 'change-user', $slug ) ?>">
690 <?php endif ?>
691 </td>
692 <?php endif ?>
693 </tr>
694 <?php
695 if ( 'version' === $p['id'] && $is_premium ) {
696 /**
697 * If there's a row for the beta program, keep its background color
698 * the same as the version info row.
699 *
700 * @author Leo Fajardo (@leorw)
701 * @since 2.3.0
702 */
703 continue;
704 }
705
706 $odd = ! $odd;
707 endforeach ?>
708 </table>
709 </div>
710 </div>
711 <?php if ( fs_is_network_admin() ) : ?>
712 <div id="fs_sites" class="postbox">
713 <h3><span class="dashicons dashicons-networking"></span> <?php fs_esc_html_echo_inline( 'Sites', 'sites', $slug ) ?></h3>
714 <div class="fs-header-actions">
715 <?php if ( ! $is_whitelabeled ) : ?>
716 <?php $has_license = is_object( $license ) ?>
717 <?php if ( $has_license || ( $show_upgrade && $is_premium ) ) : ?>
718 <?php
719 $activate_license_button_text = $has_license ?
720 fs_esc_html_inline( 'Change License', 'change-license', $slug ) :
721 fs_esc_html_inline( 'Activate License', 'activate-license', $slug );
722 ?>
723 <a class="button<?php echo ( ! $has_license ? ' button-primary' : '' ) ?> activate-license-trigger <?php echo $fs->get_unique_affix() ?>" href="#"><?php echo $activate_license_button_text ?></a>
724 <?php endif ?>
725 <?php endif ?>
726 <input class="fs-search" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Search by address', 'search-by-address', $slug ) ?>..."><span class="dashicons dashicons-search"></span>
727 </div>
728 <div class="inside">
729 <div id="" class="fs-scrollable-table">
730 <div class="fs-table-head">
731 <table class="widefat">
732 <thead>
733 <tr>
734 <td><?php fs_esc_html_echo_inline('ID', 'id', $slug) ?></td>
735 <td><?php fs_esc_html_echo_inline('Address', 'address', $slug) ?></td>
736 <td><?php fs_esc_html_echo_inline('License', 'license', $slug) ?></td>
737 <td><?php fs_esc_html_echo_inline('Plan', 'plan', $slug) ?></td>
738 <td></td>
739 </tr>
740 </thead>
741 </table>
742 </div>
743 <div class="fs-table-body">
744 <table class="widefat">
745 <?php
746 $current_blog_id = get_current_blog_id();
747
748 foreach ( $site_view_params as $view_params ) {
749 fs_require_template(
750 'account/partials/site.php',
751 $view_params
752 );
753 }
754
755 /**
756 * It's possible for the `Freemius::switch_to_blog()` method to be called within the `site.php` template and this changes the Freemius instance's context, so this check is for restoring the previous context based on the previously retrieved site.
757 *
758 * @author Leo Fajardo (@leorw)
759 * @since 2.5.0
760 */
761 $current_install = $fs->get_site();
762
763 if (
764 is_object( $site ) &&
765 ( ! is_object( $current_install ) || $current_install->id != $site->id )
766 ) {
767 $fs->switch_to_blog( $current_blog_id, $site, true );
768 }
769 ?>
770 </table>
771 </div>
772 </div>
773 </div>
774 </div>
775 <?php endif ?>
776 <?php if ( 0 < count( $addons_to_show ) ) : ?>
777 <!-- Add-Ons -->
778 <div class="postbox">
779 <div class="">
780 <!-- <div class="inside">-->
781 <table id="fs_addons" class="widefat">
782 <thead>
783 <tr>
784 <th><h3><?php echo esc_html( $addons_text ) ?></h3></th>
785 <th><?php fs_esc_html_echo_inline( 'ID', 'id', $slug ) ?></th>
786 <th><?php echo esc_html( $version_text ) ?></th>
787 <th><?php echo esc_html( $plan_text ) ?></th>
788 <th><?php fs_esc_html_echo_x_inline( 'License', 'as software license', 'license', $slug ) ?></th>
789 <th></th>
790 <?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
791 <th></th>
792 <?php endif ?>
793 </tr>
794 </thead>
795 <tbody>
796 <?php
797 $odd = true;
798
799 $installed_addons_ids_map = array_flip( $installed_addons_ids );
800
801 $addon_info_by_id = array();
802 $hide_all_addons_data = false;
803
804 if ( $fs->is_whitelabeled_by_flag() ) {
805 $hide_all_addons_data = true;
806
807 foreach ( $addons_to_show as $addon_id ) {
808 $is_addon_installed = isset( $installed_addons_ids_map[ $addon_id ] );
809 $addon_info = $fs->_get_addon_info( $addon_id, $is_addon_installed );
810 $is_addon_connected = $addon_info['is_connected'];
811
812 $fs_addon = ( $is_addon_connected && $is_addon_installed ) ?
813 freemius( $addon_id ) :
814 null;
815
816 $is_whitelabeled = is_object( $fs_addon ) ?
817 $fs_addon->is_whitelabeled( true ) :
818 $addon_info['is_whitelabeled'];
819
820 if ( ! $is_whitelabeled ) {
821 $hide_all_addons_data = false;
822 }
823
824 if ( $is_data_debug_mode ) {
825 $is_whitelabeled = false;
826 }
827
828 $addon_info_by_id[ $addon_id ] = $addon_info;
829 }
830 }
831
832 foreach ( $addons_to_show as $addon_id ) {
833 $is_addon_installed = isset( $installed_addons_ids_map[ $addon_id ] );
834
835 if (
836 $hide_all_addons_data &&
837 ! $is_addon_installed &&
838 ! file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs->get_addon_basename( $addon_id ) ) )
839 ) {
840 continue;
841 }
842
843 $addon_view_params = array(
844 'parent_fs' => $fs,
845 'addon_id' => $addon_id,
846 'odd' => $odd,
847 'fs_blog_id' => $fs_blog_id,
848 'active_plugins_directories_map' => &$active_plugins_directories_map,
849 'is_addon_installed' => $is_addon_installed,
850 'addon_info' => isset( $addon_info_by_id[ $addon_id ] ) ?
851 $addon_info_by_id[ $addon_id ] :
852 $fs->_get_addon_info( $addon_id, $is_addon_installed ),
853 'is_whitelabeled' => ( $is_whitelabeled && ! $is_data_debug_mode )
854 );
855
856 fs_require_template(
857 'account/partials/addon.php',
858 $addon_view_params
859 );
860
861 $odd = ! $odd;
862 } ?>
863 </tbody>
864 </table>
865 </div>
866 </div>
867 <?php endif ?>
868
869 <?php $fs->do_action( 'after_account_details' ) ?>
870
871 <?php
872 if ( $show_billing ) {
873 $view_params = array( 'id' => $VARS['id'], 'payments' => $payments );
874 fs_require_once_template( 'account/billing.php', $view_params );
875 fs_require_once_template( 'account/payments.php', $view_params );
876 }
877 ?>
878 </div>
879 </div>
880 </div>
881 </div>
882 </div>
883 <?php
884 $subscription_cancellation_dialog_box_template_params = $fs->_get_subscription_cancellation_dialog_box_template_params( true );
885 if ( ! empty( $subscription_cancellation_dialog_box_template_params ) ) {
886 fs_require_template( 'forms/subscription-cancellation.php', $subscription_cancellation_dialog_box_template_params );
887 }
888 ?>
889 <script type="text/javascript">
890 (function ($) {
891 var setLoading = function ($this, label) {
892 // Set loading mode.
893 $(document.body).css({'cursor': 'wait'});
894
895 $this.css({'cursor': 'wait'});
896
897 if ($this.is('input'))
898 $this.val(label);
899 else
900 $this.html(label);
901
902 setTimeout(function () {
903 $this.attr('disabled', 'disabled');
904 }, 200);
905 };
906
907 $('.fs-toggle-visibility').click(function () {
908 var
909 $this = $(this),
910 $parent = $this.closest('tr'),
911 $input = $parent.find('input');
912
913 $parent.find('code').toggle();
914 $input.toggle();
915
916 if ($input.is(':visible')) {
917 $this.html('<?php fs_esc_js_echo_x_inline( 'Hide', 'verb', 'hide', $slug ) ?>');
918 setTimeout(function () {
919 $input.select().focus();
920 }, 100);
921 }
922 else {
923 $this.html( '<?php fs_esc_js_echo_x_inline( 'Show', 'verb', 'show', $slug ) ?>' );
924 }
925 });
926
927 $('.fs-toggle-tracking').click(function () {
928 setLoading(
929 $(this),
930 ($(this).data('is-disconnected') ?
931 '<?php fs_esc_js_echo_inline('Opting in', 'opting-in' ) ?>' :
932 '<?php fs_esc_js_echo_inline('Opting out', 'opting-out' ) ?>') +
933 '...'
934 );
935 });
936
937 <?php
938 $plugin_title = $fs->get_plugin_title();
939 $processing_text = fs_esc_js_inline( 'Processing', 'processing' );
940 $confirmation_message = sprintf(
941 '%s %s',
942 sprintf( fs_esc_attr_inline( 'Get updates for bleeding edge Beta versions of %s.', 'get-beta-versions', $slug ), $plugin_title ),
943 sprintf( fs_esc_attr_inline( 'An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned.', 'beta-version-update-caution', $slug ), $plugin_title )
944 );
945 ?>
946
947 $( '.fs-toggle-beta-mode' ).click( function () {
948 var $checkbox = $( this ),
949 isChecked = $checkbox.is( ':checked' );
950
951 if ( ! isChecked || confirm( '<?php echo $confirmation_message ?>' ) ) {
952 $.ajax( {
953 url : <?php echo Freemius::ajax_url() ?>,
954 method: 'POST',
955 data : {
956 action : '<?php echo $fs->get_ajax_action( 'set_beta_mode' ) ?>',
957 security : '<?php echo $fs->get_ajax_security( 'set_beta_mode' ) ?>',
958 is_beta : isChecked,
959 module_id: <?php echo $fs->get_id() ?>
960 },
961 beforeSend: function () {
962 $checkbox.prop( 'disabled', true );
963 $checkbox.parent().find( 'span' ).text( '<?php echo $processing_text ?>' + '...' );
964 },
965 complete: function () {
966 $checkbox.prop( 'disabled', false );
967 $checkbox.parent().find( 'span' ).text( '<?php fs_esc_js_echo_inline( 'Join the Beta Program', 'join-beta', $slug ) ?>' );
968 }
969 } );
970
971 return true;
972 }
973
974 return false;
975 });
976
977 $('.fs-opt-in').click(function () {
978 setLoading($(this), '<?php fs_esc_js_echo_inline('Opting in', 'opting-in' ) ?>...');
979 });
980
981 $( '#fs_downgrade' ).submit(function( event ) {
982 event.preventDefault();
983
984 setLoading( $( this ).find( '.button' ), '<?php fs_esc_js_echo_inline( 'Downgrading', 'downgrading' ) ?>...' );
985 });
986
987 $('.fs-activate-license').click(function () {
988 setLoading($(this), '<?php fs_esc_js_echo_inline('Activating', 'activating' ) ?>...');
989 });
990
991 var $deactivateLicenseOrCancelTrial = $( '.fs-deactivate-license, .fs-cancel-trial' ),
992 $subscriptionCancellationModal = $( '.fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>' );
993
994 if ( 0 !== $subscriptionCancellationModal.length ) {
995 $subscriptionCancellationModal.on( '<?php echo $fs->get_action_tag( 'subscription_cancellation_action' ) ?>', function( evt, cancelSubscription ) {
996 setLoading(
997 $deactivateLicenseOrCancelTrial,
998 ( ! $deactivateLicenseOrCancelTrial.hasClass( 'fs-cancel-trial' ) ?
999 '<?php fs_esc_js_echo_inline( 'Deactivating', 'deactivating', $slug ) ?>' :
1000 '<?php echo esc_html( sprintf( fs_text_inline( 'Cancelling %s', 'cancelling-x', $slug ), fs_text_inline( 'trial', 'trial', $slug ) ) ) ?>' ) + '...'
1001 );
1002
1003 $subscriptionCancellationModal.find( '.fs-modal-footer .button' ).addClass( 'disabled' );
1004 $deactivateLicenseOrCancelTrial.unbind( 'click' );
1005
1006 if ( false === cancelSubscription || $deactivateLicenseOrCancelTrial.hasClass( 'fs-cancel-trial' ) ) {
1007 $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( $deactivateLicenseOrCancelTrial.text() );
1008
1009 $deactivateLicenseOrCancelTrial[0].parentNode.submit();
1010 } else {
1011 var $form = $( 'input[value="downgrade_account"],input[value="cancel_trial"]' ).parent();
1012 $form.prepend( '<input type="hidden" name="deactivate_license" value="true" />' );
1013
1014 $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( '<?php echo esc_js( sprintf(
1015 fs_text_inline( 'Cancelling %s...', 'cancelling-x' , $slug ),
1016 $is_paid_trial ?
1017 fs_text_inline( 'trial', 'trial', $slug ) :
1018 fs_text_inline( 'subscription', 'subscription', $slug )
1019 ) ) ?>' );
1020
1021 $form.submit();
1022 }
1023 });
1024 }
1025
1026 $deactivateLicenseOrCancelTrial.click(function() {
1027 var $this = $( this );
1028 if ( $this.hasClass( 'fs-cancel-trial' ) ) {
1029 $subscriptionCancellationModal.find( '.fs-modal-panel' ).find( 'ul.subscription-actions, .fs-price-increase-warning' ).remove();
1030 $subscriptionCancellationModal.find( '.fs-modal-panel > p' ).text( <?php echo json_encode( $cancel_trial_confirm_text ) ?> );
1031 $subscriptionCancellationModal.trigger( 'showModal' );
1032 } else if (confirm('<?php fs_esc_attr_echo_inline( 'Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?', 'deactivate-license-confirm', $slug ) ?>')) {
1033 var $this = $(this);
1034
1035 if ( 0 !== $subscriptionCancellationModal.length ) {
1036 $subscriptionCancellationModal.trigger( 'showModal' );
1037 } else {
1038 setLoading( $this, '<?php fs_esc_js_echo_inline( 'Deactivating', 'deactivating', $slug ) ?>...' );
1039 $this[0].parentNode.submit();
1040 }
1041 }
1042
1043 return false;
1044 });
1045
1046 var $sitesSection = $('#fs_sites'),
1047 $sitesTable = $sitesSection.find('.fs-scrollable-table'),
1048 $sitesTableRows = $sitesTable.find('.fs-site-details');
1049
1050 $('.fs-show-install-details').click(function(){
1051 var installID = $(this).parents('.fs-site-details').attr('data-install-id');
1052 $sitesSection.find('.fs-install-details[data-install-id=' + installID + ']').toggle();
1053 });
1054
1055
1056 var adjustColumnWidth = function($table) {
1057 var $headerColumns = $table.find('.fs-table-head td'),
1058 $bodyColumns = $table.find('.fs-table-body tr:first > td');
1059
1060 for (var i = 0, len = $headerColumns.length; i < len; i++) {
1061 $($headerColumns[i]).width($($bodyColumns[i]).width());
1062 }
1063 for (i = 0, len = $headerColumns.length; i < len; i++) {
1064 $($bodyColumns[i]).width($($headerColumns[i]).width());
1065 }
1066 };
1067
1068 adjustColumnWidth($sitesTable);
1069
1070 $sitesSection.find('.fs-search').keyup(function(){
1071 var search = $(this).val().trim();
1072
1073 if ('' === search){
1074 // Show all.
1075 $sitesTableRows.show();
1076 return;
1077 }
1078
1079 var url;
1080
1081 $sitesTableRows.each(function(index){
1082 url = $(this).find('.fs-field-url').html();
1083
1084 if (-1 < url.indexOf(search)){
1085 $(this).show();
1086 } else {
1087 $(this).hide();
1088 }
1089 });
1090 });
1091
1092 $( '.fs-toggle-whitelabel-mode' ).click( function () {
1093 var $toggleLink = $( this );
1094
1095 $.ajax( {
1096 url : <?php echo Freemius::ajax_url() ?>,
1097 method: 'POST',
1098 data : {
1099 action : '<?php echo $fs->get_ajax_action( 'toggle_whitelabel_mode' ) ?>',
1100 security : '<?php echo $fs->get_ajax_security( 'toggle_whitelabel_mode' ) ?>',
1101 module_id: <?php echo $fs->get_id() ?>
1102 },
1103 beforeSend: function () {
1104 $toggleLink.parent().text( '<?php
1105 $is_whitelabeled ?
1106 fs_esc_html_echo_inline( 'Disabling white-label mode', 'disabling-whitelabel-mode' ) :
1107 fs_esc_html_echo_inline( 'Enabling white-label mode', 'enabling-whitelabel-mode' )
1108 ?>' + '...' );
1109 },
1110 complete: function () {
1111 location.reload();
1112 }
1113 } );
1114 });
1115 })(jQuery);
1116 </script>
1117 <?php
1118 if ( $has_tabs ) {
1119 $fs->_add_tabs_after_content();
1120 }
1121