//Autres auteurs : *@author Aucun *@copyright Tela-Botanica 2000-2005 *@version $Revision: 1.13 $ // +------------------------------------------------------------------------------------------------------+ */ // +------------------------------------------------------------------------------------------------------+ // | 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 methode run() de la classe projetControleur // // creation de l'objet projet courant $projet = new projet ($this->_db, $this->_id_projet) ; /* contiendra le lien vers la liste yahoo */ $liste_ext_res = '' ; $url_page_en_cours = $this->_url->getURL(); $inscription_laius ='' ; $bouton_poster = ''; $bouton_desinscription_liste = ''; $loggue = $this->_auth->getAuth(); // Un appel a papyrus pour modifier le titre de la page $GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = $projet->getTitre().' - '.PROJET_FORUM; 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" ; } $avoir_liste_externe = true; $adresse_envoie = $info_liste->AGO_A_MAILSEND; $adresse_inscription = $info_liste->AGO_A_MAILABO; } else { $avoir_liste_externe = false; } $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) ; $droits = $participant->getStatut($id_u, $this->_id_projet); } else { $droits = PROJET_DROIT_AUCUN; $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_S_INSCRIRE); $lien_inscription = 'javascript:animatedcollapse.toggle(\'projet_bloc_inscription\');'; $label_url_inscription = 'S\'inscrire à ce projet'; GEN_stockerFichierScript('jquery', 'api/js/jquery/jquery.js'); GEN_stockerFichierScript('animatedcollapse', 'api/js/jquery/animatedcollapse.js'); GEN_stockerCodeScript('animatedcollapse.addDiv(\'projet_bloc_inscription\', \'fade=1, height="100px"\');' ."\n". 'animatedcollapse.init();' ."\n"); } switch ($droits) { case PROJET_DROIT_AUCUN : $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_S_INSCRIRE); $lien_inscription = $this->_url->getURL(); $label_url_inscription = 'S\'inscrire à ce projet'; GEN_stockerFichierScript('jquery', 'api/js/jquery/jquery.js'); GEN_stockerFichierScript('animatedcollapse', 'api/js/jquery/animatedcollapse.js'); GEN_stockerCodeScript('animatedcollapse.addDiv(\'projet_bloc_inscription\', \'fade=1, height="100px"\');' ."\n". 'animatedcollapse.init();' ."\n"); break; } // gestion de l'inscription desinscription a la liste // TODO : la gestion de linscription au resume $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 ($inscription_liste->getStatutInscrit($info_liste->getId(), $this->_auth) == 0) { $action_inscription = PROJET_ACTION_INSCRIPTION_LISTE ; $label_inscription = 'S\'inscrire à la liste' ; } else { // L'action envoyer un mail $action_inscription = PROJET_ENVOYER_UN_MAIL ; $label_inscription = PROJET_ECRIRE_LISTE ; $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_DESINSCRIPTION_LISTE); $bouton_desinscription_liste = bouton::toHTML($this->_url->getURL(), 'Se désinscrire de la liste','cross'); } if ($info_liste->isPublic() || $droits <= PROJET_DROIT_CONTRIBUTEUR) { include_once PROJET_CHEMIN_CLASSES_LISTES.'ezmlm.php' ; $liste = new ezmlm_php() ; // Parametrage 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() ; if (!$avoir_liste_externe) { $adresse_envoie = $info_liste->getAdresseEnvoi(); } print '' . $adresse_envoie ; print "
\n"; $this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action_inscription); $bouton_poster = bouton::toHTML($this->_url->getURL(), $label_inscription,'ecrire'); 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); if ($liste->action != 'show_message') { $xml_parser = &new ezmlmAccessObject('calendrier_messages', $info_liste->getDomaine(), $info_liste->getNom(), $GLOBALS['lang'], $this->_url->getURL()) ; $xml_parser->load(); ob_start(); $resultat = $xml_parser->parse() ; $calendrier = ob_get_contents(); ob_end_clean(); $xml_parser->reset(); } //$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $this->_action) ; // On teste si l'on vient d'une reponse a un email, si oui // on modifie $liste->action pour renvoyer le message auquelon vient de repondre 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 repertoire 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(); $numero_message = $xml_parser->getNumeroMessage(); $total_message = $xml_parser->getNombreTotalMessage(); $this->_url->addQueryString ('action', 'show_msg'); ob_start(); if ($xml_parser->getNumeroFichierPrecedent() != 0) { $lien_precedent = $this->_url->getURL(). '&actionargs[]='. $xml_parser->getNumeroRepertoirePrecedent().'&actionargs[]='. $xml_parser->getNumeroFichierPrecedent(); $bouton_precedent = bouton::toHTML($lien_precedent, PROJET_PRECEDENT, 'gauche', 'projet_bouton_inline'); $navigation = $bouton_precedent; } if ($xml_parser->getNumeroFichierSuivant() != '' && (int) $numero_message < (int) $total_message) { $lien_suivant = $this->_url->getURL(). '&actionargs[]='. $xml_parser->getNumeroRepertoireSuivant().'&actionargs[]='. $xml_parser->getNumeroFichierSuivant(); $bouton_suivant = bouton::toHTML($lien_suivant ,PROJET_SUIVANT, 'droite', 'projet_bouton_inline'); $navigation .= $bouton_suivant; } $this->_url->addQueryString ('action', 'repondre'); $bouton_repondre = bouton::toHTML($this->_url->getURL().'&actionargs[]='.$liste->actionargs[0]. '&actionargs[]='.$liste->actionargs[1], PROJET_REPONDRE, 'repondre', 'projet_bouton_inline'); $this->_url->removeQueryString('action'); /* Un bouton pour revenir a la liste des messages */ $navigation .= bouton::toHTML($this->_url->getURL() ,'retour', 'haut', 'projet_bouton_inline'); if (!$avoir_liste_externe && $droits <= PROJET_DROIT_CONTRIBUTEUR) $navigation .= $bouton_repondre; if ($droits == PROJET_DROIT_COORDINATEUR || $droits == PROJET_DROIT_ADMINISTRATEUR) { $this->_url->addQueryString ('action', 'supprimer'); $bouton_suppression_message = bouton::toHTML($this->_url->getURL().'&actionargs[]='.$liste->actionargs[0]. '&actionargs[]='.$liste->actionargs[1], 'Supprimer', 'cross', 'projet_bouton_inline'); $navigation .= $bouton_suppression_message; } $this->_url->removeQueryString ('action'); print '
' ; print $message->parse_entete_mail($mailDecode) ; $message->parse_template($mailDecode, $liste->actionargs[1], $liste->actionargs[0]); print $message->message_rendu; print '
' ; $message = ob_get_contents(); ob_end_clean(); break; case "list_info": $xml_parser->reset() ; $xml_parser->setAction ('derniers_messages'); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $derniers_messages = ob_get_contents() ; ob_end_clean(); 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(); $message = $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(); $message = $messages_auteur ; break; case 'show_month' : $this->_url->addQueryString(PROJET_VARIABLE_ACTION, 'forums'); $this->_url->addQueryString('action', 'show_threads'); $this->_url->addQueryString('actionargs[]', $liste->actionargs[0]); $message = '[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(); $message .= $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 $message = '

'.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']))) ; $message .= $formulaireReponse->toHTML() ; break; case 'supprimer' : $xml_parser->reset() ; $xml_parser->setAction ('supprimer'); $xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; $xml_parser->load(); $message = '

'.PROJET_DERNIERS_MESSAGES.'

'."\n" ; $xml_parser->reset() ; $xml_parser->setAction ('derniers_messages'); $xml_parser->load(); ob_start (); $xml_parser->parse() ; $message .= ob_get_contents() ; ob_end_clean(); break; } } else { $message = PROJET_MESSAGE_LISTE_PRIVEE ; } ob_end_clean() ; } } if ($liste->action == 'show_msg') $squelette = 'message'; else $squelette = 'forum'; ob_start(); include_once PROJET_CHEMIN_APPLI.'/squelettes/'.$squelette.'.tpl.html'; $retour .= ob_get_contents(); ob_end_clean(); $this->_url->removeQueryString ('actionargs'); $this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_FORUM); /* +--Fin du code ----------------------------------------------------------------------------------------+ * * $Log: forums.php,v $ * Revision 1.13 2008-08-25 15:02:49 alexandre_tb * mise en place des squelettes * * * +-- Fin du code ----------------------------------------------------------------------------------------+ */ ?>