]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/Relay.php
Merge pull request #13194 from annando/relay-language
[friendica.git] / src / Protocol / Relay.php
index 028a7885bb98201a64f9754288c082aa9c3e0279..c5131fb3fd75eb82b915dcb9c86e10219493e0f3 100644 (file)
@@ -135,6 +135,28 @@ class Relay
                        }
                }
 
+               if (!self::isWantedLanguage($body)) {
+                       Logger::info('Unwanted or Undetected language found - rejected', ['network' => $network, 'url' => $url, 'causer' => $causer]);
+                       return false;
+               }
+
+               if ($scope == self::SCOPE_ALL) {
+                       Logger::info('Server accept all posts - accepted', ['network' => $network, 'url' => $url, 'causer' => $causer]);
+                       return true;
+               }
+
+               Logger::info('No matching hashtags found - rejected', ['network' => $network, 'url' => $url, 'causer' => $causer]);
+               return false;
+       }
+
+       /**
+        * Detect the language of a post and decide if the post should be accepted
+        *
+        * @param string $body
+        * @return boolean
+        */
+       public static function isWantedLanguage(string $body)
+       {
                $languages = [];
                foreach (Item::getLanguageArray($body, 10) as $language => $reliability) {
                        if ($reliability > 0) {
@@ -142,25 +164,19 @@ class Relay
                        }
                }
 
-               Logger::debug('Got languages', ['languages' => $languages, 'body' => $body, 'causer' => $causer]);
+               Logger::debug('Got languages', ['languages' => $languages, 'body' => $body]);
 
                if (!empty($languages)) {
-                       if (in_array($languages[0], $config->get('system', 'relay_deny_languages'))) {
-                               Logger::info('Unwanted language found - rejected', ['language' => $languages[0], 'network' => $network, 'url' => $url, 'causer' => $causer]);
+                       if (in_array($languages[0], DI::config()->get('system', 'relay_deny_languages'))) {
+                               Logger::info('Unwanted language found', ['language' => $languages[0]]);
                                return false;
                        }
-               } elseif ($config->get('system', 'relay_deny_undetected_language')) {
-                       Logger::info('Undetected language found - rejected', ['body' => $body, 'network' => $network, 'url' => $url, 'causer' => $causer]);
+               } elseif (DI::config()->get('system', 'relay_deny_undetected_language')) {
+                       Logger::info('Undetected language found', ['body' => $body]);
                        return false;
                }
 
-               if ($scope == self::SCOPE_ALL) {
-                       Logger::info('Server accept all posts - accepted', ['network' => $network, 'url' => $url, 'causer' => $causer]);
-                       return true;
-               }
-
-               Logger::info('No matching hashtags found - rejected', ['network' => $network, 'url' => $url, 'causer' => $causer]);
-               return false;
+               return true;
        }
 
        /**
@@ -176,7 +192,7 @@ class Relay
                if (in_array($gserver['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN])) {
                        $system = APContact::getByURL($gserver['url'] . '/friendica');
                        if (!empty($system['sharedinbox'])) {
-                               Logger::info('Sucessfully probed for relay contact', ['server' => $gserver['url']]);
+                               Logger::info('Successfully probed for relay contact', ['server' => $gserver['url']]);
                                $id = Contact::updateFromProbeByURL($system['url']);
                                Logger::info('Updated relay contact', ['server' => $gserver['url'], 'id' => $id]);
                                return;
@@ -302,7 +318,7 @@ class Relay
                        DBA::close($tagserver);
                }
 
-               // All adresses with the given id
+               // All addresses with the given id
                if (!empty($tagserverlist)) {
                        $servers = DBA::select('gserver', ['id', 'url', 'network'], ['relay-subscribe' => true, 'relay-scope' => 'tags', 'id' => $tagserverlist]);
                        while ($server = DBA::fetch($servers)) {