]> git.mxchange.org Git - friendica-addons.git/commitdiff
Add hashtag-only search
authorHypolite Petovan <mrpetovan@gmail.com>
Sun, 25 Mar 2018 04:20:16 +0000 (00:20 -0400)
committerHypolite Petovan <mrpetovan@gmail.com>
Sun, 25 Mar 2018 04:20:16 +0000 (00:20 -0400)
nsfw/nsfw.php

index 646665e9709675c924563b67e941eeb3316df6c4..081071510b483c130f5b650798c12385fcf1f3ee 100644 (file)
@@ -140,24 +140,21 @@ function nsfw_prepare_body(Friendica\App $a, &$b)
                        if (!strlen($word)) {
                                continue;
                        }
-                       if (strpos($word,'/') === 0) {
-                               if (preg_match($word, $body)) {
-                                       $found = true;
+
+                       switch ($word[0]) {
+                               case '/'; // Regular expression
+                                       $found = preg_match($word, $body);
+                                       break;
+                               case '#': // Hashtag-only search
+                                       $found = nsfw_find_word_in_item_tags($b['item']['hashtags'], substr($word, 1));
                                        break;
-                               }
-                       } else {
-                               if (stristr($body, $word)) {
-                                       $found = true;
+                               default:
+                                       $found = stripos($body, $word) !== false || nsfw_find_word_in_item_tags($b['item']['tags'], $word);
                                        break;
-                               }
-                               if (is_array($b['item']['tags']) && count($b['item']['tags'])) {
-                                       foreach ($b['item']['tags'] as $t) {
-                                               if (stristr($t, '>' . $word . '<')) {
-                                                       $found = true;
-                                                       break;
-                                               }
-                                       }
-                               }
+                       }
+
+                       if ($found) {
+                               break;
                        }
                }
        }
@@ -169,3 +166,16 @@ function nsfw_prepare_body(Friendica\App $a, &$b)
                        '</div><div id="nsfw-' . $rnd . '" style="display: none; " >' . $b['html'] . '</div>';
        }
 }
+
+function nsfw_find_word_in_item_tags($item_tags, $word)
+{
+       if (is_array($item_tags)) {
+               foreach ($item_tags as $tag) {
+                       if (stripos($tag, '>' . $word . '<') !== false) {
+                               return true;
+                       }
+               }
+       }
+
+       return false;
+}