Load general coaches when the count is greater than 50 - refs BT#9885 #TMI

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent eccaf5f061
commit cb0b16e334
  1. 24
      main/inc/ajax/session.ajax.php
  2. 19
      main/inc/lib/sessionmanager.lib.php
  3. 37
      src/Chamilo/UserBundle/Entity/Repository/UserRepository.php

@ -114,6 +114,30 @@ switch ($action) {
echo $sessionInfo['show_description'] == 1 ? $sessionInfo['description'] : get_lang('None');
echo '</div></div></div>';
}
case 'search_general_coach':
header('Content-Type: application/json');
if (api_is_anonymous()) {
echo '';
break;
}
$list = [];
$entityManager = Database::getManager();
$usersRepo = $entityManager->getRepository('ChamiloUserBundle:User');
$users = $usersRepo->searchUsersByStatus($_GET['q'], COURSEMANAGER);
foreach ($users as $user) {
$list[] = [
'id' => $user->getId(),
'text' => $user->getCompleteName()
];
}
echo json_encode($list);
break;
default:
echo '';
}

@ -6329,23 +6329,18 @@ class SessionManager
'select',
'coach_username',
get_lang('CoachName'),
$coachesOptions,
array(
'id' => 'coach_username',
'class' => 'chzn-select',
'style' => 'width:370px;'
)
$coachesOptions
);
} else {
$form->addElement(
'text',
'select_ajax',
'coach_username',
get_lang('CoachName'),
array(
'maxlength' => 50,
'onkeyup' => "xajax_search_coachs(document.getElementById('coach_username').value)",
'id' => 'coach_username'
)
null,
[
'url' => api_get_path(WEB_AJAX_PATH) . 'session.ajax.php?a=search_general_coach',
'width' => '100%'
]
);
}
}

@ -4,6 +4,7 @@
namespace Chamilo\UserBundle\Entity\Repository;
use Doctrine\ORM\EntityRepository;
use \Doctrine\Common\Collections\Criteria;
//use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
//use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
@ -105,4 +106,40 @@ class UserRepository extends EntityRepository
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();
}
}

Loading…
Cancel
Save