Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Create deprecated_dependency wrapper to log errors conditionally #6074

Merged
merged 1 commit into from Mar 22, 2022

Conversation

mikejolley
Copy link
Member

@mikejolley mikejolley commented Mar 22, 2022

Adds a wrapper for class/namespace deprecation that:

  • Ensures nothing is output if the headers have not yet been sent
  • Logs instead of triggering an error if something is "soft deprecated" based on current version

For the namespace and class changes in the API, this will surface errors in the logs only until Blocks 7.4 in which case they will surface inline if WP_DEBUG mode is on.

Fixes #6070

Testing

  1. Enable Woo Subscriptions. It hasn't been updated with compatibility yet (I put in a PR a week ago).
  2. Enable WP_DEBUG mode
  3. Go to WP Admin. No notices are visible.
  4. Check the error log. See the notices there.
  5. Edit the code in this PR and remove the 7.4 from the function calls. Repeat steps 2-4 and confirm logs are used.

Changelog

Prevent deprecation messages causing PHP warnings

@mikejolley mikejolley self-assigned this Mar 22, 2022
@rubikuserbot rubikuserbot requested review from a team and tarhi-saad and removed request for a team March 22, 2022 11:37
@mikejolley mikejolley added status: needs review focus: rest api Work impacting REST api routes. labels Mar 22, 2022
@mikejolley mikejolley requested a review from senadir March 22, 2022 11:37
Copy link
Member

@senadir senadir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good to me.

@github-actions
Copy link
Contributor

Size Change: 0 B

Total Size: 862 kB

ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 5.92 kB
build/active-filters.js 6.96 kB
build/all-products-frontend.js 18.2 kB
build/all-products.js 33.9 kB
build/all-reviews.js 8.02 kB
build/attribute-filter-frontend.js 16.8 kB
build/attribute-filter.js 13.1 kB
build/blocks-checkout.js 17.4 kB
build/cart-blocks/accepted-payment-methods-frontend.js 1.16 kB
build/cart-blocks/checkout-button-frontend.js 1.15 kB
build/cart-blocks/empty-cart-frontend.js 346 B
build/cart-blocks/express-payment-frontend.js 5.19 kB
build/cart-blocks/filled-cart-frontend.js 759 B
build/cart-blocks/items-frontend.js 300 B
build/cart-blocks/line-items-frontend.js 5.5 kB
build/cart-blocks/order-summary-frontend.js 8.87 kB
build/cart-blocks/totals-frontend.js 320 B
build/cart-frontend.js 45 kB
build/cart.js 43.6 kB
build/checkout-blocks/actions-frontend.js 1.41 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.12 kB
build/checkout-blocks/billing-address-frontend.js 891 B
build/checkout-blocks/contact-information-frontend.js 2.83 kB
build/checkout-blocks/express-payment-frontend.js 5.49 kB
build/checkout-blocks/fields-frontend.js 344 B
build/checkout-blocks/order-note-frontend.js 1.52 kB
build/checkout-blocks/order-summary-frontend.js 11.3 kB
build/checkout-blocks/payment-frontend.js 7.77 kB
build/checkout-blocks/shipping-address-frontend.js 998 B
build/checkout-blocks/shipping-methods-frontend.js 4.74 kB
build/checkout-blocks/terms-frontend.js 1.22 kB
build/checkout-blocks/totals-frontend.js 325 B
build/checkout-frontend.js 47.2 kB
build/checkout.js 44.7 kB
build/featured-category.js 8.61 kB
build/featured-product.js 9.71 kB
build/handpicked-products.js 7.09 kB
build/legacy-template.js 2.19 kB
build/mini-cart-component-frontend.js 16.5 kB
build/mini-cart-contents-block/empty-cart-frontend.js 329 B
build/mini-cart-contents-block/filled-cart-frontend.js 230 B
build/mini-cart-contents-block/footer--mini-cart-contents-block/products-table-frontend.js 5.32 kB
build/mini-cart-contents-block/footer-frontend.js 5.67 kB
build/mini-cart-contents-block/items-frontend.js 226 B
build/mini-cart-contents-block/products-table-frontend.js 5.36 kB
build/mini-cart-contents-block/shopping-button-frontend.js 287 B
build/mini-cart-contents-block/title-frontend.js 367 B
build/mini-cart-contents.js 23.6 kB
build/mini-cart-frontend.js 1.72 kB
build/mini-cart.js 6.37 kB
build/price-filter-frontend.js 12.1 kB
build/price-filter.js 8.49 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-button--product-category-list--product-image--product-price--product-r--a0326d00.js 222 B
build/product-add-to-cart--product-button--product-image--product-title.js 2.64 kB
build/product-add-to-cart-frontend.js 7 kB
build/product-add-to-cart.js 7.47 kB
build/product-best-sellers.js 7.37 kB
build/product-button--product-category-list--product-image--product-price--product-rating--product-sale-b--e17c7c01.js 500 B
build/product-button-frontend.js 2.08 kB
build/product-button.js 2.29 kB
build/product-categories.js 3.17 kB
build/product-category-list-frontend.js 923 B
build/product-category-list.js 499 B
build/product-category.js 8.48 kB
build/product-image-frontend.js 1.85 kB
build/product-image.js 1.08 kB
build/product-new.js 7.67 kB
build/product-on-sale.js 7.98 kB
build/product-price-frontend.js 1.93 kB
build/product-price.js 1.51 kB
build/product-rating-frontend.js 1.15 kB
build/product-rating.js 730 B
build/product-sale-badge-frontend.js 1.09 kB
build/product-sale-badge.js 680 B
build/product-search.js 2.18 kB
build/product-sku-frontend.js 380 B
build/product-sku.js 382 B
build/product-stock-indicator-frontend.js 1.03 kB
build/product-stock-indicator.js 620 B
build/product-summary-frontend.js 1.33 kB
build/product-summary.js 918 B
build/product-tag-list-frontend.js 917 B
build/product-tag-list.js 495 B
build/product-tag.js 7.81 kB
build/product-title-frontend.js 1.28 kB
build/product-title.js 901 B
build/product-top-rated.js 7.9 kB
build/products-by-attribute.js 8.39 kB
build/reviews-by-category.js 11.4 kB
build/reviews-by-product.js 12.6 kB
build/reviews-frontend.js 6.97 kB
build/single-product-frontend.js 21.6 kB
build/single-product.js 10 kB
build/stock-filter-frontend.js 6.5 kB
build/stock-filter.js 6.57 kB
build/vendors--cart-blocks/line-items--cart-blocks/order-summary--checkout-blocks/order-summary--checkout--6efbf40e-frontend.js 5.26 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary--mini-cart-contents-block/products-table-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---4f3822fa-frontend.js 19.3 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.74 kB
build/vendors--mini-cart-contents-block/footer--mini-cart-contents-block/products-table-frontend.js 7.35 kB
build/vendors--product-add-to-cart-frontend.js 7.54 kB
build/wc-blocks-data.js 9.83 kB
build/wc-blocks-editor-style-rtl.css 4.84 kB
build/wc-blocks-editor-style.css 4.84 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 930 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 22.2 kB
build/wc-blocks-style.css 22.2 kB
build/wc-blocks-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 kB
build/wc-blocks-vendors.js 70.7 kB
build/wc-blocks.js 2.62 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.61 kB

compressed-size-action

Copy link
Contributor

@tarhi-saad tarhi-saad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test is successfully done! Looks good to me as well!

@senadir senadir merged commit efafee8 into trunk Mar 22, 2022
@senadir senadir deleted the fix/deprecation-before-headers-sent-6070 branch March 22, 2022 14:06
senadir pushed a commit that referenced this pull request Mar 23, 2022
Store Editing  E2E tests are failing because of an upstream regression, not related to this PR
senadir added a commit that referenced this pull request Mar 23, 2022
* Empty commit for release pull request

* Create deprecated_dependency wrapper to log errors conditionally (#6074)

Store Editing  E2E tests are failing because of an upstream regression, not related to this PR

* add readme

* add testing steps

* Bumping version strings to new version.

* Bumping version strings to new version.

* Bumping version strings to new version.

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Mike Jolley <mike.jolley@me.com>
Co-authored-by: Nadir Seghir <nadir.seghir@gmail.com>
senadir added a commit to woocommerce/woocommerce that referenced this pull request Mar 23, 2022
This pull updates the WooCommerce Blocks plugin to 7.2.1. It is intended to target WooCommerce 6.4 for release. This supercedes #32075.

Details from all the different releases included in this pull:

## Blocks 7.2.1
[Release PR](woocommerce/woocommerce-blocks#6072)
[Testing Instruction](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/testing/releases/721.md)

### Changelog entry

#### The following changelog entries are only those that impact existing blocks and functionality surfaced to users:

#### Bug fixes

- Don't trigger class deprecations notices if headers are already sent [#6074](woocommerce/woocommerce-blocks#6074)

### Changelog entry
> Dev - Update WooCommerce Blocks version to 7.2.1
@tjcafferkey tjcafferkey changed the title Create deprecated_dependency wrapper to log errors conditionally Prevent deprecation messages causing PHP warnings Mar 28, 2022
@tjcafferkey tjcafferkey changed the title Prevent deprecation messages causing PHP warnings Create deprecated_dependency wrapper to log errors conditionally Mar 28, 2022
@tjcafferkey tjcafferkey added type: enhancement The issue is a request for an enhancement. skip-changelog PRs that you don't want to appear in the changelog. labels Mar 28, 2022
chihsuan pushed a commit to woocommerce/woocommerce that referenced this pull request Mar 29, 2022
This pull updates the WooCommerce Blocks plugin to 7.2.1. It is intended to target WooCommerce 6.4 for release. This supercedes #32075.

Details from all the different releases included in this pull:

## Blocks 7.2.1
[Release PR](woocommerce/woocommerce-blocks#6072)
[Testing Instruction](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/testing/releases/721.md)

### Changelog entry

#### The following changelog entries are only those that impact existing blocks and functionality surfaced to users:

#### Bug fixes

- Don't trigger class deprecations notices if headers are already sent [#6074](woocommerce/woocommerce-blocks#6074)

### Changelog entry
> Dev - Update WooCommerce Blocks version to 7.2.1
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
focus: rest api Work impacting REST api routes. skip-changelog PRs that you don't want to appear in the changelog. type: enhancement The issue is a request for an enhancement.
Projects
None yet
4 participants