Changeset 3749408
- Timestamp:
- 10/15/2026 10:32:39 PM (3 weeks ago)
- Location:
- ap-casework-manager/trunk
- Files:
-
- 8 edited
-
ap-casework-manager.php (modified) (2 diffs)
-
readme.txt (modified) (2 diffs)
-
vendor/freemius/BWD-PATCH-NOTES.md (modified) (1 diff)
-
vendor/freemius/includes/class-freemius.php (modified) (18 diffs)
-
vendor/freemius/includes/managers/class-fs-clone-manager.php (modified) (5 diffs)
-
vendor/freemius/start.php (modified) (1 diff)
-
vendor/freemius/templates/add-ons.php (modified) (4 diffs)
-
vendor/freemius/templates/pricing.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ap-casework-manager/trunk/ap-casework-manager.php
r3728280 r3749408 12 12 * Plugin URI: https://www.ancestorpress.com/ap-casework-manager-wordpress-plugin/ 13 13 * Description: Client casework for professional genealogists, on your own website: enquiries, client records with GDPR tools, a genealogy intake form sent as a private link, and secure uploads. 14 * Version: 1.0. 014 * Version: 1.0.1 15 15 * Requires at least: 6.2 16 16 * Requires PHP: 8.0 … … 30 30 * Current plugin version. 31 31 */ 32 define( 'APCWM_VERSION', '1.0. 0' );32 define( 'APCWM_VERSION', '1.0.1' ); 33 33 /** 34 34 * Plugin directory path and URL constants. -
ap-casework-manager/trunk/readme.txt
r3728746 r3749408 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.0 7 Stable tag: 1.0. 07 Stable tag: 1.0.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 118 118 == Credits == 119 119 120 * [Freemius WordPress SDK](https://github.com/Freemius/wordpress-sdk) - GPLv3; release 2.13. 4 with a small local PHP 8 fix (marked 2.13.5), described in vendor/freemius/BWD-PATCH-NOTES.md.120 * [Freemius WordPress SDK](https://github.com/Freemius/wordpress-sdk) - GPLv3; release 2.13.5 with a small local PHP 8 fix, described in vendor/freemius/BWD-PATCH-NOTES.md. 121 121 * The Pro edition also bundles [dompdf](https://github.com/dompdf/dompdf) (LGPL-2.1) with php-font-lib (LGPL-2.1-or-later), php-svg-lib (LGPL-3.0-or-later), masterminds/html5 and sabberworm/php-css-parser (both MIT), the DejaVu fonts (Bitstream Vera licence) and the [Libre Baskerville](https://github.com/impallari/Libre-Baskerville) font (SIL Open Font Licence 1.1). Each keeps its own licence file. 122 122 123 123 == Changelog == 124 124 125 = 1.0.1 = 126 127 * Updated Freemius SDK to the latest version. 128 125 129 = 1.0.0 = 126 130 -
ap-casework-manager/trunk/vendor/freemius/BWD-PATCH-NOTES.md
r3728280 r3749408 1 1 # BWD local patch to the vendored Freemius SDK 2 2 3 ** Applied:** 2026-07-22 · **Base SDK:** Freemius WordPress SDK 2.13.4 (byte-identical4 to upstream `master` @ `fa43eb9` at time of patching) · **Marker after patch:** `2.13.5` 3 **Base SDK:** Freemius WordPress SDK **2.13.5**, as issued by Freemius. **Marker: `2.13.5`, 4 unchanged.** 5 5 6 ## Wh y6 ## What is patched 7 7 8 On PHP 8 + WordPress multisite, activating a Freemius plugin as a **network admin** 9 took the network opt-in path (`fs_is_network_admin()` → `setup_network_account` → 10 `_store_account` → `_store_plans`) with `$this->_plans` still `false`. The SDK then 11 called `count( $this->_plans )` **unguarded**, which is a fatal `TypeError` on PHP 8 12 (`count(): Argument #1 must be of type Countable|array, bool given`). This took down 13 admin pages and, on some sites, the front end. 8 Six unguarded `count( $this->_plans )` calls in `includes/class-freemius.php` get `is_array()` 9 guards. On PHP 8 multisite, network activation reaches them with `_plans === false`, which is a 10 fatal TypeError. Nothing else differs from the Freemius release. 14 11 15 The bug is present in the latest Freemius code — the 2.13.4 tag **and** `master`/ 16 `develop` (verified by diff: our vendored copy is byte-identical to upstream master, 17 and the crash line is unchanged there). Freemius already guards `$this->_plans` with 18 `is_array()` in ~5 other places in the same file, but **not** on these lines. There is 19 no upstream release to update to, so this is patched locally until Freemius ships a fix. 12 ## Rule 20 13 21 ## What changed 22 23 `includes/class-freemius.php` — every unguarded `count( $this->_plans )` now short- 24 circuits on a non-array, matching Freemius's own guard style elsewhere in the file 25 (`is_array( $this->_plans ) ? count( $this->_plans ) : 0`). Behaviour-preserving: when 26 `$this->_plans` is an array the result is identical; when it is `false`/`null` the loop 27 count is `0` instead of fataling. Guarded lines (original numbering): the four 28 `$len = count( $this->_plans )` loops (incl. `_store_plans`, the crash site ~19872) and 29 the two arithmetic counts (~12862, ~24072). The three `! is_array( … ) || 0 === count( … )` 30 short-circuit conditions were already safe and were left untouched. 31 32 `start.php` — `$this_sdk_version` nudged `2.13.4` → `2.13.5` so this fixed copy wins the 33 Freemius newest-wins loader over any unpatched `2.13.4` copy bundled by another plugin on 34 the same site (Freemius loads exactly one SDK per site). 35 36 ## Upstream 37 38 Report/PR filed with Freemius (`Freemius/wordpress-sdk`). When an official release 39 contains the guard, **re-vendor the stock SDK verbatim** and delete this file — do not 40 carry the local patch forward once upstream is fixed. 41 42 ## Re-applying after a re-vendor (if upstream still unfixed) 43 44 Guard every `count( $this->_plans )` that is NOT already inside a 45 `! is_array( $this->_plans ) || …` short-circuit, and bump `$this_sdk_version` above the 46 stock value. 14 Keep the marker equal to the Freemius base version and record the base here. Never bump the 15 marker for a local patch: compare the SDK by content, never by its version string. -
ap-casework-manager/trunk/vendor/freemius/includes/class-freemius.php
r3728280 r3749408 4541 4541 4542 4542 if ( $this->is_user_in_admin() ) { 4543 if ( $this->is_registered() && fs_request_has( 'purchase_completed' ) ) {4544 $this->_admin_notices->add_sticky(4545 sprintf(4546 /* translators: %s: License type (e.g. you have a professional license) */4547 $this->get_text_inline( 'You have purchased a %s license.', 'you-have-x-license' ),4548 fs_request_get( 'purchased_plan' )4549 ) .4550 sprintf(4551 $this->get_text_inline(" The %s's %sdownload link%s, license key, and installation instructions have been sent to %s. If you can't find the email after 5 min, please check your spam box.", 'post-purchase-email-sent-message' ),4552 $this->get_module_label( true ),4553 ( FS_Plugin::is_valid_id( $this->get_bundle_id() ) ? "products' " : '' ),4554 ( FS_Plugin::is_valid_id( $this->get_bundle_id() ) ? 's' : '' ),4555 sprintf(4556 '<strong>%s</strong>',4557 fs_request_get( 'purchase_email' )4558 )4559 ),4560 'plan_purchased',4561 $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'4562 );4563 }4564 4565 4543 if ( $this->is_addon() ) { 4566 4544 if ( ! $this->is_parent_plugin_installed() ) { … … 4864 4842 $code = empty( $result->error->code ) ? '' : " Code: {$result->error->code}"; 4865 4843 4866 $error_message .= "<b>{$result->error->message}{$code}</b>"; 4844 // We do not send HTML from exceptions from Freemius servers, but we escape it nonetheless. 4845 $error_message .= "<b>" . esc_html( $result->error->message . $code ) . "</b>"; 4867 4846 } else { 4868 $error_message .= var_export( $result, true);4847 $error_message .= esc_html( var_export( $result, true ) ); 4869 4848 } 4870 4849 … … 6798 6777 } 6799 6778 6779 $escaped_email_address = esc_html( $email_address ); 6780 6800 6781 $formatted_message_args = array( 6801 6782 "<b>{$this->get_plugin_name()}</b>", 6802 "<b>{$e mail_address}</b>",6783 "<b>{$escaped_email_address}</b>", 6803 6784 ); 6804 6785 … … 6845 6826 6846 6827 $formatted_message_args[] = ( ! empty( $support_email_address ) ) ? 6847 ( "<b> {$support_email_address}</b>" ) :6828 ( "<b>" . esc_html( $support_email_address ) . "</b>" ) : 6848 6829 $this->get_text_x_inline( 6849 6830 "the product's support email address", … … 17565 17546 } 17566 17547 17548 // Only site administrators who can activate plugins may opt-in. 17549 if ( ! $this->is_user_admin() ) { 17550 return; 17551 } 17552 17567 17553 $has_pending_activation_confirmation_param = fs_request_has( 'pending_activation' ); 17568 17554 … … 18144 18130 $this->_admin_notices->add( 18145 18131 sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' . 18146 $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $result->error->message. '</b>',18132 $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . esc_html( $result->error->message ) . '</b>', 18147 18133 $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...', 18148 18134 'error' … … 18264 18250 $this->_admin_notices->add( 18265 18251 sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' . 18266 $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $error_message. '</b>',18252 $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . esc_html( $error_message ) . '</b>', 18267 18253 $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...', 18268 18254 'error' … … 18441 18427 $this->_admin_notices->add( 18442 18428 sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' . 18443 $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $parent_install->error->message. '</b>',18429 $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . esc_html( $parent_install->error->message ) . '</b>', 18444 18430 $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...', 18445 18431 'error' … … 21159 21145 // Authentication params are broken. 21160 21146 $this->_admin_notices->add( 21161 $this->get_text_inline( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.', 'wrong-authentication-param-message' ) . '<br> ' . $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . var_export( $result->error, true),21147 $this->get_text_inline( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.', 'wrong-authentication-param-message' ) . '<br> ' . $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . esc_html( var_export( $result->error, true ) ), 21162 21148 '', 21163 21149 'error' … … 21480 21466 sprintf( 21481 21467 '<a href="%s">%s</a>', 21482 $this->contact_url( 'bug'),21468 esc_url( $this->contact_url( 'bug' ) ), 21483 21469 $this->get_text_inline( 'Please contact us here', 'contact-us-here' ) 21484 21470 ), … … 21573 21559 '<div class="fs-api-request-error-details" style="display: none">' . 21574 21560 '<strong>' . $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . '</strong><br>' . 21575 $result->error->message.21561 esc_html( $result->error->message ) . 21576 21562 '</div>'; 21577 21563 … … 21678 21664 $this->get_text_inline( 'It looks like the license could not be activated.', 'license-activation-failed-message' ), 21679 21665 ( is_object( $license ) && isset( $license->error ) ? 21680 $license->error->message:21666 esc_html( $license->error->message ) : 21681 21667 sprintf( '%s<br><code>%s</code>', 21682 21668 $this->get_text_inline( 'Error received from the server:', 'server-error-message' ), 21683 var_export( $license, true)21669 esc_html( var_export( $license, true ) ) 21684 21670 ) 21685 21671 ) … … 21769 21755 $this->_admin_notices->add( 21770 21756 $this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' . 21771 $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . ' ' . var_export( $license->error, true),21757 $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . ' ' . esc_html( var_export( $license->error, true ) ), 21772 21758 $hmm_text, 21773 21759 'error' … … 22418 22404 sprintf( 22419 22405 '<a href="%s" target="_blank" rel="noopener">%s</a>', 22420 $this->get_account_url( 'download_latest'),22406 esc_url( $this->get_account_url( 'download_latest' ) ), 22421 22407 sprintf( 22422 22408 /* translators: %s: plan name (e.g. latest "Professional" version) */ … … 22836 22822 $this->_admin_notices->add( sprintf( 22837 22823 $this->get_text_inline( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.', 'verification-email-sent-message' ), 22838 sprintf( '<a href="mailto:%1$s">%2$s</a>', esc_url( $this->_user->email ), $this->_user->email)22824 sprintf( '<a href="mailto:%1$s">%2$s</a>', esc_url( $this->_user->email ), esc_html( $this->_user->email ) ) 22839 22825 ) ); 22840 22826 } else { … … 23160 23146 if ( $this->init_change_owner( $candidate_email, $transfer_type ) ) { 23161 23147 if ( 'transfer' === $transfer_type ) { 23162 $this->_admin_notices->add( sprintf( $this->get_text_inline( 'A confirmation email was just sent to %s. The email owner must confirm the update within the next 4 hours.', 'change-owner-request-sent-x-transfer' ), '<b>' . $this->_user->email. '</b>' ) );23148 $this->_admin_notices->add( sprintf( $this->get_text_inline( 'A confirmation email was just sent to %s. The email owner must confirm the update within the next 4 hours.', 'change-owner-request-sent-x-transfer' ), '<b>' . esc_html( $this->_user->email ) . '</b>' ) ); 23163 23149 } else { 23164 $this->_admin_notices->add( sprintf( $this->get_text_inline( 'A confirmation email was just sent to %s. You must confirm the update within the next 4 hours. If you cannot find the email, please check your spam folder.', 'change-owner-request-sent-x' ), '<b>' . $this->_user->email. '</b>' ) );23150 $this->_admin_notices->add( sprintf( $this->get_text_inline( 'A confirmation email was just sent to %s. You must confirm the update within the next 4 hours. If you cannot find the email, please check your spam folder.', 'change-owner-request-sent-x' ), '<b>' . esc_html( $this->_user->email ) . '</b>' ) ); 23165 23151 } 23166 23152 } … … 23174 23160 } 23175 23161 23176 $this->_admin_notices->add( sprintf( $this->get_text_inline( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.', 'change-owner-request_owner-confirmed' ), '<b>' . $candidate_email. '</b>' ) );23162 $this->_admin_notices->add( sprintf( $this->get_text_inline( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.', 'change-owner-request_owner-confirmed' ), '<b>' . esc_html( $candidate_email ) . '</b>' ) ); 23177 23163 break; 23178 23164 case 'candidate_confirmed': … … 23180 23166 if ( $this->complete_change_owner() ) { 23181 23167 $this->_admin_notices->add_sticky( 23182 sprintf( $this->get_text_inline( '%s is the new owner of the account.', 'change-owner-request_candidate-confirmed' ), '<b>' . $this->_user->email. '</b>' ),23168 sprintf( $this->get_text_inline( '%s is the new owner of the account.', 'change-owner-request_candidate-confirmed' ), '<b>' . esc_html( $this->_user->email ) . '</b>' ), 23183 23169 'ownership_changed', 23184 23170 $this->get_text_x_inline( 'Congrats', 'as congratulations', 'congrats' ) . '!' -
ap-casework-manager/trunk/vendor/freemius/includes/managers/class-fs-clone-manager.php
r3728280 r3749408 1224 1224 1225 1225 foreach ( $product_titles as $product_title ) { 1226 $products_list .= sprintf( '<li>%s</li>', $product_title);1226 $products_list .= sprintf( '<li>%s</li>', esc_html( $product_title ) ); 1227 1227 } 1228 1228 … … 1232 1232 $sites_list .= sprintf( 1233 1233 '<li><a href="%s" target="_blank">%s</a></li>', 1234 $site_url,1235 fs_strip_url_protocol( $site_url)1234 esc_url( $site_url ), 1235 esc_html( fs_strip_url_protocol( $site_url ) ) 1236 1236 ); 1237 1237 } … … 1243 1243 sprintf( 1244 1244 '<a href="%s" target="_blank">%s</a>', 1245 $site_urls[0],1246 fs_strip_url_protocol( $site_urls[0])1245 esc_url( $site_urls[0] ), 1246 esc_html( fs_strip_url_protocol( $site_urls[0] ) ) 1247 1247 ) : 1248 1248 fs_text_inline( 'the above-mentioned sites', 'above-mentioned-sites' )) . '</b>'; … … 1250 1250 $current_site_link = sprintf( 1251 1251 '<b><a href="%s" target="_blank">%s</a></b>', 1252 $current_url,1253 fs_strip_url_protocol( $current_url)1252 esc_url( $current_url ), 1253 esc_html( fs_strip_url_protocol( $current_url ) ) 1254 1254 ); 1255 1255 … … 1324 1324 // %1$s 1325 1325 ( 1 === $total_products ? 1326 sprintf( '<b>%s</b>', $product_titles[0]) :1326 sprintf( '<b>%s</b>', esc_html( $product_titles[0] ) ) : 1327 1327 ( 1 === $total_sites ? 1328 1328 sprintf( '<div>%s</div>', $products_list ) : -
ap-casework-manager/trunk/vendor/freemius/start.php
r3728280 r3749408 16 16 * @var string 17 17 */ 18 // BWD LOCAL PATCH (2026-07-22): guarded the unguarded count( $this->_plans )19 // calls in includes/class-freemius.php against a non-array (bool) value, which20 // fataled on PHP 8 during the multisite network-admin opt-in (_store_plans).21 // Freemius 2.13.4 / master carry the bug unfixed. Version nudged to 2.13.5 so22 // this fixed copy wins the newest-wins loader over unpatched 2.13.4 copies on23 // the same site. See vendor/freemius/BWD-PATCH-NOTES.md. Revert to the stock24 // version string when Freemius ships an official fix.25 18 $this_sdk_version = '2.13.5'; 26 19 -
ap-casework-manager/trunk/vendor/freemius/templates/add-ons.php
r3728280 r3749408 123 123 $open_addon = ( $open_addon || ( $open_addon_slug === $addon->slug ) ); 124 124 125 $price = 0; 126 $has_trial = false; 125 $price = 0; 126 $min_price = 999999; 127 $has_trial = false; 127 128 $has_free_plan = false; 128 129 $has_paid_plan = false; … … 142 143 } 143 144 144 145 145 $has_paid_plan = true; 146 146 $has_trial = $has_trial || ( is_numeric( $plan->trial_period ) && ( $plan->trial_period > 0 ) ); 147 147 148 $min_price = 999999;149 148 foreach ( $plan->pricing as $pricing ) { 150 149 $pricing = new FS_Pricing( $pricing ); … … 164 163 } else if ( $pricing->has_monthly() ) { 165 164 $min_price = min( $min_price, 12 * $pricing->monthly_price ); 166 } 165 } else if ( $pricing->has_lifetime() ) { 166 $min_price = min( $min_price, $pricing->lifetime_price ); 167 } 167 168 } 168 169 … … 170 171 $price = $min_price; 171 172 } 172 173 173 } 174 174 } -
ap-casework-manager/trunk/vendor/freemius/templates/pricing.php
r3728280 r3749408 25 25 26 26 $context_params = array( 27 // Plugin information 27 28 'plugin_id' => $fs->get_id(), 28 29 'plugin_public_key' => $fs->get_public_key(), 29 30 'plugin_version' => $fs->get_plugin_version(), 31 32 // React pricing app context 33 'contact_url' => $fs->contact_url(), 34 'is_production' => ( defined( 'WP_FS__IS_PRODUCTION_MODE' ) ? WP_FS__IS_PRODUCTION_MODE : null ), 35 'menu_slug' => $fs->get_menu_slug(), 36 'mode' => 'dashboard', 37 'fs_wp_endpoint_url' => WP_FS__ADDRESS, 38 'request_handler_url' => admin_url( 39 'admin-ajax.php?' . http_build_query( array( 40 'module_id' => $fs->get_id(), 41 'action' => $fs->get_ajax_action( 'pricing_ajax_action' ), 42 'security' => $fs->get_ajax_security( 'pricing_ajax_action' ) 43 ) ) 44 ), 45 'selector' => '#fs_pricing_wrapper', 46 'unique_affix' => $fs->get_unique_affix(), 47 'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ), 48 'license' => $fs->has_active_valid_license() ? $fs->_get_license() : null, 49 'plugin_icon' => $fs->get_local_icon_url(), 50 'disable_single_package' => $fs->apply_filters( 'pricing/disable_single_package', false ), 30 51 ); 31 52 … … 55 76 } 56 77 57 $query_params = array_merge( $ context_params, $_GET, array(78 $query_params = array_merge( $_GET, array( 58 79 'next' => $fs->_get_sync_license_url( false, false ), 59 'plugin_version' => $fs->get_plugin_version(),60 80 // Billing cycle. 61 81 'billing_cycle' => fs_request_get( 'billing_cycle', WP_FS__PERIOD_ANNUALLY ), … … 64 84 'discounts_model' => $fs->apply_filters( 'pricing/discounts_model', 'absolute' ), 65 85 ) ); 86 87 $has_tabs = $fs->_add_tabs_before_content(); 88 89 if ( $has_tabs ) { 90 $query_params['tabs'] = 'true'; 91 } 92 93 $pricing_config = array_merge( $query_params, $context_params ); 66 94 67 95 $pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() ); … … 73 101 wp_enqueue_style( 'freemius-pricing', fs_asset_url( $pricing_css_path ) ); 74 102 } 75 76 $has_tabs = $fs->_add_tabs_before_content();77 78 if ( $has_tabs ) {79 $query_params['tabs'] = 'true';80 }81 103 ?> 82 104 <div id="fs_pricing" class="wrap fs-section fs-full-size-wrapper"> 83 105 <div id="fs_pricing_wrapper" data-public-url="<?php echo trailingslashit( dirname( $pricing_js_url ) ) ?>"></div> 84 <?php 85 $pricing_config = array_merge( array( 86 'contact_url' => $fs->contact_url(), 87 'is_production' => ( defined( 'WP_FS__IS_PRODUCTION_MODE' ) ? WP_FS__IS_PRODUCTION_MODE : null ), 88 'menu_slug' => $fs->get_menu_slug(), 89 'mode' => 'dashboard', 90 'fs_wp_endpoint_url' => WP_FS__ADDRESS, 91 'request_handler_url' => admin_url( 92 'admin-ajax.php?' . http_build_query( array( 93 'module_id' => $fs->get_id(), 94 'action' => $fs->get_ajax_action( 'pricing_ajax_action' ), 95 'security' => $fs->get_ajax_security( 'pricing_ajax_action' ) 96 ) ) 97 ), 98 'selector' => '#fs_pricing_wrapper', 99 'unique_affix' => $fs->get_unique_affix(), 100 'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ), 101 'license' => $fs->has_active_valid_license() ? $fs->_get_license() : null, 102 'plugin_icon' => $fs->get_local_icon_url(), 103 'disable_single_package' => $fs->apply_filters( 'pricing/disable_single_package', false ), 104 ), $query_params ); 105 106 wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' ); 107 ?> 106 <?php wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' ); ?> 108 107 </div> 109 108 <?php
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)