当前位置: 首页>>代码示例>>PHP>>正文


PHP User::getUserSearchableFields方法代码示例

本文整理汇总了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();
 }
开发者ID:ngydat,项目名称:CoreBundle,代码行数:65,代码来源:UserManager.php


注:本文中的Claroline\CoreBundle\Entity\User::getUserSearchableFields方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。