album = $album; $this->parentFolder = $parentFolder; } public function getOriginalsFolder() { return '_originals'; } public function getPathToPhoto(Photo $photo, $thumbnail = null) { if (is_null($thumbnail)) { $thumbnail = $this->getOriginalsFolder(); } return sprintf('%s/%s/%s', $this->getPathToAlbum(), $thumbnail, $photo->storage_file_name); } public function getUrlToPhoto(Photo $photo, $thumbnail = null) { $photoUrl = route('downloadPhoto', [ 'albumUrlAlias' => $this->album->url_alias, 'photoFilename' => $photo->storage_file_name ]); if (!is_null($thumbnail)) { $photoUrl .= sprintf('?t=%s', urlencode($thumbnail)); } return $photoUrl; } public function saveThumbnail(Photo $photo, $thumbnailInfo, $tempFilename) { $fileInfo = new File($tempFilename); $fileInfo->move(sprintf('%s/%s', $this->getPathToAlbum(), $thumbnailInfo['name']), $photo->storage_file_name); } public function saveUploadedPhoto(File $uploadedFile) { $tempFilename = sprintf('%s/%s/%s', $this->getPathToAlbum(), $this->getOriginalsFolder(), MiscHelper::randomString(20)); $extension = $uploadedFile->guessExtension(); if (!is_null($extension)) { $tempFilename .= '.' . $extension; } $uploadedFile->move(dirname($tempFilename), basename($tempFilename)); return new File($tempFilename); } private function getPathToAlbum() { return sprintf('%s/%s', $this->parentFolder, $this->album->url_alias); } }