aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php
diff options
context:
space:
mode:
authorKevin Decherf <kevin@kdecherf.com>2020-04-26 15:39:57 +0200
committerGitHub <noreply@github.com>2020-04-26 15:39:57 +0200
commit0e8a0f77d0b643a884e6687bd9c463267852a970 (patch)
tree88c6761b4215637bba34b263015e87750c92a187 /src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php
parent8a8a78a64c116caf81aaa4339906298bdc0e32e0 (diff)
parent71f7e58fbd84e1d15c7a405a3c5872adb937dc37 (diff)
downloadwallabag-0e8a0f77d0b643a884e6687bd9c463267852a970.tar.gz
wallabag-0e8a0f77d0b643a884e6687bd9c463267852a970.tar.zst
wallabag-0e8a0f77d0b643a884e6687bd9c463267852a970.zip
Merge pull request #4026 from wallabag/3760-ignorelist-db
Move Ignore Origin rules to database
Diffstat (limited to 'src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php')
-rw-r--r--src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php b/src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php
new file mode 100644
index 00000000..333e5b0a
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Helper/RuleBasedIgnoreOriginProcessor.php
@@ -0,0 +1,50 @@
1<?php
2
3namespace Wallabag\CoreBundle\Helper;
4
5use Psr\Log\LoggerInterface;
6use RulerZ\RulerZ;
7use Wallabag\CoreBundle\Entity\Entry;
8use Wallabag\CoreBundle\Repository\IgnoreOriginInstanceRuleRepository;
9
10class RuleBasedIgnoreOriginProcessor
11{
12 protected $rulerz;
13 protected $logger;
14 protected $ignoreOriginInstanceRuleRepository;
15
16 public function __construct(RulerZ $rulerz, LoggerInterface $logger, IgnoreOriginInstanceRuleRepository $ignoreOriginInstanceRuleRepository)
17 {
18 $this->rulerz = $rulerz;
19 $this->logger = $logger;
20 $this->ignoreOriginInstanceRuleRepository = $ignoreOriginInstanceRuleRepository;
21 }
22
23 /**
24 * @param Entry $entry Entry to process
25 *
26 * @return bool
27 */
28 public function process(Entry $entry)
29 {
30 $url = $entry->getUrl();
31 $userRules = $entry->getUser()->getConfig()->getIgnoreOriginRules()->toArray();
32 $rules = array_merge($this->ignoreOriginInstanceRuleRepository->findAll(), $userRules);
33
34 $parsed_url = parse_url($url);
35 // We add the former url as a new key _all for pattern matching
36 $parsed_url['_all'] = $url;
37
38 foreach ($rules as $rule) {
39 if ($this->rulerz->satisfies($parsed_url, $rule->getRule())) {
40 $this->logger->info('Origin url matching ignore rule.', [
41 'rule' => $rule->getRule(),
42 ]);
43
44 return true;
45 }
46 }
47
48 return false;
49 }
50}