當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。