@@ -49,10 +49,8 @@ private function parse_wp_metadata() {
4949 if ( ! is_array ( $ this ->wp_metadata ) ) {
5050 $ this ->wp_metadata = wp_get_attachment_metadata ( $ this ->id );
5151 }
52- if ( ! is_array ( $ this ->wp_metadata ) ) {
53- return ;
54- }
55- if ( ! isset ( $ this ->wp_metadata ['file ' ] ) ) {
52+
53+ if ( ! is_array ( $ this ->wp_metadata ) || ! isset ( $ this ->wp_metadata ['file ' ] ) ) {
5654 /* No file metadata found, this might be another plugin messing with
5755 metadata. Simply ignore this! */
5856 return ;
@@ -72,11 +70,25 @@ private function parse_wp_metadata() {
7270 $ filename = $ path_prefix . $ this ->name ;
7371 $ this ->sizes [ self ::ORIGINAL ] = new Tiny_Image_Size ( $ filename );
7472
75- if ( isset ( $ this ->wp_metadata ['sizes ' ] ) && is_array ( $ this ->wp_metadata ['sizes ' ] ) ) {
76- foreach ( $ this ->wp_metadata ['sizes ' ] as $ size_name => $ info ) {
77- $ this ->sizes [ $ size_name ] = new Tiny_Image_Size ( $ path_prefix . $ info ['file ' ] );
73+ // Ensure 'sizes' exists and is an array to prevent PHP Warnings
74+ $ sizes = isset ( $ this ->wp_metadata ['sizes ' ] ) && is_array ( $ this ->wp_metadata ['sizes ' ] )
75+ ? $ this ->wp_metadata ['sizes ' ]
76+ : array ();
77+
78+ $ sanitized_sizes = array ();
79+ foreach ( $ sizes as $ size_name => $ size_info ) {
80+ // size is valid when its an array and has a file
81+ if ( is_array ( $ size_info ) && isset ( $ size_info ['file ' ] ) ) {
82+ // Add to sanitized metadata
83+ $ sanitized_sizes [ $ size_name ] = $ size_info ;
84+ $ this ->sizes [ $ size_name ] = new Tiny_Image_Size (
85+ $ path_prefix . $ size_info ['file ' ]
86+ );
7887 }
7988 }
89+
90+ // Update the metadata with only the valid sizes found
91+ $ this ->wp_metadata ['sizes ' ] = $ sanitized_sizes ;
8092 }
8193
8294 private function detect_duplicates ( $ active_sizes , $ active_tinify_sizes ) {
0 commit comments