Exemplo n.º 1
0
 /**
  * If the thumbnails and resizes created for the Gallery 2 photo match the dimensions of the
  * ones we expect to create for Gallery 3, then copy the files over instead of recreating them.
  */
 static function copy_matching_thumbnails_and_resizes($item)
 {
     // We only operate on items that are being imported
     if (empty(self::$current_g2_item)) {
         return;
     }
     // Precaution: if the Gallery 2 item was watermarked, or we have the Gallery 3 watermark module
     // active then we'd have to do something a lot more sophisticated here.  For now, just skip
     // this step in those cases.
     // @todo we should probably use an API here, eventually.
     if (module::is_active("watermark") && module::get_var("watermark", "name")) {
         return;
     }
     // For now just do the copy for photos and movies.  Albums are tricky because we're may not
     // yet be setting their album cover properly.
     // @todo implement this for albums also
     if (!$item->is_movie() && !$item->is_photo()) {
         return;
     }
     $g2_item_id = self::$current_g2_item->getId();
     $derivatives = g2(GalleryCoreApi::fetchDerivativesByItemIds(array($g2_item_id)));
     $target_thumb_size = module::get_var("gallery", "thumb_size");
     $target_resize_size = module::get_var("gallery", "resize_size");
     if (!empty($derivatives[$g2_item_id])) {
         foreach ($derivatives[$g2_item_id] as $derivative) {
             if ($derivative->getPostFilterOperations()) {
                 // Let's assume for now that this is a watermark operation, which we can't handle.
                 continue;
             }
             if ($derivative->getDerivativeType() == DERIVATIVE_TYPE_IMAGE_THUMBNAIL && $item->thumb_dirty && ($derivative->getWidth() == $target_thumb_size || $derivative->getHeight() == $target_thumb_size)) {
                 if (@copy(g2($derivative->fetchPath()), $item->thumb_path())) {
                     $item->thumb_height = $derivative->getHeight();
                     $item->thumb_width = $derivative->getWidth();
                     $item->thumb_dirty = false;
                 }
             }
             if ($derivative->getDerivativeType() == DERIVATIVE_TYPE_IMAGE_RESIZE && $item->resize_dirty && ($derivative->getWidth() == $target_resize_size || $derivative->getHeight() == $target_resize_size)) {
                 if (@copy(g2($derivative->fetchPath()), $item->resize_path())) {
                     $item->resize_height = $derivative->getHeight();
                     $item->resize_width = $derivative->getWidth();
                     $item->resize_dirty = false;
                 }
             }
         }
     }
     $item->save();
 }