Commit Graph

95 Commits

Author SHA1 Message Date
Jake Spurlock
140bd894d6 Media: Pass the appropriate reference into wp_getimagesize.
With changes that were introduced in [49889] the second parameter for getimagesize() function is expecting a a reference.

Previously, most calls did not pass the 2nd param, and as a result, we are getting unexpected results.

This was only a problem with applications that are using a custom stream wrapper, and the image contained EXIF data.

For more see:

* https://github.com/humanmade/S3-Uploads/issues/496
* https://github.com/aws/aws-sdk-php/issues/1923

Fixes #52826.
Props terriann, SergeyBiryukov, Mista-Flo, hellofromTonya, rinatkhaziev, whyisjake.



git-svn-id: https://develop.svn.wordpress.org/trunk@50552 602fd350-edb4-49c9-b593-d223f7449a82
2021-03-18 23:59:12 +00:00
Anthony Burchell
26fb7c9682 Media: Consistency in logic to pass wp_getimagesize() tests.
Previously, we used `DIR_TESTDATA` to determine if a test should skip a newly silenced error in `wp_getimagesize()`.

We are now using `WP_RUN_CORE_TESTS` instead for consistency.

Props hellofromTonya, SergeyBiryukov.
See #49889.


git-svn-id: https://develop.svn.wordpress.org/trunk@50170 602fd350-edb4-49c9-b593-d223f7449a82
2021-02-02 21:34:40 +00:00
Anthony Burchell
01df5322ef 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.


git-svn-id: https://develop.svn.wordpress.org/trunk@50146 602fd350-edb4-49c9-b593-d223f7449a82
2021-02-02 16:51:17 +00:00
John Blackbourn
8153c8ba02 Docs: Corrections and improvements to types used in various docblocks.
See #51800, #52217


git-svn-id: https://develop.svn.wordpress.org/trunk@49936 602fd350-edb4-49c9-b593-d223f7449a82
2021-01-05 17:14:24 +00:00
Sergey Biryukov
715daf875a Docs: In various @return tags, list the expected type first, instead of false or WP_Error.
Follow-up to [46696], [47060], [49926], [49927].

See #51800.

git-svn-id: https://develop.svn.wordpress.org/trunk@49929 602fd350-edb4-49c9-b593-d223f7449a82
2021-01-04 17:16:43 +00:00
John Blackbourn
679ccc35e6 Docs: Promote many bool types to true or false where only that value is used.
See #51800


git-svn-id: https://develop.svn.wordpress.org/trunk@49927 602fd350-edb4-49c9-b593-d223f7449a82
2021-01-03 22:02:13 +00:00
John Blackbourn
374b41ed13 Docs: Various docblock corrections particularly relating to boolean types.
See #51800


git-svn-id: https://develop.svn.wordpress.org/trunk@49926 602fd350-edb4-49c9-b593-d223f7449a82
2021-01-03 21:55:04 +00:00
John Blackbourn
dd076bb611 Media: Standardise the description for image size parameters.
This brings continuity to all the image related functions and filters which accept or pass a size parameter.

Props dilipbheda, johnbillion

Fixes #47364


git-svn-id: https://develop.svn.wordpress.org/trunk@49021 602fd350-edb4-49c9-b593-d223f7449a82
2020-09-20 16:21:42 +00:00
John Blackbourn
b620440519 Docs: Inline documentation improvements for media related functions and hooks.
See #47364, #50768


git-svn-id: https://develop.svn.wordpress.org/trunk@49020 602fd350-edb4-49c9-b593-d223f7449a82
2020-09-20 15:53:52 +00:00
John Blackbourn
ab25da99a0 Media: Correct some types for attachment ID parameters passed to functions and filters.
See #47364, #50768 


git-svn-id: https://develop.svn.wordpress.org/trunk@49017 602fd350-edb4-49c9-b593-d223f7449a82
2020-09-20 14:03:17 +00:00
Sergey Biryukov
0013f5979c Media: Make the is_gd_image() function available on front end.
This avoids a fatal error if a plugin calls image creation or editing functions like `wp_imagecreatetruecolor()` outside of the admin.

Follow-up to [48798]

Props BackuPs.
Fixes #51174. See #50833.

git-svn-id: https://develop.svn.wordpress.org/trunk@48905 602fd350-edb4-49c9-b593-d223f7449a82
2020-08-28 16:43:31 +00:00
Sergey Biryukov
a1e05cff28 Docs: Fix typo in the $image parameter description in is_gd_image().
Follow-up to [48798].

See #50833.

git-svn-id: https://develop.svn.wordpress.org/trunk@48799 602fd350-edb4-49c9-b593-d223f7449a82
2020-08-16 14:00:27 +00:00
Sergey Biryukov
cbaa88cb5a Code Modernization: Introduce is_gd_image() to check for PHP 8 GdImage object instances.
In PHP 8, the GD extension uses `GdImage` objects instead of resources for its underlying data structures.

This updates the existing `is_resource()` calls for image resources in core to accomodate for `GdImage` instances as well.

Props ayeshrajans, jrf.
Fixes #50833.

git-svn-id: https://develop.svn.wordpress.org/trunk@48798 602fd350-edb4-49c9-b593-d223f7449a82
2020-08-16 13:31:57 +00:00
John Blackbourn
285fa03b3a Docs: First pass at some inline docs fixes mostly made by PHPCBF.
See #49572, #50744

git-svn-id: https://develop.svn.wordpress.org/trunk@48586 602fd350-edb4-49c9-b593-d223f7449a82
2020-07-23 19:59:16 +00:00
John Blackbourn
5e35ad2510 Docs: Various formatting improvements to inline docblocks.
See #49572

git-svn-id: https://develop.svn.wordpress.org/trunk@48574 602fd350-edb4-49c9-b593-d223f7449a82
2020-07-23 00:50:57 +00:00
John Blackbourn
d10a86ad1d Docs: Miscellaneous docblock corrections.
See #49572

git-svn-id: https://develop.svn.wordpress.org/trunk@48508 602fd350-edb4-49c9-b593-d223f7449a82
2020-07-18 22:09:57 +00:00
John Blackbourn
c8d918e476 Docs: Various docblock corrections and improvements.
See #49572

git-svn-id: https://develop.svn.wordpress.org/trunk@47461 602fd350-edb4-49c9-b593-d223f7449a82
2020-03-16 18:38:03 +00:00
Sergey Biryukov
543944257c Coding Standards: Rename $d parameter in various date/time functions to $format for clarity.
See #49222.

git-svn-id: https://develop.svn.wordpress.org/trunk@47287 602fd350-edb4-49c9-b593-d223f7449a82
2020-02-14 00:05:43 +00:00
Sergey Biryukov
130751cda3 Coding Standards: Use Yoda conditions where appropriate.
See #49222.

git-svn-id: https://develop.svn.wordpress.org/trunk@47219 602fd350-edb4-49c9-b593-d223f7449a82
2020-02-09 16:52:28 +00:00
Sergey Biryukov
cfc3b57488 Docs: Improve inline comments per the documentation standards.
Includes minor code layout fixes for better readability.

See #48303.

git-svn-id: https://develop.svn.wordpress.org/trunk@47122 602fd350-edb4-49c9-b593-d223f7449a82
2020-01-29 00:43:23 +00:00
Sergey Biryukov
89dc54ee0c Docs: Improve comments in some wp-admin files per the documentation standards.
Props passoniate.
Fixes #49215, #49216.

git-svn-id: https://develop.svn.wordpress.org/trunk@47084 602fd350-edb4-49c9-b593-d223f7449a82
2020-01-18 00:52:28 +00:00
Andrew Ozz
8917973d52 Upload: Exclude PNG images from scaling after uploading. Fixes a case where resizing a very large PNG may create a scaled image that has smaller dimensions but larger file size than the original.
Fixes #48736.

git-svn-id: https://develop.svn.wordpress.org/trunk@46809 602fd350-edb4-49c9-b593-d223f7449a82
2019-12-01 18:24:30 +00:00
Andrew Ozz
698aa0e564 Upload: When an image was scaled because it is larger than the big image threshold, use the originally uploaded image's dimensions in wp_get_missing_image_subsizes(). Fixes an edge case/inconsistent behaviour when a registered image sub-size is also larger than the big image threshold.
Props desrosj, azaozz.
Fixes #48518 for trunk.

git-svn-id: https://develop.svn.wordpress.org/trunk@46677 602fd350-edb4-49c9-b593-d223f7449a82
2019-11-07 18:49:17 +00:00
Andrew Ozz
63d4dcd10a Media: Remove the variable number (from the big image threshold value) when generating file names for scaled images. This makes it easier to "calculate" the full size file name from the name of an intermediate size image.
Props ianmjones, azaozz.
Fixes #48453 for trunk.

git-svn-id: https://develop.svn.wordpress.org/trunk@46658 602fd350-edb4-49c9-b593-d223f7449a82
2019-11-05 20:51:12 +00:00
Andrew Ozz
9ed5e8c9f7 Upload: Ensure the new image meta is always saved before starting post-processing of an uploaded image, even if there was an error while scaling or rotating it.
See #48472.

git-svn-id: https://develop.svn.wordpress.org/trunk@46651 602fd350-edb4-49c9-b593-d223f7449a82
2019-11-04 17:05:53 +00:00
Sergey Biryukov
ec5f1035fe Docs: Correct some array hash notations added in [46644].
See #48303.

git-svn-id: https://develop.svn.wordpress.org/trunk@46647 602fd350-edb4-49c9-b593-d223f7449a82
2019-11-04 09:35:59 +00:00
John Blackbourn
27b67d5624 Docs: Fix some incorrect return tags in docblocks.
See #48303


git-svn-id: https://develop.svn.wordpress.org/trunk@46644 602fd350-edb4-49c9-b593-d223f7449a82
2019-11-03 22:21:20 +00:00
Sergey Biryukov
fe9b176aef Docs: Add @since tag for the $context parameter added to wp_generate_attachment_metadata filter in [46621].
See #48472.

git-svn-id: https://develop.svn.wordpress.org/trunk@46622 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-31 00:11:20 +00:00
Andrew Ozz
b9c02b3729 Upload:
- Run the `wp_generate_attachment_metadata` filter at the end in `wp_update_image_subsizes()` when new metadata was generated and additional image sub-sizes were created.
- Add another arg in the `wp_generate_attachment_metadata` filter for additional context.
- Fix inline docs and ensure the new image meta is always saved before starting post-processing.

Fixes #48472 for trunk.

git-svn-id: https://develop.svn.wordpress.org/trunk@46621 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-30 21:08:32 +00:00
Andrew Ozz
c424187b6e Media/Upload: When the users upload big images and WordPress creates a scaled image to use as the largest size, append scaled- to the file names of the scaled images to make them easier to recognize.
Props kraftbj, azaozz.
Fixes #48304.

git-svn-id: https://develop.svn.wordpress.org/trunk@46565 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-21 21:41:09 +00:00
Andrew Ozz
5df589ddf6 Media: Do not store error messages in the image meta. The initial idea was to (be able to) display these errors in the UI but it wasn't implemented as these errors are mostly helpful for low-level bedugging.
Fixes #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@46507 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-14 20:03:01 +00:00
Mike Schroder
68729adb57 Media: Update fallback previews to support _wp_make_subsizes()
Allows fallback previews (PDF by default, in core) to save image meta
after each size is generated to allow for resuming, and make sizes
immediately available.

Props azaozz, antpb, progremzion, mikeschroder.
See #48111.

git-svn-id: https://develop.svn.wordpress.org/trunk@46459 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-11 07:52:12 +00:00
Andrew Ozz
022119d1a6 Upload: Set custom header with the attachment ID for all uploads from media_handle_upload(). Let the REST API endpoint set it separately.
Props timothyblynjacobs.
Fixes #48200.

git-svn-id: https://develop.svn.wordpress.org/trunk@46421 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-07 15:28:29 +00:00
Sergey Biryukov
840a03335f Docs: Add missing documentation for the first parameter of the big_image_size_threshold filter.
Props dkarfa, desrosj, earnjam.
Fixes #48214.

git-svn-id: https://develop.svn.wordpress.org/trunk@46398 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-05 01:30:00 +00:00
Andrew Ozz
5e0904cf67 Upload: Fix the method used to create image sub-sizes when uploading fails with a PHP fatal error. Use a custom header to send the new attachment post ID even in HTTP 500 responses instead of an upload reference sent by the client. Also add another cap check and remove the action when deleting an attachment post during a failed upload cleanup.
Props timothyblynjacobs, clorith, azaozz.
Fixes #48200.

git-svn-id: https://develop.svn.wordpress.org/trunk@46382 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-03 21:00:10 +00:00
Sergey Biryukov
4b93e1eff3 Docs: Fix typo in wp_get_missing_image_subsizes() DocBlock.
Props david.binda.
Fixes #48179.

git-svn-id: https://develop.svn.wordpress.org/trunk@46368 602fd350-edb4-49c9-b593-d223f7449a82
2019-10-01 01:18:03 +00:00
Andrew Ozz
ba2d023bad Media: Move wp_get_original_image_path() to wp-content/post.php to make it easier to access from plugins.
Props pbiron.
See #47873.

git-svn-id: https://develop.svn.wordpress.org/trunk@46353 602fd350-edb4-49c9-b593-d223f7449a82
2019-09-30 16:27:11 +00:00
Sergey Biryukov
f3a0da9fca Code Modernization: Remove a workaround for IMAGETYPE_ICO in file_is_displayable_image().
The `IMAGETYPE_ICO` constant was introduced in PHP 5.3, so no longer needs a workaround.

Props jrf.
See #48074.

git-svn-id: https://develop.svn.wordpress.org/trunk@46217 602fd350-edb4-49c9-b593-d223f7449a82
2019-09-20 22:17:48 +00:00
Andrew Ozz
89939327e3 Media/Upload: rotate images on upload according to EXIF Orientation.
Props msaggiorato, wpdavis, markoheijnen, dhuyvetter, msaggiorato, n7studios, triplejumper12, pbiron, mikeschroder, joemcgill, azaozz.

Fixes #14459.

git-svn-id: https://develop.svn.wordpress.org/trunk@46202 602fd350-edb4-49c9-b593-d223f7449a82
2019-09-20 18:20:26 +00:00
Andrew Ozz
f6a89120ee Media: Add handling for "BIG" images. When the users upload a big image, typically a photo, scale it down to make it suitable for web use. Then use the scaled image as the "full" size, and keep the originally uploaded image for creating high quality sub-sizes in the future and in case the users want to download it later.
Introduces `wp_get_original_image_path()` that retrieves the path to the originally uploaded image in all cases, and `big_image_size_threshold` filter to set the pixel value above which images will be scaled. The same value is used as max-width and max-height when scaling.

See #47873.

git-svn-id: https://develop.svn.wordpress.org/trunk@46076 602fd350-edb4-49c9-b593-d223f7449a82
2019-09-07 01:06:49 +00:00
Andrew Ozz
759ee944c6 Uploads: After an image is uploaded and PHP times out or runs out of memory during post-processing (the server response is HTTP 500 error), try to resize it three more times. Then, if all attempts fail, do a cleanup of any sub-sizes that may have been created and show an error message asking the user to scale the image and upload it again.
See #47872.

git-svn-id: https://develop.svn.wordpress.org/trunk@45934 602fd350-edb4-49c9-b593-d223f7449a82
2019-09-04 01:10:57 +00:00
Sergey Biryukov
7b14e0c349 Docs: Fix typo in _wp_make_subsizes() DocBlock.
Props itowhid06.
Fixes #47913. See #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@45871 602fd350-edb4-49c9-b593-d223f7449a82
2019-08-21 16:22:49 +00:00
Andrew Ozz
9d00289c60 Media: Sort the new sizes array by priority when creating image sub-sizes.
See #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@45645 602fd350-edb4-49c9-b593-d223f7449a82
2019-07-16 21:47:35 +00:00
Gary Pendergast
d36eda33f7 Coding Standards: Fix instances of WordPress.PHP.NoSilencedErrors.Discouraged.
Noteable changes:
- The `magic_quotes_runtime` and `magic_quotes_sybase` settings were removed in PHP 5.4, so no longer need to be set.
- Some functions that use external libraries can generate errors that can't be tested for, so are globally allowed to silence errors.
- Quite a few functions would cause errors if `safe_mode` was set. This setting was removed in PHP 5.4.
- Only a handful of `header()` calls needed corresponding `headers_sent()` checks for unit tests to pass, but more may need to be added as the nightlies builds are tested.

See #46732.


git-svn-id: https://develop.svn.wordpress.org/trunk@45611 602fd350-edb4-49c9-b593-d223f7449a82
2019-07-09 05:44:42 +00:00
Andrew Ozz
5e26728387 Media: Ignore errors coming from image_resize_dimensions() when creating sub-sizes (for now). It returns false when the requested size is larger than the original image and should be skipped. This triggers new WP_Error in WP_Image_Editor::resize().
See #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@45543 602fd350-edb4-49c9-b593-d223f7449a82
2019-06-16 01:32:16 +00:00
Andrew Ozz
815e3ffbe6 After [45538]: fix another WPCS "strict comparison" fix.
Props birgire.
See #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@45540 602fd350-edb4-49c9-b593-d223f7449a82
2019-06-15 16:23:28 +00:00
Andrew Ozz
cd86b07108 After [45538]: fix a WPCS fix and make couple of var names consistent.
See #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@45539 602fd350-edb4-49c9-b593-d223f7449a82
2019-06-15 01:31:07 +00:00
Andrew Ozz
ca84ae5030 Save progress of intermediate image creation after upload. First run.
- Introduces `wp_get_missing_image_subsizes()` and `wp_update_image_subsizes()` to generate image sub-sizes that are missing or were not created after the upload.
- Adds a way to display errors that happened while creating sub-sizes.
- Introduces `wp_create_image_subsizes()` intended for use after an image was uploaded. It saves/updates the image metadata immediately after each sub-size is created. This fixes the (long standing) problem when some of the sub-size image files were created but there was a timeout or an error and the metadata was not saved. Until now such uploads were considered "failed" which usually resulted in the user trying to upload the same image again, creating even more "orphan" image files.

Note that the patch also includes some unrelated WPCS fixes.

Props mikeschroder, azaozz.
See #40439.

git-svn-id: https://develop.svn.wordpress.org/trunk@45538 602fd350-edb4-49c9-b593-d223f7449a82
2019-06-15 01:01:48 +00:00
Aaron Jorbin
e421f262dc 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.


git-svn-id: https://develop.svn.wordpress.org/trunk@44785 602fd350-edb4-49c9-b593-d223f7449a82
2019-03-01 20:57:26 +00:00
Gary Pendergast
33caf61b8b Coding Standards: Fix the Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace violations.
See #45934.



git-svn-id: https://develop.svn.wordpress.org/trunk@44566 602fd350-edb4-49c9-b593-d223f7449a82
2019-01-11 06:39:55 +00:00