use Friendica\Core\Hook;
use Friendica\DI;
+use Friendica\Event\ArrayFilterEvent;
class Feature
{
*/
public static function isEnabled(int $uid, $feature): bool
{
- if (!DI::config()->get('feature_lock', $feature, false)) {
- $enabled = DI::config()->get('feature', $feature) ?? self::getDefault($feature);
- $enabled = DI::pConfig()->get($uid, 'feature', $feature) ?? $enabled;
+ $config = DI::config();
+ $pConfig = DI::pConfig();
+ $eventDispatcher = DI::eventDispatcher();
+
+ if (!$config->get('feature_lock', $feature, false)) {
+ $enabled = $config->get('feature', $feature) ?? self::getDefault($feature);
+ $enabled = $pConfig->get($uid, 'feature', $feature) ?? $enabled;
} else {
$enabled = true;
}
$arr = ['uid' => $uid, 'feature' => $feature, 'enabled' => $enabled];
- Hook::callAll('isEnabled', $arr);
+
+ $arr = $eventDispatcher->dispatch(
+ new ArrayFilterEvent(ArrayFilterEvent::FEATURE_ENABLED, $arr)
+ )->getArray();
+
return (bool)$arr['enabled'];
}
public const NAV_INFO = 'friendica.data.nav_info';
+ public const FEATURE_ENABLED = 'friendica.data.feature_enabled';
+
private array $array;
public function __construct(string $name, array $array)
ConfigLoadedEvent::CONFIG_LOADED => 'load_config',
ArrayFilterEvent::APP_MENU => 'app_menu',
ArrayFilterEvent::NAV_INFO => 'nav_info',
+ ArrayFilterEvent::FEATURE_ENABLED => 'isEnabled',
HtmlFilterEvent::HEAD => 'head',
HtmlFilterEvent::FOOTER => 'footer',
HtmlFilterEvent::PAGE_HEADER => 'page_header',
ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent',
ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent',
ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent',
+ ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent',
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
}
/**
- * @param string|array $data
+ * @param string|array|object $data
*
* @return string|array|object
*/
ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent',
ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent',
ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent',
+ ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent',
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
return [
['test', 'test'],
[ArrayFilterEvent::APP_MENU, 'app_menu'],
+ [ArrayFilterEvent::NAV_INFO, 'nav_info'],
+ [ArrayFilterEvent::FEATURE_ENABLED, 'isEnabled'],
];
}