Subversion Repositories Sites.tela-botanica.org

Rev

Blame | Last modification | View Log | RSS feed

<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2005                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


include ("inc.php3");
include_ecrire ("inc_mots.php3");
include_ecrire ("inc_calendrier.php");

function http_afficher_rendez_vous($date_heure, $date_fin)
{
  global $spip_lang_rtl;

        if (jour($date_heure) == jour($date_fin) AND mois($date_heure) == mois($date_fin) AND annee($date_heure) == annee($date_fin)) {         
          echo "<p><center class='verdana2'>"._T('titre_rendez_vous')." ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b><br><b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
          echo " &nbsp; <img src='puce$spip_lang_rtl.gif' border='0'> &nbsp;  ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</center>";
        } else {
          echo "<p><center class='verdana2'>"._T('titre_rendez_vous')."<br> ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b>, <b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
          echo "<center class='verdana2'><img src='puce$spip_lang_rtl.gif' border='0'> ".majuscules(nom_jour($date_fin))." ".majuscules(affdate($date_fin)).", <b>".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</b>";
          //echo " &nbsp; <img src='puce$spip_lang_rtl.gif' border='0'> &nbsp;  ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</center>";
        }
}

function sql_nouveau_participant($nouv_auteur, $id_message)
{
  spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$nouv_auteur' AND id_message='$id_message'");
  spip_query("INSERT INTO spip_auteurs_messages (id_auteur,id_message,vu) VALUES ('$nouv_auteur','$id_message','non')");
}

function http_auteurs_ressemblants($cherche_auteur, $id_message)
{
  global $connect_id_auteur;
  $query = spip_query("
SELECT id_auteur, nom 
FROM spip_auteurs 
WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
  $table_auteurs = array();
  $table_ids = array();
  while ($row = spip_fetch_array($query)) {
    $table_auteurs[] = $row['nom'];
    $table_ids[] = $row['id_auteur'];
  }
  $resultat =  mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
  if (!$resultat) {
    return '<b>' . _T('info_recherche_auteur_zero', array('cherche_auteur' => $cherche_auteur))."</b><br />";
  }
  else if (count($resultat) == 1) {
    list(, $nouv_auteur) = each($resultat);
    sql_nouveau_participant($nouv_auteur, $id_message);
    $row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$nouv_auteur"));
    $nom_auteur = $row['nom'];
    return "<b>"._T('info_ajout_participant')."</b><br />" .
      "<ul><li><font face='Verdana,Arial,Sans,sans-serif' size='2'><b><font size='3'>$nom_auteur</font></b></font>\n</ul>";
  }
  else if (count($resultat) < 16) {
    $res = '';
    $query = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN (" .
                         join(',', $resultat) .
                         ") ORDER BY nom");
    while ($row = spip_fetch_array($query)) {
      $id_auteur = $row['id_auteur'];
      $nom_auteur = $row['nom'];
      $email_auteur = $row['email'];
      $bio_auteur = $row['bio'];
      $res .= "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><b><FONT SIZE=3>$nom_auteur</FONT></b>" .
        ($email_auteur ? " ($email_auteur)" : '') .
        " | <A HREF=\"message.php3?id_message=$id_message&ajout_auteur=oui&nouv_auteur=$id_auteur\">" .
        _T('lien_ajout_destinataire').
        "</A>" .
        (!trim($bio_auteur) ? '' :
         ("<br /><FONT SIZE=1>".propre(couper($bio_auteur, 100))."</FONT>\n")) .
        "</FONT></LI>\n";
    }
    return  "<b>"._T('info_recherche_auteur_ok', array('cherche_auteur' => $cherche_auteur))."</b><br /><UL>$res</UL>";
  }
  else {
    return "<b>"._T('info_recherche_auteur_a_affiner', array('cherche_auteur' => $cherche_auteur))."</b><br />";
  }
}

function http_visualiser_participants($auteurs_tmp)
{
  return "\n<table border='0' cellspacing='0' cellpadding='3' width='100%' background=''><tr><td bgcolor='#EEEECC'>" .
    bouton_block_invisible("auteurs,ajouter_auteur") .
    "<span class='serif2'><b>" .
    _T('info_nombre_partcipants') .
    "</b></span>" .
    ((count($auteurs_tmp) == 0) ? '' :
     (" <font class='arial2'>".join($auteurs_tmp,", ")."</font>")) .
    "</td></tr></table>";
}

function http_ajouter_participants($ze_auteurs, $id_message)
{       
    $query_ajout_auteurs = "SELECT * FROM spip_auteurs WHERE ";
    if ($ze_auteurs) $query_ajout_auteurs .= "id_auteur NOT IN ($ze_auteurs) AND ";
    $query_ajout_auteurs .= " messagerie<>'non' AND statut IN ('0minirezo', '1comite') ORDER BY statut, nom";
    $result_ajout_auteurs = spip_query($query_ajout_auteurs);

    if (spip_num_rows($result_ajout_auteurs) > 0) {

      echo "<FORM ACTION='message.php3' METHOD='post'>";
      echo "<DIV align=left><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><b>"._T('bouton_ajouter_participant')." &nbsp; </b></FONT>\n";
      echo "<input TYPE='Hidden' NAME='id_message' VALUE=\"$id_message\">";

      if (spip_num_rows($result_ajout_auteurs) > 50) {
        echo "<input TYPE='text' NAME='cherche_auteur' CLASS='fondl' VALUE='' SIZE='20'>";
        echo "<input TYPE='submit' NAME='Chercher' VALUE='"._T('bouton_chercher')."' CLASS='fondo'>";
      }
      else {
        echo "<SELECT NAME='nouv_auteur' SIZE='1' STYLE='WIDTH=150' CLASS='fondl'>";
        $group = false;
        $group2 = false;
        
        while($row=spip_fetch_array($result_ajout_auteurs)) {
          $id_auteur = $row['id_auteur'];
          $nom = $row['nom'];
          $email = $row['email'];
          $statut_auteur = $row['statut'];
          
          $statut_auteur=ereg_replace("0minirezo", _T('info_statut_administrateur'), $statut_auteur);
          $statut_auteur=ereg_replace("1comite", _T('info_statut_redacteur'), $statut_auteur);
          $statut_auteur=ereg_replace("2redac", _T('info_statut_redacteur'), $statut_auteur);
          $statut_auteur=ereg_replace("5poubelle", _T('info_statut_efface'), $statut_auteur);
          
          $premiere = strtoupper(substr(trim($nom), 0, 1));

          if ($GLOBALS['connect_statut'] != '0minirezo') {
            if ($p = strpos($email, '@')) $email = substr($email, 0, $p).'@...';
          }

          if ($statut_auteur != $statut_old) {
            echo "\n<OPTION VALUE=\"x\">";
            echo "\n<OPTION VALUE=\"x\"> $statut_auteur".'s';
          }
                                                
          if ($premiere != $premiere_old AND ($statut_auteur != _T('info_administrateur') OR !$premiere_old)) {
            echo "\n<OPTION VALUE=\"x\">";
          }
          
          $texte_option = supprimer_tags(couper("$nom ($email) ", 40));
          echo "\n<OPTION VALUE=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;$texte_option";
          $statut_old = $statut_auteur;
          $premiere_old = $premiere;
        }
        
        echo "</SELECT>";
        echo "<input TYPE='submit' NAME='Ajouter' VALUE='"._T('bouton_ajouter')."' CLASS='fondo'>";
      }
      echo "</div></FORM>";
    }
}

function http_afficher_forum_perso($id_message, $titre)
{
        $forum_retour = urlencode("message.php3?id_message=$id_message");

        echo "<br /><br />\n<div align='center'>";
        icone(_T('icone_poster_message'), "forum_envoi.php3?statut=perso&adresse_retour=".$forum_retour."&id_message=$id_message&titre_message=".urlencode($titre), "forum-interne-24.gif", "creer.gif");
        echo "</div>\n<p align='left'>";

        $query_forum = "SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' AND id_parent=0 ORDER BY date_heure DESC LIMIT 0,20";
        afficher_forum(spip_query($query_forum), $forum_retour);
        echo "\n</p>";
}



if (!spip_num_rows(spip_query("
SELECT id_auteur FROM spip_auteurs_messages WHERE id_auteur=$connect_id_auteur AND id_message=$id_message"))) {

        $row = spip_fetch_array(spip_query("SELECT type FROM spip_messages WHERE id_message=$id_message"));
        if ($row['type'] != "affich"){
                debut_page(_T('info_acces_refuse'));
                debut_gauche();
                debut_droite();
                echo "<b>"._T('avis_non_acces_message')."</b><p>";
                fin_page();
                exit;
        }
}

if ($ajout_forum AND strlen($texte) > 10 AND strlen($titre) > 2) {
        spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE id_message='$id_message'");
}

if ($modifier_message == "oui") {
        $titre = addslashes($titre);
        $texte = addslashes($texte);
        spip_query("UPDATE spip_messages SET titre='$titre', texte='$texte' WHERE id_message='$id_message'");
}

if ($changer_rv) {
        spip_query("UPDATE spip_messages SET rv='$rv' WHERE id_message='$id_message'");
}

if ($jour) {
                        // Convertir dates a calendrier correct (exemple: 31 fevrier devient debut mars, 24h12 devient 00h12 du lendemain)
                        $date = date("Y-m-d H:i:s", mktime($heures,$minutes,0,$mois, $jour, $annee));
                        
                        $jour = journum($date);
                        $mois = mois($date);
                        $annee = annee($date);
                        $heures = heures($date);
                        $minutes = minutes($date);
                        
                        // Verifier que la date de fin est bien posterieure au debut
                        $unix_debut = date("U", mktime($heures,$minutes,0,$mois, $jour, $annee));
                        $unix_fin = date("U", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
                        if ($unix_fin <= $unix_debut) {
                                $jour_fin = $jour;
                                $mois_fin = $mois;
                                $annee_fin = $annee;
                                $heures_fin = $heures + 1;
                                $minutes_fin = $minutes;
                        }               

                        $date_fin = date("Y-m-d H:i:s", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
                        
                        $jour_fin = journum($date_fin);
                        $mois_fin = mois($date_fin);
                        $annee_fin = annee($date_fin);
                        $heures_fin = heures($date_fin);
                        $minutes_fin = minutes($date_fin);
                        

        spip_query("UPDATE spip_messages SET date_heure='$annee-$mois-$jour $heures:$minutes:00',  date_fin='$annee_fin-$mois_fin-$jour_fin $heures_fin:$minutes_fin:00' WHERE id_message='$id_message'");
}

if ($change_statut) {
        spip_query("UPDATE spip_messages SET statut='$change_statut' WHERE id_message='$id_message'");
        spip_query("UPDATE spip_messages SET date_heure=NOW() WHERE id_message='$id_message' AND rv<>'oui'");
}

if ($supp_dest) {
        spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$supp_dest'");
}

if ($row = spip_fetch_array(spip_query("SELECT * FROM spip_messages WHERE id_message=$id_message"))) {
        $id_message = $row['id_message'];
        $date_heure = $row["date_heure"];
        $date_fin = $row["date_fin"];
        $titre = typo($row["titre"]);
        $texte = propre($row["texte"]);
        $type = $row["type"];
        $statut = $row["statut"];
        $page = $row["page"];
        $rv = $row["rv"];
        $expediteur = $row['id_auteur'];

        $lejour=journum($row['date_heure']);
        $lemois = mois($row['date_heure']);             
        $lannee = annee($row['date_heure']);            

        
        // Marquer le message vu pour le visiteur
        if ($type != "affich")
                spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$connect_id_auteur'");

        debut_page($titre, "redacteurs", "messagerie");

        debut_gauche();
        
        if ($rv != 'non')
          echo http_calendrier_agenda ($lannee, $lemois, $lejour, $lemois, $lannee,false, 'calendrier.php3');
        
        echo "<br />";
        
        echo  http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces");
        echo  http_calendrier_rv(sql_calendrier_taches_pb(),"pb");
        echo  http_calendrier_rv(sql_calendrier_taches_rv(), "rv");

        if ($rv != "non") {
          list ($sh, $ah) = sql_calendrier_interval(sql_calendrier_jour($lannee,$lemois, $lejour));
          foreach ($ah as $k => $v)
            {
              foreach ($v as $l => $e)
                {
                  if (ereg("=$id_message$", $e['URL']))
                    {
                      $ah[$k][$l]['CATEGORIES'] = "calendrier-nb";
                      break;
                    }
                }
            }
          creer_colonne_droite();       
          echo http_calendrier_ics_titre($lannee,$lemois,$lejour,'calendrier.php3');
          echo http_calendrier_ics($lannee,$lemois, $lejour, $echelle, $partie_cal, 90, array($sh, $ah));
        }
        debut_droite();

        if ($type == 'normal') {
                $le_type = _T('info_message_2').aide ("messut");
                $la_couleur = "#02531B";
                $couleur_fond = "#CFFEDE";
        }
        else if ($type == 'pb') {
                $le_type = _T('info_pense_bete').aide ("messpense");
                $la_couleur = "#3874B0";
                $couleur_fond = "#EDF3FE";
        }
        else if ($type == 'affich') {
                $le_type = _T('info_annonce');
                $la_couleur = "#ccaa00";
                $couleur_fond = "#ffffee";
        }
        
        // affichage des caracteristiques du message

        echo "<div style='border: 1px solid $la_couleur; background-color: $couleur_fond; padding: 5px;'>"; // debut cadre de couleur
        //debut_cadre_relief("messagerie-24.gif");
        echo "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>";
        echo "<tr><td>"; # uniques

        echo "<font face='Verdana,Arial,Sans,sans-serif' size='2' color='$la_couleur'><b>$le_type</b></font><br />";
        echo "<font face='Verdana,Arial,Sans,sans-serif' size='5'><b>$titre</b></font>";
        if ($statut == 'redac') {
                echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size='2' color='red'><b>"._T('info_redaction_en_cours')."</b></font>";
        }
        else if ($rv == 'non') {
                echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size='2' color='#666666'><b>".nom_jour($date_heure).' '.affdate_heure($date_heure)."</b></font>";
        }
        echo "<p>";


        //////////////////////////////////////////////////////
        // Message avec participants
        //
        
        if ($type == 'normal') {
          echo debut_cadre_enfonce("redacteurs-24.gif", true);

          if ($cherche_auteur) {
                        echo "\n<p align='left'><div class='cadre-info'>" .
                          http_auteurs_ressemblants($cherche_auteur , $id_message) .
                          "\n</div></p>";
          }

          if ($nouv_auteur > 0) sql_nouveau_participant($nouv_auteur, $id_message);

                //
                // Liste des participants
                //

          $query_auteurs = "SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE lien.id_message=$id_message AND lien.id_auteur=auteurs.id_auteur";
          $result_auteurs = spip_query($query_auteurs);

          $total_dest = spip_num_rows($result_auteurs);

          if ($total_dest > 0) {
                        $couleurs = array("#FFFFFF",$couleur_claire);
                        $auteurs_tmp = array();
                        $ze_auteurs = array();
                        $ifond = 0;
                        $res = '';
                        while($row = spip_fetch_array($result_auteurs)) {
                                $id_auteur = $row["id_auteur"];
                                $nom_auteur = typo($row["nom"]);
                                $statut_auteur = $row["statut"];
                                $ze_auteurs[] = $id_auteur;

                                $couleur = $couleurs[$ifond];
                                $ifond = 1 - $ifond;

                                $auteurs_tmp[] = "<a href='auteurs_edit.php3?id_auteur=" . $id_auteur ."'>". $nom_auteur . "</a>";

                                $res .= "<tr><td background='' bgcolor='$couleur'><font face='Verdana,Arial,Sans,sans-serif' size=2>&nbsp;".
                                  bonhomme_statut($row)."&nbsp;" .
                                  (($id_auteur != $expediteur) ? '' :
                                   "<font class='arial0'>".
                                   _T('info_auteur_message')
                                   ."</font> ") .
                                  $nom_auteur .
                                  "</font></td>" .
                                  "<td background='' bgcolor='$couleur' align='right'><font face='Verdana,Arial,Sans,sans-serif' size='1'>" .
                                  (($id_auteur == $connect_id_auteur) ?
                                   "&nbsp;" :
                                   ("[<a href='message.php3?id_message=$id_message&supp_dest=$id_auteur'>"._T('lien_retrait_particpant')."</a>]")) .
                                  "</font></td></tr>\n";
                        }
                        echo
                          http_visualiser_participants($auteurs_tmp),
                          debut_block_invisible("auteurs"),
                          "\n<table border=0 cellspacing=0 cellpadding=3 width=100% background=''><tr><td bgcolor='#eeeecc' colspan=2>",
                          $res,
                          "</td></tr></table>",
                          fin_block();
          }

          if ($statut == 'redac' OR $forcer_dest)
                  http_ajouter_participants(join(',', $ze_auteurs),
                                            $id_message);
          else {
                  echo
                    debut_block_invisible("ajouter_auteur"),
                    "<br /><div align='right'><font face='Verdana,Arial,Sans,sans-serif' size='2'><a href='message.php3?id_message=$id_message&forcer_dest=oui'>"._T('lien_ajouter_participant')."</a></font></div>",
                    fin_block();
                }
          fin_cadre_enfonce();
        }

        if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin);


        //////////////////////////////////////////////////////
        // Le message lui-meme
        //

        echo "<div align='left'>",
          "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>",
          "<tr><td>",
          "<div class='serif'><p>$texte</p></div>";

        if ($expediteur == $connect_id_auteur AND $statut == 'redac') {
          if ($type == 'normal' AND $total_dest < 2){
            echo "<p align='right'><font face='Verdana,Arial,Sans,sans-serif' size='2' color='#666666'><b>"._T('avis_destinataire_obligatoire')."</b></font></p>";
          } else {
            echo "\n<p><center><table><tr><td>";
            icone (_T('icone_envoyer_message'), ("message.php3?id_message=$id_message&change_statut=publie"), "messagerie-24.gif", "creer.gif");
            echo "</td></tr></table></center></p>";
          }
        }
        echo "</td></tr></table></div>";        

        echo "</td></tr></table>"; //fin_cadre_relief();
        echo "</div>";                  // fin du cadre de couleur
        
        // Les boutons

        echo "\n<table width='100%'><tr><td>";

        // bouton de suppression

        if ($expediteur == $connect_id_auteur AND ($statut == 'redac' OR $type == 'pb') OR ($type == 'affich' AND $connect_statut == '0minirezo')) {
          echo "\n<table align='left'><tr><td>";
          icone (_T('icone_supprimer_message'), ("messagerie.php3?detruire_message=$id_message"), "messagerie-24.gif", "supprimer.gif");
          echo "</td></tr></table>";
        }

        // bouton retrait de la discussion

        if ($statut == 'publie' AND $type == 'normal') {
          echo "\n<table align='left'><tr><td>";
          icone (_T('icone_arret_discussion'), "messagerie.php3?id_message=$id_message&supp_dest=$connect_id_auteur", "messagerie-24.gif", "supprimer.gif");
          echo "</td></tr></table>";
        }

        // bouton modifier ce message

        if ($expediteur == $connect_id_auteur OR ($type == 'affich' AND $connect_statut == '0minirezo')) {
          echo "\n<table align='right'><tr><td>";
          icone (_T('icone_modifier_message'), ("message_edit.php3?id_message=$id_message"), "messagerie-24.gif", "edit.gif");
          echo "</td></tr></table>";
        }
        echo "</td></tr></table>";
                
        // reponses et bouton poster message

        http_afficher_forum_perso($id_message, $titre);
 }

 fin_page();

?>