public function afterSave(Entity $entity) { if ($entity->isNew()) { $parentType = $entity->get('parentType'); $parentId = $entity->get('parentId'); $superParentType = $entity->get('superParentType'); $superParentTypeId = $entity->get('superParentTypeId'); $userIdList = []; if ($parentType && $parentId) { $userIdList = array_merge($userIdList, $this->getSubscriberIdList($parentType, $parentId)); if ($superParentType && $superParentTypeId) { $userIdList = array_merge($userIdList, $this->getSubscriberIdList($superParentType, $superParentTypeId)); } } else { $targetType = $entity->get('targetType'); if ($targetType === 'users') { $targetUserIdList = $entity->get('usersIds'); foreach ($targetUserIdList as $userId) { if ($userId === $this->getUser()->id) { continue; } $userIdList[] = $userId; } } else { if ($targetType === 'teams') { $targetTeamIdList = $entity->get('teamsIds'); foreach ($targetTeamIdList as $teamId) { $team = $this->getEntityManager()->getEntity('Team', $teamId); if (!$team) { continue; } $targetUserList = $this->getEntityManager()->getRepository('Team')->findRelated($team, 'users', array('whereClause' => array('isActive' => true))); foreach ($targetUserList as $user) { if ($user->id === $this->getUser()->id) { continue; } $userIdList[] = $user->id; } } } else { if ($targetType === 'all') { $targetUserList = $this->getEntityManager()->getRepository('User')->find(array('whereClause' => array('isActive' => true))); foreach ($targetUserList as $user) { if ($user->id === $this->getUser()->id) { continue; } $userIdList[] = $user->id; } } } } } $userIdList = array_unique($userIdList); foreach ($userIdList as $i => $userId) { if ($entity->isUserIdNotified($userId)) { unset($userIdList[$i]); } } $userIdList = array_values($userIdList); if (!empty($userIdList)) { $this->getNotificationService()->notifyAboutNote($userIdList, $entity); } } }