private function compress($metadata, $attachment_id) { $mime_type = get_post_mime_type($attachment_id); $tiny_metadata = new Tiny_Metadata($attachment_id, $metadata); if ($this->settings->get_compressor() === null || strpos($mime_type, 'image/') !== 0) { return array($tiny_metadata, null); } $success = 0; $failed = 0; $compressor = $this->settings->get_compressor(); $active_tinify_sizes = $this->settings->get_active_tinify_sizes(); $uncompressed_sizes = $tiny_metadata->get_uncompressed_sizes($active_tinify_sizes); foreach ($uncompressed_sizes as $uncompressed_size) { try { $tiny_metadata->add_request($uncompressed_size); $tiny_metadata->update(); $resize = $tiny_metadata->is_resizable($uncompressed_size) ? $this->settings->get_resize_options() : false; $response = $compressor->compress_file($tiny_metadata->get_filename($uncompressed_size), $resize); $tiny_metadata->add_response($response, $uncompressed_size); $tiny_metadata->update(); $success++; } catch (Tiny_Exception $e) { $tiny_metadata->add_exception($e, $uncompressed_size); $tiny_metadata->update(); $failed++; } } return array($tiny_metadata, array('success' => $success, 'failed' => $failed)); }