예제 #1
0
 public function compress_attachment($metadata, $attachment_id)
 {
     $mime_type = get_post_mime_type($attachment_id);
     $tiny_metadata = new Tiny_Metadata($attachment_id);
     if ($this->compressor === null || strpos($mime_type, 'image/') !== 0) {
         return $metadata;
     }
     $path_info = pathinfo($metadata['file']);
     $upload_dir = wp_upload_dir();
     $prefix = $upload_dir['basedir'] . '/' . $path_info['dirname'] . '/';
     if (!$tiny_metadata->is_compressed()) {
         try {
             $response = $this->compressor->compress_file("{$prefix}{$path_info['basename']}");
             $tiny_metadata->add_response($response);
         } catch (Tiny_Exception $e) {
             $tiny_metadata->add_exception($e);
         }
     }
     $settings = $this->settings->get_sizes();
     foreach ($metadata['sizes'] as $size => $info) {
         if (isset($settings[$size]) && $settings[$size]['tinify'] && !$tiny_metadata->is_compressed($size)) {
             try {
                 $response = $this->compressor->compress_file("{$prefix}{$info['file']}");
                 $tiny_metadata->add_response($response, $size);
             } catch (Tiny_Exception $e) {
                 $tiny_metadata->add_exception($e, $size);
             }
         }
     }
     $tiny_metadata->update();
     return $metadata;
 }
예제 #2
0
 public function testIsCompressedShouldReturnFalseWhenNoMetadata()
 {
     $this->wp->createImage(37856, "2015/09", "tinypng_gravatar-150x150.png");
     $tiny_meta = new Tiny_Metadata(4, $this->json("wp_meta_default_sizes"));
     $this->assertFalse($tiny_meta->is_compressed("thumbnail"));
 }