for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Kaliop\EzFindSearchEngineBundle\Core\Persistence\eZFind\Content\Search\Common\Gateway\CriterionHandler;
use eZ\Publish\API\Repository\Values\Content\Query\Criterion;
use eZ\Publish\API\Repository\Values\Content\Query\Criterion\Operator;
use Kaliop\EzFindSearchEngineBundle\Core\Persistence\eZFind\Content\Search\Common\Gateway\CriteriaConverter;
use Kaliop\EzFindSearchEngineBundle\Core\Persistence\eZFind\Content\Search\Common\Gateway\CriterionHandler;
class Subtree extends CriterionHandler
{
public function accept(Criterion $criterion)
return $criterion instanceof Criterion\Subtree;
}
public function handle(CriteriaConverter $converter, Criterion $criterion)
$result = [];
$valueList = (array)$criterion->value;
foreach ($valueList as $value) {
// be tolerant to devs forgetting 1st and last slash
$value = '/' . trim($value, '/') . '/';
$result[] = 'meta_path_string_ms:' . $this->escapeValue($value) . '*';
return count($result) == 1 ? $result[0] : array_unshift($result, 'OR');