From c2656f96d4776c86b13d8a4c93a78ee7c4d3824c Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Fri, 19 Feb 2016 14:22:20 +0100 Subject: Move assignTagsToEntry in ContentProxy helper --- src/Wallabag/CoreBundle/Helper/ContentProxy.php | 40 ++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'src/Wallabag/CoreBundle/Helper') diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php index bd8b993a..ba90b731 100644 --- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php +++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php @@ -5,7 +5,9 @@ namespace Wallabag\CoreBundle\Helper; use Graby\Graby; use Psr\Log\LoggerInterface as Logger; use Wallabag\CoreBundle\Entity\Entry; +use Wallabag\CoreBundle\Entity\Tag; use Wallabag\CoreBundle\Tools\Utils; +use Wallabag\CoreBundle\Repository\TagRepository; /** * This kind of proxy class take care of getting the content from an url @@ -16,12 +18,14 @@ class ContentProxy protected $graby; protected $tagger; protected $logger; + protected $tagRepository; - public function __construct(Graby $graby, RuleBasedTagger $tagger, Logger $logger) + public function __construct(Graby $graby, RuleBasedTagger $tagger, TagRepository $tagRepository, Logger $logger) { $this->graby = $graby; $this->tagger = $tagger; $this->logger = $logger; + $this->tagRepository = $tagRepository; } /** @@ -75,4 +79,38 @@ class ContentProxy return $entry; } + + /** + * Assign some tags to an entry. + * + * @param Entry $entry + * @param array|string $tags An array of tag or a string coma separated of tag + */ + public function assignTagsToEntry(Entry $entry, $tags) + { + if (!is_array($tags)) { + $tags = explode(',', $tags); + } + + foreach ($tags as $label) { + $label = trim($label); + + // avoid empty tag + if (0 === strlen($label)) { + continue; + } + + $tagEntity = $this->tagRepository->findOneByLabel($label); + + if (is_null($tagEntity)) { + $tagEntity = new Tag(); + $tagEntity->setLabel($label); + } + + // only add the tag on the entry if the relation doesn't exist + if (false === $entry->getTags()->contains($tagEntity)) { + $entry->addTag($tagEntity); + } + } + } } -- cgit v1.2.3