aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php
diff options
context:
space:
mode:
authorKévin Gomez <contact@kevingomez.fr>2015-10-24 15:11:06 +0200
committerKévin Gomez <contact@kevingomez.fr>2015-11-11 16:27:19 +0100
commit625acf335298186b4ff983f9321900d1238e854b (patch)
treebc3149d9cee320429475ced6a1cb8b53c71ad7eb /src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php
parentcad8cda7af06234a63b86253da1d813e7b0fd0f2 (diff)
downloadwallabag-625acf335298186b4ff983f9321900d1238e854b.tar.gz
wallabag-625acf335298186b4ff983f9321900d1238e854b.tar.zst
wallabag-625acf335298186b4ff983f9321900d1238e854b.zip
Add a command to automatically tag all entries for a user
Diffstat (limited to 'src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php')
-rw-r--r--src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php38
1 files changed, 35 insertions, 3 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php b/src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php
index bb933779..3f9953c0 100644
--- a/src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php
+++ b/src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php
@@ -6,6 +6,7 @@ use RulerZ\RulerZ;
6 6
7use Wallabag\CoreBundle\Entity\Entry; 7use Wallabag\CoreBundle\Entity\Entry;
8use Wallabag\CoreBundle\Entity\Tag; 8use Wallabag\CoreBundle\Entity\Tag;
9use Wallabag\CoreBundle\Repository\EntryRepository;
9use Wallabag\CoreBundle\Repository\TagRepository; 10use Wallabag\CoreBundle\Repository\TagRepository;
10use Wallabag\UserBundle\Entity\User; 11use Wallabag\UserBundle\Entity\User;
11 12
@@ -13,11 +14,13 @@ class RuleBasedTagger
13{ 14{
14 private $rulerz; 15 private $rulerz;
15 private $tagRepository; 16 private $tagRepository;
17 private $entryRepository;
16 18
17 public function __construct(RulerZ $rulerz, TagRepository $tagRepository) 19 public function __construct(RulerZ $rulerz, TagRepository $tagRepository, EntryRepository $entryRepository)
18 { 20 {
19 $this->rulerz = $rulerz; 21 $this->rulerz = $rulerz;
20 $this->tagRepository = $tagRepository; 22 $this->tagRepository = $tagRepository;
23 $this->entryRepository = $entryRepository;
21 } 24 }
22 25
23 /** 26 /**
@@ -43,6 +46,35 @@ class RuleBasedTagger
43 } 46 }
44 47
45 /** 48 /**
49 * Apply all the tagging rules defined by a user on its entries.
50 *
51 * @param User $user
52 *
53 * @return array<Entry> A list of modified entries.
54 */
55 public function tagAllForUser(User $user)
56 {
57 $rules = $this->getRulesForUser($user);
58 $entries = array();
59
60 foreach ($rules as $rule) {
61 $qb = $this->entryRepository->getBuilderForAllByUser($user->getId());
62 $entries = $this->rulerz->filter($qb, $rule->getRule());
63
64 foreach ($entries as $entry) {
65 foreach ($rule->getTags() as $label) {
66 $tag = $this->getTag($user, $label);
67
68 $entry->addTag($tag);
69 $entries[] = $entry;
70 }
71 }
72 }
73
74 return $entries;
75 }
76
77 /**
46 * Fetch a tag for a user. 78 * Fetch a tag for a user.
47 * 79 *
48 * @param User $user 80 * @param User $user