//Autres auteurs : *@author Aucun *@copyright Tela-Botanica 2000-2005 *@version $Revision: 1.11 $ // +------------------------------------------------------------------------------------------------------+ */ // +------------------------------------------------------------------------------------------------------+ // | ENTETE du PROGRAMME | // +------------------------------------------------------------------------------------------------------+ include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; include_once (PROJET_CHEMIN_CLASSES.'HTML_formulaireMail.class.php') ; include_once (PROJET_CHEMIN_CLASSES.'inscription_liste.class.php') ; include_once (PROJET_CHEMIN_CLASSES.'ezmlmAccessObject.class.php') ; // RAPPEL IMPORTANT // On se situe dans la méthode run() de la classe projetControleur // // création de l'objet projet courant $projet = new projet ($this->_db, $this->_id_projet) ; $liste_ext_res = '' ; $sortie_liste = '' ; $inscription_laius ='' ; $this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $this->_id_projet); if ($projet->avoirListe()) { foreach ($projet->_listes_associes as $info_liste) { ob_start() ; $id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ; if ($this->_auth->getAuth()) { $participant = new participe($this->_db) ; $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 ; } else { $droits = PROJET_DROIT_AUCUN; } // gestion de l'inscription désinscription à la liste // TODO : la gestion de linscription au résumé $inscription_liste = new inscription_liste($this->_db) ; $statut = $inscription_liste->getStatutInscrit( $info_liste->getId(), $this->_auth ) ; if ($this->_auth->getAuth() && isset($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) { if ($statut == 2) { $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_DESINSCRIPTION_LISTE); $inscription_laius ='

'.PROJET_VOUS_ETES_INSCRIT.'

'."\n" ; $inscription_laius .= ''.PROJET_SE_DESINSCRIRE_LISTE.''."\n" ; } else { $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_INSCRIPTION_LISTE); $inscription_laius ='

'.PROJET_VOUS_N_ETES_PAS_INSCRIT.'

'."\n" ; $inscription_laius .= ''.PROJET_S_INSCRIRE.''."\n" ; } } if ($info_liste->isPublic() || $droits <= PROJET_DROIT_CONTRIBUTEUR) { include_once PROJET_CHEMIN_CLASSES_LISTES.'ezmlm.php' ; $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() ; print '' . $info_liste->getAdresseEnvoi() ; print "
\n"; $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL); if (isset ($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) print ''.PROJET_ECRIRE_LISTE.'
'; print '

'.PROJET_TOUS_LES_MESSAGES.'

'."\n"; $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_FORUM); $xml_parser = &new ezmlmAccessObject('calendrier_messages', $info_liste->getDomaine(), $info_liste->getNom(), $GLOBALS['lang'], $this->_url->getURL()) ; $xml_parser->load(); $resultat = $xml_parser->parse() ; $xml_parser->reset(); //$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $this->_action) ; // On teste si l'on vient d'une réponse à un email, si oui // on modifie $liste->action pour renvoyer le message auquelon vient de répondre if (isset($_POST['messageid'])) { $liste->action = 'show_msg' ; } switch ($liste->action) { case "show_msg": if (count($liste->actionargs) < 2) { $liste->error(EZMLM_INVALID_SYNTAX,TRUE); } // actionargs[0] contient le nom du répertoire et actionargs[1] le nom du fichier // On appelle la fonction qui affiche un fichier $xml_parser->setAction ('message'); $xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; $xml_parser->load(); ob_start (); $xml_parser->parse() ; $mail = ob_get_contents() ; ob_end_clean(); $mimeDecode = new Mail_mimeDecode($mail) ; $mailDecode = $mimeDecode->decode(array('decode_bodies' => 'true', 'include_bodies' => 'true')) ; $message = new ezmlm_msgdisplay() ; $message->listname = $info_liste->getNom(); $this->_url->addQueryString ('action', 'show_msg'); if ($xml_parser->getNumeroFichierPrecedent() != '') { print '['.PROJET_PRECEDENT.']'; } else { print '['.PROJET_PRECEDENT.']' ; } if ($xml_parser->getNumeroFichierSuivant() != '') { print '['.PROJET_SUIVANT. ']'; } else { print '['.PROJET_SUIVANT.']' ; } $this->_url->addQueryString ('action', 'repondre'); print '['.PROJET_REPONDRE.']'; if ($isCoord) { $this->_url->addQueryString ('action', 'supprimer'); print '['. PROJET_SUPPRIMER.']'; } print '
' ; print $message->parse_entete_mail($mailDecode) ; $message->parse_template($mailDecode, $liste->actionargs[1], $liste->actionargs[0]); print $message->message_rendu; print '
' ; break; case "list_info": print'

'.PROJET_DERNIERS_MESSAGES.'

'."\n" ; $xml_parser->reset() ; $xml_parser->setAction ('derniers_messages'); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $derniers_messages = ob_get_contents() ; ob_end_clean(); echo $derniers_messages ; break; case "show_threads": $xml_parser->reset() ; $xml_parser->setAction ('messages_thread'); $xml_parser->setMois($liste->actionargs[0]); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $messages_thread = ob_get_contents() ; ob_end_clean(); echo $messages_thread ; break; case "show_author_msgs" : $xml_parser->reset() ; $xml_parser->setAction ('messages_auteur'); $xml_parser->setHashAuteur($liste->actionargs[0]); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $messages_auteur = ob_get_contents() ; ob_end_clean(); echo $messages_auteur ; break; case 'show_month' : echo '[ '.$liste->makelink(PROJET_VARIABLE_ACTION.'=forums&action=show_threads&actionargs[]='. $liste->actionargs[0], 'par fil de discussion').' ]' ; $xml_parser->reset() ; $xml_parser->setAction ('messages_mois'); $xml_parser->setMois($liste->actionargs[0]); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $messages_mois = ob_get_contents() ; ob_end_clean(); echo $messages_mois ; break; case 'repondre' : if (count($liste->actionargs) < 2) { $liste->error(EZMLM_INVALID_SYNTAX,TRUE); } $xml_parser->setAction ('message'); $xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; $xml_parser->load(); ob_start (); $xml_parser->parse() ; $message = ob_get_contents() ; ob_end_clean(); $mimeDecode = new Mail_mimeDecode($message) ; $mailDecode = $mimeDecode->decode(array('decode_bodies' => 'true', 'include_bodies' => 'true')) ; if (isset($_SESSION['formulaire_mail'])) { unset ($_SESSION['formulaire_mail']) ; } $formulaireReponse = new HTML_formulaireMail('formulaire_reponse', 'post', str_replace('&', '&', $this->_url->getURL()). '&action='.PROJET_ENVOYER_UN_MAIL_V. '&actionargs[]='.$liste->actionargs[0]. '&actionargs[]='.$liste->actionargs[1]. '&'.PROJET_VARIABLE_ACTION.'='.PROJET_ENVOYER_UN_MAIL_V) ; $formulaireReponse->construitFormulaire() ; $repondre = new ezmlm_repondre(); $repondre->listdir = $liste->listdir ; $this->_url->removeQueryString (PROJET_VARIABLE_ACTION) ; $repondre->forcehref = $this->_url->getURL(); $repondre->listname = $info_liste->getNom() ; // actionargs[0] contient le nom du répertoire et actionargs[1] le nom du fichier // On appelle la fonction qui affiche un fichier print'

'.PROJET_REDIGER_REPONSE.'

'."\n" ; $repondre->repondre($liste->actionargs[0] . "/" . $liste->actionargs[1]); $repondre->parse_template($mailDecode, $liste->actionargs[0], $liste->actionargs[1]); $formulaireReponse->addElement ('hidden', 'messageid', $mailDecode->headers['message-id']) ; // Ajout de > au début de chaque ligne du message $tableau = explode ("\n", $repondre->message_rendu) ; $repondre->message_rendu = "> ".implode ("\n> ", $tableau) ; $formulaireReponse->setDefaults(array('mail_corps' => $repondre->message_rendu, 'mail_titre' => 'Re : '.$repondre->decode_iso ($mailDecode->headers['subject']))) ; print $formulaireReponse->toHTML() ; break; case 'supprimer' : $xml_parser->reset() ; $xml_parser->setAction ('supprimer'); $xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; $xml_parser->load(); print'

'.PROJET_DERNIERS_MESSAGES.'

'."\n" ; $xml_parser->reset() ; $xml_parser->setAction ('derniers_messages'); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $derniers_messages = ob_get_contents() ; ob_end_clean(); echo $derniers_messages ; break; } } else { print PROJET_MESSAGE_LISTE_PRIVEE ; } $sortie_liste = ob_get_contents() ; ob_end_clean() ; } } 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) { //$liste_ext_res .= '

'.PROJET_LISTES_ASSOCIEES.'

'."\n" ; for ($i = 0; $i < count ($tableau_liste); $i++) { $info_liste = $listes_ext->getInfoListe($tableau_liste[$i]) ; $liste_ext_res .= '

'.$info_liste->AGO_A_URLGRP.'

'."\n" ; $liste_ext_res .= '
'."\n" ; } } $retour .= '

' ; if (!isset($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) $retour .= PROJET_PROJET.' : '; $retour .= $projet->getTitre()."

" ; $retour .= $inscription_laius ; $retour .= '

'.PROJET_ADRESSE_ECRIRE.'

'."\n" ; $retour .= $sortie_liste ; $retour .= $liste_ext_res ; ?>