Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix generating file names for edited files, and use wp_unique_filename() #23440

Merged
merged 6 commits into from
Jun 26, 2020

Conversation

azaozz
Copy link
Contributor

@azaozz azaozz commented Jun 25, 2020

Follow-up to #23284.

Description

Fixes few errors and inconsistencies when editing an already-edited image file, and when creating the new attachment post. Also adds some better errors and some cleanup of vars, names, etc. and still has few TBD/TODO.

How has this been tested?

When testing please monitor what files are created in the uploads dir (wp-content/uploads/year/month/).

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

Also some better errors and some cleanup of names.
@github-actions
Copy link

github-actions bot commented Jun 25, 2020

Size Change: +1.62 kB (0%)

Total Size: 1.13 MB

Filename Size Change
build/a11y/index.js 1.14 kB -1 B
build/annotations/index.js 3.62 kB +2 B (0%)
build/block-directory/index.js 7.38 kB +18 B (0%)
build/block-editor/index.js 109 kB +286 B (0%)
build/block-editor/style-rtl.css 10.7 kB -201 B (1%)
build/block-editor/style.css 10.7 kB -196 B (1%)
build/block-library/editor-rtl.css 7.6 kB +1 B
build/block-library/editor.css 7.6 kB +1 B
build/block-library/index.js 130 kB +216 B (0%)
build/block-serialization-default-parser/index.js 1.88 kB -1 B
build/blocks/index.js 48.2 kB +1 B
build/components/index.js 198 kB +1.34 kB (0%)
build/components/style-rtl.css 15.9 kB +108 B (0%)
build/components/style.css 15.9 kB +116 B (0%)
build/compose/index.js 9.65 kB +26 B (0%)
build/core-data/index.js 11.4 kB +1 B
build/data/index.js 8.44 kB -1 B
build/dom/index.js 3.19 kB +1 B
build/edit-navigation/index.js 9.87 kB -1 B
build/edit-post/index.js 303 kB -13 B (0%)
build/edit-post/style-rtl.css 5.51 kB +3 B (0%)
build/edit-post/style.css 5.5 kB +2 B (0%)
build/edit-site/index.js 16.6 kB -31 B (0%)
build/edit-site/style-rtl.css 3.03 kB +9 B (0%)
build/edit-site/style.css 3.03 kB +11 B (0%)
build/edit-widgets/index.js 9.32 kB -2 B (0%)
build/editor/index.js 44.8 kB -155 B (0%)
build/editor/style-rtl.css 3.85 kB +38 B (0%)
build/editor/style.css 3.85 kB +40 B (1%)
build/element/index.js 4.65 kB +3 B (0%)
build/format-library/index.js 7.72 kB -2 B (0%)
build/is-shallow-equal/index.js 711 B +1 B
build/keyboard-shortcuts/index.js 2.51 kB +2 B (0%)
build/list-reusable-blocks/index.js 3.12 kB -5 B (0%)
build/nux/index.js 3.4 kB +1 B
build/plugins/index.js 2.56 kB +1 B
build/priority-queue/index.js 788 B -1 B
build/redux-routine/index.js 2.85 kB +3 B (0%)
build/token-list/index.js 1.28 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 941 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-library/style-rtl.css 8.04 kB 0 B
build/block-library/style.css 8.04 kB 0 B
build/block-library/theme-rtl.css 730 B 0 B
build/block-library/theme.css 732 B 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/edit-navigation/style-rtl.css 1.02 kB 0 B
build/edit-navigation/style.css 1.02 kB 0 B
build/edit-widgets/style-rtl.css 2.42 kB 0 B
build/edit-widgets/style.css 2.42 kB 0 B
build/editor/editor-styles-rtl.css 537 B 0 B
build/editor/editor-styles.css 539 B 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/style-rtl.css 450 B 0 B
build/list-reusable-blocks/style.css 451 B 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/style-rtl.css 663 B 0 B
build/nux/style.css 660 B 0 B
build/primitives/index.js 1.5 kB 0 B
build/rich-text/index.js 14 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action


if ( is_wp_error( $saved ) ) {
return $saved;
}

// Update attachment details.
// Create new attachment post.
Copy link
Member

Choose a reason for hiding this comment

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

Should we copy the rest of the attachment data?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, may make sense. But then we'll get two (or more) attachments with the same description and caption. In general don't think the image alt text should be carried over as alt has to be contextual. Editing an older, already used image would suggest it is being used in different context. Editing an image just after uploading it won't have alt text.

return new WP_Error( 'rest_cannot_find_attached_file', __( 'Unable to find original media file.', 'gutenberg' ), array( 'status' => 500 ) );
}
if ( isset( $params['rotation'] ) ) { // TODO: use `rotate` instead?
// CW / CCW
Copy link
Member

Choose a reason for hiding this comment

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

Might be good to write it in full :)


$media_id = $params['media_id'];
// This also confirms the attachment is an image.
$image_file = wp_get_original_image_path( $attachment_id );
Copy link
Member

Choose a reason for hiding this comment

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

Might be good to leave a comment saying that this is the original uploaded file.


$filename = rtrim( dirname( $image_path ), '/' ) . '/' . $target_file;
Copy link
Member

Choose a reason for hiding this comment

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

Previously we were overriding the last edited file, right?

Copy link
Contributor Author

@azaozz azaozz Jun 25, 2020

Choose a reason for hiding this comment

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

Yeah, kind of. Was pretty messy. Overwriting the last edited file if it is in the same uploads subdirectory, but not all sub-sizes of it. If the edited file was smaller, and not all sub-sizes were created, some of the old sub-sizes were left "orphaned".

This can be fixed but then we will either need to delete the attachment for the previously edited image, or reuse it and replace the image files and meta. Both of these are not good options if the previously edited image was used in a post.

Better workflow and UX would be to keep all edited files, perhaps let the user know they can delete unused images from the media library.

Copy link
Member

@ellatrix ellatrix left a comment

Choose a reason for hiding this comment

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

Looks good to me! Just left some questions.

azaozz added 2 commits June 25, 2020 11:47
- Move the check if the crop dimensions are > 0.1% to the js.
- Test if the crop dimensions are whitin bounds in PHP.
- Make crop values optional.
@azaozz azaozz requested a review from ajlende as a code owner June 25, 2020 21:04
No need to look at `x` and `y`. If they have changed, the width or/and height have changed too.
Also fix white space in (ugly) array alignment...
Co-authored-by: Timothy Jacobs <[email protected]>
@TimothyBJacobs TimothyBJacobs self-requested a review June 26, 2020 17:59
@azaozz azaozz merged commit f3ece7e into master Jun 26, 2020
@azaozz azaozz deleted the fix/image-batch branch June 26, 2020 19:55
@github-actions github-actions bot added the First-time Contributor Pull request opened by a first-time contributor to Gutenberg repository label Jun 26, 2020
@github-actions github-actions bot added this to the Gutenberg 8.5 milestone Jun 26, 2020
@ellatrix ellatrix mentioned this pull request Jul 1, 2020
12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
First-time Contributor Pull request opened by a first-time contributor to Gutenberg repository
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants