19,7 → 19,7 |
// | 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 $ |
// CVS : $Id: projet.class.php,v 1.12 2008-05-21 14:35:26 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.11 $ |
*@version $Revision: 1.12 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
155,8 → 155,12 |
* @access private |
*/ |
var $_avoirDocument; |
|
|
/** |
* tableau contenant les themes associes au projet |
*/ |
var $_themes = array(); |
/** |
* |
* PHP5 |
* @return projet |
173,7 → 177,7 |
* |
* @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. |
* premiere requete pour les infos de bases comme le titre, le description etc. |
* @return projet |
* @access public |
*/ |
188,7 → 192,7 |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
|
// Affectations dans les propriétés |
// Affectations dans les proprietes |
$this->_id_projet = $ligne->p_id ; |
$this->_titre = $ligne->p_titre ; |
$this->_description = $ligne->p_description ; |
197,16 → 201,16 |
$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 |
// On recupere le nom du repertoire |
$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 racine |
// on regarde si on a a faire au projet racine |
if (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()) ; |
return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
if (!$resultat->numRows()) { |
$this->_est_racine = true ; |
214,6 → 218,21 |
$this->_est_racine = false ; |
} |
} |
|
/** Recuperation des themes */ |
$requete_theme = 'select pat_id_theme, pt_label_theme from projet_avoir_theme, projet_theme'. |
' where pat_id_projet='.$this->_id_projet.' and pat_id_theme=pt_id_theme'; |
$resultat_theme = $GLOBALS['projet_db']->query ($requete_theme); |
if (DB::isError($resultat_theme)) { |
return ("Echec de la requete : $requete_theme<br />".$resultat_theme->getMessage()) ; |
} |
if ($resultat_theme->numRows() != 0) { |
|
while ($ligne_theme = $resultat_theme->fetchRow(DB_FETCHMODE_OBJECT)) { |
$this->_themes[$ligne_theme->pat_id_theme] = $ligne_theme->pt_label_theme; |
} |
|
} |
} |
} // end of member function projet |
|
306,12 → 325,12 |
*/ |
function getListesAssociees( ) |
{ |
// On rajoute un test pour éviter l'appel SQL si il a déjà été fait une fois |
// On rajoute un test pour eviter l'appel SQL si il a deja ete fait une fois |
if (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()) ; |
return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$retour = array() ; |
if ($resultat->numRows()) { |
350,7 → 369,7 |
} |
|
/** |
* Permet de fixer la colonne p_avoir_document à 1 |
* Permet de fixer la colonne p_avoir_document a 1 |
* |
* Mis en place pour des raisons de performances avant la methode getListesDocuments etait utilisee |
* |
372,7 → 391,7 |
|
/** |
* Renvoie la liste des documents associes sous forme d'un tableau, avec les |
* informations afférentes. 0 => "nom (cliquable)" |
* informations afferentes. 0 => "nom (cliquable)" |
"Taille" |
"Date |
* de creation" "Prorietaire" "Visibilite" "Action |
383,7 → 402,7 |
* @return Array |
* @access public |
*/ |
function getListesDocuments( $chemin, $chemin_icones = "icones/", $id_repertoire = '' ) |
function getListesDocuments( $chemin, $chemin_icones = "icones/", $id_repertoire = '', $date = '' ) |
{ |
// On realise une requete sur projet_documents avec une jointure sur l'annuaire |
// et sur gen_type_de_fichier pour envoyer un resultat complet. |
391,6 → 410,7 |
$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'; |
if ($date != '') $requete .= ' and pd_date_de_mise_a_jour > date_sub (NOW(), interval 1 week)'; |
$requete .= ' order by pd_nom' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
419,7 → 439,7 |
$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()) ; |
return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_document = array() ; |
/* |
542,7 → 562,7 |
} // end of member function getTousLesProjets |
|
/** |
* Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers. |
* Desctructeur de la classe. Libere la memoire, ferme les connexions et fichiers. |
* |
* @return void |
* @access public |
554,7 → 574,7 |
|
/** |
* Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les |
* éléments liés. |
* elements lies. |
* |
* @return void |
* @access public |
565,9 → 585,9 |
} // end of member function supprimer |
|
/** |
* Permet d'enregistrer une ligne dans la table concernée. |
* Permet d'enregistrer une ligne dans la table concernee. |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* @param Array tableau_de_valeur Le tableau de valeur a inserer dans la base avec pour cle les noms des elements |
* du formulaire. |
* @return int |
* @access public |
576,7 → 596,7 |
{ |
$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 ; |
echo 'Impossible de crée un répertoire'.$nom_repertoire ; |
return false ; |
} |
// Traitement du type |
595,25 → 615,35 |
$resultat = $this->_db->query ($requete) ; |
|
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
|
// On affecte à l'objet projet son identifiant |
// On affecte a l'objet projet son identifiant |
$this->_id_projet = $id ; |
|
//insertion dans projet_hierarchie |
//insertion dans projet_herarchie |
if (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) ; |
} |
|
/** enregistrement dans projet_avoir_theme */ |
$requete_theme = ''; |
foreach ($tableau_de_valeur['projet_theme'] as $cle => $valeur) { |
$requete_theme = 'insert into projet_avoir_theme set pat_id_projet='.$id.', pat_id_theme='.$cle; |
$resultat_theme = $GLOBALS['projet_db']->query($requete_theme); |
if (DB::isError($resultat_theme)) { |
return $resultat_theme->getMessage(); |
} |
} |
return true ; |
} // end of member function enregistrerSQL |
} |
|
/** |
* Permet de mettre à jour une ligne dans la table concernée. |
* Permet de mettre a jour une ligne dans la table concernee. |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* @param Array tableau_de_valeur Le tableau de valeur a inserer dans la base avec pour cle les noms des elements |
* du formulaire. |
* @return int |
* @access public |
632,7 → 662,7 |
' 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()) ; |
return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
|
if (PROJET_UTILISE_HIERARCHIE) { |
647,11 → 677,25 |
', ph_id_projet_fils='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
} |
|
/** enregistrement dans projet_avoir_theme */ |
|
$requete_suppression_theme = 'delete from projet_avoir_theme where pat_id_projet='.$this->_id_projet; |
$resultat_suppression_theme = $GLOBALS['projet_db']->query($requete_suppression_theme); |
|
$requete_theme = ''; |
foreach ($tableau_de_valeur['projet_theme'] as $cle => $valeur) { |
$requete_theme = 'insert into projet_avoir_theme set pat_id_projet='.$this->_id_projet.', pat_id_theme='.$cle; |
$resultat_theme = $GLOBALS['projet_db']->query($requete_theme); |
if (DB::isError($resultat_theme)) { |
return $resultat_theme->getMessage(); |
} |
} |
return true ; |
} // end of member function enregistrerSQL |
|
/** |
* Met à jour dans la base de donnée le champs p_nom_wikini |
* Met a jour dans la base de donnee le champs p_nom_wikini |
* |
* @param int nom_wikini Le nouveau nom wikini |
* @return bool |
662,7 → 706,7 |
$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 ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
return true ; |
} // end of member function majNomWikini |
678,15 → 722,15 |
function suppressionSQL() |
{ |
$msg = '' ; |
// Supression du répertoire du projet |
// Supression du repertoire du projet |
if (!$this->_suppression_repertoire()) { |
$msg = 'La suppression du répertoire n\'a pas fonctionn°' ; |
$msg = 'La suppression du repertoire n\'a pas fonctionne' ; |
} |
// A ajouter la suppression des documents associés |
// A ajouter la suppression des documents associes |
|
// La suppression des évènements associés |
// La suppression des evenements associés |
|
// Le projet lui-même |
// Le projet lui-meme |
$requete = "delete from projet where p_id=".$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
|
700,7 → 744,7 |
} // end of member function suppressionSQL |
|
/** |
* Supprime le répertoire associé au projet (le répertoire doit être vide). |
* Supprime le repertoire associe au projet (le repertoire doit etre vide). |
* |
* @return void |
* @access private |
711,7 → 755,7 |
} // end of member function _suppression_repertoire |
|
/** |
* Permet de créer le répertoire associé au projet. |
* Permet de creer le repertoire associe au projet. |
* |
* @param string nom_repertoire Le nom du répertoire à créer. |
* @return boolean |
723,9 → 767,9 |
} // end of member function _creationRepertoire |
|
/** |
* Permet d'indiquer où seront stockés les fichiers. |
* Permet d'indiquer ou seront stockes les fichiers. |
* |
* @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers. |
* @param string cheminRepertoire Le chemin jusqu'au repertoire ou seront stockes les fichiers. |
* @return void |
* @access public |
*/ |
735,10 → 779,10 |
} // 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. |
* Genere un nom de repertoire a partir de la premiere lettre de la chaine passe en |
* parametre 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 string chaine Une chaine a partir de laquelle sera generer le nom du repertoire. |
* @param DB objetDB un objet PEAR::DB |
* @return string |
* @static |
749,7 → 793,7 |
$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()) ; |
return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
if ($resultat->numRows() > 0) { |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
765,7 → 809,7 |
} // end of member function genereNomRepertoire |
|
/** |
* Permet de récupérer le nom du répertoire d'un projet. |
* Permet de recuperer le nom du repertoire d'un projet. |
* |
* @return string |
* @access public |
776,7 → 820,7 |
} // end of member function getNomRepertoire |
|
/** |
* Ajoute une liste à un projet |
* Ajoute une liste a un projet |
* Effectue une insertion dans projet_lien_liste |
* |
* @param liste_discussion liste Une instance de la classe liste_discussion |
789,12 → 833,12 |
', pl_id_projet='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
} // end of member function ajouterListe |
} |
|
/** |
* Supprime la liste de discussion associée au projet |
* Supprime la liste de discussion associee au projet |
* |
* @return void |
* @access public |
804,14 → 848,14 |
$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()) ; |
return ('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()) ; |
return ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
} // end of member function supprimerListe |
} |
|
|
/** |
883,7 → 927,7 |
} // end of member function getIdPere() |
|
/** |
* Renvoie le nom Wiki du wikini associé au projet. |
* Renvoie le nom Wiki du wikini associe au projet. |
* |
* @return string |
* @access public |
894,7 → 938,7 |
} // end of member function getWikini |
|
/** |
* Renvoie le type du projet, ou zéro si le projet n'a pas de type. |
* Renvoie le type du projet, ou zero si le projet n'a pas de type. |
* |
* @return int |
* @access public |
904,8 → 948,19 |
return $this->_type ; |
} // end of member function getType |
|
/** |
* Renvoie les themes du projet, ou zero si le projet n'a pas de type. |
* |
* @return int |
* @access public |
*/ |
function getThemes( ) |
{ |
return $this->_themes ; |
} // end of member function getType |
|
/** |
* Renvoie 1 si les inscriptions au projet sont modérées. |
* Renvoie 1 si les inscriptions au projet sont moderees. |
* |
* @return int |
* @access public |
918,7 → 973,7 |
|
|
/** |
* initAttributes sets all projet attributes to its default value make |
* initAttributes sets all projet attributes to its default value make |
* sure to call this method within your class constructor |
*/ |
function initAttributes( ) |