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;
 | 
						|
  }
 | 
						|
}
 |