Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
302 changes: 7 additions & 295 deletions phpstan-baseline.neon

Large diffs are not rendered by default.

93 changes: 47 additions & 46 deletions src/bundle/Core/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,45 +10,37 @@
use Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface;
use Ibexa\Bundle\Core\DependencyInjection\Configuration\RepositoryConfigParserInterface;
use Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\Configuration as SiteAccessConfiguration;
use Ibexa\Bundle\Core\DependencyInjection\Configuration\Suggestion\Collector\SuggestionCollectorInterface;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;

/**
* @phpstan-import-type TRootNode from SiteAccessConfiguration
*/
class Configuration extends SiteAccessConfiguration
{
public const CUSTOM_TAG_ATTRIBUTE_TYPES = ['number', 'string', 'boolean', 'choice'];

/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface */
private $mainSiteAccessConfigParser;

/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\RepositoryConfigParserInterface */
private $mainRepositoryConfigParser;

/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\Suggestion\Collector\SuggestionCollectorInterface */
private $suggestionCollector;
public const array CUSTOM_TAG_ATTRIBUTE_TYPES = ['number', 'string', 'boolean', 'choice'];

/** @var \Ibexa\Bundle\Core\SiteAccess\SiteAccessConfigurationFilter[] */
private $siteAccessConfigurationFilters;
private array $siteAccessConfigurationFilters;

public function __construct(
ParserInterface $mainConfigParser,
RepositoryConfigParserInterface $mainRepositoryConfigParser,
SuggestionCollectorInterface $suggestionCollector
private readonly ParserInterface $mainSiteAccessConfigParser,
private readonly RepositoryConfigParserInterface $mainRepositoryConfigParser
) {
$this->mainSiteAccessConfigParser = $mainConfigParser;
$this->mainRepositoryConfigParser = $mainRepositoryConfigParser;
$this->suggestionCollector = $suggestionCollector;
}

public function setSiteAccessConfigurationFilters(array $filters)
/**
* @param \Ibexa\Bundle\Core\SiteAccess\SiteAccessConfigurationFilter[] $filters
*/
public function setSiteAccessConfigurationFilters(array $filters): void
{
$this->siteAccessConfigurationFilters = $filters;
}

/**
* Generates the configuration tree builder.
*
* @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder
* @phpstan-return \Symfony\Component\Config\Definition\Builder\TreeBuilder<'array'> The tree builder
*/
public function getConfigTreeBuilder(): TreeBuilder
{
Expand All @@ -57,7 +49,7 @@
$rootNode = $treeBuilder->getRootNode();

$this->addRepositoriesSection($rootNode);
$this->addSiteaccessSection($rootNode);
$this->addSiteAccessSection($rootNode);
$this->addImageMagickSection($rootNode);
$this->addHttpCacheSection($rootNode);
$this->addRouterSection($rootNode);
Expand All @@ -73,7 +65,10 @@
return $treeBuilder;
}

public function addRepositoriesSection(ArrayNodeDefinition $rootNode)
/**
* @phpstan-param TRootNode $rootNode
*/
public function addRepositoriesSection(ArrayNodeDefinition $rootNode): void

Check failure on line 71 in src/bundle/Core/DependencyInjection/Configuration.php

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Refactor this function to reduce its Cognitive Complexity from 18 to the 15 allowed.

See more on https://sonarcloud.io/project/issues?id=ibexa_core&issues=AZrfG_H0qcV4N4pvR_Wy&open=AZrfG_H0qcV4N4pvR_Wy&pullRequest=684
{
$repositoriesNode = $rootNode
->children()
Expand Down Expand Up @@ -153,7 +148,10 @@
);
}

public function addSiteaccessSection(ArrayNodeDefinition $rootNode)
/**
* @phpstan-param TRootNode $rootNode
*/
public function addSiteAccessSection(ArrayNodeDefinition $rootNode): void
{
$rootNode
->children()
Expand Down Expand Up @@ -253,7 +251,10 @@
->end();
}

private function addImageMagickSection(ArrayNodeDefinition $rootNode)
/**
* @phpstan-param TRootNode $rootNode
*/
private function addImageMagickSection(ArrayNodeDefinition $rootNode): void
{
$filtersInfo =
<<<EOT
Expand Down Expand Up @@ -299,7 +300,10 @@
->end();
}

private function addHttpCacheSection(ArrayNodeDefinition $rootNode)
/**
* @phpstan-param TRootNode $rootNode
*/
private function addHttpCacheSection(ArrayNodeDefinition $rootNode): void
{
$purgeTypeInfo = <<<EOT
Http cache purge type.
Expand Down Expand Up @@ -349,7 +353,10 @@
->end();
}

private function addRouterSection(ArrayNodeDefinition $rootNode)
/**
* @phpstan-param TRootNode $rootNode
*/
private function addRouterSection(ArrayNodeDefinition $rootNode): void
{
$nonSAAwareInfo = <<<EOT
Route names that are not supposed to be SiteAccess aware, i.e. Routes pointing to asset generation (like assetic).
Expand Down Expand Up @@ -379,9 +386,9 @@
/**
* Defines configuration the images placeholder generation.
*
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
* @phpstan-param TRootNode $rootNode
*/
private function addImagePlaceholderSection(ArrayNodeDefinition $rootNode)
private function addImagePlaceholderSection(ArrayNodeDefinition $rootNode): void
{
$rootNode
->children()
Expand Down Expand Up @@ -421,13 +428,11 @@
* cleanup_method: name_of_cleanup_method
* </code>
*
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
*
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
* @phpstan-param TRootNode $rootNode
*/
private function addUrlAliasSection(ArrayNodeDefinition $rootNode)
private function addUrlAliasSection(ArrayNodeDefinition $rootNode): void
{
return $rootNode
$rootNode
->children()
->arrayNode('url_alias')
->children()
Expand Down Expand Up @@ -462,13 +467,11 @@
* enabled: true
* </code>
*
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
*
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
* @phpstan-param TRootNode $rootNode
*/
private function addUrlWildcardsSection($rootNode): ArrayNodeDefinition
private function addUrlWildcardsSection(ArrayNodeDefinition $rootNode): void
{
return $rootNode
$rootNode
->children()
->arrayNode('url_wildcards')
->children()
Expand Down Expand Up @@ -497,13 +500,11 @@
*
* </code>
*
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
*
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
* @phpstan-param TRootNode $rootNode
*/
private function addOrmSection($rootNode): ArrayNodeDefinition
private function addOrmSection(ArrayNodeDefinition $rootNode): void
{
return $rootNode
$rootNode
->children()
->arrayNode('orm')
->children()
Expand Down Expand Up @@ -544,11 +545,11 @@
*
* </code>
*
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
* @phpstan-param TRootNode $rootNode
*/
private function addUITranslationsSection($rootNode): ArrayNodeDefinition
private function addUITranslationsSection(ArrayNodeDefinition $rootNode): void
{
return $rootNode
$rootNode
->children()
->arrayNode('ui')
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,10 @@

abstract class AbstractParser implements ParserInterface
{
/**
* This method is called by the ConfigurationProcessor before looping over available scopes.
* You may here use $contextualizer->mapConfigArray().
*
* @see ConfigurationProcessor::mapConfig()
* @see \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface::mapConfigArray()
*
* @param array $config Complete parsed semantic configuration
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface $contextualizer
*
* @return mixed
*/
public function preMap(array $config, ContextualizerInterface $contextualizer)
{
}

/**
* This method is called by the ConfigurationProcessor after looping over available scopes.
* You may here use $contextualizer->mapConfigArray().
*
* @see ConfigurationProcessor::mapConfig()
* @see \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface::mapConfigArray()
*
* @param array $config Complete parsed semantic configuration
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface $contextualizer
*
* @return mixed
*/
public function postMap(array $config, ContextualizerInterface $contextualizer)
{
}
Expand Down
15 changes: 10 additions & 5 deletions src/bundle/Core/DependencyInjection/Configuration/ConfigParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,13 @@
class ConfigParser implements ParserInterface
{
/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface[] */
private $configParsers;
private array $configParsers;

/**
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface[] $configParsers
*
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException
*/
public function __construct(array $configParsers = [])
{
foreach ($configParsers as $parser) {
Expand All @@ -38,7 +43,7 @@ public function __construct(array $configParsers = [])
/**
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface[] $configParsers
*/
public function setConfigParsers($configParsers)
public function setConfigParsers(array $configParsers): void
{
$this->configParsers = $configParsers;
}
Expand All @@ -58,21 +63,21 @@ public function mapConfig(array &$scopeSettings, $currentScope, ContextualizerIn
}
}

public function preMap(array $config, ContextualizerInterface $contextualizer)
public function preMap(array $config, ContextualizerInterface $contextualizer): void
{
foreach ($this->configParsers as $parser) {
$parser->preMap($config, $contextualizer);
}
}

public function postMap(array $config, ContextualizerInterface $contextualizer)
public function postMap(array $config, ContextualizerInterface $contextualizer): void
{
foreach ($this->configParsers as $parser) {
$parser->postMap($config, $contextualizer);
}
}

public function addSemanticConfig(NodeBuilder $nodeBuilder)
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
{
$fieldTypeNodeBuilder = $nodeBuilder
->arrayNode('fieldtypes')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ interface FieldTypeParserInterface extends ParserInterface
{
/**
* Returns the fieldType identifier the config parser works for.
* Required to create configuration node under system.<siteaccess>.fieldtypes.
* Required to create configuration node under system.<site_access>.fieldtypes.
*
* @return string
*/
Expand All @@ -22,7 +22,7 @@ public function getFieldTypeIdentifier();
/**
* Adds fieldType semantic configuration definition.
*
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.system.<siteaccess>.fieldtypes.<identifier>
* @phpstan-param \Symfony\Component\Config\Definition\Builder\NodeBuilder<null> $nodeBuilder Node just under ibexa.system.<site_access>.fieldtypes.<identifier>
*/
public function addFieldTypeSemanticConfig(NodeBuilder $nodeBuilder);
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,11 @@

/**
* Abstract parser class that field type parsers need to extend in order
* to receive NodeBuilder at Node just under ezpublish.<system>.<siteaccess>.fieldtypes.<identifier>.
* to receive NodeBuilder at Node just under ibexa.system.<site_access>.fieldtypes.<identifier>.
*/
abstract class AbstractFieldTypeParser extends AbstractParser implements FieldTypeParserInterface
{
/**
* Adds semantic configuration definition.
*
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.<system>.<siteaccess>
*/
public function addSemanticConfig(NodeBuilder $nodeBuilder)
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
{
$fieldTypeNodeBuilder = $nodeBuilder->arrayNode($this->getFieldTypeIdentifier())->children();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@
*/
class Common extends AbstractParser
{
/**
* Adds semantic configuration definition.
*
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ibexa.system.<siteaccess>
*/
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
{
$nodeBuilder
Expand Down Expand Up @@ -107,7 +102,7 @@ public function addSemanticConfig(NodeBuilder $nodeBuilder): void
->end();
}

public function preMap(array $config, ContextualizerInterface $contextualizer)
public function preMap(array $config, ContextualizerInterface $contextualizer): void
{
$contextualizer->mapConfigArray('session', $config);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,7 @@
*/
class Content extends AbstractParser
{
/**
* Adds semantic configuration definition.
*
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.system.<siteaccess>
*/
public function addSemanticConfig(NodeBuilder $nodeBuilder)
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
{
$nodeBuilder
->arrayNode('content')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@

class ContentView extends View
{
public const NODE_KEY = 'content_view';
public const INFO = 'Template selection settings when displaying a content';
public const string NODE_KEY = 'content_view';
public const string INFO = 'Template selection settings when displaying a content';
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@ public function getFieldTypeIdentifier(): string
return ImageAssetFieldType::FIELD_TYPE_IDENTIFIER;
}

/**
* {@inheritdoc}
*/
public function addFieldTypeSemanticConfig(NodeBuilder $nodeBuilder): void
{
$nodeBuilder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function __construct(ComplexSettingParserInterface $complexSettingParser)
$this->complexSettingParser = $complexSettingParser;
}

public function addSemanticConfig(NodeBuilder $nodeBuilder)
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
{
$nodeBuilder
->arrayNode('io')
Expand Down Expand Up @@ -85,7 +85,7 @@ public function mapConfig(array &$scopeSettings, $currentScope, ContextualizerIn
/**
* Post process configuration to add io_root_dir and io_prefix.
*/
public function postMap(array $config, ContextualizerInterface $contextualizer)
public function postMap(array $config, ContextualizerInterface $contextualizer): void
{
$container = $contextualizer->getContainer();

Expand Down
Loading
Loading