/** * Render and return a valid LDAP filter expression of the given filter * * @param FilterExpression $filter * * @return string */ protected function renderFilterExpression(FilterExpression $filter) { $column = $filter->getColumn(); $sign = $filter->getSign(); $expression = $filter->getExpression(); $format = '%1$s%2$s%3$s'; if ($expression === null || $expression === true) { $expression = '*'; } elseif (is_array($expression)) { $seqFormat = '|(%s)'; if ($sign === '!=') { $seqFormat = '!(' . $seqFormat . ')'; $sign = '='; } $seqParts = array(); foreach ($expression as $expressionValue) { $seqParts[] = sprintf($format, LdapUtils::quoteForSearch($column), $sign, LdapUtils::quoteForSearch($expressionValue, true)); } return sprintf($seqFormat, implode(')(', $seqParts)); } if ($sign === '!=') { $format = '!(%1$s=%3$s)'; } return sprintf($format, LdapUtils::quoteForSearch($column), $sign, LdapUtils::quoteForSearch($expression, true)); }
protected function renderFilterExpression(FilterExpression $filter) { if ($this->addTo && $this->addTo === $filter->getId()) { return preg_replace('/ class="autosubmit"/', ' class="autofocus"', $this->selectOperator()) . '<ul><li>' . $this->selectColumn($filter) . $this->selectSign($filter) . $this->text($filter) . $this->removeLink($filter) . $this->addLink($filter) . '</li><li class="active">' . $this->renderNewFilter() . $this->cancelLink() . '</li></ul>'; } else { return $this->selectColumn($filter) . $this->selectSign($filter) . $this->text($filter) . $this->removeLink($filter) . $this->addLink($filter); } }
/** * Render a single filter expression * * @param FilterExpression $filter the filter expression * @param bool $keylookup whether to resolve alias names * * @return string */ public function renderFilterExpression(FilterExpression $filter, $keylookup = true) { if ($keylookup) { $col = $this->available_columns[$filter->getColumn()]; } else { $col = $filter->getColumn(); } $isArray = array_key_exists($col, $this->arrayColumns); $sign = $filter->getSign(); if ($isArray && $sign === '=') { $sign = '>='; } $expression = $filter->getExpression(); if ($sign === '=' && strpos($expression, '*') !== false) { return $col . ' ~~ ' . $this->safeRegex($expression); } elseif ($sign === '!=' && strpos($expression, '*') !== false) { return $col . ' !~~ ' . $this->safeRegex($expression); } else { return $col . ' ' . $sign . ' ' . $expression; } }