Returns the parsed content types.
public getContentTypes ( ) : array | ||
Résultat | array |
/** * @param ContentQueryParser $contentQuery * * @return SearchQueryResultset */ public function __invoke(ContentQueryParser $contentQuery) { $set = new SearchQueryResultset(); foreach ($contentQuery->getContentTypes() as $contenttype) { $query = $contentQuery->getService('search'); $repo = $contentQuery->getEntityManager()->getRepository($contenttype); $query->setQueryBuilder($repo->createQueryBuilder($contenttype)); $query->setContentType($contenttype); $searchParam = $contentQuery->getParameter('filter'); $query->setParameters($contentQuery->getParameters()); $query->setSearch($searchParam); $contentQuery->runDirectives($query); $result = $repo->queryWith($query); if ($result) { if (count($result) > 0) { $weighter = $contentQuery->getService('search_weighter'); $weighter->setContentType($contenttype); $weighter->setResults($result); $weighter->setSearchWords($query->getSearchWords()); $scores = $weighter->weight(); $set->add($result, $contenttype, $scores); } else { $set->add($result, $contenttype); } } } if ($query->getSingleFetchMode()) { return $set->current(); } else { return $set; } }
/** * @param ContentQueryParser $contentQuery * * @return QueryResultset */ public function __invoke(ContentQueryParser $contentQuery) { $set = new QueryResultset(); /** @var SelectQuery $query */ $query = $contentQuery->getService('select'); foreach ($contentQuery->getContentTypes() as $contentType) { $repo = $contentQuery->getEntityManager()->getRepository($contentType); $query->setQueryBuilder($repo->createQueryBuilder($contentType)); $query->setContentType($contentType); /** Run the parameters through the whitelister. If we get a false back from this method it's because there * is no need to continue with the query. */ $params = $this->whitelistParameters($contentQuery->getParameters(), $repo); if (!$params && count($contentQuery->getParameters())) { continue; } /** Continue and run the query add the results to the set */ $query->setParameters($params); $contentQuery->runDirectives($query); $result = $repo->queryWith($query); if ($result) { $set->add($result, $contentType); } } if ($query->getSingleFetchMode()) { return $set->current(); } else { return $set; } }
/** * @param ContentQueryParser $contentQuery * * @return mixed */ public function __invoke(ContentQueryParser $contentQuery) { if (is_numeric($contentQuery->getIdentifier())) { $contentQuery->setParameter('id', $contentQuery->getIdentifier()); } else { $contentQuery->setParameter('slug', $contentQuery->getIdentifier()); } if (count($contentQuery->getContentTypes()) === 1) { $contentQuery->setDirective('returnsingle', true); } return call_user_func_array($contentQuery->getHandler('select'), [$contentQuery]); }
public function testDirectiveParsing() { $app = $this->getApp(); $qb = new ContentQueryParser($app['storage'], $app['query.select']); $qb->setQuery('entries'); $qb->setParameters(['order' => '-datepublish', 'id' => '!1']); $qb->parse(); $this->assertEquals(['entries'], $qb->getContentTypes()); $this->assertEquals('select', $qb->getOperation()); $this->assertEquals('-datepublish', $qb->getDirective('order')); $this->assertEquals('!1', $qb->getParameter('id')); $this->assertEquals(1, count($qb->getParameters())); }
public function postgresSearch(ContentQueryParser $contentQuery) { $set = new SearchQueryResultset(); foreach ($contentQuery->getContentTypes() as $contenttype) { $repo = $contentQuery->getEntityManager()->getRepository($contenttype); $query = $repo->createQueryBuilder($contenttype); $config = $contentQuery->getService('search_config'); $search = $contentQuery->getParameter('filter'); $adapter = new PostgresSearch($query, $config, explode(' ', $search)); $adapter->setContentType($contenttype); $result = $repo->findWith($adapter->getQuery()); $set->add($result, $contenttype); } return $set; }
/** * @param ContentQueryParser $contentQuery * * @return QueryResultset */ public function __invoke(ContentQueryParser $contentQuery) { $set = new QueryResultset(); foreach ($contentQuery->getContentTypes() as $contenttype) { $query = $contentQuery->getService('select'); $repo = $contentQuery->getEntityManager()->getRepository($contenttype); $query->setQueryBuilder($repo->createQueryBuilder($contenttype)); $query->setContentType($contenttype); $query->setParameters($contentQuery->getParameters()); $contentQuery->runDirectives($query); $result = $repo->queryWith($query); if ($result) { $set->add($result, $contenttype); } } if ($query->getSingleFetchMode()) { return $set->current(); } else { return $set; } }
public function testSingleItemMode() { $app = $this->getApp(); $qb = new ContentQueryParser($app['storage'], $app['query.select']); $qb->setQuery('pages/5'); $qb->setParameter('printquery', true); $qb->parse(); $this->assertEquals(['pages'], $qb->getContentTypes()); $this->assertEquals('namedselect', $qb->getOperation()); $this->assertEquals('5', $qb->getIdentifier()); $this->expectOutputString('SELECT pages.* FROM bolt_pages pages WHERE pages.id = :id_1'); $res = $qb->fetch(); $this->assertInstanceOf('Bolt\\Storage\\Entity\\Content', $res); }