예제 #1
0
 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));
 }