Adds additional operators or equality comparisons to the 'and' statement.
public andWhere ( $whereStatements ) | ||
$whereStatements | Either a key => value array or an Operator type objects. |
/** * Make sure that the group exists and that the user is already a member of it. If not, at least give an informative * message. * * @param string $name The group name. * @return string The text SID of the group. * @throws AttributeConverterException */ protected function validateAndGetGroupSID($name) { $query = new LdapQueryBuilder($this->getLdapConnection()); $query->select('objectSid')->where(['objectClass' => 'group', 'cn' => $name]); // Only validate group group membership on modification. if ($this->getOperationType() == AttributeConverterInterface::TYPE_MODIFY) { $query->andWhere(['member' => $this->getDn()]); } try { return $query->andWhere($query->filter()->bitwiseAnd('groupType', GroupTypeFlags::SECURITY_ENABLED))->getLdapQuery()->getSingleScalarResult(); } catch (EmptyResultException $e) { throw new AttributeConverterException(sprintf('Either the group "%s" doesn\'t exist, the user with DN "%s" is not a member of the group, the group' . ' is not a security group, or this group is already their primary group.', $name, $this->getDn())); } }
/** * Builds the part the of the query with the specific object class/value to search on. * * @param array $filter * @param bool $isOrFilter * @param string $toSelect * @return LdapQueryBuilder */ protected function buildLdapQuery(array $filter, $isOrFilter, $toSelect) { $query = new LdapQueryBuilder($this->connection); $query->select($toSelect); $statement = $isOrFilter ? $query->filter()->bOr() : $query->filter()->bAnd(); foreach ($filter as $attribute => $values) { $values = is_array($values) ? $values : [$values]; foreach ($values as $value) { $statement->add($query->filter()->eq($attribute, $value)); } } return $query->andWhere($statement); }