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 $metadata; } $success = 0; $failed = 0; $compressor = $this->settings->get_compressor(); $sizes = $this->settings->get_tinify_sizes(); $missing = $tiny_metadata->get_missing_sizes($sizes); foreach ($missing as $size) { try { $tiny_metadata->add_request($size); $tiny_metadata->update(); $response = $compressor->compress_file($tiny_metadata->get_filename($size)); $tiny_metadata->add_response($response, $size); $success++; } catch (Tiny_Exception $e) { $tiny_metadata->add_exception($e, $size); $failed++; } } $tiny_metadata->update(); return array($tiny_metadata, array('success' => $success, 'failed' => $failed)); }
public function render_media_column($column, $id) { if ($column === self::MEDIA_COLUMN) { $wp_metadata = wp_get_attachment_metadata($id); $wp_sizes = isset($wp_metadata['sizes']) ? array_keys($wp_metadata['sizes']) : array(); $sizes = array_intersect($wp_sizes, $this->settings->get_tinify_sizes()); $tiny_metadata = new Tiny_Metadata($id); $missing = $tiny_metadata->get_missing_sizes($sizes); $total = count($sizes); $success = $total - count($missing); if (count($missing) > 0) { printf(self::translate_escape('Compressed %d out of %d sizes'), $success, $total); echo '<br/>'; if ($error = $tiny_metadata->get_latest_error()) { echo '<span class="error">' . self::translate_escape('Latest error') . ': ' . self::translate_escape($error) . '<br/>'; } echo '<button type="button" class="tinypng-compress" data-id="' . $id . '">' . self::translate_escape('Compress') . '</button>'; echo '<div class="spinner"></div>'; } else { $details = $tiny_metadata->get_value(); printf(self::translate_escape('Compressed %d out of %d sizes'), $success, $total); echo '<br/>'; echo self::translate_escape('Original size') . ': ' . size_format($details['input']['size']) . '<br/>'; echo self::translate_escape('Compressed size') . ': ' . size_format($details['output']['size']); } } }