Merge pull request #1024 from hoergen/develop
[friendica-addons.git/.git] / leistungsschutzrecht / leistungsschutzrecht.php
index 91d3583..04bbd47 100644 (file)
@@ -6,32 +6,35 @@
  * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
  */
 
-use Friendica\Core\Config;
+use Friendica\Core\Hook;
+use Friendica\Core\Logger;
+use Friendica\DI;
 
 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');
+       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($a, &$siteinfo) {
-       if (!isset($siteinfo["url"]))
+       if (!isset($siteinfo["url"]) || empty($siteinfo['type'])) {
                return;
+       }
 
-       if (!leistungsschutzrecht_is_member_site($siteinfo["url"]))
+       // 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"]);
+       }
+
+       if (!leistungsschutzrecht_is_member_site($siteinfo["url"])) {
                return;
+       }
+
+       if (!empty($siteinfo["text"])) {
+               $siteinfo["text"] = leistungsschutzrecht_cuttext($siteinfo["text"]);
+       }
 
-       //$siteinfo["title"] = $siteinfo["url"];
-       $siteinfo["text"] = leistungsschutzrecht_cuttext($siteinfo["text"]);
-       unset($siteinfo["image"]);
-       unset($siteinfo["images"]);
        unset($siteinfo["keywords"]);
 }
 
@@ -65,18 +68,17 @@ function leistungsschutzrecht_cuttext($text) {
        return $text;
 }
 
-function leistungsschutzrecht_fetchsites() {
-       require_once("include/network.php");
-
+function leistungsschutzrecht_fetchsites()
+{
        // This list works - but question is how current it is
        $url = "http://leistungsschutzrecht-stoppen.d-64.org/blacklist.txt";
-       $sitelist = fetch_url($url);
+       $sitelist = DI::httpRequest()->fetch($url);
        $siteurls = explode(',', $sitelist);
 
        $whitelist = ['tagesschau.de', 'heute.de', 'wdr.de'];
 
        $sites = [];
-       foreach ($siteurls AS $site) {
+       foreach ($siteurls as $site) {
                if (!in_array($site, $whitelist)) {
                        $sites[$site] = $site;
                }
@@ -89,7 +91,7 @@ function leistungsschutzrecht_fetchsites() {
 
        $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);
@@ -117,12 +119,12 @@ function leistungsschutzrecht_fetchsites() {
 */
 
        if (sizeof($sites)) {
-               Config::set('leistungsschutzrecht','sites',$sites);
+               DI::config()->set('leistungsschutzrecht','sites',$sites);
        }
 }
 
 function leistungsschutzrecht_is_member_site($url) {
-       $sites = Config::get('leistungsschutzrecht','sites');
+       $sites = DI::config()->get('leistungsschutzrecht','sites');
 
        if ($sites == "")
                return(false);
@@ -138,22 +140,30 @@ function leistungsschutzrecht_is_member_site($url) {
        $cleanedurlpart = explode("%", $urldata["host"]);
 
        $hostname = explode(".", $cleanedurlpart[0]);
+       if (empty($hostname)) {
+               return false;
+       }
+
+       if (count($hostname) <= 2) {
+               return false;
+       }
+
        $site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1];
 
        return (isset($sites[$site]));
 }
 
 function leistungsschutzrecht_cron($a,$b) {
-       $last = Config::get('leistungsschutzrecht','last_poll');
+       $last = DI::config()->get('leistungsschutzrecht','last_poll');
 
        if($last) {
                $next = $last + 86400;
                if($next > time()) {
-                       logger('poll intervall not reached');
+                       Logger::log('poll intervall not reached');
                        return;
                }
        }
        leistungsschutzrecht_fetchsites();
-       Config::set('leistungsschutzrecht','last_poll', time());
+       DI::config()->set('leistungsschutzrecht','last_poll', time());
 }
 ?>