Commit Graph

26 Commits

Author SHA1 Message Date
Sergey Biryukov c03305852e Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes.
Dynamic (non-explicitly declared) properties are deprecated as of PHP 8.2 and are expected to become a fatal error in PHP 9.0.

There are a number of ways to mitigate this:
* If it is an accidental typo for a declared property: fix the typo.
* For known properties: declare them on the class.
* For unknown properties: add the magic `__get()`, `__set()`, et al. methods to the class or let the class extend `stdClass` which has highly optimized versions of these magic methods built in.
* For unknown ''use'' of dynamic properties, the `#[AllowDynamicProperties]` attribute can be added to the class. The attribute will automatically be inherited by child classes.

Trac ticket #56034 is open to investigate and handle the third and fourth type of situations, however it has become clear this will need more time and will not be ready in time for WP 6.1.

To reduce “noise” in the meantime, both in the error logs of WP users moving onto PHP 8.2, in the test run logs of WP itself, in test runs of plugins and themes, as well as to prevent duplicate tickets from being opened for the same issue, this commit adds the `#[AllowDynamicProperties]` attribute to all “parent” classes in WP.

The logic used for this commit is as follows:
* If a class already has the attribute: no action needed.
* If a class does not `extend`: add the attribute.
* If a class does `extend`:
 - If it extends `stdClass`: no action needed (as `stdClass` supports dynamic properties).
 - If it extends a PHP native class: add the attribute.
 - If it extends a class from one of WP's external dependencies: add the attribute.
* In all other cases: no action — the attribute should not be needed as child classes inherit from the parent.

Whether or not a class contains magic methods has not been taken into account, as a review of the currently existing magic methods has shown that those are generally not sturdy enough and often even set dynamic properties (which they should not). See the [https://www.youtube.com/watch?v=vDZWepDQQVE live stream from August 16, 2022] for more details.

This commit only affects classes in the `src` directory of WordPress core.
* Tests should not get this attribute, but should be fixed to not use dynamic properties instead. Patches for this are already being committed under ticket #56033.
* While a number bundled themes (2014, 2019, 2020, 2021) contain classes, they are not a part of this commit and may be updated separately.

Reference: [https://wiki.php.net/rfc/deprecate_dynamic_properties PHP RFC: Deprecate dynamic properties].

Follow-up to [53922].

Props jrf, hellofromTonya, markjaquith, peterwilsoncc, costdev, knutsp, aristath.
See #56513, #56034.
Built from https://develop.svn.wordpress.org/trunk@54133


git-svn-id: http://core.svn.wordpress.org/trunk@53692 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-12 15:47:14 +00:00
Sergey Biryukov 3180ab2cef Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-site-icon.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.

This commit renames the `$object` variable to `$attachment` in `WP_Site_Icon::insert_attachment()` and updates the documentation accordingly.

Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117].

Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53137


git-svn-id: http://core.svn.wordpress.org/trunk@52726 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-11 14:21:09 +00:00
antpb f80e5d0919 Media: Avoid suppressing errors when using `getimagesize()`.
Previously, all logic utilizing `getimagesize()` was supressing errors making it difficult to debug usage of the function. 

A new `wp_getimagesize()` function has been added to allow the errors to no longer be suppressed when `WP_DEBUG` is enabled.

Props Howdy_McGee, SergeyBiryukov, mukesh27, davidbaumwald, noisysocks, hellofromTonya.
Fixes #49889.

Built from https://develop.svn.wordpress.org/trunk@50146


git-svn-id: http://core.svn.wordpress.org/trunk@49825 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-02-02 16:53:04 +00:00
John Blackbourn 780cdb5eb5 Docs: Various docblock corrections relating to parameter types.
See #51800

Built from https://develop.svn.wordpress.org/trunk@49692


git-svn-id: http://core.svn.wordpress.org/trunk@49415 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-11-24 21:22:04 +00:00
Sergey Biryukov 001ffe81fb Docs: Improve inline comments per the documentation standards.
Includes minor code layout fixes for better readability.

See #48303.
Built from https://develop.svn.wordpress.org/trunk@47122


git-svn-id: http://core.svn.wordpress.org/trunk@46922 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-01-29 00:45:18 +00:00
Aaron Jorbin 71cf332e65 Replace usages of basename() with wp_basename() in order to support multibyte filenames
This is focused on the pieces of code that touch media files and the tests that support them. `basename` isn't multibyte compatible out of the box. See http://php.net/basename and https://bugs.php.net/bug.php?id=62119.

See #43170.
Props Viper007Bond.

Built from https://develop.svn.wordpress.org/trunk@44785


git-svn-id: http://core.svn.wordpress.org/trunk@44617 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-01 20:58:52 +00:00
John Blackbourn 1b5d6c6971 Docs: Document many more parameters and properties using typed array notation.
See #41756

Built from https://develop.svn.wordpress.org/trunk@42871


git-svn-id: http://core.svn.wordpress.org/trunk@42701 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-03-22 20:27:32 +00:00
Gary Pendergast aaf99e6913 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.


Built from https://develop.svn.wordpress.org/trunk@42343


git-svn-id: http://core.svn.wordpress.org/trunk@42172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-30 23:11:00 +00:00
Drew Jaynes 1a28ec87e1 Docs: Remove `@access` notations from method DocBlocks in wp-admin/* classes.
Prior to about 2013, many class methods lacked even access modifiers which made the `@access` notations that much more useful. Now that we've gotten to a point where the codebase is more mature from a maintenance perspective and we can finally remove these notations. Notable exceptions to this change include standalone functions notated as private as well as some classes still considered to represent "private" APIs.

See #41452.

Built from https://develop.svn.wordpress.org/trunk@41161


git-svn-id: http://core.svn.wordpress.org/trunk@41001 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-07-27 00:40:43 +00:00
Scott Taylor 9ce58d9d86 Site Icon: There is no good reason for `class-wp-site-icon.php` to drop a global instance of itself whenever the file is loaded. The lone use of the `global` instance of `WP_Site_Icon` is in an AJAX action that provides virtually no way to override - the file is loaded immediately before the `global` is used.
Let us remove the `$wp_site_icon` global. I will fall on the sword if this comes back to bite us (waiting with bated breath).

See #37699.

Built from https://develop.svn.wordpress.org/trunk@38355


git-svn-id: http://core.svn.wordpress.org/trunk@38296 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-08-25 19:09:35 +00:00
Drew Jaynes c3055cc190 Docs: Standardize hook docs in wp-admin/* to use third-person singular verbs per the inline documentation standards for PHP.
See #36913.

Built from https://develop.svn.wordpress.org/trunk@37488


git-svn-id: http://core.svn.wordpress.org/trunk@37456 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-22 18:01:30 +00:00
Konstantin Obenland f6941fddf4 Site Icon: Get site icon ID only when needed.
Cuts down on unnecessary queries, especially in environments that rely on
post meta a lot. Reverts [32997].

Props ap.koponen, swissspidy.
Fixes #34368.


Built from https://develop.svn.wordpress.org/trunk@35299


git-svn-id: http://core.svn.wordpress.org/trunk@35265 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-20 18:23:44 +00:00
Drew Jaynes 9f0f213d5e Docs: Add a missing file header for wp-admin/includes/class-wp-site-icon.php.
See #33701.

Built from https://develop.svn.wordpress.org/trunk@35271


git-svn-id: http://core.svn.wordpress.org/trunk@35237 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-19 20:09:26 +00:00
Scott Taylor 191400f9e6 Don't ever use the `guid` value when retrieving URLs for media, use `wp_get_attachment_url()`. Use `get_attached_file()` for path to file.
Fixes #33386.

Built from https://develop.svn.wordpress.org/trunk@34163


git-svn-id: http://core.svn.wordpress.org/trunk@34131 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 02:50:25 +00:00
Konstantin Obenland 0b0c456a44 Site Icon: Minor cleanup for `WP_Site_Icon` after [33329].
Built from https://develop.svn.wordpress.org/trunk@33446


git-svn-id: http://core.svn.wordpress.org/trunk@33413 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-27 16:09:25 +00:00
Konstantin Obenland 3248497cf3 Site Icon: Add crop preview to the media modal.
* Monkey patches imgAreaSelect library to support touch events.
* Removes Settings version of Site Icon since it would have been the same flow.
* Removes default value for Customizer setting - there is no default favicon.

Fixes #16434.



Built from https://develop.svn.wordpress.org/trunk@33329


git-svn-id: http://core.svn.wordpress.org/trunk@33301 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-20 15:57:25 +00:00
Konstantin Obenland 2829827c1c Site Icon: Add Android-specific app icon.
Falling back to Apple app icons is deprecated behavior and will not work
forever. 192px is the recommended size for that icon.

Props kraftbj.
Fixes #32964.


Built from https://develop.svn.wordpress.org/trunk@33202


git-svn-id: http://core.svn.wordpress.org/trunk@33174 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-13 17:58:47 +00:00
Drew Jaynes 88229587c0 Improving formatting for various pieces of inline documentation in the new `WP_Site_Icon` class added in 4.3.
See [32994]. See #32891.

Built from https://develop.svn.wordpress.org/trunk@33198


git-svn-id: http://core.svn.wordpress.org/trunk@33170 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-13 17:51:24 +00:00
Konstantin Obenland 13ab10fff7 Site Icon: Improve a11y in Settings.
Props afercia.
Fixes #32970.


Built from https://develop.svn.wordpress.org/trunk@33180


git-svn-id: http://core.svn.wordpress.org/trunk@33152 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-12 19:43:24 +00:00
Konstantin Obenland f29e5044cd Site Icon: Add Customizer UI.
Second part of the Site Icon feature after [32994] introduced it for Settings.

Props celloexpressions.
See #16434.


Built from https://develop.svn.wordpress.org/trunk@33154


git-svn-id: http://core.svn.wordpress.org/trunk@33126 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-10 21:33:24 +00:00
Konstantin Obenland 664b0373dc Site Icon: Switch to using H1 headings.
See #31650.

Props afercia.
Fixes #32885.


Built from https://develop.svn.wordpress.org/trunk@33084


git-svn-id: http://core.svn.wordpress.org/trunk@33055 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-04 18:49:27 +00:00
Konstantin Obenland cf22cd7d72 Site Icon: Remove date dropdown from media modal.
This also allows us to leverage the builtin `suggestedWidth` and
`suggestedHeight` parameters to convey the expected image size.

Props ocean90.
Fixes #32860.


Built from https://develop.svn.wordpress.org/trunk@33075


git-svn-id: http://core.svn.wordpress.org/trunk@33046 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-03 21:28:24 +00:00
Konstantin Obenland cd7a40bdc7 Site Icon: Improve responsiveness for small screen devices.
Using Jcrop's `trueSize` argument also allows us to get rid of all that behind
the scenes temp image creating and back and forth calculating of image sizes.

Props tyxla for initial patch.
See #16434.


Built from https://develop.svn.wordpress.org/trunk@33053


git-svn-id: http://core.svn.wordpress.org/trunk@33024 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-02 21:16:24 +00:00
Konstantin Obenland 0d270f67c2 Site Icon: Skip cropping if image has the correct size.
Props jipmoors for initial patch.
See #16434.


Built from https://develop.svn.wordpress.org/trunk@33051


git-svn-id: http://core.svn.wordpress.org/trunk@33022 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-02 20:40:25 +00:00
Konstantin Obenland f18fabc300 Site Icon: Move admin icon filter to its rightful place.
The action is unrelated to `WP_Site_Icon` itself.

Props kraftbj.
See #16434.


Built from https://develop.svn.wordpress.org/trunk@33011


git-svn-id: http://core.svn.wordpress.org/trunk@32982 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-30 23:26:25 +00:00
Konstantin Obenland 38e4211efb Use existing nomenclature pattern for Site Icon class.
Props kraftbj.
Fixes #32834.


Built from https://develop.svn.wordpress.org/trunk@33001


git-svn-id: http://core.svn.wordpress.org/trunk@32972 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-30 14:37:27 +00:00