58 lines
1.4 KiB
PHP
58 lines
1.4 KiB
PHP
<?php
|
|
namespace nur\ldap\syntaxes;
|
|
|
|
use nur\A;
|
|
use nur\ldap\LdapAttr;
|
|
use nur\ldap\LdapConn;
|
|
|
|
abstract class AbstractSyntax {
|
|
/** @var LdapConn */
|
|
protected $conn;
|
|
|
|
function initConn(LdapConn $conn) {
|
|
$this->conn = $conn;
|
|
}
|
|
|
|
function newAttr(string $name, ?array &$values, ?int $flags): LdapAttr {
|
|
return new LdapAttr($name, $values, $this, $flags);
|
|
}
|
|
|
|
function getPhpType(): ?string {
|
|
return "string";
|
|
}
|
|
|
|
/** @throws SyntaxException si $value est invalide */
|
|
abstract function php2ldap($value): ?string;
|
|
|
|
abstract function ldap2php(string $value);
|
|
|
|
/** transformer les valeurs d'un attribut LDAP en PHP */
|
|
function fromMultivaluedLdap($values): ?array {
|
|
A::ensure_narray($values);
|
|
if ($values !== null) {
|
|
foreach ($values as &$value) {
|
|
$value = $this->ldap2php($value);
|
|
}; unset($value);
|
|
}
|
|
return A::filter_n($values)?: null;
|
|
}
|
|
|
|
/** transformer la valeur d'un attribut LDAP en PHP */
|
|
function fromMonovaluedLdap($value) {
|
|
if (is_array($value)) $value = A::first($value);
|
|
if ($value === null) return null;
|
|
else return $this->ldap2php($value);
|
|
}
|
|
|
|
/** transformer une(des) valeur(s) PHP en attribut LDAP */
|
|
function fromPhp($values): ?array {
|
|
A::ensure_narray($values);
|
|
if ($values !== null) {
|
|
foreach ($values as &$value) {
|
|
$value = $this->php2ldap($value);
|
|
}; unset($value);
|
|
}
|
|
return A::filter_n($values)?: null;
|
|
}
|
|
}
|