PluginProbe ʕ •ᴥ•ʔ
Auto Post Cleaner / 3.13.1
Auto Post Cleaner v3.13.1
3.12.0 3.13.1 3.2.4 3.2.5 3.3.0 3.3.10 3.3.11 3.3.8 3.4.2 3.5.3 3.6.0 3.7.0 3.7.1 3.7.2 3.7.3 3.7.5 3.7.6 3.8.0 3.9.0 3.9.4 3.9.6 3.9.7 trunk 3.0.0 3.1.0 3.10.1 3.10.2 3.11.4
delete-old-posts-programmatically / freemius / templates / account.php
delete-old-posts-programmatically / freemius / templates Last commit date
account 2 years ago checkout 1 month ago connect 3 years ago debug 11 months ago forms 7 months ago js 7 months ago partials 3 years ago plugin-info 11 months ago account.php 1 month ago add-ons.php 11 months ago add-trial-to-pricing.php 5 years ago admin-notice.php 3 years ago ajax-loader.php 4 years ago api-connectivity-message-js.php 3 years ago auto-installation.php 3 years ago checkout.php 1 month ago clone-resolution-js.php 2 years ago connect.php 11 months ago contact.php 1 month ago debug.php 1 month ago email.php 5 years ago gdpr-optin-js.php 3 years ago index.php 5 years ago plugin-icon.php 3 years ago pricing.php 1 month ago secure-https-header.php 5 years ago sticky-admin-notice-js.php 3 years ago tabs-capture-js.php 3 years ago tabs.php 5 years ago
account.php
1133 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 $is_dev_mode = ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE );
257 ?>
258 <div class="wrap fs-section">
259 <?php if ( ! $has_tabs && ! $fs->apply_filters( 'hide_account_tabs', false ) ) : ?>
260 <h2 class="nav-tab-wrapper">
261 <a href="<?php echo esc_url( $fs->get_account_url() ) ?>"
262 class="nav-tab nav-tab-active"><?php fs_esc_html_echo_inline( 'Account', 'account', $slug ) ?></a>
263 <?php if ( $fs->has_addons() ) : ?>
264 <a href="<?php echo esc_url( $fs->_get_admin_page_url( 'addons' ) ) ?>"
265 class="nav-tab"><?php echo esc_html( $addons_text ) ?></a>
266 <?php endif ?>
267 <?php if ( $show_upgrade ) : ?>
268 <a href="<?php echo esc_url( $fs->get_upgrade_url() ) ?>" class="nav-tab"><?php echo esc_html( $upgrade_text ) ?></a>
269 <?php if ( $fs->apply_filters( 'show_trial', true ) && ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
270 <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>
271 <?php endif ?>
272 <?php endif ?>
273 </h2>
274 <?php endif ?>
275
276 <div id="poststuff">
277 <div id="fs_account">
278 <div class="has-sidebar has-right-sidebar">
279 <div class="has-sidebar-content">
280 <div class="postbox">
281 <h3><span class="dashicons dashicons-businessman"></span> <?php fs_esc_html_echo_inline( 'Account Details', 'account-details', $slug ) ?></h3>
282 <div class="fs-header-actions">
283 <ul>
284 <?php if ( $fs->is_whitelabeled( true ) ) : ?>
285 <li>
286 <a href="#" class="debug-license-trigger"><i class="dashicons dashicons-<?php echo $is_whitelabeled ? 'editor-code' : 'controls-pause' ?>"></i> <span><?php
287 if ( $is_whitelabeled ) {
288 fs_esc_html_echo_inline( 'Start Debug', 'start-debug-license', $slug );
289 } else {
290 fs_esc_html_echo_inline( 'Stop Debug', 'stop-debug-license', $slug );
291 }
292 ?></span></a>
293 </li>
294 <li>&nbsp;&bull;&nbsp;</li>
295 <?php endif ?>
296 <?php if ( $show_billing ) : ?>
297 <li><a href="#fs_billing"><i class="dashicons dashicons-portfolio"></i> <?php fs_esc_html_echo_inline( 'Billing & Invoices', 'billing-invoices', $slug ) ?></a></li>
298 <li>&nbsp;&bull;&nbsp;</li>
299 <?php endif ?>
300 <?php if ( ! $is_whitelabeled ) : ?>
301 <?php if ( ! $is_paying ) : ?>
302 <li>
303 <?php
304 $view_params = array(
305 'freemius' => $fs,
306 'license' => $available_license,
307 'license_paid_plan' => $available_license_paid_plan,
308 );
309 fs_require_template( 'account/partials/disconnect-button.php', $view_params ); ?>
310 </li>
311 <li>&nbsp;&bull;&nbsp;</li>
312 <?php endif ?>
313 <?php if ( $is_paying ) : ?>
314 <?php if ( ! fs_is_network_admin() ) : ?>
315 <li>
316 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
317 <input type="hidden" name="fs_action" value="deactivate_license">
318 <?php wp_nonce_field( 'deactivate_license' ) ?>
319 <a href="#" class="fs-deactivate-license"><i
320 class="dashicons dashicons-admin-network"></i> <?php fs_echo_inline( 'Deactivate License', 'deactivate-license', $slug ) ?>
321 </a>
322 </form>
323 </li>
324 <li>&nbsp;&bull;&nbsp;</li>
325 <?php endif ?>
326 <?php if ( ! $license->is_lifetime() &&
327 $is_active_subscription
328 ) : ?>
329 <li>
330 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
331 <input type="hidden" name="fs_action" value="downgrade_account">
332 <?php wp_nonce_field( 'downgrade_account' ) ?>
333 <a href="#"
334 onclick="if ( confirm('<?php echo esc_attr( sprintf(
335 $downgrade_x_confirm_text,
336 ( $fs->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ),
337 $plan->title,
338 human_time_diff( time(), strtotime( $license->expiration ) )
339 ) ) ?> <?php if ( ! $license->is_block_features ) {
340 echo esc_attr( sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs->get_module_label( true ) ) );
341 } else {
342 echo esc_attr( sprintf( $after_downgrade_blocking_text, $plan->title ) );
343 }?> <?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>
344 </form>
345 </li>
346 <li>&nbsp;&bull;&nbsp;</li>
347 <?php endif ?>
348 <?php if ( $is_plan_change_supported ) : ?>
349 <li>
350 <a href="<?php echo esc_url( $fs->get_upgrade_url() ) ?>"><i
351 class="dashicons dashicons-grid-view"></i> <?php echo esc_html( $change_plan_text ) ?></a>
352 </li>
353 <li>&nbsp;&bull;&nbsp;</li>
354 <?php endif ?>
355 <?php elseif ( $is_paid_trial ) : ?>
356 <li>
357 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
358 <input type="hidden" name="fs_action" value="cancel_trial">
359 <?php wp_nonce_field( 'cancel_trial' ) ?>
360 <a href="#" class="fs-cancel-trial"><i
361 class="dashicons dashicons-download"></i> <?php echo esc_html( $cancel_trial_text ) ?></a>
362 </form>
363 </li>
364 <li>&nbsp;&bull;&nbsp;</li>
365 <?php endif ?>
366 <?php endif ?>
367 <li>
368 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>" method="POST">
369 <input type="hidden" name="fs_action" value="<?php echo esc_attr( $fs->get_unique_affix() ) ?>_sync_license">
370 <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
371 <a href="#" onclick="this.parentNode.submit(); return false;"><i
372 class="dashicons dashicons-image-rotate"></i> <?php fs_esc_html_echo_x_inline( 'Sync', 'as synchronize', 'sync', $slug ) ?></a>
373 </form>
374 </li>
375 </ul>
376 </div>
377 <div class="inside">
378 <table id="fs_account_details" cellspacing="0" class="fs-key-value-table">
379 <?php
380 $hide_license_key = ( ! $show_license_row || $fs->apply_filters( 'hide_license_key', false ) );
381
382 $profile = array();
383
384 if ( ! $is_whitelabeled ) {
385 $profile[] = array(
386 'id' => 'user_name',
387 'title' => fs_text_inline( 'Name', 'name', $slug ),
388 'value' => $name
389 );
390 // if (isset($user->email) && false !== strpos($user->email, '@'))
391 $profile[] = array(
392 'id' => 'email',
393 'title' => fs_text_inline( 'Email', 'email', $slug ),
394 'value' => $user->email
395 );
396
397 if ( is_numeric( $user->id ) ) {
398 $profile[] = array(
399 'id' => 'user_id',
400 'title' => fs_text_inline( 'User ID', 'user-id', $slug ),
401 'value' => $user->id
402 );
403 }
404 }
405
406 $profile[] = array(
407 'id' => 'product',
408 'title' => ( $fs->is_plugin() ?
409 fs_text_inline( 'Plugin', 'plugin', $slug ) :
410 fs_text_inline( 'Theme', 'theme', $slug ) ),
411 'value' => $fs->get_plugin_title()
412 );
413
414 $profile[] = array(
415 'id' => 'product_id',
416 'title' => ( $fs->is_plugin() ?
417 fs_text_inline( 'Plugin', 'plugin', $slug ) :
418 fs_text_inline( 'Theme', 'theme', $slug ) ) . ' ' . fs_text_inline( 'ID', 'id', $slug ),
419 'value' => $fs->get_id()
420 );
421
422 if ( ! fs_is_network_admin()) {
423 $profile[] = array(
424 'id' => 'site_id',
425 'title' => fs_text_inline( 'Site ID', 'site-id', $slug ),
426 'value' => is_string( $site->id ) ?
427 $site->id :
428 fs_text_inline( 'No ID', 'no-id', $slug )
429 );
430
431 $profile[] = array(
432 'id' => 'site_public_key',
433 'title' => fs_text_inline( 'Public Key', 'public-key', $slug ),
434 'value' => $site->public_key
435 );
436
437 $profile[] = array(
438 'id' => 'site_secret_key',
439 'title' => fs_text_inline( 'Secret Key', 'secret-key', $slug ),
440 'value' => ( ( is_string( $site->secret_key ) ) ?
441 $site->secret_key :
442 fs_text_x_inline( 'No Secret', 'as secret encryption key missing', 'no-secret', $slug )
443 )
444 );
445 }
446
447 $profile[] = array(
448 'id' => 'version',
449 'title' => $version_text,
450 'value' => $fs->get_plugin_version()
451 );
452
453 if ( ! fs_is_network_admin() && $is_premium ) {
454 $profile[] = array(
455 'id' => 'beta_program',
456 'title' => '',
457 'value' => $site->is_beta
458 );
459 }
460
461 if ( $has_paid_plan || $has_bundle_license ) {
462 if ( $fs->is_trial() ) {
463 if ( $show_plan_row ) {
464 $profile[] = array(
465 'id' => 'plan',
466 'title' => $plan_text,
467 'value' => ( is_string( $trial_plan->name ) ?
468 strtoupper( $trial_plan->title ) :
469 fs_text_inline( 'Trial', 'trial', $slug ) )
470 );
471 }
472 } else {
473 if ( $show_plan_row ) {
474 $profile[] = array(
475 'id' => 'plan',
476 'title' => ( $has_bundle_license ? ucfirst( $fs->get_module_type() ) . ' ' : '' ) . $plan_text,
477 'value' => strtoupper( is_string( $plan->name ) ?
478 $plan->title :
479 strtoupper( $free_text )
480 )
481 );
482
483 if ( $has_bundle_license ) {
484 $profile[] = array(
485 'id' => 'bundle_plan',
486 'title' => $bundle_plan_text,
487 'value' => $bundle_plan_title
488 );
489 }
490 }
491
492 if ( is_object( $license ) ) {
493 if ( ! $hide_license_key ) {
494 $profile[] = array(
495 'id' => 'license_key',
496 'title' => fs_text_inline( 'License Key', $slug ),
497 'value' => $license->secret_key,
498 );
499 }
500 }
501 }
502 }
503 ?>
504 <?php $odd = true;
505 foreach ( $profile as $p ) : ?>
506 <?php
507 if ( 'plan' === $p['id'] && ! $has_paid_plan ) {
508 // If plugin don't have any paid plans, there's no reason
509 // to show current plan.
510 continue;
511 }
512 ?>
513 <tr class="fs-field-<?php echo esc_attr( $p['id'] ) ?><?php if ( $odd ) : ?> alternate<?php endif ?>">
514 <td>
515 <nobr><?php echo esc_html( $p['title'] ) ?><?php echo ( ! empty( $p['title'] ) ) ? ':' : '' ?></nobr>
516 </td>
517 <td<?php if ( 'plan' === $p['id'] || 'bundle_plan' === $p['id'] ) { echo ' colspan="2"'; }?>>
518 <?php if ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
519 <code><?php echo FS_Plugin_License::mask_secret_key_for_html( $p['value'] ) ?></code>
520 <?php if ( ! $is_whitelabeled ) : ?>
521 <input type="text" value="<?php echo htmlspecialchars( $p['value'] ) ?>" style="display: none"
522 readonly/>
523 <?php endif ?>
524 <?php elseif ( 'beta_program' === $p['id'] ) : ?>
525 <label>
526 <input type="checkbox" class="fs-toggle-beta-mode" <?php checked( true, $p['value'] ) ?>/><span><?php
527 fs_esc_html_echo_inline( 'Join the Beta program', 'join-beta', $slug )
528 ?></span></label>
529 <?php else : ?>
530 <code><?php echo htmlspecialchars( $p['value'] ) ?></code>
531 <?php endif ?>
532 <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
533 <label class="fs-tag fs-warn"><?php fs_esc_html_echo_inline( 'not verified', 'not-verified', $slug ) ?></label>
534 <?php endif ?>
535 <?php if ( 'plan' === $p['id'] ) : ?>
536 <?php if ( $fs->is_trial() ) : ?>
537 <label class="fs-tag fs-success"><?php echo esc_html( $trial_text ) ?></label>
538 <?php endif ?>
539 <?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
540 <?php if ( ! $is_active_subscription && ! $is_active_bundle_subscription && ! $license->is_first_payment_pending() ) : ?>
541 <?php $is_license_expired = $license->is_expired() ?>
542 <?php $expired_ago_text = ( fs_text_inline( 'Expired', 'expired', $slug ) . ' ' . fs_text_x_inline( '%s ago', 'x-ago', $slug ) ) ?>
543 <label
544 class="fs-tag <?php echo $is_license_expired ? 'fs-error' : 'fs-warn' ?>"><?php
545 echo esc_html( sprintf( $is_license_expired ? $expired_ago_text : $expires_in_text, human_time_diff( time(), strtotime( $license->expiration ) ) ) )
546 ?></label>
547 <?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
548 <label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ) ?></label>
549 <?php endif ?>
550 <?php elseif ( $fs->is_trial() ) : ?>
551 <label class="fs-tag fs-warn"><?php echo esc_html( sprintf( $expires_in_text, human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ) ?></label>
552 <?php endif ?>
553 <?php if ( ! $is_whitelabeled ) : ?>
554 <div class="button-group">
555 <?php if ( is_object( $available_license ) ) : ?>
556 <?php
557 $view_params = array(
558 'freemius' => $fs,
559 'slug' => $slug,
560 'license' => $available_license,
561 'plan' => $available_license_paid_plan,
562 'is_localhost' => $site->is_localhost(),
563 'install_id' => $site->id,
564 'class' => 'button-primary',
565 );
566 fs_require_template( 'account/partials/activate-license-button.php', $view_params ); ?>
567 <?php else : ?>
568 <form action="<?php echo esc_url( $fs->_get_admin_page_url( 'account' ) ) ?>"
569 method="POST" class="button-group">
570 <?php if ( $show_upgrade && $is_premium ) : ?>
571 <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>
572 <?php endif ?>
573 <input type="submit" class="button"
574 value="<?php echo esc_attr( $sync_license_text ) ?>">
575 <input type="hidden" name="fs_action"
576 value="<?php echo esc_attr( $fs->get_unique_affix() ) ?>_sync_license">
577 <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
578 <?php if ( $show_upgrade || $is_plan_change_supported ) : ?>
579 <a href="<?php echo esc_url( $fs->get_upgrade_url() ) ?>"
580 class="button<?php
581 echo $show_upgrade ?
582 ' button-primary fs-upgrade' :
583 ' fs-change-plan'; ?> button-upgrade"><i
584 class="dashicons dashicons-cart"></i> <?php echo esc_html( $show_upgrade ? $upgrade_text : $change_plan_text ) ?></a>
585 <?php endif ?>
586 </form>
587 <?php endif ?>
588 </div>
589 <?php endif ?>
590 <?php elseif ( 'bundle_plan' === $p['id'] ) : ?>
591 <?php if ( is_object( $bundle_subscription ) ) : ?>
592 <?php if ( $is_active_bundle_subscription && ! $is_bundle_first_payment_pending ) : ?>
593 <label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $bundle_subscription->next_payment ) ) ) ) ?></label>
594 <?php endif ?>
595 <?php endif ?>
596 <?php elseif ( 'version' === $p['id'] && $has_paid_plan ) : ?>
597 <?php if ( $fs->has_premium_version() ) : ?>
598 <?php if ( $is_premium ) : ?>
599 <label
600 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>
601 <?php elseif ( $fs->can_use_premium_code() ) : ?>
602 <label class="fs-tag fs-warn"><?php fs_esc_html_echo_inline( 'Free version', 'free-version', $slug ) ?></label>
603 <?php endif ?>
604 <?php endif ?>
605 <?php endif ?>
606 </td>
607 <?php if ( 'plan' !== $p['id'] && 'bundle_plan' !== $p['id'] ) : ?>
608 <td class="fs-right">
609 <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
610 <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST">
611 <input type="hidden" name="fs_action" value="verify_email">
612 <?php wp_nonce_field( 'verify_email' ) ?>
613 <input type="submit" class="button button-small"
614 value="<?php fs_esc_attr_echo_inline( 'Verify Email', 'verify-email', $slug ) ?>">
615 </form>
616 <?php endif ?>
617 <?php if ( 'version' === $p['id'] ) : ?>
618 <?php if ( $fs->has_release_on_freemius() ) : ?>
619 <div class="button-group">
620 <?php if ( $is_paying || $fs->is_trial() ) : ?>
621 <?php if ( ! $fs->is_allowed_to_install() ) : ?>
622 <a target="_blank" rel="noopener" class="button button-primary"
623 href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php
624 $download_version_text_suffix = ( is_object( $update ) ? ' [' . $update->version . ']' : '' );
625
626 $download_version_text = sprintf(
627 /* translators: %s: plan name (e.g. Download "Professional" Version) */
628 fs_text_inline( 'Download %s Version', 'download-x-version', $slug ),
629 ( $fs->is_trial() ? $trial_plan->title : $plan->title )
630 ) .
631 $download_version_text_suffix;
632
633 $download_version_text_length = function_exists( 'mb_strlen' ) ?
634 mb_strlen( $download_version_text ) :
635 strlen( $download_version_text );
636
637 if ( $download_version_text_length > 31 ) {
638 /**
639 * Try to limit the number of characters to 31 for now.
640 *
641 * @author Leo Fajardo (@leorw)
642 * @aince 2.3.2
643 */
644 $download_version_text = fs_text_inline( 'Download Paid Version', 'download-paid-version', $slug ) . $download_version_text_suffix;
645 }
646
647 echo $download_version_text;
648 ?></a>
649 <?php elseif ( is_object( $update ) ) : ?>
650 <?php
651 $module_type = $fs->get_module_type();
652 ?>
653 <a class="button button-primary"
654 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>
655 <?php endif ?>
656 <?php endif; ?>
657 </div>
658 <?php endif ?>
659 <?php
660 elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
661 <?php if ( ! $is_whitelabeled && ( 'site_secret_key' === $p['id'] || ! $is_license_foreign ) ) : ?>
662 <button class="button button-small fs-toggle-visibility"><?php fs_esc_html_echo_x_inline( 'Show', 'verb', 'show', $slug ) ?></button>
663 <?php endif ?>
664 <?php if ('license_key' === $p['id']) : ?>
665 <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>
666 <?php endif ?>
667 <?php
668 elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
669 ( is_string( $user->secret_key ) && in_array( $p['id'], array(
670 'email',
671 'user_name'
672 ) ) )
673 ) : ?>
674 <?php if ( 'email' !== $p['id'] || ! fs_is_network_admin() ) : ?>
675 <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"
676 onsubmit="var val = prompt('<?php echo esc_attr( sprintf(
677 /* translators: %s: User's account property (e.g. name, email) */
678 fs_text_inline( 'What is your %s?', 'what-is-your-x', $slug ),
679 $p['title']
680 ) ) ?>', '<?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;">
681 <input type="hidden" name="fs_action" value="update_<?php echo $p['id'] ?>">
682 <input type="hidden" name="fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>"
683 value="">
684 <?php wp_nonce_field( 'update_' . $p['id'] ) ?>
685 <input type="submit" class="button button-small <?php if ( 'email' === $p['id'] ) echo 'button-edit-email-address' ?>"
686 value="<?php echo fs_esc_attr_x_inline( 'Edit', 'verb', 'edit', $slug ) ?>">
687 </form>
688 <?php endif ?>
689 <?php elseif ( 'user_id' === $p['id'] && ! empty( $ids_of_installs_activated_with_foreign_licenses ) ) : ?>
690 <input id="fs_change_user" type="submit" class="button button-small"
691 value="<?php echo fs_esc_attr_inline( 'Change User', 'change-user', $slug ) ?>">
692 <?php endif ?>
693 </td>
694 <?php endif ?>
695 </tr>
696 <?php
697 if ( 'version' === $p['id'] && $is_premium ) {
698 /**
699 * If there's a row for the beta program, keep its background color
700 * the same as the version info row.
701 *
702 * @author Leo Fajardo (@leorw)
703 * @since 2.3.0
704 */
705 continue;
706 }
707
708 $odd = ! $odd;
709 endforeach ?>
710 </table>
711 </div>
712 </div>
713 <?php if ( fs_is_network_admin() ) : ?>
714 <div id="fs_sites" class="postbox">
715 <h3><span class="dashicons dashicons-networking"></span> <?php fs_esc_html_echo_inline( 'Sites', 'sites', $slug ) ?></h3>
716 <div class="fs-header-actions">
717 <?php if ( ! $is_whitelabeled ) : ?>
718 <?php $has_license = is_object( $license ) ?>
719 <?php if ( $has_license || ( $show_upgrade && $is_premium ) ) : ?>
720 <?php
721 $activate_license_button_text = $has_license ?
722 fs_esc_html_inline( 'Change License', 'change-license', $slug ) :
723 fs_esc_html_inline( 'Activate License', 'activate-license', $slug );
724 ?>
725 <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>
726 <?php endif ?>
727 <?php endif ?>
728 <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>
729 </div>
730 <div class="inside">
731 <div id="" class="fs-scrollable-table">
732 <div class="fs-table-head">
733 <table class="widefat">
734 <thead>
735 <tr>
736 <td><?php fs_esc_html_echo_inline('ID', 'id', $slug) ?></td>
737 <td><?php fs_esc_html_echo_inline('Address', 'address', $slug) ?></td>
738 <td><?php fs_esc_html_echo_inline('License', 'license', $slug) ?></td>
739 <td><?php fs_esc_html_echo_inline('Plan', 'plan', $slug) ?></td>
740 <td></td>
741 </tr>
742 </thead>
743 </table>
744 </div>
745 <div class="fs-table-body">
746 <table class="widefat">
747 <?php
748 $current_blog_id = get_current_blog_id();
749
750 foreach ( $site_view_params as $view_params ) {
751 fs_require_template(
752 'account/partials/site.php',
753 $view_params
754 );
755 }
756
757 /**
758 * 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.
759 *
760 * @author Leo Fajardo (@leorw)
761 * @since 2.5.0
762 */
763 $current_install = $fs->get_site();
764
765 if (
766 is_object( $site ) &&
767 ( ! is_object( $current_install ) || $current_install->id != $site->id )
768 ) {
769 $fs->switch_to_blog( $current_blog_id, $site, true );
770 }
771 ?>
772 </table>
773 </div>
774 </div>
775 </div>
776 </div>
777 <?php endif ?>
778 <?php if ( 0 < count( $addons_to_show ) ) : ?>
779 <!-- Add-Ons -->
780 <div class="postbox">
781 <div class="">
782 <!-- <div class="inside">-->
783 <table id="fs_addons" class="widefat">
784 <thead>
785 <tr>
786 <th><h3><?php echo esc_html( $addons_text ) ?></h3></th>
787 <th><?php fs_esc_html_echo_inline( 'ID', 'id', $slug ) ?></th>
788 <th><?php echo esc_html( $version_text ) ?></th>
789 <th><?php echo esc_html( $plan_text ) ?></th>
790 <th><?php fs_esc_html_echo_x_inline( 'License', 'as software license', 'license', $slug ) ?></th>
791 <th></th>
792 <?php if ( $is_dev_mode ) : ?>
793 <th></th>
794 <?php endif ?>
795 </tr>
796 </thead>
797 <tbody>
798 <?php
799 $odd = true;
800
801 $installed_addons_ids_map = array_flip( $installed_addons_ids );
802
803 $addon_info_by_id = array();
804 $hide_all_addons_data = false;
805
806 if ( $fs->is_whitelabeled_by_flag() ) {
807 $hide_all_addons_data = true;
808
809 foreach ( $addons_to_show as $addon_id ) {
810 $is_addon_installed = isset( $installed_addons_ids_map[ $addon_id ] );
811 $addon_info = $fs->_get_addon_info( $addon_id, $is_addon_installed );
812 $is_addon_connected = $addon_info['is_connected'];
813
814 $fs_addon = ( $is_addon_connected && $is_addon_installed ) ?
815 freemius( $addon_id ) :
816 null;
817
818 $is_whitelabeled = is_object( $fs_addon ) ?
819 $fs_addon->is_whitelabeled( true ) :
820 $addon_info['is_whitelabeled'];
821
822 if ( ! $is_whitelabeled ) {
823 $hide_all_addons_data = false;
824 }
825
826 if ( $is_data_debug_mode ) {
827 $is_whitelabeled = false;
828 }
829
830 $addon_info_by_id[ $addon_id ] = $addon_info;
831 }
832 }
833
834 foreach ( $addons_to_show as $addon_id ) {
835 $is_addon_installed = isset( $installed_addons_ids_map[ $addon_id ] );
836
837 if (
838 $hide_all_addons_data &&
839 ! $is_addon_installed &&
840 ! file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs->get_addon_basename( $addon_id ) ) )
841 ) {
842 continue;
843 }
844
845 $addon_view_params = array(
846 'parent_fs' => $fs,
847 'addon_id' => $addon_id,
848 'odd' => $odd,
849 'fs_blog_id' => $fs_blog_id,
850 'active_plugins_directories_map' => &$active_plugins_directories_map,
851 'is_addon_installed' => $is_addon_installed,
852 'addon_info' => isset( $addon_info_by_id[ $addon_id ] ) ?
853 $addon_info_by_id[ $addon_id ] :
854 $fs->_get_addon_info( $addon_id, $is_addon_installed ),
855 'is_whitelabeled' => ( $is_whitelabeled && ! $is_data_debug_mode )
856 );
857
858 if ( ! empty($addon_view_params['addon_info'] ) ) {
859 fs_require_template(
860 'account/partials/addon.php',
861 $addon_view_params
862 );
863 } else {
864 // If we are here it means there is an activation of an unreleased add-on and yet the SDK is not in development mode.
865 echo '<tr>';
866 echo '<td style="text-align: right;">' . esc_html( $addon_id ) . '</td>';
867 echo '<td colspan="' . ( $is_dev_mode ? 6 : 5 ) . '" style="text-align: left;">';
868 echo 'The add-on you have activated is no longer <a href="https://freemius.com/help/documentation/wordpress/selling-add-ons-extensions/#preparing-the-add-on-for-sale" rel="noreferrer noopener" target="_blank">listed</a> by the product owner, or the SDK is not running in <a href="https://freemius.com/help/documentation/wordpress-sdk/testing/" rel="noreferrer noopener" target="_blank">test mode</a>. Please <a href="' . esc_url( $fs->contact_url() ) . '">contact support</a> if you need further assistance.';
869 echo '</td>';
870 echo '</tr>';
871 }
872
873 $odd = ! $odd;
874 } ?>
875 </tbody>
876 </table>
877 </div>
878 </div>
879 <?php endif ?>
880
881 <?php $fs->do_action( 'after_account_details' ) ?>
882
883 <?php
884 if ( $show_billing ) {
885 $view_params = array( 'id' => $VARS['id'], 'payments' => $payments );
886 fs_require_once_template( 'account/billing.php', $view_params );
887 fs_require_once_template( 'account/payments.php', $view_params );
888 }
889 ?>
890 </div>
891 </div>
892 </div>
893 </div>
894 </div>
895 <?php
896 $subscription_cancellation_dialog_box_template_params = $fs->_get_subscription_cancellation_dialog_box_template_params( true );
897 if ( ! empty( $subscription_cancellation_dialog_box_template_params ) ) {
898 fs_require_template( 'forms/subscription-cancellation.php', $subscription_cancellation_dialog_box_template_params );
899 }
900 ?>
901 <script type="text/javascript">
902 (function ($) {
903 var setLoading = function ($this, label) {
904 // Set loading mode.
905 $(document.body).css({'cursor': 'wait'});
906
907 $this.css({'cursor': 'wait'});
908
909 if ($this.is('input'))
910 $this.val(label);
911 else
912 $this.html(label);
913
914 setTimeout(function () {
915 $this.attr('disabled', 'disabled');
916 }, 200);
917 };
918
919 $('.fs-toggle-visibility').click(function () {
920 var
921 $this = $(this),
922 $parent = $this.closest('tr'),
923 $input = $parent.find('input');
924
925 $parent.find('code').toggle();
926 $input.toggle();
927
928 if ($input.is(':visible')) {
929 $this.html('<?php fs_esc_js_echo_x_inline( 'Hide', 'verb', 'hide', $slug ) ?>');
930 setTimeout(function () {
931 $input.select().focus();
932 }, 100);
933 }
934 else {
935 $this.html( '<?php fs_esc_js_echo_x_inline( 'Show', 'verb', 'show', $slug ) ?>' );
936 }
937 });
938
939 $('.fs-toggle-tracking').click(function () {
940 setLoading(
941 $(this),
942 ($(this).data('is-disconnected') ?
943 '<?php fs_esc_js_echo_inline('Opting in', 'opting-in' ) ?>' :
944 '<?php fs_esc_js_echo_inline('Opting out', 'opting-out' ) ?>') +
945 '...'
946 );
947 });
948
949 <?php
950 $plugin_title = $fs->get_plugin_title();
951 $processing_text = fs_esc_js_inline( 'Processing', 'processing' );
952 $confirmation_message = sprintf(
953 '%s %s',
954 sprintf( fs_esc_attr_inline( 'Get updates for bleeding edge Beta versions of %s.', 'get-beta-versions', $slug ), $plugin_title ),
955 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 )
956 );
957 ?>
958
959 $( '.fs-toggle-beta-mode' ).click( function () {
960 var $checkbox = $( this ),
961 isChecked = $checkbox.is( ':checked' );
962
963 if ( ! isChecked || confirm( '<?php echo $confirmation_message ?>' ) ) {
964 $.ajax( {
965 url : <?php echo Freemius::ajax_url() ?>,
966 method: 'POST',
967 data : {
968 action : '<?php echo $fs->get_ajax_action( 'set_beta_mode' ) ?>',
969 security : '<?php echo $fs->get_ajax_security( 'set_beta_mode' ) ?>',
970 is_beta : isChecked,
971 module_id: <?php echo $fs->get_id() ?>
972 },
973 beforeSend: function () {
974 $checkbox.prop( 'disabled', true );
975 $checkbox.parent().find( 'span' ).text( '<?php echo $processing_text ?>' + '...' );
976 },
977 complete: function () {
978 $checkbox.prop( 'disabled', false );
979 $checkbox.parent().find( 'span' ).text( '<?php fs_esc_js_echo_inline( 'Join the Beta Program', 'join-beta', $slug ) ?>' );
980 }
981 } );
982
983 return true;
984 }
985
986 return false;
987 });
988
989 $('.fs-opt-in').click(function () {
990 setLoading($(this), '<?php fs_esc_js_echo_inline('Opting in', 'opting-in' ) ?>...');
991 });
992
993 $( '#fs_downgrade' ).submit(function( event ) {
994 event.preventDefault();
995
996 setLoading( $( this ).find( '.button' ), '<?php fs_esc_js_echo_inline( 'Downgrading', 'downgrading' ) ?>...' );
997 });
998
999 $('.fs-activate-license').click(function () {
1000 setLoading($(this), '<?php fs_esc_js_echo_inline('Activating', 'activating' ) ?>...');
1001 });
1002
1003 var $deactivateLicenseOrCancelTrial = $( '.fs-deactivate-license, .fs-cancel-trial' ),
1004 $subscriptionCancellationModal = $( '.fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>' );
1005
1006 if ( 0 !== $subscriptionCancellationModal.length ) {
1007 $subscriptionCancellationModal.on( '<?php echo $fs->get_action_tag( 'subscription_cancellation_action' ) ?>', function( evt, cancelSubscription ) {
1008 setLoading(
1009 $deactivateLicenseOrCancelTrial,
1010 ( ! $deactivateLicenseOrCancelTrial.hasClass( 'fs-cancel-trial' ) ?
1011 '<?php fs_esc_js_echo_inline( 'Deactivating', 'deactivating', $slug ) ?>' :
1012 '<?php echo esc_html( sprintf( fs_text_inline( 'Cancelling %s', 'cancelling-x', $slug ), fs_text_inline( 'trial', 'trial', $slug ) ) ) ?>' ) + '...'
1013 );
1014
1015 $subscriptionCancellationModal.find( '.fs-modal-footer .button' ).addClass( 'disabled' );
1016 $deactivateLicenseOrCancelTrial.unbind( 'click' );
1017
1018 if ( false === cancelSubscription || $deactivateLicenseOrCancelTrial.hasClass( 'fs-cancel-trial' ) ) {
1019 $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( $deactivateLicenseOrCancelTrial.text() );
1020
1021 $deactivateLicenseOrCancelTrial[0].parentNode.submit();
1022 } else {
1023 var $form = $( 'input[value="downgrade_account"],input[value="cancel_trial"]' ).parent();
1024 $form.prepend( '<input type="hidden" name="deactivate_license" value="true" />' );
1025
1026 $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( '<?php echo esc_js( sprintf(
1027 fs_text_inline( 'Cancelling %s...', 'cancelling-x' , $slug ),
1028 $is_paid_trial ?
1029 fs_text_inline( 'trial', 'trial', $slug ) :
1030 fs_text_inline( 'subscription', 'subscription', $slug )
1031 ) ) ?>' );
1032
1033 $form.submit();
1034 }
1035 });
1036 }
1037
1038 $deactivateLicenseOrCancelTrial.click(function() {
1039 var $this = $( this );
1040 if ( $this.hasClass( 'fs-cancel-trial' ) ) {
1041 $subscriptionCancellationModal.find( '.fs-modal-panel' ).find( 'ul.subscription-actions, .fs-price-increase-warning' ).remove();
1042 $subscriptionCancellationModal.find( '.fs-modal-panel > p' ).text( <?php echo json_encode( $cancel_trial_confirm_text ) ?> );
1043 $subscriptionCancellationModal.trigger( 'showModal' );
1044 } 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 ) ?>')) {
1045 var $this = $(this);
1046
1047 if ( 0 !== $subscriptionCancellationModal.length ) {
1048 $subscriptionCancellationModal.trigger( 'showModal' );
1049 } else {
1050 setLoading( $this, '<?php fs_esc_js_echo_inline( 'Deactivating', 'deactivating', $slug ) ?>...' );
1051 $this[0].parentNode.submit();
1052 }
1053 }
1054
1055 return false;
1056 });
1057
1058 var $sitesSection = $('#fs_sites'),
1059 $sitesTable = $sitesSection.find('.fs-scrollable-table'),
1060 $sitesTableRows = $sitesTable.find('.fs-site-details');
1061
1062 $('.fs-show-install-details').click(function(){
1063 var installID = $(this).parents('.fs-site-details').attr('data-install-id');
1064 $sitesSection.find('.fs-install-details[data-install-id=' + installID + ']').toggle();
1065 });
1066
1067
1068 var adjustColumnWidth = function($table) {
1069 var $headerColumns = $table.find('.fs-table-head td'),
1070 $bodyColumns = $table.find('.fs-table-body tr:first > td');
1071
1072 for (var i = 0, len = $headerColumns.length; i < len; i++) {
1073 $($headerColumns[i]).width($($bodyColumns[i]).width());
1074 }
1075 for (i = 0, len = $headerColumns.length; i < len; i++) {
1076 $($bodyColumns[i]).width($($headerColumns[i]).width());
1077 }
1078 };
1079
1080 adjustColumnWidth($sitesTable);
1081
1082 $sitesSection.find('.fs-search').keyup(function(){
1083 var search = $(this).val().trim();
1084
1085 if ('' === search){
1086 // Show all.
1087 $sitesTableRows.show();
1088 return;
1089 }
1090
1091 var url;
1092
1093 $sitesTableRows.each(function(index){
1094 url = $(this).find('.fs-field-url').html();
1095
1096 if (-1 < url.indexOf(search)){
1097 $(this).show();
1098 } else {
1099 $(this).hide();
1100 }
1101 });
1102 });
1103
1104 $( '.fs-toggle-whitelabel-mode' ).click( function () {
1105 var $toggleLink = $( this );
1106
1107 $.ajax( {
1108 url : <?php echo Freemius::ajax_url() ?>,
1109 method: 'POST',
1110 data : {
1111 action : '<?php echo $fs->get_ajax_action( 'toggle_whitelabel_mode' ) ?>',
1112 security : '<?php echo $fs->get_ajax_security( 'toggle_whitelabel_mode' ) ?>',
1113 module_id: <?php echo $fs->get_id() ?>
1114 },
1115 beforeSend: function () {
1116 $toggleLink.parent().text( '<?php
1117 $is_whitelabeled ?
1118 fs_esc_html_echo_inline( 'Disabling white-label mode', 'disabling-whitelabel-mode' ) :
1119 fs_esc_html_echo_inline( 'Enabling white-label mode', 'enabling-whitelabel-mode' )
1120 ?>' + '...' );
1121 },
1122 complete: function () {
1123 location.reload();
1124 }
1125 } );
1126 });
1127 })(jQuery);
1128 </script>
1129 <?php
1130 if ( $has_tabs ) {
1131 $fs->_add_tabs_after_content();
1132 }
1133