From b146f66e6065e53ee36bb6ad961b776d43452c6c Mon Sep 17 00:00:00 2001 From: Karl Hasselbring <Karl Hasselbring> Date: Tue, 16 May 2017 10:49:37 +0200 Subject: [PATCH] =?UTF-8?q?urls=20mit=20bestimmten=20w=C3=B6rtern=20auszus?= =?UTF-8?q?chlie=C3=9Fen=20ins=20jetzt=20=C3=BCber=20-url:<Wort>=20m=C3=B6?= =?UTF-8?q?glich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/MetaGer.php | 40 +++++++++++++++++++++++++++++------ app/Models/Result.php | 11 +++++++--- resources/lang/de/metaGer.php | 2 +- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/app/MetaGer.php b/app/MetaGer.php index 3730cf814..342d8ba67 100644 --- a/app/MetaGer.php +++ b/app/MetaGer.php @@ -24,6 +24,7 @@ class MetaGer protected $site; protected $hostBlacklist = []; protected $domainBlacklist = []; + private $urlBlacklist = []; protected $stopWords = []; protected $phrases = []; protected $engines = []; @@ -1023,12 +1024,13 @@ class MetaGer $this->searchCheckSitesearch($site); $this->searchCheckHostBlacklist(); $this->searchCheckDomainBlacklist(); + $this->searchCheckUrlBlacklist(); $this->searchCheckPhrase(); $this->searchCheckStopwords(); $this->searchCheckNoSearch(); } - public function searchCheckSitesearch($site) + private function searchCheckSitesearch($site) { // matches '[... ]site:test.de[ ...]' while (preg_match("/(^|.+\s)site:(\S+)(?:\s(.+)|($))/si", $this->q, $match)) { @@ -1040,13 +1042,14 @@ class MetaGer } } - public function searchCheckHostBlacklist() + private function searchCheckHostBlacklist() { // matches '[... ]-site:test.de[ ...]' while (preg_match("/(^|.+\s)-site:([^\s\*]\S*)(?:\s(.+)|($))/si", $this->q, $match)) { $this->hostBlacklist[] = $match[2]; $this->q = $match[1] . $match[3]; } + // print the host blacklist as a user warning if (sizeof($this->hostBlacklist) > 0) { $hostString = ""; foreach ($this->hostBlacklist as $host) { @@ -1057,13 +1060,14 @@ class MetaGer } } - public function searchCheckDomainBlacklist() + private function searchCheckDomainBlacklist() { // matches '[... ]-site:*.test.de[ ...]' while (preg_match("/(^|.+\s)-site:\*\.(\S+)(?:\s(.+)|($))/si", $this->q, $match)) { $this->domainBlacklist[] = $match[2]; $this->q = $match[1] . $match[3]; } + // print the domain blacklist as a user warning if (sizeof($this->domainBlacklist) > 0) { $domainString = ""; foreach ($this->domainBlacklist as $domain) { @@ -1074,13 +1078,32 @@ class MetaGer } } - public function searchCheckStopwords() + private function searchCheckUrlBlacklist() + { + // matches '[... ]-site:*.test.de[ ...]' + while (preg_match("/(^|.+\s)-url:(\S+)(?:\s(.+)|($))/si", $this->q, $match)) { + $this->urlBlacklist[] = $match[2]; + $this->q = $match[1] . $match[3]; + } + // print the url blacklist as a user warning + if (sizeof($this->urlBlacklist) > 0) { + $urlString = ""; + foreach ($this->urlBlacklist as $url) { + $urlString .= $url . ", "; + } + $urlString = rtrim($urlString, ", "); + $this->warnings[] = trans('metaGer.formdata.urlBlacklist', ['url' => $urlString]); + } + } + + private function searchCheckStopwords() { // matches '[... ]-test[ ...]' while (preg_match("/(^|.+\s)-(\S+)(?:\s(.+)|($))/si", $this->q, $match)) { $this->stopWords[] = $match[2]; $this->q = $match[1] . $match[3]; } + // print the stopwords as a user warning if (sizeof($this->stopWords) > 0) { $stopwordsString = ""; foreach ($this->stopWords as $stopword) { @@ -1091,7 +1114,7 @@ class MetaGer } } - public function searchCheckPhrase() + private function searchCheckPhrase() { $p = ""; $tmp = $this->q; @@ -1109,7 +1132,7 @@ class MetaGer } } - public function searchCheckNoSearch() + private function searchCheckNoSearch() { if ($this->q === "") { $this->warnings[] = trans('metaGer.formdata.noSearch'); @@ -1447,6 +1470,11 @@ class MetaGer return $this->domainBlacklist; } + public function getUserUrlBlacklist() + { + return $this->urlBlacklist; + } + public function getDomainBlacklist() { return $this->domainsBlacklisted; diff --git a/app/Models/Result.php b/app/Models/Result.php index c60bf62f3..e7ee28f92 100644 --- a/app/Models/Result.php +++ b/app/Models/Result.php @@ -216,12 +216,17 @@ class Result # Überprüft ob das Ergebnis aus irgendwelchen Gründen unerwünscht ist. public function isValid(\App\MetaGer $metager) { - # Perönliche URL und Domain Blacklist - if (in_array($this->strippedHost, $metager->getUserHostBlacklist()) - || in_array($this->strippedDomain, $metager->getUserDomainBlacklist())) { + # Perönliche Host und Domain Blacklist + if (in_array(strtolower($this->strippedHost), $metager->getUserHostBlacklist()) + || in_array(strtolower($this->strippedDomain), $metager->getUserDomainBlacklist())) { return false; } + # Persönliche URL Blacklist + foreach ($metager->getUserUrlBlacklist() as $word) { + if (strpos(strtolower($this->link), $word)) return false; + } + # Allgemeine URL und Domain Blacklist if ($this->strippedHost !== "" && (in_array($this->strippedHost, $metager->getDomainBlacklist()) || in_array($this->strippedLink, $metager->getUrlBlacklist()))) { return false; diff --git a/resources/lang/de/metaGer.php b/resources/lang/de/metaGer.php index e2baeb7c7..f776751c9 100644 --- a/resources/lang/de/metaGer.php +++ b/resources/lang/de/metaGer.php @@ -11,8 +11,8 @@ return [ 'formdata.noSearch' => 'Achtung: Sie haben keinen Suchbegriff eingegeben. Sie können ihre Suchbegriffe oben eingeben und es erneut versuchen.', 'formdata.dartEurope' => 'Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.', 'formdata.hostBlacklist' => 'Ergebnisse von folgenden Hosts werden nicht angezeigt: ":host"', - 'formdata.domainBlacklist' => 'Ergebnisse von folgenden Domains werden nicht angezeigt: ":domain"', + 'formdata.urlBlacklist' => 'Ergebnisse mit URLs die folgendes nicht beinhalten werden nicht angezeigt: ":url"', 'formdata.stopwords' => 'Sie machen eine Ausschlusssuche. Ergebnisse mit folgenden Wörtern werden nicht angezeigt: ":stopwords"', 'formdata.phrase' => 'Sie führen eine Phrasensuche durch: :phrase', -- GitLab