Group.php 1.91 KB
Newer Older
1
<?php
Bertrand Gauthier's avatar
Bertrand Gauthier committed
2

3
4
5
6
7
8
9
10
11
12
13
14
15
namespace UnicaenLdap\Entity;

use DateTime;

/**
 * Classe mère des groupes de l'annuaire LDAP.
 *
 * @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
 */
class Group extends Entity
{
    protected $type = 'Group';

16
17
    /**
     * Liste des classes d'objet nécessaires à la création d'un groupe
Bertrand Gauthier's avatar
Bertrand Gauthier committed
18
19
     *
     * @var string[]
20
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
21
22
23
24
25
    protected $objectClass = [
        'groupOfNames',
        'supannGroupe',
    ];

26
27
28
29
30
    /**
     * Liste des attributs contenant des dates
     *
     * @var string[]
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
31
    protected $dateTimeAttributes = [
32
        'supannGroupeDateFin',
Bertrand Gauthier's avatar
Bertrand Gauthier committed
33
    ];
34
35

    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
36
37
     * Détermine si un groupe est valide ou non, c'est-à-dire si sa date de fin de validité n'est pas antérieure à la
     * date testée
38
39
     *
     * @param DateTime $dateObservation
Bertrand Gauthier's avatar
Bertrand Gauthier committed
40
     * @return bool
41
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
42
    public function isValid(DateTime $dateObservation = null)
43
44
45
    {
        if (empty($dateObservation)) $dateObservation = new DateTime;
        $dateControle = $this->supannGroupeDateFin;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
46

47
48
49
50
        return empty($dateControle) || ($dateControle >= $dateObservation->getTimestamp());
    }

    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
51
52
     * Détermine si un groupe est obsolète ou non, c'est-à-dire si sa date de fin de validité est antérieure à la date
     * testée
53
54
     *
     * @param DateTime $dateObservation
Bertrand Gauthier's avatar
Bertrand Gauthier committed
55
     * @return bool
56
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
57
    public function isObsolete(DateTime $dateObservation = null)
58
    {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
59
        return !$this->isValid();
60
61
62
63
64
65
66
67
    }

    /**
     * Retourne la liste des personnes membres du groupe
     *
     * @param string $orderBy Champ de tri (au besoin)
     * @return People[]
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
68
    public function getPeople($orderBy = null)
69
    {
70
71
        /* @var $peopleService \UnicaenLdap\Service\People */
        $peopleService = $this->getService()->getLdapPeopleService();
Bertrand Gauthier's avatar
Bertrand Gauthier committed
72
73

        /** @var People[] $result */
74
        $result = $peopleService->getAllBy($this->get('member'), 'dn', $orderBy);
Bertrand Gauthier's avatar
Bertrand Gauthier committed
75
76

        return $result;
77
78
    }
}