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; }