Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,218 changes: 36 additions & 1,182 deletions phpstan-baseline.neon

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/lib/Form/Factory/FormFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ public function createContentTypeGroup(
}

/**
* @phpstan-return \Symfony\Component\Form\FormInterface<ContentTypeGroupUpdateData>
* @phpstan-return \Symfony\Component\Form\FormInterface<\Ibexa\AdminUi\Form\Data\ContentTypeGroup\ContentTypeGroupUpdateData|null>
*/
public function updateContentTypeGroup(
ContentTypeGroup $group,
Expand All @@ -216,7 +216,7 @@ public function updateContentTypeGroup(
}

/**
* @return \Symfony\Component\Form\FormInterface<\Ibexa\AdminUi\Form\Data\ContentTypeGroup\ContentTypeGroupDeleteData>
* @return \Symfony\Component\Form\FormInterface<\Ibexa\AdminUi\Form\Data\ContentTypeGroup\ContentTypeGroupDeleteData|null>
*/
public function deleteContentTypeGroup(
ContentTypeGroup $group,
Expand Down
3 changes: 2 additions & 1 deletion src/lib/Form/SubmitHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public function __construct(
* Handles form errors (NotificationHandler:warning).
* Handles business logic exceptions (NotificationHandler:error).
*
* @param \Symfony\Component\Form\FormInterface<mixed> $form
* @param callable $handler
*/
public function handle(FormInterface $form, callable $handler): ?Response
Expand Down Expand Up @@ -116,7 +117,7 @@ public function handleAjax(FormInterface $form, callable $handler): JsonResponse
}
} else {
$errors = [];
foreach ($form->getErrors(true, true) as $formError) {
foreach ($form->getErrors(true) as $formError) {
$errors[] = $formError->getMessage();
}

Expand Down
5 changes: 4 additions & 1 deletion src/lib/Form/Type/Bookmark/BookmarkRemoveType.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;

class BookmarkRemoveType extends AbstractType
/**
* @extends \Symfony\Component\Form\AbstractType<mixed>
*/
final class BookmarkRemoveType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,15 @@
use Ibexa\Contracts\Core\Repository\LanguageService;
use Ibexa\Contracts\Core\Repository\Values\Content\Language;

class AvailableTranslationLanguageChoiceLoader extends BaseChoiceLoader
final class AvailableTranslationLanguageChoiceLoader extends BaseChoiceLoader
{
protected LanguageService $languageService;

/** @var string[] */
protected array $languageCodes;

/**
* @param string[] $languageCodes
*/
public function __construct(LanguageService $languageService, array $languageCodes)
{
$this->languageService = $languageService;
$this->languageCodes = $languageCodes;
public function __construct(
private readonly LanguageService $languageService,
private readonly array $languageCodes
) {
}

/**
Expand All @@ -35,7 +30,8 @@ public function getChoiceList(): array
return array_filter(
iterator_to_array($this->languageService->loadLanguages()),
function (Language $language): bool {
return $language->enabled && !in_array($language->languageCode, $this->languageCodes, true);
return $language->isEnabled()
&& !in_array($language->getLanguageCode(), $this->languageCodes, true);
}
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,13 @@

class BaseTranslationLanguageChoiceLoader extends BaseChoiceLoader
{
protected LanguageService $languageService;

/** @var string[] */
protected array $languageCodes;

/**
* @param string[] $languageCodes
*/
public function __construct(LanguageService $languageService, array $languageCodes)
{
$this->languageService = $languageService;
$this->languageCodes = $languageCodes;
public function __construct(
protected LanguageService $languageService,
protected array $languageCodes
) {
}

/**
Expand All @@ -35,7 +30,8 @@ public function getChoiceList(): array
return array_filter(
iterator_to_array($this->languageService->loadLanguages()),
function (Language $language): bool {
return $language->enabled && in_array($language->languageCode, $this->languageCodes, true);
return $language->isEnabled()
&& in_array($language->getLanguageCode(), $this->languageCodes, true);
}
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,10 @@

class ConfiguredLanguagesChoiceLoader implements ChoiceLoaderInterface
{
private LanguageService $languageService;

private ConfigResolverInterface $configResolver;

public function __construct(LanguageService $languageService, ConfigResolverInterface $configResolver)
{
$this->languageService = $languageService;
$this->configResolver = $configResolver;
public function __construct(
private readonly LanguageService $languageService,
private readonly ConfigResolverInterface $configResolver
) {
}

/**
Expand Down Expand Up @@ -80,7 +76,7 @@ private function getPriorityOrderedLanguages(): array
$languagesAssoc = [];

foreach ($languages as $language) {
$languagesAssoc[$language->languageCode] = $language;
$languagesAssoc[$language->getLanguageCode()] = $language;
}

$orderedLanguages = [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,17 @@
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;

class ContentCreateContentTypeChoiceLoader implements ChoiceLoaderInterface
final class ContentCreateContentTypeChoiceLoader implements ChoiceLoaderInterface
{
private ContentTypeChoiceLoader $contentTypeChoiceLoader;

private EventDispatcherInterface $eventDispatcher;

/** @var array<int> */
private array $restrictedContentTypesIds;

private ?Location $targetLocation = null;

public function __construct(
ContentTypeChoiceLoader $contentTypeChoiceLoader,
EventDispatcherInterface $eventDispatcher
private readonly ContentTypeChoiceLoader $contentTypeChoiceLoader,
private readonly EventDispatcherInterface $eventDispatcher
) {
$this->contentTypeChoiceLoader = $contentTypeChoiceLoader;
$this->eventDispatcher = $eventDispatcher;
}

/**
Expand Down Expand Up @@ -74,7 +68,7 @@ public function loadChoiceList(?callable $value = null): ChoiceListInterface

foreach ($contentTypesGroups as $group => $contentTypes) {
$contentTypesGroups[$group] = array_filter($contentTypes, function (ContentType $contentType): bool {
return \in_array($contentType->id, $this->restrictedContentTypesIds, true);
return in_array($contentType->id, $this->restrictedContentTypesIds, true);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,19 @@
namespace Ibexa\AdminUi\Form\Type\ChoiceList\Loader;

use Ibexa\Contracts\Core\Repository\Values\Content\Language;
use function in_array;
use Symfony\Component\Form\ChoiceList\ArrayChoiceList;
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;

class ContentCreateLanguageChoiceLoader implements ChoiceLoaderInterface
final readonly class ContentCreateLanguageChoiceLoader implements ChoiceLoaderInterface
{
private LanguageChoiceLoader $languageChoiceLoader;

/** @var string[] */
private array $restrictedLanguagesCodes;

/**
* @param array<string> $restrictedLanguagesCodes
* @param string[] $restrictedLanguagesCodes
*/
public function __construct(
LanguageChoiceLoader $languageChoiceLoader,
array $restrictedLanguagesCodes
private LanguageChoiceLoader $languageChoiceLoader,
private array $restrictedLanguagesCodes
) {
$this->languageChoiceLoader = $languageChoiceLoader;
$this->restrictedLanguagesCodes = $restrictedLanguagesCodes;
}

public function loadChoiceList(?callable $value = null): ChoiceListInterface
Expand All @@ -41,7 +33,7 @@ public function loadChoiceList(?callable $value = null): ChoiceListInterface
}

$languages = array_filter($languages, function (Language $language): bool {
return in_array($language->languageCode, $this->restrictedLanguagesCodes, true);
return in_array($language->getLanguageCode(), $this->restrictedLanguagesCodes, true);
});

return new ArrayChoiceList($languages, $value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,54 +18,31 @@
use Ibexa\Contracts\Core\Repository\Values\Content\Location;
use Ibexa\Contracts\Core\Repository\Values\User\Limitation;

class ContentEditTranslationChoiceLoader extends BaseChoiceLoader
final class ContentEditTranslationChoiceLoader extends BaseChoiceLoader
{
private LanguageService $languageService;

private PermissionResolver $permissionResolver;

/** @var string[] */
private array $languageCodes;

private ?ContentInfo $contentInfo;

private LookupLimitationsTransformer $lookupLimitationsTransformer;

private LocationService $locationService;

private ?Location $location;

/**
* @param \Ibexa\Contracts\Core\Repository\LanguageService $languageService
* @param \Ibexa\Contracts\Core\Repository\PermissionResolver $permissionResolver
* @param \Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo $contentInfo
* @param \Ibexa\AdminUi\Permission\LookupLimitationsTransformer $lookupLimitationsTransformer
* @param string[] $languageCodes
*/
public function __construct(
LanguageService $languageService,
PermissionResolver $permissionResolver,
?ContentInfo $contentInfo,
LookupLimitationsTransformer $lookupLimitationsTransformer,
array $languageCodes,
LocationService $locationService,
?Location $location
private readonly LanguageService $languageService,
private readonly PermissionResolver $permissionResolver,
private readonly ?ContentInfo $contentInfo,
private readonly LookupLimitationsTransformer $lookupLimitationsTransformer,
private readonly array $languageCodes,
private readonly LocationService $locationService,
private readonly ?Location $location
) {
$this->languageService = $languageService;
$this->permissionResolver = $permissionResolver;
$this->contentInfo = $contentInfo;
$this->languageCodes = $languageCodes;
$this->lookupLimitationsTransformer = $lookupLimitationsTransformer;
$this->locationService = $locationService;
$this->location = $location;
}

/**
* {@inheritdoc}
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException
*/
public function getChoiceList(): array
{
$languages = $this->languageService->loadLanguages();
$languages = iterator_to_array($this->languageService->loadLanguages());
$limitationLanguageCodes = [];

if (!empty($this->languageCodes)) {
Expand All @@ -87,21 +64,23 @@ function (Language $language): bool {
(new Target\Builder\VersionBuilder())->translateToAnyLanguageOf($languagesCodes)->build(),
$this->locationService->loadLocation(
$this->location !== null
? $this->location->id
: $this->contentInfo->mainLocationId
? $this->location->getId()
: $this->contentInfo->getMainLocationId()
),
],
[Limitation::LANGUAGE]
);

$limitationLanguageCodes = $this->lookupLimitationsTransformer->getFlattenedLimitationsValues($lookupLimitations);
$limitationLanguageCodes = $this->lookupLimitationsTransformer->getFlattenedLimitationsValues(
$lookupLimitations
);
}

if (!empty($limitationLanguageCodes)) {
$languages = array_filter(
$languages,
static function (Language $language) use ($limitationLanguageCodes): bool {
return \in_array($language->languageCode, $limitationLanguageCodes, true);
return in_array($language->getLanguageCode(), $limitationLanguageCodes, true);
}
);
}
Expand Down
10 changes: 2 additions & 8 deletions src/lib/Form/Type/ChoiceList/Loader/ContentTypeChoiceLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,10 @@

class ContentTypeChoiceLoader implements ChoiceLoaderInterface
{
protected ContentTypeService $contentTypeService;

private UserLanguagePreferenceProviderInterface $userLanguagePreferenceProvider;

public function __construct(
ContentTypeService $contentTypeService,
UserLanguagePreferenceProviderInterface $userLanguagePreferenceProvider
protected ContentTypeService $contentTypeService,
private UserLanguagePreferenceProviderInterface $userLanguagePreferenceProvider
) {
$this->contentTypeService = $contentTypeService;
$this->userLanguagePreferenceProvider = $userLanguagePreferenceProvider;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,10 @@
use JMS\TranslationBundle\Annotation\Desc;
use Symfony\Contracts\Translation\TranslatorInterface;

class DatePeriodChoiceLoader extends BaseChoiceLoader
final class DatePeriodChoiceLoader extends BaseChoiceLoader
{
private TranslatorInterface $translator;

public function __construct(TranslatorInterface $translator)
public function __construct(private TranslatorInterface $translator)
{
$this->translator = $translator;
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/lib/Form/Type/ChoiceList/Loader/LanguageChoiceLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@

namespace Ibexa\AdminUi\Form\Type\ChoiceList\Loader;

class LanguageChoiceLoader extends ConfiguredLanguagesChoiceLoader
final class LanguageChoiceLoader extends ConfiguredLanguagesChoiceLoader
{
public function getChoiceList(): array
{
$languages = parent::getChoiceList();
$enabledLanguages = [];

foreach ($languages as $language) {
if ($language->enabled) {
if ($language->isEnabled()) {
$enabledLanguages[] = $language;
}
}
Expand Down
Loading
Loading