injections['selectManagerFactory']; } protected function getEntityManager() { return $this->injections['entityManager']; } protected function getUser() { return $this->injections['user']; } protected function getAcl() { return $this->injections['acl']; } protected function getMetadata() { return $this->injections['metadata']; } protected function getConfig() { return $this->injections['config']; } public function find($query, $offset) { $entityNameList = $this->getConfig()->get('globalSearchEntityList'); $list = array(); $count = 0; $total = 0; foreach ($entityNameList as $entityName) { if (!$this->getAcl()->check($entityName, 'read')) { continue; } $selectManager = $this->getSelectManagerFactory()->create($entityName); $searchParams = array( 'whereClause' => array( 'OR' => array( 'name*' => '%' . $query . '%', ) ), 'offset' => $offset, 'limit' => 5, 'orderBy' => 'createdAt', 'order' => 'DESC', ); $selectParams = array_merge_recursive($searchParams, $selectManager->getAclParams()); $collection = $this->getEntityManager()->getRepository($entityName)->find($selectParams); $count += count($collection); $total += $this->getEntityManager()->getRepository($entityName)->count($selectParams); foreach ($collection as $entity) { $data = $entity->toArray(); $data['_scope'] = $entityName; $list[] = $data; } } return array( 'total' => $total, 'list' => $list, ); } }