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 ----------------------------------------------------------------------------------------+ |
*/ |
?> |