. * * 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; class UserEnabledChecker { /** @var array */ private $assignmentCache = []; public function __construct(private EntityManager $entityManager) {} public function checkAssignment(string $entityType, string $userId): bool { $key = $entityType . '_' . $userId; if (!array_key_exists($key, $this->assignmentCache)) { $preferences = $this->entityManager->getEntity('Preferences', $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]; } }