Exemplo n.º 1
0
 public static function getThumbnail($objUser, $picture_id, $intWidth, $intHeight, $objAlbum)
 {
     if (!is_numeric($picture_id)) {
         throw new Exception(INVALID_VALUE);
     }
     if (!is_numeric($intWidth)) {
         throw new Exception(INVALID_VALUE);
     }
     if (!is_numeric($intHeight)) {
         throw new Exception(INVALID_VALUE);
     }
     /* This prevents the thumbnails from being bigger than the original. */
     if (!$objAlbum->isNew()) {
         $intWidth = min($intWidth, $objAlbum->get('max_width'));
         $intHeight = min($intHeight, $objAlbum->get('max_height'));
     }
     $arrThumbnails = clsDB::getListStatic('thumbnail', "`<<foreign><thumbnail><picture>>`='{$picture_id}' AND `<<thumbnail><width>>`='{$intWidth}' AND `<<thumbnail><height>>`='{$intHeight}'");
     if (sizeof($arrThumbnails) == 0) {
         $objPicture = new clsPicture($picture_id);
         list($img, $intActualWidth, $intActualHeight) = $objPicture->getResized($objUser, $intWidth, $intHeight);
         if (is_string($img)) {
             return $img;
         }
         $objThumbnail = new clsThumbnail();
         $objThumbnail->set('picture_id', $picture_id);
         $objThumbnail->set('width', $intWidth);
         $objThumbnail->set('height', $intHeight);
         $objThumbnail->set('actual_width', $intActualWidth);
         $objThumbnail->set('actual_height', $intActualHeight);
         $objThumbnail->set('date', date('Y-m-d H:i:s'));
         $result = $objThumbnail->setImage($img);
         if ($result) {
             return $result;
         }
         $objThumbnail->save();
     } else {
         $objThumbnail = new clsThumbnail($arrThumbnails[0]->get('id'));
     }
     return $objThumbnail;
 }