]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | namespace Wallabag\CoreBundle\Helper; | |
4 | ||
5 | use Psr\Log\LoggerInterface; | |
6 | use RulerZ\RulerZ; | |
7 | use Wallabag\CoreBundle\Entity\Entry; | |
8 | use Wallabag\CoreBundle\Repository\IgnoreOriginInstanceRuleRepository; | |
9 | ||
10 | class 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 | } |