/** * Render the URI to the resource. The filename is used from child content. * * @param string $path The location of the resource, can be either a path relative to the Public resource directory of the package or a resource://... URI * @param Resource $resource If specified, this resource object is used instead of the path and package information * @return string The content of the specified file * @throws InvalidVariableException */ public function render($path = null, Resource $resource = null) { $data = ''; if ($resource !== null) { $dataStream = $resource->getStream(); if ($dataStream) { $data = $dataStream->read($dataStream->getSize()); } } else { if ($path === null) { throw new InvalidVariableException('The ResourceViewHelper did neither contain a valuable "resource" nor "path" argument.', 1457673112); } $data = file_get_contents($path); } return $data; }
/** * Publishes the given persistent resource from the given storage * * @param \TYPO3\Flow\Resource\Resource $resource The resource to publish * @param CollectionInterface $collection The collection the given resource belongs to * @return void * @throws Exception */ public function publishResource(Resource $resource, CollectionInterface $collection) { $sourceStream = $resource->getStream(); if ($sourceStream === FALSE) { throw new Exception(sprintf('Could not publish resource %s with SHA1 hash %s of collection %s because there seems to be no corresponding data in the storage.', $resource->getFilename(), $resource->getSha1(), $collection->getName()), 1375258146); } $this->publishFile($sourceStream, $this->getRelativePublicationPathAndFilename($resource)); fclose($sourceStream); }
/** * {@inheritDoc} */ public function getStream() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getStream', array()); return parent::getStream(); }
/** * Get the size of a Flow Resource object that contains an image file. * * @param FlowResource $resource * @return array width and height as keys * @throws ImageFileException */ public function getImageSize(FlowResource $resource) { $cacheIdentifier = $resource->getCacheEntryIdentifier(); $imageSize = $this->imageSizeCache->get($cacheIdentifier); if ($imageSize !== false) { return $imageSize; } // TODO: Special handling for SVG should be refactored at a later point. if ($resource->getMediaType() === 'image/svg+xml') { $imageSize = ['width' => null, 'height' => null]; } else { try { $imagineImage = $this->imagineService->read($resource->getStream()); $sizeBox = $imagineImage->getSize(); $imageSize = array('width' => $sizeBox->getWidth(), 'height' => $sizeBox->getHeight()); } catch (\Exception $e) { throw new ImageFileException(sprintf('The given resource was not an image file your choosen driver can open. The original error was: %s', $e->getMessage()), 1336662898); } } $this->imageSizeCache->set($cacheIdentifier, $imageSize); return $imageSize; }
/** * Publishes the given persistent resource from the given storage * * @param \TYPO3\Flow\Resource\Resource $resource The resource to publish * @param CollectionInterface $collection The collection the given resource belongs to * @return void * @throws Exception */ public function publishResource(Resource $resource, CollectionInterface $collection) { $sourceStream = $resource->getStream(); if ($sourceStream === false) { $this->handleMissingData($resource, $collection); return; } $this->publishFile($sourceStream, $this->getRelativePublicationPathAndFilename($resource)); fclose($sourceStream); }