From aae9da33dc4737a8b9bfa6a81452ddbd934fce60 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 30 Jun 2018 05:20:17 +0000 Subject: [PATCH] "langfilter" uses the new "language" field as well --- langfilter/langfilter.php | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/langfilter/langfilter.php b/langfilter/langfilter.php index 42ffb9bb..f22034e2 100644 --- a/langfilter/langfilter.php +++ b/langfilter/langfilter.php @@ -153,27 +153,40 @@ function langfilter_prepare_body_content_filter(App $a, &$hook_data) $read_languages_array = explode(',', $read_languages_string); // Extract the language of the post - $opts = $hook_data['item']['postopts']; - if (!$opts) { - // no options associated to post - return; - } + if (!empty($hook_data['item']['language'])) { + $languages = json_decode($hook_data['item']['language'], true); + if (!is_array($languages)) { + return; + } - if (!preg_match('/\blang=([^;]*);([^:]*)/', $opts, $matches)) { - // no lang options associated to post - return; - } + foreach ($languages as $iso2 => $confidence) { + break; + } - $lang = $matches[1]; - $confidence = $matches[2]; + $lang = Text_LanguageDetect_ISO639::code2ToName($iso2); + } else { + $opts = $hook_data['item']['postopts']; + if (!$opts) { + // no options associated to post + return; + } + + if (!preg_match('/\blang=([^;]*);([^:]*)/', $opts, $matches)) { + // no lang options associated to post + return; + } + + $lang = $matches[1]; + $confidence = $matches[2]; + + $iso2 = Text_LanguageDetect_ISO639::nameToCode2($lang); + } // Do not filter if language detection confidence is too low if ($minconfidence && $confidence < $minconfidence) { return; } - $iso2 = Text_LanguageDetect_ISO639::nameToCode2($lang); - if (!$iso2) { return; }