]> git.mxchange.org Git - friendica-addons.git/blob - leistungsschutzrecht/leistungsschutzrecht.php
Merge pull request #1 from friendica/master
[friendica-addons.git] / leistungsschutzrecht / leistungsschutzrecht.php
1 <?php
2 /**
3  * Name: Leistungsschutzrecht
4  * Description: Only useful in germany: Remove data from snippets from members of the VG Media
5  * Version: 0.1
6  * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
7  */
8
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');
13 }
14
15
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');
20 }
21
22 function leistungsschutzrecht_getsiteinfo($a, &$siteinfo) {
23         if (!isset($siteinfo["url"]))
24                 return;
25
26         if (!leistungsschutzrecht_is_member_site($siteinfo["url"]))
27                 return;
28
29         $siteinfo["title"] = $siteinfo["url"];
30         unset($siteinfo["text"]);
31         unset($siteinfo["image"]);
32         unset($siteinfo["images"]);
33         unset($siteinfo["keywords"]);
34 }
35
36 function leistungsschutzrecht_fetchsites() {
37         require_once("include/network.php");
38
39         $sites = array();
40
41         $url = "http://www.vg-media.de/lizenzen/digitale-verlegerische-angebote/wahrnehmungsberechtigte-digitale-verlegerische-angebote.html";
42
43         $site = fetch_url($url);
44
45         $doc = new DOMDocument();
46         @$doc->loadHTML($site);
47
48         $xpath = new DomXPath($doc);
49         $list = $xpath->query("//td/a");
50         foreach ($list as $node) {
51                 $attr = array();
52                 if ($node->attributes->length)
53                         foreach ($node->attributes as $attribute)
54                                 $attr[$attribute->name] = $attribute->value;
55
56                 if (isset($attr["href"])) {
57                         $urldata = parse_url($attr["href"]);
58
59                         if (isset($urldata["host"]) AND !isset($urldata["path"])) {
60                                 $cleanedurlpart = explode("%", $urldata["host"]);
61
62                                 $hostname = explode(".", $cleanedurlpart[0]);
63                                 $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1];
64                                 $sites[$site] = $site;
65                         }
66                 }
67         }
68
69         if (sizeof($sites)) {
70                 set_config('leistungsschutzrecht','sites',$sites);
71         }
72 }
73
74 function leistungsschutzrecht_is_member_site($url) {
75         $sites = get_config('leistungsschutzrecht','sites');
76
77         if ($sites == "")
78                 return(false);
79
80         if (sizeof($sites) == 0)
81                 return(false);
82
83         $urldata = parse_url($url);
84
85         if (!isset($urldata["host"]))
86                 return(false);
87
88         $cleanedurlpart = explode("%", $urldata["host"]);
89
90         $hostname = explode(".", $cleanedurlpart[0]);
91         $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1];
92
93         return (isset($sites[$site]));
94 }
95
96 function leistungsschutzrecht_cron($a,$b) {
97         $last = get_config('leistungsschutzrecht','last_poll');
98
99         if($last) {
100                 $next = $last + 86400;
101                 if($next > time()) {
102                         logger('poll intervall not reached');
103                         return;
104                 }
105         }
106         leistungsschutzrecht_fetchsites();
107         set_config('leistungsschutzrecht','last_poll', time());
108 }
109 ?>