Rev 250 | Rev 298 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*vim: set expandtab tabstop=4 shiftwidth=4: */// +------------------------------------------------------------------------------------------------------+// | PHP version 4.1 |// +------------------------------------------------------------------------------------------------------+// | 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: projet.class.php,v 1.11 2008-02-08 09:05:21 alexandre_tb Exp $/*** Application projet** La classe projet**@package projet//Auteur original :*@author Alexandre Granier <alexandre@tela-botanica.org>//Autres auteurs :*@author Aucun*@copyright Tela-Botanica 2000-2004*@version $Revision: 1.11 $// +------------------------------------------------------------------------------------------------------+*/// +------------------------------------------------------------------------------------------------------+// | ENTETE du PROGRAMME |// +------------------------------------------------------------------------------------------------------+include_once PROJET_CHEMIN_CLASSES.'document.class.php' ;include_once PROJET_CHEMIN_CLASSES.'liste_discussion.class.php' ;/* Permet la récupération d'un nouvel identifiant d'une table.*/require_once PROJET_CHEMIN_BIBLIOTHEQUE_API.'sql/SQL_manipulation.fonct.php';include_once 'Mail.php' ;// +------------------------------------------------------------------------------------------------------+// | ENTETE du PROGRAMME |// +------------------------------------------------------------------------------------------------------+/*** class projet**/class projet{/** Aggregations: *//*** Le tableau d'objet document associés au projet**/var $_documents_associes = array();var $_listes_associes = array();/** Compositions: *//*** Attributes: ***//*** L'identifiant du projet.* @access private*/var $_id_projet;/*** Le titre du projet, tel que dans la base de donnée.* @access private*/var $_titre;/*** La description du projet, tel que dans la base.* @access private*/var $_description;/*** L'URL d'un site sur le projet. Facultatif.* @access private*/var $_espace_internet;/*** Le nom du wikini associé au projet, avec la syntaxe wikini. Vide par défaut.* @access private*/var $_nom_wikini;/*** Date de création du projet. A priori ne varie pas dans le temps.* @access private*/var $_date_creation;/*** Le chemin relatif vers le répertoire contenant les wikinis.* @access private*/var $_chemin_wikini;/*** Une connexion vers la base de donnée.* @access private*/var $_db;/*** Contient le nom du répertoire du projet tel que sur le disque.* @access private*/var $_nom_repertoire;/*** Le chemin jusqu'au répertoire où seront stockés les fichiers.* @access private*/var $_chemin_repertoire;/*** Vaut vrai si le projet est un projet racine et s'il est le seul.* @access private*/var $_est_racine;/*** Le résumé du projet* @access private*/var $_resume;/*** Contient le numéro du type du projet* @access private*/var $_type;/*** Indique si l'inscription au projet est moderes* @access private*/var $_isModere;/*** Indique si le projet a des documents* @access private*/var $_avoirDocument;/**** PHP5* @return projet* @access public*/function __construct( &$dbObject, $id_projet = ""){$this->projet($dbObject, $id_projet);} // end of member function __construct/***** @param DB dbObject Un objet PEAR:DB* @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une* première requête pour les infos de bases comme le titre, le description etc.* @return projet* @access public*/function projet( &$dbObject, $id_projet = ""){$this->_db = $dbObject ;if ($id_projet != "") {$requete = "select * from projet where p_id=$id_projet" ;$resultat = $this->_db->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;// Affectations dans les propriétés$this->_id_projet = $ligne->p_id ;$this->_titre = $ligne->p_titre ;$this->_description = $ligne->p_description ;$this->_espace_internet = $ligne->p_espace_internet ;$this->_date_creation = $ligne->p_date_creation ;$this->_nom_wikini = $ligne->p_wikini ;$this->_resume = $ligne->p_resume;$this->_type = $ligne->p_type ;// On récupère le nom du répertoire$this->_nom_repertoire = $ligne->p_nom_repertoire ;$this->_isModere = $ligne->p_modere;$this->_avoirDocument = $ligne->p_avoir_document;// on regarde si on a à faire au projet racineif (PROJET_UTILISE_HIERARCHIE) {$requete = 'select ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;}if (!$resultat->numRows()) {$this->_est_racine = true ;} else {$this->_est_racine = false ;}}}} // end of member function projet/***** @param DB dbObject Un objet PEAR:DB* @param int id_projet On passe un identifiant de projet au constructeur.* @return bool* @access public*/function projetExiste( &$dbObject, $id_projet){if ($id_projet != "") {$requete = "select * from projet where p_id=$id_projet" ;$resultat = $dbObject->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}if ($resultat->numRows() != 0) {return true ;}}} // end of member function projet/***** @param int id_projet* @return string* @access public*/function getTitre( $id_projet = "" ){return $this->_titre ;} // end of member function getTitre/***** @return string* @access public*/function getResume( ){return $this->_resume ;} // end of member function getResume/*** Renvoie l'identifiant du projet courant.** @return int* @access public*/function getId( ){return $this->_id_projet ;} // end of member function getId/***** @return string* @access public*/function getDescription( ){return $this->_description;} // end of member function getDescription/***** @return string* @access public*/function getEspaceInternet( ){return $this->_espace_internet;} // end of member function getEspaceInternet/*** Charge dans l'objet projet, les listes de discussion* ['nom_liste']* ['domaine']* ['adresse']** @return boolean true en cas de succès* @access public*/function getListesAssociees( ){// On rajoute un test pour éviter l'appel SQL si il a déjà été fait une foisif (count($this->_listes_associes) > 0) return ;$requete = "select pl_id_liste from projet_lien_liste where pl_id_projet=".$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;}$retour = array() ;if ($resultat->numRows()) {$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;$this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;}} // end of member function getListesAssociees/*** Renvoie vrai si le projet a au moins une liste** @return bool* @access public*/function avoirListe( ){$this->getListesAssociees() ;if (count($this->_listes_associes)) {return true ;}return false ;}/*** Renvoie vrai si le projet a au moins un document, fichier ou repertoire** Mis en place pour des raisons de performances avant la methode getListesDocuments etait utilisee** @return bool* @access public*/function avoirDocument( ){return $this->_avoirDocument;}/*** Permet de fixer la colonne p_avoir_document à 1** Mis en place pour des raisons de performances avant la methode getListesDocuments etait utilisee** @param bool* @return mixed true si la requete fonctionne* @access public*/function setAvoirDocument($bool){$val = 0 ;if ($bool) $val = 1;$requete = 'update projet set p_avoir_document='.$val.' where p_id='.$this->_id_projet;$resultat = $this->_db->query ($requete) ;if (DB::isError($resultat)) {echo ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}return true;}/*** Renvoie la liste des documents associes sous forme d'un tableau, avec les* informations afférentes. 0 => "nom (cliquable)""Taille""Date* de creation" "Prorietaire" "Visibilite" "Action* (cliquable)"** @param visibilite visibilite Si visibilite est prive, tous les fichiers sont renvoyes ainsi qu'une entree* pour indiquer la visibilite du document.* @return Array* @access public*/function getListesDocuments( $chemin, $chemin_icones = "icones/", $id_repertoire = '' ){// On realise une requete sur projet_documents avec une jointure sur l'annuaire// et sur gen_type_de_fichier pour envoyer un resultat complet.// On exclue les fichiers racines cad pd_pere is null$requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet ;if ($id_repertoire != '') $requete .= ' and pd_pere='.$id_repertoire;if ($id_repertoire == 0) $requete .= ' and pd_pere=0';$requete .= ' order by pd_nom' ;$resultat = $this->_db->query ($requete) ;if (DB::isError($resultat)) {return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}$tableau_document = array() ;// Un compteur$i = 0 ;while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;}return $tableau_document ;}/*** Renvoie un tableau avec tous les repertoires d'un projet, imbrique. ['rep1'],* ['rep2'] => array (['rep21'], ['rep22']), etc .** @return Array* @access public*/function getListeRepertoireHierarchisee( ){// On ne prend que les repertoires$requete = "select pd_id, pd_pere, pd_nom from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ;$resultat = $this->_db->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}$tableau_document = array() ;/*while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));}*/$tableau = array();$tab = array();while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {array_push ($tableau, array ('id' => $ligne->pd_id,'id_pere' => $ligne->pd_pere,'fils' => array(),'label' => $ligne->pd_nom));}// la $tableau reste un tableau de valeur a plat$i = 0;foreach ($tableau as $noeud) {// On teste si le noeud est racine si oui on l ajoute a l arbre sinon on ne l ajoute pasif ($noeud['id_pere'] == 0) {$tab[$i] = $noeud;$this->construireArbre($tab[$i], $tableau) ;}$i++;}return $tab;} // end of member function getListeRepertoireHierarchiseefunction construireArbre(&$noeud, $tableau) {$j = 0;foreach ($tableau as $element) {// pour chaque element on testeif ($element['id_pere'] == $noeud['id']) {$noeud['fils'][$j]= $element ;$this->construireArbre($noeud['fils'][$j],$tableau);}$j++;}}/*** Renvoie un tableau comprenant tous les objets projet de la base.** @return Array* @static* @access public*/function getTousLesProjets(&$objetDB, $exclu = ''){$sql = '';if (is_object($this) && isset ($this->_projet_exclu) && count($this->_projet_exclu)) {$sql = 'where p_id not in (';foreach ($this->_projet_exclu as $valeur) {$sql .= $valeur.',' ;}$sql[count($sql)-1] = ')';}$requete = 'select p_id from projet '.$sql.' order by p_titre' ;$resultat = $objetDB->query ($requete) ;if (DB::isError($resultat)) {echo ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}$tableau_resultat = array() ;while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;}return $tableau_resultat ;} // end of member function getTousLesProjets/*** Renvoie un tableau comprenant les objets projet de la base du type $type.** @return Array* @static* @access public*/function getProjetDuType($type, &$objetDB){$requete = "select p_id from projet where p_type=$type order by p_titre" ;$resultat = $objetDB->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}$tableau_resultat = array() ;while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;}return $tableau_resultat ;} // end of member function getTousLesProjets/*** Renvoie un le projet racine.** @return projet* @static* @access public*/function getProjetRacine(&$objetDB){$requete = "select p_id from projet where p_id not in (select ph_id_projet_fils from projet_hierarchie)" ;$resultat = $objetDB->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}if ($resultat->numRows() == 1) {$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;return new projet($objetDB, $ligne->p_id) ;}$tableau_resultat = array() ;while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;}return $tableau_resultat ;} // end of member function getTousLesProjets/*** Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers.** @return void* @access public*/function __destruct( ){} // end of member function __destruct/*** Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les* éléments liés.** @return void* @access public*/function supprimer( ){} // end of member function supprimer/*** Permet d'enregistrer une ligne dans la table concernée.** @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments* du formulaire.* @return int* @access public*/function enregistrerSQL( $tableau_de_valeur ){$nom_repertoire = projet::genereNomRepertoire($tableau_de_valeur['projet_titre'], $this->_db) ;if (!$this->_creationRepertoire ($nom_repertoire)) {echo 'Impossible de crée un répertoire'.$nom_repertoire ;return false ;}// Traitement du typeif (!PROJET_UTILISE_TYPE) {$tableau_de_valeur['projet_type'] = 0 ;}$id = SQL_obtenirNouveauId($this->_db, 'projet', 'p_id') ;$requete = 'insert into projet set p_id='.$id ;if (!isset($tableau_de_valeur['projet_wikini'])) {$tableau_de_valeur['projet_wikini']='';}$requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].'", p_type='.$tableau_de_valeur['projet_type'].', p_modere="'.$tableau_de_valeur['projet_moderation'].'"' ;$resultat = $this->_db->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}// On affecte à l'objet projet son identifiant$this->_id_projet = $id ;//insertion dans projet_hierarchieif (PROJET_UTILISE_HIERARCHIE) {$requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].', ph_id_projet_fils='.$id ;$resultat = $this->_db->query ($requete) ;}return true ;} // end of member function enregistrerSQL/*** Permet de mettre à jour une ligne dans la table concernée.** @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments* du formulaire.* @return int* @access public*/function majSQL( $tableau_de_valeur ){// Traitement du typeif (!PROJET_UTILISE_TYPE) {$tableau_de_valeur['projet_type'] = 0 ;}$requete = 'update projet set ';$requete .= 'p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'"'.', p_resume="'.$tableau_de_valeur['projet_resume'].'", p_type='.$tableau_de_valeur['projet_type'].', p_modere='.$tableau_de_valeur['projet_moderation'].' where p_id="'.$this->_id_projet.'"' ;$resultat = $this->_db->query ($requete) ;if (DB::isError($resultat)) {die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;}if (PROJET_UTILISE_HIERARCHIE) {// suppression dans projet_hierarchie$requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;//insertion dans projet_hierarchie$requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].', ph_id_projet_fils='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;}return true ;} // end of member function enregistrerSQL/*** Met à jour dans la base de donnée le champs p_nom_wikini** @param int nom_wikini Le nouveau nom wikini* @return bool* @access public*/function majNomWikini( $nom_wikini ){$requete = 'update projet set p_wikini="'.$nom_wikini.'" where p_id="'.$this->_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 majNomWikini/***** @param string code_sql* @return bool* @access public*/function suppressionSQL(){$msg = '' ;// Supression du répertoire du projetif (!$this->_suppression_repertoire()) {$msg = 'La suppression du répertoire n\'a pas fonctionn°' ;}// A ajouter la suppression des documents associés// La suppression des évènements associés// Le projet lui-même$requete = "delete from projet where p_id=".$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (PROJET_UTILISE_HIERARCHIE) {$requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;$resultat = $this->_db->query ($requete) ;}$requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;$resultat = $this->_db->query ($requete) ;return $msg ;} // end of member function suppressionSQL/*** Supprime le répertoire associé au projet (le répertoire doit être vide).** @return void* @access private*/function _suppression_repertoire( ){return rmdir ($this->_chemin_repertoire.$this->_nom_repertoire) ;} // end of member function _suppression_repertoire/*** Permet de créer le répertoire associé au projet.** @param string nom_repertoire Le nom du répertoire à créer.* @return boolean* @access private*/function _creationRepertoire( $nom_repertoire ){return mkdir ($this->_chemin_repertoire.$nom_repertoire) ;} // end of member function _creationRepertoire/*** Permet d'indiquer où seront stockés les fichiers.** @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers.* @return void* @access public*/function setCheminRepertoire( $cheminRepertoire ){$this->_chemin_repertoire = $cheminRepertoire ;} // end of member function setCheminRepertoire/*** Génère un nom de répertoire à partir de la première lettre de la chaine passé en* paramètre et de l'identifiant du dernier projet.** @param string chaine Une chaine à partir de laquelle sera générer le nom du répertoire.* @param DB objetDB un objet PEAR::DB* @return string* @static* @access public*/function genereNomRepertoire( $chaine, &$objetDB ){$requete = "select p_id from projet order by p_id desc limit 0,1" ;$resultat = $objetDB->query ($requete) ;if (DB::isError ($resultat)) {die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;}if ($resultat->numRows() > 0) {$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;$nom = strtoupper(substr($chaine, 0, 1)) ;$nom .= $ligne->p_id + 1 ;}else {$nom = strtoupper(substr($chaine, 0, 1)) ;$nom .= 1 ;}return $nom ;} // end of member function genereNomRepertoire/*** Permet de récupérer le nom du répertoire d'un projet.** @return string* @access public*/function getNomRepertoire( ){return $this->_nom_repertoire ;} // end of member function getNomRepertoire/*** Ajoute une liste à un projet* Effectue une insertion dans projet_lien_liste** @param liste_discussion liste Une instance de la classe liste_discussion* @return void* @access public*/function ajouterListe( &$liste ){$requete = "insert into projet_lien_liste set pl_id_liste=".$liste->getId().', pl_id_projet='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;}} // end of member function ajouterListe/*** Supprime la liste de discussion associée au projet** @return void* @access public*/function supprimerListe(&$liste){$requete = 'delete from projet_lien_liste where pl_id_liste='.$liste->getId() ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;}$requete = 'delete from projet_liste where pl_id_liste='.$liste->getId() ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;}} // end of member function supprimerListe/*** Renvoie vrai si le projet est racine.** @return bool* @access public*/function isRacine( ){return $this->_est_racine ;} // end of member function isRacine/*** Renvoie le nombre d'inscrits au projet. Effectue une requete dans la table* projet_statut_utilisateurs** @return int* @access public*/function getNombreInscrits( ){$requete = 'select count(psu_id_utilisateur) as nbre from projet_statut_utilisateurs where psu_id_projet='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;}$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;return $ligne->nbre ;} // end of member function getNombreInscrits/*** Renvoie un tableau contenant les identifiants des fils du projet courant.** @return Array* @access public*/function getHierarchie( ){$requete = 'select ph_id_projet_fils from projet_hierarchie where ph_id_projet_pere='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;}$tableau_resultat = array() ;while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;}return $tableau_resultat ;} // end of member function getHierarchie/*** Renvoie l'identifiant du pere du projet courrant.** @return int* @access public*/function getIdPere(){$requete = 'select ph_id_projet_pere from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;$resultat = $this->_db->query ($requete) ;if (DB::isError ($resultat)) {die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;}$tableau_resultat = array() ;$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;return $ligne->ph_id_projet_pere ;} // end of member function getIdPere()/*** Renvoie le nom Wiki du wikini associé au projet.** @return string* @access public*/function getWikini( ){return $this->_nom_wikini ;} // end of member function getWikini/*** Renvoie le type du projet, ou zéro si le projet n'a pas de type.** @return int* @access public*/function getType( ){return $this->_type ;} // end of member function getType/*** Renvoie 1 si les inscriptions au projet sont modérées.** @return int* @access public*/function isModere( ){return $this->_isModere ;} // end of member function getType/*** initAttributes sets all projet attributes to its default value make* sure to call this method within your class constructor*/function initAttributes( ){$this->chemin_wikini = "projet/wikini/";}} // end of projet?>