本文整理汇总了PHP中Claroline\CoreBundle\Entity\User::getUserSearchableFields方法的典型用法代码示例。如果您正苦于以下问题:PHP User::getUserSearchableFields方法的具体用法?PHP User::getUserSearchableFields怎么用?PHP User::getUserSearchableFields使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Claroline\CoreBundle\Entity\User
的用法示例。
在下文中一共展示了User::getUserSearchableFields方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: searchPartialList
/**
* Big user search method ! hell yeah !
*/
public function searchPartialList($searches, $page, $limit, $count = false)
{
$baseFieldsName = User::getUserSearchableFields();
$facetFields = $this->objectManager->getRepository('ClarolineCoreBundle:Facet\\FieldFacet')->findAll();
$facetFieldsName = array();
foreach ($facetFields as $facetField) {
$facetFieldsName[] = $facetField->getName();
}
$qb = $this->objectManager->createQueryBuilder();
$count ? $qb->select('count(u)') : $qb->select('u');
$qb->from('Claroline\\CoreBundle\\Entity\\User', 'u')->where('u.isEnabled = true');
//Admin can see everything, but the others... well they can only see their own organizations.
if (!$this->container->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
$currentUser = $this->container->get('security.token_storage')->getToken()->getUser();
$qb->leftJoin('u.organizations', 'uo');
$qb->leftJoin('uo.administrators', 'ua');
$qb->andWhere('ua.id = :userId');
$qb->setParameter('userId', $currentUser->getId());
}
foreach ($searches as $key => $search) {
foreach ($search as $id => $el) {
if (in_array($key, $baseFieldsName)) {
$qb->andWhere("UPPER (u.{$key}) LIKE :{$key}{$id}");
$qb->setParameter($key . $id, '%' . strtoupper($el) . '%');
} elseif (in_array($key, $facetFieldsName)) {
$qb->join('u.fieldsFacetValue', "ffv{$id}");
$qb->join("ffv{$id}.fieldFacet", "f{$id}");
$qb->andWhere("UPPER (ffv{$id}.stringValue) LIKE :{$key}{$id}");
$qb->orWhere("ffv{$id}.floatValue = :{$key}{$id}");
$qb->andWhere("f{$id}.name LIKE :facet{$id}");
$qb->setParameter($key . $id, '%' . strtoupper($el) . '%');
$qb->setParameter("facet{$id}", $key);
} elseif ($key === 'group_name') {
$qb->join('u.groups', "g{$id}");
$qb->andWhere("UPPER (g{$id}.name) LIKE :{$key}{$id}");
$qb->setParameter($key . $id, '%' . strtoupper($el) . '%');
}
if ($key === 'group_id') {
$qb->join('u.groups', "g{$id}");
$qb->andWhere("g{$id}.id = :{$key}{$id}");
$qb->setParameter($key . $id, $el);
}
if ($key === 'organization_name') {
$qb->join('u.organizations', "o{$id}");
$qb->andWhere("UPPER (o{$id}.name) LIKE :{$key}{$id}");
$qb->setParameter($key . $id, '%' . strtoupper($el) . '%');
}
if ($key === 'organization_id') {
$qb->join('u.organizations', "o{$id}");
$qb->andWhere('o{$id}.id = :id');
$qb->setParameter($key . $id, $el);
}
}
}
$event = $this->strictEventDispatcher->dispatch('user_edit_search_event', 'UserEditSearch', array($qb));
$query = $qb->getQuery();
if ($page !== null && $limit !== null && !$count) {
$query->setMaxResults($limit);
$query->setFirstResult($page * $limit);
}
return $count ? $query->getSingleScalarResult() : $query->getResult();
}