From: Michael <heluecht@pirati.ca>
Date: Sun, 11 Apr 2021 09:03:14 +0000 (+0000)
Subject: advancedcontentfilter: Add language values to filter fields (#10052, #10136)
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=a295a4097ab1a182f7c6e64846c141b7bb2c5223;p=friendica-addons.git

advancedcontentfilter: Add language values to filter fields (#10052, #10136)
---

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))]);
 }