AbstractEntity.php 2.33 KB
Newer Older
1
2
3
<?php
namespace UnicaenApp\Entity\Ldap;

4
use UnicaenApp\Exception\LogicException;
5
6
7
8
9
10
11
12
13
use UnicaenApp\Exception\MandatoryValueException;

/**
 * Classe mère des entrées de l'annuaire LDAP.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
abstract class AbstractEntity
{
14
15
16
17
18
    /**
     * @var array Valeurs des attributs LDAP brutes.
     */
    protected $data = array();
    
19
20
21
    /**
     * Construit une entrée.
     *
22
     * @param array $data Valeurs des attributs brutes
23
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
24
    public function __construct($data = null)
25
    {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
26
        if ($data) {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
27
            $this->setData((array) $data);
28
29
        }
    }
30
31
32
33
34
35
36
37
38
39
40
    
    /**
     * Retourne les valeurs des attributs LDAP brutes.
     * 
     * @param string $key Nom éventuel du seul attribut voulu
     * @return array
     */
    public function getData($key = null)
    {
        if ($key) {
            if (!array_key_exists($key, $this->data)) {
41
                throw new LogicException("Attribut introuvable: '$key'.");
42
43
44
45
46
            }
            return $this->data[$key];
        }
        return $this->data;
    }
47
48
49
50

    /**
     * Spécifie les valeurs des attributs de cet individu LDP.
     *
51
     * @param array $data Valeurs des attributs brutes
52
     * @return self
53
     */
54
    abstract public function setData(array $data = array());
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72



    /**
     * Prend un attribut LDAP en entrée. Si l'atribut a plusieurs valeurs on n'en prend qu'une seule
     * 
     * @param $value
     *
     * @return mixed
     */
    protected function uniqueValue($value)
    {
        if (is_array($value) && isset($value[0])){
            return $value[0];
        }
        
        return $value;
    }
73
74
75
76
77
    
    /**
     * Simplifie le format d'une valeur d'un attribut.
     * 
     * @param string $key Nom de l'attribut
78
     * @param boolean $mandatory Indique si l'attribut doit exister et être non vide
79
80
     * @return mixed
     */
81
    protected function processDataValue($key, $mandatory = false)
82
    {
83
84
        $value = isset($this->data[$key]) ? $this->data[$key] : null;
        
85
86
87
88
89
90
91
92
93
94
95
96
        if ($mandatory && !$value) {
            throw new MandatoryValueException("La clé '$key' est introuvable.");
        }
        if (!$value) {
            return null;
        }
        if (is_array($value)) {
            $value = (count($value) > 1) ? $value : $value[0];
        }
        
        return $value;
    }
97
}