. * * 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\Core\Notification; use Espo\Core\ORM\EntityManager; use Espo\Core\Utils\Config; use Espo\Entities\Preferences; class UserEnabledChecker { /** @var array */ private $assignmentCache = []; public function __construct( private EntityManager $entityManager, private Config $config, ) {} public function checkAssignment(string $entityType, string $userId): bool { if (!in_array($entityType, $this->config->get('assignmentNotificationsEntityList', []))) { return false; } $key = $entityType . '_' . $userId; if (!array_key_exists($key, $this->assignmentCache)) { $preferences = $this->entityManager->getEntityById(Preferences::ENTITY_TYPE, $userId); $isEnabled = false; $ignoreList = []; if ($preferences) { $isEnabled = true; $ignoreList = $preferences->get('assignmentNotificationsIgnoreEntityTypeList') ?? []; } if ($preferences && in_array($entityType, $ignoreList)) { $isEnabled = false; } $this->assignmentCache[$key] = $isEnabled; } return $this->assignmentCache[$key]; } }