Esempio n. 1
0
 private function applyQueryFilter(QueryBuilder $query, Filter $filter)
 {
     $query->where('u.enabled = 1');
     if ($filter->isEmpty()) {
         return;
     }
     if ($nt = $filter->getNotificationType()) {
         // JOIN NotificationSubscriptions ns ON (u.id = ns.idUser AND ns.idNotificationType = x)
         $query->innerJoin('u', 'NotificationSubscriptions', 'ns', 'u.id = ns.idUser AND ns.idNotificationType = :ntype');
         $query->setParameter('ntype', $nt->getId());
     }
     if ($status = $filter->getUserStatus()) {
         $query->andWhere('u.status = :status');
         $query->setParameter('status', $status);
     }
     $sslist = $filter->getScholarships();
     if (!empty($sslist)) {
         $ssids = [];
         foreach ($sslist as $scholarship) {
             $ssids[] = $scholarship->getId();
         }
         $ssids = implode(',', $ssids);
         $query->innerJoin('u', 'Entries', 'e', 'u.id = e.idUser AND e.idScholarship IN(' . $ssids . ')');
     }
     if (class_exists('GotChosen\\SiteBundle\\Entity\\EGGame') && $filter->hasSubmittedGame()) {
         $query->innerJoin('u', 'Games', 'g', 'u.id = g.user_id');
     }
     if ($lang = $filter->getLanguage()) {
         $query->innerJoin('u', 'UserProfile', 'up', 'u.id = up.user_id AND up.property_id = 19 AND up.propertyValue = :lang');
         $query->setParameter('lang', $lang);
     }
 }