diff --git a/changelog.md b/changelog.md index f8a053a..d030d63 100644 --- a/changelog.md +++ b/changelog.md @@ -49,4 +49,5 @@ - Add licencing #### Fix -- Doctrine deprecation \ No newline at end of file +- Doctrine deprecation +- Activity filter does not shows unassigned activities \ No newline at end of file diff --git a/src/Form/Activity/ActivityFilterForm.php b/src/Form/Activity/ActivityFilterForm.php index 17d7efe..d3e3acc 100644 --- a/src/Form/Activity/ActivityFilterForm.php +++ b/src/Form/Activity/ActivityFilterForm.php @@ -52,18 +52,24 @@ public function getActivities(ActivityRepository $activityRepository): array { $data = $this->getData(); - + + // Create query + $query = $activityRepository->createQueryBuilder('activity'); + // Create filter $criteria = new Criteria(); // Filter actors - if (!is_null($data['actor'])) { - $criteria->andWhere($criteria->expr() - ->eq('activity.actor', $data['actor'])); - } - if ($data['followed']) { - $criteria->andWhere($criteria->expr() - ->eq('actor.followed', true)); + if (!is_null($data['actor']) || $data['followed']) { + $query->join(ActorEntity::class, 'actor', Join::WITH, 'activity.actor = actor'); + if (!is_null($data['actor'])) { + $criteria->andWhere($criteria->expr() + ->eq('activity.actor', $data['actor'])); + } + if ($data['followed']) { + $criteria->andWhere($criteria->expr() + ->eq('actor.followed', true)); + } } // Filter status @@ -90,13 +96,10 @@ if (!is_null($data['startBefore'])) { $criteria->andWhere($criteria->expr() ->orX($criteria->expr() - ->isNull('activity.realStartDate'), $criteria->expr() - ->lt('activity.realStartDate', $data['startBefore']))); + ->isNull('activity.realStartDate'), $criteria->expr() + ->lt('activity.realStartDate', $data['startBefore']))); } - // Create query - $query = $activityRepository->createQueryBuilder('activity'); - $query->join(ActorEntity::class, 'actor', Join::WITH, 'activity.actor = actor'); $query->addCriteria($criteria); return $query->getQuery()->execute([], Query::HYDRATE_OBJECT);