Subversion Repositories Applications.projet

Compare Revisions

Ignore whitespace Rev 322 → Rev 323

/trunk/classes/projetControleur.class.php
20,7 → 20,7
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
 
// CVS : $Id: projetControleur.class.php,v 1.43 2008-08-25 15:06:59 alexandre_tb Exp $
// CVS : $Id: projetControleur.class.php,v 1.44 2008-08-26 08:52:28 alexandre_tb Exp $
 
/**
* Application projet
33,7 → 33,7
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.43 $
*@version $Revision: 1.44 $
// +------------------------------------------------------------------------------------------------------+
*/
 
49,26 → 49,26
}
 
require_once GEN_CHEMIN_API.'sql/SQL_manipulation.fonct.php' ;
require_once GEN_CHEMIN_API.'html/HTML_TableFragmenteur.php' ;
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE des constantes |
// +------------------------------------------------------------------------------------------------------+
 
define ("PROJET_ACTION_COUPER", 3) ;
define ("PROJET_ACTION_MODIFIER", 4) ;
define ("PROJET_SUPPRESSION_FICHIER", 5) ;
define ("PROJET_NOUVEAU", 6) ;
define ("PROJET_NOUVEAU_V", 7) ;
define ('PROJET_ACTION_COUPER', 3) ;
define ('PROJET_ACTION_MODIFIER', 4) ;
define ('PROJET_SUPPRESSION_FICHIER', 5) ;
define ('PROJET_NOUVEAU', 6) ;
define ('PROJET_NOUVEAU_V', 7) ;
define ('PROJET_MODIFIER_DESCRIPTION', 19) ;
define ('PROJET_MODIFIER_DESCRIPTION_V', 20) ;
define ("PROJET_NOUVEAU_FICHIER", 8) ;
define ("PROJET_NOUVEAU_FICHIER_V", 9) ;
define ("PROJET_NOUVEAU_REPERTOIRE", 11) ;
define ("PROJET_NOUVEAU_REPERTOIRE_V", 12) ;
define ("PROJET_SUPPRESSION_PROJET", 10) ;
define ("PROJET_ENVOYER_UN_MAIL", 13) ;
define ("PROJET_ENVOYER_UN_MAIL_V", 14) ;
define ("PROJET_ACTION_MODIFIER_V", 15) ;
define ('PROJET_NOUVEAU_FICHIER', 8) ;
define ('PROJET_NOUVEAU_FICHIER_V', 9) ;
define ('PROJET_NOUVEAU_REPERTOIRE', 11) ;
define ('PROJET_NOUVEAU_REPERTOIRE_V', 12) ;
define ('PROJET_SUPPRESSION_PROJET', 10) ;
define ('PROJET_ENVOYER_UN_MAIL', 13) ;
define ('PROJET_ENVOYER_UN_MAIL_V', 14) ;
define ('PROJET_ACTION_MODIFIER_V', 15) ;
define ('PROJET_ACTION_NOUVELLE_LISTE', 16) ;
define ('PROJET_ACTION_NOUVELLE_LISTE_V', 17) ;
define ('PROJET_ACTION_S_INSCRIRE', 21) ;
95,10 → 95,10
* Code erreur pour l'interface projetControleur qui trouveront leur message
* correspondant via la fonction projetControleur::messageErreur()
*/
define ("PROJETCONTROLEUR_ACTION_INVALIDE", -1) ;
define ("PROJETCONTROLEUR_ERREUR_SUPPRESSION_REPERTOIRE", -2) ;
define ("PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE", -3) ;
define ("PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE", -4) ;
define ('PROJETCONTROLEUR_ACTION_INVALIDE', -1) ;
define ('PROJETCONTROLEUR_ERREUR_SUPPRESSION_REPERTOIRE', -2) ;
define ('PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE', -3) ;
define ('PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE', -4) ;
 
/**
* Constantes pour definir les droits
229,7 → 229,7
return $this->messageErreur(PROJETCONTROLEUR_ACTION_INVALIDE) ;
}
 
// Si il n'y a pas d'action mais un projet, on transmet par defaut l'action PROJET_VOIR
// Si il n'y a pas d'action mais un projet, on transmet par defaut l'action PROJET_VOIR_RESUME
if ($this->_id_projet != "" && $this->_action == PROJET_DEFAUT) {
$this->_action = PROJET_ACTION_VOIR_RESUME ;
$this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $this->_id_projet) ;
247,9 → 247,6
case PROJET_DEFAUT :
$retour .= $this->mesProjets() ;
break ;
case PROJET_VOIR :
$retour .= $this->accueilProjet();
break ;
case PROJET_NOUVEAU :
$retour .= $this->formulaireProjet(PROJET_NOUVEAU_V) ;
break ;
358,7 → 355,7
function setAction( $action )
{
$this->_action = $action ;
} // end of member function setAction
}
 
/**
* Permet de fixer la valeur de du service pour l'objet projetControleur. Ce service
371,7 → 368,7
function setService( $service )
{
$this->_service = $service ;
} // end of member function setAction
}
 
 
/**
980,213 → 977,9
function setIdProjet( $id_projet )
{
$this->_id_projet = $id_projet ;
}
 
} // end of member function setIdProjet
 
/**
* Renvoie la page d'accueil d'un projet.
*
* @return string
* @access public
*/
function accueilProjet( )
{
$res = '' ;
// creation de l'objet projet courant
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
$projet = new projet ($this->_db, $this->_id_projet) ;
 
// recuperation de la liste des documents associés
$liste_documents = $projet->getListesDocuments(PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ;
 
// création de la vue liste de document, on nettoie l'url
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ;
include_once PROJET_CHEMIN_CLASSES.'HTML_listeDocuments.class.php' ;
$vue_liste_document = new HTML_listeDocuments($this->_url, false, $this->_id_repertoire) ;
 
// reglage de parametres de la vue
$vue_liste_document->setAction (array ("couper" => PROJET_ACTION_COUPER, "modifier" => PROJET_ACTION_MODIFIER, "supprimer" => PROJET_SUPPRESSION_FICHIER)) ;
$vue_liste_document->setCheminIcones(PROJET_CHEMIN_ICONES) ;
 
 
$tableau_navigation = document::getCheminIdRepertoire($this->_id_repertoire, $this->_db) ;
 
$vue_liste_document->setCheminNavigation ($tableau_navigation) ;
// verification des droits de l'utilisateur
$entete_liste = array (PROJET_FICHIERS_NOM, PROJET_FICHIERS_TAILLE, PROJET_FICHIERS_CREE_LE) ;
 
if ($this->_auth->getAuth()) {
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
$participant = new participe($this->_db) ;
$id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ;
$isCoord = $participant->isCoordinateur($id_u, $this->_id_projet, $this->_db) ;
if ($isCoord) $droits = PROJET_DROIT_COORDINATEUR ;
$isAdm = participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db) ;
if ($isAdm) $droits = PROJET_DROIT_ADMINISTRATEUR ;
if ($isAdm) $isCoord = true ;
 
$statut = participe::getStatutSurProjetCourant ($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ;
// si participant, on ajoute le champs visibilite
 
if ($statut !='' || $isAdm) {
array_push ($entete_liste, PROJET_FICHIERS_VISIBILITE) ;
}
// si chef de projet ou si propriétaire d'au moins 1 document
$proprietaire_un_document = false ;
 
foreach ($liste_documents as $document) {
if ($this->_auth->getAuthData(PROJET_CHAMPS_ID) == $document) {
$proprietaire_un_document = true ;
$droits = PROJET_DROIT_PROPRIETAIRE ;
}
}
if ($statut > 0 || $proprietaire_un_document) {
array_push ($entete_liste, PROJET_ACTION) ;
}
} else {
$droits = PROJET_DROIT_AUCUN ;
}
if (!isset($droits)) $droits = PROJET_DROIT_AUCUN ;
 
$vue_liste_document->construitEntete($entete_liste) ;
$vue_liste_document->construitListe ($liste_documents, $droits) ;
 
$wiki_res = '' ;
// Les wikinis associes au projet
if ($projet->getWikini()) {
$wiki_res .= '<div><a href="'.PROJET_URL_WIKINI.'wakka.php?wiki=PagePrincipale&wikini='.$projet->getWikini().'">'.PROJET_URL_WIKINI.'</a>' ;
if ($this->_auth->getAuth() && $isCoord) {
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_SUPPRIMER_WIKI) ;
$wiki_res .= ' <a href="'.$this->_url->getURL().'" onclick="javascript:return confirm(\''.PROJET_WIKINI_SUPPRIMER.' ?\')">'.PROJET_WIKINI_SUPPRIMER.'</a>' ;
}
$wiki_res .= '</div>' ;
} else {
$wiki_res .= '<div>'.PROJET_WIKINI_PAS.'</div>'."\n" ;
}
// On charge les listes de discussion du projet
// Pour le moment seul ezmlm est supportee
 
$projet->getListesAssociees();
$sortie_liste = '' ;
 
if ($projet->avoirListe()) {
include_once PROJET_CHEMIN_CLASSES_LISTES.'ezmlm.php' ;
foreach ($projet->_listes_associes as $info_liste) {
 
$liste = new ezmlm_php() ;
// Paramétrage de la liste
 
$liste->listdir = PROJET_CHEMIN_LISTES.$info_liste->getDomaine().'/'.$info_liste->getNom();
$liste->listname = $info_liste->getNom() ;
$liste->listdomain = $info_liste->getDomaine();
 
if (isset ($GLOBALS['action']) && $GLOBALS['action'] != '') {
$liste->set_action($GLOBALS['action']) ;
$liste->set_actionargs($GLOBALS['actionargs']) ;
} else {
$liste->set_action('list_info') ;
}
$liste->sendheaders = false;
$liste->sendbody = false;
$liste->sendfooters = false;
$liste->forcehref = $this->_url->getURL() ;
 
ob_start() ;
print '<span class="heading">Liste <strong>' . $info_liste->getAdresseEnvoi() ;
print "</strong></span><br />\n";
if ($this->_auth->getAuth()) {
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php';
$inscription_liste = new inscription_liste($this->_db) ;
if ($inscription_liste->getStatutInscrit( $info_liste->getId(), $this->_auth) == '') {
$action_inscription = PROJET_ACTION_INSCRIPTION_LISTE ;
$label_inscription = PROJET_S_INSCRIRE ;
} else {
$action_inscription = PROJET_ACTION_DESINSCRIPTION_LISTE ;
$label_inscription = PROJET_SE_DESINSCRIRE ;
}
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action_inscription) ;
print '<a href="'.$this->_url->getURL().'">';
print $label_inscription.'</a><br /> ';
}
print "\n<hr noshade><br />\n";
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ;
switch ($liste->action) {
case "show_msg":
if (count($liste->actionargs) < 2) {
$liste->error(EZMLM_INVALID_SYNTAX,TRUE);
}
$show_msg = new ezmlm_msgdisplay();
$show_msg->listdir = $liste->listdir ;
$show_msg->forcehref = $this->_url->getURL();
// actionargs[0] contient le nom du repertoire et actionargs[1] le nom du fichier
// On appelle la fonction qui affiche un fichier
$show_msg->display($liste->actionargs[0] . "/" . $liste->actionargs[1]);
break;
 
case "list_info":
$info = new ezmlm_listinfo();
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ;
$info->forcehref = $this->_url->getURL();
$info->listdir = $liste->listdir ;
$info->listname = $info_liste->getNom();
$info->listdomain = $info_liste->getDomaine() ;
 
if (!$info->display()) {
echo 'Pas de message dans cette liste' ;
}
break;
case "show_threads":
$threads = new ezmlm_threads();
$threads->forcehref = $this->_url->getURL() ;
$threads->listdir = $liste->listdir ;
$threads->listname = $info_liste->getNom() ;
$threads->listdomain = $info_liste->getDomaine() ;
$threads->tempdir = PROJET_CHEMIN_APPLI.'/tmp' ;
$threads->load($liste->actionargs[0]);
break;
case "show_author_msgs" :
$author = new ezmlm_author();
$author->listdir = $liste->listdir ;
$author->listname = $info_liste->getNom() ;
$author->listdomain = $info_liste->getDomaine() ;
$author->forcehref = $this->_url->getURL() ;
$author->display($liste->actionargs[0]);
break ;
}
$sortie_liste = ob_get_contents() ;
ob_end_clean() ;
}
} else {
$sortie_liste = '<div>'.PROJET_PAS_DE_LISTE.'</div>'."\n" ;
}
 
$res .= "<h1>".$projet->getTitre()."</h1>" ;
$res .= '<div>'.$projet->getDescription().'</div>'."\n" ;
$res .= '<h2>'.PROJET_WIKI_ASSOCIE.'</h2>' ;
$res .= $wiki_res ;
$res .= '<h2>'.PROJET_FICHIERS_ASSOCIES.'</h2>'."\n" ;
$res .= $vue_liste_document->toHTML() ;
$res .= '<h2>'.PROJET_LISTES_ASSOCIEES.'</h2>'."\n" ;
$res .= $sortie_liste ;
 
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ;
$listes_ext = new liste_externe ($this->_db) ;
$tableau_liste = $listes_ext->getListesAssociees($this->_id_projet) ;
 
if (count ($tableau_liste) != 0) {
$res .= '<h2>'.PROJET_LISTES_EXTERNES_ASSOCIEES.'</h2>'."\n" ;
for ($i = 0; $i < count ($tableau_liste); $i++) {
$info_liste = $listes_ext->getInfoListe($tableau_liste[$i]) ;
$res .= '<h2>'.$info_liste->AGO_A_NOMGRPLG.'</h2>'."\n" ;
$res .= '<p>'.$info_liste->AGO_A_RESUMLG.'</p>'."\n" ;
$res .= '<p><a href="'.$info_liste->AGO_A_URLGRP.'">'.$info_liste->AGO_A_URLGRP.'</a></p>'."\n" ;
$res .= '<br />'."\n" ;
}
}
return $res ;
} // end of member function accueilProjet
 
/**
* Permet de specifier quel repertoire, dans la vue de document afficher. Il sera
* passe en parametre a la classe HTML_listeDocuments.
*
1974,7 → 1767,13
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.43 2008-08-25 15:06:59 alexandre_tb
* ajout:
* - des notifications
* - des messages en retour
* - correction inscription a un projet avec liste externe
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>