[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/exec/ -> message.php (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2007                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  if (!defined("_ECRIRE_INC_VERSION")) return;
  14  
  15  include_spip('inc/presentation');
  16  include_spip('base/abstract_sql');
  17  include_spip('inc/mots');
  18  
  19  // http://doc.spip.org/@exec_message_dist
  20  function exec_message_dist()
  21  {
  22      global $cherche_auteur, $connect_id_auteur,$forcer_dest,$id_message;
  23  
  24      $id_message = intval($id_message);
  25      charger_generer_url();
  26  
  27      $row = spip_fetch_array(spip_query("SELECT type FROM spip_messages WHERE id_message=$id_message"));
  28  
  29      if ($row['type'] != "affich"){
  30          $res = spip_fetch_array(spip_query("SELECT vu FROM spip_auteurs_messages WHERE id_auteur=$connect_id_auteur AND id_message=$id_message"));
  31          if (!$res) {
  32              $commencer_page = charger_fonction('commencer_page', 'inc');
  33              echo $commencer_page(_T('info_acces_refuse'));
  34              debut_gauche();
  35              debut_droite();
  36              echo "<b>"._T('avis_non_acces_message')."</b><p>";
  37              echo fin_gauche(), fin_page();
  38              exit;
  39          }
  40      // Marquer le message vu pour le visiteur
  41          if ($res['vu'] != 'oui') {
  42              include_spip('inc/headers');
  43              redirige_par_entete(redirige_action_auteur("editer_message","$id_message/:$connect_id_auteur", 'message', "id_message=$id_message", true));
  44          }
  45      }
  46  
  47      exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest);
  48  }
  49  
  50  // http://doc.spip.org/@http_afficher_rendez_vous
  51  function http_afficher_rendez_vous($date_heure, $date_fin)
  52  {
  53    global $spip_lang_rtl;
  54  
  55      $dirpuce = _DIR_RACINE . 'dist';
  56      if (jour($date_heure) == jour($date_fin) AND mois($date_heure) == mois($date_fin) AND annee($date_heure) == annee($date_fin)) {        
  57        echo "<p class='verdana2' style='text-align: center'>"._T('titre_rendez_vous')." ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b><br />\n<b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
  58        echo " &nbsp; <img src='$dirpuce/puce$spip_lang_rtl.gif' alt=' ' style='border: 0px;' /> &nbsp;  ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</p>";
  59      } else {
  60        echo "<p class='verdana2' style='text-align: center'>"._T('titre_rendez_vous')."<br />\n".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b>, <b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
  61        echo "<br />\n<img src='$dirpuce/puce$spip_lang_rtl.gif' alt=' ' style='border: 0px;' /> ".majuscules(nom_jour($date_fin))." ".majuscules(affdate($date_fin)).", <b>".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</b></p>";
  62      }
  63  }
  64  
  65  // http://doc.spip.org/@http_auteurs_ressemblants
  66  function http_auteurs_ressemblants($cherche_auteur, $id_message)
  67  {
  68    global $connect_id_auteur;
  69    $query = spip_query("SELECT id_auteur, nom FROM spip_auteurs WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
  70    $table_auteurs = array();
  71    $table_ids = array();
  72    while ($row = spip_fetch_array($query)) {
  73      $table_auteurs[] = $row['nom'];
  74      $table_ids[] = $row['id_auteur'];
  75    }
  76    $resultat =  mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
  77    if (!$resultat) {
  78      return '<b>' . _T('info_recherche_auteur_zero', array('cherche_auteur' => $cherche_auteur))."</b><br />";
  79    }
  80    else if (count($resultat) == 1) {
  81      // action/editer_message a du prendre en compte ce cas
  82      list(, $nouv_auteur) = each($resultat);
  83      $row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$nouv_auteur"));
  84      $nom_auteur = $row['nom'];
  85      return "<b>"._T('info_ajout_participant')."</b><br />" .
  86        "<ul><li><span class='verdana1 spip_small'><b><span class='spip_medium'>$nom_auteur</span></b></span></li>\n</ul>";
  87    }
  88    else if (count($resultat) < 16) {
  89      $res = '';
  90      $query = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN (" . join(',', $resultat) . ") ORDER BY nom");
  91  
  92      while ($row = spip_fetch_array($query)) {
  93        $id_auteur = $row['id_auteur'];
  94        $nom_auteur = $row['nom'];
  95        $email_auteur = $row['email'];
  96        $bio_auteur = $row['bio'];
  97        $res .= "\n<li><span class='spip_medium verdana1'><b>$nom_auteur</b></span>" .
  98      ($email_auteur ? " ($email_auteur)" : '') .
  99      "\n <a href='" . redirige_action_auteur("editer_message","$id_message/@$id_auteur", 'message', "id_message=$id_message")
 100      . "'>" 
 101      . _T('lien_ajout_destinataire').
 102      "</a>" .
 103      (!trim($bio_auteur) ? '' :
 104       ("<br />\n<span class='spip_x-small'>".propre(couper($bio_auteur, 100))."</span>\n")) .
 105      "</li>\n";
 106      }
 107      return  "<b>"._T('info_recherche_auteur_ok', array('cherche_auteur' => $cherche_auteur))."</b><br /><ul>$res</ul>";
 108    }
 109    else {
 110      return "<b>"._T('info_recherche_auteur_a_affiner', array('cherche_auteur' => $cherche_auteur))."</b><br />";
 111    }
 112  }
 113  
 114  // http://doc.spip.org/@http_visualiser_participants
 115  function http_visualiser_participants($auteurs_tmp)
 116  {
 117    return "\n<table border='0' cellspacing='0' cellpadding='3' width='100%'><tr><td style='background-color: #EEEECC'>" .
 118      bouton_block_invisible("auteurs,ajouter_auteur") .
 119      "<span class='serif2'><b>" .
 120      _T('info_nombre_partcipants') .
 121      "</b></span>" .
 122      ((count($auteurs_tmp) == 0) ? '' :
 123       (" <span class='arial2'>".join($auteurs_tmp,", ")."</span>")) .
 124      "</td></tr></table>\n";
 125  }
 126  
 127  // http://doc.spip.org/@http_ajouter_participants
 128  function http_ajouter_participants($ze_auteurs, $id_message)
 129  {    
 130      $result_ajout_auteurs = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$ze_auteurs ? '' : "id_auteur NOT IN ($ze_auteurs) AND ") . " messagerie<>'non' AND statut IN ('0minirezo', '1comite') ORDER BY statut, nom");
 131  
 132      if (!spip_num_rows($result_ajout_auteurs) > 0) return '';
 133  
 134      $res = "<span class='verdana1 spip_small'><b>" .
 135        _T('bouton_ajouter_participant') ." &nbsp; </b></span>\n" .
 136        "<input type='hidden' name='id_message' value=\"$id_message\" />";
 137  
 138      if (spip_num_rows($result_ajout_auteurs) > 50) {
 139          $res .=  "\n<input type='text' name='cherche_auteur' class='fondl' value='' size='20' />";
 140          $res .=  "\n<input type='submit' value='"._T('bouton_chercher')."' class='fondo' />";
 141      } else {
 142          $res .=  "<select name='nouv_auteur' size='1' style='width: 150px' class='fondl'>";
 143          while($row=spip_fetch_array($result_ajout_auteurs)) {
 144              $id_auteur = $row['id_auteur'];
 145              $nom = $row['nom'];
 146              $email = $row['email'];
 147              $statut_auteur = $row['statut'];
 148              $premiere = strtoupper(substr(trim($nom), 0, 1));
 149  
 150              if ($GLOBALS['connect_statut'] != '0minirezo') {
 151                  if ($p = strpos($email, '@')) $email = substr($email, 0, $p).'@...';
 152              }
 153  
 154              if ($statut_auteur != $statut_old) {
 155                  $s =ereg_replace("0minirezo", _T('info_statut_administrateur'), $statut_auteur);
 156                  $s=ereg_replace("1comite", _T('info_statut_redacteur'), $s);
 157                  $s=ereg_replace("2redac", _T('info_statut_redacteur'), $s);
 158                  $s=ereg_replace("5poubelle", _T('info_statut_efface'), $s);
 159                  $res .=  "\n<option value=\"x\"></option>";
 160                  $res .=  "\n<option value=\"x\"> " . $s . 's</option>';
 161              }
 162                          
 163              if ($premiere != $premiere_old AND ($statut_auteur != '0minirezo' OR !$premiere_old))
 164                  $res .=  "\n<option value=\"x\"></option>";
 165        
 166              $res .=  "\n<option value=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;" .supprimer_tags(couper("$nom ($email) ", 40)) . "</option>";
 167              $statut_old = $statut_auteur;
 168              $premiere_old = $premiere;
 169          }
 170      
 171          $res .=  "</select>"
 172          .  "<input type='submit' value='"._T('bouton_ajouter')."' class='fondo' />";
 173      }
 174      return redirige_action_auteur('editer_message', "$id_message,", 'message', "id_message=$id_message", "<div align='left'>$res</div>", " method='post'");
 175  }
 176  
 177  // http://doc.spip.org/@http_afficher_forum_perso
 178  function http_afficher_forum_perso($id_message)
 179  {
 180  
 181      echo "<br /><br />\n<div align='center'>";
 182      icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=perso&id=$id_message&script=message"). '#formulaire', "forum-interne-24.gif", "creer.gif");
 183      echo  "</div>\n<p align='left'>";
 184  
 185      $query_forum = spip_query("SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' AND id_parent=0 ORDER BY date_heure DESC LIMIT 20");
 186      echo afficher_forum($query_forum, "message","id_message=$id_message");
 187      echo "\n</p>";
 188  }
 189  
 190  
 191  // http://doc.spip.org/@http_message_avec_participants
 192  function http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur='')
 193  {
 194      global $connect_id_auteur, $couleur_claire ;
 195  
 196      if ($cherche_auteur) {
 197          echo "\n<div align='left'><div class='cadre-info'>"
 198          . http_auteurs_ressemblants($cherche_auteur , $id_message)
 199          . "\n</div></div>";
 200        }
 201  
 202      //
 203      // Liste des participants
 204      //
 205  
 206      $result_auteurs = spip_query("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");
 207  
 208      $total_dest = spip_num_rows($result_auteurs);
 209  
 210      if ($total_dest > 0) {
 211              $couleurs = array("#FFFFFF",$couleur_claire);
 212              $auteurs_tmp = array();
 213              $ze_auteurs = array();
 214              $ifond = 0;
 215              $res = '';
 216              while($row = spip_fetch_array($result_auteurs)) {
 217                  $id_auteur = $row["id_auteur"];
 218                  $nom_auteur = typo($row["nom"]);
 219                  $statut_auteur = $row["statut"];
 220                  $ze_auteurs[] = $id_auteur;
 221  
 222                  $couleur = $couleurs[$ifond];
 223                  $ifond = 1 - $ifond;
 224  
 225                  $auteurs_tmp[] = "<a href='" .
 226                    generer_url_ecrire('auteur_infos',"id_auteur=" . $id_auteur) ."'>". $nom_auteur . "</a>";
 227  
 228                  $aut =  (($id_auteur != $expediteur) ? '' :
 229                       ("<span class='arial0'>".  _T('info_auteur_message') ."</span> "));
 230  
 231                  $res .= "<tr><td style='background-color: $couleur'><span class='verdana1 spip_small'>&nbsp;". bonhomme_statut($row)."&nbsp;" .  $aut .      $nom_auteur .  "</span></td>" .
 232                    "<td style='background-color: $couleur' align='right'><span class='verdana1 spip_x-small'>" . (($id_auteur == $connect_id_auteur) ?  "&nbsp;" : ("[<a href='" . redirige_action_auteur("editer_message","$id_message/-$id_auteur", 'message', "id_message=$id_message") . "'>"._T('lien_retrait_particpant')."</a>]")) .  "</span></td></tr>\n";
 233              }
 234              echo
 235                http_visualiser_participants($auteurs_tmp),
 236                debut_block_invisible("auteurs"),
 237                "\n<table border='0' cellspacing='0' cellpadding='3' width='100%'>",
 238                $res,
 239                  "</table>\n",
 240                fin_block();
 241        }
 242  
 243        if ($statut == 'redac' OR $forcer_dest)
 244            echo http_ajouter_participants(join(',', $ze_auteurs), $id_message);
 245        else {
 246            echo
 247              debut_block_invisible("ajouter_auteur"),
 248              "<br /><div align='right'><span class='verdana1 spip_small'><a href='" . generer_url_ecrire("message","id_message=$id_message&forcer_dest=oui") . "'>"._T('lien_ajouter_participant')."</a></span></div>",
 249              fin_block();
 250          }
 251        return $total_dest;
 252  }
 253  
 254  // http://doc.spip.org/@http_affiche_message
 255  function http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest)
 256  {
 257    global $connect_id_auteur,$connect_statut, $les_notes;
 258  
 259      if ($type == 'normal') {
 260          $le_type = _T('info_message_2').aide ("messut");
 261          $la_couleur = "#02531b";
 262          $couleur_fond = "#cffede";
 263      }
 264      else if ($type == 'pb') {
 265          $le_type = _T('info_pense_bete').aide ("messpense");
 266          $la_couleur = "#3874b0";
 267          $couleur_fond = "#edf3fe";
 268      }
 269      else if ($type == 'affich') {
 270          $le_type = _T('info_annonce');
 271          $la_couleur = "#ccaa00";
 272          $couleur_fond = "#ffffee";
 273      }
 274      
 275      // affichage des caracteristiques du message
 276  
 277      echo "<div style='border: 1px solid $la_couleur; background-color: $couleur_fond; padding: 5px;'>"; // debut cadre de couleur
 278      //debut_cadre_relief("messagerie-24.gif");
 279      echo "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>";
 280      echo "<tr><td>"; # uniques
 281  
 282      echo "<span style='color: $la_couleur' class='verdana1 spip_small'><b>$le_type</b></span><br />";
 283      echo "<span class='verdana1 spip_large'><b>$titre</b></span>";
 284      if ($statut == 'redac') {
 285          echo "<br /><span style='color: red;' class='verdana1 spip_small'><b>"._T('info_redaction_en_cours')."</b></span>";
 286      }
 287      else if ($rv == 'non') {
 288          echo "<br /><span style='color: #666666;' class='verdana1 spip_small'><b>".nom_jour($date_heure).' '.affdate_heure($date_heure)."</b></span>";
 289      }
 290  
 291  
 292      //////////////////////////////////////////////////////
 293      // Message avec participants
 294      //
 295      
 296      if ($type == 'normal') {
 297        echo debut_cadre_enfonce("redacteurs-24.gif", true);
 298        $total_dest = http_message_avec_participants($id_message, $statut, $forcer_dest, $cherche_auteur, $expediteur);
 299        fin_cadre_enfonce();
 300      }
 301  
 302      if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin);
 303  
 304  
 305      //////////////////////////////////////////////////////
 306      // Le message lui-meme
 307      //
 308  
 309      echo "<div align='left'>",
 310        "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>",
 311        "<tr><td>",
 312        "<div class='serif'><p>$texte</p></div>";
 313  
 314      if ($les_notes) {
 315          echo debut_cadre_relief();
 316          echo "<div $dir_lang class='arial11'>";
 317          echo justifier("<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes);
 318          echo "</div>";
 319          echo fin_cadre_relief();
 320      }
 321  
 322      if ($expediteur == $connect_id_auteur AND $statut == 'redac') {
 323        if ($type == 'normal' AND $total_dest < 2) {
 324          echo "<p style='color: #666666; text-align: right;' class='verdana1 spip_small'><b>"._T('avis_destinataire_obligatoire')."</b></p>";
 325        } else {
 326          echo "\n<div align='center'><table><tr><td>";
 327          icone (_T('icone_envoyer_message'), redirige_action_auteur('editer_message', "$id_message/publie", "message","id_message=$id_message"), "messagerie-24.gif", "creer.gif");
 328          echo "</td></tr></table></div>";
 329        }
 330      }
 331      echo "</td></tr></table>\n</div>";    
 332  
 333      echo "</td></tr></table>\n"; //fin_cadre_relief();
 334      echo "</div>";            // fin du cadre de couleur
 335      
 336      // Les boutons
 337  
 338      $aut = ($expediteur == $connect_id_auteur);
 339      $aff = ($type == 'affich' AND $connect_statut == '0minirezo');
 340  
 341      echo "\n<table width='100%'><tr><td>";
 342  
 343      // bouton de suppression
 344  
 345      if ($aut AND ($statut == 'redac' OR $type == 'pb') OR $aff) {
 346        echo "\n<table align='left'><tr><td>";
 347        icone (_T('icone_supprimer_message'), redirige_action_auteur("editer_message","-$id_message", 'messagerie'), "messagerie-24.gif", "supprimer.gif");
 348        echo "</td></tr></table>";
 349      }
 350  
 351      // bouton retrait de la discussion
 352  
 353      if ($statut == 'publie' AND $type == 'normal') {
 354        echo "\n<table align='left'><tr><td>";
 355        icone (_T('icone_arret_discussion'), redirige_action_auteur("editer_message","$id_message/-$connect_id_auteur", 'messagerie', "id_message=$id_message"), "messagerie-24.gif", "supprimer.gif");
 356        echo "</td></tr></table>";
 357      }
 358  
 359      // bouton modifier ce message
 360  
 361      if ($aut OR $aff) {
 362        echo "\n<table align='right'><tr><td>";
 363        icone (_T('icone_modifier_message'), (generer_url_ecrire("message_edit","id_message=$id_message")), "messagerie-24.gif", "edit.gif");
 364        echo "</td></tr></table>";
 365      }
 366      echo "</td></tr></table>";
 367  }
 368  
 369  // http://doc.spip.org/@exec_affiche_message_dist
 370  function exec_affiche_message_dist($id_message, $cherche_auteur, $forcer_dest)
 371  {
 372    global $connect_id_auteur, $echelle, $partie_cal;
 373    $row = spip_fetch_array(spip_query("SELECT * FROM spip_messages WHERE id_message=$id_message"));
 374    if ($row) {
 375      $id_message = $row['id_message'];
 376      $date_heure = $row["date_heure"];
 377      $date_fin = $row["date_fin"];
 378      $titre = typo($row["titre"]);
 379      $texte = propre($row["texte"]);
 380      $type = $row["type"];
 381      $statut = $row["statut"];
 382      $rv = $row["rv"];
 383      $expediteur = $row['id_auteur'];
 384  
 385      $lejour=journum($row['date_heure']);
 386      $lemois = mois($row['date_heure']);        
 387      $lannee = annee($row['date_heure']);        
 388  
 389      
 390  
 391      $commencer_page = charger_fonction('commencer_page', 'inc');
 392      echo $commencer_page($titre, "accueil", "messagerie");
 393  
 394      debut_gauche();
 395      
 396      if ($rv != 'non')
 397        echo http_calendrier_agenda ($lannee, $lemois, $lejour, $lemois, $lannee,false, generer_url_ecrire('calendrier'));
 398      
 399      echo "<br />";
 400      echo  http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces");
 401      echo  http_calendrier_rv(sql_calendrier_taches_pb(),"pb");
 402      echo  http_calendrier_rv(sql_calendrier_taches_rv(), "rv");
 403  
 404      if ($rv != "non") {
 405          list ($sh, $ah) = sql_calendrier_interval(sql_calendrier_jour($lannee,$lemois, $lejour));
 406          foreach ($ah as $k => $v)
 407            {
 408              foreach ($v as $l => $e)
 409                {
 410              if (ereg("=$id_message$", $e['URL']))
 411                {
 412                  $ah[$k][$l]['CATEGORIES'] = "calendrier-nb";
 413                  break;
 414                }
 415                }
 416            }
 417          creer_colonne_droite();    
 418  
 419          echo http_calendrier_ics_titre($lannee,$lemois,$lejour,generer_url_ecrire('calendrier'));
 420          echo http_calendrier_ics($lannee,$lemois, $lejour, $echelle, $partie_cal, 90, array($sh, $ah));
 421      }
 422  
 423      debut_droite();
 424  
 425      http_affiche_message($id_message, $expediteur, $statut, $type, $texte, $titre, $rv, $date_heure, $date_fin, $cherche_auteur, $forcer_dest);
 426  
 427      // reponses et bouton poster message
 428  
 429      http_afficher_forum_perso($id_message);
 430   }
 431  
 432   echo fin_gauche(), fin_page();
 433  }
 434  
 435  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics