![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/ApiBundle/Serializer/Exclusion/ |
<?php namespace Mautic\ApiBundle\Serializer\Exclusion; use JMS\Serializer\Context; use JMS\Serializer\Exclusion\ExclusionStrategyInterface; use JMS\Serializer\Metadata\ClassMetadata; use JMS\Serializer\Metadata\PropertyMetadata; /** * Exclude specific fields at a specific level. */ class FieldExclusionStrategy implements ExclusionStrategyInterface { private int $level; /** * @param int $level * @param string|null $path */ public function __construct( private array $fields, $level = 3, private $path = null ) { $this->level = (int) $level; } public function shouldSkipClass(ClassMetadata $metadata, Context $navigatorContext): bool { return false; } public function shouldSkipProperty(PropertyMetadata $property, Context $navigatorContext): bool { if ($this->path) { $path = implode('.', $navigatorContext->getCurrentPath()); if ($path !== $this->path) { return false; } } $name = $property->serializedName ?: $property->name; if (!in_array($name, $this->fields)) { return false; } // children of children or parents of chidlren will be more than 3 levels deep if ($navigatorContext->getDepth() <= $this->level) { return false; } return true; } }