New file |
0,0 → 1,363 |
<?php |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library 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.1 of the License, or (at your option) any later version. | |
// | | |
// | This library 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 this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: participe.class.php,v 1.4 2007-04-19 09:30:28 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe partiicpe assure la jointure entre projet et Auth |
* Elle se base sur la table projet_statut_utilisateur |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.4 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
|
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
|
|
/** |
* class participe |
* |
*/ |
class participe |
{ |
/*** Attributes: ***/ |
|
/** |
* Date d'inscription au projet de l'utilisateur. |
* @access private |
*/ |
var $_date_inscription; |
/** |
* Statut de l'utilisateur, un entier. |
* @access private |
*/ |
var $_statut; |
/** |
* Connexion à la base de donnée. |
* @access private |
*/ |
var $_db; |
|
/** |
* Constructeur. Nécessite un objet DB valide connecté à la base contenant les |
* tables projets. |
* |
* @param DB objetDB Un objet PEAR:DB valide. |
* @return void |
* @access public |
*/ |
function participe( &$objetDB ) |
{ |
$this->_db = $objetDB ; |
} // end of member function participe |
|
/** |
* Renvoie la liste des inscrit à un projet avec leur statut. |
* |
* @return Array |
* @access public |
*/ |
function getInscrits($id_projet, $droits ) |
{ |
$tableau_resultat = array() ; |
|
$requete = 'select psu_id_utilisateur,'.PROJET_CHAMPS_NOM.','.PROJET_CHAMPS_PRENOM.',' ; |
$requete .= PROJET_CHAMPS_MAIL.', ' ; |
$requete .= 'psu_date_inscription, ps_id_statut '. |
' from projet_statut_utilisateurs, projet_statut,'.PROJET_ANNUAIRE. |
' where psu_id_projet='.$id_projet.' and psu_id_utilisateur='.PROJET_CHAMPS_ID. |
' and psu_id_statut=ps_id_statut order by ps_id_statut,'.PROJET_CHAMPS_NOM; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ORDERED)) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getInscrits |
|
/** |
* Renvoie un tableau contenant la liste des identifiants des projets et des statuts |
* d'un inscrit. 0 => ['psu_id_utilisateur'] ['psu_id_statut'] 1 => ... |
* |
* @param int id_utilisateur Un identifiant d'utilisateur pour le champs |
* projet_statut_utilisateurs:psu_id_utilisateur |
* @return Array |
* @access public |
*/ |
function getIdProjetsStatuts( $id_utilisateur ) |
{ |
$tableau_resultat = array() ; |
$requete = "select psu_id_utilisateur, psu_id_statut from projet_statut_utilisateurs". |
" where psu_id_utilisateur=".$id_utilisateur ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getIdProjetsStatuts |
|
|
/** |
* Renvoie un tableau à 2 dimensions avec les informations sur l'inscription aux |
* différents projets d'un utilisateur. 0 => ['p_titre'] Le titre du projet |
* ['ps_label'] Le statut de l'utilisateur 1 => .... (autant que de |
* projets) |
* |
* @param int id_utilisateur L'identifiant d'un utilisateur. |
* @return Array |
* @access public |
*/ |
function getInformationsUtilisateurs( $id_utilisateur ) |
{ |
$tableau_resultat = array() ; |
$requete = "select p_titre, ps_statut_nom, psu_id_statut, psu_id_projet from projet_statut_utilisateurs, projet, projet_statut". |
" where psu_id_utilisateur=".$id_utilisateur. |
" and psu_id_projet = p_id and psu_id_statut = ps_id_statut" ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow()) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getInformationsUtilisateurs |
|
|
/** |
* Renvoie le statut du projet passé en paramètre. |
* |
* @param int id_utilisateur |
* @param int id_projet |
* @param int dbObject |
* @return int |
* @static |
* @access public |
*/ |
function getStatutSurProjetCourant( $id_utilisateur, $id_projet, &$dbObject ) |
{ |
$requete = 'select psu_id_statut from projet_statut_utilisateurs'. |
' where psu_id_utilisateur="'.$id_utilisateur.'" and psu_id_projet ='.$id_projet ; |
$resultat = $dbObject->query ($requete) ; |
if (DB::isError ($resultat)) { |
echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
if (!$resultat->numRows()) { |
return 4 ; // Le statut ne participe pas |
} |
return $ligne->psu_id_statut ; |
} // end of member function getStatutSurProjetCourant |
|
/** |
* Réalise une requête dans projet_statut_utilisateurs et renvoie true si l'utilisateur |
* est administrateur de l'application projet. |
* |
* @param int id_utilisateur L'identifiant d'un utilisateur. |
* @param DB objetDB Un objet PEAR::DB |
* @return bool |
* @access public |
*/ |
function isAdministrateur( $id_utilisateur, $objetDB = "" ) |
{ |
// La table projet_statut_utilisateurs possède une entré avec psu_id_projet = 0 |
// pour indiquer un administrateur |
$requete = "select psu_id_statut from projet_statut_utilisateurs where psu_id_utilisateur=$id_utilisateur". |
" and psu_id_projet=0" ; |
|
if (is_object ($objetDB)) { |
$resultat = $objetDB->query ($requete) ; |
} else { |
$resultat = $this->_db->query ($requete) ; |
} |
if ($resultat->numRows () != 0) { |
return true; |
} |
return false ; |
} // end of member function isAdministrateur |
|
/** |
* Met à jour le statut d'un utilisateur sur un projet |
* |
* @param int id_statut L'identifiant du statut à ajouter ou mettre à jour |
* @param int id_utilisateur Identifiant de l'utilisateur |
* @param int id_projet Identifiant du projet |
* @return bool |
* @access public |
*/ |
function setStatut( $id_statut, $id_utilisateur, $id_projet ) |
{ |
$requete = 'update projet_statut_utilisateurs set psu_id_statut='.$id_statut. |
' where psu_id_utilisateur='.$id_utilisateur.' and psu_id_projet='.$id_projet; |
|
if (participe::getStatutSurProjetCourant($id_utilisateur, $id_projet, $this->_db) == 4) { |
$requete = 'insert into projet_statut_utilisateurs set psu_id_statut='.$id_statut. |
', psu_id_utilisateur='.$id_utilisateur.',psu_id_projet='.$id_projet. |
', psu_date_inscription=NOW()'; |
} |
if ($id_statut == 4) { // Si le statut est ne participe pas, on supprime l'inscrit |
$requete = 'delete from projet_statut_utilisateurs where psu_id_utilisateur='.$id_utilisateur.' and psu_id_projet='.$id_projet ; |
} |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
return true ; |
} // end of member function setStatut |
|
/** |
* Renvoie vrai si l'utilisateur est coordinateur, faux dans les autres cas |
* |
* @param int id_utilisateur L'identifiant d'un utilisateur |
* @param DB objetDB Optionnel, nécessaire si on appelle cette méthode statiquement |
* @return bool |
* @static |
* @access public |
*/ |
function isCoordinateur( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
$statut = $this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) ; |
if ($statut == 1) { |
return true; |
} |
return false ; |
} // end of member function isCoordinateur |
|
/** |
* Renvoie la liste des projets auquels l'utilisateur passé en paramètre ne |
* participe pas. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur. |
* @return Array |
* @access public |
*/ |
function getProjetsNonParticipant( $id_utilisateur ) |
{ |
$tableau_resultat = array() ; |
$requete = 'select p_id from projet'. |
' where p_id not in (select psu_id_projet from projet_statut_utilisateurs where psu_id_utilisateur="'.$id_utilisateur.'")' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, new projet ($this->_db, $ligne->p_id)) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getProjetsNonParticipant |
|
/** |
* Renvoie true si l'utilisateur passé en paramètre est observateur du projet passé |
* en paramètre. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur |
* @param int id_projet L'identifiant du projet |
* @return bool |
* @access public |
*/ |
function isObservateur( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 3) { |
return true; |
} |
return false ; |
} // end of member function isObservateur |
|
/** |
* Renvoie true si l'utilisateur passé en paramètre est contributeur du projet passé |
* en paramètre. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur |
* @param int id_projet L'identifiant du projet |
* @return bool |
* @access public |
*/ |
function isContributeur( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 4) return false; |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 2) { |
return true; |
} |
return false ; |
} // end of member function isObservateur |
|
/** |
* Renvoie true si l'utilisateur passé en paramètre est contributeur du projet passé |
* en paramètre. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur |
* @param int id_projet L'identifiant du projet |
* @return bool |
* @access public |
*/ |
function isEnAttente( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 3) { |
return true; |
} |
return false ; |
} // end of member function isObservateur |
|
/** |
* Renvoie les infos sur les coordinateurs d'un projet |
* |
* @param int id_projet L'identifiant du projet |
* @return array Un tableau contenant les infos concernants les coordinateurs du projet |
* @access public |
*/ |
function getCoordinateurs($id_projet) |
{ |
$tableau_resultat = array() ; |
|
$requete = 'select psu_id_utilisateur,'.PROJET_CHAMPS_NOM.','.PROJET_CHAMPS_PRENOM.',' ; |
$requete .= PROJET_CHAMPS_MAIL.', ' ; |
$requete .= 'psu_date_inscription, ps_id_statut '. |
' from projet_statut_utilisateurs, projet_statut,'.PROJET_ANNUAIRE. |
' where psu_id_projet='.$id_projet.' and psu_id_utilisateur='.PROJET_CHAMPS_ID. |
' and psu_id_statut=ps_id_statut and psu_id_statut=1 order by ps_id_statut,'.PROJET_CHAMPS_NOM; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ORDERED)) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getCoordinateurs |
} // end of participe |
?> |