Wallabag\CoreBundle\Entity\Entry::addTag PHP Method

addTag() public method

public addTag ( Wallabag\CoreBundle\Entity\Tag $tag )
$tag Wallabag\CoreBundle\Entity\Tag
    public function addTag(Tag $tag)
    {
        if ($this->tags->contains($tag)) {
            return;
        }
        // check if tag already exist but has not yet be persisted
        // it seems that the previous condition with `contains()` doesn't check that case
        foreach ($this->tags as $existingTag) {
            if ($existingTag->getLabel() === $tag->getLabel()) {
                return;
            }
        }
        $this->tags->add($tag);
        $tag->addEntry($this);
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Assign some tags to an entry.
  *
  * @param Entry        $entry
  * @param array|string $tags          An array of tag or a string coma separated of tag
  * @param array        $entitiesReady Entities from the EntityManager which are persisted but not yet flushed
  *                                    It is mostly to fix duplicate tag on import @see http://stackoverflow.com/a/7879164/569101
  */
 public function assignTagsToEntry(Entry $entry, $tags, array $entitiesReady = [])
 {
     if (!is_array($tags)) {
         $tags = explode(',', $tags);
     }
     // keeps only Tag entity from the "not yet flushed entities"
     $tagsNotYetFlushed = [];
     foreach ($entitiesReady as $entity) {
         if ($entity instanceof Tag) {
             $tagsNotYetFlushed[$entity->getLabel()] = $entity;
         }
     }
     foreach ($tags as $label) {
         $label = trim($label);
         // avoid empty tag
         if (0 === strlen($label)) {
             continue;
         }
         if (isset($tagsNotYetFlushed[$label])) {
             $tagEntity = $tagsNotYetFlushed[$label];
         } else {
             $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);
         }
     }
 }
All Usage Examples Of Wallabag\CoreBundle\Entity\Entry::addTag