diff options
author | Kévin Gomez <contact@kevingomez.fr> | 2015-10-24 15:11:06 +0200 |
---|---|---|
committer | Kévin Gomez <contact@kevingomez.fr> | 2015-11-11 16:27:19 +0100 |
commit | 625acf335298186b4ff983f9321900d1238e854b (patch) | |
tree | bc3149d9cee320429475ced6a1cb8b53c71ad7eb /src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php | |
parent | cad8cda7af06234a63b86253da1d813e7b0fd0f2 (diff) | |
download | wallabag-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.php | 38 |
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 | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | 7 | use Wallabag\CoreBundle\Entity\Entry; |
8 | use Wallabag\CoreBundle\Entity\Tag; | 8 | use Wallabag\CoreBundle\Entity\Tag; |
9 | use Wallabag\CoreBundle\Repository\EntryRepository; | ||
9 | use Wallabag\CoreBundle\Repository\TagRepository; | 10 | use Wallabag\CoreBundle\Repository\TagRepository; |
10 | use Wallabag\UserBundle\Entity\User; | 11 | use 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 |