/** * Return the count of activities by user * * Not Implemented Yet * * @param User $user * @param \DateTime $start * @return array */ public function findActivitiesByUserCount(User $user, \DateTime $start) { /** @var $em EntityManager */ $em = $this->getEntityManager(); /** @var $qb QueryBuilder */ $qb = $em->createQueryBuilder(); $expr = $qb->expr(); $districtsIds = $user->getDistrictsIds(); $sectionsIds = $user->getGroupSectionsIds(); $activeGroups = $this->getEntityManager()->getRepository('CivixCoreBundle:UserGroup')->getActiveGroupIds($user); $userFollowingIds = $user->getFollowingIds(); return $qb->select('COUNT(act.id)')->from('CivixCoreBundle:Activity', 'act')->leftJoin('act.activityConditions', 'act_c')->where($expr->gt('act.sentAt', ':start'))->andWhere($expr->orX($expr->in('act_c.districtId', ':userDistrictsIds'), 'act_c.isSuperuser = 1', $expr->in('act_c.groupId', ':userGroupsIds'), $expr->in('act_c.userId', ':userFollowingIds'), $expr->in('act_c.groupSectionId', ':userGroupSectionIds'), ':user MEMBER OF act_c.users'))->setParameter('userDistrictsIds', empty($districtsIds) ? false : $districtsIds)->setParameter('userGroupsIds', empty($activeGroups) ? false : $activeGroups)->setParameter('userFollowingIds', empty($userFollowingIds) ? false : $userFollowingIds)->setParameter('userGroupSectionIds', empty($sectionsIds) ? false : $sectionsIds)->setParameter('user', $user)->setParameter('start', $start->format('Y-m-d H:i:s'))->getQuery()->getSingleScalarResult(); }
public function findActivitiesByUser(User $user, \DateTime $start) { /** @var $em EntityManager */ $em = $this->getEntityManager(); /** @var $qb QueryBuilder */ $qb = $em->createQueryBuilder(); $expr = $qb->expr(); $districtsIds = $user->getDistrictsIds(); $sectionsIds = $user->getGroupSectionsIds(); $activeGroups = $this->getEntityManager()->getRepository('CivixCoreBundle:UserGroup')->getActiveGroupIds($user); $userFollowingIds = $user->getFollowingIds(); $activities = $qb->select('act')->from('CivixCoreBundle:Activity', 'act')->leftJoin('act.activityConditions', 'act_c')->where($expr->gt('act.sentAt', ':start'))->andWhere($expr->orX($expr->in('act_c.districtId', ':userDistrictsIds'), 'act_c.isSuperuser = 1', $expr->in('act_c.groupId', ':userGroupsIds'), $expr->in('act_c.userId', ':userFollowingIds'), $expr->in('act_c.groupSectionId', ':userGroupSectionIds'), ':user MEMBER OF act_c.users'))->setParameter('userDistrictsIds', empty($districtsIds) ? false : $districtsIds)->setParameter('userGroupsIds', empty($activeGroups) ? false : $activeGroups)->setParameter('userFollowingIds', empty($userFollowingIds) ? false : $userFollowingIds)->setParameter('userGroupSectionIds', empty($sectionsIds) ? false : $sectionsIds)->setParameter('user', $user)->setParameter('start', $start->format('Y-m-d H:i:s'))->orderBy('act.sentAt', 'DESC')->setMaxResults(500)->getQuery()->getResult(); $readItems = $this->getEntityManager()->getRepository(ActivityRead::class)->findLastIdsByUser($user, $start); /* @var $activity Activity */ foreach ($activities as $activity) { if (in_array($activity->getId(), $readItems)) { $activity->setRead(true); } } return $activities; }
public function getGroupSectionsIds() { $this->__load(); return parent::getGroupSectionsIds(); }