. * * 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\Tools\DynamicLogic\CascadingFields; use Espo\Core\Utils\Metadata; class ItemsProvider { public function __construct( private Metadata $metadata, ) {} /** * @return Item[] */ public function get(string $entityType, string $field): array { /** @var array[] $rawItems */ $rawItems = $this->metadata->get("logicDefs.$entityType.cascadingFields.$field.items") ?? []; $items = []; foreach ($rawItems as $raw) { $localField = $raw['localField'] ?? null; $foreignField = $raw['foreignField'] ?? null; $matchRequired = $raw['matchRequired'] ?? false; if (!$localField || !$foreignField) { continue; } $items[] = new Item( localField: $localField, foreignField: $foreignField, matchRequired: $matchRequired, ); } return $items; } }