translatableStringHelper = $translatableStringHelper; } /** * @param Relationship $relation * @param string|null $format */ public function normalize($relation, $format = null, array $context = []) { $counterpart = $context['docgen:relationship:counterpart'] ?? null; $contextPerson = array_merge($context, [ 'docgen:person:with-relations' => false, 'docgen:relationship:counterpart' => null, 'docgen:expects' => Person::class, ]); if (null !== $counterpart) { $opposite = $relation->getOpposite($counterpart); } else { $opposite = null; } if (null === $relation) { return [ 'id' => '', 'fromPerson' => $nullPerson = $this->normalizer->normalize(null, $format, $contextPerson), 'toPerson' => $nullPerson, 'opposite' => $nullPerson, 'text' => '', 'relationId' => '', ]; } return [ 'id' => $relation->getId(), 'fromPerson' => $this->normalizer->normalize( $relation->getFromPerson(), $format, $contextPerson ), 'toPerson' => $this->normalizer->normalize( $relation->getToPerson(), $format, $contextPerson ), 'text' => $relation->getReverse() ? $this->translatableStringHelper->localize($relation->getRelation()->getReverseTitle()) : $this->translatableStringHelper->localize($relation->getRelation()->getTitle()), 'opposite' => $this->normalizer->normalize($opposite, $format, $contextPerson), 'relationId' => $relation->getRelation()->getId(), ]; } public function supportsNormalization($data, $format = null, array $context = []) { if ('docgen' !== $format) { return false; } return $data instanceof Relationship || (null === $data && Relationship::class === ($context['docgen:expects'] ?? null)); } }