public function getAuthors($term = null, $limit = null, $alsoUsers = false)
{
$qb = $this->em->createQueryBuilder();
$qb->select("trim(concat(aa.first_name, concat(' ', aa.last_name))) as title")->from('Newscoop\\Entity\\Author', 'aa');
if ($term !== null && trim($term) !== '') {
$qb->where($qb->expr()->like('aa.last_name', ':term'))->orWhere($qb->expr()->like('aa.first_name', ':term'))->orWhere($qb->expr()->like('concat(aa.first_name, concat(\' \', aa.last_name))', ':term'))->setParameter('term', $term . '%')->groupBy('aa.last_name', 'aa.first_name');
}
if (!is_null($limit)) {
$qb->setMaxResults($limit);
}
$authorsArray = $qb->getQuery()->getArrayResult();
if ($alsoUsers) {
$qbUsers = clone $qb;
$qbUsers->resetDQLPart('from');
$qbUsers->from('Newscoop\\Entity\\User', 'aa');
$usersArray = $qbUsers->getQuery()->getArrayResult();
$authorsArray = array_unique(array_merge($authorsArray, $usersArray), SORT_REGULAR);
}
return $authorsArray;
}