From a295a4097ab1a182f7c6e64846c141b7bb2c5223 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Apr 2021 09:03:14 +0000 Subject: [PATCH] advancedcontentfilter: Add language values to filter fields (#10052, #10136) --- .../advancedcontentfilter.php | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/advancedcontentfilter/advancedcontentfilter.php b/advancedcontentfilter/advancedcontentfilter.php index 145887cc..636e0fce 100644 --- a/advancedcontentfilter/advancedcontentfilter.php +++ b/advancedcontentfilter/advancedcontentfilter.php @@ -90,6 +90,26 @@ function advancedcontentfilter_dbstructure_definition(App $a, &$database) ]; } +function advancedcontentfilter_get_filter_fields(array $item) +{ + $vars = []; + + // Convert the language JSON text into a filterable format + if (!empty($item['language']) && ($languages = json_decode($item['language'], true))) { + foreach ($languages as $key => $value) { + $vars['language_' . strtolower($key)] = $value; + } + } + + foreach ($item as $key => $value) { + $vars[str_replace('-', '_', $key)] = $value; + } + + ksort($vars); + + return $vars; +} + function advancedcontentfilter_prepare_body_content_filter(App $a, &$hook_data) { static $expressionLanguage; @@ -102,10 +122,7 @@ function advancedcontentfilter_prepare_body_content_filter(App $a, &$hook_data) return; } - $vars = []; - foreach ($hook_data['item'] as $key => $value) { - $vars[str_replace('-', '_', $key)] = $value; - } + $vars = advancedcontentfilter_get_filter_fields($hook_data['item']); $rules = DI::cache()->get('rules_' . local_user()); if (!isset($rules)) { @@ -417,10 +434,7 @@ function advancedcontentfilter_get_variables_guid(ServerRequestInterface $reques $item['hashtags'] = $tags['hashtags']; $item['mentions'] = $tags['mentions']; - $return = []; - foreach ($item as $key => $value) { - $return[str_replace('-', '_', $key)] = $value; - } + $return = advancedcontentfilter_get_filter_fields($item); return json_encode(['variables' => str_replace('\\\'', '\'', var_export($return, true))]); }