Issue 15048: Support addon filters via API

This commit is contained in:
Michael 2025-07-29 21:23:57 +00:00
parent ea41e2f1b6
commit b39ab36cee
3 changed files with 16 additions and 14 deletions

View file

@ -120,21 +120,22 @@ function advancedcontentfilter_prepare_body_content_filter(&$hook_data)
$expressionLanguage = new ExpressionLanguage\ExpressionLanguage(); $expressionLanguage = new ExpressionLanguage\ExpressionLanguage();
} }
if (!DI::userSession()->getLocalUserId()) { $uid = $hook_data['uid'] ?: DI::userSession()->getLocalUserId();
if (!$uid) {
return; return;
} }
$vars = advancedcontentfilter_get_filter_fields($hook_data['item']); $vars = advancedcontentfilter_get_filter_fields($hook_data['item']);
$rules = DI::cache()->get('rules_' . DI::userSession()->getLocalUserId()); $rules = DI::cache()->get('rules_' . $uid);
if (!isset($rules)) { if (!isset($rules)) {
$rules = DBA::toArray(DBA::select( $rules = DBA::toArray(DBA::select(
'advancedcontentfilter_rules', 'advancedcontentfilter_rules',
['name', 'expression', 'serialized'], ['name', 'expression', 'serialized'],
['uid' => DI::userSession()->getLocalUserId(), 'active' => true] ['uid' => $uid, 'active' => true]
)); ));
DI::cache()->set('rules_' . DI::userSession()->getLocalUserId(), $rules); DI::cache()->set('rules_' . $uid, $rules);
} }
if ($rules) { if ($rules) {

View file

@ -99,8 +99,8 @@ function langfilter_addon_settings_post(array &$b)
function langfilter_prepare_body_content_filter(&$hook_data) function langfilter_prepare_body_content_filter(&$hook_data)
{ {
$logged_user = DI::userSession()->getLocalUserId(); $uid = $hook_data['uid'] ?: DI::userSession()->getLocalUserId();
if (!$logged_user) { if (!$uid) {
return; return;
} }
@ -112,8 +112,8 @@ function langfilter_prepare_body_content_filter(&$hook_data)
} }
// Don't filter if language filter is disabled // Don't filter if language filter is disabled
if (!DI::pConfig()->get($logged_user, 'langfilter', 'enable', if (!DI::pConfig()->get($uid, 'langfilter', 'enable',
!DI::pConfig()->get($logged_user, 'langfilter', 'disable')) !DI::pConfig()->get($uid, 'langfilter', 'disable'))
) { ) {
return; return;
} }
@ -127,7 +127,7 @@ function langfilter_prepare_body_content_filter(&$hook_data)
$naked_body = preg_replace('#\s+#', ' ', trim($naked_body)); $naked_body = preg_replace('#\s+#', ' ', trim($naked_body));
// Don't filter if body lenght is below minimum // Don't filter if body lenght is below minimum
$minlen = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'langfilter', 'minlength', 32); $minlen = DI::pConfig()->get($uid, 'langfilter', 'minlength', 32);
if (!$minlen) { if (!$minlen) {
$minlen = 32; $minlen = 32;
} }
@ -136,8 +136,8 @@ function langfilter_prepare_body_content_filter(&$hook_data)
return; return;
} }
$read_languages_string = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'langfilter', 'languages'); $read_languages_string = DI::pConfig()->get($uid, 'langfilter', 'languages');
$minconfidence = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'langfilter', 'minconfidence'); $minconfidence = DI::pConfig()->get($uid, 'langfilter', 'minconfidence');
// Don't filter if no spoken languages are configured // Don't filter if no spoken languages are configured
if (!$read_languages_string) { if (!$read_languages_string) {

View file

@ -104,12 +104,13 @@ function nsfw_addon_settings_post(array &$b)
function nsfw_prepare_body_content_filter(&$hook_data) function nsfw_prepare_body_content_filter(&$hook_data)
{ {
$words = null; $words = null;
if (DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'nsfw', 'disable')) { $uid = $hook_data['uid'] ?: DI::userSession()->getLocalUserId();
if (DI::pConfig()->get($uid, 'nsfw', 'disable')) {
return; return;
} }
if (DI::userSession()->getLocalUserId()) { if ($uid) {
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'nsfw', 'words'); $words = DI::pConfig()->get($uid, 'nsfw', 'words');
} }
if ($words) { if ($words) {