Changeset 3394020
- Timestamp:
- 11/12/2025 05:11:10 AM (3 months ago)
- Location:
- easy-critical-css
- Files:
-
- 296 added
- 1 deleted
- 10 edited
-
tags/1.4.1 (added)
-
tags/1.4.1/LICENSE (added)
-
tags/1.4.1/assets (added)
-
tags/1.4.1/assets/admin.css (added)
-
tags/1.4.1/assets/admin.js (added)
-
tags/1.4.1/build (added)
-
tags/1.4.1/build/index.asset.php (added)
-
tags/1.4.1/build/index.js (added)
-
tags/1.4.1/composer.json (added)
-
tags/1.4.1/easy-critical-css.php (added)
-
tags/1.4.1/inc (added)
-
tags/1.4.1/inc/class-admin-settings.php (added)
-
tags/1.4.1/inc/class-api-request-handler.php (added)
-
tags/1.4.1/inc/class-api-service.php (added)
-
tags/1.4.1/inc/class-compatibility-cache.php (added)
-
tags/1.4.1/inc/class-compatibility-cloudflare.php (added)
-
tags/1.4.1/inc/class-compatibility-trellis.php (added)
-
tags/1.4.1/inc/class-compatibility-woocommerce.php (added)
-
tags/1.4.1/inc/class-compatibility-wp-rocket.php (added)
-
tags/1.4.1/inc/class-critical-css-injector.php (added)
-
tags/1.4.1/inc/class-critical-css-regenerate.php (added)
-
tags/1.4.1/inc/class-critical-css-server.php (added)
-
tags/1.4.1/inc/class-critical-css-status.php (added)
-
tags/1.4.1/inc/class-critical-css.php (added)
-
tags/1.4.1/inc/class-database.php (added)
-
tags/1.4.1/inc/class-debug.php (added)
-
tags/1.4.1/inc/class-delete-handler.php (added)
-
tags/1.4.1/inc/class-gutenberg.php (added)
-
tags/1.4.1/inc/class-helpers.php (added)
-
tags/1.4.1/inc/class-individual-settings.php (added)
-
tags/1.4.1/inc/class-plugin.php (added)
-
tags/1.4.1/inc/class-reset-handler.php (added)
-
tags/1.4.1/inc/class-rest-api.php (added)
-
tags/1.4.1/inc/class-settings.php (added)
-
tags/1.4.1/inc/class-uninstall-handler.php (added)
-
tags/1.4.1/inc/load-freemius.php (added)
-
tags/1.4.1/package.json (added)
-
tags/1.4.1/readme.txt (added)
-
tags/1.4.1/src (added)
-
tags/1.4.1/src/components (added)
-
tags/1.4.1/src/components/generateButton.tsx (added)
-
tags/1.4.1/src/components/settingsField.tsx (added)
-
tags/1.4.1/src/components/settingsPanel.tsx (added)
-
tags/1.4.1/src/components/statusIndicator.tsx (added)
-
tags/1.4.1/src/hooks (added)
-
tags/1.4.1/src/hooks/useEffectiveSettings.ts (added)
-
tags/1.4.1/src/hooks/usePostSaving.ts (added)
-
tags/1.4.1/src/hooks/useSettings.ts (added)
-
tags/1.4.1/src/hooks/useSettingsVisibility.ts (added)
-
tags/1.4.1/src/hooks/useStatus.ts (added)
-
tags/1.4.1/src/index.tsx (added)
-
tags/1.4.1/src/types (added)
-
tags/1.4.1/src/types/types.ts (added)
-
tags/1.4.1/src/types/wordpress.d.ts (added)
-
tags/1.4.1/vendor (added)
-
tags/1.4.1/vendor/autoload.php (added)
-
tags/1.4.1/vendor/composer (added)
-
tags/1.4.1/vendor/composer/ClassLoader.php (added)
-
tags/1.4.1/vendor/composer/InstalledVersions.php (added)
-
tags/1.4.1/vendor/composer/LICENSE (added)
-
tags/1.4.1/vendor/composer/autoload_classmap.php (added)
-
tags/1.4.1/vendor/composer/autoload_files.php (added)
-
tags/1.4.1/vendor/composer/autoload_namespaces.php (added)
-
tags/1.4.1/vendor/composer/autoload_psr4.php (added)
-
tags/1.4.1/vendor/composer/autoload_real.php (added)
-
tags/1.4.1/vendor/composer/autoload_static.php (added)
-
tags/1.4.1/vendor/composer/installed.json (added)
-
tags/1.4.1/vendor/composer/installed.php (added)
-
tags/1.4.1/vendor/composer/platform_check.php (added)
-
tags/1.4.1/vendor/freemius (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/LICENSE.txt (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/account.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/add-ons.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/affiliation.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/checkout.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/clone-resolution.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/common.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/connect.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/debug.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/dialog-boxes.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/gdpr-optin-notice.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/optout.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/admin/plugins.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/customizer.css (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/css/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/img (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/img/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/img/plugin-icon.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/img/theme-icon.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/jquery.form.js (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.js (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/postmessage.js (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/14fb1bd5b7c41648488b06147f50a0dc.svg (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/178afa6030e76635dbe835e111d2c507.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/27b5a722a5553d9de0170325267fccec.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/4375c4a3ddc6f637c2ab9a2d7220f91e.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/4529cac82a2d1f300d3c4702b7b5e8f3.svg (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/5480ed23b199531a8cbc05924f26952b.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/b4f3b958f4a019862d81b15f3f8eee3a.svg (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/c03f665db27af43971565560adfba594.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/cb5fc4f6ec7ada72e986f6e7dde365bf.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/dd89563360f0272635c8f0ab7d7f1402.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/e366d70661d8ad2493bd6afbd779f125.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/f18006f6535a1a6e9c6bfbffafe6f18a.svg (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/f3aac72a8e63997d6bb888f816457e9b.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/f928f1be99776af83e8e6be4baf8ffe7.svg (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/fde48e4609a6ddc11d639fc2421f2afd.png (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/freemius-pricing.js (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/assets/js/pricing/freemius-pricing.js.LICENSE.txt (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/composer.json (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/config.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-freemius-abstract.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-freemius.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-admin-notices.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-api.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-garbage-collector.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-hook-snapshot.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-lock.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-logger.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-options.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-plugin-updater.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-security.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-storage.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/class-fs-user-lock.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/customizer (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-support-section.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-upsell-control.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/customizer/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/debug (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/debug/class-fs-debug-bar-panel.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/debug/debug-bar-start.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/debug/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-affiliate-terms.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-affiliate.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-billing.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-entity.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-payment.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin-info.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin-license.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin-plan.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin-tag.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-pricing.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-scope-entity.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-site.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-subscription.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/class-fs-user.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/entities/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/fs-core-functions.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/fs-essential-functions.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/fs-html-escaping-functions.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/fs-plugin-info-dialog.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/l10n.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-admin-menu-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-admin-notice-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-cache-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-checkout-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-clone-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-contact-form-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-debug-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-gdpr-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-key-value-storage.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-license-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-option-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-permission-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-plan-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/class-fs-plugin-manager.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/managers/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions/ArgumentNotExistException.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions/EmptyArgumentException.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions/Exception.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions/InvalidArgumentException.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions/OAuthException.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/Exceptions/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/FreemiusBase.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/FreemiusWordPress.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/LICENSE.txt (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/sdk/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/supplements (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-1.1.7.1.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-2.2.1.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/supplements/fs-migration-2.5.1.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/includes/supplements/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-cs_CZ.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-da_DK.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-de_DE.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-es_ES.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-fr_FR.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-he_IL.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-hu_HU.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-it_IT.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-ja.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-nl_NL.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-ru_RU.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-ta.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius-zh_CN.mo (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/freemius.pot (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/languages/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/require.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/start.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/billing.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials/activate-license-button.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials/addon.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials/deactivate-license-button.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials/disconnect-button.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/partials/site.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/account/payments.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/add-ons.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/add-trial-to-pricing.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/admin-notice.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/ajax-loader.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/api-connectivity-message-js.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/auto-installation.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/checkout (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/checkout.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/checkout/frame.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/checkout/process-redirect.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/checkout/redirect.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/clone-resolution-js.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/connect (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/connect.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/connect/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/connect/permission.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/connect/permissions-group.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/contact.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug/api-calls.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug/logger.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug/plugins-themes-sync.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/debug/scheduled-crons.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/email.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/affiliation.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/data-debug-mode.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/deactivation (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/deactivation/contact.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/deactivation/form.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/deactivation/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/deactivation/retry-skip.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/email-address-update.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/license-activation.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/optout.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-handler.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-metadata.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/resend-key.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/subscription-cancellation.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/trial-start.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/forms/user-change.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/gdpr-optin-js.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/js (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/js/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/js/jquery.content-change.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/js/open-license-activation.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/js/permissions.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/js/style-premium-theme.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/partials (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/partials/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/partials/network-activation.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/plugin-icon.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/plugin-info (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/plugin-info/description.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/plugin-info/features.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/plugin-info/index.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/plugin-info/screenshots.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/pricing.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/secure-https-header.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/sticky-admin-notice-js.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/tabs-capture-js.php (added)
-
tags/1.4.1/vendor/freemius/wordpress-sdk/templates/tabs.php (added)
-
trunk/assets/admin.js (modified) (2 diffs)
-
trunk/easy-critical-css.php (modified) (1 diff)
-
trunk/inc/class-admin-settings.php (modified) (14 diffs)
-
trunk/inc/class-compatibility-cloudflare.php (modified) (1 diff)
-
trunk/inc/class-plugin.php (modified) (1 diff)
-
trunk/inc/class-reset-handler.php (modified) (1 diff)
-
trunk/inc/class-rest-api.php (modified) (4 diffs)
-
trunk/inc/class-settings.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/vendor/freemius/wordpress-sdk/PATCHES.txt (deleted)
Legend:
- Unmodified
- Added
- Removed
-
easy-critical-css/trunk/assets/admin.js
r3388125 r3394020 73 73 setupToggleListeners() 74 74 75 // Cloudflare Change button logic 75 // Cloudflare Change/Undo button logic 76 function updateCloudflareChanged(key, add) { 77 var hidden = document.getElementById('easy_cc_cloudflare_changed') 78 if (!hidden) return 79 var arr = hidden.value ? hidden.value.split(',') : [] 80 if (add) { 81 if (!arr.includes(key)) arr.push(key) 82 } else { 83 arr = arr.filter(function(k) { return k !== key }) 84 } 85 hidden.value = arr.join(',') 86 } 87 76 88 document.querySelectorAll('.ecc-cloudflare-change').forEach(function(btn) { 77 89 btn.addEventListener('click', function() { 78 var field = document.querySelector('input[name="' + btn.getAttribute('data-field') + '"]') 90 var key = btn.getAttribute('data-cloudflare-key') 91 var field = document.querySelector('input[data-cloudflare-key="' + key + '"]') 92 var undoBtn = document.querySelector('.ecc-cloudflare-undo[data-cloudflare-key="' + key + '"]') 79 93 if (field) { 80 94 field.disabled = false … … 82 96 field.focus() 83 97 btn.style.display = 'none' 98 if (undoBtn) undoBtn.style.display = '' 99 updateCloudflareChanged(key, true) 100 } 101 }) 102 }) 103 104 document.querySelectorAll('.ecc-cloudflare-undo').forEach(function(btn) { 105 btn.addEventListener('click', function() { 106 var key = btn.getAttribute('data-cloudflare-key') 107 var field = document.querySelector('input[data-cloudflare-key="' + key + '"]') 108 var changeBtn = document.querySelector('.ecc-cloudflare-change[data-cloudflare-key="' + key + '"]') 109 if (field) { 110 field.disabled = true 111 var masked = field.getAttribute('data-original-masked') 112 if (masked !== null) field.value = masked 113 btn.style.display = 'none' 114 if (changeBtn) changeBtn.style.display = '' 115 updateCloudflareChanged(key, false) 84 116 } 85 117 }) -
easy-critical-css/trunk/easy-critical-css.php
r3388125 r3394020 3 3 * Plugin Name: Easy Critical CSS 4 4 * Description: Easily inject Critical CSS and optimized Secondary CSS to improve page speed and performance. 5 * Version: 1.4. 05 * Version: 1.4.1 6 6 * Requires at least: 6.2 7 7 * Tested up to: 6.8.2 -
easy-critical-css/trunk/inc/class-admin-settings.php
r3388125 r3394020 51 51 settings_fields( 'easy-critical-css' ); 52 52 do_settings_sections( 'easy-critical-css' ); 53 echo '<input type="hidden" id="easy_cc_cloudflare_changed" name="easy_cc_cloudflare_changed" value="" />'; 53 54 submit_button(); 54 55 ?> … … 126 127 $warning = '' 127 128 ) { 128 $value = get_option( "easy_cc_$key", $default_value );129 $disabled = false;130 $masked_value = '';129 $value = get_option( "easy_cc_$key", $default_value ); 130 $disabled = false; 131 $masked_value = ''; 131 132 $show_change_btn = false; 132 133 // Cloudflare masking logic … … 137 138 'cloudflare_zone_id' => 'CLOUDFLARE_ZONE_ID', 138 139 ]; 139 $const = $const_map[ $key ];140 $const = $const_map[ $key ]; 140 141 if ( defined( $const ) && constant( $const ) ) { 141 142 $disabled = true; 142 $raw = (string) constant( $const );143 $len = strlen( $raw );143 $raw = (string) constant( $const ); 144 $len = strlen( $raw ); 144 145 if ( $len > 4 ) { 145 146 $masked_value = substr( $raw, 0, 2 ) . str_repeat( '*', $len - 4 ) . substr( $raw, -2 ); … … 148 149 } 149 150 } elseif ( ! empty( $value ) ) { 150 $disabled = true;151 $disabled = true; 151 152 $show_change_btn = true; 152 $raw = (string) $value;153 $len = strlen( $raw );153 $raw = (string) $value; 154 $len = strlen( $raw ); 154 155 if ( $len > 4 ) { 155 156 $masked_value = substr( $raw, 0, 2 ) . str_repeat( '*', $len - 4 ) . substr( $raw, -2 ); … … 205 206 } elseif ( $type === 'text' ) { 206 207 ?> 207 <input type="text" name="easy_cc_<?php echo esc_attr( $key ); ?>" value="<?php echo esc_attr( $disabled ? $masked_value : $value ); ?>" <?php disabled( $disabled ); ?> autocomplete="off" /> 208 <?php if ( $disabled && $show_change_btn ) : ?> 209 <button type="button" class="button button-secondary ecc-cloudflare-change" data-field="easy_cc_<?php echo esc_attr( $key ); ?>"><?php esc_html_e( 'Change', 'easy-critical-css' ); ?></button> 210 <?php elseif ( $disabled ) : ?> 208 <input type="text" name="easy_cc_<?php echo esc_attr( $key ); ?>" value="<?php echo esc_attr( $disabled ? $masked_value : $value ); ?>" <?php disabled( $disabled ); ?> autocomplete="off" data-cloudflare-key="<?php echo esc_attr( $key ); ?>" 209 <?php 210 if ( $disabled ) { 211 echo ' data-original-masked="' . esc_attr( $masked_value ) . '"';} 212 ?> 213 /> 214 <?php if ( $disabled && $show_change_btn ) { ?> 215 <button type="button" class="button button-secondary ecc-cloudflare-change" data-cloudflare-key="<?php echo esc_attr( $key ); ?>"><?php esc_html_e( 'Change', 'easy-critical-css' ); ?></button> 216 <button type="button" class="button button-secondary ecc-cloudflare-undo" data-cloudflare-key="<?php echo esc_attr( $key ); ?>" style="display:none; margin-left:4px;">Undo</button> 217 <?php } elseif ( $disabled ) { ?> 211 218 <span style="color:#888; font-size:12px; margin-left:8px;">(<?php esc_html_e( 'Set via constant', 'easy-critical-css' ); ?>)</span> 212 <?php endif;?>219 <?php } ?> 213 220 <?php 214 221 } … … 412 419 'basic' => true, 413 420 ], 414 'cloudflare_email' => [421 'cloudflare_email' => [ 415 422 'label' => __( 'Cloudflare Email', 'easy-critical-css' ), 416 423 'type' => 'text', … … 418 425 'desc' => __( 'Cloudflare account email for API access. If the CLOUDFLARE_EMAIL constant is defined, this field is disabled and the value is hidden for privacy.', 'easy-critical-css' ), 419 426 ], 420 'cloudflare_api_key' => [427 'cloudflare_api_key' => [ 421 428 'label' => __( 'Cloudflare API Key', 'easy-critical-css' ), 422 429 'type' => 'text', … … 424 431 'desc' => __( 'Cloudflare API key for API access. If the CLOUDFLARE_API_KEY constant is defined, this field is disabled and the value is hidden for privacy.', 'easy-critical-css' ), 425 432 ], 426 'cloudflare_zone_id' => [433 'cloudflare_zone_id' => [ 427 434 'label' => __( 'Cloudflare Zone ID', 'easy-critical-css' ), 428 435 'type' => 'text', … … 447 454 448 455 public static function sanitize_settings( $value ) { 449 $key = current_filter(); // Get current setting being sanitized 450 $key = str_replace( 'sanitize_option_easy_cc_', '', $key ); // Determine actual key 456 $key = current_filter(); // Get current setting being sanitized. 457 $key = str_replace( 'sanitize_option_easy_cc_', '', $key ); // Determine actual key. 458 459 // Only update Cloudflare if value marked for change or previously empty. 460 $cloudflare_keys = [ 'cloudflare_email', 'cloudflare_api_key', 'cloudflare_zone_id' ]; 461 if ( in_array( $key, $cloudflare_keys, true ) ) { 462 $changed = []; 463 if ( isset( $_POST['easy_cc_cloudflare_changed'] ) ) { 464 // Only allow known Cloudflare keys for safety reasons. 465 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce checked below. 466 $cloudflare_changed_post = ''; 467 if ( isset( $_POST['easy_cc_cloudflare_changed'] ) ) { 468 $cloudflare_changed_post = sanitize_text_field( wp_unslash( $_POST['easy_cc_cloudflare_changed'] ) ); 469 } 470 $raw = explode( ',', $cloudflare_changed_post ); 471 foreach ( $raw as $item ) { 472 $item = trim( $item ); 473 if ( in_array( $item, $cloudflare_keys, true ) ) { 474 $changed[] = $item; 475 } 476 } 477 } 478 $existing = get_option( 'easy_cc_' . $key, '' ); 479 if ( ! in_array( $key, $changed, true ) && $existing !== '' ) { 480 // Not changed and already set, preserve existing value 481 return $existing; 482 } 483 } 484 485 // Nonce verification for Cloudflare settings change. 486 if ( in_array( $key, $cloudflare_keys, true ) && isset( $_POST['easy_cc_cloudflare_changed'] ) ) { 487 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce checked here. 488 if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ), 'easy-critical-css-options' ) ) { 489 // Nonce missing or invalid, do not process. 490 return get_option( 'easy_cc_' . $key, '' ); 491 } 492 } 451 493 452 494 // Checkboxes. … … 512 554 'easy-critical-css-advanced-section', 513 555 '', 514 function () {556 function () { 515 557 ?> 516 558 <div id="ecc-advanced-settings-toggle"> … … 532 574 foreach ( $settings as $key => $setting ) { 533 575 $is_basic = isset( $setting['basic'] ) && $setting['basic']; 534 $section = $is_basic ? 'easy-critical-css-basic-section' : 'easy-critical-css-advanced-section';535 576 $section = $is_basic ? 'easy-critical-css-basic-section' : 'easy-critical-css-advanced-section'; 577 536 578 add_settings_field( 537 579 "easy_cc_$key", … … 539 581 function () use ( $key, $setting, $is_basic ) { 540 582 static $last_advanced_key = null; 541 static $all_keys = null;542 583 static $all_keys = null; 584 543 585 if ( $all_keys === null ) { 544 586 $all_keys = array_keys( self::get_settings_schema() ); 545 587 // Find the last advanced setting 546 588 foreach ( array_reverse( $all_keys ) as $check_key ) { 547 $check_setting = self::get_settings_schema()[ $check_key];589 $check_setting = self::get_settings_schema()[ $check_key ]; 548 590 if ( ! isset( $check_setting['basic'] ) || ! $check_setting['basic'] ) { 549 591 $last_advanced_key = $check_key; … … 552 594 } 553 595 } 554 596 555 597 $wrapper_class = $is_basic ? 'ecc-basic-setting' : 'ecc-advanced-setting'; 556 598 echo '<div class="' . esc_attr( $wrapper_class ) . '">'; … … 565 607 ); 566 608 echo '</div>'; 567 609 568 610 // Close advanced settings div after the last advanced setting 569 611 if ( $key === $last_advanced_key ) { -
easy-critical-css/trunk/inc/class-compatibility-cloudflare.php
r3388125 r3394020 28 28 } 29 29 30 // Prefer constants, fallback to settings. 31 $cloudflare_email = defined( 'CLOUDFLARE_EMAIL' ) ? CLOUDFLARE_EMAIL : Settings::get_global_cloudflare_email(); 32 if ( empty( $cloudflare_email ) ) { 33 return false; 34 } 35 36 $cloudflare_api_key = defined( 'CLOUDFLARE_API_KEY' ) ? CLOUDFLARE_API_KEY : Settings::get_global_cloudflare_api_key(); 37 if ( empty( $cloudflare_api_key ) ) { 38 return false; 39 } 40 41 $cloudflare_zone_id = defined( 'CLOUDFLARE_ZONE_ID' ) ? CLOUDFLARE_ZONE_ID : Settings::get_global_cloudflare_zone_id(); 42 if ( empty( $cloudflare_zone_id ) ) { 30 $cloudflare_email = Settings::get_global_cloudflare_email(); 31 $cloudflare_api_key = Settings::get_global_cloudflare_api_key(); 32 $cloudflare_zone_id = Settings::get_global_cloudflare_zone_id(); 33 if ( empty( $cloudflare_email ) || empty( $cloudflare_api_key ) || empty( $cloudflare_zone_id ) ) { 43 34 return false; 44 35 } -
easy-critical-css/trunk/inc/class-plugin.php
r3336970 r3394020 10 10 private static $instance = null; 11 11 12 private static $plugin_version = '1. 3.1';12 private static $plugin_version = '1.4.1'; 13 13 14 14 private static $db_version = '2'; -
easy-critical-css/trunk/inc/class-reset-handler.php
r3327873 r3394020 24 24 'regenerate_triggers', 25 25 'expired_css_behavior', 26 'cloudflare_email', 27 'cloudflare_api_key', 28 'cloudflare_zone_id', 29 'debug_mode', 26 30 ]; 27 31 foreach ( $settings as $setting ) { -
easy-critical-css/trunk/inc/class-rest-api.php
r3336970 r3394020 12 12 class REST_API { 13 13 public static $route_namespace = 'easy-critical-css/v1'; 14 15 public static $max_raw_bytes = 5242880; // 5 * 1024 * 1024 (5 MB). 16 public static $max_decoded_bytes = 12582912; // 12 * 1024 * 1024 (12 MB). 17 public static $max_css_bytes = 2097152; // 2 * 1024 * 1024 (2 MB). 18 14 19 public static function init() { 15 20 add_action( 'rest_api_init', [ __CLASS__, 'register_routes' ] ); … … 25 30 // Open permission_callback because request validation is securely handled at the start of `handle_critical_css` callback through a handshake validation. 26 31 'permission_callback' => '__return_true', 27 'args' => [ 28 'hash' => [ 29 'required' => true, 30 'type' => 'string', 31 ], 32 'handshake' => [ 33 'required' => true, 34 'type' => 'string', 35 ], 36 'criticalCSS' => [ 37 'required' => false, 38 'type' => 'string', 39 ], 40 'remainingCSS' => [ 41 'required' => false, 42 'type' => 'string', 43 ], 44 'secondaryCSS' => [ 45 'required' => false, 46 'type' => 'string', 47 ], 48 'criticalCSSUrl' => [ 49 'required' => false, 50 'type' => 'string', 51 'validate_callback' => [ __CLASS__, 'validate_criticalcss_net_url' ], 52 ], 53 'remainingCSSUrl' => [ 54 'required' => false, 55 'type' => 'string', 56 'validate_callback' => [ __CLASS__, 'validate_criticalcss_net_url' ], 57 ], 58 'secondaryCSSUrl' => [ 59 'required' => false, 60 'type' => 'string', 61 'validate_callback' => [ __CLASS__, 'validate_criticalcss_net_url' ], 62 ], 63 'url' => [ 64 'required' => true, 65 'type' => 'string', 66 'validate_callback' => function ( $url ) { 67 return (bool) filter_var( $url, FILTER_VALIDATE_URL ); 68 }, 69 ], 70 ], 32 // Intentionally omitting 'args' here so the REST server does not pre-validate/parse the request body and gzipped content can be passed through. 33 // Validation and parsing (including gzip handling) is performed inside the callback. 71 34 ] 72 35 ); … … 265 228 } 266 229 230 private static function validate_receive_params( $params ) { 231 // Basic shape 232 if ( ! is_array( $params ) ) { 233 return new WP_Error( 'invalid_params', __( 'Invalid request parameters.', 'easy-critical-css' ), [ 'status' => 400 ] ); 234 } 235 236 // Required fields 237 if ( empty( $params['hash'] ) ) { 238 return new WP_Error( 'missing_hash', __( 'Hashed URL is missing.', 'easy-critical-css' ), [ 'status' => 400 ] ); 239 } 240 241 if ( ! preg_match( '/^[A-Fa-f0-9]{32}$/', $params['hash'] ) ) { 242 return new WP_Error( 'invalid_hash', __( 'Invalid hash format.', 'easy-critical-css' ), [ 'status' => 400 ] ); 243 } 244 245 if ( empty( $params['handshake'] ) ) { 246 return new WP_Error( 'missing_handshake', __( 'Handshake key is missing.', 'easy-critical-css' ), [ 'status' => 400 ] ); 247 } 248 249 if ( ! is_string( $params['handshake'] ) ) { 250 return new WP_Error( 'invalid_type', __( 'handshake must be a string.', 'easy-critical-css' ), [ 'status' => 400 ] ); 251 } 252 253 // URL if present should be valid and a string. 254 if ( isset( $params['url'] ) ) { 255 if ( ! is_string( $params['url'] ) || filter_var( $params['url'], FILTER_VALIDATE_URL ) === false ) { 256 return new WP_Error( 'invalid_url', __( 'Invalid URL provided.', 'easy-critical-css' ), [ 'status' => 400 ] ); 257 } 258 } 259 260 // Per-CSS type & size checks. 261 foreach ( [ 'criticalCSS', 'secondaryCSS', 'remainingCSS' ] as $css_key ) { 262 if ( isset( $params[ $css_key ] ) ) { 263 if ( ! is_string( $params[ $css_key ] ) ) { 264 // translators: %s is the CSS parameter name. 265 return new WP_Error( 'invalid_type', sprintf( __( '%s must be a string.', 'easy-critical-css' ), $css_key ), [ 'status' => 400 ] ); 266 } 267 if ( strlen( $params[ $css_key ] ) > self::$max_css_bytes ) { 268 // translators: %s is the CSS parameter name. 269 return new WP_Error( 'css_too_large', sprintf( __( '%s too large.', 'easy-critical-css' ), $css_key ), [ 'status' => 413 ] ); 270 } 271 } 272 } 273 274 // Validate CSS URLs. 275 foreach ( [ 'criticalCSSUrl', 'remainingCSSUrl', 'secondaryCSSUrl' ] as $url_key ) { 276 if ( isset( $params[ $url_key ] ) && $params[ $url_key ] !== '' ) { 277 if ( ! is_string( $params[ $url_key ] ) || ! self::validate_criticalcss_net_url( $params[ $url_key ] ) ) { 278 // translators: %s is the CSS URL parameter name. 279 return new WP_Error( 'invalid_css_url', sprintf( __( '%s is not a valid criticalcss.net URL.', 'easy-critical-css' ), $url_key ), [ 'status' => 400 ] ); 280 } 281 } 282 } 283 284 return true; 285 } 286 267 287 private static function remove_old_css_files( $hash ) { 268 288 $upload_dir = wp_upload_dir(); … … 299 319 300 320 public static function handle_critical_css( WP_REST_Request $request ) { 301 $params = $request->get_params(); // Get all request parameters at once. 302 $handshake = sanitize_text_field( $request->get_param( 'handshake' ) ); 303 304 // Check for required params. 305 if ( empty( $handshake ) ) { 321 // Diagnostic logs: log content encoding and content length for debugging. 322 $content_encoding = ! empty( $_SERVER['HTTP_CONTENT_ENCODING'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_CONTENT_ENCODING'] ) ) : ''; 323 $content_length = ! empty( $_SERVER['CONTENT_LENGTH'] ) ? intval( wp_unslash( $_SERVER['CONTENT_LENGTH'] ) ) : 0; 324 325 // Quick reject if Content-Length advertises a too-large body. 326 if ( $content_length > 0 && $content_length > self::$max_raw_bytes ) { 306 327 return new WP_Error( 307 'missing_handshake', 308 __( 'Handshake key is missing.', 'easy-critical-css' ), 309 [ 'status' => 400 ] 310 ); 311 } 312 313 if ( empty( $params['hash'] ) ) { 314 return new WP_Error( 315 'missing_hash', 316 __( 'Hashed URL is missing.', 'easy-critical-css' ), 317 [ 'status' => 400 ] 318 ); 328 'request_too_large', 329 __( 'Request body too large.', 'easy-critical-css' ), 330 [ 'status' => 413 ] 331 ); 332 } 333 334 // Accept gzipped request bodies if sent that way. 335 $raw = file_get_contents( 'php://input' ); 336 337 if ( stripos( $content_encoding, 'gzip' ) !== false ) { 338 if ( function_exists( 'gzdecode' ) ) { 339 $decoded = gzdecode( $raw ); 340 if ( $decoded === false ) { 341 return new WP_Error( 342 'invalid_gzip', 343 __( 'Invalid gzip encoding.', 'easy-critical-css' ), 344 [ 'status' => 400 ] 345 ); 346 } 347 $raw = $decoded; 348 } else { 349 return new WP_Error( 350 'no_gzdecode', 351 __( 'Server does not support gzip decoding.', 'easy-critical-css' ), 352 [ 'status' => 501 ] 353 ); 354 } 355 } 356 357 // If gzipped and decoded above, parse JSON from $raw; otherwise, use normal param parsing. 358 if ( ! empty( $raw ) && stripos( $content_encoding, 'gzip' ) !== false ) { 359 // Stop any too large payloads before JSON decoding. 360 if ( strlen( $raw ) > self::$max_decoded_bytes ) { 361 return new WP_Error( 362 'request_too_large', 363 __( 'Decoded request body too large.', 'easy-critical-css' ), 364 [ 'status' => 413 ] 365 ); 366 } 367 $params = json_decode( $raw, true ); 368 if ( ! is_array( $params ) ) { 369 return new WP_Error( 370 'invalid_json', 371 __( 'Invalid JSON in gzipped body.', 'easy-critical-css' ), 372 [ 'status' => 400 ] 373 ); 374 } 375 $handshake = ! empty( $params['handshake'] ) ? sanitize_text_field( $params['handshake'] ) : ''; 376 } else { 377 $params = $request->get_params(); // Get all request parameters at once. 378 $handshake = sanitize_text_field( $request->get_param( 'handshake' ) ); 379 } 380 381 // Centralized validation of incoming params (hash, handshake, sizes, urls). 382 $valid = self::validate_receive_params( $params ); 383 if ( is_wp_error( $valid ) ) { 384 return $valid; 319 385 } 320 386 -
easy-critical-css/trunk/inc/class-settings.php
r3388125 r3394020 298 298 */ 299 299 public static function get_global_cloudflare_email() { 300 if ( defined( 'CLOUDFLARE_EMAIL' ) ) { 301 return (string) CLOUDFLARE_EMAIL; 302 } 300 303 return (string) self::get_global_setting( 'cloudflare_email', '' ); 301 304 } … … 308 311 */ 309 312 public static function get_global_cloudflare_api_key() { 313 if ( defined( 'CLOUDFLARE_API_KEY' ) ) { 314 return (string) CLOUDFLARE_API_KEY; 315 } 310 316 return (string) self::get_global_setting( 'cloudflare_api_key', '' ); 311 317 } … … 318 324 */ 319 325 public static function get_global_cloudflare_zone_id() { 326 if ( defined( 'CLOUDFLARE_ZONE_ID' ) ) { 327 return (string) CLOUDFLARE_ZONE_ID; 328 } 320 329 return (string) self::get_global_setting( 'cloudflare_zone_id', '' ); 321 330 } -
easy-critical-css/trunk/readme.txt
r3388125 r3394020 102 102 == Changelog == 103 103 104 = 1.4.1 = 105 - OPTIMIZATION: Allows larger Critical CSS payloads via REST API 106 - FIX: Fixes Cloudflare settings persistency issue 107 104 108 = 1.4.0 = 105 109 - FEATURE: Separates advanced settings for better usability … … 161 165 - FEATURE: Automated Critical CSS generation through API 162 166 - FEATURE: Integration with popular caching plugins 167 168 == Upgrade Notice == 169 170 = 1.4.1 = 171 * This update provides bug fixes and optimizations to the plugin. -
easy-critical-css/trunk/vendor/composer/installed.php
r3388125 r3394020 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' 91fed063ca758df5f87fa7fc19d112f4c438b387',6 'reference' => '7fc1015d3f099e77bc59b0e47121c84041185aa0', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 23 23 'pretty_version' => 'dev-main', 24 24 'version' => 'dev-main', 25 'reference' => ' 91fed063ca758df5f87fa7fc19d112f4c438b387',25 'reference' => '7fc1015d3f099e77bc59b0e47121c84041185aa0', 26 26 'type' => 'wordpress-plugin', 27 27 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.