Subversion Repositories eFlore/Archives.herbiers

Rev

Blame | Last modification | View Log | RSS feed

<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1                                                                                      |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Herbier.                                                                        |
// |                                                                                                      |
// | Foobar is free software; you can redistribute it and/or modify                                       |
// | it under the terms of the GNU General Public License as published by                                 |
// | the Free Software Foundation; either version 2 of the License, or                                    |
// | (at your option) any later version.                                                                  |
// |                                                                                                      |
// | Foobar is distributed in the hope that it will be useful,                                            |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
// | GNU General Public License for more details.                                                         |
// |                                                                                                      |
// | You should have received a copy of the GNU General Public License                                    |
// | along with Foobar; if not, write to the Free Software                                                |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: hb_utilisateur.class.php,v 1.1 2005-11-23 10:32:32 jp_milcent Exp $
/**
* Classe H_Utilisateur
*
* Classe permettant de récupérer les données concernant un utilisateur des Herbiers.
*
*@package Herbier
*@subpackage Classes
//Auteur original :
*@author        Jean-Pascal MILCENT <jpm@clapas.org>
//Autres auteurs :
*@author        Aucun
*@copyright     Tela-Botanica 2000-2005
*@version       $Revision: 1.1 $ $Date: 2005-11-23 10:32:32 $
// +------------------------------------------------------------------------------------------------------+
*/

// +------------------------------------------------------------------------------------------------------+
// |                                            ENTETE du PROGRAMME                                       |
// +------------------------------------------------------------------------------------------------------+

// +------------------------------------------------------------------------------------------------------+
// |                                            CORPS du PROGRAMME                                        |
// +------------------------------------------------------------------------------------------------------+
/**
* Classe H_Utilisateur()
*
* Contient des requêtes sur la table servant d'annuaire.
*
* @package herbiers
*/
class H_Utilisateur {
    /** @var integer identifiant de la personne actuellement connectée à l'administration des Herbiers.*/
    var $id;
    /** @var object un objet directement sortie de la base de données via PearD Bcontenant toutes les information sur l'utilisateur.*/
    var $info;
    /** @var bool contient TRUE si la personne à le droit d'accès sinon FALSE.*/
    var $droit_bool;
    /** @var bool contient TRUE si la personne est administratrice sinon FALSE.*/
    var $admin_bool;
    /** @var bool contient TRUE si la personne est coordinatrice sinon FALSE.*/
    var $coord_bool;
    /** @var bool contient TRUE si la personne est rédacteur sinon FALSE.*/
    var $redac_bool;
    /** @var array contient un tableau d'objet organisation appartenant à l'utilisateur.*/
    var $organisation_liste;
    
    /**
    * Constructeur de H_Utilisateur
    *
    * @return void
    * @access public
    */
    function H_Utilisateur($id_utilisateur)
    {
        $this->id = $id_utilisateur;
        $this->info = $this->renseignement($this->id);
        $this->droit_bool = $this->avoirDroit();
        $this->admin_bool = $this->etreAdministrateur();
        $this->coord_bool = $this->etreCoordinateur();
        $this->redac_bool = $this->etreRedacteur();
    }
    /** Méthode getId() - Retourne l'identifiant d'un utilisateur.
    *
    * @return integer l'identifiant d'un utilisateur.
    * @access public
    */
    function getId()
    {
        return $this->id;
    }
    /** Méthode setId() - Remplace l'identifiant de l'utilisateur.
    *
    * @param integer l'identifiant de l'utilisateur.
    * @return void.
    * @access public
    */
    function setId($id)
    {
        $this->id = $id;
    }
    /** Méthode getInfo() - Retourne les info sur un utilisateur.
    *
    * @return object les infos provenant de la table annuaire.
    * @access public
    */
    function getInfo()
    {
        return $this->info;
    }
    /** Méthode getDroit() - Retourne la valeur de l'attribut droit_bool
    *
    * @return bool vrai si la personne à le droit sinon faux.
    * @access public
    */
    function getDroit()
    {
        return $this->droit_bool;
    }
    /** Méthode getAdminBool() - Retourne la valeur de l'attribut admin_bool
    *
    * @return bool vrai si la personne est administrateur sinon faux.
    * @access public
    */
    function getAdminBool()
    {
        return $this->admin_bool;
    }
    /** Méthode getCoordBool() - Retourne la valeur de l'attribut coord_bool
    *
    * @return bool vrai si la personne est coordinatrice sinon faux.
    * @access public
    */
    function getCoordBool()
    {
        return $this->coord_bool;
    }
    /** Méthode getRedacBool() - Retourne la valeur de l'attribut redac_bool
    *
    * @return bool vrai si la personne est rédacteur sinon faux.
    * @access public
    */
    function getRedacBool()
    {
        return $this->redac_bool;
    }
    /** Méthode getOrganisationListe() - Retourne le tableau des organisation de l'utilisateur.
    *
    * @return array le tableau des organisation de l'utilisateur.
    * @access public
    */
    function getOrganisationListe()
    {
        if (is_array($this->organisation_liste)) {
            return $this->organisation_liste;
        } else {
            return array();
        }
    }
    
    /** Méthode renseignement() - Renvoie un objet de type H_Utilisateur
    *
    * Renvoie un objet de type H_Administrateur dont l'identificateur est spécifié en paramètre.
    * L'objet correspond à un administrateur décrit dans la table servant d'annuaire.
    *
    * @param  integer l'identifiant de la table servant d'annuaire.
    * @return object un objet de la classe H_Utilisateur
    * @access public
    */
    function renseignement($id_utilisateur = null)
    {
        if (is_null($id_utilisateur)) {
            $id_utilisateur = $this->getId();
        }
        $requete =  'SELECT * '.
                    'FROM '.HB_BDD_TAB_ANNUAIRE.' '.
                    'WHERE '.HB_BDD_TAB_ANNUAIRE_CHP_ID.' = '.$id_utilisateur;
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        $ligne = mysql_fetch_object($resultat);
        return $ligne;
    }
    
    /** Méthode etreDansAnnuaire() - Retourne vrai si l'utilisateur est dans l'annuaire
    *
    * Renvoie vrai si la personne est présente dans l'annuaire utilisé pour les Herbiers
    * sinon la méthode renvoie faux.
    *
    * @param  string la valeur à rechercher dans une colonne de la table d'annuaire.
    * @param  string la nom de la colonne de la table d'annuaire où chercher la valeur.
    * @return bool vrai si la valeur est trouvée dans la colonne de la table d'annuaire sinon faux.
    * @access public
    */
    function etreDansAnnuaire($valeur, $champs)
    {
        $requete =  'SELECT U_ID '.
                    'FROM '.HB_BDD_TAB_ANNUAIRE.' '.
                    'WHERE '.$champs.' = "'.$valeur.'"';
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        if (mysql_num_rows($resultat) != 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    
    /** Méthode avoirDroit() - Retourne un booléen en fonction des droits de la personne
    *
    * Renvoie vrai si la personne à le droit de se connecter à l'administration des Herbiers
    * sinon la méthode renvoie faux.
    *
    * @param  integer l'identifiant de la personne dans la table servant d'annuaire.
    * @return bool vrai si la personne à le droit sinon faux.
    * @access public
    */
    function avoirDroit($id_utilisateur = null)
    {
        if (is_null($id_utilisateur)) {
            $id_utilisateur = $this->getId();
        }
        $requete =  'SELECT EDP_ID_DROIT '.
                    'FROM '.HB_BDD_NOM.'.EFLORE_DROIT_POSSEDER '.
                    'WHERE EDP_ID_UTILISATEUR = '.$id_utilisateur.' '.
                    'AND EDP_ID_PROJET = 1';
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        if (mysql_num_rows($resultat) != 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    
    /** Méthode etreAdministrateur() - Retourne vrai si l'utilisateur est administrateur
    *
    * Renvoie vrai si la personne à les droits d'administrateur des Herbiers
    * sinon la méthode renvoie faux.
    *
    * @param  integer l'identifiant de la personne dans la table servant d'annuaire.
    * @return bool vrai si la personne est administrateur sinon faux.
    * @access public
    */
    function etreAdministrateur($id_utilisateur = null)
    {
        if (is_null($id_utilisateur)) {
            $id_utilisateur = $this->getId();
        }
        $requete =  'SELECT EDP_ID_DROIT '.
                    'FROM '.HB_BDD_NOM.'.EFLORE_DROIT_POSSEDER '.
                    'WHERE EDP_ID_UTILISATEUR = '.$id_utilisateur.' '.
                    'AND EDP_ID_PROJET = 1 '.
                    'AND EDP_ID_DROIT = 1';
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        if (mysql_num_rows($resultat) != 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    
    /** Méthode etreCoordinateur() - Retourne vrai si l'utilisateur est coordinateur
    *
    * Renvoie vrai si la personne à les droits de coordinateur des Herbiers
    * sinon la méthode renvoie faux.
    *
    * @param  integer l'identifiant de la personne dans la table servant d'annuaire.
    * @return bool vrai si la personne est coordinateur sinon faux.
    * @access public
    */
    function etreCoordinateur($id_utilisateur = null)
    {
        if (is_null($id_utilisateur)) {
            $id_utilisateur = $this->getId();
        }
        $requete =  'SELECT EDP_ID_DROIT '.
                    'FROM '.HB_BDD_NOM.'.EFLORE_DROIT_POSSEDER '.
                    'WHERE EDP_ID_UTILISATEUR = '.$id_utilisateur.' '.
                    'AND EDP_ID_PROJET = 1 '.
                    'AND EDP_ID_DROIT = 2';
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        if (mysql_num_rows($resultat) != 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    
    /** Méthode etreRedacteur() - Retourne vrai si l'utilisateur est rédacteur.
    *
    * Renvoie vrai si la personne à les droits de rédacteur des Herbiers
    * sinon la méthode renvoie faux.
    *
    * @param  integer l'identifiant de la personne dans la table servant d'annuaire.
    * @return bool vrai si la personne est rédacteur sinon faux.
    * @access public
    */
    function etreRedacteur($id_utilisateur = null)
    {
        if (is_null($id_utilisateur)) {
            $id_utilisateur = $this->getId();
        }
        $requete =  'SELECT EDP_ID_DROIT '.
                    'FROM '.HB_BDD_NOM.'.EFLORE_DROIT_POSSEDER '.
                    'WHERE EDP_ID_UTILISATEUR = '.$id_utilisateur.' '.
                    'AND EDP_ID_PROJET = 1 '.
                    'AND EDP_ID_DROIT = 3';
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        if (mysql_num_rows($resultat) != 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    /** Méthode donnerTableauUtilisateurs() - Retourne le tableau des utilisateurs avec droit.
    *
    * Renvoie un tableau contenant les id de chaque utilisateur de l'administration des Herbiers.
    *
    * @return array le tableau contenant les id de chaque utilisateur.
    * @access public
    */
    function donnerTableauUtilisateurs()
    {
        $tab_utilisateurs = array();
        $requete =  'SELECT U_ID '.
                    'FROM '.HB_BDD_NOM_ANNUAIRE.'.annuaire_tela, '.HB_BDD_NOM.'.EFLORE_DROIT_POSSEDER '.
                    'WHERE U_ID = EDP_ID_UTILISATEUR';
        $resultat = mysql_query($requete) or die (BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        while ($ligne = mysql_fetch_assoc($resultat)) {
            array_push($tab_utilisateurs, $ligne['U_ID']);
        }
        return $tab_utilisateurs;
    }
    
    /**
    *  Méthode recupererOrganisationListe() - Remplir le tableau des organisations de l'utilisateur.
    *
    *  Initialise l'attribut organisation_utilisateur.
    *
    * @param H_Utilisateur l'objet représentant l'utilisateur actuel des Herbiers.
    * @return bool retourne TRUE si la talbeau a été rempli, FALSE si il est vide.
    * @access public
    */
    function recupererOrganisationListe(&$un_utilisateur)
    {
        $requete =  'SELECT HERBIERS_ORGANISATION.ID_ORG, HERBIERS_ORGANISATION.INSTITUTION_NAME, HERBIERS_ORGANISATION.TOWN '.
                    'FROM HERBIERS_ORGANISATION ';
        if (!$un_utilisateur->getAdminBool()) {
            $requete .= ', HERBIERS_ADMINISTRER '.
                        'WHERE HERBIERS_ADMINISTRER.HA_ID_ANNUAIRE = '.$un_utilisateur->getId().' '.
                        'AND HERBIERS_ADMINISTRER.HA_ID_ORG = HERBIERS_ORGANISATION.ID_ORG ';
        }
        $requete .= 'ORDER BY HERBIERS_ORGANISATION.TOWN';
        $resultat = mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
        if (mysql_num_rows($resultat) == 0) {
            return FALSE;
        } else {
            $this->organisation_liste = array();
            while ($ligne = mysql_fetch_object($resultat)) {
                array_push($this->organisation_liste, $ligne);
            }
            return TRUE;
        }
    }
    
    /**
    *  Méthode insererOrganisationListe() - Attribuer à un utilisateur une organisation.
    *
    * Permet d'insérer dans la base de données une ligne faisant correspondre une organisation à 
    * un utilisateur.
    *
    * @param H_organisation l'objet représentant l'organisation de l'utilisateur.
    * return void
    * @access public
    */
    function insererOrganisationListe(&$une_organisation)
    {
        $requete =  'INSERT INTO HERBIERS_ADMINISTRER '.
                    'SET HA_ID_ANNUAIRE = '.$this->getId().', '.
                    'HA_ID_ORG = '.$une_organisation->getId();
        mysql_query($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, mysql_error(), $requete));
    }
}


// +------------------------------------------------------------------------------------------------------+
// |                                            PIED du PROGRAMME                                         |
// +------------------------------------------------------------------------------------------------------+


/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1  2005/04/06 13:29:17  jpm
* Ajout et modifications des objets représentant la base de données Herbier.
*
* Revision 1.1  2005/03/08 14:13:21  jpm
* Ajout des classes d'accès à la base de données.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>