Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/login-customizer/freemius/templates/account.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
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 +