/** * @param array $action * @param EntityConfigModel $entity * @param ConfigProvider $provider * * @return bool */ protected function isLayoutActionApplicable(array $action, EntityConfigModel $entity, ConfigProvider $provider) { if (!isset($action['filter'])) { return true; } $result = true; foreach ($action['filter'] as $key => $value) { if ($key === 'mode') { if ($entity->getMode() !== $value) { $result = false; break; } } else { $config = $provider->getConfig($entity->getClassName()); if (is_array($value)) { if (!$config->in($key, $value)) { $result = false; break; } } elseif ($config->get($key) != $value) { $result = false; break; } } } return $result; }