3 * Name: Leistungsschutzrecht
4 * Description: Only useful in germany: Remove data from snippets from members of the VG Media
6 * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
9 function leistungsschutzrecht_install() {
10 register_hook('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron');
11 register_hook('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo');
12 register_hook('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo');
16 function leistungsschutzrecht_uninstall() {
17 unregister_hook('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron');
18 unregister_hook('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo');
19 unregister_hook('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo');
22 function leistungsschutzrecht_getsiteinfo($a, &$siteinfo) {
23 if (!isset($siteinfo["url"]))
26 if (!leistungsschutzrecht_is_member_site($siteinfo["url"]))
29 //$siteinfo["title"] = $siteinfo["url"];
30 $siteinfo["text"] = leistungsschutzrecht_cuttext($siteinfo["text"]);
31 unset($siteinfo["image"]);
32 unset($siteinfo["images"]);
33 unset($siteinfo["keywords"]);
36 function leistungsschutzrecht_cuttext($text) {
37 $text = str_replace(array("\r", "\n"), array(" ", " "), $text);
41 $text = str_replace(" ", " ", $text);
42 } while ($oldtext != $text);
44 $words = explode(" ", $text);
50 foreach ($words as $word) {
56 if (++$count >= $limit) {
57 if (sizeof($words) > $limit)
66 function leistungsschutzrecht_fetchsites() {
67 require_once("include/network.php");
71 $url = "http://www.vg-media.de/lizenzen/digitale-verlegerische-angebote/wahrnehmungsberechtigte-digitale-verlegerische-angebote.html";
73 $site = fetch_url($url);
75 $doc = new DOMDocument();
76 @$doc->loadHTML($site);
78 $xpath = new DomXPath($doc);
79 $list = $xpath->query("//td/a");
80 foreach ($list as $node) {
82 if ($node->attributes->length)
83 foreach ($node->attributes as $attribute)
84 $attr[$attribute->name] = $attribute->value;
86 if (isset($attr["href"])) {
87 $urldata = parse_url($attr["href"]);
89 if (isset($urldata["host"]) && !isset($urldata["path"])) {
90 $cleanedurlpart = explode("%", $urldata["host"]);
92 $hostname = explode(".", $cleanedurlpart[0]);
93 $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1];
94 $sites[$site] = $site;
100 set_config('leistungsschutzrecht','sites',$sites);
104 function leistungsschutzrecht_is_member_site($url) {
105 $sites = get_config('leistungsschutzrecht','sites');
110 if (sizeof($sites) == 0)
113 $urldata = parse_url($url);
115 if (!isset($urldata["host"]))
118 $cleanedurlpart = explode("%", $urldata["host"]);
120 $hostname = explode(".", $cleanedurlpart[0]);
121 $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1];
123 return (isset($sites[$site]));
126 function leistungsschutzrecht_cron($a,$b) {
127 $last = get_config('leistungsschutzrecht','last_poll');
130 $next = $last + 86400;
132 logger('poll intervall not reached');
136 leistungsschutzrecht_fetchsites();
137 set_config('leistungsschutzrecht','last_poll', time());