Commit de924209 authored by David Surville's avatar David Surville
Browse files

[Anomalie] Fonction de récupération de l'"OU" d'un utilisateur erronée

parent f2159ded
Loading
Loading
Loading
Loading
+53 −45
Changes for src/UnicaenLdap/Entity/People.php: 53 added lines, 45 removed lines.
Original line number Diff line number Diff line
@@ -25,30 +25,6 @@ class People extends BasePeople
        'RESP_ADMINISTRATIF' => 'R40',
    ];

    /**
     * Retourne le nom complet de cet individu LDAP.
     *
     * @param boolean $nomEnMajuscule Mettre le nom de famille en majuscules ?
     * @param boolean $avecCivilite Inclure la civilité ?
     * @param boolean $prenomDabord Mettre le prénom avant le nom de famille ?
     * @return string
     */
    public function getNomComplet($nomEnMajuscule = false, $avecCivilite = false, $prenomDabord = false)
    {
        $sn = $this->get('sn');
        $sn = is_array($sn) ? current($sn) : $sn;

        if (!$sn) {
            return '';
        }

        $nom = $nomEnMajuscule ? strtoupper($sn) : $sn;
        $prenom = $this->get('givenname');
        $civilite = $avecCivilite ? ' ' . $this->get('supannCivilite') : null;

        return ($prenomDabord ? $prenom . ' ' . $nom : $nom . ' ' . $prenom) . $civilite;
    }

    /**
     * Détermine si l'individu est actif ou non
     *
@@ -86,7 +62,7 @@ class People extends BasePeople
     */
    public function getOu()
    {
        if ($result = $this->getDn()->get(1)) {
        if ($result = $this->getNode()->getDn()->get(1)) {
            return $result['ou'];
        }

@@ -94,48 +70,80 @@ class People extends BasePeople
    }

    /**
     * Retourne la liste des groupes dont l'utilisateur fait partie
     * Si le groupe n'est plus valide à la date d'observation, alors il n'est pas retourné dans la liste
     * Retourne le nom complet de cet individu LDAP.
     *
     * @param DateTime $dateObservation
     * @param string   $orderBy Champ de tri (au besoin)
     * @return Group[]
     * @param boolean $nomEnMajuscule Mettre le nom de famille en majuscules ?
     * @param boolean $avecCivilite Inclure la civilité ?
     * @param boolean $prenomDabord Mettre le prénom avant le nom de famille ?
     * @return string
     */
    public function getGroups(DateTime $dateObservation = null, $orderBy = null)
    public function getNomComplet($nomEnMajuscule = false, $avecCivilite = false, $prenomDabord = false)
    {
        $groupService = $this->getService()->getLdapGroupService();
        $sn = $this->get('sn');
        $sn = is_array($sn) ? current($sn) : $sn;

        return $groupService->filterValids($groupService->getAllBy($this->get('memberOf'), 'dn', $orderBy), $dateObservation);
        if (!$sn) {
            return '';
        }

        $nom = $nomEnMajuscule ? strtoupper($sn) : $sn;
        $prenom = $this->get('givenname');
        $civilite = $avecCivilite ? ' ' . $this->get('supannCivilite') : null;

        return ($prenomDabord ? $prenom . ' ' . $nom : $nom . ' ' . $prenom) . $civilite;
    }

    /**
     * Détermine si la personne est étudiante
     * Retourne le léocode associé à l'individu
     *
     * @return boolean
     * @return string|null
     */
    public function estEtudiant()
    public function getLeocarteCode()
    {
        return 0 === strpos($this->uid, 'e');
        $attributeValues = $this->preFormat($this->supannRefId);
        $label = $this->getLabel('LEOCODE');

        $value = array_filter($attributeValues, function ($v) use ($label) {
            return preg_match("/^$label(?<identifiant>.+)$/", $v);
        });

        return !empty($value)
            ? str_replace($label, '', array_values($value)[0])
            : null;
    }

    /**
     * Détermine si la personne est un personnel
     * Retourne le code de la léocarte associée à l'individu
     *
     * @return boolean
     * @return string|null
     */
    public function estPersonnel()
    public function getLeocarteCSN()
    {
        return 0 === strpos($this->uid, 'p');
        $attributeValues = $this->preFormat($this->supannRefId);
        $label = $this->getLabel('UNICAEN', 'REVERSECSN');

        $value = array_filter($attributeValues, function ($v) use ($label) {
            return preg_match("/^$label(?<identifiant>.+)$/", $v);
        });

        return !empty($value)
            ? str_replace($label, '', array_values($value)[0])
            : null;
    }

    /**
     * Détermine si la personne est un invité
     * Retourne la liste des groupes dont l'utilisateur fait partie
     * Si le groupe n'est plus valide à la date d'observation, alors il n'est pas retourné dans la liste
     *
     * @return boolean
     * @param DateTime $dateObservation
     * @param string   $orderBy Champ de tri (au besoin)
     * @return Group[]
     */
    public function estInvite()
    public function getGroups(DateTime $dateObservation = null, $orderBy = null)
    {
        return 0 === strpos($this->uid, 'i');
        $groupService = $this->getService()->getLdapGroupService();

        return $groupService->filterValids($groupService->getAllBy($this->get('memberOf'), 'dn', $orderBy), $dateObservation);
    }

    /**