X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=langfilter%2Flangfilter.php;h=fe4cb5ea6d60233ff31104b2d4130be23ceb971f;hb=4487b2a9232429b61827df89a879eb3e9c444a28;hp=0cf3e552cb7dfea4be7b1c1c12723159d83ec1fc;hpb=dc81a5cf5f6f081d92dd7e56df7fd4c4033b86e4;p=friendica-addons.git diff --git a/langfilter/langfilter.php b/langfilter/langfilter.php index 0cf3e552..fe4cb5ea 100644 --- a/langfilter/langfilter.php +++ b/langfilter/langfilter.php @@ -31,7 +31,7 @@ function langfilter_install() * 3rd parse a SMARTY3 template, replacing some translateable strings for the form */ -function langfilter_addon_settings(App $a, &$s) +function langfilter_addon_settings(App $a, array &$data) { if (!local_user()) { return; @@ -40,23 +40,25 @@ function langfilter_addon_settings(App $a, &$s) $enabled = DI::pConfig()->get(local_user(), 'langfilter', 'enable', !DI::pConfig()->get(local_user(), 'langfilter', 'disable')); - $enable_checked = $enabled ? ' checked="checked"' : ''; - $languages = DI::pConfig()->get(local_user(), 'langfilter', 'languages'); - $minconfidence = DI::pConfig()->get(local_user(), 'langfilter', 'minconfidence', 0) * 100; - $minlength = DI::pConfig()->get(local_user(), 'langfilter', 'minlength' , 32); + $languages = DI::pConfig()->get(local_user(), 'langfilter', 'languages'); + $minconfidence = DI::pConfig()->get(local_user(), 'langfilter', 'minconfidence', 0) * 100; + $minlength = DI::pConfig()->get(local_user(), 'langfilter', 'minlength', 32); - $t = Renderer::getMarkupTemplate("settings.tpl", "addon/langfilter/"); - $s .= Renderer::replaceMacros($t, [ - '$title' => DI::l10n()->t("Language Filter"), + $t = Renderer::getMarkupTemplate('settings.tpl', 'addon/langfilter/'); + $html = Renderer::replaceMacros($t, [ '$intro' => DI::l10n()->t('This addon tries to identify the language posts are written in. If it does not match any language specified below, posts will be hidden by collapsing them.'), - '$enabled' => ['langfilter_enable', DI::l10n()->t('Use the language filter'), $enable_checked, ''], + '$enabled' => ['langfilter_enable', DI::l10n()->t('Use the language filter'), $enabled], '$languages' => ['langfilter_languages', DI::l10n()->t('Able to read'), $languages, DI::l10n()->t('List of abbreviations (ISO 639-1 codes) for languages you speak, comma separated. For example "de,it".')], '$minconfidence' => ['langfilter_minconfidence', DI::l10n()->t('Minimum confidence in language detection'), $minconfidence, DI::l10n()->t('Minimum confidence in language detection being correct, from 0 to 100. Posts will not be filtered when the confidence of language detection is below this percent value.')], '$minlength' => ['langfilter_minlength', DI::l10n()->t('Minimum length of message body'), $minlength, DI::l10n()->t('Minimum number of characters in message body for filter to be used. Posts shorter than this will not be filtered. Note: Language detection is unreliable for short content (<200 characters).')], - '$submit' => DI::l10n()->t('Save Settings'), ]); - return; + $data = [ + 'addon' => 'langfilter', + 'title' => DI::l10n()->t('Language Filter'), + 'html' => $html, + 'submit' => ['langfilter-settings-submit' => DI::l10n()->t('Save Settings')], + ]; } /* Save the settings @@ -65,7 +67,7 @@ function langfilter_addon_settings(App $a, &$s) * 3rd save the settings to the DB for later usage */ -function langfilter_addon_settings_post(App $a, &$b) +function langfilter_addon_settings_post(App $a, array &$b) { if (!local_user()) { return; @@ -105,7 +107,7 @@ function langfilter_prepare_body_content_filter(App $a, &$hook_data) // Never filter own messages // TODO: find a better way to extract this - $logged_user_profile = DI::baseUrl()->get() . '/profile/' . $a->user['nickname']; + $logged_user_profile = DI::baseUrl()->get() . '/profile/' . $a->getLoggedInUserNickname(); if ($logged_user_profile == $hook_data['item']['author-link']) { return; } @@ -117,11 +119,13 @@ function langfilter_prepare_body_content_filter(App $a, &$hook_data) return; } - if (!empty($hook_data['item']['rendered-html'])) { - $naked_body = strip_tags($hook_data['item']['rendered-html']); - } else { - $naked_body = BBCode::toPlaintext($hook_data['item']['body'], false); - } + $naked_body = strip_tags( + $hook_data['item']['rendered-html'] + ??''?: // Equivalent of !empty() + BBCode::convert($hook_data['item']['body'], false, BBCode::ACTIVITYPUB, true) + ); + + $naked_body = preg_replace('#\s+#', ' ', trim($naked_body)); // Don't filter if body lenght is below minimum $minlen = DI::pConfig()->get(local_user(), 'langfilter', 'minlength', 32);