Rev 294 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*vim: set expandtab tabstop=4 shiftwidth=4: */// +------------------------------------------------------------------------------------------------------+// | PHP version 4.1 |// +------------------------------------------------------------------------------------------------------+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |// +------------------------------------------------------------------------------------------------------+// | This library is free software; you can redistribute it and/or |// | modify it under the terms of the GNU General Public |// | License as published by the Free Software Foundation; either |// | version 2.1 of the License, or (at your option) any later version. |// | |// | This library is distributed in the hope that it will be useful, |// | but WITHOUT ANY WARRANTY; without even the implied warranty of |// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |// | General Public License for more details. |// | |// | You should have received a copy of the GNU General Public |// | License along with this library; if not, write to the Free Software |// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |// +------------------------------------------------------------------------------------------------------+// CVS : $Id: forums.php,v 1.14 2008-09-16 14:12:43 alexandre_tb Exp $/*** Application projet** Action forums**@package projet//Auteur original :*@author Alexandre Granier <alexandre@tela-botanica.org>//Autres auteurs :*@author Aucun*@copyright Tela-Botanica 2000-2005*@version $Revision: 1.14 $// +------------------------------------------------------------------------------------------------------+*/// +------------------------------------------------------------------------------------------------------+// | 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 .= '<h2>'.PROJET_LISTES_ASSOCIEES.'</h2>'."\n" ;for ($i = 0; $i < count ($tableau_liste); $i++) {$info_liste = $listes_ext->getInfoListe($tableau_liste[$i]) ;$liste_ext_res .= '<p><a href="'.$info_liste->AGO_A_URLGRP.'">'.$info_liste->AGO_A_URLGRP.'</a></p>'."\n" ;$liste_ext_res .= '<br />'."\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 ='<h2>'.PROJET_VOUS_ETES_INSCRIT.'</h2>'."\n" ;$inscription_laius .= '<a href="'.$this->_url->getURL().'">'.PROJET_SE_DESINSCRIRE_LISTE.'</a>'."\n" ;} else {$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_INSCRIPTION_LISTE);$inscription_laius ='<h2>'.PROJET_VOUS_N_ETES_PAS_INSCRIT.'</h2>'."\n" ;$inscription_laius .= '<a href="'.$this->_url->getURL().'">'.PROJET_S_INSCRIRE.'</a>'."\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 '<a href="mailto:'.$adresse_envoie.'">' . $adresse_envoie ;print "</a><br />\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 '<a href="'.$this->_url->getURL().'">'.PROJET_ECRIRE_LISTE.'</a><br />';print '<h2>'.PROJET_TOUS_LES_MESSAGES.'</h2>'."\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 repondreif (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 '<div class="message">' ;print $message->parse_entete_mail($mailDecode) ;$message->parse_template($mailDecode, $liste->actionargs[1], $liste->actionargs[0]);print $message->message_rendu;print '</div>' ;$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 = '[<a href="'.$this->_url->getURL().'">par fil de discussion</a>]';$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 = '<h2>'.PROJET_REDIGER_REPONSE.'</h2>'."\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 = '<h2>'.PROJET_DERNIERS_MESSAGES.'</h2>'."\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: not supported by cvs2svn $* Revision 1.13 2008-08-25 15:02:49 alexandre_tb* mise en place des squelettes*** +-- Fin du code ----------------------------------------------------------------------------------------+*/?>