Imbo\Resource\Image::getImage PHP Method

getImage() public method

Handle GET and HEAD requests
public getImage ( Imbo\EventManager\EventInterface $event )
$event Imbo\EventManager\EventInterface
    public function getImage(EventInterface $event)
    {
        $request = $event->getRequest();
        $response = $event->getResponse();
        $eventManager = $event->getManager();
        $user = $request->getUser();
        $imageIdentifier = $request->getImageIdentifier();
        $image = new Model\Image();
        $image->setImageIdentifier($imageIdentifier)->setUser($user);
        $response->setModel($image);
        // Load image details from database
        $eventManager->trigger('db.image.load');
        // Set a long max age as the image itself won't change
        $response->setMaxAge(31536000);
        // Custom Imbo headers, based on original
        $response->headers->add(['X-Imbo-OriginalMimeType' => $image->getMimeType(), 'X-Imbo-OriginalWidth' => $image->getWidth(), 'X-Imbo-OriginalHeight' => $image->getHeight(), 'X-Imbo-OriginalFileSize' => $image->getFilesize(), 'X-Imbo-OriginalExtension' => $image->getExtension()]);
        // Trigger loading of the image
        $eventManager->trigger('storage.image.load');
        // Trigger possible image transformations
        $eventManager->trigger('image.transform');
    }

Usage Example

Beispiel #1
0
 /**
  * @covers Imbo\Resource\Image::getImage
  */
 public function testSupportsHttpGet()
 {
     $publicKey = 'christer';
     $imageIdentifier = 'imageIdentifier';
     $responseHeaders = $this->getMock('Symfony\\Component\\HttpFoundation\\HeaderBag');
     $this->request->expects($this->once())->method('getPublicKey')->will($this->returnValue($publicKey));
     $this->request->expects($this->once())->method('getImageIdentifier')->will($this->returnValue($imageIdentifier));
     $this->response->headers = $responseHeaders;
     $this->response->expects($this->once())->method('setModel')->with($this->isInstanceOf('Imbo\\Model\\Image'));
     $this->manager->expects($this->at(0))->method('trigger')->with('db.image.load');
     $this->manager->expects($this->at(1))->method('trigger')->with('storage.image.load');
     $this->response->expects($this->once())->method('setMaxAge')->with(31536000)->will($this->returnSelf());
     $responseHeaders->expects($this->once())->method('add')->with($this->callback(function ($headers) {
         return array_key_exists('X-Imbo-OriginalMimeType', $headers) && array_key_exists('X-Imbo-OriginalWidth', $headers) && array_key_exists('X-Imbo-OriginalHeight', $headers) && array_key_exists('X-Imbo-OriginalFileSize', $headers) && array_key_exists('X-Imbo-OriginalExtension', $headers);
     }));
     $this->resource->getImage($this->event);
 }