/** * Given a schema object and a filter array, construct the operator to be used for the schema. * * @param LdapObjectSchema $schema * @param array $filter * @return BaseOperator */ public function getOperatorForSchema(LdapObjectSchema $schema, array $filter) { $operator = null; $categoryOperator = $this->getCategoryOperator($schema->getObjectCategory()); $classOperator = $this->getClassOperator($schema->getObjectClass()); if ($classOperator && $categoryOperator) { $operator = $this->filterBuilder->bAnd($categoryOperator, $classOperator); } elseif ($categoryOperator) { $operator = $categoryOperator; } elseif ($classOperator) { $operator = $classOperator; } return $this->getOperatorForArray($filter, $operator); }
/** * Get the filter for the schema object. * * @param LdapObjectSchema $objectSchema * @param array $objectArray * @return \LdapTools\Query\Operator\BaseOperator * @throws SchemaParserException */ protected function parseFilter(LdapObjectSchema $objectSchema, array $objectArray) { $filter = array_key_exists('filter', $objectArray) ? $objectArray['filter'] : []; if (empty($filter) && empty($objectSchema->getObjectClass()) && empty($objectSchema->getObjectCategory())) { throw new SchemaParserException(sprintf('Object type "%s" must have one of the following defined: %s', $objectSchema->getObjectType(), implode(', ', ['class', 'category', 'filter']))); } return $this->arrayToOp->getOperatorForSchema($objectSchema, $filter); }