/** * @test */ public function findBySearchTermAndTagsReturnsFilteredResult() { $tag = new Tag('home'); $this->tagRepository->add($tag); $resource1 = $this->resourceManager->importResource(__DIR__ . '/../../Fixtures/Resources/license.txt'); $resource2 = $this->resourceManager->importResource(__DIR__ . '/../../Fixtures/Resources/417px-Mihaly_Csikszentmihalyi.jpg'); $asset1 = new Asset($resource1); $asset1->setTitle('asset for homepage'); $asset2 = new Asset($resource2); $asset2->setTitle('just another asset'); $asset2->addTag($tag); $this->assetRepository->add($asset1); $this->assetRepository->add($asset2); $this->persistenceManager->persistAll(); $this->persistenceManager->clearState(); $this->assertCount(2, $this->assetRepository->findBySearchTermOrTags('home', array($tag))); $this->assertCount(2, $this->assetRepository->findBySearchTermOrTags('homepage', array($tag))); $this->assertCount(1, $this->assetRepository->findBySearchTermOrTags('baz', array($tag))); // This is necessary to initialize all resource instances before the tables are deleted foreach ($this->assetRepository->findAll() as $asset) { $asset->getResource()->getSha1(); } }
/** * @param Asset $asset * @param MetaDataCollection $metaDataCollection */ public function mapMetaData(Asset $asset, MetaDataCollection $metaDataCollection) { $contextVariables = array_merge($this->defaultContextVariables, $metaDataCollection->toArray()); if (isset($this->metaDataMappingConfiguration['title'])) { $asset->setTitle(substr((string) EelUtility::evaluateEelExpression($this->metaDataMappingConfiguration['title'], $this->eelEvaluator, $contextVariables), 0, 255)); } if (isset($this->metaDataMappingConfiguration['caption'])) { $asset->setCaption((string) EelUtility::evaluateEelExpression($this->metaDataMappingConfiguration['caption'], $this->eelEvaluator, $contextVariables)); } if (isset($this->metaDataMappingConfiguration['tags'])) { $tagLabels = EelUtility::evaluateEelExpression($this->metaDataMappingConfiguration['tags'], $this->eelEvaluator, $contextVariables); $tagLabels = array_unique($tagLabels); $tags = new ArrayCollection(); foreach ($tagLabels as $tagLabel) { if (trim($tagLabel) !== '') { $tags->add($this->getOrCreateTag(trim($tagLabel))); } } $asset->setTags($tags); } if (isset($this->metaDataMappingConfiguration['collections'])) { $collectionTitles = EelUtility::evaluateEelExpression($this->metaDataMappingConfiguration['collections'], $this->eelEvaluator, $contextVariables); $collectionTitles = array_unique($collectionTitles); $collections = new ArrayCollection(); foreach ($collectionTitles as $collectionTitle) { if (trim($collectionTitle) !== '') { $collections->add($this->getOrCreateCollection(trim($collectionTitle))); } } $asset->setAssetCollections($collections); } if (!$this->persistenceManager->isNewObject($asset)) { $this->assetRepository->update($asset); } }