. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Modules\Crm\Tools\MassEmail; use Espo\Core\Utils\Metadata; use Espo\ORM\Defs; use Espo\Modules\Crm\Entities\TargetList; use RuntimeException; class Util { /** @var string[] */ private array $targetLinkList; public function __construct( private Defs $ormDefs, private Metadata $metadata ) { $this->targetLinkList = $this->metadata->get(['scopes', 'TargetList', 'targetLinkList']) ?? []; } public function getLinkByEntityType(string $entityType): string { foreach ($this->targetLinkList as $link) { $itemEntityType = $this->ormDefs ->getEntity(TargetList::ENTITY_TYPE) ->getRelation($link) ->getForeignEntityType(); if ($itemEntityType === $entityType) { return $link; } } throw new RuntimeException("No link for $entityType."); } }