Support » Plugin: SVG Support » BUG: 2.3.17 strips all attachment meta data

  • Resolved defunct

    (@defunctlife)


    In functions/attachment.php there is a function that removes all attachment meta data, which forces wp_prepare_attachment_for_js() to grab all of our remote s3 files sizes every time with filesize() which is quite the slow operation.

    
    // Fix image widget PHP warnings
    function bodhi_svgs_get_attachment_metadata( $data ) {
    
    	$res = $data;
    
    	if ( !isset( $data['width'] ) || !isset( $data['height'] ) ) {
    		$res = false;
    	}
    
    	return $res;
    
    }
    add_filter( 'wp_get_attachment_metadata' , 'bodhi_svgs_get_attachment_metadata' );
    
Viewing 9 replies - 1 through 9 (of 9 total)
  • Plugin Author Benbodhi

    (@benbodhi)

    Hi there,

    Thanks for using my plugin and reporting this!

    This function is supposed to just check if the attachment has a width and/or height set, and if none are set, it just sets that to false…

    It really only needs to run for SVG files, so I’ll see if I can figure out how to achieve that.

    Are you able to provide steps to replicate your issue please?

    Thread Starter defunct

    (@defunctlife)

    Heya,

    You bet!

    We’re using https://github.com/humanmade/S3-Uploads which made it prominent because it’s a remote filesize() check on an s3:// stream, but that doesn’t matter that much because you’re still forcing a filesize run every time with this existing code.

    If one calls wp_prepare_attachment_for_js() in their code, this line grabs the meta data: https://github.com/WordPress/WordPress/blob/5.3-branch/wp-includes/media.php#L3366

    Then down the line it checks for $meta['filesize'] which is something we manually set on upload to avoid remote calls, but because your plugin completely removes all attachment data, that will never be true and it will always run the following code: https://github.com/WordPress/WordPress/blob/5.3-branch/wp-includes/media.php#L3433 causing noticeable lag for us.

    Basically anything that uses metadata though and doesn’t have a width or height is going to be completely wiped out with the existing logic.

    Hope this helps!

    Plugin Author Benbodhi

    (@benbodhi)

    Thanks so much for your detailed explanation.

    I see what’s happening now. I’ll have to figure out how to just target SVG files. If I can’t figure it out quickly, I will remove that function and push an update. This issue is bigger than the PHP warnings it fixes.

    Thanks again, hopefully I’ll have a fix shortly!

    Thread Starter defunct

    (@defunctlife)

    If you have a github repo, I could submit a PR.

    Do you have details on the PHP warnings you were getting?

    Plugin Author Benbodhi

    (@benbodhi)

    I haven’t set it up on github yet unfortunately.
    I plan on doing so, but I haven’t had a lot of experience with github yet (surprisingly), I’ve used subversion since the first day I submitted to the WP repo, simply because that’s what they were using.
    I’ve obviously since seen the benefits in github, and there’s even awesome tools to auto push to the wp repo when updates are made in github, so I plan on setting up a streamlined process.
    I’ve started to get some more time lately, so I should be able to do that soon.

    Originally, this started in this thread:
    https://wordpress.org/support/topic/media-widget-throws-php-notices-and-warnings-when-using-svg/

    And more recently in this one (which is where I pulled that function from):
    https://wordpress.org/support/topic/php-warning-illegal-string-offset-height-width/

    I didn’t notice anything on testing due to such a different setup I guess. So I included it in the plugin.

    I’d be so damn appreciative of your help! It has had me stumped a number of times before for some reason. I had trouble even reproducing the error to start with.

    • This reply was modified 1 year, 1 month ago by Benbodhi. Reason: Forgot a link
    Plugin Author Benbodhi

    (@benbodhi)

    The desired purpose of the function is to check SVG files only for height/width meta and if none, return false. From what I understand, this should fix the illegal height/width warnings.

    Just commenting here too that we are having an issue with this function too. I’m using it to get the meta data of a PDF. Since a PDF does not have a width/height,it’s returning nothing.

    Plugin Author Benbodhi

    (@benbodhi)

    Hi @pinksharpii
    Thanks for letting me know.
    I’m looking at making it target SVG files only. Hopefully I’ll have it sorted very soon.

    Plugin Author Benbodhi

    (@benbodhi)

    Just closing this off as resolved because I ended up removing the function causing issues here for now.

    I’ll still look to re-implement it, but with a specific file extension target.

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘BUG: 2.3.17 strips all attachment meta data’ is closed to new replies.