<?php namespace App\AlbumSources; use App\Album; use App\Photo; use App\Storage; use Guzzle\Http\EntityBody; use Symfony\Component\HttpFoundation\File\File; interface IAlbumSource { /** * Deletes an entire album's media contents. * @return void */ function deleteAlbumContents(); /** * Deletes a thumbnail file for a photo. * @param Photo $photo Photo to delete the thumbnail from. * @param string $thumbnail Thumbnail to delete (or null to delete the original.) * @return void */ function deleteThumbnail(Photo $photo, $thumbnail = null); /** * Fetches the contents of a thumbnail for a photo. * @param Photo $photo Photo to fetch the thumbnail for. * @param string $thumbnail Thumbnail to fetch (or null to fetch the original.) * @return EntityBody */ function fetchPhotoContent(Photo $photo, $thumbnail = null); /** * Gets the name of this album source. * @return string */ function getName(); /** * Gets the absolute URL to the given photo file. * @param Photo $photo Photo to get the URL to. * @param string $thumbnail Thumbnail to get the image to. * @return string */ function getUrlToPhoto(Photo $photo, $thumbnail = null); /** * Saves a generated thumbnail to its permanent location. * @param Photo $photo Photo the image relates to. * @param string $tempFilename Filename containing the image. * @param string $thumbnail Name of the thumbnail (or null for the original.) * @return mixed */ function saveThumbnail(Photo $photo, $tempFilename, $thumbnail = null); /** * @param Album $album * @return mixed */ function setAlbum(Album $album); /** * @param Storage $configuration * @return mixed */ function setConfiguration(Storage $configuration); }