/** * @param Node $galleryNode * @return \TYPO3\Flow\Persistence\QueryResultInterface */ protected function selectImages(Node $galleryNode) { $tagIdentifier = $galleryNode->getProperty('tag'); $tag = $this->tagRepository->findByIdentifier($tagIdentifier); /** @var \TYPO3\Media\Domain\Model\Tag $tag */ $images = $this->imageRepository->findByTag($tag); return $images; }
/** * Upload a new image, and return its metadata. * * Depending on the $metadata argument it will return asset metadata for the AssetEditor * or image metadata for the ImageEditor * * @param Asset $asset * @param string $metadata Type of metadata to return ("Asset" or "Image") * @return string */ public function uploadAssetAction(Asset $asset, $metadata) { $this->response->setHeader('Content-Type', 'application/json'); /** @var Site $currentSite */ $currentSite = $this->siteRepository->findOneByNodeName($this->request->getInternalArgument('__siteNodeName')); if ($currentSite !== null && $currentSite->getAssetCollection() !== null) { $currentSite->getAssetCollection()->addAsset($asset); $this->assetCollectionRepository->update($currentSite->getAssetCollection()); } switch ($metadata) { case 'Asset': $result = $this->getAssetProperties($asset); if ($this->persistenceManager->isNewObject($asset)) { $this->assetRepository->add($asset); } break; case 'Image': $result = $this->getImageInterfacePreviewData($asset); if ($this->persistenceManager->isNewObject($asset)) { $this->imageRepository->add($asset); } break; default: $this->response->setStatus(400); $result = array('error' => 'Invalid "metadata" type: ' . $metadata); } return json_encode($result); }
/** * @param string $title * @param array $tagLabels * @return void */ protected function removePreviousProfilePictureBasedOnTags($title, array $tagLabels) { $images = $this->imageRepository->findBySearchTermOrTags($title, $tagLabels); foreach ($images as $image) { $this->imageRepository->remove($image); } }
protected function importImage($filename) { $resource = $this->resourceManager->importResource($filename); $image = new Image($resource); $this->imageRepository->add($image); $processingInstructions = array(); return $this->objectManager->get('TYPO3\\Media\\Domain\\Model\\ImageVariant', $image, $processingInstructions); }
/** * @param FluidView $view * @return void */ public function initializeView(FluidView $view) { $assets = $this->tsValue('assets'); $processedAssets = array(); /** @var Asset $asset */ if (is_array($assets)) { foreach ($assets as $asset) { if ($asset->getResource() === null) { if ($asset instanceof Image) { $processedAssets[] = $this->imageRepository->findByIdentifier($asset->getIdentifier()); } elseif ($asset instanceof Asset) { $processedAssets[] = $this->assetRepository->findByIdentifier($asset->getIdentifier()); } } else { $processedAssets[] = $asset; } } } $view->assign('assets', $processedAssets); }
/** * Converts the given $objectXml to an ImageVariant instance and returns it * * @param \SimpleXMLElement $objectXml * @param string $className the concrete class name of the ImageVariant to create (ImageVariant or a subclass) * @return ImageVariant * @throws NeosException */ protected function importImageVariant(\SimpleXMLElement $objectXml, $className) { $processingInstructions = unserialize(trim((string) $objectXml->processingInstructions)); if (isset($objectXml->originalImage['__identifier'])) { $image = $this->imageRepository->findByIdentifier((string) $objectXml->originalImage['__identifier']); if (is_object($image)) { return $this->objectManager->get($className, $image, $processingInstructions); } } $resourceHash = (string) $objectXml->originalImage->resource->hash; $resourceData = trim((string) $objectXml->originalImage->resource->content); if ((string) $objectXml->originalImage->resource['__identifier'] !== '') { $resource = $this->persistenceManager->getObjectByIdentifier((string) $objectXml->originalImage->resource['__identifier'], 'TYPO3\\Flow\\Resource\\Resource'); } if (!isset($resource) || $resource === null) { $resource = $this->importResource((string) $objectXml->originalImage->resource->filename, $resourceHash !== '' ? $resourceHash : null, !empty($resourceData) ? $resourceData : null, (string) $objectXml->originalImage->resource['__identifier'] !== '' ? (string) $objectXml->originalImage->resource['__identifier'] : null); } $image = new Image($resource); if ((string) $objectXml->originalImage['__identifier'] !== '') { ObjectAccess::setProperty($image, 'Persistence_Object_Identifier', (string) $objectXml->originalImage['__identifier'], true); } $this->imageRepository->add($image); return $this->objectManager->get($className, $image, $processingInstructions); }
/** * Upload a new image, and return its metadata. * * @param \TYPO3\Media\Domain\Model\Image $image * @return string */ public function uploadImageAction(\TYPO3\Media\Domain\Model\Image $image) { $this->imageRepository->add($image); return $this->imageWithMetadataAction($image); }
/** * @return ImageVariant */ protected function getRandommImageVariant() { $image = new Image($this->resourceManager->importResource(sprintf('resource://Flowpack.NodeGenerator/Private/Images/Sample%d.jpg', rand(1, 3)))); $this->imageRepository->add($image); return $image->createImageVariant(array(array('command' => 'thumbnail', 'options' => array('size' => array('width' => 1500, 'height' => 1024))))); }
/** * Updates the given news object * * @param \Lelesys\Plugin\News\Domain\Model\News $news The news to update * @param array $media News media * @param array $file News file * @param array $tags News tags * @param array $relatedLink News related links * @return void */ public function update(\Lelesys\Plugin\News\Domain\Model\News $news, $media, $file, $relatedLink, $tags) { if (!empty($tags['title'])) { $tagsArray = array_unique(\TYPO3\Flow\Utility\Arrays::trimExplode(',', strtolower($tags['title']))); foreach ($tagsArray as $tag) { $existTag = $this->tagService->findTagByName($tag); if (!empty($existTag)) { $newsTags = $news->getTags()->toArray(); if (!in_array($existTag, $newsTags)) { $news->addTags($existTag); } } else { $newTag = new \Lelesys\Plugin\News\Domain\Model\Tag(); $newTag->setTitle($tag); $this->tagService->create($newTag); $news->addTags($newTag); } } } $news->setUpdatedDate(new \DateTime()); $mediaPath = $media; foreach ($mediaPath as $mediaSource) { if (!empty($mediaSource['uuid'])) { $updateAsset = $this->propertyMapper->convert($mediaSource['uuid']['__identity'], '\\TYPO3\\Media\\Domain\\Model\\Image'); $updateAsset->setCaption($mediaSource['caption']); $this->imageRepository->update($updateAsset); } else { if (!empty($mediaSource['resource']['name'])) { $resource = $this->propertyMapper->convert($mediaSource['resource'], 'TYPO3\\Flow\\Resource\\Resource'); $media = new \TYPO3\Media\Domain\Model\Image($resource); $media->setCaption($mediaSource['caption']); $this->imageRepository->add($media); $news->addAssets($media); } } } $filePath = $file; foreach ($filePath as $fileSource) { if (isset($fileSource['uuid'])) { $updateFile = $this->propertyMapper->convert($fileSource['uuid']['__identity'], '\\TYPO3\\Media\\Domain\\Model\\Document'); $updateFile->setTitle($fileSource['title']); $this->assetRepository->update($updateFile); } else { if (!empty($fileSource['resource']['name'])) { $resource = $this->propertyMapper->convert($fileSource['resource'], 'TYPO3\\Flow\\Resource\\Resource'); $file = new \TYPO3\Media\Domain\Model\Document($resource); $file->setTitle($fileSource['title']); $this->assetRepository->add($file); $news->addFiles($file); } } } $related = $relatedLink; foreach ($related as $link) { if (isset($link['uuid'])) { $updateLink = $this->linkService->findById($link['uuid']); $updateLink->setUri($link['relatedUri']); $updateLink->setTitle($link['relatedUriTitle']); $updateLink->setDescription($link['relatedUriDescription']); $updateLink->setHidden($link['hidden']); $this->linkService->update($updateLink); } else { if (!empty($link['relatedUri'])) { $newLink = new \Lelesys\Plugin\News\Domain\Model\Link(); $newLink->setTitle($link['relatedUriTitle']); $newLink->setUri($link['relatedUri']); $newLink->setDescription($link['relatedUriDescription']); $newLink->setHidden($link['hidden']); $this->linkService->create($newLink); $news->addRelatedLinks($newLink); } } } $this->newsRepository->update($news); $this->emitNewsUpdated($news); }