X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FHelper%2FContentProxy.php;h=ba90b7310af83fd13774a1d87b38fb8fb241736a;hb=abc329453be6381bcf4d1b0dfd9f698312ed3b16;hp=bd8b993a1c56b1b73078a5f0e1666f65a26c7b93;hpb=da2240f9d409a8301a1d469823a265780e6f1b7b;p=github%2Fwallabag%2Fwallabag.git 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); + } + } + } }