X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=leistungsschutzrecht%2Fleistungsschutzrecht.php;h=0945df0e555a30bf8a929fd242b0ee10aa56425f;hb=5af972bb22b74a8744c72d1f3ec77e244a980865;hp=c33c1f4928026436575cf26f41bbbbcc21b26fca;hpb=3d8d0e2860c3cb379e486e5a9565df5cbcc041a0;p=friendica-addons.git diff --git a/leistungsschutzrecht/leistungsschutzrecht.php b/leistungsschutzrecht/leistungsschutzrecht.php index c33c1f49..0945df0e 100644 --- a/leistungsschutzrecht/leistungsschutzrecht.php +++ b/leistungsschutzrecht/leistungsschutzrecht.php @@ -6,41 +6,97 @@ * Author: Michael Vogel */ -function leistungsschutzrecht_install() { - register_hook('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron'); - register_hook('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); - register_hook('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); +use Friendica\App; +use Friendica\Core\Hook; +use Friendica\Core\Logger; +use Friendica\DI; + +function leistungsschutzrecht_install() +{ + Hook::register('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron'); + Hook::register('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); + Hook::register('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); } +function leistungsschutzrecht_getsiteinfo(App $a, array &$siteinfo) { + if (!isset($siteinfo['url']) || empty($siteinfo['type'])) { + return; + } -function leistungsschutzrecht_uninstall() { - unregister_hook('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron'); - unregister_hook('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); - unregister_hook('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); -} + // Avoid any third party pictures, to avoid copyright issues + if (!in_array($siteinfo['type'], ['photo', 'video']) && DI::config()->get('leistungsschutzrecht', 'suppress_photos', false)) { + unset($siteinfo['image']); + unset($siteinfo['images']); + } -function leistungsschutzrecht_getsiteinfo($a, &$siteinfo) { - if (!isset($siteinfo["url"])) + if (!leistungsschutzrecht_is_member_site($siteinfo['url'])) { return; + } - if (!leistungsschutzrecht_is_member_site($siteinfo["url"])) - return; + if (!empty($siteinfo['text'])) { + $siteinfo['text'] = leistungsschutzrecht_cuttext($siteinfo['text']); + } - $siteinfo["title"] = $siteinfo["url"]; - unset($siteinfo["text"]); - unset($siteinfo["image"]); - unset($siteinfo["images"]); - unset($siteinfo["keywords"]); + unset($siteinfo['keywords']); } -function leistungsschutzrecht_fetchsites() { - require_once("include/network.php"); +function leistungsschutzrecht_cuttext(string $text): string +{ + $text = str_replace(["\r", "\n"], [' ', ' '], $text); + + do { + $oldtext = $text; + $text = str_replace(' ', ' ', $text); + } while ($oldtext != $text); + $words = explode(' ', $text); + + $text = ''; + $count = 0; + $limit = 7; + + foreach ($words as $word) { + if ($text != '') { + $text .= ' '; + } + + $text .= $word; + + if (++$count >= $limit) { + if (sizeof($words) > $limit) { + $text .= ' ...'; + } + + break; + } + } + return $text; +} + +function leistungsschutzrecht_fetchsites() +{ + // This list works - but question is how current it is + $url = 'https://leistungsschutzrecht-stoppen.d-64.org/blacklist.txt'; + $sitelist = DI::httpClient()->fetch($url); + $siteurls = explode(',', $sitelist); + + $whitelist = ['tagesschau.de', 'heute.de', 'wdr.de']; + + $sites = []; + foreach ($siteurls as $site) { + if (!in_array($site, $whitelist)) { + $sites[$site] = $site; + } + } + + // I would prefer parsing the list from the original site, but I haven't found a list. + // The following stays here to possibly reenable it in the future without having to reinvent the wheel completely. +/* $sites = array(); $url = "http://www.vg-media.de/lizenzen/digitale-verlegerische-angebote/wahrnehmungsberechtigte-digitale-verlegerische-angebote.html"; - $site = fetch_url($url); + $site = Network::fetchUrl($url); $doc = new DOMDocument(); @$doc->loadHTML($site); @@ -56,7 +112,7 @@ function leistungsschutzrecht_fetchsites() { if (isset($attr["href"])) { $urldata = parse_url($attr["href"]); - if (isset($urldata["host"]) AND !isset($urldata["path"])) { + if (isset($urldata["host"]) && !isset($urldata["path"])) { $cleanedurlpart = explode("%", $urldata["host"]); $hostname = explode(".", $cleanedurlpart[0]); @@ -65,45 +121,58 @@ function leistungsschutzrecht_fetchsites() { } } } +*/ if (sizeof($sites)) { - set_config('leistungsschutzrecht','sites',$sites); + DI::config()->set('leistungsschutzrecht', 'sites',$sites); } } -function leistungsschutzrecht_is_member_site($url) { - $sites = get_config('leistungsschutzrecht','sites'); +function leistungsschutzrecht_is_member_site(string $url): bool +{ + $sites = DI::config()->get('leistungsschutzrecht', 'sites'); - if ($sites == "") - return(false); + if ($sites == '') { + return false; + } - if (sizeof($sites) == 0) - return(false); + if (sizeof($sites) == 0) { + return false; + } $urldata = parse_url($url); - if (!isset($urldata["host"])) - return(false); + if (!isset($urldata['host'])) { + return false; + } + + $cleanedurlpart = explode('%', $urldata['host']); - $cleanedurlpart = explode("%", $urldata["host"]); + $hostname = explode('.', $cleanedurlpart[0]); + if (empty($hostname)) { + return false; + } + + if (count($hostname) <= 2) { + return false; + } - $hostname = explode(".", $cleanedurlpart[0]); - $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1]; + $site = $hostname[sizeof($hostname) - 2] . '.' . $hostname[sizeof($hostname) - 1]; - return (isset($sites[$site])); + return isset($sites[$site]); } -function leistungsschutzrecht_cron($a,$b) { - $last = get_config('leistungsschutzrecht','last_poll'); +function leistungsschutzrecht_cron(App $a, $b) +{ + $last = DI::keyValue()->get('leistungsschutzrecht_last_poll'); - if($last) { + if ($last) { $next = $last + 86400; - if($next > time()) { - logger('poll intervall not reached'); + if ($next > time()) { + Logger::notice('poll intervall not reached'); return; } } leistungsschutzrecht_fetchsites(); - set_config('leistungsschutzrecht','last_poll', time()); + DI::keyValue()->set('leistungsschutzrecht_last_poll', time()); } -?>