63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\ldap;
 | 
						|
 | 
						|
use nur\A;
 | 
						|
use nur\b\IllegalAccessException;
 | 
						|
use nur\ldap\syntaxes\CompositeSyntax;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class CompositeAttr: une liste de valeurs composites
 | 
						|
 */
 | 
						|
class CompositeAttr extends LdapAttr {
 | 
						|
  function reset(?array &$values): self {
 | 
						|
    if ($values !== null) {
 | 
						|
      /** @var CompositeSyntax $syntax */
 | 
						|
      $syntax = $this->syntax;
 | 
						|
      $tmp = [];
 | 
						|
      foreach ($values as $value) {
 | 
						|
        $cvalue = $syntax->ldap2php($value);
 | 
						|
        $key = $cvalue->getKey();
 | 
						|
        $value = $cvalue->formatLdap();
 | 
						|
        $tmp[$key] = $value;
 | 
						|
      }
 | 
						|
      $values = $tmp;
 | 
						|
    }
 | 
						|
    $this->data =& $values;
 | 
						|
    return $this;
 | 
						|
  }
 | 
						|
 | 
						|
  function add($value, bool $unique=true, bool $strict=false): self {
 | 
						|
    /** @var CompositeSyntax $syntax */
 | 
						|
    $syntax = $this->syntax;
 | 
						|
    $value = A::first($syntax->ensureArray($value));
 | 
						|
    $cvalue = $syntax->ensureComposite($value);
 | 
						|
    if ($cvalue !== null) {
 | 
						|
      $key = $cvalue->getKey();
 | 
						|
      $value = $cvalue->formatLdap();
 | 
						|
      $this->data[$key] = $value;
 | 
						|
    }
 | 
						|
    return $this;
 | 
						|
  }
 | 
						|
 | 
						|
  function del($value, int $maxCount=-1, bool $strict=false): self {
 | 
						|
    if ($value !== null && $this->data !== null) {
 | 
						|
      /** @var CompositeSyntax $syntax */
 | 
						|
      $syntax = $this->syntax;
 | 
						|
      $value = A::first($syntax->ensureArray($value));
 | 
						|
      $cvalue = $syntax->ensureComposite($value);
 | 
						|
      if ($cvalue !== null) {
 | 
						|
        $key = $cvalue->getKey();
 | 
						|
        unset($this->data[$key]);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return $this;
 | 
						|
  }
 | 
						|
 | 
						|
  function ins(int $index, $value): self {
 | 
						|
    throw IllegalAccessException::not_allowed("composite attrs don't use indexes");
 | 
						|
  }
 | 
						|
  function unset(int $index): self {
 | 
						|
    throw IllegalAccessException::not_allowed("composite attrs don't use indexes");
 | 
						|
  }
 | 
						|
}
 |