Plugin Directory

Changeset 3245272


Ignore:
Timestamp:
02/23/2025 06:16:37 PM (3 weeks ago)
Author:
Tobias_Conrad
Message:

WP WOO comp
freemius update

Location:
woo-product-reviews-shortcode
Files:
307 added
10 deleted
31 edited

Legend:

Unmodified
Added
Removed
  • woo-product-reviews-shortcode/trunk/README.txt

    r3082022 r3245272  
    55Requires PHP: 7.0
    66Requires at least: 5.0
    7 Tested up to: 6.5
    8 Stable tag: 1.01.7
     7Tested up to: 6.7
     8Stable tag: 1.01.8
    99License: GPLv3 or later
    1010License URI: https://www.gnu.org/licenses/gpl-3.0.txt
     
    125125== Changelog ==
    126126
     127= 1.01.8 2025.02.23 =
     128
     129* Freemius SDK update
     130* Tested working with latest WOO/WP
     131
    127132= 1.01.7 2024.05.06 =
    128133
  • woo-product-reviews-shortcode/trunk/freemius/assets/css/admin/account.css

    r3082022 r3245272  
    1 label.fs-tag,span.fs-tag{background:#ffba00;border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-notice[data-id=license_not_whitelabeled].success,.fs-notice[data-id=license_whitelabeled].success{border-left-color:#00a0d2;color:inherit}.fs-notice[data-id=license_not_whitelabeled].success label.fs-plugin-title,.fs-notice[data-id=license_whitelabeled].success label.fs-plugin-title{display:none}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{border-bottom:1px solid #f1f1f1;font-size:1.3em;line-height:1.4;margin:0 0 12px;padding:12px 15px}#fs_account h3 .dashicons{font-size:1.3em;height:26px;width:26px}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{font-size:.9em;position:absolute;right:15px;top:17px}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:700}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table code,.fs-key-value-table input[type=text],.fs-key-value-table var{background:none;color:#0073aa;font-size:16px}.fs-key-value-table input[type=text]{font-weight:700;width:100%}.fs-field-beta_program label{margin-left:7px}label.fs-tag{border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag,label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{border:1px solid #e5e5e5;max-height:200px;overflow:auto}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none!important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{color:gray;text-align:right;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{white-space:nowrap;width:1px}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{font-weight:700;text-align:left}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:700}#fs_billing_address{width:100%}#fs_billing_address tr td{padding:5px;width:50%}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:700}#fs_billing_address input,#fs_billing_address select{display:block;margin-top:5px;width:100%}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{background:none;border-color:transparent;border-bottom:1px dashed #ccc;color:#777;padding-left:0}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{background:none;border-color:transparent;border-bottom:1px dashed #ccc;color:#777;padding-left:0}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}@media screen and (max-width:639px){#fs_account .fs-header-actions{margin:0 0 12px;padding:0 15px 12px;position:static}#fs_account .fs-header-actions li{display:inline-block;float:none}#fs_account #fs_account_details,#fs_account #fs_account_details tbody,#fs_account #fs_account_details td,#fs_account #fs_account_details th,#fs_account #fs_account_details tr{display:block}#fs_account #fs_account_details tr td:first-child{text-align:left}#fs_account #fs_account_details tr td:nth-child(2){padding:0 12px}#fs_account #fs_account_details tr td:nth-child(2) code{margin:0;padding:0}#fs_account #fs_account_details tr td:nth-child(2) label{margin-left:0}#fs_account #fs_account_details tr td:nth-child(3){text-align:left}#fs_account #fs_account_details tr.fs-field-plan td:nth-child(2) .button-group{float:none;margin:12px 0}}
     1label.fs-tag,span.fs-tag{background:#ffba00;border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-notice[data-id=license_not_whitelabeled].success,.fs-notice[data-id=license_whitelabeled].success{border-left-color:#00a0d2;color:inherit}.fs-notice[data-id=license_not_whitelabeled].success label.fs-plugin-title,.fs-notice[data-id=license_whitelabeled].success label.fs-plugin-title{display:none}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{border-bottom:1px solid #f1f1f1;font-size:1.3em;line-height:1.4;margin:0 0 12px;padding:12px 15px}#fs_account h3 .dashicons{font-size:1.3em;height:26px;width:26px}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{font-size:.9em;position:absolute;right:15px;top:17px}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:700}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table code,.fs-key-value-table input[type=text],.fs-key-value-table var{background:none;color:#0073aa;font-size:16px}.fs-key-value-table input[type=text]{font-weight:700;width:100%}.fs-field-beta_program label{margin-left:7px}label.fs-tag{border-radius:3px;color:#fff;display:inline-block;font-size:11px;line-height:11px;padding:5px;vertical-align:baseline}label.fs-tag,label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{border:1px solid #e5e5e5;max-height:200px;overflow:auto}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none!important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{color:gray;text-align:right;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{white-space:nowrap;width:1px}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{font-weight:700;text-align:left}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:700}#fs_billing_address{width:100%}#fs_billing_address tr td{padding:5px;width:50%}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:700}#fs_billing_address input,#fs_billing_address select{display:block;margin-top:5px;width:100%}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent}#fs_billing_address input::placeholder,#fs_billing_address select::placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{background:none;border-color:transparent;border-bottom:1px dashed #ccc;color:#777;padding-left:0}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{background:none;border-color:transparent;border-bottom:1px dashed #ccc;color:#777;padding-left:0}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::placeholder,#fs_billing_address.fs-read-mode select::placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}@media screen and (max-width:639px){#fs_account .fs-header-actions{margin:0 0 12px;padding:0 15px 12px;position:static}#fs_account .fs-header-actions li{display:inline-block;float:none}#fs_account #fs_account_details,#fs_account #fs_account_details tbody,#fs_account #fs_account_details td,#fs_account #fs_account_details th,#fs_account #fs_account_details tr{display:block}#fs_account #fs_account_details tr td:first-child{text-align:left}#fs_account #fs_account_details tr td:nth-child(2){padding:0 12px}#fs_account #fs_account_details tr td:nth-child(2) code{margin:0;padding:0}#fs_account #fs_account_details tr td:nth-child(2) label{margin-left:0}#fs_account #fs_account_details tr td:nth-child(3){text-align:left}#fs_account #fs_account_details tr.fs-field-plan td:nth-child(2) .button-group{float:none;margin:12px 0}}
  • woo-product-reviews-shortcode/trunk/freemius/assets/css/admin/checkout.css

    r3082022 r3245272  
    1 @media screen and (max-width:782px){#wpbody-content{padding-bottom:0!important}}
     1.fs-ajax-loader{height:20px;margin:auto;position:relative;width:170px}.fs-ajax-loader .fs-ajax-loader-bar{animation-direction:normal;animation-duration:1.5s;animation-iteration-count:infinite;animation-name:bounce_ajaxLoader;background-color:#fff;height:20px;position:absolute;top:0;transform:scale(.3);width:20px}.fs-ajax-loader .fs-ajax-loader-bar-1{animation-delay:.6s;left:0}.fs-ajax-loader .fs-ajax-loader-bar-2{animation-delay:.75s;left:19px}.fs-ajax-loader .fs-ajax-loader-bar-3{animation-delay:.9s;left:38px}.fs-ajax-loader .fs-ajax-loader-bar-4{animation-delay:1.05s;left:57px}.fs-ajax-loader .fs-ajax-loader-bar-5{animation-delay:1.2s;left:76px}.fs-ajax-loader .fs-ajax-loader-bar-6{animation-delay:1.35s;left:95px}.fs-ajax-loader .fs-ajax-loader-bar-7{animation-delay:1.5s;left:114px}.fs-ajax-loader .fs-ajax-loader-bar-8{animation-delay:1.65s;left:133px}@keyframes bounce_ajaxLoader{0%{background-color:#0074a3;transform:scale(1)}to{background-color:#fff;transform:scale(.3)}}@media screen and (max-width:782px){#wpbody-content{padding-bottom:0!important}}.fs-checkout-process-redirect{padding:40px;text-align:center}
  • woo-product-reviews-shortcode/trunk/freemius/assets/css/admin/common.css

    r3082022 r3245272  
    1 .fs-badge{background:#71ae00;border-radius:3px 0 0 3px;border-right:0;box-shadow:0 2px 1px -1px rgba(0,0,0,.3);color:#fff;font-weight:700;padding:5px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{margin-top:10px;position:relative;text-align:center;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{background:#ececec;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);box-shadow:0 0 4px rgba(0,0,0,.1),inset 0 1px 3px 0 rgba(0,0,0,.1);color:#ccc;cursor:pointer;display:inline-block;height:18px;padding:6px 6px 5px;position:relative;text-shadow:0 1px 1px hsla(0,0%,100%,.8)}.fs-switch span{display:inline-block;text-transform:uppercase;width:35px}.fs-switch .fs-toggle{background-color:#fff;background-image:linear-gradient(180deg,#ececec,#fff);border:1px solid rgba(0,0,0,.3);border-radius:4px;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.5);height:25px;position:absolute;top:1px;transition:.4s cubic-bezier(.54,1.6,.5,1);width:37px;z-index:999}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{border-radius:24px;padding:4px 25px;top:8px}.fs-switch.fs-round .fs-toggle{border-radius:24px;height:24px;top:0;width:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{border-radius:18px;height:18px;top:0;width:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}body.fs-loading,body.fs-loading *{cursor:wait!important}#fs_frame{font-size:0;line-height:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media(max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{background-color:#f2fcff!important;border-color:#00a0d2!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{color:#aaa;cursor:pointer;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{display:inline-block;margin-top:7px}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);border-radius:0 0 3px 3px;bottom:auto;color:#fff;cursor:auto;font-size:12px;font-weight:700;left:10px;padding:2px 10px;position:absolute;right:auto;top:100%}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}#fs_connect .fs-error .fs-api-request-error-details,#fs_connect .fs-error .fs-api-request-error-show-details-link,#fs_connect .fs-error ol,.fs-modal .notice-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-modal .notice-error ol,.fs-notice.error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-show-details-link,.fs-notice.error ol{text-align:left}#fs_connect .fs-error ol,.fs-modal .notice-error ol,.fs-notice.error ol{list-style-type:disc}#fs_connect .fs-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-show-details-link{box-shadow:none;color:#2271b1;text-decoration:none}#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-details{border:1px solid #ccc;max-height:150px;overflow:auto;padding:5px}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{background:#ebfdeb;box-shadow:0 2px 2px rgba(6,113,6,.3);color:green;filter:alpha(opacity=95);left:160px;opacity:.95;padding:10px 20px;position:fixed;right:0;top:32px;z-index:9999}.fs-secure-notice:hover{filter:alpha(opacity=100);opacity:1}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:1250px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;text-align:center;top:46px}}span.fs-submenu-item.fs-sub:before{content:"↳";padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:"↲"}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain;border:0;display:inline-block;height:20px;margin-bottom:-2px;margin-right:5px;vertical-align:sub;width:20px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{background-color:#d54e21;border:0;color:#f9f9f9;margin-top:10px;padding:10px}
     1.fs-badge{background:#71ae00;border-radius:3px 0 0 3px;border-right:0;box-shadow:0 2px 1px -1px rgba(0,0,0,.3);color:#fff;font-weight:700;padding:5px 10px;position:absolute;right:0;text-transform:uppercase;top:10px}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{margin-top:10px;position:relative;text-align:center;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{background:#ececec;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);box-shadow:0 0 4px rgba(0,0,0,.1),inset 0 1px 3px 0 rgba(0,0,0,.1);color:#ccc;cursor:pointer;display:inline-block;height:18px;padding:6px 6px 5px;position:relative;text-shadow:0 1px 1px hsla(0,0%,100%,.8)}.fs-switch span{display:inline-block;text-transform:uppercase;width:35px}.fs-switch .fs-toggle{background-color:#fff;background-image:linear-gradient(180deg,#ececec,#fff);border:1px solid rgba(0,0,0,.3);border-radius:4px;box-shadow:inset 0 1px 0 0 hsla(0,0%,100%,.5);height:25px;position:absolute;top:1px;transition:.4s cubic-bezier(.54,1.6,.5,1);width:37px;z-index:999}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{border-radius:24px;padding:4px 25px;top:8px}.fs-switch.fs-round .fs-toggle{border-radius:24px;height:24px;top:0;width:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{border-radius:18px;height:18px;top:0;width:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}body.fs-loading,body.fs-loading *{cursor:wait!important}#fs_frame{font-size:0;line-height:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media(max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{background-color:#f2fcff!important;border-color:#00a0d2!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-notice-body .fs-trial-message-container{align-items:center;display:flex;flex-wrap:wrap;gap:5px}.fs-notice .fs-close{color:#aaa;cursor:pointer;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{display:inline-block;margin-top:7px}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);border-radius:0 0 3px 3px;bottom:auto;color:#fff;cursor:auto;font-size:12px;font-weight:700;left:10px;padding:2px 10px;position:absolute;right:auto;top:100%}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}#fs_connect .fs-error .fs-api-request-error-details,#fs_connect .fs-error .fs-api-request-error-show-details-link,#fs_connect .fs-error ol,.fs-modal .notice-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-modal .notice-error ol,.fs-notice.error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-show-details-link,.fs-notice.error ol{text-align:left}#fs_connect .fs-error ol,.fs-modal .notice-error ol,.fs-notice.error ol{list-style-type:disc}#fs_connect .fs-error .fs-api-request-error-show-details-link,.fs-modal .notice-error .fs-api-request-error-show-details-link,.fs-notice.error .fs-api-request-error-show-details-link{box-shadow:none;color:#2271b1;text-decoration:none}#fs_connect .fs-error .fs-api-request-error-details,.fs-modal .notice-error .fs-api-request-error-details,.fs-notice.error .fs-api-request-error-details{border:1px solid #ccc;max-height:150px;overflow:auto;padding:5px}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{background:#ebfdeb;box-shadow:0 2px 2px rgba(6,113,6,.3);color:green;left:160px;opacity:.95;padding:10px 20px;position:fixed;right:0;top:32px;z-index:9989}.fs-secure-notice:hover{opacity:1}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:1250px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;text-align:center;top:46px}}span.fs-submenu-item.fs-sub:before{content:"↳";padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:"↲"}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain;border:0;display:inline-block;height:20px;margin-bottom:-2px;margin-right:5px;vertical-align:sub;width:20px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{background-color:#d54e21;border:0;color:#f9f9f9;margin-top:10px;padding:10px}
  • woo-product-reviews-shortcode/trunk/freemius/assets/css/admin/dialog-boxes.css

    r3082022 r3245272  
    1 .fs-modal{background:rgba(0,0,0,.6);display:none;height:100%;overflow:auto;position:fixed;top:0;width:100%;z-index:100000}@media(min-width:961px){.fs-modal{padding-left:160px}.rtl .fs-modal{padding-left:0;padding-right:160px}}.fs-modal .dashicons{vertical-align:middle}.fs-modal .fs-modal-dialog{background:transparent;left:50%;margin-left:-298px;padding-bottom:30px;position:absolute;top:-100%;width:596px;z-index:100001}@media(max-width:650px){.fs-modal .fs-modal-dialog{box-sizing:border-box;margin-left:-50%;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active,.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{background:#fefefe;border:0;padding:20px}.fs-modal .fs-modal-header{background:#fbfbfb;border-bottom:1px solid #eee;margin-bottom:-10px;padding:15px 20px;position:relative}.fs-modal .fs-modal-header h4{color:#cacaca;font-size:1.2em;font-weight:700;letter-spacing:.6px;margin:0;padding:0;text-shadow:1px 1px 1px #fff;text-transform:uppercase;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{border-radius:20px;color:#bbb;cursor:pointer;padding:3px;position:absolute;right:10px;top:12px;transition:all .2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{background:#aaa;color:#fff}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-size:20px;font-weight:700;margin-top:0}.fs-modal .fs-modal-footer{border-top:1px solid #eee;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:last-of-type{margin:0}.fs-modal .fs-modal-panel>.notice.inline{display:none;margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{left:20px;right:auto}.rtl .fs-modal .fs-modal-footer{text-align:left}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .internal-message,.fs-modal.fs-modal-deactivation-feedback .reason-input{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea,.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;display:none;padding:7px}@media(max-width:650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:left;line-height:30px}.rtl .fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.rtl .fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:right}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0!important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{line-height:1.5em;margin-top:0}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:700;margin-bottom:0;padding:0 25px}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;position:relative;top:5px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-license-options-container table,.fs-license-options-container table .fs-available-license-key,.fs-license-options-container table select,.fs-modal.fs-modal-license-activation .fs-modal-body input.fs-license-key{width:100%}.fs-license-options-container table td:first-child{width:1%}.fs-license-options-container table .fs-other-license-key-container label{float:left;margin-right:5px;position:relative;top:6px}.fs-license-options-container table .fs-other-license-key-container div{display:block;height:30px;overflow:hidden;position:relative;top:2px;width:auto}.fs-license-options-container table .fs-other-license-key-container div input{margin:0}.fs-sites-list-container td{cursor:pointer}.fs-modal.fs-modal-user-change .fs-modal-body input#fs_other_email_address{width:100%}.fs-user-change-options-container table{border-collapse:collapse;width:100%}.fs-user-change-options-container table tr{display:block;margin-bottom:2px}.fs-user-change-options-container table .fs-email-address-container td{display:inline-block}.fs-user-change-options-container table .fs-email-address-container input[type=radio]{margin-bottom:0;margin-top:0}.fs-user-change-options-container table .fs-other-email-address-container{width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div{display:table;width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div label,.fs-user-change-options-container table .fs-other-email-address-container>div>div{display:table-cell}.fs-user-change-options-container table .fs-other-email-address-container>div label{padding-left:3px;padding-right:3px;width:1%}.fs-user-change-options-container table .fs-other-email-address-container>div>div{width:auto}.fs-modal.fs-modal-developer-license-debug-mode .fs-modal-body input.fs-license-or-user-key,.fs-user-change-options-container table .fs-other-email-address-container>div>div input{width:100%}.fs-multisite-options-container{border:1px solid #ccc;margin-top:20px;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:700}.fs-multisite-options-container.fs-apply-on-all-sites{border:0;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media(max-width:650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-left:0;margin-right:7px}a.show-license-resend-modal{display:inline-block;margin-top:4px}.fs-modal.fs-modal-email-address-update .fs-modal-body input[type=text]{width:100%}.fs-modal.fs-modal-email-address-update p{margin-bottom:0}.fs-modal.fs-modal-email-address-update ul{margin:1em .5em}.fs-modal.fs-modal-email-address-update ul li label span{float:left;margin-top:0}.fs-modal.fs-modal-email-address-update ul li label span:last-child{display:block;float:none;margin-left:20px}.fs-ajax-loader{height:20px;margin:auto;position:relative;width:170px}.fs-ajax-loader .fs-ajax-loader-bar{animation-direction:normal;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-name:bounce_ajaxLoader;background-color:#0074a3;height:20px;position:absolute;top:0;transform:.3;width:20px}.fs-ajax-loader .fs-ajax-loader-bar-1{animation-delay:.6s;-o-animation-delay:.6s;-ms-animation-delay:.6s;-webkit-animation-delay:.6s;-moz-animation-delay:.6s;left:0}.fs-ajax-loader .fs-ajax-loader-bar-2{animation-delay:.75s;-o-animation-delay:.75s;-ms-animation-delay:.75s;-webkit-animation-delay:.75s;-moz-animation-delay:.75s;left:19px}.fs-ajax-loader .fs-ajax-loader-bar-3{animation-delay:.9s;-o-animation-delay:.9s;-ms-animation-delay:.9s;-webkit-animation-delay:.9s;-moz-animation-delay:.9s;left:38px}.fs-ajax-loader .fs-ajax-loader-bar-4{animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s;left:57px}.fs-ajax-loader .fs-ajax-loader-bar-5{animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s;left:76px}.fs-ajax-loader .fs-ajax-loader-bar-6{animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s;left:95px}.fs-ajax-loader .fs-ajax-loader-bar-7{animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s;left:114px}.fs-ajax-loader .fs-ajax-loader-bar-8{animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s;left:133px}@keyframes bounce_ajaxLoader{0%{background-color:#0074a3;transform:scale(1)}to{background-color:#fff;transform:scale(.3)}}.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons,.fs-modal-auto-install #request-filesystem-credentials-form h2{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;max-width:100%;padding:10px 10px 5px;width:300px}.fs-modal-auto-install #request-filesystem-credentials-form fieldset,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form>div{display:block;margin:0 auto;max-width:100%;width:300px}.button-primary.warn{background:#f56a48;border-color:#ec6544 #d2593c #d2593c;box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{background:#e76444!important;border-color:#d85e40!important;color:#f5b3a1!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}
     1.fs-modal{background:rgba(0,0,0,.6);display:none;height:100%;overflow:auto;position:fixed;top:0;width:100%;z-index:100000}@media(min-width:961px){.fs-modal{padding-left:160px}.rtl .fs-modal{padding-left:0;padding-right:160px}}.fs-modal .dashicons{vertical-align:middle}.fs-modal .fs-modal-dialog{background:transparent;left:50%;margin-left:-298px;padding-bottom:30px;position:absolute;top:-100%;width:596px;z-index:100001}@media(max-width:650px){.fs-modal .fs-modal-dialog{box-sizing:border-box;margin-left:-50%;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active,.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{background:#fefefe;border:0;padding:20px}.fs-modal .fs-modal-header{background:#fbfbfb;border-bottom:1px solid #eee;margin-bottom:-10px;padding:15px 20px;position:relative}.fs-modal .fs-modal-header h4{color:#cacaca;font-size:1.2em;font-weight:700;letter-spacing:.6px;margin:0;padding:0;text-shadow:1px 1px 1px #fff;text-transform:uppercase;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{border-radius:20px;color:#bbb;cursor:pointer;padding:3px;position:absolute;right:10px;top:12px;transition:all .2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{background:#aaa;color:#fff}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-size:20px;font-weight:700;margin-top:0}.fs-modal .fs-modal-footer{border-top:1px solid #eee;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:last-of-type{margin:0}.fs-modal .fs-modal-panel>.notice.inline{display:none;margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{left:20px;right:auto}.rtl .fs-modal .fs-modal-footer{text-align:left}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .internal-message,.fs-modal.fs-modal-deactivation-feedback .reason-input{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea,.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;display:none;padding:7px}@media(max-width:650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:left;line-height:30px}.rtl .fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label,.rtl .fs-modal.fs-modal-deactivation-feedback .feedback-from-snooze-label{float:right}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0!important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{font-size:16px;line-height:1.5em;margin-bottom:0;margin-top:10px}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:700;margin-bottom:0;padding:0 25px}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;position:relative;top:5px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-license-options-container table,.fs-license-options-container table .fs-available-license-key,.fs-license-options-container table select,.fs-modal.fs-modal-license-activation .fs-modal-body input.fs-license-key{width:100%}.fs-license-options-container table td:first-child{width:1%}.fs-license-options-container table .fs-other-license-key-container label{float:left;margin-right:5px;position:relative;top:6px}.fs-license-options-container table .fs-other-license-key-container div{display:block;height:30px;overflow:hidden;position:relative;top:2px;width:auto}.fs-license-options-container table .fs-other-license-key-container div input{margin:0}.fs-sites-list-container td{cursor:pointer}.fs-modal.fs-modal-user-change .fs-modal-body input#fs_other_email_address{width:100%}.fs-user-change-options-container table{border-collapse:collapse;width:100%}.fs-user-change-options-container table tr{display:block;margin-bottom:2px}.fs-user-change-options-container table .fs-email-address-container td{display:inline-block}.fs-user-change-options-container table .fs-email-address-container input[type=radio]{margin-bottom:0;margin-top:0}.fs-user-change-options-container table .fs-other-email-address-container{width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div{display:table;width:100%}.fs-user-change-options-container table .fs-other-email-address-container>div label,.fs-user-change-options-container table .fs-other-email-address-container>div>div{display:table-cell}.fs-user-change-options-container table .fs-other-email-address-container>div label{padding-left:3px;padding-right:3px;width:1%}.fs-user-change-options-container table .fs-other-email-address-container>div>div{width:auto}.fs-modal.fs-modal-developer-license-debug-mode .fs-modal-body input.fs-license-or-user-key,.fs-user-change-options-container table .fs-other-email-address-container>div>div input{width:100%}.fs-multisite-options-container{border:1px solid #ccc;margin-top:20px;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:700}.fs-multisite-options-container.fs-apply-on-all-sites{border:0;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media(max-width:650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-left:0;margin-right:7px}a.show-license-resend-modal{display:inline-block;margin-top:4px}.fs-modal.fs-modal-email-address-update .fs-modal-body input[type=text]{width:100%}.fs-modal.fs-modal-email-address-update p{margin-bottom:0}.fs-modal.fs-modal-email-address-update ul{margin:1em .5em}.fs-modal.fs-modal-email-address-update ul li label span{float:left;margin-top:0}.fs-modal.fs-modal-email-address-update ul li label span:last-child{display:block;float:none;margin-left:20px}.fs-ajax-loader{height:20px;margin:auto;position:relative;width:170px}.fs-ajax-loader .fs-ajax-loader-bar{animation-direction:normal;animation-duration:1.5s;animation-iteration-count:infinite;animation-name:bounce_ajaxLoader;background-color:#fff;height:20px;position:absolute;top:0;transform:scale(.3);width:20px}.fs-ajax-loader .fs-ajax-loader-bar-1{animation-delay:.6s;left:0}.fs-ajax-loader .fs-ajax-loader-bar-2{animation-delay:.75s;left:19px}.fs-ajax-loader .fs-ajax-loader-bar-3{animation-delay:.9s;left:38px}.fs-ajax-loader .fs-ajax-loader-bar-4{animation-delay:1.05s;left:57px}.fs-ajax-loader .fs-ajax-loader-bar-5{animation-delay:1.2s;left:76px}.fs-ajax-loader .fs-ajax-loader-bar-6{animation-delay:1.35s;left:95px}.fs-ajax-loader .fs-ajax-loader-bar-7{animation-delay:1.5s;left:114px}.fs-ajax-loader .fs-ajax-loader-bar-8{animation-delay:1.65s;left:133px}@keyframes bounce_ajaxLoader{0%{background-color:#0074a3;transform:scale(1)}to{background-color:#fff;transform:scale(.3)}}.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons,.fs-modal-auto-install #request-filesystem-credentials-form h2{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;max-width:100%;padding:10px 10px 5px;width:300px}.fs-modal-auto-install #request-filesystem-credentials-form fieldset,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form>div{display:block;margin:0 auto;max-width:100%;width:300px}.button-primary.warn{background:#f56a48;border-color:#ec6544 #d2593c #d2593c;box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{background:#e76444!important;border-color:#d85e40!important;color:#f5b3a1!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}
  • woo-product-reviews-shortcode/trunk/freemius/includes/class-freemius.php

    r3082022 r3245272  
    109109         */
    110110        private $_enable_anonymous = true;
     111
     112        /**
     113         * @since 2.9.1
     114         * @var string|null Hints the SDK whether the plugin supports parallel activation mode, preventing the auto-deactivation of the free version when the premium version is activated, and vice versa.
     115         */
     116        private $_premium_plugin_basename_from_parallel_activation;
    111117
    112118        /**
     
    382388        /**
    383389         * @author Leo Fajardo (@leorw)
    384          * @since 2.3.1
    385          *
    386          * @var boolean|null
    387          */
    388         private $_use_external_pricing = null;
    389         /**
    390          * @author Leo Fajardo (@leorw)
    391390         * @since 2.4.2
    392391         *
     
    12581257         * @return bool
    12591258         */
    1260         private static function set_network_upgrade_mode( FS_Storage $storage ) {
     1259        public static function set_network_upgrade_mode( FS_Storage $storage ) {
    12611260            return $storage->is_network_activation = true;
    12621261        }
     
    13811380
    13821381        /**
    1383          * Opens the support forum subemenu item in a new browser page.
    1384          *
    1385          * @author Vova Feldman (@svovaf)
     1382         * Modifies all external links in the submenu by altering their href, and also opens them in new tab if needed.
     1383         *
     1384         * @author Vova Feldman (@svovaf)
     1385         * @author Swashata Ghosh (@swashata)
    13861386         * @since  2.1.4
    13871387         */
    1388         static function _open_support_forum_in_new_page() {
     1388        static function _handle_submenu_external_link() {
    13891389            ?>
    13901390            <script type="text/javascript">
    1391                 (function ($) {
    1392                     $('.fs-submenu-item.wp-support-forum').parent().attr( { target: '_blank', rel: 'noopener noreferrer' } );
    1393                 })(jQuery);
     1391                (function ( $ ) {
     1392                    $( '.fs-submenu-item' ).each( function () {
     1393                        var $this = $( this ),
     1394                            $parent = $this.parent(),
     1395                            externalLink = $this.data( 'fs-external-url' ),
     1396                            isOpensInNewTab = $this.data( 'fs-new-tab' );
     1397
     1398                        if ( externalLink ) {
     1399                            $parent.attr( 'href', externalLink );
     1400                        }
     1401
     1402                        if ( isOpensInNewTab ) {
     1403                            $parent.attr( { target: '_blank', rel: 'noopener noreferrer' } );
     1404                        }
     1405                    } );
     1406                } )( jQuery );
    13941407            </script>
    13951408            <?php
     
    14881501
    14891502                add_action( 'init', array( &$this, '_maybe_add_gdpr_optin_ajax_handler') );
    1490                 add_action( 'init', array( &$this, '_maybe_add_pricing_ajax_handler' ) );
     1503                add_action( 'init', array( &$this, '_add_pricing_ajax_handler' ) );
    14911504            }
    14921505
     
    15841597                add_action( 'admin_init', array( &$this, 'connect_again' ) );
    15851598            }
     1599
     1600            FS_DebugManager::register_hooks();
    15861601        }
    15871602
     
    16431658                }
    16441659            }
     1660
     1661            if (
     1662                $this->is_user_in_admin() &&
     1663                $this->is_parallel_activation() &&
     1664                $this->_premium_plugin_basename !== $this->_premium_plugin_basename_from_parallel_activation
     1665            ) {
     1666                $this->_premium_plugin_basename = $this->_premium_plugin_basename_from_parallel_activation;
     1667
     1668                register_activation_hook(
     1669                    dirname( $this->_plugin_dir_path ) . '/' . $this->_premium_plugin_basename,
     1670                    array( &$this, '_activate_plugin_event_hook' )
     1671                );
     1672            }
     1673        }
     1674
     1675        /**
     1676         * Determines if a plugin is running in parallel activation mode.
     1677         *
     1678         * @author Leo Fajardo (@leorw)
     1679         * @since 2.9.1
     1680         *
     1681         * @return bool
     1682         */
     1683        private function is_parallel_activation() {
     1684            return ! empty( $this->_premium_plugin_basename_from_parallel_activation );
    16451685        }
    16461686
     
    27022742         * @since  2.4.3
    27032743         */
    2704         private static function reset_deactivation_snoozing( $period = 0 ) {
     2744        public static function reset_deactivation_snoozing( $period = 0 ) {
    27052745            $value = ( 0 === $period ) ? null : 'true';
    27062746
     
    34193459            self::$_global_admin_notices = FS_Admin_Notices::instance( 'global' );
    34203460
    3421             if ( ! WP_FS__DEMO_MODE ) {
    3422                 add_action( ( fs_is_network_admin() ? 'network_' : '' ) . 'admin_menu', array(
    3423                     'Freemius',
    3424                     '_add_debug_section'
    3425                 ) );
    3426             }
    3427 
    3428             add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
    3429 
    3430             self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) );
    3431 
    3432             self::add_ajax_action_static( 'get_db_option', array( 'Freemius', '_get_db_option' ) );
    3433 
    3434             self::add_ajax_action_static( 'set_db_option', array( 'Freemius', '_set_db_option' ) );
     3461            FS_DebugManager::load_required_static();
    34353462
    34363463            if ( 0 == did_action( 'plugins_loaded' ) ) {
     
    34413468            add_action( 'init', array( $clone_manager, '_init' ) );
    34423469
    3443             add_action( 'admin_footer', array( 'Freemius', '_open_support_forum_in_new_page' ) );
     3470            add_action( 'admin_footer', array( 'Freemius', '_handle_submenu_external_link' ) );
    34443471
    34453472            if ( self::is_plugins_page() || self::is_themes_page() ) {
     
    34573484
    34583485            self::$_statics_loaded = true;
     3486        }
     3487
     3488        public static function get_static_logger() {
     3489            return self::$_static_logger;
     3490        }
     3491
     3492        public static function get_accounts() {
     3493            return self::$_accounts;
    34593494        }
    34603495
     
    36273662         * @since 2.1.3
    36283663         */
    3629         private static function migrate_options_to_network() {
     3664        public static function migrate_options_to_network() {
    36303665            self::migrate_accounts_to_network();
    36313666
     
    36633698                $fs_active_plugins->newest->sdk_path . '/languages/'
    36643699            );
    3665         }
    3666 
    3667         #endregion
    3668 
    3669         #----------------------------------------------------------------------------------
    3670         #region Debugging
    3671         #----------------------------------------------------------------------------------
    3672 
    3673         /**
    3674          * @author Vova Feldman (@svovaf)
    3675          * @since  1.0.8
    3676          */
    3677         static function _add_debug_section() {
    3678             if ( ! is_super_admin() ) {
    3679                 // Add debug page only for super-admins.
    3680                 return;
    3681             }
    3682 
    3683             self::$_static_logger->entrance();
    3684 
    3685             $title = sprintf( '%s [v.%s]', fs_text_inline( 'Freemius Debug' ), WP_FS__SDK_VERSION );
    3686 
    3687             if ( WP_FS__DEV_MODE ) {
    3688                 // Add top-level debug menu item.
    3689                 $hook = FS_Admin_Menu_Manager::add_page(
    3690                     $title,
    3691                     $title,
    3692                     'manage_options',
    3693                     'freemius',
    3694                     array( 'Freemius', '_debug_page_render' )
    3695                 );
    3696             } else {
    3697                 // Add hidden debug page.
    3698                 $hook = FS_Admin_Menu_Manager::add_subpage(
    3699                     '',
    3700                     $title,
    3701                     $title,
    3702                     'manage_options',
    3703                     'freemius',
    3704                     array( 'Freemius', '_debug_page_render' )
    3705                 );
    3706             }
    3707 
    3708             if ( ! empty( $hook ) ) {
    3709                 add_action( "load-$hook", array( 'Freemius', '_debug_page_actions' ) );
    3710             }
    3711         }
    3712 
    3713         /**
    3714          * @author Vova Feldman (@svovaf)
    3715          * @since  1.1.7.3
    3716          */
    3717         static function _toggle_debug_mode() {
    3718             check_admin_referer( 'fs_toggle_debug_mode' );
    3719 
    3720             if ( ! is_super_admin() ) {
    3721                 return;
    3722             }
    3723 
    3724             $is_on = fs_request_get( 'is_on', false, 'post' );
    3725 
    3726             if ( fs_request_is_post() && in_array( $is_on, array( 0, 1 ) ) ) {
    3727                 update_option( 'fs_debug_mode', $is_on );
    3728 
    3729                 // Turn on/off storage logging.
    3730                 FS_Logger::_set_storage_logging( ( 1 == $is_on ) );
    3731             }
    3732 
    3733             exit;
    3734         }
    3735 
    3736         /**
    3737          * @author Vova Feldman (@svovaf)
    3738          * @since  1.2.1.6
    3739          */
    3740         static function _get_debug_log() {
    3741             check_admin_referer( 'fs_get_debug_log' );
    3742 
    3743             if ( ! is_super_admin() ) {
    3744                 return;
    3745             }
    3746 
    3747             $limit  = min( ! empty( $_POST['limit'] ) ? absint( $_POST['limit'] ) : 200, 200 );
    3748             $offset = min( ! empty( $_POST['offset'] ) ? absint( $_POST['offset'] ) : 200, 200 );
    3749 
    3750             $logs = FS_Logger::load_db_logs(
    3751                 fs_request_get( 'filters', false, 'post' ),
    3752                 $limit,
    3753                 $offset
    3754             );
    3755 
    3756             self::shoot_ajax_success( $logs );
    3757         }
    3758 
    3759         /**
    3760          * @author Vova Feldman (@svovaf)
    3761          * @since  1.2.1.7
    3762          */
    3763         static function _get_db_option() {
    3764             check_admin_referer( 'fs_get_db_option' );
    3765 
    3766             $option_name = fs_request_get( 'option_name' );
    3767 
    3768             if ( ! is_super_admin() ||
    3769                  ! fs_starts_with( $option_name, 'fs_' )
    3770             ) {
    3771                 self::shoot_ajax_failure();
    3772             }
    3773 
    3774             $value = get_option( $option_name );
    3775 
    3776             $result = array(
    3777                 'name' => $option_name,
    3778             );
    3779 
    3780             if ( false !== $value ) {
    3781                 if ( ! is_string( $value ) ) {
    3782                     $value = json_encode( $value );
    3783                 }
    3784 
    3785                 $result['value'] = $value;
    3786             }
    3787 
    3788             self::shoot_ajax_success( $result );
    3789         }
    3790 
    3791         /**
    3792          * @author Vova Feldman (@svovaf)
    3793          * @since  1.2.1.7
    3794          */
    3795         static function _set_db_option() {
    3796             check_admin_referer( 'fs_set_db_option' );
    3797 
    3798             $option_name = fs_request_get( 'option_name' );
    3799 
    3800             if ( ! is_super_admin() ||
    3801                  ! fs_starts_with( $option_name, 'fs_' )
    3802             ) {
    3803                 self::shoot_ajax_failure();
    3804             }
    3805 
    3806             $option_value = fs_request_get_raw( 'option_value' );
    3807 
    3808             if ( ! empty( $option_value ) ) {
    3809                 update_option( $option_name, $option_value );
    3810             }
    3811 
    3812             self::shoot_ajax_success();
    3813         }
    3814 
    3815         /**
    3816          * @author Vova Feldman (@svovaf)
    3817          * @since  1.0.8
    3818          */
    3819         static function _debug_page_actions() {
    3820             self::_clean_admin_content_section();
    3821 
    3822             if ( fs_request_is_action( 'restart_freemius' ) ) {
    3823                 check_admin_referer( 'restart_freemius' );
    3824 
    3825                 if ( ! is_multisite() ) {
    3826                     // Clear accounts data.
    3827                     self::$_accounts->clear( null, true );
    3828                 } else {
    3829                     $sites = self::get_sites();
    3830                     foreach ( $sites as $site ) {
    3831                         $blog_id = self::get_site_blog_id( $site );
    3832                         self::$_accounts->clear( $blog_id, true );
    3833                     }
    3834 
    3835                     // Clear network level storage.
    3836                     self::$_accounts->clear( true, true );
    3837                 }
    3838 
    3839                 // Clear SDK reference cache.
    3840                 delete_option( 'fs_active_plugins' );
    3841             } else if ( fs_request_is_action( 'clear_updates_data' ) ) {
    3842                 check_admin_referer( 'clear_updates_data' );
    3843 
    3844                 if ( ! is_multisite() ) {
    3845                     set_site_transient( 'update_plugins', null );
    3846                     set_site_transient( 'update_themes', null );
    3847                 } else {
    3848                     $current_blog_id = get_current_blog_id();
    3849 
    3850                     $sites = self::get_sites();
    3851                     foreach ( $sites as $site ) {
    3852                         switch_to_blog( self::get_site_blog_id( $site ) );
    3853 
    3854                         set_site_transient( 'update_plugins', null );
    3855                         set_site_transient( 'update_themes', null );
    3856                     }
    3857 
    3858                     switch_to_blog( $current_blog_id );
    3859                 }
    3860             } else if ( fs_request_is_action( 'reset_deactivation_snoozing' ) ) {
    3861                 check_admin_referer( 'reset_deactivation_snoozing' );
    3862 
    3863                 self::reset_deactivation_snoozing();
    3864             } else if ( fs_request_is_action( 'simulate_trial' ) ) {
    3865                 check_admin_referer( 'simulate_trial' );
    3866 
    3867                 $fs = freemius( fs_request_get( 'module_id' ) );
    3868 
    3869                 // Update SDK install to at least 24 hours before.
    3870                 $fs->_storage->install_timestamp = ( time() - WP_FS__TIME_24_HOURS_IN_SEC );
    3871                 // Unset the trial shown timestamp.
    3872                 unset( $fs->_storage->trial_promotion_shown );
    3873             } else if ( fs_request_is_action( 'simulate_network_upgrade' ) ) {
    3874                 check_admin_referer( 'simulate_network_upgrade' );
    3875 
    3876                 $fs = freemius( fs_request_get( 'module_id' ) );
    3877 
    3878                 self::set_network_upgrade_mode( $fs->_storage );
    3879             } else if ( fs_request_is_action( 'delete_install' ) ) {
    3880                 check_admin_referer( 'delete_install' );
    3881 
    3882                 self::_delete_site_by_slug(
    3883                     fs_request_get( 'slug' ),
    3884                     fs_request_get( 'module_type' ),
    3885                     true,
    3886                     fs_request_get( 'blog_id', null )
    3887                 );
    3888             } else if ( fs_request_is_action( 'delete_user' ) ) {
    3889                 check_admin_referer( 'delete_user' );
    3890 
    3891                 self::delete_user( fs_request_get( 'user_id' ) );
    3892             } else if ( fs_request_is_action( 'download_logs' ) ) {
    3893                 check_admin_referer( 'download_logs' );
    3894 
    3895                 $download_url = FS_Logger::download_db_logs(
    3896                     fs_request_get( 'filters', false, 'post' )
    3897                 );
    3898 
    3899                 if ( false === $download_url ) {
    3900                     wp_die( 'Oops... there was an error while generating the logs download file. Please try again and if it doesn\'t work contact [email protected].' );
    3901                 }
    3902 
    3903                 fs_redirect( $download_url );
    3904             } else if ( fs_request_is_action( 'migrate_options_to_network' ) ) {
    3905                 check_admin_referer( 'migrate_options_to_network' );
    3906 
    3907                 self::migrate_options_to_network();
    3908             }
    3909         }
    3910 
    3911         /**
    3912          * @author Leo Fajardo (@leorw)
    3913          * @since  2.5.0
    3914          *
    3915          * @return array
    3916          */
    3917         static function get_all_modules_sites() {
    3918             self::$_static_logger->entrance();
    3919 
    3920             $sites_by_type = array(
    3921                 WP_FS__MODULE_TYPE_PLUGIN => array(),
    3922                 WP_FS__MODULE_TYPE_THEME  => array(),
    3923             );
    3924 
    3925             $module_types = array_keys( $sites_by_type );
    3926 
    3927             if ( ! is_multisite() ) {
    3928                 foreach ( $module_types as $type ) {
    3929                     $sites_by_type[ $type ] = self::get_all_sites( $type );
    3930 
    3931                     foreach ( $sites_by_type[ $type ] as $slug => $install ) {
    3932                         $sites_by_type[ $type ][ $slug ] = array( $install );
    3933                     }
    3934                 }
    3935             } else {
    3936                 $sites = self::get_sites();
    3937 
    3938                 foreach ( $sites as $site ) {
    3939                     $blog_id = self::get_site_blog_id( $site );
    3940 
    3941                     foreach ( $module_types as $type ) {
    3942                         $installs = self::get_all_sites( $type, $blog_id );
    3943 
    3944                         foreach ( $installs as $slug => $install ) {
    3945                             if ( ! isset( $sites_by_type[ $type ][ $slug ] ) ) {
    3946                                 $sites_by_type[ $type ][ $slug ] = array();
    3947                             }
    3948 
    3949                             $install->blog_id = $blog_id;
    3950 
    3951                             $sites_by_type[ $type ][ $slug ][] = $install;
    3952                         }
    3953 
    3954                     }
    3955                 }
    3956             }
    3957 
    3958             return $sites_by_type;
    3959         }
    3960 
    3961         /**
    3962          * @author Vova Feldman (@svovaf)
    3963          * @since  1.0.8
    3964          */
    3965         static function _debug_page_render() {
    3966             self::$_static_logger->entrance();
    3967 
    3968             $all_modules_sites = self::get_all_modules_sites();
    3969 
    3970             $licenses_by_module_type = self::get_all_licenses_by_module_type();
    3971 
    3972             $vars = array(
    3973                 'plugin_sites'    => $all_modules_sites[ WP_FS__MODULE_TYPE_PLUGIN ],
    3974                 'theme_sites'     => $all_modules_sites[ WP_FS__MODULE_TYPE_THEME ],
    3975                 'users'           => self::get_all_users(),
    3976                 'addons'          => self::get_all_addons(),
    3977                 'account_addons'  => self::get_all_account_addons(),
    3978                 'plugin_licenses' => $licenses_by_module_type[ WP_FS__MODULE_TYPE_PLUGIN ],
    3979                 'theme_licenses'  => $licenses_by_module_type[ WP_FS__MODULE_TYPE_THEME ]
    3980             );
    3981 
    3982             fs_enqueue_local_style( 'fs_debug', '/admin/debug.css' );
    3983             fs_require_once_template( 'debug.php', $vars );
    39843700        }
    39853701
     
    41753891                isset( $this->_storage->connectivity_test['is_active'] )
    41763892            ) {
    4177                 $is_active = $this->_storage->connectivity_test['is_active'];
     3893                $is_connected = isset( $this->_storage->connectivity_test['is_connected'] ) ?
     3894                    $this->_storage->connectivity_test['is_connected'] :
     3895                    null;
     3896                $is_active    = ( $this->_storage->connectivity_test['is_active'] || is_object( $this->_site ) );
    41783897            } else {
    4179                 $is_active = $this->should_turn_fs_on( $this->apply_filters( 'is_plugin_update', $this->is_plugin_update() ) );
    4180 
    4181                 $this->store_connectivity_info( (object) array( 'is_active' => $is_active ), null );
    4182             }
     3898                $is_connected = null;
     3899                $is_active    = $this->should_turn_fs_on( $this->apply_filters( 'is_plugin_update', $this->is_plugin_update() ) );
     3900            }
     3901
     3902            $this->store_connectivity_info( (object) array( 'is_active' => $is_active ), $is_connected );
    41833903
    41843904            if ( $is_active ) {
     
    54675187                new FS_Plugin();
    54685188
     5189            $is_premium     = $this->get_bool_option( $plugin_info, 'is_premium', true );
    54695190            $premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' );
     5191
     5192            $module_type = $this->get_option( $plugin_info, 'type', $this->_module_type );
     5193
     5194            $parallel_activation = $this->get_option( $plugin_info, 'parallel_activation' );
     5195
     5196            if (
     5197                ! $is_premium &&
     5198                is_array( $parallel_activation ) &&
     5199                ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ) &&
     5200                $this->get_bool_option( $parallel_activation, 'enabled' )
     5201            ) {
     5202                $premium_basename = $this->get_option( $parallel_activation, 'premium_version_basename' );
     5203
     5204                if ( empty( $premium_basename ) ) {
     5205                    throw new Exception('You need to specify the premium version basename to enable parallel version activation.');
     5206                }
     5207
     5208                $this->_premium_plugin_basename_from_parallel_activation = $premium_basename;
     5209
     5210                if ( is_plugin_active( $premium_basename ) ) {
     5211                    $is_premium = true;
     5212                }
     5213            }
    54705214
    54715215            $plugin->update( array(
    54725216                'id'                   => $id,
    5473                 'type'                 => $this->get_option( $plugin_info, 'type', $this->_module_type ),
     5217                'type'                 => $module_type,
    54745218                'public_key'           => $public_key,
    54755219                'slug'                 => $this->_slug,
     
    54795223                'title'                => $this->get_plugin_name( $premium_suffix ),
    54805224                'file'                 => $this->_plugin_basename,
    5481                 'is_premium'           => $this->get_bool_option( $plugin_info, 'is_premium', true ),
     5225                'is_premium'           => $is_premium,
    54825226                'premium_suffix'       => $premium_suffix,
    54835227                'is_live'              => $this->get_bool_option( $plugin_info, 'is_live', true ),
     
    54855229                'bundle_id'            => $this->get_option( $plugin_info, 'bundle_id', null ),
    54865230                'bundle_public_key'    => $this->get_option( $plugin_info, 'bundle_public_key', null ),
    5487                 'opt_in_moderation'    => $this->get_option( $plugin_info, 'opt_in', null ),
     5231                'opt_in_moderation'    => $this->get_option(
     5232                    $plugin_info,
     5233                    'opt_in',
     5234                    // For backward compatibility, we support both parameter names: opt_in and opt_in_moderation.
     5235                    $this->get_option( $plugin_info, 'opt_in_moderation', null )
     5236                ),
    54885237            ) );
    54895238
     
    55435292            } else {
    55445293                $this->_enable_anonymous = $this->get_bool_option( $plugin_info, 'enable_anonymous', true );
    5545                 $this->_anonymous_mode   = $this->get_bool_option( $plugin_info, 'anonymous_mode', false );
     5294                $this->_anonymous_mode   = (
     5295                    $this->get_bool_option( $plugin_info, 'anonymous_mode', false ) ||
     5296                    (
     5297                        $this->apply_filters( 'playground_anonymous_mode', true ) &&
     5298                        ! empty( $_SERVER['HTTP_HOST'] ) &&
     5299                        FS_Site::is_playground_wp_environment_by_host( $_SERVER['HTTP_HOST'] )
     5300                    )
     5301                );
    55465302            }
    55475303            $this->_permissions = $this->get_option( $plugin_info, 'permissions', array() );
     
    57515507            if ( $this->is_registered() ) {
    57525508                // Schedule code type changes event.
    5753                 $this->schedule_install_sync();
     5509                $this->maybe_schedule_install_sync_cron();
    57545510            }
    57555511
     
    68156571
    68166572        /**
     6573         * Instead of running blocking install sync event, execute non blocking scheduled cron job.
     6574         *
     6575         * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding specified blog ID from being the cron job executor.
     6576         *
     6577         * @author Leo Fajardo (@leorw)
     6578         * @since  2.9.1
     6579         */
     6580        private function maybe_schedule_install_sync_cron( $except_blog_id = 0 ) {
     6581            if ( ! $this->is_user_in_admin() ) {
     6582                return;
     6583            }
     6584
     6585            if ( $this->is_clone() ) {
     6586                return;
     6587            }
     6588
     6589            if (
     6590                // The event has been properly scheduled, so no need to reschedule it.
     6591                is_numeric( $this->next_install_sync() )
     6592            ) {
     6593                return;
     6594            }
     6595
     6596            $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
     6597        }
     6598
     6599        /**
    68176600         * @author Vova Feldman (@svovaf)
    68186601         * @since  1.1.7.3
     
    69096692        private function get_install_sync_cron_blog_id() {
    69106693            return $this->get_cron_blog_id( 'install_sync' );
    6911         }
    6912 
    6913         /**
    6914          * Instead of running blocking install sync event, execute non blocking scheduled wp-cron.
    6915          *
    6916          * @author Vova Feldman (@svovaf)
    6917          * @since  1.1.7.3
    6918          *
    6919          * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding excluded specified blog ID from being the cron executor.
    6920          */
    6921         private function schedule_install_sync( $except_blog_id = 0 ) {
    6922             if ( $this->is_clone() ) {
    6923                 return;
    6924             }
    6925 
    6926             $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
    69276694        }
    69286695
     
    74757242
    74767243        /**
    7477          * Delete user.
    7478          *
    7479          * @author Vova Feldman (@svovaf)
    7480          * @since  2.0.0
    7481          *
    7482          * @param number $user_id
    7483          * @param bool   $store
    7484          *
    7485          * @return false|int The user ID if deleted. Otherwise, FALSE (when install not exist).
    7486          */
    7487         private static function delete_user( $user_id, $store = true ) {
    7488             $users = self::get_all_users();
    7489 
    7490             if ( ! is_array( $users ) || ! isset( $users[ $user_id ] ) ) {
    7491                 return false;
    7492             }
    7493 
    7494             unset( $users[ $user_id ] );
    7495 
    7496             self::$_accounts->set_option( 'users', $users, $store );
    7497 
    7498             return $user_id;
    7499         }
    7500 
    7501         /**
    75027244         * Delete plugin's plans information.
    75037245         *
     
    77437485                if (
    77447486                    is_plugin_active( $other_version_basename ) &&
    7745                     $this->apply_filters( 'deactivate_on_activation', true )
     7487                    $this->apply_filters( 'deactivate_on_activation', ! $this->is_parallel_activation() )
    77467488                ) {
    77477489                    deactivate_plugins( $other_version_basename );
     
    77577499                // Schedule re-activation event and sync.
    77587500//              $this->sync_install( array(), true );
    7759                 $this->schedule_install_sync();
     7501                $this->maybe_schedule_install_sync_cron();
    77607502
    77617503                // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
     
    89488690            }
    89498691
    8950             $this->schedule_install_sync();
     8692            $this->maybe_schedule_install_sync_cron();
    89518693//          $this->sync_install( array(), true );
    89528694        }
     
    1063410376         * @return array[string]FS_Site
    1063510377         */
    10636         private static function get_all_sites(
     10378        public static function get_all_sites(
    1063710379            $module_type = WP_FS__MODULE_TYPE_PLUGIN,
    1063810380            $blog_id = null,
     
    1066310405         * @return mixed
    1066410406         */
    10665         private static function get_account_option( $option_name, $module_type = null, $network_level_or_blog_id = null ) {
     10407        public static function get_account_option( $option_name, $module_type = null, $network_level_or_blog_id = null ) {
    1066610408            if ( ! is_null( $module_type ) && WP_FS__MODULE_TYPE_PLUGIN !== $module_type ) {
    1066710409                $option_name = $module_type . '_' . $option_name;
     
    1079810540         * @since  2.0.0
    1079910541         *
    10800          * @return array
    10801          */
    10802         private static function get_all_licenses_by_module_type() {
    10803             $licenses = self::get_account_option( 'all_licenses' );
    10804 
    10805             $licenses_by_module_type = array(
    10806                 WP_FS__MODULE_TYPE_PLUGIN => array(),
    10807                 WP_FS__MODULE_TYPE_THEME  => array()
    10808             );
    10809 
    10810             if ( ! is_array( $licenses ) ) {
    10811                 return $licenses_by_module_type;
    10812             }
    10813 
    10814             foreach ( $licenses as $module_id => $module_licenses ) {
    10815                 $fs = self::get_instance_by_id( $module_id );
    10816                 if ( false === $fs ) {
    10817                     continue;
    10818                 }
    10819 
    10820                 $licenses_by_module_type[ $fs->_module_type ] = array_merge( $licenses_by_module_type[ $fs->_module_type ], $module_licenses );
    10821             }
    10822 
    10823             return $licenses_by_module_type;
    10824         }
    10825 
    10826         /**
    10827          * @author Leo Fajardo (@leorw)
    10828          * @since  2.0.0
    10829          *
    1083010542         * @param number      $module_id
    1083110543         * @param number|null $user_id
     
    1096610678         * @return array<number,FS_Plugin[]>|false
    1096710679         */
    10968         private static function get_all_addons() {
     10680        public static function get_all_addons() {
    1096910681            $addons = self::maybe_get_entities_account_option( 'addons', array() );
    1097010682
     
    1098210694         * @return number[]|false
    1098310695         */
    10984         private static function get_all_account_addons() {
     10696        public static function get_all_account_addons() {
    1098510697            $addons = self::$_accounts->get_option( 'account_addons', array() );
    1098610698
     
    1109710809        function get_site() {
    1109810810            return $this->_site;
     10811        }
     10812
     10813        /**
     10814         * @author Daniele Alessandra (@danielealessandra)
     10815         * @return FS_Storage
     10816         * @since  2.6.2
     10817         *
     10818         */
     10819        public function get_storage() {
     10820            return $this->_storage;
    1109910821        }
    1110010822
     
    1395513677        function get_pricing_js_path() {
    1395613678            if ( ! isset( $this->_pricing_js_path ) ) {
    13957                 $pricing_js_path = $this->apply_filters( 'freemius_pricing_js_path', '' );
    13958 
     13679                $default_path = WP_FS__DIR_JS . '/pricing/freemius-pricing.js';
     13680
     13681                $pricing_js_path = $this->apply_filters( 'freemius_pricing_js_path', $default_path );
     13682
     13683                // Backward compatibility for people who placed the freemius-pricing inside `includes` directory. Let it take more preference than the default path.
    1395913684                if ( empty( $pricing_js_path ) ) {
    1396013685                    global $fs_active_plugins;
     
    1397513700                }
    1397613701
     13702                // If it is still empty, load the default pricing JS.
     13703                if ( ! file_exists( $pricing_js_path ) ) {
     13704                    $pricing_js_path = $default_path;
     13705                }
     13706
    1397713707                $this->_pricing_js_path = $pricing_js_path;
    1397813708            }
     
    1398513715         * @since 2.3.1
    1398613716         *
     13717         * @deprecated Since v2.9.0 we have removed the iFrame based pricing. This will always return `false`.
     13718         *
    1398713719         * @return bool
    1398813720         */
    1398913721        function should_use_external_pricing() {
    13990             if ( is_null( $this->_use_external_pricing ) ) {
    13991                 $pricing_js_path = $this->get_pricing_js_path();
    13992 
    13993                 $this->_use_external_pricing = ( empty( $pricing_js_path ) || ! file_exists( $pricing_js_path ) );
    13994             }
    13995 
    13996             return $this->_use_external_pricing;
     13722            return false;
    1399713723        }
    1399813724
     
    1503314759                $this->_get_admin_page_url( 'pricing', $params );
    1503414760
     14761            return $this->get_pricing_url_with_filter( $url );
     14762        }
     14763
     14764        /**
     14765         * Retrieves the filtered pricing URL.
     14766         *
     14767         * @author Leo Fajardo (@leorw)
     14768         * @since  2.7.4
     14769         *
     14770         * @param string $url
     14771         *
     14772         * @return string
     14773         */
     14774        private function get_pricing_url_with_filter( $url ) {
    1503514775            return $this->apply_filters( 'pricing_url', $url );
    1503614776        }
     
    1630816048                 $context_blog_id == $this->get_install_sync_cron_blog_id()
    1630916049            ) {
    16310                 $this->schedule_install_sync( $context_blog_id );
     16050                $this->maybe_schedule_install_sync_cron( $context_blog_id );
    1631116051            }
    1631216052        }
     
    1834418084                     * @author Leo Fajardo (@leorw)
    1834518085                     */
     18086                    $user = $this->_user;
     18087
    1834618088                    $this->_user = null;
    1834718089
    1834818090                    fs_redirect( $this->get_activation_url( array( 'error' => $result->error->message ) ) );
     18091
     18092                    /**
     18093                     * Restore the user after the redirect, this is relevant when there are cases where the redirect will choose not to do anything.
     18094                     */
     18095                    $this->_user = $user;
    1834918096                }
    1835018097            }
     
    1911118858                if (! WP_FS__DEMO_MODE && ! $this->is_whitelabeled() ) {
    1911218859                    // Add contact page.
    19113                     $this->add_submenu_item(
    19114                         $this->get_text_inline( 'Contact Us', 'contact-us' ),
    19115                         array( &$this, '_contact_page_render' ),
    19116                         $this->get_plugin_name() . ' &ndash; ' . $this->get_text_inline( 'Contact Us', 'contact-us' ),
    19117                         'manage_options',
    19118                         'contact',
    19119                         'Freemius::_clean_admin_content_section',
    19120                         WP_FS__DEFAULT_PRIORITY,
    19121                         $this->is_submenu_item_visible( 'contact' )
    19122                     );
     18860                    if ( $this->is_premium() ) {
     18861                        $this->add_submenu_item(
     18862                            $this->get_text_inline( 'Contact Us', 'contact-us' ),
     18863                            array( &$this, '_contact_page_render' ),
     18864                            $this->get_plugin_name() . ' &ndash; ' . $this->get_text_inline( 'Contact Us', 'contact-us' ),
     18865                            'manage_options',
     18866                            'contact',
     18867                            'Freemius::_clean_admin_content_section',
     18868                            WP_FS__DEFAULT_PRIORITY,
     18869                            $this->is_submenu_item_visible( 'contact' )
     18870                        );
     18871                    } else {
     18872                        $this->add_submenu_link_item(
     18873                            $this->get_text_inline( 'Contact Us', 'contact-us' ),
     18874                            FS_Contact_Form_Manager::instance()->get_standalone_link( $this ),
     18875                            'contact',
     18876                            'manage_options',
     18877                            WP_FS__DEFAULT_PRIORITY,
     18878                            $this->is_submenu_item_visible( 'contact' ),
     18879                            'fs_external_contact',
     18880                            true
     18881                        );
     18882                    }
    1912318883                }
    1912418884
     
    1915918919                    }
    1916018920
    19161                     // Add upgrade/pricing page.
    19162                     $this->add_submenu_item(
    19163                         $pricing_cta_text . '&nbsp;&nbsp;' . ( is_rtl() ? $this->get_text_x_inline( '&#x2190;', 'ASCII arrow left icon', 'symbol_arrow-left' ) : $this->get_text_x_inline( '&#x27a4;', 'ASCII arrow right icon', 'symbol_arrow-right' ) ),
    19164                         array( &$this, '_pricing_page_render' ),
    19165                         $this->get_plugin_name() . ' &ndash; ' . $this->get_text_x_inline( 'Pricing', 'noun', 'pricing' ),
    19166                         'manage_options',
    19167                         'pricing',
    19168                         'Freemius::_clean_admin_content_section',
    19169                         WP_FS__LOWEST_PRIORITY,
    19170                         ( $add_submenu_items && $show_pricing ),
    19171                         $pricing_class
    19172                     );
     18921                    $custom_pricing_url        = $this->get_pricing_url_with_filter( null );
     18922                    $pricing_menu_title        = $pricing_cta_text . '&nbsp;&nbsp;' . ( is_rtl() ? $this->get_text_x_inline( '&#x2190;', 'ASCII arrow left icon', 'symbol_arrow-left' ) : $this->get_text_x_inline( '&#x27a4;', 'ASCII arrow right icon', 'symbol_arrow-right' ) );
     18923                    $show_pricing_submenu_item = ( $add_submenu_items && $show_pricing );
     18924
     18925                    // Add upgrade/pricing submenu item.
     18926                    if ( ! is_null( $custom_pricing_url ) ) {
     18927                        $this->add_submenu_link_item(
     18928                            $pricing_menu_title,
     18929                            $custom_pricing_url,
     18930                            'pricing',
     18931                            'manage_options',
     18932                            WP_FS__LOWEST_PRIORITY,
     18933                            $show_pricing_submenu_item,
     18934                            $pricing_class
     18935                        );
     18936                    } else {
     18937                        $this->add_submenu_item(
     18938                            $pricing_menu_title,
     18939                            array( &$this, '_pricing_page_render' ),
     18940                            $this->get_plugin_name() . ' &ndash; ' . $this->get_text_x_inline( 'Pricing', 'noun', 'pricing' ),
     18941                            'manage_options',
     18942                            'pricing',
     18943                            'Freemius::_clean_admin_content_section',
     18944                            WP_FS__LOWEST_PRIORITY,
     18945                            $show_pricing_submenu_item,
     18946                            $pricing_class
     18947                        );
     18948                    }
    1917318949                }
    1917418950            }
     
    1920618982         */
    1920718983        private function embed_submenu_items() {
    19208             $item_template = $this->_menu->is_top_level() ?
    19209                 '<span class="fs-submenu-item %s %s %s">%s</span>' :
    19210                 '<span class="fs-submenu-item fs-sub %s %s %s">%s</span>';
     18984            $item_classes = $this->_menu->is_top_level() ? 'fs-submenu-item' : 'fs-submenu-item fs-sub';
     18985
     18986            $item_template = '<span class="' . $item_classes . ' %1$s %2$s %3$s" data-fs-external-url="%5$s" data-fs-new-tab="%6$s">%4$s</span>';
    1921118987
    1921218988            $top_level_menu_capability = $this->get_top_level_menu_capability();
     
    1922519001                        $item['menu_slug'],
    1922619002                        ! empty( $item['class'] ) ? $item['class'] : '',
    19227                         $item['menu_title']
     19003                        $item['menu_title'],
     19004                        esc_attr( isset( $item['url'] ) ? $item['url'] : '' ),
     19005                        esc_attr( isset( $item['new_tab'] ) ? 'true' : 'false' )
    1922819006                    );
    1922919007
     
    1938119159                    null,
    1938219160                    50,
    19383                     $this->is_submenu_item_visible( 'support' )
     19161                    $this->is_submenu_item_visible( 'support' ),
     19162                    '',
     19163                    true
    1938419164                );
    1938519165            }
     
    1945919239         * @param int    $priority
    1946019240         * @param bool   $show_submenu
     19241         * @param string $class
     19242         * @param bool   $new_tab
    1946119243         */
    1946219244        function add_submenu_link_item(
     
    1946619248            $capability = 'read',
    1946719249            $priority = WP_FS__DEFAULT_PRIORITY,
    19468             $show_submenu = true
     19250            $show_submenu = true,
     19251            $class = '',
     19252            $new_tab = false
    1946919253        ) {
    1947019254            $this->_logger->entrance( 'Title = ' . $menu_title . '; Url = ' . $url );
     
    1948019264                        $capability,
    1948119265                        $priority,
    19482                         $show_submenu
     19266                        $show_submenu,
     19267                        $class,
     19268                        $new_tab
    1948319269                    );
    1948419270
     
    1950019286                'before_render_function' => '',
    1950119287                'show_submenu'           => $show_submenu,
     19288                'class'                  => $class,
     19289                'new_tab'                => $new_tab,
    1950219290            );
    1950319291        }
     
    2201121799         *
    2201221800         * @param bool|string $plan_name
     21801         * @param bool        $add_sticky_notice
    2201321802         *
    2201421803         * @return bool If trial was successfully started.
    2201521804         */
    22016         function start_trial( $plan_name = false ) {
     21805        function start_trial( $plan_name = false, $add_sticky_notice = false ) {
    2201721806            $this->_logger->entrance();
    2201821807
     
    2202521814                    sprintf( $this->get_text_inline( 'You are already running the %s in a trial mode.', 'in-trial-mode' ), $this->_module_type ),
    2202621815                    $oops_text,
    22027                     'error'
     21816                    'error',
     21817                    $add_sticky_notice
    2202821818                );
    2202921819
     
    2203121821            }
    2203221822
    22033             if ( $this->_site->is_trial_utilized() ) {
     21823            if ( $this->_site->is_trial_utilized() && ! $this->is_payments_sandbox() ) {
    2203421824                // Trial was already utilized.
    2203521825                $this->_admin_notices->add(
    2203621826                    $this->get_text_inline( 'You already utilized a trial before.', 'trial-utilized' ),
    2203721827                    $oops_text,
    22038                     'error'
     21828                    'error',
     21829                    $add_sticky_notice
    2203921830                );
    2204021831
     
    2205021841                        sprintf( $this->get_text_inline( 'Plan %s do not exist, therefore, can\'t start a trial.', 'trial-plan-x-not-exist' ), $plan_name ),
    2205121842                        $oops_text,
    22052                         'error'
     21843                        'error',
     21844                        $add_sticky_notice
    2205321845                    );
    2205421846
     
    2206121853                        sprintf( $this->get_text_inline( 'Plan %s does not support a trial period.', 'plan-x-no-trial' ), $plan_name ),
    2206221854                        $oops_text,
    22063                         'error'
     21855                        'error',
     21856                        $add_sticky_notice
    2206421857                    );
    2206521858
     
    2207221865                        sprintf( $this->get_text_inline( 'None of the %s\'s plans supports a trial period.', 'no-trials' ), $this->_module_type ),
    2207321866                        $oops_text,
    22074                         'error'
     21867                        'error',
     21868                        $add_sticky_notice
    2207521869                    );
    2207621870
     
    2208321877            }
    2208421878
    22085             $api  = $this->get_api_site_scope();
    22086             $plan = $api->call( "plans/{$plan->id}/trials.json", 'post' );
    22087 
    22088             if ( ! $this->is_api_result_entity( $plan ) ) {
     21879            $trial_params = array();
     21880
     21881            if ( $this->is_payments_sandbox() ) {
     21882                $trial_params['trial_timestamp'] = time();
     21883                $trial_params['trial_token']     = FS_Security::instance()->get_trial_token(
     21884                    $this->get_plugin(),
     21885                    $plan,
     21886                    $trial_params['trial_timestamp']
     21887                );
     21888            }
     21889
     21890            $api   = $this->get_api_site_scope();
     21891            $trial = $api->call( "plans/{$plan->id}/trials.json", 'post', $trial_params );
     21892
     21893            if ( ! $this->is_api_result_entity( $trial ) ) {
    2208921894                // Some API error while trying to start the trial.
    2209021895                $this->_admin_notices->add(
    22091                     $this->get_api_error_message( $plan ),
     21896                    $this->get_api_error_message( $trial ),
    2209221897                    $oops_text,
    22093                     'error'
     21898                    'error',
     21899                    $add_sticky_notice
    2209421900                );
    2209521901
     
    2233122137            if ( true === $fetch_readme ) {
    2233222138                $latest_version_endpoint = add_query_arg( 'readme', 'true', $latest_version_endpoint );
     22139
     22140                // Don't cache the API response when fetching readme information.
     22141                $expiration = null;
    2233322142            }
    2233422143
     
    2279322602
    2279422603            $remove_user       = true;
    22795             $all_modules_sites = self::get_all_modules_sites();
     22604            $all_modules_sites = FS_DebugManager::get_all_modules_sites();
    2279622605
    2279722606            foreach ( $all_modules_sites as $sites_by_module_type ) {
     
    2357223381            $this->_logger->entrance();
    2357323382
     23383            fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
     23384            fs_enqueue_local_style( 'fs_checkout', '/admin/checkout.css' );
     23385
    2357423386            $vars = array( 'id' => $this->_module_id );
    2357523387
     
    2358523397         * @since  2.3.1
    2358623398         */
    23587         function _maybe_add_pricing_ajax_handler() {
    23588             if ( ! $this->should_use_external_pricing() ) {
    23589                 $this->add_ajax_action( 'pricing_ajax_action', array( &$this, '_fs_pricing_ajax_action_handler' ) );
    23590             }
     23399        function _add_pricing_ajax_handler() {
     23400            $this->add_ajax_action( 'pricing_ajax_action', array( &$this, '_fs_pricing_ajax_action_handler' ) );
    2359123401        }
    2359223402
     
    2363823448                    break;
    2363923449                case 'start_trial':
    23640                     $result = $this->opt_in(
    23641                         false,
    23642                         false,
    23643                         false,
    23644                         false,
    23645                         false,
    23646                         fs_request_get( 'plan_id' )
    23647                     );
     23450                    $trial_plan_id = fs_request_get( 'plan_id' );
     23451
     23452                    if ( $this->is_registered() && $this->is_tracking_allowed() ) {
     23453                        $plan = $this->_get_plan_by_id( $trial_plan_id );
     23454
     23455                        if ( ! $plan ) {
     23456                            $this->shoot_ajax_failure( 'Invalid plan ID.' );
     23457                            return;
     23458                        }
     23459
     23460                        $result = $this->start_trial( $plan->name, true );
     23461                    } else {
     23462                        // @todo - This fails for sandbox trial at the moment if the trial was already utilized.
     23463                        $result = $this->opt_in(
     23464                            false,
     23465                            false,
     23466                            false,
     23467                            false,
     23468                            false,
     23469                            $trial_plan_id
     23470                        );
     23471                    }
    2364823472            }
    2364923473
     
    2417724001            // Start trial button.
    2417824002            $button = ' ' . sprintf(
    24179                     '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
     24003                    '<div><a class="button button-primary" href="%s">%s &nbsp;&#10140;</a></div>',
    2418024004                    $trial_url,
    2418124005                    $this->get_text_x_inline( 'Start free trial', 'call to action', 'start-free-trial' )
    2418224006                );
    2418324007
     24008            $message_text = $this->apply_filters( 'trial_promotion_message', "{$message} {$cc_string}" );
     24009
    2418424010            $this->_admin_notices->add_sticky(
    24185                 $this->apply_filters( 'trial_promotion_message', "{$message} {$cc_string} {$button}" ),
     24011                "<div class=\"fs-trial-message-container\"><div>{$message_text}</div> {$button}</div>",
    2418624012                'trial_promotion',
    2418724013                '',
     
    2488024706         * @since 2.1.0
    2488124707         *
    24882          * @param string $url
    24883          * @param array  $request
    24884          */
    24885         private static function enrich_request_for_debug( &$url, &$request ) {
    24886             if ( WP_FS__DEBUG_SDK || isset( $_COOKIE['XDEBUG_SESSION'] ) ) {
    24887                 $url = add_query_arg( 'XDEBUG_SESSION_START', rand( 0, 9999999 ), $url );
    24888                 $url = add_query_arg( 'XDEBUG_SESSION', 'PHPSTORM', $url );
    24889 
    24890                 $request['cookies'] = array(
    24891                     new WP_Http_Cookie( array(
    24892                         'name'  => 'XDEBUG_SESSION',
    24893                         'value' => 'PHPSTORM',
    24894                     ) )
    24895                 );
    24896             }
    24897         }
    24898 
    24899         /**
    24900          * @author Leo Fajardo (@leorw)
    24901          * @since 2.1.0
    24902          *
    2490324708         * @param string      $url
    2490424709         * @param array       $request
     
    2492624731            if ( false === $response ) {
    2492724732                if ( $maybe_enrich_request_for_debug ) {
    24928                     self::enrich_request_for_debug( $url, $request );
     24733                    FS_DebugManager::enrich_request_for_debug( $url, $request );
    2492924734                }
    2493024735
     
    2567425479
    2567525480                // Locate the main assets folder.
    25676                 if ( 1 < count( $fs_active_plugins->plugins ) ) {
     25481                if ( ! empty( $fs_active_plugins->plugins ) ) {
    2567725482                    $plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) );
    2567825483
  • woo-product-reviews-shortcode/trunk/freemius/includes/class-fs-api.php

    r3082022 r3245272  
    356356                }
    357357
    358                 self::$_cache->set( $cache_key, $result, $expiration );
     358                if ( is_numeric( $expiration ) ) {
     359                    self::$_cache->set( $cache_key, $result, $expiration );
     360                }
    359361
    360362                $cached_result = $result;
  • woo-product-reviews-shortcode/trunk/freemius/includes/class-fs-logger.php

    r2881642 r3245272  
    3333        private static $_abspathLength;
    3434
     35        /**
     36         * @var FS_Logger[] $LOGGERS
     37         */
    3538        private static $LOGGERS = array();
    3639        private static $LOG = array();
     
    125128            self::hook_footer();
    126129        }
    127 
    128130        function echo_on() {
    129131            $this->on();
     
    321323            $table = "{$wpdb->prefix}fs_logger";
    322324
     325            /**
     326             * Drop logging table in any case.
     327             */
     328            $result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
     329
    323330            if ( $is_on ) {
    324331                /**
     
    330337                 * @link https://core.trac.wordpress.org/ticket/2695
    331338                 */
    332                 $result = $wpdb->query( "CREATE TABLE {$table} (
     339                $result = $wpdb->query( "CREATE TABLE IF NOT EXISTS {$table} (
    333340`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    334341`process_id` INT UNSIGNED NOT NULL,
     
    349356KEY `function` (`function` ASC),
    350357KEY `type` (`type` ASC))" );
    351             } else {
    352                 /**
    353                  * Drop logging table.
    354                  */
    355                 $result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
    356358            }
    357359
    358360            if ( false !== $result ) {
    359361                update_option( 'fs_storage_logger', ( $is_on ? 1 : 0 ) );
     362                self::$_isStorageLoggingOn = $is_on;
    360363            }
    361364
  • woo-product-reviews-shortcode/trunk/freemius/includes/class-fs-plugin-updater.php

    r3082022 r3245272  
    107107            if ( ! $this->_fs->has_any_active_valid_license() ) {
    108108                add_action( 'admin_head', array( &$this, 'catch_plugin_information_dialog_contents' ) );
     109            } else {
     110                add_action( 'admin_footer', array( &$this, '_add_fs_allow_updater_and_dialog_request_param' ) );
    109111            }
    110112
     
    132134        /**
    133135         * @author Leo Fajardo (@leorw)
     136         * @since 2.7.4
     137         */
     138        function _add_fs_allow_updater_and_dialog_request_param() {
     139            if ( ! $this->is_plugin_information_dialog_for_plugin() ) {
     140                return;
     141            }
     142            ?>
     143            <script type="text/javascript">
     144                if ( typeof jQuery !== 'undefined' ) {
     145                    jQuery( document ).on( 'wp-plugin-updating', function( event, args ) {
     146                        if ( typeof args === 'object' && args.slug && typeof args.slug === 'string' ) {
     147                            if ( <?php echo json_encode( $this->_fs->get_slug() ) ?> === args.slug ) {
     148                                args.fs_allow_updater_and_dialog = true;
     149                            }
     150                        }
     151                    } );
     152                }
     153            </script>
     154            <?php
     155        }
     156
     157        /**
     158         * @author Leo Fajardo (@leorw)
     159         * @since 2.7.4
     160         *
     161         * @return bool
     162         */
     163        private function is_plugin_information_dialog_for_plugin() {
     164            return (
     165                'plugin-information' === fs_request_get( 'tab', false ) &&
     166                $this->_fs->get_slug() === fs_request_get_raw( 'plugin', false )
     167            );
     168        }
     169
     170        /**
     171         * @author Leo Fajardo (@leorw)
    134172         * @since 2.1.4
    135173         */
    136174        function catch_plugin_information_dialog_contents() {
    137             if (
    138                 'plugin-information' !== fs_request_get( 'tab', false ) ||
    139                 $this->_fs->get_slug() !== fs_request_get_raw( 'plugin', false )
    140             ) {
     175            if ( ! $this->is_plugin_information_dialog_for_plugin() ) {
    141176                return;
    142177            }
     
    508543            global $wp_current_filter;
    509544
    510             $current_plugin_version = $this->_fs->get_plugin_version();
    511 
    512             if ( ! empty( $wp_current_filter ) && 'upgrader_process_complete' === $wp_current_filter[0] ) {
    513                 if (
    514                     is_null( $this->_update_details ) ||
    515                     ( is_object( $this->_update_details ) && $this->_update_details->new_version !== $current_plugin_version )
    516                 ) {
    517                     /**
    518                      * After an update, clear the stored update details and reparse the plugin's main file in order to get
    519                      * the updated version's information and prevent the previous update information from showing up on the
    520                      * updates page.
    521                      *
    522                      * @author Leo Fajardo (@leorw)
    523                      * @since 2.3.1
    524                      */
    525                     $this->_update_details  = null;
    526                     $current_plugin_version = $this->_fs->get_plugin_version( true );
    527                 }
     545            if ( ! empty( $wp_current_filter ) && in_array( 'upgrader_process_complete', $wp_current_filter ) ) {
     546                return $transient_data;
    528547            }
    529548
     
    534553                    fs_request_get_bool( 'force-check' ),
    535554                    FS_Plugin_Updater::UPDATES_CHECK_CACHE_EXPIRATION,
    536                     $current_plugin_version
     555                    $this->_fs->get_plugin_version()
    537556                );
    538557
     
    617636            $slug = $this->_fs->get_slug();
    618637
    619             if ( $this->_fs->is_org_repo_compliant() && $this->_fs->is_freemium() ) {
     638            if ( $this->can_fetch_data_from_wp_org() ) {
    620639                if ( ! isset( $this->_translation_updates ) ) {
    621640                    $this->_translation_updates = array();
     
    872891
    873892            return $res;
     893        }
     894
     895        /**
     896         * Returns true if the product can fetch data from WordPress.org.
     897         *
     898         * @author Leo Fajardo (@leorw)
     899         * @since  2.7.4
     900         */
     901        private function can_fetch_data_from_wp_org() {
     902            return ( $this->_fs->is_org_repo_compliant() && $this->_fs->is_freemium() );
    874903        }
    875904
     
    10581087
    10591088            $plugin_in_repo = false;
    1060             if ( ! $is_addon ) {
     1089            if ( ! $is_addon && $this->can_fetch_data_from_wp_org() ) {
    10611090                // Try to fetch info from .org repository.
    10621091                $data = self::_fetch_plugin_info_from_repository( $action, $args );
  • woo-product-reviews-shortcode/trunk/freemius/includes/class-fs-security.php

    r2307256 r3245272  
    8383            );
    8484        }
     85
     86        /**
     87         * Gets a sandbox trial token for a given plugin, plan, and trial timestamp.
     88         *
     89         * @param FS_Plugin      $plugin
     90         * @param FS_Plugin_Plan $plan
     91         * @param int            $trial_timestamp
     92         *
     93         * @return string
     94         */
     95        function get_trial_token( FS_Plugin $plugin, FS_Plugin_Plan $plan, $trial_timestamp ) {
     96            return md5(
     97                $plugin->secret_key . $plugin->public_key .
     98                $plan->trial_period .
     99                $plan->id .
     100                $trial_timestamp
     101            );
     102        }
    85103    }
  • woo-product-reviews-shortcode/trunk/freemius/includes/class-fs-storage.php

    r3032314 r3245272  
    2121     * @property bool|null   $is_diagnostic_tracking_allowed
    2222     * @property object      $sync_cron
     23     * @property bool|int    $install_timestamp
    2324     */
    2425    class FS_Storage {
  • woo-product-reviews-shortcode/trunk/freemius/includes/entities/class-fs-plugin-plan.php

    r3082022 r3245272  
    1414     * Class FS_Plugin_Plan
    1515     *
    16      * @property FS_Pricing[] $pricing
    1716     */
    1817    class FS_Plugin_Plan extends FS_Entity {
     
    9392         */
    9493        public $is_hidden;
     94        /**
     95         * @var FS_Pricing[]
     96         */
     97        public $pricing;
     98        /**
     99         * @var object[]
     100         */
     101        public $features;
    95102
    96103        #endregion Properties
  • woo-product-reviews-shortcode/trunk/freemius/includes/entities/class-fs-site.php

    r3082022 r3245272  
    1111    }
    1212
    13     /**
    14      * @property int $blog_id
    15      */
    16     #[AllowDynamicProperties]
    1713    class FS_Site extends FS_Scope_Entity {
    1814        /**
     
    2016         */
    2117        public $site_id;
     18        /**
     19         * @var int
     20         */
     21        public $blog_id;
    2222        /**
    2323         * @var number
     
    183183                fs_ends_with( $subdomain, '.dev.wpengine.com' ) ||
    184184                fs_ends_with( $subdomain, '.wpengine.com' ) ||
     185                fs_ends_with( $subdomain, '.wpenginepowered.com' ) ||
    185186                // Pantheon
    186187                ( fs_ends_with( $subdomain, 'pantheonsite.io' ) &&
     
    190191                // Kinsta
    191192                (
    192                     ( fs_starts_with( $subdomain, 'staging-' ) || fs_starts_with( $subdomain, 'env-' ) ) &&
     193                    ( fs_starts_with( $subdomain, 'stg-' ) ||  fs_starts_with( $subdomain, 'staging-' ) || fs_starts_with( $subdomain, 'env-' ) ) &&
    193194                    ( fs_ends_with( $subdomain, '.kinsta.com' ) || fs_ends_with( $subdomain, '.kinsta.cloud' ) )
    194195                ) ||
     
    202203                ( fs_ends_with( $subdomain, '.websitepro-staging.com' ) || fs_ends_with( $subdomain, '.websitepro.hosting' ) ) ||
    203204                // InstaWP
    204                 fs_ends_with( $subdomain, '.instawp.xyz' )
     205                fs_ends_with( $subdomain, '.instawp.xyz' ) ||
     206                // 10Web Hosting
     207                ( fs_ends_with( $subdomain, '-dev.10web.site' ) || fs_ends_with( $subdomain, '-dev.10web.cloud' ) )
    205208            );
     209        }
     210
     211        /**
     212         * @author Leo Fajardo (@leorw)
     213         * @since  2.9.1
     214         *
     215         * @param string $host
     216         *
     217         * @return bool
     218         */
     219        static function is_playground_wp_environment_by_host( $host ) {
     220            // Services aimed at providing a WordPress sandbox environment.
     221            $sandbox_wp_environment_domains = array(
     222                // InstaWP
     223                'instawp.xyz',
     224
     225                // TasteWP
     226                'tastewp.com',
     227
     228                // WordPress Playground
     229                'playground.wordpress.net',
     230            );
     231
     232            foreach ( $sandbox_wp_environment_domains as $domain) {
     233                if (
     234                    ( $host === $domain ) ||
     235                    fs_ends_with( $host, '.' . $domain ) ||
     236                    fs_ends_with( $host, '-' . $domain )
     237                ) {
     238                    return true;
     239                }
     240            }
     241
     242            return false;
    206243        }
    207244
  • woo-product-reviews-shortcode/trunk/freemius/includes/entities/class-fs-user.php

    r2692780 r3245272  
    4949        }
    5050
     51        /**
     52         * This method removes the deprecated 'is_beta' property from the serialized data.
     53         * Should clean up the serialized data to avoid PHP 8.2 warning on next execution.
     54         *
     55         * @return void
     56         */
     57        function __wakeup() {
     58            if ( property_exists( $this, 'is_beta' ) ) {
     59                // If we enter here, and we are running PHP 8.2, we already had the warning. But we sanitize data for next execution.
     60                unset( $this->is_beta );
     61            }
     62        }
     63
    5164        function get_name() {
    5265            return trim( ucfirst( trim( is_string( $this->first ) ? $this->first : '' ) ) . ' ' . ucfirst( trim( is_string( $this->last ) ? $this->last : '' ) ) );
  • woo-product-reviews-shortcode/trunk/freemius/includes/managers/class-fs-admin-menu-manager.php

    r2419568 r3245272  
    700700            }
    701701
     702            $menu_slug   = $menu['menu'][2];
    702703            $parent_slug = isset( $menu['parent_slug'] ) ?
    703                 $menu['parent_slug'] :
    704                 'admin.php';
    705 
    706             return admin_url(
    707                 $parent_slug .
    708                 ( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
    709                 'page=' .
    710                 $menu['menu'][2]
    711             );
     704                $menu['parent_slug'] :
     705                'admin.php';
     706
     707            if ( fs_apply_filter( $this->_module_unique_affix, 'enable_cpt_advanced_menu_logic', false ) ) {
     708                $parent_slug = 'admin.php';
     709
     710                /**
     711                 * This line and the `if` block below it are based on the `menu_page_url()` function of WordPress.
     712                 *
     713                 * @author Leo Fajardo (@leorw)
     714                 * @since 2.10.2
     715                 */
     716                global $_parent_pages;
     717
     718                if ( ! empty( $_parent_pages[ $menu_slug ] ) ) {
     719                    $_parent_slug = $_parent_pages[ $menu_slug ];
     720                    $parent_slug  = isset( $_parent_pages[ $_parent_slug ] ) ?
     721                        $parent_slug :
     722                        $menu['parent_slug'];
     723                }
     724            }
     725
     726            return admin_url(
     727                $parent_slug .
     728                ( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
     729                'page=' .
     730                $menu_slug
     731            );
    712732        }
    713733
  • woo-product-reviews-shortcode/trunk/freemius/includes/managers/class-fs-admin-notice-manager.php

    r2881642 r3245272  
    195195         */
    196196        static function _add_sticky_dismiss_javascript() {
     197            $sticky_admin_notice_js_template_name = 'sticky-admin-notice-js.php';
     198
     199            if ( ! file_exists( fs_get_template_path( $sticky_admin_notice_js_template_name ) ) ) {
     200                return;
     201            }
     202
    197203            $params = array();
    198             fs_require_once_template( 'sticky-admin-notice-js.php', $params );
     204            fs_require_once_template( $sticky_admin_notice_js_template_name, $params );
    199205        }
    200206
  • woo-product-reviews-shortcode/trunk/freemius/includes/managers/class-fs-clone-manager.php

    r2881642 r3245272  
    334334
    335335            if ( ! isset( $this->all_installs ) ) {
    336                 $this->all_installs = Freemius::get_all_modules_sites();
     336                $this->all_installs = FS_DebugManager::get_all_modules_sites();
    337337            }
    338338
  • woo-product-reviews-shortcode/trunk/freemius/languages/freemius.pot

    r3082022 r3245272  
    99"Language-Team: Freemius Team <[email protected]>\n"
    1010"Last-Translator: Vova Feldman <[email protected]>\n"
    11 "POT-Creation-Date: 2024-04-22 10:16+0000\n"
     11"POT-Creation-Date: 2024-10-20 12:05+0000\n"
    1212"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
    1313"X-Poedit-Basepath: ..\n"
     
    1818"Plural-Forms: nplurals=2; plural=(n != 1);\n"
    1919
    20 #: includes/class-freemius.php:1781, templates/account.php:943
     20#: includes/class-freemius.php:1790, templates/account.php:943
    2121msgid "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."
    2222msgstr ""
    2323
    24 #: includes/class-freemius.php:1788
     24#: includes/class-freemius.php:1797
    2525msgid "Would you like to proceed with the update?"
    2626msgstr ""
    2727
    28 #: includes/class-freemius.php:2013
     28#: includes/class-freemius.php:2022
    2929msgid "Freemius SDK couldn't find the plugin's main file. Please contact [email protected] with the current error."
    3030msgstr ""
    3131
    32 #: includes/class-freemius.php:2015, includes/fs-plugin-info-dialog.php:1513
     32#: includes/class-freemius.php:2024, includes/fs-plugin-info-dialog.php:1513
    3333msgid "Error"
    3434msgstr ""
    3535
    36 #: includes/class-freemius.php:2461
     36#: includes/class-freemius.php:2470
    3737msgid "I found a better %s"
    3838msgstr ""
    3939
    40 #: includes/class-freemius.php:2463
     40#: includes/class-freemius.php:2472
    4141msgid "What's the %s's name?"
    4242msgstr ""
    4343
    44 #: includes/class-freemius.php:2469
     44#: includes/class-freemius.php:2478
    4545msgid "It's a temporary %s - I'm troubleshooting an issue"
    4646msgstr ""
    4747
    48 #: includes/class-freemius.php:2471
     48#: includes/class-freemius.php:2480
    4949msgid "Deactivation"
    5050msgstr ""
    5151
    52 #: includes/class-freemius.php:2472
     52#: includes/class-freemius.php:2481
    5353msgid "Theme Switch"
    5454msgstr ""
    5555
    56 #: includes/class-freemius.php:2481, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
     56#: includes/class-freemius.php:2490, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
    5757msgid "Other"
    5858msgstr ""
    5959
    60 #: includes/class-freemius.php:2489
     60#: includes/class-freemius.php:2498
    6161msgid "I no longer need the %s"
    6262msgstr ""
    6363
    64 #: includes/class-freemius.php:2496
     64#: includes/class-freemius.php:2505
    6565msgid "I only needed the %s for a short period"
    6666msgstr ""
    6767
    68 #: includes/class-freemius.php:2502
     68#: includes/class-freemius.php:2511
    6969msgid "The %s broke my site"
    7070msgstr ""
    7171
    72 #: includes/class-freemius.php:2509
     72#: includes/class-freemius.php:2518
    7373msgid "The %s suddenly stopped working"
    7474msgstr ""
    7575
    76 #: includes/class-freemius.php:2519
     76#: includes/class-freemius.php:2528
    7777msgid "I can't pay for it anymore"
    7878msgstr ""
    7979
    80 #: includes/class-freemius.php:2521
     80#: includes/class-freemius.php:2530
    8181msgid "What price would you feel comfortable paying?"
    8282msgstr ""
    8383
    84 #: includes/class-freemius.php:2527
     84#: includes/class-freemius.php:2536
    8585msgid "I don't like to share my information with you"
    8686msgstr ""
    8787
    88 #: includes/class-freemius.php:2548
     88#: includes/class-freemius.php:2557
    8989msgid "The %s didn't work"
    9090msgstr ""
    9191
    92 #: includes/class-freemius.php:2558
     92#: includes/class-freemius.php:2567
    9393msgid "I couldn't understand how to make it work"
    9494msgstr ""
    9595
    96 #: includes/class-freemius.php:2566
     96#: includes/class-freemius.php:2575
    9797msgid "The %s is great, but I need specific feature that you don't support"
    9898msgstr ""
    9999
    100 #: includes/class-freemius.php:2568
     100#: includes/class-freemius.php:2577
    101101msgid "What feature?"
    102102msgstr ""
    103103
    104 #: includes/class-freemius.php:2572
     104#: includes/class-freemius.php:2581
    105105msgid "The %s is not working"
    106106msgstr ""
    107107
    108 #: includes/class-freemius.php:2574
     108#: includes/class-freemius.php:2583
    109109msgid "Kindly share what didn't work so we can fix it for future users..."
    110110msgstr ""
    111111
    112 #: includes/class-freemius.php:2578
     112#: includes/class-freemius.php:2587
    113113msgid "It's not what I was looking for"
    114114msgstr ""
    115115
    116 #: includes/class-freemius.php:2580
     116#: includes/class-freemius.php:2589
    117117msgid "What you've been looking for?"
    118118msgstr ""
    119119
    120 #: includes/class-freemius.php:2584
     120#: includes/class-freemius.php:2593
    121121msgid "The %s didn't work as expected"
    122122msgstr ""
    123123
    124 #: includes/class-freemius.php:2586
     124#: includes/class-freemius.php:2595
    125125msgid "What did you expect?"
    126126msgstr ""
    127127
    128 #: includes/class-freemius.php:3685, templates/debug.php:24
    129 msgid "Freemius Debug"
    130 msgstr ""
    131 
    132128#. translators: %s: License type (e.g. you have a professional license)
    133 #: includes/class-freemius.php:4828
     129#: includes/class-freemius.php:4517
    134130msgid "You have purchased a %s license."
    135131msgstr ""
    136132
    137 #: includes/class-freemius.php:4832
     133#: includes/class-freemius.php:4521
    138134msgid " 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."
    139135msgstr ""
    140136
    141 #: includes/class-freemius.php:4842, includes/class-freemius.php:21174, includes/class-freemius.php:24859
     137#: includes/class-freemius.php:4531, includes/class-freemius.php:20889, includes/class-freemius.php:24610
    142138msgctxt "interjection expressing joy or exuberance"
    143139msgid "Yee-haw"
    144140msgstr ""
    145141
    146 #: includes/class-freemius.php:4856
     142#: includes/class-freemius.php:4545
    147143msgctxt "addonX cannot run without pluginY"
    148144msgid "%s cannot run without %s."
    149145msgstr ""
    150146
    151 #: includes/class-freemius.php:4857
     147#: includes/class-freemius.php:4546
    152148msgctxt "addonX cannot run..."
    153149msgid "%s cannot run without the plugin."
    154150msgstr ""
    155151
    156 #: includes/class-freemius.php:4859, includes/class-freemius.php:6051, includes/class-freemius.php:13828, includes/class-freemius.php:14575, includes/class-freemius.php:18330, includes/class-freemius.php:18443, includes/class-freemius.php:18620, includes/class-freemius.php:20905, includes/class-freemius.php:22020, includes/class-freemius.php:23036, includes/class-freemius.php:23166, includes/class-freemius.php:23309, templates/add-ons.php:57
     152#: includes/class-freemius.php:4548, includes/class-freemius.php:5745, includes/class-freemius.php:13477, includes/class-freemius.php:14228, includes/class-freemius.php:17997, includes/class-freemius.php:18117, includes/class-freemius.php:18294, includes/class-freemius.php:20620, includes/class-freemius.php:21736, includes/class-freemius.php:22772, includes/class-freemius.php:22902, includes/class-freemius.php:23045, templates/add-ons.php:57
    157153msgctxt "exclamation"
    158154msgid "Oops"
    159155msgstr ""
    160156
    161 #: includes/class-freemius.php:5138
     157#: includes/class-freemius.php:4827
    162158msgid "There was an unexpected API error while processing your request. Please try again in a few minutes and if it still doesn't work, contact the %s's author with the following:"
    163159msgstr ""
    164160
    165161#. translators: %s: License type (e.g. you have a professional license)
    166 #: includes/class-freemius.php:5743
     162#: includes/class-freemius.php:5437
    167163msgid "You have a %s license."
    168164msgstr ""
    169165
    170 #: includes/class-freemius.php:5716
     166#: includes/class-freemius.php:5410
    171167msgid "Premium %s version was successfully activated."
    172168msgstr ""
    173169
    174 #: includes/class-freemius.php:5728, includes/class-freemius.php:7765
     170#: includes/class-freemius.php:5422, includes/class-freemius.php:7434
    175171msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
    176172msgid "W00t"
    177173msgstr ""
    178174
    179 #: includes/class-freemius.php:6034
     175#: includes/class-freemius.php:5728
    180176msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
    181177msgstr ""
    182178
    183 #: includes/class-freemius.php:6038
     179#: includes/class-freemius.php:5732
    184180msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
    185181msgstr ""
    186182
    187 #: includes/class-freemius.php:6047, templates/add-ons.php:186, templates/account/partials/addon.php:386
     183#: includes/class-freemius.php:5741, templates/add-ons.php:186, templates/account/partials/addon.php:386
    188184msgid "More information about %s"
    189185msgstr ""
    190186
    191 #: includes/class-freemius.php:6048
     187#: includes/class-freemius.php:5742
    192188msgid "Purchase License"
    193189msgstr ""
    194190
    195191#. translators: %3$s: What the user is expected to receive via email (e.g.: "the installation instructions" or "a license key")
    196 #: includes/class-freemius.php:7053
     192#: includes/class-freemius.php:6747
    197193msgid "You should receive %3$s for %1$s to your mailbox at %2$s in the next 5 minutes."
    198194msgstr ""
    199195
    200 #: includes/class-freemius.php:7062
     196#: includes/class-freemius.php:6756
    201197msgctxt "Part of the message telling the user what they should receive via email."
    202198msgid "a license key"
     
    204200
    205201#. translators: %s: activation link (e.g.: <a>Click here</a>)
    206 #: includes/class-freemius.php:7070
     202#: includes/class-freemius.php:6764
    207203msgid "%s to activate the license once you get it."
    208204msgstr ""
    209205
    210 #: includes/class-freemius.php:7078
     206#: includes/class-freemius.php:6772
    211207msgctxt "Part of an activation link message."
    212208msgid "Click here"
    213209msgstr ""
    214210
    215 #: includes/class-freemius.php:7056
     211#: includes/class-freemius.php:6750
    216212msgctxt "Part of the message telling the user what they should receive via email."
    217213msgid "the installation instructions"
    218214msgstr ""
    219215
    220 #: includes/class-freemius.php:7085
     216#: includes/class-freemius.php:6779
    221217msgctxt "Part of the message that tells the user to check their spam folder for a specific email."
    222218msgid "the product's support email address"
    223219msgstr ""
    224220
    225 #: includes/class-freemius.php:7091
     221#: includes/class-freemius.php:6785
    226222msgid "If you didn't get the email, try checking your spam folder or search for emails from %4$s."
    227223msgstr ""
    228224
    229 #: includes/class-freemius.php:7093
     225#: includes/class-freemius.php:6787
    230226msgid "Thanks for upgrading."
    231227msgstr ""
    232228
    233 #: includes/class-freemius.php:7044
     229#: includes/class-freemius.php:6738
    234230msgid "You should receive a confirmation email for %1$s to your mailbox at %2$s. Please make sure you click the button in that email to %3$s."
    235231msgstr ""
    236232
    237 #: includes/class-freemius.php:7047
     233#: includes/class-freemius.php:6741
    238234msgid "start the trial"
    239235msgstr ""
    240236
    241 #: includes/class-freemius.php:7048, templates/connect.php:209
     237#: includes/class-freemius.php:6742, templates/connect.php:208
    242238msgid "complete the opt-in"
    243239msgstr ""
    244240
    245 #: includes/class-freemius.php:7050
     241#: includes/class-freemius.php:6744
    246242msgid "Thanks!"
    247243msgstr ""
    248244
    249 #: includes/class-freemius.php:7229
     245#: includes/class-freemius.php:6923
    250246msgid "You are just one step away - %s"
    251247msgstr ""
    252248
    253 #: includes/class-freemius.php:7232
     249#: includes/class-freemius.php:6926
    254250msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
    255251msgid "Complete \"%s\" Activation Now"
    256252msgstr ""
    257253
    258 #: includes/class-freemius.php:7314
     254#: includes/class-freemius.php:7008
    259255msgid "We made a few tweaks to the %s, %s"
    260256msgstr ""
    261257
    262 #: includes/class-freemius.php:7318
     258#: includes/class-freemius.php:7012
    263259msgid "Opt in to make \"%s\" better!"
    264260msgstr ""
    265261
    266 #: includes/class-freemius.php:7764
     262#: includes/class-freemius.php:7433
    267263msgid "The upgrade of %s was successfully completed."
    268264msgstr ""
    269265
    270 #: includes/class-freemius.php:10527, includes/class-fs-plugin-updater.php:1097, includes/class-fs-plugin-updater.php:1319, includes/class-fs-plugin-updater.php:1312, templates/auto-installation.php:32
     266#: includes/class-freemius.php:10196, includes/class-fs-plugin-updater.php:1142, includes/class-fs-plugin-updater.php:1364, includes/class-fs-plugin-updater.php:1357, templates/auto-installation.php:32
    271267msgid "Add-On"
    272268msgstr ""
    273269
    274 #: includes/class-freemius.php:10529, templates/account.php:407, templates/account.php:415, templates/debug.php:399, templates/debug.php:619
     270#: includes/class-freemius.php:10198, templates/account.php:407, templates/account.php:415, templates/debug.php:458, templates/debug.php:678
    275271msgid "Plugin"
    276272msgstr ""
    277273
    278 #: includes/class-freemius.php:10530, templates/account.php:408, templates/account.php:416, templates/debug.php:399, templates/debug.php:619, templates/forms/deactivation/form.php:107
     274#: includes/class-freemius.php:10199, templates/account.php:408, templates/account.php:416, templates/debug.php:458, templates/debug.php:678, templates/forms/deactivation/form.php:107
    279275msgid "Theme"
    280276msgstr ""
    281277
    282 #: includes/class-freemius.php:13635
     278#: includes/class-freemius.php:13284
    283279msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
    284280msgstr ""
    285281
    286 #: includes/class-freemius.php:13649
     282#: includes/class-freemius.php:13298
    287283msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
    288284msgstr ""
    289285
    290 #: includes/class-freemius.php:13654, templates/account/partials/disconnect-button.php:84
     286#: includes/class-freemius.php:13303, templates/account/partials/disconnect-button.php:84
    291287msgid "User Dashboard"
    292288msgstr ""
    293289
    294 #: includes/class-freemius.php:13655
     290#: includes/class-freemius.php:13304
    295291msgid "revert it now"
    296292msgstr ""
    297293
    298 #: includes/class-freemius.php:13713
     294#: includes/class-freemius.php:13362
    299295msgid "An unknown error has occurred while trying to set the user's beta mode."
    300296msgstr ""
    301297
    302 #: includes/class-freemius.php:13799
     298#: includes/class-freemius.php:13448
    303299msgid "Invalid new user ID or email address."
    304300msgstr ""
    305301
    306 #: includes/class-freemius.php:13829
     302#: includes/class-freemius.php:13478
    307303msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
    308304msgstr ""
    309305
    310 #: includes/class-freemius.php:13830
     306#: includes/class-freemius.php:13479
    311307msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
    312308msgstr ""
    313309
    314 #: includes/class-freemius.php:13837
     310#: includes/class-freemius.php:13486
    315311msgid "Change Ownership"
    316312msgstr ""
    317313
    318 #: includes/class-freemius.php:14442
     314#: includes/class-freemius.php:14095
    319315msgid "Invalid site details collection."
    320316msgstr ""
    321317
    322 #: includes/class-freemius.php:14564
     318#: includes/class-freemius.php:14217
    323319msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
    324320msgstr ""
    325321
    326 #: includes/class-freemius.php:14562
     322#: includes/class-freemius.php:14215
    327323msgid "We couldn't find your email address in the system, are you sure it's the right address?"
    328324msgstr ""
    329325
    330 #: includes/class-freemius.php:14868
     326#: includes/class-freemius.php:14521
    331327msgid "Account is pending activation. Please check your email and click the link to activate your account and then submit the affiliate form again."
    332328msgstr ""
    333329
    334 #: includes/class-freemius.php:14994, templates/forms/premium-versions-upgrade-handler.php:46
     330#: includes/class-freemius.php:14647, templates/forms/premium-versions-upgrade-handler.php:46
    335331msgid "Renew your license now"
    336332msgstr ""
    337333
    338 #: includes/class-freemius.php:14982, templates/forms/premium-versions-upgrade-handler.php:47
     334#: includes/class-freemius.php:14635, templates/forms/premium-versions-upgrade-handler.php:47
    339335msgid "Buy a license now"
    340336msgstr ""
    341337
    342 #: includes/class-freemius.php:14998
     338#: includes/class-freemius.php:14651
    343339msgid "%s to access version %s security & feature updates, and support."
    344340msgstr ""
    345341
    346 #: includes/class-freemius.php:17670
     342#: includes/class-freemius.php:17337
    347343msgid "%s opt-in was successfully completed."
    348344msgstr ""
    349345
    350 #: includes/class-freemius.php:17694, includes/class-freemius.php:21631
     346#: includes/class-freemius.php:17361, includes/class-freemius.php:21346
    351347msgid "Your trial has been successfully started."
    352348msgstr ""
    353349
    354 #: includes/class-freemius.php:17684
     350#: includes/class-freemius.php:17351
    355351msgid "Your account was successfully activated with the %s plan."
    356352msgstr ""
    357353
    358 #: includes/class-freemius.php:18328, includes/class-freemius.php:18441, includes/class-freemius.php:18618
     354#: includes/class-freemius.php:17995, includes/class-freemius.php:18115, includes/class-freemius.php:18292
    359355msgid "Couldn't activate %s."
    360356msgstr ""
    361357
    362 #: includes/class-freemius.php:18329, includes/class-freemius.php:18442, includes/class-freemius.php:18619
     358#: includes/class-freemius.php:17996, includes/class-freemius.php:18116, includes/class-freemius.php:18293
    363359msgid "Please contact us with the following message:"
    364360msgstr ""
    365361
    366 #: includes/class-freemius.php:18438, templates/forms/data-debug-mode.php:162
     362#: includes/class-freemius.php:18112, templates/forms/data-debug-mode.php:162
    367363msgid "An unknown error has occurred."
    368364msgstr ""
    369365
    370 #: includes/class-freemius.php:18980, includes/class-freemius.php:24415
     366#: includes/class-freemius.php:18654, includes/class-freemius.php:24166
    371367msgid "Upgrade"
    372368msgstr ""
    373369
    374 #: includes/class-freemius.php:18988
     370#: includes/class-freemius.php:18662
    375371msgid "Pricing"
    376372msgstr ""
    377373
    378 #: includes/class-freemius.php:18986
     374#: includes/class-freemius.php:18660
    379375msgid "Start Trial"
    380376msgstr ""
    381377
    382 #: includes/class-freemius.php:19068, includes/class-freemius.php:19070
     378#: includes/class-freemius.php:18742, includes/class-freemius.php:18744
    383379msgid "Affiliation"
    384380msgstr ""
    385381
    386 #: includes/class-freemius.php:19098, includes/class-freemius.php:19100, templates/account.php:260, templates/debug.php:366
     382#: includes/class-freemius.php:18772, includes/class-freemius.php:18774, templates/account.php:260, templates/debug.php:425
    387383msgid "Account"
    388384msgstr ""
    389385
    390 #: includes/class-freemius.php:19114, includes/class-freemius.php:19116, includes/customizer/class-fs-customizer-support-section.php:60
     386#: includes/class-freemius.php:18800, includes/class-freemius.php:18789, includes/class-freemius.php:18791, includes/customizer/class-fs-customizer-support-section.php:60
    391387msgid "Contact Us"
    392388msgstr ""
    393389
    394 #: includes/class-freemius.php:19127, includes/class-freemius.php:19129, includes/class-freemius.php:24429, templates/account.php:130, templates/account/partials/addon.php:49
     390#: includes/class-freemius.php:18814, includes/class-freemius.php:18816, includes/class-freemius.php:24180, templates/account.php:130, templates/account/partials/addon.php:49
    395391msgid "Add-Ons"
    396392msgstr ""
    397393
    398 #: includes/class-freemius.php:19163
     394#: includes/class-freemius.php:18849
    399395msgctxt "ASCII arrow left icon"
    400396msgid "&#x2190;"
    401397msgstr ""
    402398
    403 #: includes/class-freemius.php:19163
     399#: includes/class-freemius.php:18849
    404400msgctxt "ASCII arrow right icon"
    405401msgid "&#x27a4;"
    406402msgstr ""
    407403
    408 #: includes/class-freemius.php:19165, templates/pricing.php:110
     404#: includes/class-freemius.php:18867
    409405msgctxt "noun"
    410406msgid "Pricing"
    411407msgstr ""
    412408
    413 #: includes/class-freemius.php:19378, includes/customizer/class-fs-customizer-support-section.php:67
     409#: includes/class-freemius.php:19083, includes/customizer/class-fs-customizer-support-section.php:67
    414410msgid "Support Forum"
    415411msgstr ""
    416412
    417 #: includes/class-freemius.php:20399
     413#: includes/class-freemius.php:20114
    418414msgid "Your email has been successfully verified - you are AWESOME!"
    419415msgstr ""
    420416
    421 #: includes/class-freemius.php:20400
     417#: includes/class-freemius.php:20115
    422418msgctxt "a positive response"
    423419msgid "Right on"
    424420msgstr ""
    425421
    426 #: includes/class-freemius.php:20906
     422#: includes/class-freemius.php:20621
    427423msgid "seems like the key you entered doesn't match our records."
    428424msgstr ""
    429425
    430 #: includes/class-freemius.php:20930
     426#: includes/class-freemius.php:20645
    431427msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
    432428msgstr ""
    433429
    434 #: includes/class-freemius.php:21165
     430#: includes/class-freemius.php:20880
    435431msgid "Your %s Add-on plan was successfully upgraded."
    436432msgstr ""
    437433
    438434#. translators: %s:product name, e.g. Facebook add-on was successfully...
    439 #: includes/class-freemius.php:21167
     435#: includes/class-freemius.php:20882
    440436msgid "%s Add-on was successfully purchased."
    441437msgstr ""
    442438
    443 #: includes/class-freemius.php:21170
     439#: includes/class-freemius.php:20885
    444440msgid "Download the latest version"
    445441msgstr ""
    446442
    447 #: includes/class-freemius.php:21288
     443#: includes/class-freemius.php:21003
    448444msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
    449445msgstr ""
    450446
    451 #: includes/class-freemius.php:21288, includes/class-freemius.php:21701, includes/class-freemius.php:21802, includes/class-freemius.php:21889
     447#: includes/class-freemius.php:21003, includes/class-freemius.php:21416, includes/class-freemius.php:21517, includes/class-freemius.php:21604
    452448msgid "Error received from the server:"
    453449msgstr ""
    454450
    455 #: includes/class-freemius.php:21529, includes/class-freemius.php:21807, includes/class-freemius.php:21860, includes/class-freemius.php:21967
     451#: includes/class-freemius.php:21244, includes/class-freemius.php:21522, includes/class-freemius.php:21575, includes/class-freemius.php:21682
    456452msgctxt "something somebody says when they are thinking about what you have just said."
    457453msgid "Hmm"
    458454msgstr ""
    459455
    460 #: includes/class-freemius.php:21542
     456#: includes/class-freemius.php:21257
    461457msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
    462458msgstr ""
    463459
    464 #: includes/class-freemius.php:21543, templates/account.php:132, templates/add-ons.php:250, templates/account/partials/addon.php:51
     460#: includes/class-freemius.php:21258, templates/account.php:132, templates/add-ons.php:250, templates/account/partials/addon.php:51
    465461msgctxt "trial period"
    466462msgid "Trial"
    467463msgstr ""
    468464
    469 #: includes/class-freemius.php:21548
     465#: includes/class-freemius.php:21263
    470466msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
    471467msgstr ""
    472468
    473 #: includes/class-freemius.php:21552, includes/class-freemius.php:21610
     469#: includes/class-freemius.php:21267, includes/class-freemius.php:21325
    474470msgid "Please contact us here"
    475471msgstr ""
    476472
    477 #: includes/class-freemius.php:21580
     473#: includes/class-freemius.php:21295
    478474msgid "Your plan was successfully changed to %s."
    479475msgstr ""
    480476
    481 #: includes/class-freemius.php:21596
     477#: includes/class-freemius.php:21311
    482478msgid "Your license has expired. You can still continue using the free %s forever."
    483479msgstr ""
    484480
    485481#. translators: %1$s: product title; %2$s, %3$s: wrapping HTML anchor element; %4$s: 'plugin', 'theme', or 'add-on'.
    486 #: includes/class-freemius.php:21598
     482#: includes/class-freemius.php:21313
    487483msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
    488484msgstr ""
    489485
    490 #: includes/class-freemius.php:21606
     486#: includes/class-freemius.php:21321
    491487msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
    492488msgstr ""
    493489
    494 #: includes/class-freemius.php:21619
     490#: includes/class-freemius.php:21334
    495491msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
    496492msgstr ""
    497493
    498 #: includes/class-freemius.php:21645
     494#: includes/class-freemius.php:21360
    499495msgid "Your free trial has expired. You can still continue using all our free features."
    500496msgstr ""
    501497
    502498#. translators: %1$s: product title; %2$s, %3$s: wrapping HTML anchor element; %4$s: 'plugin', 'theme', or 'add-on'.
    503 #: includes/class-freemius.php:21647
     499#: includes/class-freemius.php:21362
    504500msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
    505501msgstr ""
    506502
    507 #: includes/class-freemius.php:21693
     503#: includes/class-freemius.php:21408
    508504msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist the following domains:%2$s"
    509505msgstr ""
    510506
    511 #: includes/class-freemius.php:21695
     507#: includes/class-freemius.php:21410
    512508msgid "Show error details"
    513509msgstr ""
    514510
    515 #: includes/class-freemius.php:21798
     511#: includes/class-freemius.php:21513
    516512msgid "It looks like the license could not be activated."
    517513msgstr ""
    518514
    519 #: includes/class-freemius.php:21840
     515#: includes/class-freemius.php:21555
    520516msgid "Your license was successfully activated."
    521517msgstr ""
    522518
    523 #: includes/class-freemius.php:21864
     519#: includes/class-freemius.php:21579
    524520msgid "It looks like your site currently doesn't have an active license."
    525521msgstr ""
    526522
    527 #: includes/class-freemius.php:21888
     523#: includes/class-freemius.php:21603
    528524msgid "It looks like the license deactivation failed."
    529525msgstr ""
    530526
    531 #: includes/class-freemius.php:21917
     527#: includes/class-freemius.php:21632
    532528msgid "Your %s license was successfully deactivated."
    533529msgstr ""
    534530
    535 #: includes/class-freemius.php:21918
     531#: includes/class-freemius.php:21633
    536532msgid "Your license was successfully deactivated, you are back to the %s plan."
    537533msgstr ""
    538534
    539 #: includes/class-freemius.php:21921
     535#: includes/class-freemius.php:21636
    540536msgid "O.K"
    541537msgstr ""
    542538
    543 #: includes/class-freemius.php:21974
     539#: includes/class-freemius.php:21689
    544540msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
    545541msgstr ""
    546542
    547 #: includes/class-freemius.php:21983
     543#: includes/class-freemius.php:21698
    548544msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
    549545msgstr ""
    550546
    551 #: includes/class-freemius.php:22025
     547#: includes/class-freemius.php:21741
    552548msgid "You are already running the %s in a trial mode."
    553549msgstr ""
    554550
    555 #: includes/class-freemius.php:22036
     551#: includes/class-freemius.php:21753
    556552msgid "You already utilized a trial before."
    557553msgstr ""
    558554
    559 #: includes/class-freemius.php:22072
     555#: includes/class-freemius.php:21792
    560556msgid "None of the %s's plans supports a trial period."
    561557msgstr ""
    562558
    563 #: includes/class-freemius.php:22050
     559#: includes/class-freemius.php:21768
    564560msgid "Plan %s do not exist, therefore, can't start a trial."
    565561msgstr ""
    566562
    567 #: includes/class-freemius.php:22061
     563#: includes/class-freemius.php:21780
    568564msgid "Plan %s does not support a trial period."
    569565msgstr ""
    570566
    571 #: includes/class-freemius.php:22121
     567#: includes/class-freemius.php:21854
    572568msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
    573569msgstr ""
    574570
    575 #: includes/class-freemius.php:22157
     571#: includes/class-freemius.php:21890
    576572msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
    577573msgstr ""
    578574
    579 #: includes/class-freemius.php:22176
     575#: includes/class-freemius.php:21909
    580576msgid "Your %s free trial was successfully cancelled."
    581577msgstr ""
    582578
    583 #: includes/class-freemius.php:22520
     579#: includes/class-freemius.php:22256
    584580msgid "Seems like you got the latest release."
    585581msgstr ""
    586582
    587 #: includes/class-freemius.php:22521
     583#: includes/class-freemius.php:22257
    588584msgid "You are all good!"
    589585msgstr ""
    590586
    591 #: includes/class-freemius.php:22503
     587#: includes/class-freemius.php:22239
    592588msgid "Version %s was released."
    593589msgstr ""
    594590
    595 #: includes/class-freemius.php:22503
     591#: includes/class-freemius.php:22239
    596592msgid "Please download %s."
    597593msgstr ""
    598594
    599 #: includes/class-freemius.php:22510
     595#: includes/class-freemius.php:22246
    600596msgid "the latest %s version here"
    601597msgstr ""
    602598
    603 #: includes/class-freemius.php:22515
     599#: includes/class-freemius.php:22251
    604600msgid "New"
    605601msgstr ""
    606602
    607 #: includes/class-freemius.php:22924
     603#: includes/class-freemius.php:22660
    608604msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
    609605msgstr ""
    610606
    611 #: includes/class-freemius.php:23064
     607#: includes/class-freemius.php:22800
    612608msgid "Site successfully opted in."
    613609msgstr ""
    614610
    615 #: includes/class-freemius.php:23065, includes/class-freemius.php:24125
     611#: includes/class-freemius.php:22801, includes/class-freemius.php:23876
    616612msgid "Awesome"
    617613msgstr ""
    618614
    619 #: includes/class-freemius.php:23091
     615#: includes/class-freemius.php:22827
    620616msgid "Diagnostic data will no longer be sent from %s to %s."
    621617msgstr ""
    622618
    623 #: includes/class-freemius.php:23081
     619#: includes/class-freemius.php:22817
    624620msgid "Sharing diagnostic data with %s helps to provide functionality that's more relevant to your website, avoid WordPress or PHP version incompatibilities that can break your website, and recognize which languages & regions the plugin should be translated and tailored to."
    625621msgstr ""
    626622
    627 #: includes/class-freemius.php:23082
     623#: includes/class-freemius.php:22818
    628624msgid "Thank you!"
    629625msgstr ""
    630626
    631 #: includes/class-freemius.php:23251
     627#: includes/class-freemius.php:22987
    632628msgid "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."
    633629msgstr ""
    634630
    635 #: includes/class-freemius.php:23249
     631#: includes/class-freemius.php:22985
    636632msgid "A confirmation email was just sent to %s. The email owner must confirm the update within the next 4 hours."
    637633msgstr ""
    638634
    639 #: includes/class-freemius.php:23263
     635#: includes/class-freemius.php:22999
    640636msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
    641637msgstr ""
    642638
    643 #: includes/class-freemius.php:23269
     639#: includes/class-freemius.php:23005
    644640msgid "%s is the new owner of the account."
    645641msgstr ""
    646642
    647 #: includes/class-freemius.php:23271
     643#: includes/class-freemius.php:23007
    648644msgctxt "as congratulations"
    649645msgid "Congrats"
    650646msgstr ""
    651647
    652 #: includes/class-freemius.php:23293
     648#: includes/class-freemius.php:23029
    653649msgid "Your name was successfully updated."
    654650msgstr ""
    655651
    656 #: includes/class-freemius.php:23288
     652#: includes/class-freemius.php:23024
    657653msgid "Please provide your full name."
    658654msgstr ""
    659655
    660656#. translators: %s: User's account property (e.g. email address, name)
    661 #: includes/class-freemius.php:23358
     657#: includes/class-freemius.php:23094
    662658msgid "You have successfully updated your %s."
    663659msgstr ""
    664660
    665 #: includes/class-freemius.php:23422
     661#: includes/class-freemius.php:23158
    666662msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
    667663msgstr ""
    668664
    669 #: includes/class-freemius.php:23425
     665#: includes/class-freemius.php:23161
    670666msgid "Click here"
    671667msgstr ""
    672668
    673 #: includes/class-freemius.php:23462
     669#: includes/class-freemius.php:23198
    674670msgid "Bundle"
    675671msgstr ""
    676672
    677 #: includes/class-freemius.php:23535
     673#: includes/class-freemius.php:23271
    678674msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
    679675msgstr ""
    680676
    681 #: includes/class-freemius.php:23536
     677#: includes/class-freemius.php:23272
    682678msgctxt "advance notice of something that will need attention."
    683679msgid "Heads up"
    684680msgstr ""
    685681
    686 #: includes/class-freemius.php:24165
     682#: includes/class-freemius.php:23916
    687683msgctxt "exclamation"
    688684msgid "Hey"
    689685msgstr ""
    690686
    691 #: includes/class-freemius.php:24165
     687#: includes/class-freemius.php:23916
    692688msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
    693689msgstr ""
    694690
    695 #: includes/class-freemius.php:24173
     691#: includes/class-freemius.php:23924
    696692msgid "No commitment for %s days - cancel anytime!"
    697693msgstr ""
    698694
    699 #: includes/class-freemius.php:24174
     695#: includes/class-freemius.php:23925
    700696msgid "No credit card required"
    701697msgstr ""
    702698
    703 #: includes/class-freemius.php:24181, templates/forms/trial-start.php:53
     699#: includes/class-freemius.php:23932, templates/forms/trial-start.php:53
    704700msgctxt "call to action"
    705701msgid "Start free trial"
    706702msgstr ""
    707703
    708 #: includes/class-freemius.php:24258
     704#: includes/class-freemius.php:24009
    709705msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
    710706msgstr ""
    711707
    712 #: includes/class-freemius.php:24267
     708#: includes/class-freemius.php:24018
    713709msgid "Learn more"
    714710msgstr ""
    715711
    716 #: includes/class-freemius.php:24453, templates/account.php:569, templates/account.php:721, templates/connect.php:212, templates/connect.php:440, includes/managers/class-fs-clone-manager.php:1295, templates/forms/license-activation.php:27, templates/account/partials/addon.php:326
     712#: includes/class-freemius.php:24204, templates/account.php:569, templates/account.php:721, templates/connect.php:211, templates/connect.php:439, includes/managers/class-fs-clone-manager.php:1295, templates/forms/license-activation.php:27, templates/account/partials/addon.php:326
    717713msgid "Activate License"
    718714msgstr ""
    719715
    720 #: includes/class-freemius.php:24454, templates/account.php:663, templates/account.php:720, templates/account/partials/addon.php:327, templates/account/partials/site.php:273
     716#: includes/class-freemius.php:24205, templates/account.php:663, templates/account.php:720, templates/account/partials/addon.php:327, templates/account/partials/site.php:273
    721717msgid "Change License"
    722718msgstr ""
    723719
    724 #: includes/class-freemius.php:24569, includes/class-freemius.php:24563, templates/account/partials/site.php:49, templates/account/partials/site.php:170
     720#: includes/class-freemius.php:24320, includes/class-freemius.php:24314, templates/account/partials/site.php:49, templates/account/partials/site.php:170
    725721msgid "Opt In"
    726722msgstr ""
    727723
    728 #: includes/class-freemius.php:24561, templates/account/partials/site.php:170
     724#: includes/class-freemius.php:24312, templates/account/partials/site.php:170
    729725msgid "Opt Out"
    730726msgstr ""
    731727
    732 #: includes/class-freemius.php:24827
     728#: includes/class-freemius.php:24578
    733729msgid "Please follow these steps to complete the upgrade"
    734730msgstr ""
    735731
    736732#. translators: %s: Plan title
    737 #: includes/class-freemius.php:24831
     733#: includes/class-freemius.php:24582
    738734msgid "Download the latest %s version"
    739735msgstr ""
    740736
    741 #: includes/class-freemius.php:24835
     737#: includes/class-freemius.php:24586
    742738msgid "Upload and activate the downloaded version"
    743739msgstr ""
    744740
    745 #: includes/class-freemius.php:24837
     741#: includes/class-freemius.php:24588
    746742msgid "How to upload and activate?"
    747743msgstr ""
    748744
    749 #: includes/class-freemius.php:24804
     745#: includes/class-freemius.php:24555
    750746msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
    751747msgstr ""
    752748
    753 #: includes/class-freemius.php:24814
     749#: includes/class-freemius.php:24565
    754750msgid "Activate %s features"
    755751msgstr ""
    756752
    757 #: includes/class-freemius.php:24872
     753#: includes/class-freemius.php:24623
    758754msgid "Your plan was successfully upgraded."
    759755msgstr ""
    760756
    761 #: includes/class-freemius.php:24873
     757#: includes/class-freemius.php:24624
    762758msgid "Your plan was successfully activated."
    763759msgstr ""
    764760
    765 #: includes/class-freemius.php:25003
     761#: includes/class-freemius.php:24733
    766762msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
    767763msgstr ""
    768764
    769 #: includes/class-freemius.php:25172
     765#: includes/class-freemius.php:24902
    770766msgid "Auto installation only works for opted-in users."
    771767msgstr ""
    772768
    773 #: includes/class-freemius.php:25182, includes/class-freemius.php:25215, includes/class-fs-plugin-updater.php:1291, includes/class-fs-plugin-updater.php:1305
     769#: includes/class-freemius.php:24912, includes/class-freemius.php:24945, includes/class-fs-plugin-updater.php:1336, includes/class-fs-plugin-updater.php:1350
    774770msgid "Invalid module ID."
    775771msgstr ""
    776772
    777 #: includes/class-freemius.php:25223, includes/class-fs-plugin-updater.php:1326
     773#: includes/class-freemius.php:24953, includes/class-fs-plugin-updater.php:1371
    778774msgid "Premium add-on version already installed."
    779775msgstr ""
    780776
    781 #: includes/class-freemius.php:25191, includes/class-fs-plugin-updater.php:1327
     777#: includes/class-freemius.php:24921, includes/class-fs-plugin-updater.php:1372
    782778msgid "Premium version already active."
    783779msgstr ""
    784780
    785 #: includes/class-freemius.php:25198
     781#: includes/class-freemius.php:24928
    786782msgid "You do not have a valid license to access the premium version."
    787783msgstr ""
    788784
    789 #: includes/class-freemius.php:25205
     785#: includes/class-freemius.php:24935
    790786msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
    791787msgstr ""
    792788
    793 #: includes/class-freemius.php:25583
     789#: includes/class-freemius.php:25313
    794790msgid "View paid features"
    795791msgstr ""
    796792
    797 #: includes/class-freemius.php:25898
     793#: includes/class-freemius.php:25628
    798794msgid "Thank you so much for using our products!"
    799795msgstr ""
    800796
    801 #: includes/class-freemius.php:25899
     797#: includes/class-freemius.php:25629
    802798msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
    803799msgstr ""
    804800
    805 #: includes/class-freemius.php:25918
     801#: includes/class-freemius.php:25648
    806802msgid "%s and its add-ons"
    807803msgstr ""
    808804
    809 #: includes/class-freemius.php:25927
     805#: includes/class-freemius.php:25657
    810806msgid "Products"
    811807msgstr ""
    812808
    813 #: includes/class-freemius.php:25887
     809#: includes/class-freemius.php:25617
    814810msgid "Thank you so much for using %s and its add-ons!"
    815811msgstr ""
    816812
    817 #: includes/class-freemius.php:25888
     813#: includes/class-freemius.php:25618
    818814msgid "Thank you so much for using %s!"
    819815msgstr ""
    820816
    821 #: includes/class-freemius.php:25894
     817#: includes/class-freemius.php:25624
    822818msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
    823819msgstr ""
    824820
    825 #: includes/class-freemius.php:25934, templates/connect.php:313
     821#: includes/class-freemius.php:25664, templates/connect.php:312
    826822msgid "Yes"
    827823msgstr ""
    828824
    829 #: includes/class-freemius.php:25935, templates/connect.php:314
     825#: includes/class-freemius.php:25665, templates/connect.php:313
    830826msgid "send me security & feature updates, educational content and offers."
    831827msgstr ""
    832828
    833 #: includes/class-freemius.php:25936, templates/connect.php:319
     829#: includes/class-freemius.php:25666, templates/connect.php:318
    834830msgid "No"
    835831msgstr ""
    836832
    837 #: includes/class-freemius.php:25938, templates/connect.php:321
     833#: includes/class-freemius.php:25668, templates/connect.php:320
    838834msgid "do %sNOT%s send me security & feature updates, educational content and offers."
    839835msgstr ""
    840836
    841 #: includes/class-freemius.php:25948
     837#: includes/class-freemius.php:25678
    842838msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
    843839msgstr ""
    844840
    845 #: includes/class-freemius.php:25950, templates/connect.php:328
     841#: includes/class-freemius.php:25680, templates/connect.php:327
    846842msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
    847843msgstr ""
    848844
    849 #: includes/class-freemius.php:26240
     845#: includes/class-freemius.php:25970
    850846msgid "License key is empty."
    851847msgstr ""
    852848
    853 #: includes/class-fs-plugin-updater.php:212, templates/forms/premium-versions-upgrade-handler.php:57
     849#: includes/class-fs-plugin-updater.php:247, templates/forms/premium-versions-upgrade-handler.php:57
    854850msgid "Renew license"
    855851msgstr ""
    856852
    857 #: includes/class-fs-plugin-updater.php:217, templates/forms/premium-versions-upgrade-handler.php:58
     853#: includes/class-fs-plugin-updater.php:252, templates/forms/premium-versions-upgrade-handler.php:58
    858854msgid "Buy license"
    859855msgstr ""
    860856
    861 #: includes/class-fs-plugin-updater.php:370, includes/class-fs-plugin-updater.php:337
     857#: includes/class-fs-plugin-updater.php:405, includes/class-fs-plugin-updater.php:372
    862858msgid "There is a %s of %s available."
    863859msgstr ""
    864860
    865 #: includes/class-fs-plugin-updater.php:375, includes/class-fs-plugin-updater.php:339
     861#: includes/class-fs-plugin-updater.php:410, includes/class-fs-plugin-updater.php:374
    866862msgid "new Beta version"
    867863msgstr ""
    868864
    869 #: includes/class-fs-plugin-updater.php:376, includes/class-fs-plugin-updater.php:340
     865#: includes/class-fs-plugin-updater.php:411, includes/class-fs-plugin-updater.php:375
    870866msgid "new version"
    871867msgstr ""
    872868
    873 #: includes/class-fs-plugin-updater.php:399
     869#: includes/class-fs-plugin-updater.php:434
    874870msgid "Important Upgrade Notice:"
    875871msgstr ""
    876872
    877 #: includes/class-fs-plugin-updater.php:1356
     873#: includes/class-fs-plugin-updater.php:1401
    878874msgid "Installing plugin: %s"
    879875msgstr ""
    880876
    881 #: includes/class-fs-plugin-updater.php:1397
     877#: includes/class-fs-plugin-updater.php:1442
    882878msgid "Unable to connect to the filesystem. Please confirm your credentials."
    883879msgstr ""
    884880
    885 #: includes/class-fs-plugin-updater.php:1579
     881#: includes/class-fs-plugin-updater.php:1624
    886882msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
    887883msgstr ""
     
    931927msgstr ""
    932928
    933 #: includes/fs-plugin-info-dialog.php:790, templates/connect.php:437
     929#: includes/fs-plugin-info-dialog.php:790, templates/connect.php:436
    934930msgid "Activate Free Version"
    935931msgstr ""
     
    10651061msgstr ""
    10661062
    1067 #: includes/fs-plugin-info-dialog.php:1315, templates/account.php:121, templates/debug.php:232, templates/debug.php:269, templates/debug.php:518, templates/account/partials/addon.php:41
     1063#: includes/fs-plugin-info-dialog.php:1315, templates/account.php:121, templates/debug.php:291, templates/debug.php:328, templates/debug.php:577, templates/account/partials/addon.php:41
    10681064msgctxt "product version"
    10691065msgid "Version"
     
    12811277msgstr ""
    12821278
    1283 #: templates/account.php:135, templates/debug.php:412, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:54
     1279#: templates/account.php:135, templates/debug.php:471, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:54
    12841280msgctxt "as product pricing plan"
    12851281msgid "Plan"
     
    13271323msgstr ""
    13281324
    1329 #: templates/account.php:385, templates/debug.php:575
     1325#: templates/account.php:385, templates/debug.php:634
    13301326msgid "Name"
    13311327msgstr ""
    13321328
    1333 #: templates/account.php:391, templates/debug.php:576
     1329#: templates/account.php:391, templates/debug.php:635
    13341330msgid "Email"
    13351331msgstr ""
    13361332
    1337 #: templates/account.php:398, templates/debug.php:410, templates/debug.php:625
     1333#: templates/account.php:398, templates/debug.php:469, templates/debug.php:684
    13381334msgid "User ID"
    13391335msgstr ""
    13401336
    1341 #: templates/account.php:416, templates/account.php:734, templates/account.php:785, templates/debug.php:267, templates/debug.php:404, templates/debug.php:515, templates/debug.php:574, templates/debug.php:623, templates/debug.php:702, templates/account/payments.php:35, templates/debug/logger.php:21
     1337#: templates/account.php:416, templates/account.php:734, templates/account.php:785, templates/debug.php:326, templates/debug.php:463, templates/debug.php:574, templates/debug.php:633, templates/debug.php:682, templates/debug.php:761, templates/account/payments.php:35, templates/debug/logger.php:21
    13421338msgid "ID"
    13431339msgstr ""
     
    13511347msgstr ""
    13521348
    1353 #: templates/account.php:431, templates/debug.php:274, templates/debug.php:413, templates/debug.php:519, templates/debug.php:578, templates/account/partials/site.php:228
     1349#: templates/account.php:431, templates/debug.php:333, templates/debug.php:472, templates/debug.php:578, templates/debug.php:637, templates/account/partials/site.php:228
    13541350msgid "Public Key"
    13551351msgstr ""
    13561352
    1357 #: templates/account.php:437, templates/debug.php:414, templates/debug.php:520, templates/debug.php:579, templates/account/partials/site.php:241
     1353#: templates/account.php:437, templates/debug.php:473, templates/debug.php:579, templates/debug.php:638, templates/account/partials/site.php:241
    13581354msgid "Secret Key"
    13591355msgstr ""
     
    13641360msgstr ""
    13651361
    1366 #: templates/account.php:494, templates/debug.php:631, templates/account/partials/site.php:262
     1362#: templates/account.php:494, templates/debug.php:690, templates/account/partials/site.php:262
    13671363msgid "License Key"
    13681364msgstr ""
     
    14301426msgstr ""
    14311427
    1432 #: templates/account.php:735, templates/debug.php:407
     1428#: templates/account.php:735, templates/debug.php:466
    14331429msgid "Address"
    14341430msgstr ""
     
    15341530#: templates/auto-installation.php:109
    15351531msgid "Cancel Installation"
    1536 msgstr ""
    1537 
    1538 #: templates/checkout.php:181
    1539 msgid "Checkout"
    1540 msgstr ""
    1541 
    1542 #: templates/checkout.php:181
    1543 msgid "PCI compliant"
    15441532msgstr ""
    15451533
     
    15511539
    15521540#. translators: %1$s: plugin name (e.g., "Awesome Plugin"); %2$s: version (e.g., "1.2.3")
    1553 #: templates/connect.php:186
     1541#: templates/connect.php:185
    15541542msgid "Thank you for updating to %1$s v%2$s!"
    15551543msgstr ""
    15561544
    1557 #: templates/connect.php:178
     1545#: templates/connect.php:177
    15581546msgid "Never miss an important update"
    15591547msgstr ""
    15601548
    1561 #: templates/connect.php:196
     1549#: templates/connect.php:195
    15621550msgid "Allow & Continue"
    15631551msgstr ""
    15641552
    15651553#. translators: %s: module type (plugin, theme, or add-on)
    1566 #: templates/connect.php:236
     1554#: templates/connect.php:235
    15671555msgid "We have introduced this opt-in so you never miss an important update and help us make the %s more compatible with your site and better at doing what you need it to."
    15681556msgstr ""
    15691557
    1570 #: templates/connect.php:238
     1558#: templates/connect.php:237
    15711559msgid "Opt in to get email notifications for security & feature updates, educational content, and occasional offers, and to share some basic WordPress environment info."
    15721560msgstr ""
    15731561
    1574 #: templates/connect.php:241
     1562#: templates/connect.php:240
    15751563msgid "If you skip this, that's okay! %1$s will still work just fine."
    15761564msgstr ""
    15771565
    1578 #: templates/connect.php:227
     1566#: templates/connect.php:226
    15791567msgid "Opt in to get email notifications for security & feature updates, educational content, and occasional offers, and to share some basic WordPress environment info. This will help us make the %s more compatible with your site and better at doing what you need it to."
    15801568msgstr ""
    15811569
    1582 #: templates/connect.php:216
     1570#: templates/connect.php:215
    15831571msgid "Welcome to %s! To get started, please enter your license key:"
    15841572msgstr ""
    15851573
    1586 #: templates/connect.php:200
     1574#: templates/connect.php:199
    15871575msgid "Re-send activation email"
    15881576msgstr ""
    15891577
     1578#: templates/connect.php:203
     1579msgid "Thanks %s!"
     1580msgstr ""
     1581
    15901582#: templates/connect.php:204
    1591 msgid "Thanks %s!"
    1592 msgstr ""
    1593 
    1594 #: templates/connect.php:205
    15951583msgid "You should receive a confirmation email for %s to your mailbox at %s. Please make sure you click the button in that email to %s."
    15961584msgstr ""
    15971585
    1598 #: templates/connect.php:271
     1586#: templates/connect.php:270
    15991587msgid "We're excited to introduce the Freemius network-level integration."
    16001588msgstr ""
    16011589
    1602 #: templates/connect.php:285
     1590#: templates/connect.php:284
    16031591msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
    16041592msgstr ""
    16051593
    1606 #: templates/connect.php:274
     1594#: templates/connect.php:273
    16071595msgid "During the update process we detected %d site(s) that are still pending license activation."
    16081596msgstr ""
    16091597
    1610 #: templates/connect.php:276
     1598#: templates/connect.php:275
    16111599msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
    16121600msgstr ""
    16131601
    1614 #: templates/connect.php:278
     1602#: templates/connect.php:277
    16151603msgid "%s's paid features"
    16161604msgstr ""
    16171605
    1618 #: templates/connect.php:283
     1606#: templates/connect.php:282
    16191607msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
    16201608msgstr ""
    16211609
    1622 #: templates/connect.php:294, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:42
     1610#: templates/connect.php:293, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:42
    16231611msgid "License key"
    16241612msgstr ""
    16251613
    1626 #: templates/connect.php:297, templates/forms/license-activation.php:22
     1614#: templates/connect.php:296, templates/forms/license-activation.php:22
    16271615msgid "Can't find your license key?"
    16281616msgstr ""
    16291617
    1630 #: templates/connect.php:360, templates/connect.php:690, templates/forms/deactivation/retry-skip.php:20
     1618#: templates/connect.php:359, templates/connect.php:689, templates/forms/deactivation/retry-skip.php:20
    16311619msgctxt "verb"
    16321620msgid "Skip"
    16331621msgstr ""
    16341622
    1635 #: templates/connect.php:363
     1623#: templates/connect.php:362
    16361624msgid "Delegate to Site Admins"
    16371625msgstr ""
    16381626
    1639 #: templates/connect.php:363
     1627#: templates/connect.php:362
    16401628msgid "If you click it, this decision will be delegated to the sites administrators."
    16411629msgstr ""
    16421630
    1643 #: templates/connect.php:392
     1631#: templates/connect.php:391
    16441632msgid "License issues?"
    16451633msgstr ""
    16461634
    1647 #: templates/connect.php:421
     1635#: templates/connect.php:420
    16481636msgid "This will allow %s to"
    16491637msgstr ""
    16501638
    1651 #: templates/connect.php:416
     1639#: templates/connect.php:415
    16521640msgid "For delivery of security & feature updates, and license management, %s needs to"
    16531641msgstr ""
    16541642
    1655 #: templates/connect.php:439
     1643#: templates/connect.php:438
    16561644msgid "Have a license key?"
    16571645msgstr ""
    16581646
    1659 #: templates/connect.php:436
     1647#: templates/connect.php:435
    16601648msgid "Don't have a license key?"
    16611649msgstr ""
    16621650
    1663 #: templates/connect.php:447
     1651#: templates/connect.php:446
    16641652msgid "Freemius is our licensing and software updates engine"
    16651653msgstr ""
    16661654
    1667 #: templates/connect.php:450
     1655#: templates/connect.php:449
    16681656msgid "Privacy Policy"
    16691657msgstr ""
    16701658
    1671 #: templates/connect.php:455
     1659#: templates/connect.php:454
    16721660msgid "Terms of Service"
    16731661msgstr ""
    16741662
    1675 #: templates/connect.php:453
     1663#: templates/connect.php:452
    16761664msgid "License Agreement"
    16771665msgstr ""
    16781666
    1679 #: templates/connect.php:876
     1667#: templates/connect.php:875
    16801668msgctxt "as in the process of sending an email"
    16811669msgid "Sending email"
    16821670msgstr ""
    16831671
    1684 #: templates/connect.php:877
     1672#: templates/connect.php:876
    16851673msgctxt "as activating plugin"
    16861674msgid "Activating"
    16871675msgstr ""
    16881676
    1689 #: templates/contact.php:78
     1677#: templates/contact.php:63
    16901678msgid "Contact"
    16911679msgstr ""
     
    17011689msgstr ""
    17021690
    1703 #: templates/debug.php:24
     1691#: templates/debug.php:29, includes/managers/class-fs-debug-manager.php:26
     1692msgid "Freemius Debug"
     1693msgstr ""
     1694
     1695#: templates/debug.php:29
    17041696msgid "SDK"
    17051697msgstr ""
    17061698
    1707 #: templates/debug.php:28
     1699#: templates/debug.php:32
    17081700msgctxt "as code debugging"
    17091701msgid "Debugging"
    17101702msgstr ""
    17111703
    1712 #: templates/debug.php:58, templates/debug.php:279, templates/debug.php:415, templates/debug.php:580
     1704#: templates/debug.php:38
     1705msgctxt "timer for auto-disabling debug"
     1706msgid "Auto off in:"
     1707msgstr ""
     1708
     1709#: templates/debug.php:117, templates/debug.php:338, templates/debug.php:474, templates/debug.php:639
    17131710msgid "Actions"
    17141711msgstr ""
    17151712
    1716 #: templates/debug.php:68
     1713#: templates/debug.php:127
    17171714msgid "Are you sure you want to delete all Freemius data?"
    17181715msgstr ""
    17191716
    1720 #: templates/debug.php:68
     1717#: templates/debug.php:127
    17211718msgid "Delete All Accounts"
    17221719msgstr ""
    17231720
    1724 #: templates/debug.php:75
     1721#: templates/debug.php:134
    17251722msgid "Clear API Cache"
    17261723msgstr ""
    17271724
    1728 #: templates/debug.php:83
     1725#: templates/debug.php:142
    17291726msgid "Clear Updates Transients"
    17301727msgstr ""
    17311728
    1732 #: templates/debug.php:92
     1729#: templates/debug.php:151
    17331730msgid "Reset Deactivation Snoozing"
    17341731msgstr ""
    17351732
    1736 #: templates/debug.php:100
     1733#: templates/debug.php:159
    17371734msgid "Sync Data From Server"
    17381735msgstr ""
    17391736
    1740 #: templates/debug.php:109
     1737#: templates/debug.php:168
    17411738msgid "Migrate Options to Network"
    17421739msgstr ""
    17431740
    1744 #: templates/debug.php:114
     1741#: templates/debug.php:173
    17451742msgid "Load DB Option"
    17461743msgstr ""
    17471744
    1748 #: templates/debug.php:117
     1745#: templates/debug.php:176
    17491746msgid "Set DB Option"
    17501747msgstr ""
    17511748
    1752 #: templates/debug.php:211
     1749#: templates/debug.php:270
    17531750msgid "Key"
    17541751msgstr ""
    17551752
    1756 #: templates/debug.php:212
     1753#: templates/debug.php:271
    17571754msgid "Value"
    17581755msgstr ""
    17591756
    1760 #: templates/debug.php:228
     1757#: templates/debug.php:287
    17611758msgctxt "as software development kit versions"
    17621759msgid "SDK Versions"
    17631760msgstr ""
    17641761
    1765 #: templates/debug.php:233
     1762#: templates/debug.php:292
    17661763msgid "SDK Path"
    17671764msgstr ""
    17681765
    1769 #: templates/debug.php:234, templates/debug.php:273
     1766#: templates/debug.php:293, templates/debug.php:332
    17701767msgid "Module Path"
    17711768msgstr ""
    17721769
    1773 #: templates/debug.php:235
     1770#: templates/debug.php:294
    17741771msgid "Is Active"
    17751772msgstr ""
    17761773
    1777 #: templates/debug.php:263, templates/debug/plugins-themes-sync.php:35
     1774#: templates/debug.php:322, templates/debug/plugins-themes-sync.php:35
    17781775msgid "Plugins"
    17791776msgstr ""
    17801777
    1781 #: templates/debug.php:263, templates/debug/plugins-themes-sync.php:56
     1778#: templates/debug.php:322, templates/debug/plugins-themes-sync.php:56
    17821779msgid "Themes"
    17831780msgstr ""
    17841781
    1785 #: templates/debug.php:268, templates/debug.php:409, templates/debug.php:517, templates/debug/scheduled-crons.php:80
     1782#: templates/debug.php:327, templates/debug.php:468, templates/debug.php:576, templates/debug/scheduled-crons.php:80
    17861783msgid "Slug"
    17871784msgstr ""
    17881785
    1789 #: templates/debug.php:270, templates/debug.php:516
     1786#: templates/debug.php:329, templates/debug.php:575
    17901787msgid "Title"
    17911788msgstr ""
    17921789
    1793 #: templates/debug.php:271
     1790#: templates/debug.php:330
    17941791msgctxt "as application program interface"
    17951792msgid "API"
    17961793msgstr ""
    17971794
    1798 #: templates/debug.php:272
     1795#: templates/debug.php:331
    17991796msgid "Freemius State"
    18001797msgstr ""
    18011798
    1802 #: templates/debug.php:276
     1799#: templates/debug.php:335
    18031800msgid "Network Blog"
    18041801msgstr ""
    18051802
    1806 #: templates/debug.php:277
     1803#: templates/debug.php:336
    18071804msgid "Network User"
    18081805msgstr ""
    18091806
    1810 #: templates/debug.php:323
     1807#: templates/debug.php:382
    18111808msgctxt "as connection was successful"
    18121809msgid "Connected"
    18131810msgstr ""
    18141811
    1815 #: templates/debug.php:325
     1812#: templates/debug.php:384
    18161813msgctxt "as connection blocked"
    18171814msgid "Blocked"
    18181815msgstr ""
    18191816
    1820 #: templates/debug.php:326
     1817#: templates/debug.php:385
    18211818msgctxt "API connectivity state is unknown"
    18221819msgid "Unknown"
    18231820msgstr ""
    18241821
    1825 #: templates/debug.php:362
     1822#: templates/debug.php:421
    18261823msgid "Simulate Trial Promotion"
    18271824msgstr ""
    18281825
    1829 #: templates/debug.php:374
     1826#: templates/debug.php:433
    18301827msgid "Simulate Network Upgrade"
    18311828msgstr ""
    18321829
    18331830#. translators: %s: 'plugin' or 'theme'
    1834 #: templates/debug.php:398
     1831#: templates/debug.php:457
    18351832msgid "%s Installs"
    18361833msgstr ""
    18371834
    1838 #: templates/debug.php:400
     1835#: templates/debug.php:459
    18391836msgctxt "like websites"
    18401837msgid "Sites"
    18411838msgstr ""
    18421839
    1843 #: templates/debug.php:406, templates/account/partials/site.php:156
     1840#: templates/debug.php:465, templates/account/partials/site.php:156
    18441841msgid "Blog ID"
    18451842msgstr ""
    18461843
    1847 #: templates/debug.php:411
     1844#: templates/debug.php:470
    18481845msgid "License ID"
    18491846msgstr ""
    18501847
    1851 #: templates/debug.php:497, templates/debug.php:603, templates/account/partials/addon.php:440
     1848#: templates/debug.php:556, templates/debug.php:662, templates/account/partials/addon.php:440
    18521849msgctxt "verb"
    18531850msgid "Delete"
    18541851msgstr ""
    18551852
    1856 #: templates/debug.php:511
     1853#: templates/debug.php:570
    18571854msgid "Add Ons of module %s"
    18581855msgstr ""
    18591856
    1860 #: templates/debug.php:570
     1857#: templates/debug.php:629
    18611858msgid "Users"
    18621859msgstr ""
    18631860
    1864 #: templates/debug.php:577
     1861#: templates/debug.php:636
    18651862msgid "Verified"
    18661863msgstr ""
    18671864
    1868 #: templates/debug.php:619
     1865#: templates/debug.php:678
    18691866msgid "%s Licenses"
    18701867msgstr ""
    18711868
    1872 #: templates/debug.php:624
     1869#: templates/debug.php:683
    18731870msgid "Plugin ID"
    18741871msgstr ""
    18751872
    1876 #: templates/debug.php:626
     1873#: templates/debug.php:685
    18771874msgid "Plan ID"
    18781875msgstr ""
    18791876
    1880 #: templates/debug.php:627
     1877#: templates/debug.php:686
    18811878msgid "Quota"
    18821879msgstr ""
    18831880
    1884 #: templates/debug.php:628
     1881#: templates/debug.php:687
    18851882msgid "Activated"
    18861883msgstr ""
    18871884
    1888 #: templates/debug.php:629
     1885#: templates/debug.php:688
    18891886msgid "Blocking"
    18901887msgstr ""
    18911888
    1892 #: templates/debug.php:630, templates/debug.php:701, templates/debug/logger.php:22
     1889#: templates/debug.php:689, templates/debug.php:760, templates/debug/logger.php:22
    18931890msgid "Type"
    18941891msgstr ""
    18951892
    1896 #: templates/debug.php:632
     1893#: templates/debug.php:691
    18971894msgctxt "as expiration date"
    18981895msgid "Expiration"
    18991896msgstr ""
    19001897
    1901 #: templates/debug.php:660
     1898#: templates/debug.php:719
    19021899msgid "Debug Log"
    19031900msgstr ""
    19041901
    1905 #: templates/debug.php:664
     1902#: templates/debug.php:723
    19061903msgid "All Types"
    19071904msgstr ""
    19081905
    1909 #: templates/debug.php:671
     1906#: templates/debug.php:730
    19101907msgid "All Requests"
    19111908msgstr ""
    19121909
    1913 #: templates/debug.php:676, templates/debug.php:705, templates/debug/logger.php:25
     1910#: templates/debug.php:735, templates/debug.php:764, templates/debug/logger.php:25
    19141911msgid "File"
    19151912msgstr ""
    19161913
    1917 #: templates/debug.php:677, templates/debug.php:703, templates/debug/logger.php:23
     1914#: templates/debug.php:736, templates/debug.php:762, templates/debug/logger.php:23
    19181915msgid "Function"
    19191916msgstr ""
    19201917
    1921 #: templates/debug.php:678
     1918#: templates/debug.php:737
    19221919msgid "Process ID"
    19231920msgstr ""
    19241921
    1925 #: templates/debug.php:679
     1922#: templates/debug.php:738
    19261923msgid "Logger"
    19271924msgstr ""
    19281925
    1929 #: templates/debug.php:680, templates/debug.php:704, templates/debug/logger.php:24
     1926#: templates/debug.php:739, templates/debug.php:763, templates/debug/logger.php:24
    19301927msgid "Message"
    19311928msgstr ""
    19321929
    1933 #: templates/debug.php:682
     1930#: templates/debug.php:741
    19341931msgid "Filter"
    19351932msgstr ""
    19361933
    1937 #: templates/debug.php:690
     1934#: templates/debug.php:749
    19381935msgid "Download"
    19391936msgstr ""
    19401937
    1941 #: templates/debug.php:706, templates/debug/logger.php:26
     1938#: templates/debug.php:765, templates/debug/logger.php:26
    19421939msgid "Timestamp"
    19431940msgstr ""
     
    22372234msgstr ""
    22382235
     2236#: templates/checkout/frame.php:77
     2237msgid "Checkout"
     2238msgstr ""
     2239
     2240#: templates/checkout/frame.php:77
     2241msgid "PCI compliant"
     2242msgstr ""
     2243
     2244#: templates/checkout/process-redirect.php:41
     2245msgid "Processing, please wait and do not close or refresh this window..."
     2246msgstr ""
     2247
     2248#: templates/checkout/redirect.php:87
     2249msgid "Redirecting, please <a href=\"%1$s\">click here</a> if you're stuck..."
     2250msgstr ""
     2251
    22392252#: templates/connect/permissions-group.php:31, templates/forms/optout.php:26, templates/js/permissions.php:78
    22402253msgctxt "verb"
  • woo-product-reviews-shortcode/trunk/freemius/require.php

    r3032314 r3245272  
    2828    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-permission-manager.php';
    2929    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-cache-manager.php';
     30    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-checkout-manager.php';
     31    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-contact-form-manager.php';
    3032    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-admin-notice-manager.php';
    3133    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-admin-menu-manager.php';
     
    5153    require_once WP_FS__DIR_INCLUDES . '/class-fs-plugin-updater.php';
    5254    require_once WP_FS__DIR_INCLUDES . '/class-fs-security.php';
     55    require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-debug-manager.php';
    5356    require_once WP_FS__DIR_INCLUDES . '/class-fs-options.php';
    5457    require_once WP_FS__DIR_INCLUDES . '/class-fs-storage.php';
  • woo-product-reviews-shortcode/trunk/freemius/start.php

    r3082022 r3245272  
    1616     * @var string
    1717     */
    18     $this_sdk_version = '2.7.2';
     18    $this_sdk_version = '2.11.0';
    1919
    2020    #region SDK Selection Logic --------------------------------------------------------------------
     
    3737    }
    3838
    39     /**
     39    /**
     40     * We updated the logic to support SDK loading from a subfolder of a theme as well as from a parent theme
     41     * If the SDK is found in the active theme, it sets the relative path accordingly.
     42     * If not, it checks the parent theme and sets the relative path if found there.
     43     * This allows the SDK to be loaded from composer dependencies or from a custom `vendor/freemius` folder.
     44     *
     45     * @author Daniele Alessandra (@DanieleAlessandra)
     46     * @since  2.9.0.5
     47     *
     48     *
    4049     * This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
    4150     * that if it's a file from an SDK running in a theme, the location of the SDK
     
    8493    $themes_directory         = get_theme_root( get_stylesheet() );
    8594    $themes_directory_name    = basename( $themes_directory );
    86     $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
    87 
    88     if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
    89     ) {
    90         $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
    91         $is_theme               = true;
    92     } else {
    93         $this_sdk_relative_path = plugin_basename( $fs_root_path );
    94         $is_theme               = false;
    95     }
     95
     96    // This change ensures that the condition works even if the SDK is located in a subdirectory (e.g., vendor)
     97    $theme_candidate_sdk_basename = str_replace( $themes_directory . '/' . get_stylesheet() . '/', '', $fs_root_path );
     98
     99    // Check if the current file is part of the active theme.
     100    $is_current_sdk_from_active_theme = $file_path == $themes_directory . '/' . get_stylesheet() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
     101    $is_current_sdk_from_parent_theme = false;
     102
     103    // Check if the current file is part of the parent theme.
     104    if ( ! $is_current_sdk_from_active_theme ) {
     105        $theme_candidate_sdk_basename     = str_replace( $themes_directory . '/' . get_template() . '/',
     106            '',
     107            $fs_root_path );
     108        $is_current_sdk_from_parent_theme = $file_path == $themes_directory . '/' . get_template() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
     109    }
     110
     111    $theme_name = null;
     112    if ( $is_current_sdk_from_active_theme ) {
     113        $theme_name             = get_stylesheet();
     114        $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
     115        $is_theme               = true;
     116    } else if ( $is_current_sdk_from_parent_theme ) {
     117        $theme_name             = get_template();
     118        $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
     119        $is_theme               = true;
     120    } else {
     121        $this_sdk_relative_path = plugin_basename( $fs_root_path );
     122        $is_theme               = false;
     123
     124        /**
     125         * If this file was included from another plugin with lower SDK version, and if this plugin is symlinked, then we need to get the actual plugin path,
     126         * as the value right now will be wrong, it will only remove the directory separator from the file_path.
     127         *
     128         * The check of `fs_find_direct_caller_plugin_file` determines that this file was indeed included by a different plugin than the main plugin.
     129         */
     130        if ( DIRECTORY_SEPARATOR . $this_sdk_relative_path === $fs_root_path && function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
     131            $original_plugin_dir_name = dirname( fs_find_direct_caller_plugin_file( $file_path ) );
     132
     133            // Remove everything before the original plugin directory name.
     134            $this_sdk_relative_path = substr( $this_sdk_relative_path, strpos( $this_sdk_relative_path, $original_plugin_dir_name ) );
     135
     136            unset( $original_plugin_dir_name );
     137        }
     138    }
    96139
    97140    if ( ! isset( $fs_active_plugins ) ) {
     
    177220    ) {
    178221        if ( $is_theme ) {
    179             $plugin_path = basename( dirname( $this_sdk_relative_path ) );
     222            // Saving relative path and not only directory name as it could be a subfolder
     223            $plugin_path = $theme_name;
    180224        } else {
    181225            $plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
     
    226270        $is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
    227271
    228         if ( ! $is_newest_sdk_type_theme ) {
    229             $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
    230         } else {
    231             $current_theme               = wp_get_theme();
    232             $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
     272        /**
     273         * @var bool $is_newest_sdk_module_active
     274         * True if the plugin with the newest SDK is active.
     275         * True if the newest SDK is part of the current theme or current theme's parent.
     276         * False otherwise.
     277         */
     278        if ( ! $is_newest_sdk_type_theme ) {
     279            $is_newest_sdk_module_active = is_plugin_active( $fs_newest_sdk->plugin_path );
     280        } else {
     281            $current_theme = wp_get_theme();
     282            // Detect if current theme is the one registered as newer SDK
     283            $is_newest_sdk_module_active = (
     284                strpos(
     285                    $fs_newest_sdk->plugin_path,
     286                    '../' . $themes_directory_name . '/' . $current_theme->get_stylesheet() . '/'
     287                ) === 0
     288            );
    233289
    234290            $current_theme_parent = $current_theme->parent();
     
    238294             * from happening by keeping the SDK info stored in the `fs_active_plugins` option.
    239295             */
    240             if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
    241                 $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
     296            if ( ! $is_newest_sdk_module_active && $current_theme_parent instanceof WP_Theme ) {
     297                // Detect if current theme parent is the one registered as newer SDK
     298                $is_newest_sdk_module_active = (
     299                    strpos(
     300                        $fs_newest_sdk->plugin_path,
     301                        '../' . $themes_directory_name . '/' . $current_theme_parent->get_stylesheet() . '/'
     302                    ) === 0
     303                );
    242304            }
    243305        }
    244306
    245307        if ( $is_current_sdk_newest &&
    246              ! $is_newest_sdk_plugin_active &&
     308             ! $is_newest_sdk_module_active &&
    247309             ! $fs_active_plugins->newest->in_activation
    248310        ) {
     
    263325        }
    264326
    265         $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
     327        $is_newest_sdk_path_valid = ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
    266328
    267329        if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
     
    270332        }
    271333
    272         if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
     334        if ( ! ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) ||
    273335             ! $is_newest_sdk_path_valid ||
    274336             // Is newest SDK downgraded.
     
    285347            fs_fallback_to_newest_active_sdk();
    286348        } else {
    287             if ( $is_newest_sdk_plugin_active &&
     349            if ( $is_newest_sdk_module_active &&
    288350                 $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
    289351                 ( $fs_active_plugins->newest->in_activation ||
     
    314376    }
    315377
    316     if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
     378    if ( isset( $fs_active_plugins->newest ) && version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
    317379        $newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
    318380
  • woo-product-reviews-shortcode/trunk/freemius/templates/account.php

    r3082022 r3245272  
    511511                                            <tr class="fs-field-<?php echo esc_attr( $p['id'] ) ?><?php if ( $odd ) : ?> alternate<?php endif ?>">
    512512                                                <td>
    513                                                     <nobr><?php echo esc_attr( $p['title'] ) ?><?php echo ( ! empty( $p['title'] ) ) ? ':' : '' ?></nobr>
     513                                                    <nobr><?php echo esc_html( $p['title'] ) ?><?php echo ( ! empty( $p['title'] ) ) ? ':' : '' ?></nobr>
    514514                                                </td>
    515515                                                <td<?php if ( 'plan' === $p['id'] || 'bundle_plan' === $p['id'] ) { echo ' colspan="2"'; }?>>
     
    11191119        $fs->_add_tabs_after_content();
    11201120    }
    1121 
    1122     $params = array(
    1123         'page'           => 'account',
    1124         'module_id'      => $fs->get_id(),
    1125         'module_type'    => $fs->get_module_type(),
    1126         'module_slug'    => $slug,
    1127         'module_version' => $fs->get_plugin_version(),
    1128     );
    1129     fs_require_template( 'powered-by.php', $params );
  • woo-product-reviews-shortcode/trunk/freemius/templates/add-ons.php

    r2419568 r3245272  
    492492        $fs->_add_tabs_after_content();
    493493    }
    494 
    495     $params = array(
    496         'page'           => 'addons',
    497         'module_id'      => $fs->get_id(),
    498         'module_type'    => $fs->get_module_type(),
    499         'module_slug'    => $slug,
    500         'module_version' => $fs->get_plugin_version(),
    501     );
    502     fs_require_template( 'powered-by.php', $params );
  • woo-product-reviews-shortcode/trunk/freemius/templates/checkout.php

    r3082022 r3245272  
    22    /**
    33     * @package     Freemius
    4      * @copyright   Copyright (c) 2015, Freemius, Inc.
     4     * @copyright   Copyright (c) 2024, Freemius, Inc.
    55     * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
    6      * @since       1.0.3
     6     * @since       2.9.0
    77     */
    8 
    9     /**
    10      * Note for WordPress.org Theme/Plugin reviewer:
    11      *  Freemius is an SDK for plugin and theme developers. Since the core
    12      *  of the SDK is relevant both for plugins and themes, for obvious reasons,
    13      *  we only develop and maintain one code base.
    14      *
    15      *  This code (and page) will not run for wp.org themes (only plugins).
    16      *
    17      *  In addition, this page loads an i-frame. We intentionally named it 'frame'
    18      *  so it will pass the "Theme Check" that is looking for the string "i" . "frame".
    19      *
    20      * UPDATE:
    21      *  After ongoing conversations with the WordPress.org TRT we received
    22      *  an official approval for including i-frames in the theme's WP Admin setting's
    23      *  page tab (the SDK will never add any i-frames on the sitefront). i-frames
    24      *  were never against the guidelines, but we wanted to get the team's blessings
    25      *  before we move forward. For the record, I got the final approval from
    26      *  Ulrich Pogson (@grapplerulrich), a team lead at the TRT during WordCamp
    27      *  Europe 2017 (June 16th, 2017).
    28      *
    29      * If you have any questions or need clarifications, please don't hesitate
    30      * pinging me on slack, my username is @svovaf.
    31      *
    32      * @author Vova Feldman (@svovaf)
    33      * @since 1.2.2
    34      */
    35 
    36     if ( ! defined( 'ABSPATH' ) ) {
    37         exit;
    38     }
    39 
    40     wp_enqueue_script( 'jquery' );
    41     wp_enqueue_script( 'json2' );
    42     fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.js' );
    43     fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
    44     fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
    45 
    46     fs_enqueue_local_style( 'fs_checkout', '/admin/checkout.css' );
    478
    489    /**
     
    5011     * @var Freemius $fs
    5112     */
    52     $fs   = freemius( $VARS['id'] );
    53     $slug = $fs->get_slug();
     13    $fs = freemius( $VARS['id'] );
    5414
    55     $timestamp = time();
     15    if ( fs_request_get_bool( 'redirect' ) ) {
     16        fs_require_template( 'checkout/redirect.php', $VARS );
     17    } else if ( fs_request_get_bool( 'process_redirect' ) ) {
     18        fs_require_template( 'checkout/process-redirect.php', $VARS );
     19    } else {
     20        $fs = freemius( $VARS['id'] );
    5621
    57     $context_params = array(
    58         'plugin_id'      => $fs->get_id(),
    59         'public_key'     => $fs->get_public_key(),
    60         'plugin_version' => $fs->get_plugin_version(),
    61         'mode'           => 'dashboard',
    62         'trial'          => fs_request_get_bool( 'trial' ),
    63         'is_ms'          => ( fs_is_network_admin() && $fs->is_network_active() ),
    64     );
    65 
    66     $plan_id = fs_request_get( 'plan_id' );
    67     if ( FS_Plugin_Plan::is_valid_id( $plan_id ) ) {
    68         $context_params['plan_id'] = $plan_id;
    69     }
    70 
    71     $licenses = fs_request_get( 'licenses' );
    72     if ( $licenses === strval( intval( $licenses ) ) && $licenses > 0 ) {
    73         $context_params['licenses'] = $licenses;
    74     }
    75 
    76     $plugin_id = fs_request_get( 'plugin_id' );
    77     if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
    78         $plugin_id = $fs->get_id();
    79     }
    80 
    81     if ( $plugin_id == $fs->get_id() ) {
    82         $is_premium = $fs->is_premium();
    83 
    84         $bundle_id = $fs->get_bundle_id();
    85         if ( ! is_null( $bundle_id ) ) {
    86             $context_params['bundle_id'] = $bundle_id;
    87         }
    88     } else {
    89         // Identify the module code version of the checkout context module.
    90         if ( $fs->is_addon_activated( $plugin_id ) ) {
    91             $fs_addon   = Freemius::get_instance_by_id( $plugin_id );
    92             $is_premium = $fs_addon->is_premium();
     22        if ( $fs->is_premium() ) {
     23            fs_require_template( 'checkout/frame.php', $VARS );
    9324        } else {
    94             // If add-on isn't activated assume the premium version isn't installed.
    95             $is_premium = false;
     25            fs_require_template( 'checkout/redirect.php', $VARS );
    9626        }
    9727    }
    98 
    99     // Get site context secure params.
    100     if ( $fs->is_registered() ) {
    101         $site = $fs->get_site();
    102 
    103         if ( $plugin_id != $fs->get_id() ) {
    104             if ( $fs->is_addon_activated( $plugin_id ) ) {
    105                 $fs_addon   = Freemius::get_instance_by_id( $plugin_id );
    106                 $addon_site = $fs_addon->get_site();
    107                 if ( is_object( $addon_site ) ) {
    108                     $site = $addon_site;
    109                 }
    110             }
    111         }
    112 
    113         $context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
    114             $site,
    115             $timestamp,
    116             'checkout'
    117         ) );
    118     } else {
    119         $current_user = Freemius::_get_current_wp_user();
    120 
    121         // Add site and user info to the request, this information
    122         // is NOT being stored unless the user complete the purchase
    123         // and agrees to the TOS.
    124         $context_params = array_merge( $context_params, array(
    125             'user_firstname' => $current_user->user_firstname,
    126             'user_lastname'  => $current_user->user_lastname,
    127             'user_email'     => $current_user->user_email,
    128             'home_url'       => home_url(),
    129         ) );
    130 
    131         $fs_user = Freemius::_get_user_by_email( $current_user->user_email );
    132 
    133         if ( is_object( $fs_user ) && $fs_user->is_verified() ) {
    134             $context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
    135                 $fs_user,
    136                 $timestamp,
    137                 'checkout'
    138             ) );
    139         }
    140     }
    141 
    142     if ( $fs->is_payments_sandbox() ) {
    143         // Append plugin secure token for sandbox mode authentication.
    144         $context_params['sandbox'] = FS_Security::instance()->get_secure_token(
    145             $fs->get_plugin(),
    146             $timestamp,
    147             'checkout'
    148         );
    149 
    150         /**
    151          * @since 1.1.7.3 Add security timestamp for sandbox even for anonymous user.
    152          */
    153         if ( empty( $context_params['s_ctx_ts'] ) ) {
    154             $context_params['s_ctx_ts'] = $timestamp;
    155         }
    156     }
    157 
    158     $return_url = $fs->_get_sync_license_url( $plugin_id );
    159 
    160     $can_user_install = (
    161         ( $fs->is_plugin() && current_user_can( 'install_plugins' ) ) ||
    162         ( $fs->is_theme() && current_user_can( 'install_themes' ) )
    163     );
    164 
    165     $query_params = array_merge( $context_params, $_GET, array(
    166         // Current plugin version.
    167         'plugin_version' => $fs->get_plugin_version(),
    168         'sdk_version'    => WP_FS__SDK_VERSION,
    169         'is_premium'     => $is_premium ? 'true' : 'false',
    170         'can_install'    => $can_user_install ? 'true' : 'false',
    171         'return_url'     => $return_url,
    172     ) );
    173 
    174     $xdebug_session = fs_request_get( 'XDEBUG_SESSION' );
    175     if ( false !== $xdebug_session ) {
    176         $query_params['XDEBUG_SESSION'] = $xdebug_session;
    177     }
    178 
    179     $view_params = array(
    180         'id'   => $VARS['id'],
    181         'page' => strtolower( $fs->get_text_inline( 'Checkout', 'checkout' ) ) . ' ' . $fs->get_text_inline( 'PCI compliant', 'pci-compliant' ),
    182     );
    183     fs_require_once_template('secure-https-header.php', $view_params);
    184 ?>
    185     <div id="fs_checkout" class="wrap fs-section fs-full-size-wrapper">
    186         <div id="fs_frame"></div>
    187         <script type="text/javascript">
    188             // http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
    189             jQuery(function ($) {
    190                 $.extend({
    191                     form: function (url, data, method) {
    192                         if (method == null) method = 'POST';
    193                         if (data == null) data = {};
    194 
    195                         var form = $('<form>').attr({
    196                             method: method,
    197                             action: url
    198                         }).css({
    199                             display: 'none'
    200                         });
    201 
    202                         var addData = function (name, data) {
    203                             if ($.isArray(data)) {
    204                                 for (var i = 0; i < data.length; i++) {
    205                                     var value = data[i];
    206                                     addData(name + '[]', value);
    207                                 }
    208                             } else if (typeof data === 'object') {
    209                                 for (var key in data) {
    210                                     if (data.hasOwnProperty(key)) {
    211                                         addData(name + '[' + key + ']', data[key]);
    212                                     }
    213                                 }
    214                             } else if (data != null) {
    215                                 form.append($('<input>').attr({
    216                                     type : 'hidden',
    217                                     name : String(name),
    218                                     value: String(data)
    219                                 }));
    220                             }
    221                         };
    222 
    223                         for (var key in data) {
    224                             if (data.hasOwnProperty(key)) {
    225                                 addData(key, data[key]);
    226                             }
    227                         }
    228 
    229                         return form.appendTo('body');
    230                     }
    231                 });
    232             });
    233 
    234             (function ($) {
    235                 $(function () {
    236 
    237                     var
    238                         // Keep track of the i-frame height.
    239                         frame_height = 800,
    240                         base_url     = '<?php echo FS_CHECKOUT__ADDRESS ?>',
    241                         // Pass the parent page URL into the i-frame in a meaningful way (this URL could be
    242                         // passed via query string or hard coded into the child page, it depends on your needs).
    243                         src          = base_url + '/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
    244                         // Append the i-frame into the DOM.
    245                         frame        = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>')
    246                             .appendTo('#fs_frame');
    247 
    248                     FS.PostMessage.init(base_url, [frame[0]]);
    249                     FS.PostMessage.receiveOnce('height', function (data) {
    250                         var h = data.height;
    251                         if (!isNaN(h) && h > 0 && h != frame_height) {
    252                             frame_height = h;
    253                             frame.height(frame_height + 'px');
    254 
    255                             FS.PostMessage.postScroll(frame[0]);
    256                         }
    257                     });
    258 
    259                     FS.PostMessage.receiveOnce('install', function (data) {
    260                         var requestData = {
    261                             user_id           : data.user.id,
    262                             user_secret_key   : data.user.secret_key,
    263                             user_public_key   : data.user.public_key,
    264                             install_id        : data.install.id,
    265                             install_secret_key: data.install.secret_key,
    266                             install_public_key: data.install.public_key
    267                         };
    268 
    269                         if (true === data.auto_install)
    270                             requestData.auto_install = true;
    271 
    272                         // Post data to activation URL.
    273                         $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
    274                             'fs_action' => $fs->get_unique_affix() . '_activate_new',
    275                             'plugin_id' => $plugin_id
    276                         ) ), $fs->get_unique_affix() . '_activate_new' ) ?>', requestData).submit();
    277                     });
    278 
    279                     FS.PostMessage.receiveOnce('pending_activation', function (data) {
    280                         var requestData = {
    281                             user_email           : data.user_email,
    282                             support_email_address: data.support_email_address
    283                         };
    284 
    285                         if (true === data.auto_install)
    286                             requestData.auto_install = true;
    287 
    288                         $.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
    289                             'fs_action'           => $fs->get_unique_affix() . '_activate_new',
    290                             'plugin_id'           => $plugin_id,
    291                             'pending_activation'  => true,
    292                             'has_upgrade_context' => true,
    293                         ) ), $fs->get_unique_affix() . '_activate_new' ) ?>', requestData).submit();
    294                     });
    295 
    296                     FS.PostMessage.receiveOnce('get_context', function () {
    297                         console.debug('receiveOnce', 'get_context');
    298 
    299                         // If the user didn't connect his account with Freemius,
    300                         // once he accepts the Terms of Service and Privacy Policy,
    301                         // and then click the purchase button, the context information
    302                         // of the user will be shared with Freemius in order to complete the
    303                         // purchase workflow and activate the license for the right user.
    304                         <?php $install_data = array_merge( $fs->get_opt_in_params(),
    305                         array(
    306                             'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
    307                                 array(
    308                                     'fs_action' => $fs->get_unique_affix() . '_activate_new',
    309                                     'plugin_id' => $plugin_id,
    310 
    311                                 ) ),
    312                                 $fs->get_unique_affix() . '_activate_new' )
    313                         ) ) ?>
    314                         FS.PostMessage.post('context', <?php echo json_encode( $install_data ) ?>, frame[0]);
    315                     });
    316 
    317                     FS.PostMessage.receiveOnce('purchaseCompleted', <?php echo $fs->apply_filters('checkout/purchaseCompleted', 'function (data) {
    318                         console.log("checkout", "purchaseCompleted");
    319                     }') ?>);
    320 
    321                     FS.PostMessage.receiveOnce('get_dimensions', function (data) {
    322                         console.debug('receiveOnce', 'get_dimensions');
    323 
    324                         FS.PostMessage.post('dimensions', {
    325                             height   : $(document.body).height(),
    326                             scrollTop: $(document).scrollTop()
    327                         }, frame[0]);
    328                     });
    329 
    330                     var updateHeight = function () {
    331                         frame.css('min-height', $(document.body).height() + 'px');
    332                     };
    333 
    334                     $(document).ready(updateHeight);
    335 
    336                     $(window).resize(updateHeight);
    337                 });
    338             })(jQuery);
    339         </script>
    340     </div>
  • woo-product-reviews-shortcode/trunk/freemius/templates/connect.php

    r2938844 r3245272  
    162162                fs_require_once_template( 'plugin-icon.php', $vars );
    163163            ?>
    164             <!--            <img class="fs-connect-logo" width="--><?php //echo $size ?><!--" height="--><?php //echo $size ?><!--" src="//img.freemius.com/logo/connect.svg"/>-->
    165164        </div>
    166165        <div class="fs-box-container">
  • woo-product-reviews-shortcode/trunk/freemius/templates/contact.php

    r3082022 r3245272  
    88
    99    /**
     10     * Update (October 9, 2024 by @swashata):
     11     *   Following request from the wp.org plugin review team, we have stopped
     12     *   embedding the contact form inside an i-frame for wp.org hosted free version
     13     *   of plugins. Now they will be opened in a new tab.
     14     *
    1015     * Note for WordPress.org Theme/Plugin reviewer:
    1116     *  Freemius is an SDK for plugin and theme developers. Since the core
     
    1318     *  we only develop and maintain one code base.
    1419     *
    15      *  This code (and page) will not run for wp.org themes (only plugins).
     20     *  This code (and page) will not run for wp.org themes or plugins. It will
     21     *   run only for premium version of the plugin/theme that is using the SDK.
    1622     *
    17      *  In addition, this page loads an i-frame. We intentionally named it 'frame'
     23     *  In addition, when this page loads an i-frame. We intentionally named it 'frame'
    1824     *  so it will pass the "Theme Check" that is looking for the string "i" . "frame".
    1925     *
     
    5157    $slug = $fs->get_slug();
    5258
    53     $context_params = array(
    54         'plugin_id'         => $fs->get_id(),
    55         'plugin_public_key' => $fs->get_public_key(),
    56         'plugin_version'    => $fs->get_plugin_version(),
    57     );
    58 
    59 
    60     // Get site context secure params.
    61     if ( $fs->is_registered() ) {
    62         $context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
    63             $fs->get_site(),
    64             time(),
    65             'contact'
    66         ) );
    67     }
    68 
    69     $query_params = array_merge( $_GET, array_merge( $context_params, array(
    70         'plugin_version' => $fs->get_plugin_version(),
    71         'wp_login_url'   => wp_login_url(),
    72         'site_url'       => Freemius::get_unfiltered_site_url(),
    73 //      'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
    74     ) ) );
     59    $query_params = FS_Contact_Form_Manager::instance()->get_query_params( $fs );
    7560
    7661    $view_params = array(
     
    118103        $fs->_add_tabs_after_content();
    119104    }
    120 
    121     $params = array(
    122         'page'           => 'contact',
    123         'module_id'      => $fs->get_id(),
    124         'module_type'    => $fs->get_module_type(),
    125         'module_slug'    => $slug,
    126         'module_version' => $fs->get_plugin_version(),
    127     );
    128     fs_require_template( 'powered-by.php', $params );
  • woo-product-reviews-shortcode/trunk/freemius/templates/debug.php

    r2881642 r3245272  
    1818    $on_text  = fs_text_x_inline( 'On', 'as turned on' );
    1919
     20    // For some reason css was missing
     21    fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
     22
    2023    $has_any_active_clone = false;
    2124
    2225    $is_multisite = is_multisite();
     26
     27    $auto_off_timestamp = wp_next_scheduled( 'fs_debug_turn_off_logging_hook' ) * 1000;
    2328?>
    2429<h1><?php echo fs_text_inline( 'Freemius Debug' ) . ' - ' . fs_text_inline( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
    2530<div>
    2631    <!-- Debugging Switch -->
    27     <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
    2832    <span class="fs-switch-label"><?php fs_esc_html_echo_x_inline( 'Debugging', 'as code debugging' ) ?></span>
    2933
     
    3135        <div class="fs-toggle"></div>
    3236    </div>
     37
     38    <span class="auto-off-debug-countdown hidden"><?php echo fs_esc_html_echo_x_inline( 'Auto off in:', 'timer for auto-disabling debug' ); ?> <span class="time">23:59:59</span>
     39
    3340    <script type="text/javascript">
    3441        (function ($) {
     
    4047                        .toggleClass( 'fs-off' );
    4148
     49                    var is_on = ($(this).hasClass( 'fs-on' ) ? 1 : 0);
     50
    4251                    $.post( <?php echo Freemius::ajax_url() ?>, {
    4352                        action: 'fs_toggle_debug_mode',
    4453                        // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
    4554                        _wpnonce   : <?php echo wp_json_encode( wp_create_nonce( 'fs_toggle_debug_mode' ) ); ?>,
    46                         is_on : ($(this).hasClass( 'fs-on' ) ? 1 : 0)
    47                     }, function ( response ) {
     55                        is_on
     56                    }, function (response) {
     57                        if (is_on) {
     58                            startCountdownManually();
     59                        } else {
     60                            stopCountdownManually();
     61                        }
     62
    4863                        if ( 1 == response ) {
    4964                            // Refresh page on success.
     
    5267                    });
    5368                });
     69
     70                // Countdown
     71                var countdownElement = document.querySelector('.auto-off-debug-countdown');
     72                var timeElement = countdownElement.querySelector('.time');
     73                var targetTime = <?php echo wp_json_encode( $auto_off_timestamp ); ?>;
     74                var countdownTimeout;
     75
     76                function updateCountdown() {
     77                    var currentTime = new Date().getTime();
     78                    var remainingTimeInMs = targetTime - currentTime;
     79                    var hours = Math.floor((remainingTimeInMs % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
     80                    var minutes = Math.floor((remainingTimeInMs % (1000 * 60 * 60)) / (1000 * 60));
     81                    var seconds = Math.floor((remainingTimeInMs % (1000 * 60)) / 1000);
     82
     83
     84                    if (remainingTimeInMs < 1000) {
     85                        countdownElement.classList.add('hidden');
     86                        countdownTimeout = null;
     87                    } else {
     88                        timeElement.innerHTML = hours + ":"
     89                            + minutes.toString().padStart(2, '0') + ":"
     90                            + seconds.toString().padStart(2, '0');
     91                        countdownElement.classList.remove('hidden');
     92
     93                        if (countdownTimeout) {
     94                            clearTimeout(countdownTimeout);
     95                        }
     96                        countdownTimeout = setTimeout(updateCountdown, 1000);
     97                    }
     98                }
     99
     100                function startCountdownManually() {
     101                    targetTime = ( new Date().getTime() ) + (24 * 60 * 60 * 1000) - 1;
     102                    updateCountdown();
     103                }
     104
     105                function stopCountdownManually() {
     106                    targetTime = new Date().getTime();
     107                    updateCountdown();
     108                }
     109
     110                updateCountdown();
     111                // End countdown
     112
    54113            });
    55114        }(jQuery));
  • woo-product-reviews-shortcode/trunk/freemius/templates/forms/affiliation.php

    r3032314 r3245272  
    509509        $fs->_add_tabs_after_content();
    510510    }
    511 
    512     $params = array(
    513         'page'           => 'affiliation',
    514         'module_id'      => $module_id,
    515         'module_slug'    => $slug,
    516         'module_version' => $fs->get_plugin_version(),
    517     );
    518     fs_require_template( 'powered-by.php', $params );
  • woo-product-reviews-shortcode/trunk/freemius/templates/forms/license-activation.php

    r3082022 r3245272  
    570570                    } else {
    571571                        if ( ! hasLicensesDropdown ) {
    572                             licenseID = $availableLicenseKey.data( 'id' );
     572                            licenseID = $availableLicenseKey.data( 'id' ).toString();
    573573                        } else {
    574574                            licenseID = $licensesDropdown.val();
  • woo-product-reviews-shortcode/trunk/freemius/templates/pricing.php

    r3082022 r3245272  
    55     * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
    66     * @since       1.0.3
    7      */
    8 
    9     /**
    10      * Note for WordPress.org Theme/Plugin reviewer:
    11      *  Freemius is an SDK for plugin and theme developers. Since the core
    12      *  of the SDK is relevant both for plugins and themes, for obvious reasons,
    13      *  we only develop and maintain one code base.
    14      *
    15      *  This code (and page) will not run for wp.org themes (only plugins).
    16      *
    17      *  In addition, this page loads an i-frame. We intentionally named it 'frame'
    18      *  so it will pass the "Theme Check" that is looking for the string "i" . "frame".
    19      *
    20      * UPDATE:
    21      *  After ongoing conversations with the WordPress.org TRT we received
    22      *  an official approval for including i-frames in the theme's WP Admin setting's
    23      *  page tab (the SDK will never add any i-frames on the sitefront). i-frames
    24      *  were never against the guidelines, but we wanted to get the team's blessings
    25      *  before we move forward. For the record, I got the final approval from
    26      *  Ulrich Pogson (@grapplerulrich), a team lead at the TRT during WordCamp
    27      *  Europe 2017 (June 16th, 2017).
    28      *
    29      * If you have any questions or need clarifications, please don't hesitate
    30      * pinging me on slack, my username is @svovaf.
    31      *
    32      * @author Vova Feldman (@svovaf)
    33      * @since 1.2.2
    347     */
    358
     
    9366    ) );
    9467
    95     $use_external_pricing = $fs->should_use_external_pricing();
     68    $pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() );
    9669
    97     if ( ! $use_external_pricing ) {
    98         $pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() );
    99         wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
    100     } else {
    101         if ( ! $fs->is_registered() ) {
    102             $template_data = array(
    103                 'id' => $fs->get_id(),
    104             );
    105             fs_require_template( 'forms/trial-start.php', $template_data);
    106         }
     70    wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
    10771
    108         $view_params = array(
    109             'id'   => $VARS['id'],
    110             'page' => strtolower( $fs->get_text_x_inline( 'Pricing', 'noun', 'pricing' ) ),
    111         );
    112         fs_require_once_template('secure-https-header.php', $view_params);
     72    $pricing_css_path = $fs->apply_filters( 'pricing/css_path', null );
     73    if ( is_string( $pricing_css_path ) ) {
     74        wp_enqueue_style( 'freemius-pricing', fs_asset_url( $pricing_css_path ) );
    11375    }
    11476
     
    12082?>
    12183    <div id="fs_pricing" class="wrap fs-section fs-full-size-wrapper">
    122         <?php if ( ! $use_external_pricing ) : ?>
    12384        <div id="fs_pricing_wrapper" data-public-url="<?php echo trailingslashit( dirname( $pricing_js_url ) ) ?>"></div>
    12485        <?php
     
    139100            'unique_affix'           => $fs->get_unique_affix(),
    140101            'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ),
     102            'license'                => $fs->has_active_valid_license() ? $fs->_get_license() : null,
     103            'plugin_icon'            => $fs->get_local_icon_url(),
     104            'disable_single_package' => $fs->apply_filters( 'pricing/disable_single_package', false ),
    141105        ), $query_params );
    142106
    143107        wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' );
    144108        ?>
    145         <?php else : ?>
    146         <div id="fs_frame"></div>
    147         <form action="" method="POST">
    148             <input type="hidden" name="user_id"/>
    149             <input type="hidden" name="user_email"/>
    150             <input type="hidden" name="site_id"/>
    151             <input type="hidden" name="public_key"/>
    152             <input type="hidden" name="secret_key"/>
    153             <input type="hidden" name="action" value="account"/>
    154         </form>
    155 
    156         <script type="text/javascript">
    157             (function ($, undef) {
    158                 $(function () {
    159                     var
    160                     // Keep track of the i-frame height.
    161                     frame_height = 800,
    162                     base_url     = '<?php echo WP_FS__ADDRESS ?>',
    163                     // Pass the parent page URL into the i-frame in a meaningful way (this URL could be
    164                     // passed via query string or hard coded into the child page, it depends on your needs).
    165                     src          = base_url + '/pricing/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
    166 
    167                     // Append the I-frame into the DOM.
    168                     frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>')
    169                         .appendTo('#fs_frame');
    170 
    171                     FS.PostMessage.init(base_url, [frame[0]]);
    172 
    173                     FS.PostMessage.receive('height', function (data) {
    174                         var h = data.height;
    175                         if (!isNaN(h) && h > 0 && h != frame_height) {
    176                             frame_height = h;
    177                             frame.height(frame_height + 'px');
    178 
    179                             FS.PostMessage.postScroll(frame[0]);
    180                         }
    181                     });
    182 
    183                     FS.PostMessage.receive('get_dimensions', function (data) {
    184                         FS.PostMessage.post('dimensions', {
    185                             height   : $(document.body).height(),
    186                             scrollTop: $(document).scrollTop()
    187                         }, frame[0]);
    188                     });
    189 
    190                     FS.PostMessage.receive('start_trial', function (data) {
    191                         openTrialConfirmationModal(data);
    192                     });
    193                 });
    194             })(jQuery);
    195         </script>
    196         <?php endif ?>
    197109    </div>
    198110<?php
     
    200112        $fs->_add_tabs_after_content();
    201113    }
    202 
    203     $params = array(
    204         'page'           => 'pricing',
    205         'module_id'      => $fs->get_id(),
    206         'module_type'    => $fs->get_module_type(),
    207         'module_slug'    => $slug,
    208         'module_version' => $fs->get_plugin_version(),
    209     );
    210     fs_require_template( 'powered-by.php', $params );
  • woo-product-reviews-shortcode/trunk/woo-product-reviews-shortcode.php

    r3082022 r3245272  
    33 * Plugin Name:     Builder for WooCommerce reviews shortcodes - ReviewShort
    44 * Description:     Show WooCommerce customer feedback anywhere with WooCommerce reviews shortcodes, beautifully and ...
    5  * Version:         1.01.7
     5 * Version:         1.01.8
    66 * Author:          Tobias Conrad
    77 * Author URI:      https://saleswonder.biz/
     
    1010 * Text Domain:     woo-product-reviews-shortcode
    1111 * WC requires at least: 4.0
    12  * WC tested up to: 8.8
     12 * WC tested up to: 9.7
    1313 *
    1414 * Domain Path:     /languagess
     
    2323 * Rename this for your plugin and update it as you release new versions.
    2424 */
    25 define( 'WPRSHRTCD_VERSION', '1.01.7' );
     25define( 'WPRSHRTCD_VERSION', '1.01.8' );
    2626
    2727if ( ! defined( 'WPRSHRTCD_FILE' ) ) {
Note: See TracChangeset for help on using the changeset viewer.