mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-25 08:05:00 +00:00
66 lines
2.0 KiB
PHP
66 lines
2.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* Chill is a software for social workers
|
|
*
|
|
* For the full copyright and license information, please view
|
|
* the LICENSE file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Chill\PersonBundle\PersonIdentifier\Rendering;
|
|
|
|
use Chill\PersonBundle\Entity\Person;
|
|
use Chill\PersonBundle\PersonIdentifier\PersonIdentifierManagerInterface;
|
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
|
|
|
final readonly class PersonIdRendering implements PersonIdRenderingInterface
|
|
{
|
|
private string $idContentText;
|
|
|
|
public function __construct(
|
|
ParameterBagInterface $parameterBag,
|
|
private PersonIdentifierManagerInterface $personIdentifierManager,
|
|
) {
|
|
$this->idContentText = $parameterBag->get('chill_person')['person_render']['id_content_text'];
|
|
}
|
|
|
|
public function renderPersonId(Person $person): string
|
|
{
|
|
$args = [
|
|
'[[ person_id ]]' => $person->getId(),
|
|
];
|
|
|
|
foreach ($person->getIdentifiers() as $identifier) {
|
|
if (!$identifier->getDefinition()->isActive()) {
|
|
continue;
|
|
}
|
|
|
|
$key = 'identifier_'.$identifier->getDefinition()->getId();
|
|
|
|
$args
|
|
+= [
|
|
"[[ {$key} ]]" => $this->personIdentifierManager->buildWorkerByPersonIdentifierDefinition($identifier->getDefinition())
|
|
->renderAsString($identifier),
|
|
"[[ if:{$key} ]]" => '',
|
|
"[[ endif:{$key} ]]" => '',
|
|
];
|
|
// we remove the eventual conditions
|
|
|
|
|
|
}
|
|
|
|
$rendered = strtr($this->idContentText, $args);
|
|
|
|
// Delete the conditions which are not met, for instance:
|
|
// [[ if:identifier_99 ]] ... [[ endif:identifier_99 ]]
|
|
// this match the same dumber for opening and closing of the condition
|
|
return preg_replace(
|
|
'/\[\[\s*if:identifier_(\d+)\s*\]\].*?\[\[\s*endif:identifier_\1\s*\]\]/s',
|
|
'',
|
|
$rendered
|
|
);
|
|
}
|
|
}
|