Bolt\Storage\Query\ContentQueryParser::runDirectives PHP Method

runDirectives() public method

This runs the callbacks attached to each directive command.
public runDirectives ( Bolt\Storage\Query\QueryInterface $query, array $skipDirective = [] )
$query Bolt\Storage\Query\QueryInterface
$skipDirective array
    public function runDirectives(QueryInterface $query, array $skipDirective = [])
    {
        foreach ($this->directives as $key => $value) {
            if (!in_array($key, $skipDirective)) {
                if ($this->hasDirectiveHandler($key)) {
                    if (is_callable($this->getDirectiveHandler($key))) {
                        call_user_func_array($this->getDirectiveHandler($key), [$query, $value]);
                    }
                }
            }
        }
    }

Usage Example

Example #1
0
 /**
  * @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;
     }
 }
All Usage Examples Of Bolt\Storage\Query\ContentQueryParser::runDirectives