Skip to content

Commit

Permalink
Merge 3.x into 4.x
Browse files Browse the repository at this point in the history
  • Loading branch information
SonataCI committed Mar 23, 2022
2 parents c47e912 + 36d796b commit abf8cc2
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

## [3.0.1](https://github.com/sonata-project/SonataTranslationBundle/compare/3.0.0...3.0.1) - 2022-03-22
### Fixed
- [[#630](https://github.com/sonata-project/SonataTranslationBundle/pull/630)] Support of new admin declaration with `model_class` as attribute ([@fransweerts](https://github.com/fransweerts))

## [3.0.0](https://github.com/sonata-project/SonataTranslationBundle/compare/3.0.0-rc.1...3.0.0) - 2022-01-27
No changes.

Expand Down
37 changes: 23 additions & 14 deletions src/DependencyInjection/Compiler/AdminExtensionCompilerPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,32 @@ public function process(ContainerBuilder $container): void
\assert(\is_array($translationTargets));
$adminExtensionReferences = $this->getAdminExtensionReferenceByTypes(array_keys($translationTargets));

foreach ($container->findTaggedServiceIds('sonata.admin') as $id => $attributes) {
foreach ($container->findTaggedServiceIds('sonata.admin') as $id => $tags) {
$admin = $container->getDefinition($id);
$modelClass = $container->getParameterBag()->resolveValue($admin->getArgument(1));
if (!$modelClass || !class_exists($modelClass)) {
continue;
}
$modelClassReflection = new \ReflectionClass($modelClass);

foreach ($adminExtensionReferences as $type => $reference) {
foreach ($translationTargets[$type]['implements'] as $interface) {
if ($modelClassReflection->implementsInterface($interface)) {
$admin->addMethodCall('addExtension', [$reference]);
}
// NEXT_MAJOR: Remove this line.
$defaultModelClass = $admin->getArguments()[1] ?? null;
foreach ($tags as $attributes) {
// NEXT_MAJOR: Remove the fallback to $defaultModelClass and use null instead.
$modelClassName = $attributes['model_class'] ?? $defaultModelClass;

$modelClass = $container->getParameterBag()->resolveValue($modelClassName);

if (!$modelClass || !class_exists($modelClass)) {
continue;
}
foreach ($translationTargets[$type]['instanceof'] as $class) {
if ($modelClassReflection->getName() === $class || $modelClassReflection->isSubclassOf($class)) {
$admin->addMethodCall('addExtension', [$reference]);
$modelClassReflection = new \ReflectionClass($modelClass);

foreach ($adminExtensionReferences as $type => $reference) {
foreach ($translationTargets[$type]['implements'] as $interface) {
if ($modelClassReflection->implementsInterface($interface)) {
$admin->addMethodCall('addExtension', [$reference]);
}
}
foreach ($translationTargets[$type]['instanceof'] as $class) {
if ($modelClassReflection->getName() === $class || $modelClassReflection->isSubclassOf($class)) {
$admin->addMethodCall('addExtension', [$reference]);
}
}
}
}
Expand Down

0 comments on commit abf8cc2

Please sign in to comment.