]> git.mxchange.org Git - friendica-addons.git/commitdiff
[nsfw] Suppress warnings about failed regexp compilation
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 10 Dec 2022 19:43:30 +0000 (14:43 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 10 Dec 2022 19:43:30 +0000 (14:43 -0500)
- Add failed regexp compilation system messages on addon settings submit
- Address https://github.com/friendica/friendica/issues/11992#issuecomment-1336418781

nsfw/lang/C/messages.po
nsfw/nsfw.php

index 150b77d3be8a863e82c827ec8bc2c2ff64717b20..241143e87f659d1ec7fdd5790066ba1f817c6111 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-11-18 11:57-0500\n"
+"POT-Creation-Date: 2022-12-10 14:42-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -43,12 +43,17 @@ msgstr ""
 msgid "Content Filter (NSFW and more)"
 msgstr ""
 
-#: nsfw.php:140
+#: nsfw.php:96
+#, php-format
+msgid "Regular expression \"%s\" fails to compile"
+msgstr ""
+
+#: nsfw.php:154
 #, php-format
 msgid "Filtered tag: %s"
 msgstr ""
 
-#: nsfw.php:142
+#: nsfw.php:156
 #, php-format
 msgid "Filtered word: %s"
 msgstr ""
index 31d17f74a8fbf59c0e7a2881dc50683ce3bdc431..340cae27876d18c58666150eacbf9fc3f8b05dbc 100644 (file)
@@ -81,9 +81,23 @@ function nsfw_addon_settings_post(App $a, array &$b)
        }
 
        if (!empty($_POST['nsfw-submit'])) {
-               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'nsfw', 'words', trim($_POST['nsfw-words']));
-               $enable = (!empty($_POST['nsfw-enable']) ? intval($_POST['nsfw-enable']) : 0);
+               $enable = !empty($_POST['nsfw-enable']) ? intval($_POST['nsfw-enable']) : 0;
                $disable = 1 - $enable;
+
+               $words = trim($_POST['nsfw-words']);
+               $word_list = explode(',', $words);
+               foreach ($word_list as $word) {
+                       $word = trim($word);
+                       if (!$words || $word[0] != '/') {
+                               continue;
+                       }
+
+                       if (@preg_match($word, '') === false) {
+                               DI::sysmsg()->addNotice(DI::l10n()->t('Regular expression "%s" fails to compile', $word));
+                       };
+               }
+
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'nsfw', 'words', $words);
                DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'nsfw', 'disable', $disable);
        }
 }
@@ -118,7 +132,7 @@ function nsfw_prepare_body_content_filter(App $a, &$hook_data)
                        $tag_search = false;
                        switch ($word[0]) {
                                case '/'; // Regular expression
-                                       $found = preg_match($word, $body);
+                                       $found = @preg_match($word, $body);
                                        break;
                                case '#': // Hashtag-only search
                                        $tag_search = true;