LdapTools\Utilities\ArrayToOperator::getOperatorForSchema PHP Method

getOperatorForSchema() public method

Given a schema object and a filter array, construct the operator to be used for the schema.
public getOperatorForSchema ( LdapObjectSchema $schema, array $filter ) : BaseOperator
$schema LdapTools\Schema\LdapObjectSchema
$filter array
return LdapTools\Query\Operator\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);
    }

Usage Example

 /**
  * 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);
 }