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