/**
  * @param PhotoThumb $photoThumb
  * @return void
  */
 public function delete(PhotoThumb $photoThumb)
 {
     foreach ($this->thumbs as $key => $thumb) {
         if ($thumb->id() === $photoThumb->id()) {
             unset($this->thumbs[$key]);
             return;
         }
     }
 }
 /**
  * @test
  */
 public function photoThumbWorks()
 {
     $thumbId = new ThumbId();
     $photoId = new PhotoId();
     $photoFile = new PhotoFile(__DIR__ . '/pixel.png');
     $photoThumb = new PhotoThumb($thumbId, $photoId, new HttpUrl('http://works'), new PhotoThumbSize(10, 10), $photoFile);
     $this->assertEquals($thumbId->id(), $photoThumb->id());
     $this->assertEquals($photoId->id(), $photoThumb->photoId());
     $this->assertEquals('http://works', $photoThumb->photoThumbHttpUrl());
     $this->assertEquals(10, $photoThumb->height());
     $this->assertEquals(10, $photoThumb->width());
     $this->assertEquals($photoFile->filePath(), __DIR__ . '/pixel.png');
     $photoThumb->updatePhotoThumbFile(null);
     $this->assertNull($photoThumb->photoThumbFile());
 }
 /**
  * @param PhotoThumb $thumb
  * @param Photo $photo
  * @return null|PhotoFile
  */
 public function uploadThumb(PhotoThumb $thumb, Photo $photo)
 {
     $this->s3->putObject(['Bucket' => $this->config->bucket(), 'Key' => $this->getThumbUri($photo->id(), $photo->slug(), $thumb->width(), $thumb->height(), $thumb->photoThumbFile()->format()), 'Body' => fopen($thumb->photoThumbFile()->filePath(), 'r'), 'ContentType' => $thumb->photoThumbFile()->mimeType(), 'ACL' => 'public-read']);
 }
 /**
  * @param PhotoThumb $thumb
  * @return void
  */
 public function delete(PhotoThumb $thumb)
 {
     $sentence = $this->pdo->prepare("DELETE FROM photo_thumb WHERE uuid=:uuid LIMIT 1");
     $sentence->bindValue(':uuid', $thumb->id());
     $sentence->execute();
 }
 /**
  * @param PhotoThumb $thumb
  * @return boolean
  */
 public function removeThumb(PhotoThumb $thumb)
 {
     return unlink($thumb->photoThumbFile()->filePath());
 }