createQueryBuilder('a'); // Selecting user info $qb->select('DISTINCT b'); $qb->from('Chamilo\UserBundle\Entity\User', 'b'); // Selecting courses for users //$qb->innerJoin('u.courses', 'c'); //@todo check app settings $qb->add('orderBy', 'b.firstname ASC'); $qb->where('b.firstname LIKE :keyword OR b.lastname LIKE :keyword '); $qb->setParameter('keyword', "%$keyword%"); $query = $qb->getQuery(); return $query->execute(); } /** * Get course user relationship based in the course_rel_user table. * @return array */ /*public function getCourses(User $user) { $queryBuilder = $this->createQueryBuilder('user'); // Selecting course info. $queryBuilder->select('c'); // Loading User. //$qb->from('Chamilo\UserBundle\Entity\User', 'u'); // Selecting course $queryBuilder->innerJoin('Chamilo\CoreBundle\Entity\Course', 'c'); //@todo check app settings //$qb->add('orderBy', 'u.lastname ASC'); $wherePart = $queryBuilder->expr()->andx(); // Get only users subscribed to this course $wherePart->add($queryBuilder->expr()->eq('user.userId', $user->getUserId())); $queryBuilder->where($wherePart); $query = $queryBuilder->getQuery(); return $query->execute(); } public function getTeachers() { $queryBuilder = $this->createQueryBuilder('u'); // Selecting course info. $queryBuilder ->select('u') ->where('u.groups.id = :groupId') ->setParameter('groupId', 1); $query = $queryBuilder->getQuery(); return $query->execute(); }*/ /*public function getUsers($group) { $queryBuilder = $this->createQueryBuilder('u'); // Selecting course info. $queryBuilder ->select('u') ->where('u.groups = :groupId') ->setParameter('groupId', $group); $query = $queryBuilder->getQuery(); return $query->execute(); }*/ /** * Get a filtered list of user by status and (optionally) access url * @param string $query The query to filter * @param int $status The status * @param int $accessUrlId The access URL ID * @return array */ public function searchUsersByStatus($query, $status, $accessUrlId = null) { $accessUrlId = intval($accessUrlId); $queryBuilder = $this->createQueryBuilder('u'); if ($accessUrlId > 0) { $queryBuilder->innerJoin( 'ChamiloCoreBundle:AccessUrlRelUser', 'auru', \Doctrine\ORM\Query\Expr\Join::WITH, 'u.id = auru.userId' ); } $queryBuilder->where('u.status = :status') ->andWhere('u.username LIKE :query OR u.firstname LIKE :query OR u.lastname LIKE :query') ->setParameter('status', $status) ->setParameter('query', "$query%"); if ($accessUrlId > 0) { $queryBuilder->andWhere('auru.accessUrlId = :url') ->setParameter(':url', $accessUrlId); } return $queryBuilder->getQuery()->getResult(); } /** * Get the coaches for a course within a session * @param Session $session The session * @param Course $course The course * @return \Doctrine\ORM\QueryBuilder */ public function getCoachesForSessionCourse(Session $session, Course $course) { $queryBuilder = $this->createQueryBuilder('u'); $queryBuilder->select('u') ->innerJoin( 'ChamiloCoreBundle:SessionRelCourseRelUser', 'scu', Join::WITH, 'scu.user = u' ) ->where( $queryBuilder->expr()->andX( $queryBuilder->expr()->eq('scu.session', $session->getId()), $queryBuilder->expr()->eq('scu.course', $course->getId()), $queryBuilder->expr()->eq('scu.status', SessionRelCourseRelUser::STATUS_COURSE_COACH) ) ); return $queryBuilder->getQuery()->getResult(); } }