diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 26399fa5..13ac50f1 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -2,12 +2,7 @@ parameters: ignoreErrors: - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/DependencyInjection/Configuration.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeParentInterface\\:\\:end\\(\\)\\.$#" - count: 1 + count: 2 path: src/DependencyInjection/Configuration.php - diff --git a/phpstan.neon b/phpstan.neon index ba45ebad..368759e2 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ parameters: - level: 4 + level: 5 paths: - src bootstrapFiles: diff --git a/src/Configuration.php b/src/Configuration.php index 7d2e6d86..1d37d4a4 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -69,8 +69,8 @@ class Configuration extends AbstractModel protected $modificationDate; /** - * @param string $type - * @param string $path + * @param string|null $type + * @param string|null $path * @param string|null $name * @param array|null $configuration */ @@ -231,7 +231,7 @@ public function skipPermisssionCheck() } /** - * @param string $path + * @param string|null $path */ public function setPath($path): void { diff --git a/src/Controller/WebserviceController.php b/src/Controller/WebserviceController.php index 3d429807..5f860b35 100644 --- a/src/Controller/WebserviceController.php +++ b/src/Controller/WebserviceController.php @@ -216,7 +216,7 @@ public function webonyxAction( $debug = DebugFlag::INCLUDE_DEBUG_MESSAGE | DebugFlag::INCLUDE_TRACE; $output = $result->toArray($debug); } else { - $output = $result->toArray(false); + $output = $result->toArray(); } } catch (\Exception $e) { $output = [ diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 7fd45c37..45964833 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\DataHubBundle\DependencyInjection; use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; +use Symfony\Component\Config\Definition\Builder\NodeDefinition; use Symfony\Component\Config\Definition\Builder\TreeBuilder; use Symfony\Component\Config\Definition\ConfigurationInterface; @@ -48,9 +49,9 @@ public function getConfigTreeBuilder() } /** - * @param ArrayNodeDefinition $rootNode + * @param ArrayNodeDefinition|NodeDefinition $rootNode */ - private function addConfigurationsNode(ArrayNodeDefinition $rootNode) + private function addConfigurationsNode(ArrayNodeDefinition | NodeDefinition $rootNode) { $rootNode ->children() diff --git a/src/GraphQL/DataObjectInputProcessor/AdvancedManyToManyObjectRelation.php b/src/GraphQL/DataObjectInputProcessor/AdvancedManyToManyObjectRelation.php index f5e5707c..3391555d 100644 --- a/src/GraphQL/DataObjectInputProcessor/AdvancedManyToManyObjectRelation.php +++ b/src/GraphQL/DataObjectInputProcessor/AdvancedManyToManyObjectRelation.php @@ -52,7 +52,8 @@ public function process($object, $newValue, $args, $context, ResolveInfo $info) $data[$metaDataValue['name']] = $metaDataValue['value']; } } - $item = new ObjectMetadata($attribute, $columns ?? [], $element); + $concrete = Concrete::getById($element->getId()); + $item = new ObjectMetadata($attribute, $columns ?? [], $concrete); if (isset($data) === true) { $item->setData($data); } diff --git a/src/GraphQL/DataObjectQueryFieldConfigGenerator/Hotspotimage.php b/src/GraphQL/DataObjectQueryFieldConfigGenerator/Hotspotimage.php index fffe75a7..f5f5a366 100644 --- a/src/GraphQL/DataObjectQueryFieldConfigGenerator/Hotspotimage.php +++ b/src/GraphQL/DataObjectQueryFieldConfigGenerator/Hotspotimage.php @@ -68,6 +68,8 @@ public function getFieldType(Data $fieldDefinition, $class = null, $container = public function getResolver($attribute, $fieldDefinition, $class) { + + /** @var Data\Hotspotimage $fieldDefinition */ $resolver = new Helper\Hotspotimage($this->getGraphQlService(), $attribute, $fieldDefinition, $class); return [$resolver, 'resolve']; diff --git a/src/GraphQL/DataObjectQueryFieldConfigGenerator/ImageGallery.php b/src/GraphQL/DataObjectQueryFieldConfigGenerator/ImageGallery.php index bb8dcafd..a0ecbead 100644 --- a/src/GraphQL/DataObjectQueryFieldConfigGenerator/ImageGallery.php +++ b/src/GraphQL/DataObjectQueryFieldConfigGenerator/ImageGallery.php @@ -72,6 +72,7 @@ public function getFieldType(Data $fieldDefinition, $class = null, $container = public function getResolver($attribute, $fieldDefinition, $class) { + /** @var Data\ImageGallery $fieldDefinition */ $resolver = new Helper\ImageGallery($this->getGraphQlService(), $attribute, $fieldDefinition, $class); return [$resolver, 'resolve']; diff --git a/src/GraphQL/DataObjectQueryFieldConfigGenerator/ObjectsMetadata.php b/src/GraphQL/DataObjectQueryFieldConfigGenerator/ObjectsMetadata.php index 49060c53..b35390b2 100644 --- a/src/GraphQL/DataObjectQueryFieldConfigGenerator/ObjectsMetadata.php +++ b/src/GraphQL/DataObjectQueryFieldConfigGenerator/ObjectsMetadata.php @@ -19,6 +19,7 @@ use Pimcore\Bundle\DataHubBundle\GraphQL\DataObjectType\ObjectMetadataType; use Pimcore\Model\DataObject\ClassDefinition; use Pimcore\Model\DataObject\ClassDefinition\Data; +use Pimcore\Model\DataObject\ClassDefinition\Data\AdvancedManyToManyObjectRelation; class ObjectsMetadata extends Base { @@ -32,6 +33,7 @@ class ObjectsMetadata extends Base */ public function getGraphQlFieldConfig($attribute, Data $fieldDefinition, $class = null, $container = null) { + /** @var AdvancedManyToManyObjectRelation $fieldDefinition */ return $this->enrichConfig($fieldDefinition, $class, $attribute, [ 'name' => $fieldDefinition->getName(), @@ -43,7 +45,7 @@ public function getGraphQlFieldConfig($attribute, Data $fieldDefinition, $class } /** - * @param Data\AdvancedManyToManyObjectRelation $fieldDefinition + * @param AdvancedManyToManyObjectRelation $fieldDefinition * @param ClassDefinition|null $class * @param object|null $container * diff --git a/src/GraphQL/DataObjectQueryFieldConfigGenerator/ReverseManyToManyObjectRelation.php b/src/GraphQL/DataObjectQueryFieldConfigGenerator/ReverseManyToManyObjectRelation.php index 1a51fed6..474d45b2 100644 --- a/src/GraphQL/DataObjectQueryFieldConfigGenerator/ReverseManyToManyObjectRelation.php +++ b/src/GraphQL/DataObjectQueryFieldConfigGenerator/ReverseManyToManyObjectRelation.php @@ -32,6 +32,7 @@ class ReverseManyToManyObjectRelation extends Base */ public function getGraphQlFieldConfig($attribute, Data $fieldDefinition, $class = null, $container = null) { + /** @var Data\ReverseManyToManyObjectRelation $fieldDefinition */ return $this->enrichConfig( $fieldDefinition, $class, diff --git a/src/GraphQL/DataObjectType/PimcoreObjectType.php b/src/GraphQL/DataObjectType/PimcoreObjectType.php index b2240b09..95499585 100644 --- a/src/GraphQL/DataObjectType/PimcoreObjectType.php +++ b/src/GraphQL/DataObjectType/PimcoreObjectType.php @@ -203,22 +203,23 @@ public function addFieldCollectionDefs($column, ClassDefinition $class, &$fields } else { $fcDef = Definition::getByKey($allowedFcName); $fcFields = []; + if ($fcDef != null) { + $fcFieldDefs = $fcDef->getFieldDefinitions(); - $fcFieldDefs = $fcDef->getFieldDefinitions(); - - foreach ($fcFieldDefs as $key => $fieldDef) { - $attrName = $fieldDef->getName(); - $columnDesc = [ - 'isOperator' => false, - 'attributes' => [ - 'attribute' => $attrName, - 'label' => $fieldDef->getName(), - 'dataType' => $fieldDef->getFieldtype() - ] - ]; - $fcResult = $fieldHelper->getQueryFieldConfigFromConfig($columnDesc, $fcDef); - if ($fcResult) { - $fcFields[$fcResult['key']] = $fcResult['config']; + foreach ($fcFieldDefs as $key => $fieldDef) { + $attrName = $fieldDef->getName(); + $columnDesc = [ + 'isOperator' => false, + 'attributes' => [ + 'attribute' => $attrName, + 'label' => $fieldDef->getName(), + 'dataType' => $fieldDef->getFieldtype() + ] + ]; + $fcResult = $fieldHelper->getQueryFieldConfigFromConfig($columnDesc, $fcDef); + if ($fcResult) { + $fcFields[$fcResult['key']] = $fcResult['config']; + } } } diff --git a/src/GraphQL/FieldHelper/DataObjectFieldHelper.php b/src/GraphQL/FieldHelper/DataObjectFieldHelper.php index 4c26206a..1abe3615 100644 --- a/src/GraphQL/FieldHelper/DataObjectFieldHelper.php +++ b/src/GraphQL/FieldHelper/DataObjectFieldHelper.php @@ -32,7 +32,7 @@ class DataObjectFieldHelper extends AbstractFieldHelper { /** * @param array $nodeDef - * @param ClassDefinition $class + * @param ClassDefinition|\Pimcore\Model\DataObject\Fieldcollection\Definition $class * @param object|null $container * * @return array|bool|null @@ -123,7 +123,7 @@ public function getQueryFieldConfigFromConfig($nodeDef, $class, $container = nul * @param string $mode * @param array $nodeDef * @param ClassDefinition $class - * @param object $container + * @param object|null $container * @param array $params * * @return mixed @@ -336,7 +336,7 @@ public function getGraphQlTypeFromNodeConf($nodeConf, $class, $container = null) if ($nodeConf['isOperator']) { $operatorTypeName = $attributes['class']; - $type = $this->getGraphQlService()->buildDataObjectOperatorQueryType($operatorTypeName, $nodeConf, $class, $container); + $type = $this->getGraphQlService()->buildDataObjectOperatorQueryType('mutation', $operatorTypeName, $nodeConf, $class, $container); } else { $key = $attributes['attribute']; $fieldDefinition = $this->getFieldDefinitionFromKey($class, $key); diff --git a/src/GraphQL/Helper.php b/src/GraphQL/Helper.php index 9c948153..b5f97db5 100644 --- a/src/GraphQL/Helper.php +++ b/src/GraphQL/Helper.php @@ -55,7 +55,7 @@ public static function addJoins(&$list, $filter, $columns, &$mappingTable = []) /** * @param string $defaultTable - * @param string|array $q + * @param string|array|\stdClass $q * @param string|null $op * @param string|null $subject * @param array $fieldMappingTable diff --git a/src/GraphQL/Mutation/MutationType.php b/src/GraphQL/Mutation/MutationType.php index 87e269c3..03aed848 100644 --- a/src/GraphQL/Mutation/MutationType.php +++ b/src/GraphQL/Mutation/MutationType.php @@ -225,6 +225,7 @@ public function buildUpdateDocumentMutation(&$config, $context, $mutationType, $ 'type' => $updateResultType, 'args' => $args, 'resolve' => static function ($value, $args, $context, ResolveInfo $info) use ($documentType, $inputProcessorFn, $processors, $mutationType, $me) { if ($mutationType == 'update') { + /** @var Document $element */ $element = $me->getElementByTypeAndIdOrPath($args, 'document'); if (!WorkspaceHelper::checkPermission($element, 'update')) { @@ -1042,6 +1043,7 @@ public function buildUpdateAssetMutation(&$config, $context) 'userId' => ['type' => Type::int()], 'input' => $this->getGraphQlService()->getAssetTypeDefinition('asset_input') ], 'resolve' => static function ($value, $args, $context, ResolveInfo $info) use ($me) { + /** @var Asset $element */ $element = $me->getElementByTypeAndIdOrPath($args, 'asset'); $tags = []; diff --git a/src/GraphQL/Query/Value/DefaultValue.php b/src/GraphQL/Query/Value/DefaultValue.php index 0e66149e..4ffdce5d 100644 --- a/src/GraphQL/Query/Value/DefaultValue.php +++ b/src/GraphQL/Query/Value/DefaultValue.php @@ -44,7 +44,7 @@ public function getLabeledValue($element, ResolveInfo $resolveInfo = null) $valueParams = new ElementDescriptor($element); $resolveFn = $this->getGraphQlService()->buildDataObjectDataQueryResolver($this->attribute, $fieldDefinition, $class); - $args = null; + $args = []; $value = $resolveFn($valueParams, $args, $this->context, $resolveInfo); if ($value) { diff --git a/src/GraphQL/Resolver/QueryType.php b/src/GraphQL/Resolver/QueryType.php index a7ff47e3..2dd799e8 100644 --- a/src/GraphQL/Resolver/QueryType.php +++ b/src/GraphQL/Resolver/QueryType.php @@ -279,7 +279,7 @@ public function resolveObjectGetter($value = null, $args = [], $context = [], Re $objectList->setObjectTypes([AbstractObject::OBJECT_TYPE_OBJECT, AbstractObject::OBJECT_TYPE_FOLDER, AbstractObject::OBJECT_TYPE_VARIANT]); $objectList->setLimit(1); - $objectList->setUnpublished(1); + $objectList->setUnpublished(true); $objectList = $objectList->load(); if (!$objectList) { $errorMessage = $this->createArgumentErrorMessage($isFullpathSet, $isIdSet, $args); diff --git a/src/GraphQL/Service.php b/src/GraphQL/Service.php index 654e3523..841b327a 100644 --- a/src/GraphQL/Service.php +++ b/src/GraphQL/Service.php @@ -39,6 +39,7 @@ use Pimcore\Bundle\DataHubBundle\GraphQL\Query\Value\DefaultValue; use Pimcore\Bundle\DataHubBundle\PimcoreDataHubBundle; use Pimcore\Cache\Runtime; +use Pimcore\DataObject\GridColumnConfig\ConfigElementInterface; use Pimcore\Localization\LocaleServiceInterface; use Pimcore\Model\Asset; use Pimcore\Model\DataObject\AbstractObject; @@ -485,7 +486,7 @@ public function buildQueryOperator($typeName, $attributes = null, ClassDefinitio } /** - * @param array $nodeConfig + * @param ConfigElementInterface $nodeConfig * * @return mixed|DefaultValue *