From f0ccc16165cbd51cffa1b6d4242b3310a2d1b4d9 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 13 Nov 2014 21:56:23 +0100 Subject: [PATCH] Leistungsschutzrecht: A mechanism to avoid problems with a stupid german law. --- leistungsschutzrecht/leistungsschutzrecht.php | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 leistungsschutzrecht/leistungsschutzrecht.php diff --git a/leistungsschutzrecht/leistungsschutzrecht.php b/leistungsschutzrecht/leistungsschutzrecht.php new file mode 100644 index 000000000..c33c1f492 --- /dev/null +++ b/leistungsschutzrecht/leistungsschutzrecht.php @@ -0,0 +1,109 @@ + + */ + +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'); +} + + +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'); +} + +function leistungsschutzrecht_getsiteinfo($a, &$siteinfo) { + if (!isset($siteinfo["url"])) + return; + + if (!leistungsschutzrecht_is_member_site($siteinfo["url"])) + return; + + $siteinfo["title"] = $siteinfo["url"]; + unset($siteinfo["text"]); + unset($siteinfo["image"]); + unset($siteinfo["images"]); + unset($siteinfo["keywords"]); +} + +function leistungsschutzrecht_fetchsites() { + require_once("include/network.php"); + + $sites = array(); + + $url = "http://www.vg-media.de/lizenzen/digitale-verlegerische-angebote/wahrnehmungsberechtigte-digitale-verlegerische-angebote.html"; + + $site = fetch_url($url); + + $doc = new DOMDocument(); + @$doc->loadHTML($site); + + $xpath = new DomXPath($doc); + $list = $xpath->query("//td/a"); + foreach ($list as $node) { + $attr = array(); + if ($node->attributes->length) + foreach ($node->attributes as $attribute) + $attr[$attribute->name] = $attribute->value; + + if (isset($attr["href"])) { + $urldata = parse_url($attr["href"]); + + if (isset($urldata["host"]) AND !isset($urldata["path"])) { + $cleanedurlpart = explode("%", $urldata["host"]); + + $hostname = explode(".", $cleanedurlpart[0]); + $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1]; + $sites[$site] = $site; + } + } + } + + if (sizeof($sites)) { + set_config('leistungsschutzrecht','sites',$sites); + } +} + +function leistungsschutzrecht_is_member_site($url) { + $sites = get_config('leistungsschutzrecht','sites'); + + if ($sites == "") + return(false); + + if (sizeof($sites) == 0) + return(false); + + $urldata = parse_url($url); + + if (!isset($urldata["host"])) + return(false); + + $cleanedurlpart = explode("%", $urldata["host"]); + + $hostname = explode(".", $cleanedurlpart[0]); + $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1]; + + return (isset($sites[$site])); +} + +function leistungsschutzrecht_cron($a,$b) { + $last = get_config('leistungsschutzrecht','last_poll'); + + if($last) { + $next = $last + 86400; + if($next > time()) { + logger('poll intervall not reached'); + return; + } + } + leistungsschutzrecht_fetchsites(); + set_config('leistungsschutzrecht','last_poll', time()); +} +?>