addTag() публичный Метод

public addTag ( Wallabag\CoreBundle\Entity\Tag $tag )
$tag Wallabag\CoreBundle\Entity\Tag
Пример #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);
         }
     }
 }
Пример #2
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
  */
 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);
         }
     }
 }
Пример #3
0
 public function testAssignTagsAlreadyAssigned()
 {
     $graby = $this->getMockBuilder('Graby\\Graby')->disableOriginalConstructor()->getMock();
     $tagRepo = $this->getTagRepositoryMock();
     $proxy = new ContentProxy($graby, $this->getTaggerMock(), $tagRepo, $this->getLogger());
     $tagEntity = new Tag();
     $tagEntity->setLabel('tag1');
     $entry = new Entry(new User());
     $entry->addTag($tagEntity);
     $proxy->assignTagsToEntry($entry, 'tag1, tag2');
     $this->assertCount(2, $entry->getTags());
     $this->assertEquals('tag1', $entry->getTags()[0]->getLabel());
     $this->assertEquals('tag2', $entry->getTags()[1]->getLabel());
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function load(ObjectManager $manager)
 {
     $entry1 = new Entry($this->getReference('admin-user'));
     $entry1->setUrl('http://0.0.0.0/entry1');
     $entry1->setReadingTime(11);
     $entry1->setDomainName('domain.io');
     $entry1->setMimetype('text/html');
     $entry1->setTitle('test title entry1');
     $entry1->setContent('This is my content /o/');
     $entry1->setLanguage('en');
     $manager->persist($entry1);
     $this->addReference('entry1', $entry1);
     $entry2 = new Entry($this->getReference('admin-user'));
     $entry2->setUrl('http://0.0.0.0/entry2');
     $entry2->setReadingTime(1);
     $entry2->setDomainName('domain.io');
     $entry2->setMimetype('text/html');
     $entry2->setTitle('test title entry2');
     $entry2->setContent('This is my content /o/');
     $entry2->setLanguage('fr');
     $manager->persist($entry2);
     $this->addReference('entry2', $entry2);
     $entry3 = new Entry($this->getReference('bob-user'));
     $entry3->setUrl('http://0.0.0.0/entry3');
     $entry3->setReadingTime(1);
     $entry3->setDomainName('domain.io');
     $entry3->setMimetype('text/html');
     $entry3->setTitle('test title entry3');
     $entry3->setContent('This is my content /o/');
     $entry3->setLanguage('en');
     $entry3->addTag($this->getReference('foo-tag'));
     $entry3->addTag($this->getReference('bar-tag'));
     $manager->persist($entry3);
     $this->addReference('entry3', $entry3);
     $entry4 = new Entry($this->getReference('admin-user'));
     $entry4->setUrl('http://0.0.0.0/entry4');
     $entry4->setReadingTime(12);
     $entry4->setDomainName('domain.io');
     $entry4->setMimetype('text/html');
     $entry4->setTitle('test title entry4');
     $entry4->setContent('This is my content /o/');
     $entry4->setLanguage('en');
     $entry4->addTag($this->getReference('foo-tag'));
     $entry4->addTag($this->getReference('bar-tag'));
     $manager->persist($entry4);
     $this->addReference('entry4', $entry4);
     $entry5 = new Entry($this->getReference('admin-user'));
     $entry5->setUrl('http://0.0.0.0/entry5');
     $entry5->setReadingTime(12);
     $entry5->setDomainName('domain.io');
     $entry5->setMimetype('text/html');
     $entry5->setTitle('test title entry5');
     $entry5->setContent('This is my content /o/');
     $entry5->setStarred(true);
     $entry5->setLanguage('fr');
     $entry5->setPreviewPicture('http://0.0.0.0/image.jpg');
     $manager->persist($entry5);
     $this->addReference('entry5', $entry5);
     $entry6 = new Entry($this->getReference('admin-user'));
     $entry6->setUrl('http://0.0.0.0/entry6');
     $entry6->setReadingTime(12);
     $entry6->setDomainName('domain.io');
     $entry6->setMimetype('text/html');
     $entry6->setTitle('test title entry6');
     $entry6->setContent('This is my content /o/');
     $entry6->setArchived(true);
     $entry6->setLanguage('de');
     $manager->persist($entry6);
     $this->addReference('entry6', $entry6);
     $manager->flush();
 }