Subversion Repositories Applications.projet

Rev

Rev 288 | Rev 323 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 288 Rev 297
Line 18... Line 18...
18
// | You should have received a copy of the GNU General Public                                            |
18
// | You should have received a copy of the GNU General Public                                            |
19
// | License along with this library; if not, write to the Free Software                                  |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
21
// +------------------------------------------------------------------------------------------------------+
Line 22... Line 22...
22
 
22
 
Line 23... Line 23...
23
// CVS : $Id: projetControleur.class.php,v 1.42 2008-05-21 14:36:12 alexandre_tb Exp $
23
// CVS : $Id: projetControleur.class.php,v 1.43 2008-08-25 15:06:59 alexandre_tb Exp $
24
 
24
 
25
/**
25
/**
26
* Application projet
26
* Application projet
Line 31... Line 31...
31
//Auteur original :
31
//Auteur original :
32
*@author        Alexandre Granier <alexandre@tela-botanica.org>
32
*@author        Alexandre Granier <alexandre@tela-botanica.org>
33
//Autres auteurs :
33
//Autres auteurs :
34
*@author        Aucun
34
*@author        Aucun
35
*@copyright     Tela-Botanica 2000-2004
35
*@copyright     Tela-Botanica 2000-2004
36
*@version       $Revision: 1.42 $
36
*@version       $Revision: 1.43 $
37
// +------------------------------------------------------------------------------------------------------+
37
// +------------------------------------------------------------------------------------------------------+
38
*/
38
*/
Line 39... Line 39...
39
 
39
 
40
// +------------------------------------------------------------------------------------------------------+
40
// +------------------------------------------------------------------------------------------------------+
Line 108... Line 108...
108
define ('PROJET_DROIT_COORDINATEUR', 2) ;
108
define ('PROJET_DROIT_COORDINATEUR', 2) ;
109
define ('PROJET_DROIT_PROPRIETAIRE', 4) ;
109
define ('PROJET_DROIT_PROPRIETAIRE', 4) ;
110
define ('PROJET_DROIT_CONTRIBUTEUR', 8) ;
110
define ('PROJET_DROIT_CONTRIBUTEUR', 8) ;
111
define ('PROJET_DROIT_AUCUN', 16) ;
111
define ('PROJET_DROIT_AUCUN', 16) ;
112
define ('PROJET_DROIT_EN_ATTENTE', 32);
112
define ('PROJET_DROIT_EN_ATTENTE', 32);
-
 
113
 
-
 
114
/** Constante pour les notifications
-
 
115
 * Messages envoyes par la systeme pour prevenir
-
 
116
 * les utilisateurs de certaines action
-
 
117
 */
-
 
118
 
-
 
119
define ('PROJET_NOTIFICATION_DEMANDE_INSCRIPTION', 1);
-
 
120
define ('PROJET_NOTIFICATION_ACCEPTATION_INSCRIPTION', 2);
-
 
121
define ('PROJET_NOTIFICATION_INSCRIPTION_NOUVELLE', 3); // Pour le coordinateur quand quelqu un s inscrit au projet 
-
 
122
define ('PROJET_NOTIFICATION_DESINSCRIPTION_PROJET', 4);
-
 
123
define ('PROJET_NOTIFICATION_NOUVEAU_DOC', 5);
-
 
124
 
113
/**
125
/**
114
 * class projetControleur
126
 * class projetControleur
115
 * Cette classe sert a lancer les diverses applications du module projet, en
127
 * Cette classe sert a lancer les diverses applications du module projet, en
116
 * fonction des parametre de l'URL GET ou POST. La methode principale est run()
128
 * fonction des parametre de l'URL GET ou POST. La methode principale est run()
117
 */
129
 */
Line 312... Line 324...
312
            	$this->_action = PROJET_ACTION_VOIR_RESUME ;
324
            	$this->_action = PROJET_ACTION_VOIR_RESUME ;
313
            break ;
325
            break ;
314
            case PROJET_ACTION_SUPPRIMER_WIKI : $retour .= $this->supprimerWiki();
326
            case PROJET_ACTION_SUPPRIMER_WIKI : $retour .= $this->supprimerWiki();
315
                $this->_action = PROJET_ACTION_VOIR_RESUME ;
327
                $this->_action = PROJET_ACTION_VOIR_RESUME ;
316
            break ;
328
            break ;
317
            case PROJET_ACTION_INSCRIPTION_LISTE : $retour .= $this->inscriptionListe() ;
329
            case PROJET_ACTION_INSCRIPTION_LISTE : $message_retour = $this->inscriptionListe() ;
318
                $this->_action = PROJET_ACTION_VOIR_FORUM ;
330
                $this->_action = PROJET_ACTION_VOIR_FORUM ;
319
            break ;
331
            break ;
320
            case PROJET_ACTION_DESINSCRIPTION_LISTE : $retour .= $this->desinscriptionListe() ;
332
            case PROJET_ACTION_DESINSCRIPTION_LISTE : $message_retour = $this->desinscriptionListe() ;
321
                $this->_action = PROJET_ACTION_VOIR_FORUM ;
333
                $this->_action = PROJET_ACTION_VOIR_FORUM ;
322
            break ;
334
            break ;
323
            case PROJET_ACTION_REFERENCER_LISTE : $retour .= $this->referencerListeExterne() ;
335
            case PROJET_ACTION_REFERENCER_LISTE : $retour .= $this->referencerListeExterne() ;
324
            break ;
336
            break ;
325
            case PROJET_ACTION_REFERENCER_LISTE_V : $retour .= $this->referencerListeExterneValidation() ;
337
            case PROJET_ACTION_REFERENCER_LISTE_V : $retour .= $this->referencerListeExterneValidation() ;
Line 378... Line 390...
378
            $this->_url = $urlObjet ;
390
            $this->_url = $urlObjet ;
379
        }
391
        }
380
    } // end of member function projetControleur
392
    } // end of member function projetControleur
Line 381... Line 393...
381
 
393
 
382
    /**
394
    /**
383
     * Renvoie la liste des projets auquel participe la personne loguée, avec son
395
     * Renvoie la liste des projets auquel participe la personne logguee, avec son
384
     * statut et un lien vers l'action pour gérer le projet.
396
     * statut et un lien vers l'action pour gerer le projet.
385
     *
397
     *
386
     * @return string
398
     * @return string
387
     * @access public
399
     * @access public
388
     */
400
     */
Line 505... Line 517...
505
					
517
					
506
					// On verifie si l'utilisateur est inscrit ou non a la liste et on ajoute le lien
518
					// On verifie si l'utilisateur est inscrit ou non a la liste et on ajoute le lien
Line 507... Line 519...
507
		            //$projet->getListesAssociees();
519
		            //$projet->getListesAssociees();
-
 
520
		
508
		
521
		            include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php';
509
		            include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php';
522
		            include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php';
-
 
523
		            foreach ($projet->_listes_associes as $info_liste) {
-
 
524
						
-
 
525
						$listes_ext = new liste_externe ($this->_db) ;
510
		            foreach ($projet->_listes_associes as $info_liste) {
526
						$tableau_liste = $listes_ext->getListesAssociees($this->_id_projet) ;
511
		
527
						if (count ($tableau_liste) == 0) {
512
		                $inscription_liste = new inscription_liste($this->_db) ;
528
			                $inscription_liste = new inscription_liste($this->_db) ;
513
		                if ($inscription_liste->getStatutInscrit($info_liste->getId(),  $this->_auth) == 0) {
529
			                if ($inscription_liste->getStatutInscrit($info_liste->getId(),  $this->_auth) == 0) {
514
		                    $action_inscription = PROJET_ACTION_INSCRIPTION_LISTE ;
530
			                    $action_inscription = PROJET_ACTION_INSCRIPTION_LISTE ;
515
		                    $label_inscription = PROJET_RECEVOIR_MESSAGES ;
531
			                    $label_inscription = PROJET_RECEVOIR_MESSAGES ;
516
		                } else {
532
			                } else {
517
		                    // L'action envoyer un mail
533
			                    // L'action envoyer un mail
518
		                    $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL) ;
534
			                    $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL) ;
519
		                    $res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_ECRIRE_LISTE.'</a></li>'."\n" ;
535
			                    $res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_ECRIRE_LISTE.'</a></li>'."\n" ;
520
		                    $action_inscription = PROJET_ACTION_DESINSCRIPTION_LISTE ;
536
			                    $action_inscription = PROJET_ACTION_DESINSCRIPTION_LISTE ;
521
		                    $label_inscription = PROJET_NE_PAS_RECEVOIR_MESSAGES ;
537
			                    $label_inscription = PROJET_NE_PAS_RECEVOIR_MESSAGES ;
522
		                }
538
			                }
523
		                $this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action_inscription) ;
539
			                $this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action_inscription) ;
-
 
540
			                $res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">';
524
		                $res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">';
541
			                $res .= $label_inscription.'</a></li> ';
525
		                $res .= $label_inscription.'</a></li> ';
542
						}
526
		            }
543
		            }
527
		            if ($isAdm || (PROJET_UTILISATEURS_COORD && $isCoord)) {
544
		            if ($isAdm || (PROJET_UTILISATEURS_COORD && $isCoord)) {
528
		                $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_SUPPRIMER_LISTE) ;
545
		                $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_SUPPRIMER_LISTE) ;
Line 590... Line 607...
590
        	}	
607
        	}	
591
        }
608
        }
592
        $res .= '</ul>' ;
609
        $res .= '</ul>' ;
593
        $res .= "</div>\n" ;
610
        $res .= "</div>\n" ;
594
        $this->_url->removeQueryString (PROJET_VARIABLE_ACTION) ;
611
        $this->_url->removeQueryString (PROJET_VARIABLE_ACTION) ;
-
 
612
        $vues = array (PROJET_ACTION_VOIR_RESUME, PROJET_ACTION_VOIR_DESCRIPTION, PROJET_ACTION_VOIR_WIKINI, PROJET_ACTION_VOIR_FORUM, PROJET_ACTION_VOIR_PARTICIPANT);
-
 
613
        if (isset($_REQUEST[PROJET_VARIABLE_ACTION]) && in_array ($_REQUEST[PROJET_VARIABLE_ACTION], $vues)) $this->_url->addQueryString(PROJET_VARIABLE_ACTION, $_REQUEST[PROJET_VARIABLE_ACTION]);
595
        return $res ;
614
        return $res ;
596
    } // end of member function menuGeneral
615
    } // end of member function menuGeneral
Line 597... Line 616...
597
 
616
 
598
    /**
617
    /**
Line 855... Line 874...
855
                return 'Echec de l\'upload<br />'.
874
                return 'Echec de l\'upload<br />'.
856
                		'Fichier source : '. $_FILES['fichier']['name'];
875
                		'Fichier source : '. $_FILES['fichier']['name'];
857
                		'Fichier destination : '.PROJET_CHEMIN_FICHIER.$projet->getNomRepertoire().'/'.$chemin_upload.'/'.$nouveau_nom ;
876
                		'Fichier destination : '.PROJET_CHEMIN_FICHIER.$projet->getNomRepertoire().'/'.$chemin_upload.'/'.$nouveau_nom ;
858
            }
877
            }
Line 859... Line -...
859
 
-
 
860
 
-
 
861
            //$document->enregistrerSQL($formulaire_document->getSubmitValues(), $projet->getNomRepertoire().'/'.$chemin_upload) ;
878
 
862
            $retour = $document->enregistrerSQL($formulaire_document->getSubmitValues(), $nouveau_nom);
879
            $document->enregistrerSQL($formulaire_document->getSubmitValues(), $nouveau_nom);
863
            // On place a 1 la colonne p_avoir_document
880
            // On place a 1 la colonne p_avoir_document
Line 864... Line 881...
864
            if (!$projet->avoirDocument()) $projet->setAvoirDocument(true);
881
            if (!$projet->avoirDocument()) $projet->setAvoirDocument(true);
865
            
882
            
-
 
883
            // On ajoute une information de session
-
 
884
            $_SESSION['formulaire_document'] = 'valide';
-
 
885
            
-
 
886
            // Pour notification coordinateur
-
 
887
            include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ;
-
 
888
        	$utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 
-
 
889
							'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE,
-
 
890
							'nom'=> PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ;
866
            // On ajoute une information de session
891
            $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
867
            $_SESSION['formulaire_document'] = 'valide';
892
            $this->notifierCoordinateurs(PROJET_NOTIFICATION_NOUVEAU_DOC, $utilisateur);
868
        } else {
893
        } else {
869
            return $formulaire_document->toHTML() ;
894
            return $formulaire_document->toHTML() ;
870
        }
895
        }
871
        return $retour;
-
 
Line 872... Line 896...
872
        unset ($projet) ;
896
        return $retour;
873
    } // end of member function nouveauFichierValidation
897
    }
874
 
898
 
875
    /**
899
    /**
Line 1026... Line 1050...
1026
 
1050
 
1027
        $vue_liste_document->construitEntete($entete_liste) ;
1051
        $vue_liste_document->construitEntete($entete_liste) ;
Line 1028... Line 1052...
1028
        $vue_liste_document->construitListe ($liste_documents, $droits) ;
1052
        $vue_liste_document->construitListe ($liste_documents, $droits) ;
1029
 
1053
 
1030
        $wiki_res = '' ;
1054
        $wiki_res = '' ;
1031
        // Les wikinis associés au projet
1055
        // Les wikinis associes au projet
1032
        if ($projet->getWikini()) {
1056
        if ($projet->getWikini()) {
1033
            $wiki_res .= '<div><a href="'.PROJET_URL_WIKINI.'wakka.php?wiki=PagePrincipale&wikini='.$projet->getWikini().'">'.PROJET_URL_WIKINI.'</a>' ;
1057
            $wiki_res .= '<div><a href="'.PROJET_URL_WIKINI.'wakka.php?wiki=PagePrincipale&wikini='.$projet->getWikini().'">'.PROJET_URL_WIKINI.'</a>' ;
1034
            if ($this->_auth->getAuth() && $isCoord) {
1058
            if ($this->_auth->getAuth() && $isCoord) {
Line 1038... Line 1062...
1038
            $wiki_res .= '</div>' ;
1062
            $wiki_res .= '</div>' ;
1039
        } else {
1063
        } else {
1040
            $wiki_res .= '<div>'.PROJET_WIKINI_PAS.'</div>'."\n" ;
1064
            $wiki_res .= '<div>'.PROJET_WIKINI_PAS.'</div>'."\n" ;
1041
        }
1065
        }
1042
        // On charge les listes de discussion du projet
1066
        // On charge les listes de discussion du projet
1043
        // Pour le moment seul ezmlm est supportée
1067
        // Pour le moment seul ezmlm est supportee
Line 1044... Line 1068...
1044
 
1068
 
1045
        $projet->getListesAssociees();
1069
        $projet->getListesAssociees();
Line 1046... Line 1070...
1046
        $sortie_liste = '' ;
1070
        $sortie_liste = '' ;
Line 1092... Line 1116...
1092
                            $liste->error(EZMLM_INVALID_SYNTAX,TRUE);
1116
                            $liste->error(EZMLM_INVALID_SYNTAX,TRUE);
1093
                        }
1117
                        }
1094
                        $show_msg = new ezmlm_msgdisplay();
1118
                        $show_msg = new ezmlm_msgdisplay();
1095
                        $show_msg->listdir = $liste->listdir ;
1119
                        $show_msg->listdir = $liste->listdir ;
1096
                        $show_msg->forcehref = $this->_url->getURL();
1120
                        $show_msg->forcehref = $this->_url->getURL();
1097
                        // actionargs[0] contient le nom du répertoire et actionargs[1] le nom du fichier
1121
                        // actionargs[0] contient le nom du repertoire et actionargs[1] le nom du fichier
1098
                        // On appelle la fonction qui affiche un fichier
1122
                        // On appelle la fonction qui affiche un fichier
1099
                        $show_msg->display($liste->actionargs[0] . "/" . $liste->actionargs[1]);
1123
                        $show_msg->display($liste->actionargs[0] . "/" . $liste->actionargs[1]);
1100
                        break;
1124
                        break;
Line 1101... Line 1125...
1101
 
1125
 
Line 1482... Line 1506...
1482
 
1506
 
1483
        // Si le projet n'a pas de liste, on inscrit directement
1507
        // Si le projet n'a pas de liste, on inscrit directement
1484
        if (isset ($this->_id_projet)) {
1508
        if (isset ($this->_id_projet)) {
1485
            include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
1509
            include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
1486
            $participant = new participe($this->_db) ;
1510
            $participant = new participe($this->_db) ;
-
 
1511
			
-
 
1512
			// On controle si la liste est externe (yahoo) auquel cas on ne presente pas l inscription
-
 
1513
			include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ;
-
 
1514
			$liste_ext = new liste_externe($this->_db);
-
 
1515
			$listes = $liste_ext->getListesAssociees($this->_id_projet);
-
 
1516
			$info_liste = $liste_ext->getInfoListe($listes[0]);
-
 
1517
			if (count ($listes) != 0) {
-
 
1518
				$avoir_liste_externe = true;
-
 
1519
				$msg = '';
-
 
1520
				$msg = 'Pour vous inscrire &agrave; la liste de discussion, h&eacute;berg&eacute;e par Yahoo Groupes, <a href="mailto:';
-
 
1521
				$msg .= $info_liste->AGO_A_MAILABO.'">cliquez ici</a>';
-
 
1522
			} else {
-
 
1523
				$avoir_liste_externe = false;
1487
 
1524
			}
1488
            if (!$projet->avoirListe()) {
1525
            if (!$projet->avoirListe() || $avoir_liste_externe) {
1489
            	if ($projet->isModere()) {
1526
            	if ($projet->isModere()) {
1490
                	$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1527
                	$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1491
            	} else {
1528
            	} else {
-
 
1529
            		$participant->setStatut(2, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;     		 
1492
            		$participant->setStatut(2, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1530
            		$message_retour = '<p class="information">Votre inscription a bien &eacute;t&eacute; prise en compte'.$msg.'</p>';
-
 
1531
            	}
-
 
1532
            	$message_retour = '<p class="information">Votre inscription a bien &eacute;t&eacute; prise en compte. '.$msg.'</p>';
1493
            	}
1533
    			include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ;
1494
                return $this->mesProjets() ;
1534
    			return $retour;
1495
            }
1535
            }
1496
        }
1536
        }
1497
        if (isset($_POST['valider_inscription_projet'])) {
1537
        if (isset($_POST['valider_inscription_projet'])) {
1498
            if (isset($_POST['radio_inscription_liste'])) {
1538
            if (isset($_POST['radio_inscription_liste'])) {
Line 1503... Line 1543...
1503
	            $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1543
	            $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
Line 1504... Line 1544...
1504
            
1544
            
1505
            	if (!$projet->isModere()) {
1545
            	if (!$projet->isModere()) {
Line -... Line 1546...
-
 
1546
	                $participant->setStatut(2, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1506
	                $participant->setStatut(2, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1547
	                
1507
	                
1548
	                if ($_POST['radio_inscription_liste'] == 2) {
1508
	                include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ;
1549
		                include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ;
1509
	                $projet->getListesAssociees() ;
1550
		                $projet->getListesAssociees() ;
1510
	                $inscription_liste = new inscription_liste($this->_db) ;
1551
		                $inscription_liste = new inscription_liste($this->_db) ;
1511
	                $inscription_liste->inscrireUtilisateur( $utilisateur,
1552
		                $inscription_liste->inscrireUtilisateur( $utilisateur,
-
 
1553
	                                                        $projet->_listes_associes[0],
-
 
1554
	                                                        $_POST['radio_inscription_liste']) ;
1512
                                                        $projet->_listes_associes[0],
1555
	                }
1513
                                                        $_POST['radio_inscription_liste']) ;
1556
                    $this->notifierCoordinateurs(PROJET_NOTIFICATION_INSCRIPTION_NOUVELLE, $utilisateur);
1514
            	} else {
-
 
1515
            		$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
-
 
1516
            		$tableau_coordinateur = $participant->getCoordinateurs($this->_id_projet) ;
-
 
1517
            		
-
 
1518
            		$entetes['From'] = $this->_auth->getUserName();
-
 
1519
		            $entetes['To'] = '';
-
 
1520
		            $entetes['Subject'] = PROJET_DEMANDE_INSCRIPTION ;
-
 
1521
		            $entetes['Date'] = date ('D, M j G:i:s \C\E\S\T Y') ;
-
 
1522
		            $entetes['Message-ID'] = md5(time()) ;
-
 
1523
		            $entetes['reply-to'] = '' ;
-
 
1524
		            $entetes['Content-Type'] = 'text/plain' ;
-
 
1525
		            
-
 
1526
		            $objet_mail =& Mail::factory('smtp');
-
 
1527
		            require_once PROJET_CHEMIN_BIBLIOTHEQUE_API.'pear/HTML/Template/IT.php';
-
 
1528
				    $tpl = new HTML_Template_IT() ;
-
 
1529
				    // Le gabarit du mail est dans un template
-
 
1530
				    // template 1
-
 
1531
				    $requete = 'select pt_template from projet_template where pt_id_template=1'.
-
 
1532
				    			' and pt_i18n like "%'.PROJET_LANGUE_DEFAUT.'"' ;
-
 
1533
				    
-
 
1534
				    if (!$tpl -> setTemplate($this->_db->getOne ($requete))) {
-
 
1535
				    	echo 'erreur' ;	
-
 
1536
				    }
-
 
1537
					$tpl->setVariable('nom', $utilisateur->getInfo( 'nom')) ;
-
 
1538
					$tpl->setVariable('prenom', $utilisateur->getInfo( 'prenom')) ;
-
 
1539
					$tpl->setVariable('nom_projet', $projet->getTitre()) ;
-
 
1540
					$tpl->setVariable('lien', str_replace ('&amp;', '&', $this->_url->getURL())) ;
-
 
1541
				
-
 
1542
            		foreach ($tableau_coordinateur as $coordinateur) {
-
 
1543
            			$entetes['To'] .= $coordinateur[3].',';	// Le champs 3 est le mail
-
 
1544
            			
-
 
Line 1545... Line -...
1545
            		}
-
 
1546
            		// On enleve la virgule finale
-
 
1547
            		
-
 
1548
            		$entetes['To'] = substr ($entetes['To'], 0, -1);
1557
            	} else {
1549
 
1558
            		$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1550
            		// on envoie le mail
1559
            		
Line 1551... Line 1560...
1551
            		$objet_mail->send($entetes['To'], $entetes, html_entity_decode ($tpl->get()));
1560
            		$this->notifierCoordinateurs(PROJET_NOTIFICATION_DEMANDE_INSCRIPTION, $utilisateur);
1552
            	}
1561
            	}
1553
            }
1562
            }
-
 
1563
 
-
 
1564
            if ($this->_presentation != 'arbre') {
1554
 
1565
                if ($projet->isModere()) return '<h1>'.$projet->getTitre().'</h1>'.
-
 
1566
                		str_replace ('nom_du_projet', $projet->getTitre(), PROJET_LAIUS_INSCRIPTION_MODERE);
-
 
1567
                		else {
1555
            if ($this->_presentation != 'arbre') {
1568
                			$message_retour = '<p class="information">Votre inscription a bien &eacute;t&eacute; prise en compte'.$msg.'</p>';
1556
                if ($projet->isModere()) return '<h1>'.$projet->getTitre().'</h1>'.
1569
                			include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ;
1557
                		str_replace ('nom_du_projet', $projet->getTitre(), PROJET_LAIUS_INSCRIPTION_MODERE);
1570
                			return $retour;
1558
                		else $this->_action = PROJET_ACTION_VOIR_RESUME;
1571
                		}
1559
            } else {
1572
            } else {
Line 1586... Line 1599...
1586
        $projet->getListesAssociees() ;
1599
        $projet->getListesAssociees() ;
1587
        $utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ;
1600
        $utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ;
1588
        $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1601
        $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1589
        $inscription_liste = new inscription_liste($this->_db) ;
1602
        $inscription_liste = new inscription_liste($this->_db) ;
1590
        $inscription_liste->inscrireUtilisateur( $utilisateur, $projet->_listes_associes[0], 2) ;  // 2 est la statut inscription normale
1603
        $inscription_liste->inscrireUtilisateur( $utilisateur, $projet->_listes_associes[0], 2) ;  // 2 est la statut inscription normale
-
 
1604
        return '<p class="information">Vous &ecirc;tes inscrit &agrave; la liste</p>';
1591
    } // end of member function inscriptionListe
1605
    } // end of member function inscriptionListe
Line 1592... Line 1606...
1592
 
1606
 
1593
    /**
1607
    /**
1594
     * Inscrit l'utilisateur logué à la liste dont le paraître est en post.
1608
     * Inscrit l'utilisateur loggue a la liste dont le parametre est en post.
1595
     *
1609
     *
1596
     * @return void
1610
     * @return void
1597
     * @access public
1611
     * @access public
1598
     */
1612
     */
Line 1608... Line 1622...
1608
            								 'mail' => PROJET_CHAMPS_MAIL,
1622
            								 'mail' => PROJET_CHAMPS_MAIL,
1609
            								 'table' => PROJET_ANNUAIRE)) ;
1623
            								 'table' => PROJET_ANNUAIRE)) ;
1610
            $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1624
            $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1611
            $inscription_liste = new inscription_liste($this->_db) ;
1625
            $inscription_liste = new inscription_liste($this->_db) ;
1612
            $inscription_liste->desinscrireUtilisateur( $utilisateur, $projet->_listes_associes[0], $_GET['inscription_liste']) ;
1626
            $inscription_liste->desinscrireUtilisateur( $utilisateur, $projet->_listes_associes[0], $_GET['inscription_liste']) ;
-
 
1627
            return '<p class="information">Vous avez &eacute;t&eacute; d&eacute;sinscrit de la liste</p>';
1613
        }
1628
        }
1614
    } // end of member function inscriptionListe
1629
    } // end of member function inscriptionListe
1615
    /**
1630
    /**
1616
     * desinscrit un utilisateur à un projet
1631
     * desinscrit un utilisateur d un projet
1617
     *
1632
     *
1618
     * @return void
1633
     * @return void
1619
     * @access public
1634
     * @access public
1620
     */
1635
     */
1621
    function desinscriptionProjet( )
1636
    function desinscriptionProjet( )
1622
    {
1637
    {
1623
        include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
1638
        include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
-
 
1639
        include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ;
1624
        $participant = new participe($this->_db) ;
1640
        $participant = new participe($this->_db) ;
-
 
1641
		$utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 
-
 
1642
								'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE,
-
 
1643
								'nom'=> PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ;
-
 
1644
	    $utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1625
 
1645
	    
1626
        // Le statut 4 désinscrit l'utilisateur, dans la méthode setStatut
1646
        // Le statut 4 desinscrit l'utilisateur, dans la methode setStatut
1627
        $participant->setStatut(4, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1647
        $participant->setStatut(4, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ;
1628
        include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
1648
        include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
1629
        $projet = new projet ($this->_db, $this->_id_projet) ;
1649
        $projet = new projet ($this->_db, $this->_id_projet) ;
1630
        $projet->getListesAssociees() ;
1650
        $projet->getListesAssociees() ;
1631
        if ($projet->avoirListe()) {
1651
        if ($projet->avoirListe()) {
Line 1634... Line 1654...
1634
            $annuaire->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1654
            $annuaire->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ;
1635
            include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ;
1655
            include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ;
1636
            $desinscription= new inscription_liste($this->_db) ;
1656
            $desinscription= new inscription_liste($this->_db) ;
1637
            $desinscription->desinscrireUtilisateur($annuaire, $projet->_listes_associes[0]) ;
1657
            $desinscription->desinscrireUtilisateur($annuaire, $projet->_listes_associes[0]) ;
1638
        }
1658
        }
-
 
1659
        $this->notifierCoordinateurs(PROJET_NOTIFICATION_DESINSCRIPTION_PROJET, $utilisateur);
-
 
1660
        include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php';
-
 
1661
        $liste_ext = new liste_externe($this->_db);
-
 
1662
		$listes = $liste_ext->getListesAssociees($this->_id_projet);
-
 
1663
		$info_liste = $liste_ext->getInfoListe($listes[0]);
-
 
1664
		$msg = '';
-
 
1665
		if (count ($listes) != 0) {
-
 
1666
			$msg = 'Pensez si vous le souhaitez à vous d&eacute;sinscrire de la liste de discussion, h&eacute;berg&eacute;e par Yahoo Groupes.';
-
 
1667
			$msg .= ' Vous pouvez le faire en <a href="mailto:';
-
 
1668
			$msg .= $info_liste->AGO_A_MAILDESA.'">cliquez ici</a>';
-
 
1669
		}
1639
        if ($this->_presentation != 'arbre') {
1670
        if ($this->_presentation != 'arbre') {
-
 
1671
            $message_retour = '<p class="information">Votre d&eacute;sinscription a bien &eacute;t&eacute; prise en compte. '.$msg.'</p>';
1640
            include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ;
1672
            include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ;
1641
            return $retour ;
1673
            return $retour ;
1642
        } else {
1674
        } else {
1643
            $this->_action = PROJET_ACTION_VOIR_RESUME;
1675
            $this->_action = PROJET_ACTION_VOIR_RESUME;
1644
        }
1676
        }
1645
    } // end of member function inscriptionProjet
1677
    }
Line 1646... Line 1678...
1646
 
1678
 
1647
    /**
1679
    /**
1648
     * Renvoie le formulaire de création d'un wiki
1680
     * Renvoie le formulaire de creation d'un wiki
1649
     *
1681
     *
1650
     * @return void
1682
     * @return void
1651
     * @access public
1683
     * @access public
1652
     */
1684
     */
Line 1848... Line 1880...
1848
                    PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE => 'Pas de fichier s&eacute;lectionn&eacute;',
1880
                    PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE => 'Pas de fichier s&eacute;lectionn&eacute;',
1849
                    PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE => 'Impossible de cr&eacute;er le r&eacute;pertoire'
1881
                    PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE => 'Impossible de cr&eacute;er le r&eacute;pertoire'
1850
        ) ;
1882
        ) ;
1851
        return '<p class="erreur">'.$messageErreur[$valeur].'</p>' ;
1883
        return '<p class="erreur">'.$messageErreur[$valeur].'</p>' ;
1852
    } // end of member function messageErreur
1884
    } // end of member function messageErreur
-
 
1885
	
-
 
1886
	/** Envoie de mail pour prevenir les coordinateurs d une action sur le projet
-
 
1887
	 * 
-
 
1888
	 * 
-
 
1889
	 */
Line -... Line 1890...
-
 
1890
 
-
 
1891
	function notifierCoordinateurs ($notification, $utilisateur) {
-
 
1892
		
-
 
1893
		include_once PROJET_CHEMIN_CLASSES.'projetTemplate.class.php';
-
 
1894
		
-
 
1895
		switch ($notification) {
-
 
1896
			case PROJET_NOTIFICATION_DEMANDE_INSCRIPTION : 
-
 
1897
				$sujet = PROJET_TEMPLATE_DEMANDE_INSCRIPTION_SUJET;
-
 
1898
				$corps = PROJET_TEMPLATE_DEMANDE_INSCRIPTION_CORPS;
-
 
1899
			break;
-
 
1900
			case PROJET_NOTIFICATION_INSCRIPTION_NOUVELLE :
-
 
1901
				$sujet = PROJET_TEMPLATE_INSCRIPTION_NOUVELLE_SUJET;
-
 
1902
				$corps = PROJET_TEMPLATE_INSCRIPTION_NOUVELLE_CORPS;
-
 
1903
			break;
-
 
1904
			case PROJET_NOTIFICATION_DESINSCRIPTION_PROJET :
-
 
1905
				$sujet = PROJET_TEMPLATE_DESINSCRIPTION_SUJET;
-
 
1906
				$corps = PROJET_TEMPLATE_DESINSCRIPTION_CORPS;
-
 
1907
			break;
-
 
1908
			case PROJET_NOTIFICATION_NOUVEAU_DOC:
-
 
1909
				$sujet = PROJET_TEMPLATE_NOUVEAU_DOC_SUJET;
-
 
1910
				$corps = PROJET_TEMPLATE_NOUVEAU_DOC_CORPS;
-
 
1911
			break;
-
 
1912
	
-
 
1913
		}
-
 
1914
		
-
 
1915
		include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
-
 
1916
        $projet = new projet ($this->_db, $this->_id_projet) ;
-
 
1917
        include_once PROJET_CHEMIN_CLASSES.'participe.class.php';
-
 
1918
		$participant = new participe($this->_db) ;
-
 
1919
		$tableau_coordinateur = $participant->getCoordinateurs($this->_id_projet) ;
-
 
1920
		
-
 
1921
		$objet_mail =& Mail::factory('smtp');
-
 
1922
		
-
 
1923
		
-
 
1924
		
Line -... Line 1925...
-
 
1925
		$modele = new projetTemplate($GLOBALS['projet_db']);
-
 
1926
 
-
 
1927
		$sujet_mail = $modele->getTemplate($sujet, PROJET_LANGUE_DEFAUT);
-
 
1928
		$corps_mail = $modele->getTemplate($corps, PROJET_LANGUE_DEFAUT);
-
 
1929
		
-
 
1930
	    if (PEAR::isError($sujet_mail)) $sujet_mail->raiseError ($sujet_mail->getMessage().'<br />'.$sujet_mail->getDebugInfo());
-
 
1931
	    
-
 
1932
	    $corps_mail = str_replace ('{nom}', $utilisateur->getInfo( 'nom'), $corps_mail);
-
 
1933
	    $corps_mail = str_replace ('{prenom}', $utilisateur->getInfo( 'prenom'), $corps_mail);
-
 
1934
	    $corps_mail = str_replace ('{nom_projet}', $projet->getTitre(), $corps_mail);
-
 
1935
	    $corps_mail = str_replace ('{lien}', str_replace ('&amp;', '&', $this->_url->getURL()), $corps_mail);
-
 
1936
		
-
 
1937
		$entetes['From'] = PROJET_MAIL_ADMINISTRATEUR;
-
 
1938
        $entetes['To'] = '';
-
 
1939
        $entetes['Subject'] = trim ($sujet_mail) ;  // le trim est necessaire pour enlever d eventuels retour-chariot qui foutent el l air le message 
-
 
1940
        $entetes['Date'] = date ('D, M j G:i:s \C\E\S\T Y') ;
-
 
1941
        $entetes['Message-ID'] = md5(time()) ;
-
 
1942
        $entetes['reply-to'] = $this->_auth->getUserName();
-
 
1943
        $entetes['Content-Type'] = 'text/plain' ;
-
 
1944
        
-
 
1945
		foreach ($tableau_coordinateur as $coordinateur) {
-
 
1946
			$entetes['To'] .= $coordinateur[3].',';	// Le champs 3 est le mail
-
 
1947
			
-
 
1948
		}
-
 
1949
		// On enleve la virgule finale
-
 
1950
		
-
 
1951
		$entetes['To'] = substr ($entetes['To'], 0, -1);
-
 
1952
 
-
 
1953
		// on envoie le mail
Line 1853... Line 1954...
1853
 
1954
		$objet_mail->send($entetes['To'], $entetes, html_entity_decode ($corps_mail));
Line 1854... Line 1955...
1854
 
1955
	}
1855
 
1956
 
-
 
1957
 
-
 
1958
} // end of projetControleur
-
 
1959
 
-
 
1960
class bouton {
-
 
1961
	static function toHTML($lien, $label, $id, $class='projet_bouton_action') {
-
 
1962
		
-
 
1963
		if ($lien != '#') {
-
 
1964
			$balise_a_debut = '<a href="'.$lien.'"'.($id == 'cross'? ' onclick="javascript:return confirm(\''.$label.' ?\');"':'').'>';
1856
 
1965
			$balise_a_fin = '</a>';	
1857
} // end of projetControleur
1966
		} else {
1858
 
1967
			$balise_a_debut = '';
1859
class bouton {
1968
			$balise_a_fin = '';
-
 
1969
		}
-
 
1970
		return '<div id="bouton_'.$id.'" class="'.$class.'">' .
-
 
1971
				$balise_a_debut.'<img src="'.PROJET_CHEMIN_ICONES.$id.'.png" alt="'.$label.'" />'.$label.$balise_a_fin.'</div>';
1860
	static function toHTML($lien, $label, $id) {
1972
	}
-
 
1973
}
-
 
1974
/* +--Fin du code ----------------------------------------------------------------------------------------+
1861
		return '<div id="bouton_'.$id.'" class="projet_bouton_action">' .
1975
*
1862
				'<a href="'.$lien.'"><img src="'.PROJET_CHEMIN_ICONES.$id.'.png" alt="'.$label.'" />'.$label.'</a></div>';
1976
* $Log: not supported by cvs2svn $