X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FHelper%2FContentProxy.php;h=ba90b7310af83fd13774a1d87b38fb8fb241736a;hb=abc329453be6381bcf4d1b0dfd9f698312ed3b16;hp=3d585e6180786222603cb3f0be2e76b3ac18c8af;hpb=1c9cd2a7f03a66a1ae5132ff270e94a7fe6eb9ed;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php index 3d585e61..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->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); + } + } + } }