You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.7 KiB
143 lines
3.7 KiB
|
13 years ago
|
<?php
|
||
|
|
|
||
|
11 years ago
|
namespace Chamilo\UserBundle\Repository;
|
||
|
13 years ago
|
|
||
|
|
use Doctrine\ORM\EntityRepository;
|
||
|
13 years ago
|
use Doctrine\ORM\NoResultException;
|
||
|
13 years ago
|
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
|
||
|
|
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
|
||
|
11 years ago
|
use Chamilo\UserBundle\Entity\User as User;
|
||
|
13 years ago
|
|
||
|
|
/**
|
||
|
13 years ago
|
* Class UserRepository
|
||
|
|
* @package Entity\Repository
|
||
|
13 years ago
|
*/
|
||
|
12 years ago
|
class UserRepository extends EntityRepository
|
||
|
13 years ago
|
{
|
||
|
13 years ago
|
/**
|
||
|
12 years ago
|
* @param string $keyword
|
||
|
|
* @return mixed
|
||
|
|
*/
|
||
|
13 years ago
|
public function searchUserByKeyword($keyword)
|
||
|
|
{
|
||
|
|
$qb = $this->createQueryBuilder('a');
|
||
|
|
|
||
|
12 years ago
|
// Selecting user info
|
||
|
13 years ago
|
$qb->select('DISTINCT b');
|
||
|
|
|
||
|
11 years ago
|
$qb->from('Chamilo\UserBundle\Entity\User', 'b');
|
||
|
13 years ago
|
|
||
|
12 years ago
|
// Selecting courses for users
|
||
|
13 years ago
|
//$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 ');
|
||
|
13 years ago
|
$qb->setParameter('keyword', "%$keyword%");
|
||
|
12 years ago
|
$query = $qb->getQuery();
|
||
|
13 years ago
|
|
||
|
12 years ago
|
return $query->execute();
|
||
|
13 years ago
|
}
|
||
|
|
|
||
|
13 years ago
|
/**
|
||
|
|
* @param string $username
|
||
|
12 years ago
|
* @return User
|
||
|
13 years ago
|
* @throws UsernameNotFoundException
|
||
|
|
*/
|
||
|
12 years ago
|
/*public function loadUserByUsername($username)
|
||
|
13 years ago
|
{
|
||
|
12 years ago
|
$query = $this
|
||
|
13 years ago
|
->createQueryBuilder('u')
|
||
|
|
->where('u.username = :username OR u.email = :email')
|
||
|
12 years ago
|
->leftJoin('u.roles', 'r')
|
||
|
13 years ago
|
->setParameter('username', $username)
|
||
|
|
->setParameter('email', $username)
|
||
|
|
->getQuery();
|
||
|
|
|
||
|
|
try {
|
||
|
12 years ago
|
$user = $query->getSingleResult();
|
||
|
13 years ago
|
} catch (NoResultException $e) {
|
||
|
|
throw new UsernameNotFoundException(
|
||
|
|
sprintf('Unable to find an active admin User identified by "%s".', $username),
|
||
|
|
0,
|
||
|
|
$e
|
||
|
|
);
|
||
|
|
}
|
||
|
|
return $user;
|
||
|
12 years ago
|
}*/
|
||
|
13 years ago
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param string $class
|
||
|
|
* @return bool
|
||
|
|
*/
|
||
|
12 years ago
|
/*public function supportsClass($class)
|
||
|
13 years ago
|
{
|
||
|
|
return $this->getEntityName() === $class || is_subclass_of($class, $this->getEntityName());
|
||
|
12 years ago
|
}*/
|
||
|
12 years ago
|
|
||
|
|
/**
|
||
|
|
* 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.
|
||
|
12 years ago
|
//$qb->from('Chamilo\UserBundle\Entity\User', 'u');
|
||
|
12 years ago
|
|
||
|
|
// Selecting course
|
||
|
12 years ago
|
$queryBuilder->innerJoin('Chamilo\CoreBundle\Entity\Course', 'c');
|
||
|
12 years ago
|
|
||
|
|
//@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();
|
||
|
|
}
|
||
|
12 years ago
|
|
||
|
|
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();
|
||
|
|
|
||
|
|
/*$studentGroup = $this->findOneBy(array('name' => 'students'));
|
||
|
|
return $this->getUsers($studentGroup);*/
|
||
|
|
}
|
||
|
|
|
||
|
|
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();
|
||
|
|
}
|
||
|
13 years ago
|
}
|