Sulu\Bundle\MediaBundle\Entity\MediaRepository::findMediaById PHP Method

findMediaById() public method

public findMediaById ( $id, $asArray = false )
    public function findMediaById($id, $asArray = false)
    {
        try {
            $queryBuilder = $this->createQueryBuilder('media')->leftJoin('media.type', 'type')->leftJoin('media.collection', 'collection')->leftJoin('media.files', 'file')->leftJoin('file.fileVersions', 'fileVersion')->leftJoin('fileVersion.tags', 'tag')->leftJoin('fileVersion.categories', 'category')->leftJoin('fileVersion.formatOptions', 'formatOptions')->leftJoin('fileVersion.meta', 'fileVersionMeta')->leftJoin('fileVersion.defaultMeta', 'fileVersionDefaultMeta')->leftJoin('fileVersion.contentLanguages', 'fileVersionContentLanguage')->leftJoin('fileVersion.publishLanguages', 'fileVersionPublishLanguage')->leftJoin('media.creator', 'creator')->leftJoin('creator.contact', 'creatorContact')->leftJoin('media.changer', 'changer')->leftJoin('changer.contact', 'changerContact')->leftJoin('media.previewImage', 'previewImage')->addSelect('type')->addSelect('collection')->addSelect('file')->addSelect('tag')->addSelect('fileVersion')->addSelect('formatOptions')->addSelect('fileVersionMeta')->addSelect('fileVersionDefaultMeta')->addSelect('fileVersionContentLanguage')->addSelect('fileVersionPublishLanguage')->addSelect('creator')->addSelect('changer')->addSelect('creatorContact')->addSelect('changerContact')->addSelect('previewImage')->where('media.id = :mediaId');
            $query = $queryBuilder->getQuery();
            $query->setParameter('mediaId', $id);
            if ($asArray) {
                if (isset($query->getArrayResult()[0])) {
                    return $query->getArrayResult()[0];
                } else {
                    return;
                }
            } else {
                return $query->getSingleResult();
            }
        } catch (NoResultException $ex) {
            return;
        }
    }

Usage Example

Example #1
0
 /**
  * {@inheritdoc}
  */
 public function returnImage($id, $formatName)
 {
     $setExpireHeaders = false;
     try {
         // load Media
         $media = $this->mediaRepository->findMediaById($id);
         if (!$media) {
             throw new ImageProxyMediaNotFoundException('Media was not found');
         }
         // load Media Data
         list($fileName, $version, $storageOptions, $mimeType) = $this->getMediaData($media);
         try {
             // check if file has supported preview
             if (!$this->checkPreviewSupported($mimeType)) {
                 throw new InvalidMimeTypeForPreviewException($mimeType);
             }
             // get format options
             $format = $this->getFormat($formatName);
             $formatOptions = $format['options'];
             // load Original
             $uri = $this->originalStorage->load($fileName, $version, $storageOptions);
             $original = $this->createTmpFile($this->getFile($uri, $mimeType));
             // prepare Media
             $this->prepareMedia($mimeType, $original);
             // convert Media to format
             $image = $this->converter->convert($original, $format);
             // remove profiles and comments
             $image->strip();
             // set Interlacing to plane for smaller image size
             if (count($image->layers()) == 1) {
                 $image->interlace(ImageInterface::INTERLACE_PLANE);
             }
             // set extension
             $imageExtension = $this->getImageExtension($fileName);
             // get image
             $responseContent = $image->get($imageExtension, $this->getOptionsFromImage($image, $imageExtension, $formatOptions));
             // HTTP Headers
             $status = 200;
             $setExpireHeaders = true;
             // save image
             if ($this->saveImage) {
                 $this->formatCache->save($this->createTmpFile($responseContent), $media->getId(), $this->replaceExtension($fileName, $imageExtension), $storageOptions, $formatName);
             }
         } catch (MediaException $e) {
             // return when available a file extension icon
             list($responseContent, $status, $imageExtension) = $this->returnFileExtensionIcon($formatName, $this->getRealFileExtension($fileName), $e);
         }
         $responseMimeType = 'image/' . $imageExtension;
     } catch (MediaException $e) {
         $responseContent = $e->getCode() . ': ' . $e->getMessage();
         $status = 404;
         $responseMimeType = 'text/plain';
     }
     // clear temp files
     $this->clearTempFiles();
     // set header
     $headers = $this->getResponseHeaders($responseMimeType, $setExpireHeaders);
     // return image
     return new Response($responseContent, $status, $headers);
 }