public function handle(CriteriaConverter $converter, SelectQuery $query, Criterion $criterion, array $languageSettings)
{
$subSelect = $query->subSelect();
if ($criterion->value[0] === Criterion\Visibility::VISIBLE) {
$expression = $query->expr->lAnd($query->expr->eq($this->dbHandler->quoteColumn('is_hidden', 'ezcontentobject_tree'), 0), $query->expr->eq($this->dbHandler->quoteColumn('is_invisible', 'ezcontentobject_tree'), 0));
} else {
$expression = $query->expr->lOr($query->expr->eq($this->dbHandler->quoteColumn('is_hidden', 'ezcontentobject_tree'), 1), $query->expr->eq($this->dbHandler->quoteColumn('is_invisible', 'ezcontentobject_tree'), 1));
}
$subSelect->select($this->dbHandler->quoteColumn('contentobject_id'))->from($this->dbHandler->quoteTable('ezcontentobject_tree'))->where($expression);
return $query->expr->in($this->dbHandler->quoteColumn('id', 'ezcontentobject'), $subSelect);
}