public static function fromConfig(array $cabinNamespaces = [], array $motifs = []) : self
{
$filterContainer = new PreferencesFilter();
foreach ($cabinNamespaces as $cabin) {
$activeCabin = $motifs[$cabin];
$filterContainer->addFilter('prefs.motif.' . $cabin, (new StringFilter())->addCallback(function ($selected) use($cabin, $activeCabin) : string {
foreach ($activeCabin as $cabinConfig) {
if ($selected === $cabinConfig['path']) {
return $selected;
}
}
return '';
}));
}
return $filterContainer;
}